Skip to content

Commit e7dfaf9

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 e572580 commit e7dfaf9

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
@@ -5022,7 +5022,7 @@
50225022
For the overload with an \tcode{ExecutionPolicy},
50235023
there might be a performance cost
50245024
if \tcode{iterator_traits<For\-ward\-It\-er\-ator1>::value_type}
5025-
is not \oldconcept{\-Move\-Constructible} (\tref{cpp17.moveconstructible}).
5025+
is not \oldconcept{\-Move\-Constructible}\iref{cpp17.moveconstructible}.
50265026
\end{note}
50275027

50285028
\pnum
@@ -5835,7 +5835,7 @@
58355835
\expects
58365836
For the algorithms in namespace \tcode{std},
58375837
the type of \tcode{*first}
5838-
meets the \oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}).
5838+
meets the \oldconcept{MoveAssignable} requirements\iref{cpp17.moveassignable}.
58395839

58405840
\pnum
58415841
\effects
@@ -5945,7 +5945,7 @@
59455945
For the overloads with an \tcode{ExecutionPolicy},
59465946
there might be a performance cost
59475947
if \tcode{iterator_traits<ForwardIterator1>::value_type} does not meet
5948-
the \oldconcept{\-Move\-Constructible} (\tref{cpp17.moveconstructible}) requirements.
5948+
the \oldconcept{\-Move\-Constructible}\iref{cpp17.moveconstructible} requirements.
59495949
\end{note}
59505950

59515951
\pnum
@@ -6018,7 +6018,7 @@
60186018
For the overloads in namespace \tcode{std},
60196019
\tcode{pred} is an equivalence relation and
60206020
the type of \tcode{*first} meets
6021-
the \oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}).
6021+
the \oldconcept{MoveAssignable} requirements\iref{cpp17.moveassignable}.
60226022

60236023
\pnum
60246024
\effects
@@ -6124,9 +6124,9 @@
61246124
the \oldconcept{ForwardIterator} requirements and
61256125
its value type is the same as \tcode{T},
61266126
then \tcode{T} meets
6127-
the \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements.
6127+
the \oldconcept{CopyAssignable}\iref{cpp17.copyassignable} requirements.
61286128
Otherwise, \tcode{T} meets both
6129-
the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and
6129+
the \oldconcept{CopyConstructible}\iref{cpp17.copyconstructible} and
61306130
\oldconcept{CopyAssignable} requirements.
61316131
\begin{note}
61326132
For the overloads with an \tcode{ExecutionPolicy},
@@ -6274,8 +6274,8 @@
62746274
\tcode{ForwardIterator} meets
62756275
the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements}, and
62766276
the type of \tcode{*first} meets
6277-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
6278-
\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
6277+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
6278+
\oldconcept{MoveAssignable}\iref{cpp17.moveassignable} requirements.
62796279

62806280
\pnum
62816281
\effects
@@ -6666,6 +6666,7 @@
66666666
For algorithms other than those described in~\ref{alg.binary.search},
66676667
\tcode{comp} shall induce a strict weak ordering on the values.
66686668

6669+
\indextext{strict weak order}
66696670
\pnum
66706671
The term \term{strict} refers to the requirement
66716672
of an irreflexive relation (\tcode{!comp(x, x)} for all \tcode{x}),
@@ -6772,8 +6773,8 @@
67726773
\tcode{RandomAccessIterator} meets
67736774
the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and
67746775
the type of \tcode{*first} meets
6775-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
6776-
\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
6776+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
6777+
\oldconcept{MoveAssignable}\iref{cpp17.moveassignable} requirements.
67776778

67786779
\pnum
67796780
\effects
@@ -6830,8 +6831,8 @@
68306831
\tcode{RandomAccessIterator} meets
68316832
the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and
68326833
the type of \tcode{*first} meets
6833-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
6834-
\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
6834+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
6835+
\oldconcept{MoveAssignable}\iref{cpp17.moveassignable} requirements.
68356836

68366837
\pnum
68376838
\effects
@@ -6900,8 +6901,8 @@
69006901
\tcode{RandomAccessIterator} meets
69016902
the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and
69026903
the type of \tcode{*first} meets
6903-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
6904-
\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
6904+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
6905+
\oldconcept{MoveAssignable}\iref{cpp17.moveassignable} requirements.
69056906

69066907
\pnum
69076908
\effects
@@ -7008,8 +7009,8 @@
70087009
\tcode{RandomAccessIterator} meets
70097010
the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements},
70107011
the type of \tcode{*result_first} meets
7011-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
7012-
\oldconcept{\-Move\-Assignable} (\tref{cpp17.moveassignable}) requirements.
7012+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
7013+
\oldconcept{\-Move\-Assignable}\iref{cpp17.moveassignable} requirements.
70137014

70147015
\pnum
70157016
For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and
@@ -7213,8 +7214,8 @@
72137214
\tcode{RandomAccessIterator} meets
72147215
the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements}, and
72157216
the type of \tcode{*first} meets
7216-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
7217-
\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
7217+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
7218+
\oldconcept{MoveAssignable}\iref{cpp17.moveassignable} requirements.
72187219

