Skip to content

Commit 2e6f0fe

Browse files
committed
[utility.arg.requirements] Break down requirement tables
Break down the requirements tables into regular specification text, following the lead of breaking down the container requirements. This also solves the problem of floating tables floating into unrelated clauses, as there will be no more floating tables.
1 parent 70954ed commit 2e6f0fe

File tree

12 files changed

+342
-218
lines changed

12 files changed

+342
-218
lines changed

source/algorithms.tex

Lines changed: 52 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -3458,10 +3458,10 @@
34583458
\pnum
34593459
\expects
34603460
\tcode{Function} meets
3461-
the \oldconcept{MoveConstructible} requirements (\tref{cpp17.moveconstructible}).
3461+
the \oldconcept{MoveConstructible} requirements\iref{cpp17.moveconstructible}.
34623462
\begin{note}
34633463
\tcode{Function} need not meet the requirements of
3464-
\oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}).
3464+
\oldconcept{CopyConstructible}\iref{cpp17.copyconstructible}.
34653465
\end{note}
34663466

34673467
\pnum
@@ -5029,7 +5029,7 @@
50295029
For the overload with an \tcode{ExecutionPolicy},
50305030
there might be a performance cost
50315031
if \tcode{iterator_traits<For\-ward\-It\-er\-ator1>::value_type}
5032-
is not \oldconcept{\-Move\-Constructible} (\tref{cpp17.moveconstructible}).
5032+
is not \oldconcept{\-Move\-Constructible}\iref{cpp17.moveconstructible}.
50335033
\end{note}
50345034

50355035
\pnum
@@ -5840,7 +5840,7 @@
58405840
\expects
58415841
For the algorithms in namespace \tcode{std},
58425842
the type of \tcode{*first}
5843-
meets the \oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}).
5843+
meets the \oldconcept{MoveAssignable} requirements\iref{cpp17.moveassignable}.
58445844

58455845
\pnum
58465846
\effects
@@ -5950,7 +5950,7 @@
59505950
For the overloads with an \tcode{ExecutionPolicy},
59515951
there might be a performance cost
59525952
if \tcode{iterator_traits<ForwardIterator1>::value_type} does not meet
5953-
the \oldconcept{\-Move\-Constructible} (\tref{cpp17.moveconstructible}) requirements.
5953+
the \oldconcept{\-Move\-Constructible}\iref{cpp17.moveconstructible} requirements.
59545954
\end{note}
59555955

59565956
\pnum
@@ -6023,7 +6023,7 @@
60236023
For the overloads in namespace \tcode{std},
60246024
\tcode{pred} is an equivalence relation and
60256025
the type of \tcode{*first} meets
6026-
the \oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}).
6026+
the \oldconcept{MoveAssignable} requirements\iref{cpp17.moveassignable}.
60276027

60286028
\pnum
60296029
\effects
@@ -6129,9 +6129,9 @@
61296129
the \oldconcept{ForwardIterator} requirements and
61306130
its value type is the same as \tcode{T},
61316131
then \tcode{T} meets
6132-
the \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements.
6132+
the \oldconcept{CopyAssignable}\iref{cpp17.copyassignable} requirements.
61336133
Otherwise, \tcode{T} meets both
6134-
the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and
6134+
the \oldconcept{CopyConstructible}\iref{cpp17.copyconstructible} and
61356135
\oldconcept{CopyAssignable} requirements.
61366136
\begin{note}
61376137
For the overloads with an \tcode{ExecutionPolicy},
@@ -6279,8 +6279,8 @@
62796279
\tcode{ForwardIterator} meets
62806280
the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements}, and
62816281
the type of \tcode{*first} meets
6282-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
6283-
\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
6282+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
6283+
\oldconcept{MoveAssignable}\iref{cpp17.moveassignable} requirements.
62846284

62856285
\pnum
62866286
\effects
@@ -6671,6 +6671,7 @@
66716671
For algorithms other than those described in~\ref{alg.binary.search},
66726672
\tcode{comp} shall induce a strict weak ordering on the values.
66736673

