Skip to content

Commit 0cb09df

Browse files
committed
Merge 2018-06 LWG Motion 28
Fixes #2145
2 parents 04eb7aa + 1984951 commit 0cb09df

16 files changed

+2249
-776
lines changed

source/algorithms.tex

Lines changed: 91 additions & 91 deletions
Large diffs are not rendered by default.

source/concepts.tex

Lines changed: 1212 additions & 0 deletions
Large diffs are not rendered by default.

source/containers.tex

Lines changed: 135 additions & 135 deletions
Large diffs are not rendered by default.

source/future.tex

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@
315315
\begin{itemdescr}
316316
\pnum
317317
\requires
318-
Type \tcode{T} is \tcode{EqualityComparable} (\tref{equalitycomparable}).
318+
Type \tcode{T} is \oldconcept{EqualityComparable} (\tref{equalitycomparable}).
319319

320320
\pnum
321321
\returns
@@ -330,7 +330,7 @@
330330
\begin{itemdescr}
331331
\pnum
332332
\requires
333-
Type \tcode{T} is \tcode{LessThanComparable} (\tref{lessthancomparable}).
333+
Type \tcode{T} is \oldconcept{LessThanComparable} (\tref{lessthancomparable}).
334334

335335
\pnum
336336
\returns
@@ -345,7 +345,7 @@
345345
\begin{itemdescr}
346346
\pnum
347347
\requires
348-
Type \tcode{T} is \tcode{LessThanComparable} (\tref{lessthancomparable}).
348+
Type \tcode{T} is \oldconcept{LessThanComparable} (\tref{lessthancomparable}).
349349

350350
\pnum
351351
\returns
@@ -360,7 +360,7 @@
360360
\begin{itemdescr}
361361
\pnum
362362
\requires
363-
Type \tcode{T} is \tcode{LessThanComparable} (\tref{lessthancomparable}).
363+
Type \tcode{T} is \oldconcept{LessThanComparable} (\tref{lessthancomparable}).
364364

365365
\pnum
366366
\returns
@@ -1448,7 +1448,7 @@
14481448
\tcode{remove_all_extents_t<T>} shall be a complete type or \cv{} \tcode{void}.
14491449

14501450
\pnum
1451-
\tcode{is_pod<T>} is a \tcode{UnaryTypeTrait}\iref{meta.rqmts}
1451+
\tcode{is_pod<T>} is a \oldconcept{UnaryTypeTrait}\iref{meta.rqmts}
14521452
with a base characteristic of \tcode{true_type}
14531453
if \tcode{T} is a POD type,
14541454
and \tcode{false_type} otherwise.

source/iostreams.tex

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1661,22 +1661,22 @@
16611661
It holds a state object
16621662
whose type is equal to the template parameter \tcode{stateT}.
16631663
Type \tcode{stateT} shall meet
1664-
the \tcode{DefaultConstructible} (\tref{defaultconstructible}),
1665-
\tcode{CopyConstructible} (\tref{copyconstructible}),
1666-
\tcode{CopyAssignable} (\tref{copyassignable}), and
1667-
\tcode{Destructible} (\tref{destructible}) requirements.
1664+
the \oldconcept{DefaultConstructible} (\tref{defaultconstructible}),
1665+
\oldconcept{CopyConstructible} (\tref{copyconstructible}),
1666+
\oldconcept{CopyAssignable} (\tref{copyassignable}), and
1667+
\oldconcept{Destructible} (\tref{destructible}) requirements.
16681668
If \tcode{is_trivially_copy_constructible_v<stateT>} is \tcode{true},
16691669
then \tcode{fpos<stateT>} has a trivial copy constructor.
16701670
If \tcode{is_trivially_copy_assignable<stateT>} is \tcode{true},
16711671
then \tcode{fpos<stateT>} has a trivial copy assignment operator.
16721672
If \tcode{is_trivially_destructible_v<stateT>} is \tcode{true},
16731673
then \tcode{fpos<stateT>} has a trivial destructor.
16741674
All specializations of \tcode{fpos} satisfy
1675-
the \tcode{DefaultConstructible},
1676-
\tcode{CopyConstructible},
1677-
\tcode{CopyAssignable},
1678-
\tcode{Destructible},
1679-
and \tcode{EqualityComparable} (\tref{equalitycomparable}) requirements.
1675+
the \oldconcept{DefaultConstructible},
1676+
\oldconcept{CopyConstructible},
1677+
\oldconcept{CopyAssignable},
1678+
\oldconcept{Destructible},
1679+
and \oldconcept{EqualityComparable} (\tref{equalitycomparable}) requirements.
16801680
In addition, the expressions shown in \tref{iostreams.position.requirements}
16811681
are valid and have the indicated semantics.
16821682
In that table,
@@ -10441,7 +10441,7 @@
1044110441
\end{codeblock}
1044210442