72197220
\pnum
72207221
\effects
@@ -7634,8 +7635,8 @@
76347635
\tcode{BidirectionalIterator} meets
76357636
the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and
76367637
the type of \tcode{*first} meets
7637-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
7638-
\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
7638+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
7639+
\oldconcept{MoveAssignable}\iref{cpp17.moveassignable} requirements.
76397640

76407641
\pnum
76417642
\effects
@@ -7925,8 +7926,8 @@
79257926
\tcode{BidirectionalIterator} meets
79267927
the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and
79277928
the type of \tcode{*first} meets
7928-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
7929-
\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
7929+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
7930+
\oldconcept{MoveAssignable}\iref{cpp17.moveassignable} requirements.
79307931

79317932
\pnum
79327933
\effects
@@ -8495,8 +8496,8 @@
84958496
\tcode{RandomAccessIterator} meets
84968497
the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and
84978498
the type of \tcode{*first} meets
8498-
the \oldconcept{MoveConstructible} requirements (\tref{cpp17.moveconstructible}) and
8499-
the \oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}).
8499+
the \oldconcept{MoveConstructible} requirements\iref{cpp17.moveconstructible} and
8500+
the \oldconcept{MoveAssignable} requirements\iref{cpp17.moveassignable}.
85008501

85018502
\pnum
85028503
\effects
@@ -8548,8 +8549,8 @@
85488549
\tcode{RandomAccessIterator} meets
85498550
the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and
85508551
the type of \tcode{*first} meets
8551-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
8552-
\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
8552+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
8553+
\oldconcept{MoveAssignable}\iref{cpp17.moveassignable} requirements.
85538554

85548555
\pnum
85558556
\effects
@@ -8604,8 +8605,8 @@
86048605
\tcode{RandomAccessIterator} meets
86058606
the \oldconcept{ValueSwap\-pable} requirements\iref{swappable.requirements} and
86068607
the type of \tcode{*first} meets
8607-
the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and
8608-
\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements.
8608+
the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} and
8609+
\oldconcept{MoveAssignable}\iref{cpp17.moveassignable} requirements.
86098610

86108611
\pnum
86118612
\effects
@@ -8657,8 +8658,8 @@
86578658
\tcode{RandomAccessIterator} meets
86588659
the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and
86598660
the type of \tcode{*first} meets
8660-
the \oldconcept{MoveConst\-ruct\-ible} (\tref{cpp17.moveconstructible}) and
8661-
\oldconcept{Move\-Assign\-able} (\tref{cpp17.moveassignable}) requirements.
8661+
the \oldconcept{MoveConst\-ruct\-ible}\iref{cpp17.moveconstructible} and
8662+
\oldconcept{Move\-Assign\-able}\iref{cpp17.moveassignable} requirements.
86628663

86638664
\pnum
86648665
\effects
@@ -8817,7 +8818,7 @@
88178818
\pnum
88188819
\expects
88198820
For the first form, \tcode{T} meets the
8820-
\oldconcept{LessThanComparable} requirements (\tref{cpp17.lessthancomparable}).
8821+
\oldconcept{LessThanComparable} requirements\iref{cpp17.lessthancomparable}.
88218822

88228823
\pnum
88238824
\returns
@@ -8859,7 +8860,7 @@
88598860
For the overloads in namespace \tcode{std},
88608861
\tcode{T} meets the \oldconcept{\-Copy\-Constructible} requirements.
88618862
For the first form, \tcode{T} meets the \oldconcept{LessThanComparable}
8862-
requirements (\tref{cpp17.lessthancomparable}).
8863+
requirements\iref{cpp17.lessthancomparable}.
88638864

88648865
\pnum
88658866
\returns
@@ -8895,7 +8896,7 @@
88958896
\pnum
88968897
\expects
88978898
For the first form, \tcode{T} meets the
8898-
\oldconcept{LessThanComparable} requirements (\tref{cpp17.lessthancomparable}).
8899+
\oldconcept{LessThanComparable} requirements\iref{cpp17.lessthancomparable}.
88998900

89008901
\pnum
89018902
\returns
@@ -8937,7 +8938,7 @@
89378938
For the overloads in namespace \tcode{std},
89388939
\tcode{T} meets the \oldconcept{\-Copy\-Constructible} requirements.
89398940
For the first form, \tcode{T} meets the \oldconcept{LessThanComparable}
8940-
requirements (\tref{cpp17.lessthancomparable}).
8941+
requirements\iref{cpp17.lessthancomparable}.
89418942

89428943
\pnum
89438944
\returns
@@ -8975,7 +8976,7 @@
89758976
\pnum
89768977
\expects
89778978
For the first form, \tcode{T} meets the
8978-
\oldconcept{LessThanComparable} requirements (\tref{cpp17.lessthancomparable}).
8979+
\oldconcept{LessThanComparable} requirements\iref{cpp17.lessthancomparable}.
89798980

