Skip to content

Commit 8555eb0

Browse files
committed
Merge 2018-03 LWG Motion 7
2 parents 75b3ba4 + ede59a5 commit 8555eb0

File tree

10 files changed

+232
-217
lines changed

10 files changed

+232
-217
lines changed

source/atomics.tex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1146,6 +1146,8 @@
11461146
\begin{codeblock}
11471147
namespace std {
11481148
template<> struct atomic<@\placeholder{floating-point}@> {
1149+
using value_type = @\placeholdernc{floating-point}@;
1150+
using difference_type = value_type;
11491151
static constexpr bool is_always_lock_free = @\impdefx{whether a given \tcode{atomic} type's operations are always lock free}@;
11501152
bool is_lock_free() const volatile noexcept;
11511153
bool is_lock_free() const noexcept;

source/containers.tex

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -853,7 +853,10 @@
853853
\tcode{T} is also
854854
\tcode{MoveInsertable} into \tcode{X} and \tcode{MoveAssignable}.
855855
\effects\ Inserts an object of type \tcode{T} constructed with
856-
\tcode{std::forward<\brk{}Args\brk{}>(\brk{}args)...} before \tcode{p}. \\ \rowsep
856+
\tcode{std::forward<\brk{}Args\brk{}>(\brk{}args)...} before \tcode{p}.
857+
\begin{note} \tcode{args} may directly or indirectly refer to
858+
a value in \tcode{a}. \end{note}
859+
\\ \rowsep
857860

858861
\tcode{a.insert(p,t)} &
859862
\tcode{iterator} &
@@ -4237,7 +4240,7 @@
42374240
\requires \tcode{position} is \tcode{before_begin()} or is a dereferenceable
42384241
iterator in the range \range{begin()}{end()}.
42394242
\tcode{get_allocator() == x.get_allocator()}.
4240-
\tcode{\&x != this}.
4243+
\tcode{addressof(x) != this}.
42414244

42424245
\pnum
42434246
\effects Inserts the contents of \tcode{x} after
@@ -4834,7 +4837,7 @@
48344837
\begin{itemdescr}
48354838
\pnum
48364839
\requires
4837-
\tcode{\&x != this}.
4840+
\tcode{addressof(x) != this}.
48384841

48394842
\pnum
48404843
\effects
@@ -5038,7 +5041,7 @@
50385041

50395042
\pnum
50405043
\effects
5041-
If \tcode{(\&x == this)} does nothing; otherwise, merges the two sorted ranges \tcode{[begin(),
5044+
If \tcode{addressof(x) == this}, does nothing; otherwise, merges the two sorted ranges \tcode{[begin(),
50425045
end())} and \tcode{[x.\brk{}begin(), x.end())}. The result is a range in which the elements
50435046
will be sorted in non-decreasing order according to the ordering defined by \tcode{comp}; that
50445047
is, for every iterator \tcode{i}, in the range other than the first, the condition
@@ -5049,7 +5052,7 @@
50495052
\tcode{x}.
50505053

50515054
\pnum
5052-
\remarks Stable\iref{algorithm.stable}. If \tcode{(\&x != this)} the range \tcode{[x.begin(), x.end())}
5055+
\remarks Stable\iref{algorithm.stable}. If \tcode{addressof(x) != this}, the range \tcode{[x.begin(), x.end())}
50535056
is empty after the merge.
50545057
No elements are copied by this operation. The behavior is undefined if
50555058
\tcode{get_allocator() != x.get_allocator()}.
@@ -5059,7 +5062,7 @@
50595062
At most
50605063
\tcode{size() + x.size() - 1}
50615064
applications of \tcode{comp} if
5062-
\tcode{(\&x != this)};
5065+
\tcode{addressof(x) != this};
50635066
otherwise, no applications of \tcode{comp} are performed.
50645067
If an exception is thrown other than by a comparison there are no effects.
50655068
\end{itemdescr}
@@ -5369,6 +5372,9 @@
53695372
\returns
53705373
The total number of elements that the vector can hold
53715374
without requiring reallocation.
5375+
5376+
\pnum
5377+
\complexity Constant time.
53725378
\end{itemdescr}
53735379

53745380
\indexlibrary{\idxcode{reserve}!\idxcode{vector}}%

source/future.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2159,7 +2159,7 @@
21592159
\begin{codeblock}
21602160
namespace std {
21612161
template<class T> struct is_literal_type;
2162-
template<class T> constexpr bool is_literal_type_v = is_literal_type<T>::value;
2162+
template<class T> inline constexpr bool is_literal_type_v = is_literal_type<T>::value;
21632163

21642164
template<class> struct result_of; // not defined
21652165
template<class Fn, class... ArgTypes> struct result_of<Fn(ArgTypes...)>;

0 commit comments

Comments
 (0)