1044310443
\pnum
10444-
\tcode{Allocator} shall satisfy the \tcode{Allocator} requirements
10444+
\tcode{Allocator} shall satisfy the \oldconcept{Allocator} requirements
1044510445
(\tref{utilities.allocator.requirements}).
1044610446

1044710447
\pnum
@@ -10773,7 +10773,7 @@
1077310773

1077410774
\pnum
1077510775
Template parameters named \tcode{InputIterator} shall satisfy the
10776-
input iterator requirements\iref{input.iterators} and shall
10776+
\oldconcept{InputIterator} requirements\iref{input.iterators} and shall
1077710777
have a value type that is one of the encoded character types.
1077810778

1077910779
\pnum
@@ -10785,7 +10785,7 @@
1078510785

1078610786
\pnum
1078710787
Template parameters named \tcode{Allocator} shall satisfy the
10788-
\tcode{Allocator} requirements (\tref{utilities.allocator.requirements}).
10788+
\oldconcept{Allocator} requirements (\tref{utilities.allocator.requirements}).
1078910789

1079010790
\rSec3[fs.req.namespace]{Namespaces and headers}
1079110791

@@ -11010,7 +11010,7 @@
1101011010

1101111011
\pnum
1101211012
\tcode{\textit{trivial-clock}} is an \impldef{type of filesystem trivial clock} type
11013-
that satisfies the \tcode{TrivialClock} requirements\iref{time.clock.req}
11013+
that satisfies the \oldconcept{TrivialClock} requirements\iref{time.clock.req}
1101411014
and that is capable of representing and measuring file time values.
1101511015
Implementations should ensure that the resolution and range of
1101611016
\tcode{file_time_type} reflect the operating system dependent resolution and range
@@ -11573,7 +11573,7 @@
1157311573
\item \tcode{basic_string_view<EcharT, traits>}. A function
1157411574
argument \tcode{const Source\&} \tcode{source} shall have an
1157511575
effective range \range{source.begin()}{source.end()}.
11576-
\item A type meeting the input iterator requirements that iterates over a NTCTS.
11576+
\item A type meeting the \oldconcept{InputIterator} requirements that iterates over a NTCTS.
1157711577
The value type shall be an encoded character type. A function argument
1157811578
\tcode{const Source\&} \tcode{source} shall have an effective range
1157911579
\range{source}{end} where \tcode{end} is the first
@@ -13888,8 +13888,8 @@
1388813888
\end{codeblock}
1388913889

1389013890
\pnum
13891-
\tcode{directory_iterator} satisfies the requirements of an input
13892-
iterator\iref{input.iterators}.
13891+
\tcode{directory_iterator} satisfies the
13892+
\oldconcept{InputIterator} requirements\iref{input.iterators}.
1389313893

1389413894
\pnum
1389513895
If an iterator of type \tcode{directory_iterator} reports an error or

source/iterators.tex

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@
156156
the only exceptions are destroying an iterator that holds a singular value,
157157
the assignment of a non-singular value to
158158
an iterator that holds a singular value, and, for iterators that satisfy the
159-
\tcode{DefaultConstructible} requirements, using a value-initialized iterator
159+
\oldconcept{DefaultConstructible} requirements, using a value-initialized iterator
160160
as the source of a copy or move operation. \begin{note} This guarantee is not
161161
offered for default-initialization, although the distinction only matters for types
162162
with trivial default constructors such as pointers or aggregates holding pointers.
@@ -265,31 +265,31 @@
265265
\begin{note} For an iterator type \tcode{X} there must be an instantiation
266266
of \tcode{iterator_traits<X>}\iref{iterator.traits}. \end{note}
267267

268-
\rSec2[iterator.iterators]{Iterator}
268+
\rSec2[iterator.iterators]{\oldconcept{Iterator}}
269269

270270
\pnum
271-
The \tcode{Iterator} requirements form the basis of the iterator
272-
taxonomy; every iterator satisfies the \tcode{Iterator} requirements. This
271+
The \oldconcept{Iterator} requirements form the basis of the iterator
272+
taxonomy; every iterator satisfies the \oldconcept{Iterator} requirements. This
273273
set of requirements specifies operations for dereferencing and incrementing
274274
an iterator. Most algorithms will require additional operations to
275275
read\iref{input.iterators} or write\iref{output.iterators} values, or
276276
to provide a richer set of iterator movements~(\ref{forward.iterators},
277277
\ref{bidirectional.iterators}, \ref{random.access.iterators}).
278278

279279
\pnum
280-
A type \tcode{X} satisfies the \tcode{Iterator} requirements if:
280+
A type \tcode{X} satisfies the \oldconcept{Iterator} requirements if:
281281