89808981
\pnum
89818982
\returns
@@ -9018,7 +9019,7 @@
90189019
For the overloads in namespace \tcode{std},
90199020
\tcode{T} meets the \oldconcept{\-Copy\-Constructible} requirements.
90209021
For the first form, type \tcode{T} meets the \oldconcept{LessThanComparable}
9021-
requirements (\tref{cpp17.lessthancomparable}).
9022+
requirements\iref{cpp17.lessthancomparable}.
90229023

90239024
\pnum
90249025
\returns
@@ -9210,7 +9211,7 @@
92109211
\tcode{bool(invoke(comp, invoke(proj, hi), invoke(proj, lo)))} is \tcode{false}.
92119212
For the first form, type \tcode{T}
92129213
meets the \oldconcept{LessThan\-Comparable}
9213-
requirements (\tref{cpp17.lessthancomparable}).
9214+
requirements\iref{cpp17.lessthancomparable}.
92149215

92159216
\pnum
92169217
\returns
@@ -9775,8 +9776,8 @@
97759776
\pnum
97769777
\expects
97779778
\tcode{T} meets
9778-
the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible})
9779-
and \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements.
9779+
the \oldconcept{CopyConstructible}\iref{cpp17.copyconstructible}
9780+
and \oldconcept{CopyAssignable}\iref{cpp17.copyassignable} requirements.
97809781
In the range \crange{first}{last},
97819782
\tcode{binary_op} neither modifies elements
97829783
nor invalidates iterators or subranges.
@@ -9898,7 +9899,7 @@
98989899
\expects
98999900
\begin{itemize}
99009901
\item
9901-
\tcode{T} meets the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements.
9902+
\tcode{T} meets the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} requirements.
99029903
\item
99039904
\tcode{binary_op} neither invalidates iterators or subranges,
99049905
nor modifies elements in the range \crange{first}{last}.
@@ -9942,8 +9943,8 @@
99429943
\pnum
99439944
\expects
99449945
\tcode{T} meets
9945-
the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible})
9946-
and \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements.
9946+
the \oldconcept{CopyConstructible}\iref{cpp17.copyconstructible}
9947+
and \oldconcept{CopyAssignable}\iref{cpp17.copyassignable} requirements.
99479948
In the ranges \crange{first1}{last1} and
99489949
\crange{first2}{first2 + (last1 - first1)}
99499950
\tcode{binary_op1} and \tcode{binary_op2}
@@ -10038,7 +10039,7 @@
1003810039
\expects
1003910040
\begin{itemize}
1004010041
\item
10041-
\tcode{T} meets the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements.
10042+
\tcode{T} meets the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} requirements.
1004210043
\item
1004310044
Neither \tcode{binary_op1} nor \tcode{binary_op2}
1004410045
invalidates subranges, nor modifies elements in the ranges
@@ -10088,7 +10089,7 @@
1008810089
\expects
1008910090
\begin{itemize}
1009010091
\item
10091-
\tcode{T} meets the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements.
10092+
\tcode{T} meets the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} requirements.
1009210093
\item
1009310094
Neither \tcode{unary_op} nor \tcode{binary_op} invalidates subranges,
1009410095
nor modifies elements in the range \crange{first}{last}.
@@ -10237,7 +10238,7 @@
1023710238
\expects
1023810239
\begin{itemize}
1023910240
\item
10240-
\tcode{T} meets the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements.
10241+
\tcode{T} meets the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} requirements.
1024110242
\item
1024210243
\tcode{binary_op} neither invalidates iterators or subranges,
1024310244
nor modifies elements in
@@ -10358,7 +10359,7 @@
1035810359
\begin{itemize}
1035910360
\item
1036010361
If \tcode{init} is provided,
10361-
\tcode{T} meets the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements;
10362+
\tcode{T} meets the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} requirements;
1036210363
otherwise, \tcode{U}
1036310364
meets the \oldconcept{MoveConstructible} requirements.
1036410365
\item
@@ -10437,7 +10438,7 @@
1043710438
\expects
1043810439
\begin{itemize}
1043910440
\item
10440-
\tcode{T} meets the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements.
10441+
\tcode{T} meets the \oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} requirements.
1044110442
\item
1044210443
Neither \tcode{unary_op} nor \tcode{binary_op}
1044310444
invalidates iterators or subranges, nor modifies elements in
@@ -10536,7 +10537,7 @@
1053610537
\begin{itemize}
1053710538
\item
1053810539
If \tcode{init} is provided, \tcode{T} meets the
10539-
\oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements;
10540+
\oldconcept{MoveConstructible}\iref{cpp17.moveconstructible} requirements;
1054010541
otherwise, \tcode{U} meets the
1054110542
\oldconcept{MoveConstructible} requirements.
1054210543
\item
@@ -10637,7 +10638,7 @@
1063710638
\begin{itemize}
1063810639
\item
1063910640
For the overloads with no \tcode{ExecutionPolicy},
10640-
\tcode{T} meets the \oldconcept{MoveAssignable} (\tref{cpp17.moveassignable})
10641+
\tcode{T} meets the \oldconcept{MoveAssignable}\iref{cpp17.moveassignable}
1064110642
requirements.
1064210643
\item
1064310644
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)