6674+
\indextext{strict weak order}
66746675
\pnum
66756676
The term \term{strict} refers to the requirement
66766677
of an irreflexive relation (\tcode{!comp(x, x)} for all \tcode{x}),
@@ -6777,8 +6778,8 @@
67776778
\tcode{RandomAccessIterator} meets
67786779
the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and
67796780
the type of \tcode{*first} meets
6780-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
6781-
\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
6781+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
6782+
\oldconcept{MoveAssignable}\iref{cpp17.moveassignable} requirements.
67826783

67836784
\pnum
67846785
\effects
@@ -6835,8 +6836,8 @@
68356836
\tcode{RandomAccessIterator} meets
68366837
the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and
68376838
the type of \tcode{*first} meets
6838-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
6839-
\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
6839+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
6840+
\oldconcept{MoveAssignable}\iref{cpp17.moveassignable} requirements.
68406841

68416842
\pnum
68426843
\effects
@@ -6905,8 +6906,8 @@
69056906
\tcode{RandomAccessIterator} meets
69066907
the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and
69076908
the type of \tcode{*first} meets
6908-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
6909-
\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
6909+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
6910+
\oldconcept{MoveAssignable}\iref{cpp17.moveassignable} requirements.
69106911

69116912
\pnum
69126913
\effects
@@ -7013,8 +7014,8 @@
70137014
\tcode{RandomAccessIterator} meets
70147015
the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements},
70157016
the type of \tcode{*result_first} meets
7016-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
7017-
\oldconcept{\-Move\-Assignable} (\tref{cpp17.moveassignable}) requirements.
7017+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
7018+
\oldconcept{\-Move\-Assignable}\iref{cpp17.moveassignable} requirements.
70187019

70197020
\pnum
70207021
For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and
@@ -7218,8 +7219,8 @@
72187219
\tcode{RandomAccessIterator} meets
72197220
the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements}, and
72207221
the type of \tcode{*first} meets
7221-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
7222-
\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
7222+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
7223+
\oldconcept{MoveAssignable}\iref{cpp17.moveassignable} requirements.
72237224

72247225
\pnum
72257226
\effects
@@ -7639,8 +7640,8 @@
76397640
\tcode{BidirectionalIterator} meets
76407641
the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and
76417642
the type of \tcode{*first} meets
7642-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
7643-
\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
7643+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
7644+
\oldconcept{MoveAssignable}\iref{cpp17.moveassignable} requirements.
76447645

76457646
\pnum
76467647
\effects
@@ -7930,8 +7931,8 @@
79307931
\tcode{BidirectionalIterator} meets
79317932
the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and
79327933
the type of \tcode{*first} meets
7933-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
7934-
\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
7934+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
7935+
\oldconcept{MoveAssignable}\iref{cpp17.moveassignable} requirements.
79357936

79367937
\pnum
79377938
\effects
@@ -8500,8 +8501,8 @@
85008501
\tcode{RandomAccessIterator} meets
85018502
the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and
85028503
the type of \tcode{*first} meets
8503-
the \oldconcept{MoveConstructible} requirements (\tref{cpp17.moveconstructible}) and
8504-
the \oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}).
8504+
the \oldconcept{MoveConstructible} requirements\iref{cpp17.moveconstructible} and
8505+
the \oldconcept{MoveAssignable} requirements\iref{cpp17.moveassignable}.
85058506

85068507
\pnum
85078508
\effects
@@ -8553,8 +8554,8 @@
85538554
\tcode{RandomAccessIterator} meets
85548555
the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and
85558556
the type of \tcode{*first} meets
8556-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
8557-
\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
8557+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
8558+
\oldconcept{MoveAssignable}\iref{cpp17.moveassignable} requirements.
85588559

85598560
\pnum
85608561
\effects
@@ -8609,8 +8610,8 @@
86098610
\tcode{RandomAccessIterator} meets
86108611
the \oldconcept{ValueSwap\-pable} requirements\iref{swappable.requirements} and
86118612
the type of \tcode{*first} meets
8612-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
8613-
\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
8613+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
8614+
\oldconcept{MoveAssignable}\iref{cpp17.moveassignable} requirements.
86148615