282282
\begin{itemize}
283-
\item \tcode{X} satisfies the \tcode{CopyConstructible}, \tcode{CopyAssignable}, and
284-
\tcode{Destructible} requirements\iref{utility.arg.requirements} and lvalues
283+
\item \tcode{X} satisfies the \oldconcept{CopyConstructible}, \oldconcept{CopyAssignable}, and
284+
\oldconcept{Destructible} requirements\iref{utility.arg.requirements} and lvalues
285285
of type \tcode{X} are swappable\iref{swappable.requirements}, and
286286

287287
\item the expressions in \tref{iterator.requirements} are valid and have
288288
the indicated semantics.
289289
\end{itemize}
290290

291291
\begin{libreqtab4b}
292-
{Iterator requirements}
292+
{\oldconcept{Iterator} requirements}
293293
{tab:iterator.requirements}
294294
\\ \topline
295295
\lhdr{Expression} & \chdr{Return type} & \chdr{Operational} & \rhdr{Assertion/note} \\
@@ -321,8 +321,8 @@
321321
satisfies the requirements of an input iterator for the value type
322322
\tcode{T}
323323
if
324-
\tcode{X} satisfies the \tcode{Iterator}\iref{iterator.iterators} and
325-
\tcode{EqualityComparable} (\tref{equalitycomparable}) requirements and
324+
\tcode{X} satisfies the \oldconcept{Iterator}\iref{iterator.iterators} and
325+
\oldconcept{EqualityComparable} (\tref{equalitycomparable}) requirements and
326326
the expressions in \tref{iterator.input.requirements} are valid and have
327327
the indicated semantics.
328328

@@ -356,7 +356,7 @@
356356
\end{example}
357357

358358
\begin{libreqtab4b}
359-
{Input iterator requirements (in addition to Iterator)}
359+
{\oldconcept{InputIterator} requirements (in addition to \oldconcept{Iterator})}
360360
{tab:iterator.input.requirements}
361361
\\ \topline
362362
\lhdr{Expression} & \chdr{Return type} & \chdr{Operational} & \rhdr{Assertion/note} \\
@@ -414,7 +414,7 @@
414414
They should be
415415
\term{single pass}
416416
algorithms.
417-
Value type \tcode{T} is not required to be a \tcode{CopyAssignable} type (\tref{copyassignable}).
417+
Value type \tcode{T} is not required to be a \oldconcept{CopyAssignable} type (\tref{copyassignable}).
418418
These algorithms can be used with istreams as the source of the input data through the
419419
\tcode{istream_iterator}
420420
class template.
@@ -426,12 +426,12 @@
426426
A class or pointer type
427427
\tcode{X}
428428
satisfies the requirements of an output iterator
429-
if \tcode{X} satisfies the \tcode{Iterator} requirements\iref{iterator.iterators}
429+
if \tcode{X} satisfies the \oldconcept{Iterator} requirements\iref{iterator.iterators}
430430
and the expressions in \tref{iterator.output.requirements}
431431
are valid and have the indicated semantics.
432432

433433
\begin{libreqtab4b}
434-
{Output iterator requirements (in addition to Iterator)}
434+
{\oldconcept{OutputIterator} requirements (in addition to \oldconcept{Iterator})}
435435
{tab:iterator.output.requirements}
436436
\\ \topline
437437
\lhdr{Expression} & \chdr{Return type} & \chdr{Operational} & \rhdr{Assertion/note} \\
@@ -494,9 +494,9 @@
494494
satisfies the requirements of a forward iterator if
495495

496496
\begin{itemize}
497-
\item \tcode{X} satisfies the requirements of an input iterator\iref{input.iterators},
497+
\item \tcode{X} satisfies the \oldconcept{InputIterator} requirements\iref{input.iterators},
498498

499-
\item \tcode{X} satisfies the \tcode{DefaultConstructible}
499+
\item \tcode{X} satisfies the \oldconcept{DefaultConstructible}
500500
requirements\iref{utility.arg.requirements},
501501

502502
\item if \tcode{X} is a mutable iterator, \tcode{reference} is a reference to \tcode{T};
@@ -539,7 +539,7 @@
539539
\end{note}
540540

541541
\begin{libreqtab4b}
542-
{Forward iterator requirements (in addition to input iterator)}
542+
{\oldconcept{ForwardIterator} requirements (in addition to \oldconcept{InputIterator})}
543543
{tab:iterator.forward.requirements}
544544
\\ \topline
545545
\lhdr{Expression} & \chdr{Return type} & \chdr{Operational} & \rhdr{Assertion/note} \\
@@ -576,11 +576,11 @@
576576
A class or pointer type
577577
\tcode{X}
578578
satisfies the requirements of a bidirectional iterator if,
579-
in addition to satisfying the requirements for forward iterators,
579+
in addition to satisfying the \oldconcept{ForwardIterator} requirements,
580580
the following expressions are valid as shown in \tref{iterator.bidirectional.requirements}.
581581

