Skip to content

Commit 0d5581e

Browse files
CaseyCarterzygoloid
authored andcommitted
P0898R3 Standard Library Concepts: rename "old" concepts
Prefix the names of all named library requirement sets with "Cpp17" by annotating with new "\oldconcept" macro. Note that not all of these are called out by name in the proposal. The intent is to prefix *all* named library requirements, as discussed in LEWG/LWG. Includes: * Allocator * BasicLockable * BidirectionalIterator * BinaryTypeTrait * Clock * CopyAssignable * CopyConstructible * CopyInsertable * DefaultConstructible * DefaultInsertable * Destructible * EmplaceConstructible * EqualityComparable * Erasable * ForwardIterator * Hash * InputIterator * Iterator * LessThanComparable * Lockable * MoveAssignable * MoveConstructible * MoveInsertable * NullablePointer * OutputIterator * RandomAccessIterator * TimedLockable * TransformationTrait * TrivialClock * UnaryTypeTrait * ValueSwappable
1 parent 04eb7aa commit 0d5581e

14 files changed

+550
-538
lines changed

source/algorithms.tex

Lines changed: 91 additions & 91 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)