86158616
\pnum
86168617
\effects
@@ -8662,8 +8663,8 @@
86628663
\tcode{RandomAccessIterator} meets
86638664
the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and
86648665
the type of \tcode{*first} meets
8665-
the \oldconcept{MoveConst\-ruct\-ible} (\tref{cpp17.moveconstructible}) and
8666-
\oldconcept{Move\-Assign\-able} (\tref{cpp17.moveassignable}) requirements.
8666+
the \oldconcept{MoveConst\-ruct\-ible}\iref{cpp17.moveconstructible} and
8667+
\oldconcept{Move\-Assign\-able}\iref{cpp17.moveassignable} requirements.
86678668

86688669
\pnum
86698670
\effects
@@ -8822,7 +8823,7 @@
88228823
\pnum
88238824
\expects
88248825
For the first form, \tcode{T} meets the
8825-
\oldconcept{LessThanComparable} requirements (\tref{cpp17.lessthancomparable}).
8826+
\oldconcept{LessThanComparable} requirements\iref{cpp17.lessthancomparable}.
88268827

88278828
\pnum
88288829
\returns
@@ -8864,7 +8865,7 @@
88648865
For the overloads in namespace \tcode{std},
88658866
\tcode{T} meets the \oldconcept{\-Copy\-Constructible} requirements.
88668867
For the first form, \tcode{T} meets the \oldconcept{LessThanComparable}
8867-
requirements (\tref{cpp17.lessthancomparable}).
8868+
requirements\iref{cpp17.lessthancomparable}.
88688869

88698870
\pnum
88708871
\returns
@@ -8900,7 +8901,7 @@
89008901
\pnum
89018902
\expects
89028903
For the first form, \tcode{T} meets the
8903-
\oldconcept{LessThanComparable} requirements (\tref{cpp17.lessthancomparable}).
8904+
\oldconcept{LessThanComparable} requirements\iref{cpp17.lessthancomparable}.
89048905

89058906
\pnum
89068907
\returns
@@ -8942,7 +8943,7 @@
89428943
For the overloads in namespace \tcode{std},
89438944
\tcode{T} meets the \oldconcept{\-Copy\-Constructible} requirements.
89448945
For the first form, \tcode{T} meets the \oldconcept{LessThanComparable}
8945-
requirements (\tref{cpp17.lessthancomparable}).
8946+
requirements\iref{cpp17.lessthancomparable}.
89468947

89478948
\pnum
89488949
\returns
@@ -8980,7 +8981,7 @@
89808981
\pnum
89818982
\expects
89828983
For the first form, \tcode{T} meets the
8983-
\oldconcept{LessThanComparable} requirements (\tref{cpp17.lessthancomparable}).
8984+
\oldconcept{LessThanComparable} requirements\iref{cpp17.lessthancomparable}.
89848985

89858986
\pnum
89868987
\returns
@@ -9023,7 +9024,7 @@
90239024
For the overloads in namespace \tcode{std},
90249025
\tcode{T} meets the \oldconcept{\-Copy\-Constructible} requirements.
90259026
For the first form, type \tcode{T} meets the \oldconcept{LessThanComparable}
9026-
requirements (\tref{cpp17.lessthancomparable}).
9027+
requirements\iref{cpp17.lessthancomparable}.
90279028

90289029
\pnum
90299030
\returns
@@ -9215,7 +9216,7 @@
92159216
\tcode{bool(invoke(comp, invoke(proj, hi), invoke(proj, lo)))} is \tcode{false}.
92169217
For the first form, type \tcode{T}
92179218
meets the \oldconcept{LessThan\-Comparable}
9218-
requirements (\tref{cpp17.lessthancomparable}).
9219+
requirements\iref{cpp17.lessthancomparable}.
92199220