582582
\begin{libreqtab4b}
583-
{Bidirectional iterator requirements (in addition to forward iterator)}
583+
{\oldconcept{BidirectionalIterator} requirements (in addition to \oldconcept{ForwardIterator})}
584584
{tab:iterator.bidirectional.requirements}
585585
\\ \topline
586586
\lhdr{Expression} & \chdr{Return type} & \chdr{Operational} & \rhdr{Assertion/note} \\
@@ -621,11 +621,11 @@
621621
A class or pointer type
622622
\tcode{X}
623623
satisfies the requirements of a random access iterator if,
624-
in addition to satisfying the requirements for bidirectional iterators,
624+
in addition to satisfying the \oldconcept{BidirectionalIterator} requirements,
625625
the following expressions are valid as shown in \tref{iterator.random.access.requirements}.
626626

627627
\begin{libreqtab4b}
628-
{Random access iterator requirements (in addition to bidirectional iterator)}
628+
{\oldconcept{RandomAccessIterator} requirements (in addition to \oldconcept{BidirectionalIterator})}
629629
{tab:iterator.random.access.requirements}
630630
\\ \topline
631631
\lhdr{Expression} & \chdr{Return type} & \chdr{Operational} & \rhdr{Assertion/note} \\
@@ -1127,7 +1127,7 @@
11271127
\begin{itemdescr}
11281128
\pnum
11291129
\effects
1130-
If \tcode{InputIterator} meets the requirements of random access iterator,
1130+
If \tcode{InputIterator} meets the \oldconcept{RandomAccessIterator} requirements,
11311131
returns \tcode{(last - first)}; otherwise, returns
11321132
the number of increments needed to get from
11331133
\tcode{first}
@@ -1136,7 +1136,7 @@
11361136

11371137
\pnum
11381138
\requires
1139-
If \tcode{InputIterator} meets the requirements of random access iterator,
1139+
If \tcode{InputIterator} meets the \oldconcept{RandomAccessIterator} requirements,
11401140
\tcode{last} shall be reachable from \tcode{first} or \tcode{first} shall be
11411141
reachable from \tcode{last}; otherwise,
11421142
\tcode{last}
@@ -1261,12 +1261,12 @@
12611261
\pnum
12621262
The template parameter
12631263
\tcode{Iterator}
1264-
shall satisfy all the requirements of a Bidirectional Iterator\iref{bidirectional.iterators}.
1264+
shall satisfy all the requirements of a \oldconcept{BidirectionalIterator}\iref{bidirectional.iterators}.
12651265

12661266
\pnum
12671267
Additionally,
12681268
\tcode{Iterator}
1269-
shall satisfy the requirements of a random access iterator\iref{random.access.iterators}
1269+
shall satisfy the requirements of a \oldconcept{RandomAccessIterator}\iref{random.access.iterators}
12701270
if any of the members
12711271
\tcode{operator+},
12721272
\tcode{operator-},
@@ -2148,11 +2148,11 @@
21482148

21492149
\pnum
21502150
The template parameter \tcode{Iterator} shall satisfy
2151-
the requirements of an input iterator\iref{input.iterators}.
2151+
the \oldconcept{InputIterator} requirements\iref{input.iterators}.
21522152
Additionally, if any of the bidirectional or random access traversal
21532153
functions are instantiated, the template parameter shall satisfy the
2154-
requirements for a Bidirectional Iterator\iref{bidirectional.iterators}
2155-
or a Random Access Iterator\iref{random.access.iterators}, respectively.
2154+
\oldconcept{BidirectionalIterator} requirements\iref{bidirectional.iterators}
2155+
or \oldconcept{RandomAccessIterator} requirements\iref{random.access.iterators}, respectively.
21562156

21572157
\rSec3[move.iter.ops]{\tcode{move_iterator} operations}
21582158

@@ -2548,8 +2548,8 @@
25482548
The behavior of a program that applies \tcode{operator++()} to an end-of-stream
25492549
iterator is undefined.
25502550
It is impossible to store things into istream iterators.
2551-
The type \tcode{T} shall satisfy the \tcode{DefaultConstructible},
2552-
\tcode{CopyConstructible}, and \tcode{CopyAssignable} requirements.
2551+
The type \tcode{T} shall satisfy the \oldconcept{DefaultConstructible},
2552+
\oldconcept{CopyConstructible}, and \oldconcept{CopyAssignable} requirements.
25532553

25542554
\pnum
25552555
Two end-of-stream iterators are always equal.

0 commit comments

Comments
 (0)