92209221
\pnum
92219222
\returns
@@ -9780,8 +9781,8 @@
97809781
\pnum
97819782
\expects
97829783
\tcode{T} meets
9783-
the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible})
9784-
and \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements.
9784+
the \oldconcept{CopyConstructible}\iref{cpp17.copyconstructible}
9785+
and \oldconcept{CopyAssignable}\iref{cpp17.copyassignable} requirements.
97859786
In the range \crange{first}{last},
97869787
\tcode{binary_op} neither modifies elements
97879788
nor invalidates iterators or subranges.
@@ -9903,7 +9904,7 @@
99039904
\expects
99049905
\begin{itemize}
99059906
\item
9906-
\tcode{T} meets the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements.
9907+
\tcode{T} meets the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} requirements.
99079908
\item
99089909
\tcode{binary_op} neither invalidates iterators or subranges,
99099910
nor modifies elements in the range \crange{first}{last}.
@@ -9947,8 +9948,8 @@
99479948
\pnum
99489949
\expects
99499950
\tcode{T} meets
9950-
the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible})
9951-
and \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements.
9951+
the \oldconcept{CopyConstructible}\iref{cpp17.copyconstructible}
9952+
and \oldconcept{CopyAssignable}\iref{cpp17.copyassignable} requirements.
99529953
In the ranges \crange{first1}{last1} and
99539954
\crange{first2}{first2 + (last1 - first1)}
99549955
\tcode{binary_op1} and \tcode{binary_op2}
@@ -10043,7 +10044,7 @@
1004310044
\expects
1004410045
\begin{itemize}
1004510046
\item
10046-
\tcode{T} meets the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements.
10047+
\tcode{T} meets the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} requirements.
1004710048
\item
1004810049
Neither \tcode{binary_op1} nor \tcode{binary_op2}
1004910050
invalidates subranges, nor modifies elements in the ranges
@@ -10093,7 +10094,7 @@
1009310094
\expects
1009410095
\begin{itemize}
1009510096
\item
10096-
\tcode{T} meets the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements.
10097+
\tcode{T} meets the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} requirements.
1009710098
\item
1009810099
Neither \tcode{unary_op} nor \tcode{binary_op} invalidates subranges,
1009910100
nor modifies elements in the range \crange{first}{last}.
@@ -10242,7 +10243,7 @@
1024210243
\expects
1024310244
\begin{itemize}
1024410245
\item
10245-
\tcode{T} meets the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements.
10246+
\tcode{T} meets the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} requirements.
1024610247
\item
1024710248
\tcode{binary_op} neither invalidates iterators or subranges,
1024810249
nor modifies elements in
@@ -10363,7 +10364,7 @@
1036310364
\begin{itemize}
1036410365
\item
1036510366
If \tcode{init} is provided,
10366-
\tcode{T} meets the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements;
10367+
\tcode{T} meets the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} requirements;
1036710368
otherwise, \tcode{U}
1036810369
meets the \oldconcept{MoveConstructible} requirements.
1036910370
\item
@@ -10442,7 +10443,7 @@
1044210443
\expects
1044310444
\begin{itemize}
1044410445
\item
10445-
\tcode{T} meets the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements.
10446+
\tcode{T} meets the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} requirements.
1044610447
\item
1044710448
Neither \tcode{unary_op} nor \tcode{binary_op}
1044810449
invalidates iterators or subranges, nor modifies elements in
@@ -10541,7 +10542,7 @@
1054110542
\begin{itemize}
1054210543
\item
1054310544
If \tcode{init} is provided, \tcode{T} meets the
10544-
\oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements;
10545+
\oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} requirements;
1054510546
otherwise, \tcode{U} meets the
1054610547
\oldconcept{MoveConstructible} requirements.
1054710548
\item
@@ -10642,7 +10643,7 @@
1064210643
\begin{itemize}
1064310644
\item
1064410645
For the overloads with no \tcode{ExecutionPolicy},
10645-
\tcode{T} meets the \oldconcept{MoveAssignable} (\tref{cpp17.moveassignable})
10646+
\tcode{T} meets the \oldconcept{MoveAssignable}\iref{cpp17.moveassignable}
1064610647
requirements.
1064710648
\item
1064810649
For all overloads, in the ranges \crange{first}{last}

source/concepts.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -754,7 +754,7 @@
754754
\begin{itemdescr}
755755
\pnum
756756
\begin{note}
757-
Unlike the \oldconcept{Destructible} requirements~(\tref{cpp17.destructible}), this
757+
Unlike the \oldconcept{Destructible} requirements\iref{cpp17.destructible}, this
758758
concept forbids destructors that are potentially throwing, even if a particular
759759
invocation of the destructor does not actually throw.
760760
\end{note}

0 commit comments

Comments
 (0)