diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen index eee5307c45..63bc5929dc 160000 --- a/cxxdraft-htmlgen +++ b/cxxdraft-htmlgen @@ -1 +1 @@ -Subproject commit eee5307c45c04761ef5c27956cbed742e08e5fb4 +Subproject commit 63bc5929dc4fa6bb7448390ecec586c8069516b7 diff --git a/draft b/draft index ac78ae76c5..aaecb9378d 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit ac78ae76c579883a32a9eb5b00346150a41e8e47 +Subproject commit aaecb9378d0766482cbb46e6bbe605edfc0781aa diff --git a/gen_html_std.sh b/gen_html_std.sh index e4d5de4a88..f9ec3bef8d 100755 --- a/gen_html_std.sh +++ b/gen_html_std.sh @@ -1,4 +1,4 @@ -#! /bin/sh -e +#! /bin/bash -e # check if we need to rebuild cd cxxdraft-htmlgen @@ -47,28 +47,30 @@ cp std.pdf std_orig.pdf # create the "annex-f" file that maps stable names to section numbers +shopt -s extglob # Memoir 3.8 changed the content of the .aux files so as to require a different incantation -if grep -q TitleReference *.aux +if grep -q TitleReference !(back).aux then # Memoir < 3.8 - grep -h '^\\newlabel{' *.aux \ + grep -h '^\\newlabel{' !(back).aux \ | sed 's/\\newlabel{\([^}]*\)}.*TitleReference {\([^}]*\)}.*/\1 \2/' \ | sed 's/\\newlabel{\([^}]*\)}{{\(Clause\|Annex\) \([^}]*\)}.*/\1 \3/' \ | sed 's/\\newlabel{\(eq:[^}]*\)}{{\([^}]*\)}.*/\1 \2/' \ | grep -v '^\\' \ | sort > annex-f else - grep -h '^\\newlabel{' *.aux \ + grep -h '^\\newlabel{' !(back).aux \ | sed 's/^\\newlabel{\([^}]*\)}{{\([^}]*\)}.*/\1 \2/' \ | grep -v '^\\' \ | sed 's/\(Clause\|Annex\) //' \ | sort > annex-f fi +shopt -u extglob if [ -f ../../htmlgen.patch ] then -git apply -3 ../../htmlgen.patch +git apply ../../htmlgen.patch fi # Build the HTML diff --git a/gh-pages b/gh-pages index df7adc3717..b1102cf744 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit df7adc371752eab2b4d197727a7fe5e65c8787f1 +Subproject commit b1102cf744bbc95fd433320282abee6b58f55167 diff --git a/htmlgen.patch b/htmlgen.patch index 7b86ae2bdc..be6fb53190 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From 087b7b86b346f3a15a16a3c7efdbb44f38a208a4 Mon Sep 17 00:00:00 2001 +From cfef94fb6232496a51582eb9fc9eea8987e68449 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on @@ -10,10 +10,10 @@ Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index 81781294..cc2fab73 100644 +index 98705dfb..a22e5e30 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -296,7 +296,7 @@ Given +@@ -342,7 +342,7 @@ Given #include struct C { @@ -22,7 +22,7 @@ index 81781294..cc2fab73 100644 }; int main() { -@@ -2549,23 +2549,23 @@ namespace AB { +@@ -2652,23 +2652,23 @@ namespace AB { void h() { @@ -59,10 +59,10 @@ index 81781294..cc2fab73 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index ebc26464..c6ff9d4a 100644 +index eec3be90..0ea2a413 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -2846,7 +2846,7 @@ struct s2 { +@@ -2938,7 +2938,7 @@ struct s2 { } auto g() { return [] { @@ -75,43 +75,43 @@ index ebc26464..c6ff9d4a 100644 2.43.0 -From eadd0f8aa92e9ad7489c01c436b187171a2cd451 Mon Sep 17 00:00:00 2001 +From 2879897dfe61d7e64d62f61275844d48b7fa15ac Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 Subject: [PATCH 2/9] Use new link macros. --- source/algorithms.tex | 4 +- - source/basic.tex | 99 +++++++------- - source/classes.tex | 24 ++-- + source/basic.tex | 93 +++++++------- + source/classes.tex | 22 ++-- source/compatibility.tex | 4 +- source/concepts.tex | 12 +- - source/containers.tex | 50 ++++---- - source/declarations.tex | 69 +++++----- + source/containers.tex | 48 ++++---- + source/declarations.tex | 57 +++++---- source/diagnostics.tex | 6 +- - source/exceptions.tex | 36 +++--- - source/expressions.tex | 270 ++++++++++++++++++++------------------- + source/exceptions.tex | 34 +++--- + source/expressions.tex | 258 ++++++++++++++++++++------------------- source/future.tex | 10 +- - source/intro.tex | 14 +- + source/intro.tex | 19 +-- source/iostreams.tex | 74 +++++------ - source/iterators.tex | 8 +- - source/lex.tex | 10 +- - source/lib-intro.tex | 73 +++++------ + source/iterators.tex | 6 +- + source/lex.tex | 6 +- + source/lib-intro.tex | 69 +++++------ source/limits.tex | 2 +- - source/numerics.tex | 60 ++++----- + source/numerics.tex | 55 ++++----- source/overloading.tex | 64 +++++----- - source/preprocessor.tex | 14 +- + source/preprocessor.tex | 12 +- source/statements.tex | 30 ++--- source/strings.tex | 8 +- - source/support.tex | 90 ++++++------- - source/templates.tex | 124 +++++++++--------- - source/threads.tex | 45 ++++--- + source/support.tex | 86 ++++++------- + source/templates.tex | 114 ++++++++--------- + source/threads.tex | 35 +++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 610 insertions(+), 620 deletions(-) + 27 files changed, 573 insertions(+), 585 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 3790bb78..84d18c8b 100644 +index 8b2f530d..cd4ba8fb 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -123,7 +123,7 @@ index 3790bb78..84d18c8b 100644 \pnum The following subclauses describe components for -@@ -8111,7 +8111,7 @@ In either case, twice as many projections as comparisons. +@@ -10225,7 +10225,7 @@ In either case, twice as many projections as comparisons. \pnum \remarks @@ -133,10 +133,10 @@ index 3790bb78..84d18c8b 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index cc2fab73..ed278134 100644 +index a22e5e30..eab80b45 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -139,7 +139,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. +@@ -180,7 +180,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. \indextext{linkage}% A name used in more than one translation unit can potentially refer to the same entity in these translation units depending on the @@ -145,7 +145,7 @@ index cc2fab73..ed278134 100644 translation unit. \rSec1[basic.def]{Declarations and definitions} -@@ -162,7 +162,7 @@ A declaration may also have effects including: +@@ -205,7 +205,7 @@ A declaration can also have effects including: \item a static assertion\iref{dcl.pre}, \item controlling template instantiation\iref{temp.explicit}, \item guiding template argument deduction for constructors\iref{temp.deduct.guide}, @@ -153,17 +153,8 @@ index cc2fab73..ed278134 100644 +\item use of \link{attributes}{dcl.attr}, and \item nothing (in the case of an \grammarterm{empty-declaration}). \end{itemize} - -@@ -246,7 +246,7 @@ that defines a function, a class, a variable, or a static data member, - \item it is - an explicit instantiation declaration\iref{temp.explicit}, or - \item it is --an explicit specialization\iref{temp.expl.spec} whose -+an \link{explicit specialization}{temp.expl.spec} whose - \grammarterm{declaration} is not a definition. - \end{itemize} - A declaration is said to be a \defn{definition} of each entity that it defines. -@@ -288,7 +288,7 @@ In some circumstances, \Cpp{} implementations implicitly define the + \end{note} +@@ -334,7 +334,7 @@ In some circumstances, \Cpp{} implementations implicitly define the default constructor\iref{class.default.ctor}, copy constructor, move constructor\iref{class.copy.ctor}, copy assignment operator, move assignment operator\iref{class.copy.assign}, @@ -172,16 +163,16 @@ index cc2fab73..ed278134 100644 \end{note} \begin{example} Given -@@ -372,7 +372,7 @@ defined as follows: - \item If $E$ is an - \grammarterm{id-expression}\iref{expr.prim.id}, the set +@@ -419,7 +419,7 @@ defined as follows: + an \grammarterm{id-expression}\iref{expr.prim.id} or + a \grammarterm{splice-expression}\iref{expr.prim.splice}, the set contains only $E$. -\item If $E$ is a subscripting operation\iref{expr.sub} with +\item If $E$ is a \link{subscripting}{expr.sub} operation with an array operand, the set contains the potential results of that operand. \item If $E$ is a class member access expression\iref{expr.ref} of the form -@@ -382,16 +382,15 @@ the set contains the potential results of $E_1$. +@@ -430,16 +430,15 @@ the set contains the potential results of $E_1$. \item If $E$ is a class member access expression naming a static data member, the set contains the \grammarterm{id-expression} designating the data member. @@ -202,7 +193,7 @@ index cc2fab73..ed278134 100644 contains the potential results of the right operand. \item Otherwise, the set is empty. \end{itemize} -@@ -542,8 +541,8 @@ implicitly-defined +@@ -601,8 +600,8 @@ implicitly-defined copy assignment or move assignment function for another class as specified in~\ref{class.copy.assign}. A constructor for a class is odr-used as specified @@ -213,7 +204,7 @@ index cc2fab73..ed278134 100644 \pnum A local entity\iref{basic.pre} -@@ -615,7 +614,7 @@ void h() { +@@ -674,7 +673,7 @@ void h() { \pnum Every program shall contain at least one definition of every function or variable that is odr-used in that program @@ -222,7 +213,7 @@ index cc2fab73..ed278134 100644 The definition can appear explicitly in the program, it can be found in the standard or a user-defined library, or (when appropriate) it is implicitly defined (see~\ref{class.default.ctor}, \ref{class.copy.ctor}, -@@ -663,9 +662,9 @@ The rules for declarations and expressions +@@ -722,9 +721,9 @@ The rules for declarations and expressions describe in which contexts complete class types are required. A class type \tcode{T} must be complete if \begin{itemize} @@ -235,7 +226,7 @@ index cc2fab73..ed278134 100644 \item \tcode{T} is used as the allocated type or array element type in a \grammarterm{new-expression}\iref{expr.new}, or \item an lvalue-to-rvalue conversion is applied to -@@ -685,7 +684,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or +@@ -744,7 +743,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or \keyword{sizeof} operator\iref{expr.sizeof} is applied to an operand of type \tcode{T}, or \item a function with a return type or argument type of type \tcode{T} @@ -244,25 +235,7 @@ index cc2fab73..ed278134 100644 \item a class with a base class of type \tcode{T} is defined\iref{class.derived}, or \item an lvalue of type \tcode{T} is assigned to\iref{expr.assign}, or -@@ -731,7 +730,7 @@ template specializations\iref{temp.spec.partial.match}, except that a name can r - a non-volatile const object with internal or no linkage if the object - \begin{itemize} - \item has the same literal type in all definitions of \tcode{D}, --\item is initialized with a constant expression\iref{expr.const}, -+\item is initialized with a \link{constant expression}{expr.const}, - \item is not odr-used in any definition of \tcode{D}, and - \item has the same value in all definitions of \tcode{D}, - \end{itemize} -@@ -2745,7 +2744,7 @@ only namespace names are considered.% - \pnum - \indextext{program}% - \indextext{linking}% --A \defn{program} consists of one or more translation units\iref{lex.separate} -+A \defn{program} consists of one or more \deflinkx{translation units}{translation unit}{lex.separate} - linked together. A translation unit consists - of a sequence of declarations. - -@@ -2778,7 +2777,7 @@ are attached to the same module. +@@ -2945,7 +2944,7 @@ are attached to the same module. \indextext{linkage!\idxcode{inline} and}% \indextext{\idxcode{inline}!linkage of}% The name of an entity @@ -271,7 +244,7 @@ index cc2fab73..ed278134 100644 has internal linkage if it is the name of \begin{itemize} \item -@@ -2819,7 +2818,7 @@ typedef declaration in which the class has the typedef name for linkage +@@ -2986,7 +2985,7 @@ typedef declaration in which the class has the typedef name for linkage purposes\iref{dcl.typedef}; or \item \indextext{enumeration!linkage of}% @@ -280,7 +253,7 @@ index cc2fab73..ed278134 100644 in a typedef declaration in which the enumeration has the typedef name for linkage purposes\iref{dcl.typedef}; or \item an unnamed enumeration -@@ -2895,7 +2894,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. +@@ -3062,7 +3061,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. \pnum \indextext{linkage!no}% Names not covered by these rules have no linkage. Moreover, except as @@ -289,7 +262,7 @@ index cc2fab73..ed278134 100644 linkage. \pnum -@@ -3217,8 +3216,8 @@ features of the language, such as references and virtual functions, might +@@ -3421,8 +3420,8 @@ features of the language, such as references and virtual functions, might involve additional memory locations that are not accessible to programs but are managed by the implementation. \end{note} @@ -300,7 +273,7 @@ index cc2fab73..ed278134 100644 locations without interfering with each other. \pnum -@@ -3262,15 +3261,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but +@@ -3466,15 +3465,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but The constructs in a \Cpp{} program create, destroy, refer to, access, and manipulate objects. An \defn{object} is created @@ -319,7 +292,7 @@ index cc2fab73..ed278134 100644 and in its period of destruction\iref{class.cdtor}. \begin{note} -@@ -3400,7 +3399,7 @@ A \defn{potentially-overlapping subobject} is either: +@@ -3608,7 +3607,7 @@ A \defn{potentially-overlapping subobject} is either: \begin{itemize} \item a base class subobject, or \item a non-static data member @@ -328,7 +301,7 @@ index cc2fab73..ed278134 100644 \end{itemize} \pnum -@@ -3421,7 +3420,7 @@ Otherwise, the circumstances under which the object has zero size +@@ -3629,7 +3628,7 @@ Otherwise, the circumstances under which the object has zero size are \impldef{which non-standard-layout objects containing no data are considered empty}. \indextext{most derived object!bit-field}% @@ -337,7 +310,7 @@ index cc2fab73..ed278134 100644 an object with nonzero size shall occupy one or more bytes of storage, including every byte that is occupied in full or in part -@@ -3986,16 +3985,16 @@ the result of the evaluation is the value so produced but is not erroneous: +@@ -4269,16 +4268,16 @@ the result of the evaluation is that erroneous value: is produced by the evaluation of: \begin{itemize} \item @@ -357,7 +330,7 @@ index cc2fab73..ed278134 100644 \end{itemize} then the result of the operation is an indeterminate value or that erroneous value, respectively. -@@ -4186,8 +4185,8 @@ specified in~\ref{class.copy.elision}. +@@ -4469,8 +4468,8 @@ specified in~\ref{class.copy.elision}. \indextext{storage duration!dynamic|(} \pnum @@ -368,7 +341,7 @@ index cc2fab73..ed278134 100644 \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -@@ -4351,9 +4350,9 @@ that would match a handler\iref{except.handle} of type +@@ -4634,9 +4633,9 @@ that would match a handler\iref{except.handle} of type \tcode{std::bad_alloc}\iref{bad.alloc}. \pnum @@ -381,7 +354,7 @@ index cc2fab73..ed278134 100644 a coroutine state\iref{dcl.fct.def.coroutine}, or called indirectly through calls to the functions in the \Cpp{} standard library. -@@ -4848,9 +4847,9 @@ shall be destroyed before +@@ -5161,9 +5160,9 @@ shall be destroyed before impose requirements on implementations regarding the representation of types. There are two kinds of types: fundamental types and compound types. @@ -394,16 +367,16 @@ index cc2fab73..ed278134 100644 \end{note} \pnum -@@ -5024,7 +5023,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, +@@ -5337,7 +5336,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, pointer types, pointer-to-member types\iref{basic.compound}, - \tcode{std::nullptr_t}, + \tcode{std::meta::\brk{}info}, \tcode{std::nullptr_t}, and -cv-qualified\iref{basic.type.qualifier} versions of these +\link{cv-qualified}{basic.type.qualifier} versions of these types are collectively called \defnadjx{scalar}{types}{type}. \label{term.trivially.copyable.type}% -@@ -5057,7 +5056,7 @@ A type is a \defnadj{literal}{type} if it is: +@@ -5362,7 +5361,7 @@ A type is a \defnadj{literal}{type} if it is: \item a scalar type; or \item a reference type; or \item an array of literal type; or @@ -412,7 +385,7 @@ index cc2fab73..ed278134 100644 has all of the following properties: \begin{itemize} \item it has a constexpr destructor\iref{dcl.constexpr}, -@@ -5091,8 +5090,8 @@ will be usable in a constant expression. +@@ -5396,8 +5395,8 @@ will be usable in a constant expression. Two types \cvqual{cv1} \tcode{T1} and \cvqual{cv2} \tcode{T2} are \defnadjx{layout-compatible}{types}{type} if \tcode{T1} and \tcode{T2} are the same type, @@ -421,9 +394,9 @@ index cc2fab73..ed278134 100644 +\deflinkx{layout-compatible enumerations}{layout-compatible!enumeration}{dcl.enum}, or +\deflinkx{layout-compatible standard-layout class types}{layout-compatible!class}{class.mem}. - \rSec2[basic.fundamental]{Fundamental types} - -@@ -5540,7 +5539,7 @@ ordinary pointers to objects or functions. + \pnum + A type is \defn{consteval-only} if it is +@@ -5971,7 +5970,7 @@ ordinary pointers to objects or functions. which identify members of a given type within objects of a given class, \ref{dcl.mptr}. Pointers to data members and pointers to member functions are collectively @@ -432,7 +405,7 @@ index cc2fab73..ed278134 100644 \end{itemize} \pnum -@@ -5618,7 +5617,7 @@ layout-compatible types shall +@@ -6049,7 +6048,7 @@ layout-compatible types shall have the same value representation and alignment requirements\iref{basic.align}. \begin{note} @@ -441,7 +414,7 @@ index cc2fab73..ed278134 100644 representation, but their range of valid values is restricted by the extended alignment requirement. \end{note} -@@ -5933,8 +5932,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. +@@ -6386,8 +6385,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. \indextext{program execution|(} \pnum @@ -452,29 +425,29 @@ index cc2fab73..ed278134 100644 block. Such an object exists and retains its last-stored value during the execution of the block and while the block is suspended (by a call of a function, suspension of a coroutine\iref{expr.await}, or receipt of a signal). -@@ -5979,7 +5978,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, +@@ -6432,7 +6431,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, the initialization of the entities captured by copy and the constituent expressions of the \grammarterm{initializer} of the \grammarterm{init-capture}{s}, \item -if $E$ is a function call\iref{expr.call} or implicitly invokes a function, +if $E$ is a \link{function call}{expr.call} or implicitly invokes a function, the constituent expressions of each default argument\iref{dcl.fct.default} - used in the call, or + used in the call, and \item -@@ -6010,7 +6009,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope +@@ -6463,7 +6462,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope A \defn{full-expression} is \begin{itemize} \item -an unevaluated operand\iref{expr.context}, +an \deflink{unevaluated operand}{expr.context}, \item - a \grammarterm{constant-expression}\iref{expr.const}, + a \grammarterm{constant-expression}\iref{expr.const.core}, \item diff --git a/source/classes.tex b/source/classes.tex -index f0d9a262..170c2eb3 100644 +index 78a504f0..8c2f3c53 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -274,10 +274,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: +@@ -188,10 +188,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: \item has no non-static data members of type non-standard-layout class (or array of such types) or reference, @@ -488,7 +461,7 @@ index f0d9a262..170c2eb3 100644 for all non-static data members, \item has no non-standard-layout base classes, -@@ -658,7 +658,7 @@ if it is +@@ -574,7 +574,7 @@ if it is \end{itemize} For any other \grammarterm{member-declaration}, each declared entity @@ -497,7 +470,7 @@ index f0d9a262..170c2eb3 100644 is a member of the class, and each such \grammarterm{member-declaration} shall either -@@ -673,7 +673,7 @@ Nested types are classes\iref{class.name,class.nest} and +@@ -593,7 +593,7 @@ Nested types are classes\iref{class.name,class.nest} and enumerations\iref{dcl.enum} declared in the class and arbitrary types declared as members by use of a typedef declaration\iref{dcl.typedef} or \grammarterm{alias-declaration}. @@ -506,16 +479,7 @@ index f0d9a262..170c2eb3 100644 are members of the class. \pnum -@@ -688,7 +688,7 @@ Any other data member or member function is a \defnadj{non-static}{member} - \defnadj{non-static}{member function}\iref{class.mfct.non.static}, respectively). - \begin{note} - A non-static data member of non-reference --type is a member subobject of a class object\iref{intro.object}. -+type is a \deflink{member subobject}{intro.object} of a class object. - \end{note} - - \pnum -@@ -808,9 +808,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali +@@ -739,9 +739,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali The \grammarterm{member-declarator-list} can be omitted only after a \grammarterm{class-specifier} or an \grammarterm{enum-specifier} or in a @@ -527,7 +491,7 @@ index f0d9a262..170c2eb3 100644 that is not a friend declaration. \pnum -@@ -913,7 +913,7 @@ unscoped enumeration type; and +@@ -844,7 +844,7 @@ unscoped enumeration type; and \pnum In addition, if class \tcode{T} has a user-declared @@ -536,7 +500,7 @@ index f0d9a262..170c2eb3 100644 \tcode{T} shall have a name different from \tcode{T}. \pnum -@@ -963,7 +963,7 @@ non-static data members (in any order) have layout-compatible +@@ -894,7 +894,7 @@ non-static data members (in any order) have layout-compatible types\iref{term.layout.compatible.type}. \pnum @@ -545,7 +509,7 @@ index f0d9a262..170c2eb3 100644 of struct type \tcode{T1}, it is permitted to read a non-static data member \tcode{m} of another union member of struct type \tcode{T2} provided \tcode{m} is part of the common initial sequence of \tcode{T1} and \tcode{T2}; -@@ -2257,7 +2257,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation +@@ -2236,7 +2236,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation An array of class type contains several subobjects for each of which the destructor is invoked. \end{note} @@ -554,7 +518,7 @@ index f0d9a262..170c2eb3 100644 if it is invoked or as specified in~\ref{expr.new}, \ref{stmt.return}, \ref{dcl.init.aggr}, \ref{class.base.init}, and~\ref{except.throw}. -@@ -6342,7 +6342,7 @@ associated with a \grammarterm{try-block} (if there is one), +@@ -6344,7 +6344,7 @@ associated with a \grammarterm{try-block} (if there is one), the copy-initialization of the exception object can be omitted by constructing $o$ directly into the exception object; @@ -564,10 +528,10 @@ index f0d9a262..170c2eb3 100644 corresponding parameter if the meaning of the program will be unchanged except for the execution of a constructor and destructor for the parameter copy object; diff --git a/source/compatibility.tex b/source/compatibility.tex -index 87878a30..3a4119ed 100644 +index e3512400..cdca4c22 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -1950,8 +1950,8 @@ deallocation functions\iref{expr.new}. +@@ -1981,8 +1981,8 @@ deallocation functions\iref{expr.new}. A conditional expression with a throw expression as its second or third operand keeps the type and value category of the other operand. \rationale @@ -579,7 +543,7 @@ index 87878a30..3a4119ed 100644 lvalue-to-rvalue conversion, were considered gratuitous and surprising. \effect diff --git a/source/concepts.tex b/source/concepts.tex -index 4d848e8f..6bd0435e 100644 +index d1e15a6e..42828a4b 100644 --- a/source/concepts.tex +++ b/source/concepts.tex @@ -300,7 +300,7 @@ classifications, and fundamental type properties. @@ -627,10 +591,10 @@ index 4d848e8f..6bd0435e 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index d7032dfd..9c719111 100644 +index a0095c26..0e937574 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -6116,14 +6116,14 @@ namespace std { +@@ -6125,14 +6125,14 @@ namespace std { \indextext{\idxcode{array}!contiguous storage}% The header \libheader{array} defines a class template for storing fixed-size sequences of objects. @@ -647,7 +611,7 @@ index d7032dfd..9c719111 100644 list-initialized with up to \tcode{N} elements whose types are convertible to \tcode{T}. -@@ -6134,8 +6134,8 @@ of a container\iref{container.reqmts} and +@@ -6143,8 +6143,8 @@ of a container\iref{container.reqmts} and of a reversible container\iref{container.rev.reqmts}, except that a default constructed \tcode{array} object is not empty if $\tcode{N} > 0$. @@ -658,7 +622,7 @@ index d7032dfd..9c719111 100644 Descriptions are provided here only for operations on \tcode{array} that are not described in one of these tables and -@@ -6145,13 +6145,13 @@ for operations where there is additional semantic information. +@@ -6154,7 +6154,7 @@ for operations where there is additional semantic information. \tcode{array} is a structural type\iref{term.structural.type} if \tcode{T} is a structural type. Two values \tcode{a1} and \tcode{a2} of type \tcode{array} @@ -667,14 +631,7 @@ index d7032dfd..9c719111 100644 each pair of corresponding elements in \tcode{a1} and \tcode{a2} are template-argument-equivalent. - \pnum - The types \tcode{iterator} and \tcode{const_iterator} meet --the constexpr iterator requirements\iref{iterator.requirements.general}. -+the \deflinkx{constexpr iterator}{iterator!constexpr}{iterator.requirements.general} requirements. - - \indexlibraryglobal{array}% - \indexlibrarymember{array}{begin}% -@@ -6474,7 +6474,7 @@ namespace std { +@@ -6479,7 +6479,7 @@ namespace std { A \indexlibraryglobal{deque}% \tcode{deque} @@ -683,7 +640,7 @@ index d7032dfd..9c719111 100644 In addition, it supports constant time insert and erase operations at the beginning or the end; insert and erase in the middle take linear time. That is, a deque is especially optimized for pushing and popping elements at the beginning and end. -@@ -7138,7 +7138,7 @@ namespace std { +@@ -7144,7 +7144,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{forward_list} if the allocator meets the @@ -692,7 +649,7 @@ index d7032dfd..9c719111 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{forward_list} is referenced. -@@ -7722,7 +7722,7 @@ predicate. +@@ -7728,7 +7728,7 @@ predicate. \pnum \remarks @@ -701,7 +658,7 @@ index d7032dfd..9c719111 100644 \end{itemdescr} \indexlibrarymember{unique}{forward_list}% -@@ -7827,7 +7827,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( +@@ -7833,7 +7833,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( \pnum \remarks @@ -710,7 +667,7 @@ index d7032dfd..9c719111 100644 \end{itemdescr} \indexlibrarymember{reverse}{forward_list}% -@@ -9027,7 +9027,7 @@ A +@@ -9069,7 +9069,7 @@ A is a sequence container that supports bidirectional iterators and allows constant time insert and erase operations anywhere within the sequence, with storage management handled @@ -719,7 +676,7 @@ index d7032dfd..9c719111 100644 fast random access to list elements is not supported, but many algorithms only need sequential access anyway. -@@ -9203,7 +9203,7 @@ namespace std { +@@ -9245,7 +9245,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{list} if the allocator meets the @@ -728,7 +685,7 @@ index d7032dfd..9c719111 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{list} is referenced. -@@ -9616,7 +9616,7 @@ applications of the corresponding predicate. +@@ -9658,7 +9658,7 @@ applications of the corresponding predicate. \pnum \remarks @@ -737,7 +694,7 @@ index d7032dfd..9c719111 100644 \end{itemdescr} \indexlibrarymember{unique}{list}% -@@ -9739,7 +9739,7 @@ comparisons, where $N$ is \tcode{size()}. +@@ -9781,7 +9781,7 @@ comparisons, where $N$ is \tcode{size()}. \pnum \remarks @@ -746,7 +703,7 @@ index d7032dfd..9c719111 100644 \end{itemdescr} \rSec3[list.erasure]{Erasure} -@@ -9847,7 +9847,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, +@@ -9889,7 +9889,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, of a sequence container, including most of the optional sequence container requirements\iref{sequence.reqmts}, and, for an element type other than \tcode{bool}, @@ -755,7 +712,7 @@ index d7032dfd..9c719111 100644 The exceptions are the \tcode{push_front}, \tcode{prepend_range}, \tcode{pop_front}, and \tcode{emplace_front} member functions, which are not provided. Descriptions are provided here only for operations on \tcode{vector} -@@ -9985,7 +9985,7 @@ namespace std { +@@ -10027,7 +10027,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{vector} if the allocator meets the @@ -764,8 +721,8 @@ index d7032dfd..9c719111 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{vector} is referenced. -@@ -10578,7 +10578,7 @@ Unless described below, all operations have the same requirements and - semantics as the primary \tcode{vector} template, except that operations +@@ -10623,7 +10623,7 @@ Unless described below, all operations have the same requirements and + semantics as the \tcode{vector} primary template, except that operations dealing with the \tcode{bool} value type map to bit values in the container storage and -\tcode{allocator_traits::construct}\iref{allocator.traits.members} @@ -773,7 +730,7 @@ index d7032dfd..9c719111 100644 is not used to construct these values. \pnum -@@ -15653,9 +15653,9 @@ and +@@ -15761,9 +15761,9 @@ and can be used to instantiate \tcode{queue}. In particular, @@ -785,7 +742,7 @@ index d7032dfd..9c719111 100644 can be used. \begin{codeblock} -@@ -16010,15 +16010,15 @@ and +@@ -16118,15 +16118,15 @@ and can be used to instantiate \tcode{priority_queue}. In particular, @@ -804,7 +761,7 @@ index d7032dfd..9c719111 100644 \begin{codeblock} namespace std { -@@ -16563,10 +16563,10 @@ and +@@ -16674,10 +16674,10 @@ and can be used to instantiate \tcode{stack}. In particular, @@ -819,10 +776,10 @@ index d7032dfd..9c719111 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index 2e575bbb..1af3ee51 100644 +index 627360a2..cea5493a 100644 --- a/source/declarations.tex +++ b/source/declarations.tex -@@ -513,7 +513,7 @@ in explicit specializations and explicit instantiations, respectively. +@@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. \begin{note} A variable declared without a \grammarterm{storage-class-specifier} at block scope or declared as a function parameter @@ -831,7 +788,7 @@ index 2e575bbb..1af3ee51 100644 \end{note} \pnum -@@ -783,10 +783,10 @@ an alias template or a type template template parameter. +@@ -815,10 +815,10 @@ an alias template or a type template template parameter. A \grammarterm{simple-template-id} that names a class template specialization is a \grammarterm{class-name}\iref{class.name}. If a \grammarterm{typedef-name} is used to identify the subject of an @@ -846,7 +803,7 @@ index 2e575bbb..1af3ee51 100644 \end{note} \begin{example} \begin{codeblock} -@@ -1127,7 +1127,7 @@ If an inline function or variable that is attached to a named module +@@ -1151,7 +1151,7 @@ If an inline function or variable that is attached to a named module is declared in a definition domain, it shall be defined in that domain. \begin{note} @@ -855,7 +812,7 @@ index 2e575bbb..1af3ee51 100644 In the global module, a function defined within a class definition is implicitly inline\iref{class.mfct,class.friend}. \end{note} -@@ -1272,7 +1272,7 @@ the object referenced is a non-const object and can be modified through +@@ -1290,7 +1290,7 @@ the object referenced is a non-const object and can be modified through some other access path. \begin{note} Cv-qualifiers are supported by the type system so that they cannot be @@ -864,7 +821,7 @@ index 2e575bbb..1af3ee51 100644 \end{note} \pnum -@@ -1693,8 +1693,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; +@@ -1734,8 +1734,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; \item otherwise, \tcode{decltype($E$)} is the type of $E$. \end{itemize} @@ -874,7 +831,7 @@ index 2e575bbb..1af3ee51 100644 \begin{example} \begin{codeblock} -@@ -1890,7 +1889,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. +@@ -1934,7 +1933,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. If the \grammarterm{init-declarator-list} contains more than one \grammarterm{init-declarator}, they shall all form declarations of variables. The type of each declared variable is determined @@ -883,7 +840,7 @@ index 2e575bbb..1af3ee51 100644 and if the type that replaces the placeholder type is not the same in each deduction, the program is ill-formed. -@@ -2032,7 +2031,7 @@ A function declared with a return type that uses a placeholder type shall not +@@ -2076,7 +2075,7 @@ A function declared with a return type that uses a placeholder type shall not be a coroutine\iref{dcl.fct.def.coroutine}. \pnum @@ -892,16 +849,7 @@ index 2e575bbb..1af3ee51 100644 instantiation of an entity declared using a placeholder type, but it also does not prevent that entity from being instantiated as needed to determine its type. -@@ -2144,7 +2143,7 @@ Obtain \tcode{P} from - a new invented type template parameter \tcode{U} or, - if the initialization is copy-list-initialization, with - \tcode{std::initializer_list}. Deduce a value for \tcode{U} using the rules --of template argument deduction from a function call\iref{temp.deduct.call}, -+of \link{template argument deduction from a function call}{temp.deduct.call}, - where \tcode{P} is a - function template parameter type and - the corresponding argument is $E$. -@@ -2243,7 +2242,7 @@ in the \grammarterm{type-specifier-seq} +@@ -2291,7 +2290,7 @@ in the \grammarterm{type-specifier-seq} in the \grammarterm{new-type-id} or \grammarterm{type-id} of a \grammarterm{new-expression}\iref{expr.new}, as the \grammarterm{simple-type-specifier} @@ -910,7 +858,7 @@ index 2e575bbb..1af3ee51 100644 or as the \grammarterm{type-specifier} in the \grammarterm{parameter-declaration} of a \grammarterm{template-parameter}\iref{temp.param}. -@@ -4390,7 +4389,7 @@ int a; +@@ -4501,7 +4500,7 @@ int a; int f(int a, int b = a); // error: parameter \tcode{a} used as default argument typedef int I; int g(float I, int b = I(2)); // error: parameter \tcode{I} found @@ -918,8 +866,8 @@ index 2e575bbb..1af3ee51 100644 +int h(int a, int b = sizeof(a)); // OK, \deflink{unevaluated operand}{expr.context} \end{codeblock} \end{example} - A non-static member shall not appear in a default argument unless it appears as -@@ -6087,15 +6086,15 @@ This requires a conversion + A non-static member shall not be designated in a default argument unless +@@ -6226,15 +6225,15 @@ This requires a conversion function\iref{class.conv.fct} returning a reference type. \end{footnote} (this conversion is selected by enumerating the applicable conversion @@ -939,7 +887,7 @@ index 2e575bbb..1af3ee51 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7601,7 +7600,7 @@ the initializer is +@@ -7747,7 +7746,7 @@ the initializer is where \tcode{get} undergoes argument-dependent lookup\iref{basic.lookup.argdep}. In either case, \tcode{get} is interpreted as a \grammarterm{template-id}. \begin{note} @@ -948,7 +896,7 @@ index 2e575bbb..1af3ee51 100644 \end{note} In either case, \exposid{e} is an lvalue if the type of the entity \exposid{e} is an lvalue reference and an xvalue otherwise. -@@ -7752,7 +7751,7 @@ is not looked up and is introduced by +@@ -7898,7 +7897,7 @@ is not looked up and is introduced by the \grammarterm{enum-specifier} or \grammarterm{opaque-enum-declaration}. If the \grammarterm{enum-head-name} of an \grammarterm{opaque-enum-declaration} contains a \grammarterm{nested-name-specifier}, @@ -957,31 +905,7 @@ index 2e575bbb..1af3ee51 100644 \pnum \indextext{constant!enumeration}% -@@ -7834,8 +7833,9 @@ If the underlying type is fixed, the type of each enumerator - prior to the closing brace is the underlying - type - and the \grammarterm{constant-expression} in the \grammarterm{enumerator-definition} --shall be a converted constant expression of the underlying --type\iref{expr.const}. -+shall be a -+\deflinkx{converted constant expression}{expression!converted constant}{expr.const} -+of the underlying type. - If the underlying - type is not fixed, - the type of each enumerator prior to the closing brace is determined as -@@ -7844,8 +7844,9 @@ follows: - \begin{itemize} - \item If an - initializer is specified for an enumerator, the --\grammarterm{constant-expression} shall be an integral constant --expression\iref{expr.const}. If the expression has -+\grammarterm{constant-expression} shall be an -+\deflinkx{integral constant expression}{expression!integral constant}{expr.const}. -+If the expression has - unscoped enumeration type, the enumerator has the underlying type of that - enumeration type, otherwise it has the same type as the expression. - -@@ -7917,7 +7918,7 @@ if they have the same underlying type. +@@ -8063,7 +8062,7 @@ if they have the same underlying type. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -990,7 +914,7 @@ index 2e575bbb..1af3ee51 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8196,7 +8197,7 @@ appertains to the namespace being defined or extended. +@@ -8346,7 +8345,7 @@ appertains to the namespace being defined or extended. Members of an inline namespace can be used in most respects as though they were members of the innermost enclosing namespace. Specifically, the inline namespace and its enclosing namespace are both added to the set of associated namespaces used in @@ -999,7 +923,7 @@ index 2e575bbb..1af3ee51 100644 and a \grammarterm{using-directive}\iref{namespace.udir} that names the inline namespace is implicitly inserted into the enclosing namespace as for an unnamed namespace\iref{namespace.unnamed}. Furthermore, each -@@ -9000,7 +9001,7 @@ different language linkages are distinct types even if they are +@@ -9179,7 +9178,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -1008,14 +932,16 @@ index 2e575bbb..1af3ee51 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9317,16 +9318,16 @@ For each individual attribute, the form of the +@@ -9509,18 +9508,18 @@ For each individual attribute, the form of the \pnum In an \grammarterm{attribute-list}, an ellipsis may appear only if that \grammarterm{attribute}'s specification permits it. An \grammarterm{attribute} followed -by an ellipsis is a pack expansion\iref{temp.variadic}. +by an ellipsis is a \deflink{pack expansion}{temp.variadic}. - An \grammarterm{attribute-specifier} that contains no \grammarterm{attribute}{s} has no - effect. The order in which the \grammarterm{attribute-token}{s} appear in an + An \grammarterm{attribute-specifier} that contains + an \grammarterm{attribute-list} with no \grammarterm{attribute}s + has no effect. + The order in which the \grammarterm{attribute-token}{s} appear in an \grammarterm{attribute-list} is not significant. If a -keyword\iref{lex.key} -or an alternative token\iref{lex.digraph} that satisfies the syntactic requirements @@ -1030,7 +956,7 @@ index 2e575bbb..1af3ee51 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9433,7 +9434,7 @@ declaration, the program is ill-formed. +@@ -9638,7 +9637,7 @@ declaration, the program is ill-formed. \pnum An \grammarterm{alignment-specifier} of the form \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same @@ -1039,20 +965,20 @@ index 2e575bbb..1af3ee51 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9613,7 +9614,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9818,7 +9817,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} -may be applied to a null statement\iref{stmt.expr}; +may be applied to a \deflinkx{null statement}{statement!null}{stmt.expr}; - \indextext{statement!fallthrough} - such a statement is a fallthrough statement. + such a statement is a \defnadj{fallthrough}{statement}. No \grammarterm{attribute-argument-clause} shall be present. + A fallthrough statement may only appear within diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index 3c4b0c98..b4b70046 100644 +index d842475b..eee2454e 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex -@@ -505,13 +505,13 @@ the current state of \tcode{NDEBUG} each time that +@@ -508,13 +508,13 @@ the current state of \tcode{NDEBUG} each time that \pnum An expression \tcode{assert(E)} @@ -1068,7 +994,7 @@ index 3c4b0c98..b4b70046 100644 is a constant subexpression that evaluates to the value \tcode{true}. \end{itemize} -@@ -1526,7 +1526,7 @@ application program interfaces. +@@ -1529,7 +1529,7 @@ application program interfaces. \pnum \begin{note} If an error represents an out-of-memory condition, implementations are @@ -1078,7 +1004,7 @@ index 3c4b0c98..b4b70046 100644 \end{note} \indexlibraryglobal{system_error}% diff --git a/source/exceptions.tex b/source/exceptions.tex -index 79684e4c..12cfcb8d 100644 +index df3b639d..abd4aef1 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -184,7 +184,7 @@ try : i(f(ii)), d(id) { @@ -1141,10 +1067,10 @@ index 79684e4c..12cfcb8d 100644 \item% -a standard pointer conversion\iref{conv.ptr} not involving conversions +a standard \link{pointer conversion}{conv.ptr} not involving conversions - to pointers to private or protected or ambiguous classes + to pointers to private or protected or ambiguous classes, \item% --a function pointer conversion\iref{conv.fctptr} -+a \link{function pointer conversion}{conv.fctptr} +-a function pointer conversion\iref{conv.fctptr}, ++a \link{function pointer conversion}{conv.fctptr}, \item% -a qualification conversion\iref{conv.qual}, or +a \link{qualification conversion}{conv.qual}, or @@ -1160,7 +1086,7 @@ index 79684e4c..12cfcb8d 100644 Exceptions thrown in destructors of objects with thread storage duration or in constructors of objects associated with non-block variables with thread storage duration are not caught by a \grammarterm{function-try-block} on the initial function of the thread. -@@ -766,7 +766,7 @@ otherwise it has a +@@ -769,7 +769,7 @@ otherwise it has a The exception specification is either defined implicitly, or defined explicitly by using a \grammarterm{noexcept-specifier} @@ -1169,7 +1095,7 @@ index 79684e4c..12cfcb8d 100644 \begin{bnf} \nontermdef{noexcept-specifier}\br -@@ -806,7 +806,7 @@ in which cases the exception specification +@@ -809,7 +809,7 @@ in which cases the exception specification is as specified below and no other declaration for that function shall have a \grammarterm{noexcept-specifier}. @@ -1178,7 +1104,7 @@ index 79684e4c..12cfcb8d 100644 a \grammarterm{noexcept-specifier} may be specified, but is not required. If a \grammarterm{noexcept-specifier} is specified -@@ -855,7 +855,7 @@ An expression $E$ is +@@ -858,7 +858,7 @@ An expression $E$ is \defnx{potentially-throwing}{potentially-throwing!expression} if \begin{itemize} \item @@ -1187,16 +1113,7 @@ index 79684e4c..12cfcb8d 100644 whose \grammarterm{postfix-expression} has a function type, or a pointer-to-function type, -@@ -883,7 +883,7 @@ applied to a pointer to a - polymorphic class type\iref{expr.typeid}, - or - \item --any of the immediate subexpressions\iref{intro.execution} -+any of the \deflinkx{immediate subexpressions}{immediate subexpression}{intro.execution} - of $E$ is potentially-throwing. - \end{itemize} - -@@ -936,7 +936,7 @@ the invocation of any assignment operator +@@ -939,7 +939,7 @@ the invocation of any assignment operator in the implicit definition is potentially-throwing. \pnum @@ -1205,7 +1122,7 @@ index 79684e4c..12cfcb8d 100644 with no explicit \grammarterm{noexcept-specifier} has a non-throwing exception specification. -@@ -1051,9 +1051,9 @@ via an exception, or +@@ -1053,9 +1053,9 @@ via an exception, or \item% when the exception handling mechanism cannot find a handler for a thrown exception\iref{except.handle}, or @@ -1217,7 +1134,7 @@ index 79684e4c..12cfcb8d 100644 including when a contract-violation handler invoked from an evaluation of a function contract assertion\iref{basic.contract.eval} associated with the function -@@ -1061,7 +1061,7 @@ exits via an exception, +@@ -1063,7 +1063,7 @@ exits via an exception, or \item% @@ -1227,7 +1144,7 @@ index 79684e4c..12cfcb8d 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index c6ff9d4a..13e2526b 100644 +index 0ea2a413..24af225d 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1249,7 +1166,7 @@ index c6ff9d4a..13e2526b 100644 \end{note} \pnum -@@ -212,7 +212,7 @@ xvalues; rvalue references to functions are treated as lvalues whether named or +@@ -216,7 +216,7 @@ xvalues; rvalue references to functions are treated as lvalues whether named or \begin{example} \begin{codeblock} struct A { @@ -1258,7 +1175,7 @@ index c6ff9d4a..13e2526b 100644 }; A&& operator+(A, A); A&& f(); -@@ -268,7 +268,7 @@ Unless otherwise specified\iref{expr.reinterpret.cast, expr.const.cast}, +@@ -272,7 +272,7 @@ Unless otherwise specified\iref{expr.reinterpret.cast, expr.const.cast}, whenever a prvalue that is not the result of the lvalue-to-rvalue conversion\iref{conv.lval} appears as an operand of an operator, @@ -1267,7 +1184,7 @@ index c6ff9d4a..13e2526b 100644 applied to convert the expression to an xvalue. \pnum -@@ -450,31 +450,31 @@ An unevaluated operand is not evaluated. +@@ -455,31 +455,31 @@ An unevaluated operand is not evaluated. In an unevaluated operand, a non-static class member can be named\iref{expr.prim.id} and naming of objects or functions does not, by itself, require that a definition be provided\iref{basic.def.odr}. @@ -1293,26 +1210,24 @@ index c6ff9d4a..13e2526b 100644 - \grammarterm{expression} is one of these expressions, +\grammarterm{expression} is one of these expressions, \item \grammarterm{id-expression}\iref{expr.prim.id}, + \item \grammarterm{splice-expression}\iref{expr.prim.splice}, -\item subscripting\iref{expr.sub}, -\item class member access\iref{expr.ref}, -\item indirection\iref{expr.unary.op}, -\item pointer-to-member operation\iref{expr.mptr.oper}, -\item conditional expression\iref{expr.cond} where both the second and the -- third operands are one of these expressions, or --\item comma expression\iref{expr.comma} where the right operand is one of -- these expressions. +\item \link{subscripting}{expr.sub}, +\item \link{class member access}{expr.ref}, +\item \deflink{indirection}{expr.unary.op}, +\item \link{pointer-to-member operation}{expr.mptr.oper}, +\item \link{conditional expression}{expr.cond} where both the second and the -+ third operands are one of these expressions, or + third operands are one of these expressions, or +-\item comma expression\iref{expr.comma} where the right operand is one of +\item \link{comma expression}{expr.comma} where the right operand is one of -+ these expressions. + these expressions. \end{itemize} - \begin{note} -@@ -612,7 +612,7 @@ descriptions of those operators and contexts. +@@ -618,7 +618,7 @@ descriptions of those operators and contexts. \pnum \indextext{conversion!lvalue-to-rvalue}% \indextext{type!incomplete}% @@ -1321,7 +1236,7 @@ index c6ff9d4a..13e2526b 100644 can be converted to a prvalue. \begin{footnote} -@@ -637,18 +637,18 @@ is applied to an expression $E$, and either +@@ -643,18 +643,18 @@ is applied to an expression $E$, and either \begin{itemize} \item $E$ is not potentially evaluated, or \item the evaluation of $E$ results in the evaluation of a member @@ -1346,7 +1261,7 @@ index c6ff9d4a..13e2526b 100644 } auto g = f(); int m = g(false); // undefined behavior: access of \tcode{x.n} outside its lifetime -@@ -820,11 +820,11 @@ allowed), a program could inadvertently modify a const object +@@ -826,11 +826,11 @@ allowed), a program could inadvertently modify a const object (as it is done on line \#2). For example, \begin{codeblock} int main() { @@ -1363,7 +1278,7 @@ index c6ff9d4a..13e2526b 100644 } \end{codeblock} \end{note} -@@ -1081,7 +1081,7 @@ the derived class object. +@@ -1088,7 +1088,7 @@ the derived class object. \indextext{conversion!pointer-to-member}% \indextext{null member pointer conversion|see{conversion, null member pointer}}% \indextext{constant!null pointer}% @@ -1372,7 +1287,7 @@ index c6ff9d4a..13e2526b 100644 pointer-to-member type; the result is the \defnx{null member pointer value}{value!null member pointer} of that type and is distinguishable from any pointer to member not -@@ -1309,7 +1309,7 @@ occur until the complete declarator is known. +@@ -1317,7 +1317,7 @@ occur until the complete declarator is known. \begin{note} In a \grammarterm{trailing-return-type}, the class being defined is not required to be complete @@ -1381,7 +1296,7 @@ index c6ff9d4a..13e2526b 100644 Class members declared later are not visible. \begin{example} \begin{codeblock} -@@ -1377,8 +1377,8 @@ meaning, except as otherwise indicated. +@@ -1384,8 +1384,8 @@ meaning, except as otherwise indicated. An \grammarterm{id-expression} is a restricted form of a \grammarterm{primary-expression}. \begin{note} @@ -1392,7 +1307,7 @@ index c6ff9d4a..13e2526b 100644 \end{note} \pnum -@@ -1501,7 +1501,7 @@ In each case, the constraints of \tcode{f} are not satisfied. +@@ -1518,7 +1518,7 @@ In each case, the constraints of \tcode{f} are not satisfied. In the declaration of \tcode{p2}, those constraints need to be satisfied even though @@ -1401,7 +1316,7 @@ index c6ff9d4a..13e2526b 100644 \end{example} \end{note} -@@ -2056,8 +2056,8 @@ void abssort(float* x, unsigned N) { +@@ -2140,8 +2140,8 @@ void abssort(float* x, unsigned N) { A \grammarterm{lambda-expression} is a prvalue whose result object is called the \defn{closure object}. \begin{note} @@ -1412,7 +1327,7 @@ index c6ff9d4a..13e2526b 100644 \end{note} \pnum -@@ -2386,7 +2386,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no +@@ -2475,7 +2475,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no and no explicit object parameter\iref{dcl.fct} whose constraints (if any) are satisfied has a conversion function to pointer to @@ -1421,7 +1336,7 @@ index c6ff9d4a..13e2526b 100644 the same parameter and return types as the closure type's function call operator. The conversion is to ``pointer to \keyword{noexcept} function'' if the function call operator -@@ -2495,8 +2495,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} +@@ -2584,8 +2584,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} \pnum The conversion function or conversion function template is public, @@ -1432,7 +1347,7 @@ index c6ff9d4a..13e2526b 100644 \begin{example} \begin{codeblock} auto Fwd = [](int (*fp)(int), auto a) { return fp(a); }; -@@ -2552,9 +2552,9 @@ implicitly-declared destructor\iref{class.dtor}. +@@ -2643,9 +2643,9 @@ implicitly-declared destructor\iref{class.dtor}. \pnum A member of a closure type shall not be @@ -1445,7 +1360,7 @@ index c6ff9d4a..13e2526b 100644 \rSec3[expr.prim.lambda.capture]{Captures}% -@@ -3122,7 +3122,7 @@ A fold expression is a pack expansion. +@@ -3215,7 +3215,7 @@ A fold expression is a pack expansion. \pnum A \grammarterm{requires-expression} provides a concise way to express requirements on template arguments @@ -1454,7 +1369,7 @@ index c6ff9d4a..13e2526b 100644 or by checking properties of types and expressions. \begin{bnf} -@@ -3551,7 +3551,7 @@ or a prvalue of function pointer type. +@@ -3813,7 +3813,7 @@ or a prvalue of function pointer type. If the selected function is non-virtual, or if the \grammarterm{id-expression} in the class member access expression is a \grammarterm{qualified-id}, that function is @@ -1463,18 +1378,18 @@ index c6ff9d4a..13e2526b 100644 of the object expression is called; such a call is referred to as a \defnx{virtual function call}{function!virtual function call}. \begin{note} -@@ -3564,8 +3564,8 @@ an object under construction or destruction. +@@ -3826,8 +3826,8 @@ an object under construction or destruction. \pnum \begin{note} --If a function or member function name is used, and name +-If a function name is used, and name -lookup\iref{basic.lookup} does not find a declaration of that name, -+If a function or member function name is used, and \link{name ++If a function name is used, and \link{name +lookup}{basic.lookup} does not find a declaration of that name, the program is ill-formed. No function is implicitly declared by such a call. \end{note} -@@ -3632,7 +3632,7 @@ function, +@@ -3894,7 +3894,7 @@ function, the object expression of the class member access shall be a glvalue and the implicit object parameter of the function\iref{over.match.funcs} is initialized with that glvalue, @@ -1483,7 +1398,7 @@ index c6ff9d4a..13e2526b 100644 \begin{note} There is no access or ambiguity checking on this conversion; the access checking and disambiguation are done as part of the (possibly implicit) -@@ -3769,10 +3769,10 @@ pointer parameters. +@@ -4031,10 +4031,10 @@ pointer parameters. \pnum \indextext{declaration!ellipsis in function}% \indextext{parameter list!variable}% @@ -1497,7 +1412,7 @@ index c6ff9d4a..13e2526b 100644 \begin{note} This implies that, except where the ellipsis (\tcode{...}) or a function parameter pack is used, a parameter is available for each argument. -@@ -3790,8 +3790,8 @@ thus each such argument has a corresponding parameter when a function template +@@ -4052,8 +4052,8 @@ thus each such argument has a corresponding parameter when a function template specialization is actually called. \end{note} The @@ -1508,7 +1423,7 @@ index c6ff9d4a..13e2526b 100644 performed on the argument expression. An argument that has type \cv{}~\tcode{std::nullptr_t} is converted to type \tcode{\keyword{void}*}\iref{conv.ptr}. -@@ -3806,16 +3806,16 @@ an eligible non-trivial move constructor, or +@@ -4068,16 +4068,16 @@ an eligible non-trivial move constructor, or a non-trivial destructor\iref{class.dtor}, with no corresponding parameter, is conditionally-supported with \impldef{passing argument of class type through ellipsis} semantics. If the argument has @@ -1530,7 +1445,7 @@ index c6ff9d4a..13e2526b 100644 \pnum A function call is an lvalue -@@ -3834,8 +3834,8 @@ except as specified in \ref{dcl.type.decltype}. +@@ -4096,8 +4096,8 @@ except as specified in \ref{dcl.type.decltype}. \indextext{type conversion, explicit|see{casting}}% \indextext{conversion explicit type|see{casting}}% \indextext{casting}% @@ -1541,7 +1456,7 @@ index c6ff9d4a..13e2526b 100644 by a parenthesized optional \grammarterm{expression-list} or by a \grammarterm{braced-init-list} (the initializer) -@@ -3846,7 +3846,7 @@ If the type is a placeholder +@@ -4108,7 +4108,7 @@ If the type is a placeholder for a deduced class type, it is replaced by the return type of the function selected by overload resolution @@ -1550,7 +1465,7 @@ index c6ff9d4a..13e2526b 100644 for the remainder of this subclause. Otherwise, if the type contains a placeholder type, it is replaced by the type -@@ -4183,8 +4183,8 @@ void foo(D* dp) { +@@ -4507,8 +4507,8 @@ void foo(D* dp) { \end{example} \pnum @@ -1561,7 +1476,7 @@ index c6ff9d4a..13e2526b 100644 \pnum If \tcode{v} is a null pointer value, the result is a null pointer value. -@@ -4235,9 +4235,9 @@ runtime check \term{fails}. +@@ -4559,9 +4559,9 @@ runtime check \term{fails}. \pnum The value of a failed cast to pointer type is the null pointer value of @@ -1574,7 +1489,7 @@ index c6ff9d4a..13e2526b 100644 \indextext{\idxcode{bad_cast}}% \indexlibraryglobal{bad_cast}% -@@ -4326,13 +4326,13 @@ glvalue refers. +@@ -4650,13 +4650,13 @@ glvalue refers. When \keyword{typeid} is applied to an expression other than a glvalue of a polymorphic class type, the result refers to a \tcode{std::type_info} object representing the static type of the expression. @@ -1592,7 +1507,7 @@ index c6ff9d4a..13e2526b 100644 \pnum When \keyword{typeid} is applied to a \grammarterm{type-id}, the result -@@ -4427,7 +4427,7 @@ of type \tcode{T1} can be cast to type ``rvalue +@@ -4750,7 +4750,7 @@ of type \tcode{T1} can be cast to type ``rvalue reference to \tcode{T2}'' if \tcode{T2} is reference-compatible with \tcode{T1}\iref{dcl.init.ref}. If the value is not a bit-field, the result refers to the object or the specified base class subobject @@ -1601,7 +1516,7 @@ index c6ff9d4a..13e2526b 100644 is applied to the bit-field and the resulting prvalue is used as the operand of the \keyword{static_cast} for the remainder of this subclause. If \tcode{T2} is an inaccessible\iref{class.access} or -@@ -4557,7 +4557,8 @@ Otherwise, the behavior is undefined. +@@ -4855,7 +4855,8 @@ Otherwise, the behavior is undefined. A prvalue of type ``pointer to \cvqual{cv1} \tcode{B}'', where \tcode{B} is a class type, can be converted to a prvalue of type ``pointer to \cvqual{cv2} \tcode{D}'', @@ -1611,7 +1526,7 @@ index c6ff9d4a..13e2526b 100644 from \tcode{B}, if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. -@@ -4578,7 +4579,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} +@@ -4876,7 +4877,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} \tcode{T}'' can be converted to a prvalue of type ``pointer to member of \tcode{B} of type \cvqual{cv2} \tcode{T}'', where \tcode{D} is a complete class type and @@ -1620,7 +1535,7 @@ index c6ff9d4a..13e2526b 100644 if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. \begin{note} -@@ -4589,7 +4590,7 @@ If no valid standard conversion +@@ -4887,7 +4888,7 @@ If no valid standard conversion from ``pointer to member of \tcode{B} of type \tcode{T}'' to ``pointer to member of \tcode{D} of type \tcode{T}'' exists\iref{conv.mem}, the program is ill-formed. @@ -1629,7 +1544,7 @@ index c6ff9d4a..13e2526b 100644 member pointer value of the destination type. If class \tcode{B} contains the original member, or is a base class of the class containing the original member, the resulting pointer to member points -@@ -4612,7 +4613,7 @@ If the original pointer value represents the address +@@ -4910,7 +4911,7 @@ If the original pointer value represents the address then the resulting pointer value\iref{basic.compound} is unspecified. Otherwise, if the original pointer value points to an object \placeholder{a}, and there is an object \placeholder{b} of type similar to \tcode{T} @@ -1638,7 +1553,7 @@ index c6ff9d4a..13e2526b 100644 the result is a pointer to \placeholder{b}. Otherwise, the pointer value is unchanged by the conversion. \begin{example} -@@ -4638,8 +4639,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. +@@ -4933,8 +4934,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. If \tcode{T} is an lvalue reference type or an rvalue reference to function type, the result is an lvalue; if \tcode{T} is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the @@ -1649,7 +1564,7 @@ index c6ff9d4a..13e2526b 100644 performed on the expression \tcode{v}. Conversions that can be performed explicitly using \keyword{reinterpret_cast} are listed below. No other conversion can be performed explicitly using \keyword{reinterpret_cast}. -@@ -4808,10 +4809,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type +@@ -5099,10 +5100,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type lvalue; if \tcode{T} is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the @@ -1663,7 +1578,7 @@ index c6ff9d4a..13e2526b 100644 performed on \tcode{v}, other than as specified below. Conversions that can be performed explicitly using \keyword{const_cast} are listed below. No other conversion shall be -@@ -5348,7 +5349,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside +@@ -5655,7 +5656,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside The \keyword{sizeof} operator yields the number of bytes occupied by a non-potentially-overlapping object of the type of its operand. The operand is either an expression, @@ -1672,7 +1587,7 @@ index c6ff9d4a..13e2526b 100644 \grammarterm{type-id}. \indextext{type!incomplete}% The \keyword{sizeof} operator shall not be applied to an expression that -@@ -5403,7 +5404,7 @@ array-to-pointer\iref{conv.array}, and +@@ -5712,7 +5713,7 @@ array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} standard conversions are not applied to the operand of \keyword{sizeof}. If the operand is a prvalue, @@ -1681,7 +1596,7 @@ index c6ff9d4a..13e2526b 100644 is applied. \pnum -@@ -5548,7 +5549,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. +@@ -5857,7 +5858,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. \end{bnf} \pnum @@ -1690,7 +1605,7 @@ index c6ff9d4a..13e2526b 100644 a placeholder for a deduced class type\iref{dcl.type.class.deduct} appears in the \grammarterm{type-specifier-seq} of a \grammarterm{new-type-id} or -@@ -5676,7 +5677,7 @@ is less than zero; +@@ -5985,7 +5986,7 @@ is less than zero; \item its value is such that the size of the allocated object would exceed the @@ -1698,8 +1613,8 @@ index c6ff9d4a..13e2526b 100644 +\impldef{maximum size of an allocated object} \link{limit}{implimits}; or \item - the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} and the -@@ -5701,7 +5702,7 @@ is the null pointer value of the required result type; + the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} +@@ -6011,7 +6012,7 @@ is the null pointer value of the required result type; \item otherwise, the \grammarterm{new-expression} terminates by throwing an exception of a type that would match a handler\iref{except.handle} of type @@ -1708,7 +1623,7 @@ index c6ff9d4a..13e2526b 100644 \end{itemize} \end{itemize} When the value of the \grammarterm{expression} is zero, the allocation -@@ -5752,8 +5753,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( +@@ -6069,8 +6070,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( A \grammarterm{new-expression} may obtain storage for the object by calling an allocation function\iref{basic.stc.dynamic.allocation}. If the \grammarterm{new-expression} terminates by throwing an exception, it @@ -1719,7 +1634,7 @@ index c6ff9d4a..13e2526b 100644 is a non-array type, the allocation function's name is \indextext{\idxcode{operator new}}% \indextext{\idxcode{operator delete}}% -@@ -5864,7 +5865,7 @@ the difference between the +@@ -6181,7 +6182,7 @@ the difference between the result of the \grammarterm{new-expression} and the address returned by the allocation function shall be an integral multiple of the strictest fundamental @@ -1728,7 +1643,7 @@ index c6ff9d4a..13e2526b 100644 is no greater than the size of the array being created. \begin{note} \indextext{allocation!alignment storage}% -@@ -5955,7 +5956,7 @@ invocation of \keyword{new} to another. +@@ -6272,7 +6273,7 @@ invocation of \keyword{new} to another. \pnum \begin{note} Unless an allocation function has a non-throwing @@ -1737,7 +1652,7 @@ index c6ff9d4a..13e2526b 100644 it indicates failure to allocate storage by throwing a \indextext{\idxcode{bad_alloc}}% \indexlibraryglobal{bad_alloc}% -@@ -6101,8 +6102,8 @@ to both the allocation and deallocation functions. +@@ -6488,8 +6489,8 @@ to both the allocation and deallocation functions. \pnum \indextext{expression!\idxcode{delete}}% \indextext{\idxcode{delete}}% @@ -1748,7 +1663,7 @@ index c6ff9d4a..13e2526b 100644 \grammarterm{new-expression}. \begin{bnf} -@@ -6205,8 +6206,8 @@ null pointer value, then: +@@ -6592,8 +6593,8 @@ null pointer value, then: \item If the allocation call for the \grammarterm{new-expression} for the object to be deleted was not omitted and the allocation was not extended\iref{expr.new}, the @@ -1759,7 +1674,7 @@ index c6ff9d4a..13e2526b 100644 allocation call of the \grammarterm{new-expression} shall be passed as the first argument to the deallocation function. -@@ -6565,8 +6566,8 @@ The result of a \tcode{.*} expression +@@ -7178,8 +7179,8 @@ The result of a \tcode{.*} expression whose second operand is a pointer to a data member is an lvalue if the first operand is an lvalue and an xvalue otherwise. The result of a \tcode{.*} expression whose second operand is a pointer to a member function is a prvalue. @@ -1770,7 +1685,7 @@ index c6ff9d4a..13e2526b 100644 \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -6595,7 +6596,7 @@ left-to-right. +@@ -7208,7 +7209,7 @@ left-to-right. \pnum The operands of \tcode{*} and \tcode{/} shall have arithmetic or unscoped enumeration type; the operands of \tcode{\%} shall have integral or unscoped @@ -1779,7 +1694,7 @@ index c6ff9d4a..13e2526b 100644 operands and determine the type of the result. \pnum -@@ -6731,7 +6732,7 @@ the behavior is undefined\iref{expr.pre}. +@@ -7339,7 +7340,7 @@ the behavior is undefined\iref{expr.pre}. \pnum For addition or subtraction, if the expressions \tcode{P} or \tcode{Q} have type ``pointer to \cv{}~\tcode{T}'', where \tcode{T} and the array element type @@ -1788,7 +1703,7 @@ index c6ff9d4a..13e2526b 100644 \begin{example} \begin{codeblock} int arr[5] = {1, 2, 3, 4, 5}; -@@ -6822,12 +6823,12 @@ and the other is not, the program is ill-formed. +@@ -7430,12 +7431,12 @@ and the other is not, the program is ill-formed. If both operands have arithmetic types, or one operand has integral type and the other operand has unscoped enumeration type, @@ -1803,7 +1718,7 @@ index c6ff9d4a..13e2526b 100644 other than from an integral type to a floating-point type, the program is ill-formed. -@@ -6869,13 +6870,13 @@ the other operand is of object pointer or array type, +@@ -7477,13 +7478,13 @@ the other operand is of object pointer or array type, array-to-pointer conversions\iref{conv.array}, pointer conversions\iref{conv.ptr}, and @@ -1819,7 +1734,7 @@ index c6ff9d4a..13e2526b 100644 \end{note} In this case, \tcode{p <=> q} is of type \tcode{std::strong_ordering} and -@@ -6964,7 +6965,7 @@ pointer conversions\iref{conv.ptr}, +@@ -7572,7 +7573,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring @@ -1828,7 +1743,7 @@ index c6ff9d4a..13e2526b 100644 After conversions, the operands shall have the same type. \pnum -@@ -7049,10 +7050,10 @@ same type after the specified conversions have been applied. +@@ -7657,10 +7658,10 @@ same type after the specified conversions have been applied. \indextext{comparison!pointer}% \indextext{comparison!pointer to function}% If at least one of the converted operands is a pointer, @@ -1843,7 +1758,7 @@ index c6ff9d4a..13e2526b 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -7069,7 +7070,8 @@ the result of the comparison is unspecified. +@@ -7677,7 +7678,8 @@ the result of the comparison is unspecified. \item Otherwise, if the pointers are both null, both point to the same \indextext{address}% @@ -1853,7 +1768,7 @@ index c6ff9d4a..13e2526b 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -7114,12 +7116,12 @@ bool b1 = (bx == cx); // unspecified +@@ -7722,12 +7724,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -1868,7 +1783,7 @@ index c6ff9d4a..13e2526b 100644 indirection with a hypothetical object of the associated class type were performed, otherwise they compare unequal. \begin{example} -@@ -7345,7 +7347,7 @@ Otherwise, if the second and third operand have different types and +@@ -7967,7 +7969,7 @@ Otherwise, if the second and third operand have different types and either has (possibly cv-qualified) class type, or if both are glvalues of the same value category and the same type except for cv-qualification, an attempt is made to @@ -1877,7 +1792,7 @@ index c6ff9d4a..13e2526b 100644 each of those operands to the type of the other. \begin{note} Properties such as access, whether an operand is a bit-field, or whether -@@ -7387,9 +7389,9 @@ denotes the cv-qualifiers of \tcode{T1}; +@@ -8009,9 +8011,9 @@ denotes the cv-qualifiers of \tcode{T1}; \item otherwise, the target type is the type that \tcode{E2} would have after applying the @@ -1890,7 +1805,7 @@ index c6ff9d4a..13e2526b 100644 standard conversions. \end{itemize} \end{itemize} -@@ -7430,8 +7432,8 @@ are used in place of the original operands for the remainder of this +@@ -8052,8 +8054,8 @@ are used in place of the original operands for the remainder of this subclause. \pnum @@ -1901,7 +1816,7 @@ index c6ff9d4a..13e2526b 100644 performed on the second and third operands. After those conversions, one of the following shall hold: -@@ -7440,16 +7442,16 @@ of the following shall hold: +@@ -8062,16 +8064,16 @@ of the following shall hold: that type and the result is copy-initialized using the selected operand. \item The second and third operands have arithmetic or enumeration type; @@ -1924,7 +1839,7 @@ index c6ff9d4a..13e2526b 100644 pointer type. \item One or both of the second and third operands have pointer-to-member type; -@@ -7633,7 +7635,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. +@@ -8255,7 +8257,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. \pnum \indextext{assignment!conversion by}% If the right operand is an expression, it is implicitly @@ -1933,7 +1848,7 @@ index c6ff9d4a..13e2526b 100644 operand. \pnum -@@ -7647,7 +7649,7 @@ resulting value of the bit-field is +@@ -8269,7 +8271,7 @@ resulting value of the bit-field is An assignment whose left operand is of a volatile-qualified type is deprecated\iref{depr.volatile.type} unless the (possibly parenthesized) assignment is a discarded-value expression or @@ -1942,7 +1857,7 @@ index c6ff9d4a..13e2526b 100644 \pnum The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} -@@ -7719,7 +7721,7 @@ The comma operator groups left-to-right. +@@ -8341,7 +8343,7 @@ The comma operator groups left-to-right. A pair of expressions separated by a comma is evaluated left-to-right; the left expression is @@ -1951,28 +1866,7 @@ index c6ff9d4a..13e2526b 100644 The left expression is sequenced before the right expression\iref{intro.execution}. \indextext{operator!side effects and comma}% -@@ -7753,7 +7755,7 @@ Certain contexts require expressions that satisfy additional - requirements as detailed in this subclause; other contexts have different - semantics depending on whether or not an expression satisfies these requirements. - Expressions that satisfy these requirements, --assuming that copy elision\iref{class.copy.elision} is not performed, -+assuming that \link{copy elision}{class.copy.elision} is not performed, - are called - \indexdefn{expression!constant}% - \defnx{constant expressions}{constant expression}. -@@ -7936,9 +7938,9 @@ a temporary object of non-volatile const-qualified literal type - whose lifetime is extended\iref{class.temporary} - to that of a variable that is usable in constant expressions at $P$, - \item --a template parameter object\iref{temp.param}, -+a \link{template parameter}{temp.param} object, - \item --a string literal object\iref{lex.string}, -+a \link{string literal}{lex.string} object, - \item - a non-mutable subobject of any of the above, or - \item -@@ -8029,7 +8031,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. +@@ -8492,7 +8494,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -1981,7 +1875,7 @@ index c6ff9d4a..13e2526b 100644 it is applied to \begin{itemize} \item -@@ -8051,7 +8053,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -8514,7 +8516,7 @@ that refers to a non-active member of a union or a subobject thereof; \item an lvalue-to-rvalue conversion that is applied to @@ -1990,7 +1884,7 @@ index c6ff9d4a..13e2526b 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -8418,7 +8420,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -8992,7 +8994,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte Such expressions can be used as bit-field lengths\iref{class.bit}, as enumerator initializers if the underlying type is not fixed\iref{dcl.enum}, @@ -1999,16 +1893,7 @@ index c6ff9d4a..13e2526b 100644 \end{note} \pnum -@@ -8739,7 +8741,7 @@ if it is: - a manifestly constant-evaluated expression, - - \item --a potentially-evaluated expression\iref{basic.def.odr}, -+a \deflinkx{potentially-evaluated}{potentially evaluated}{basic.def.odr} expression, - - \item - an immediate subexpression of a \grammarterm{braced-init-list}, -@@ -8766,7 +8768,9 @@ A function or variable is +@@ -9680,7 +9682,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -2020,7 +1905,7 @@ index c6ff9d4a..13e2526b 100644 \item diff --git a/source/future.tex b/source/future.tex -index 50edea0b..49c04f21 100644 +index 72dbeabb..dc26444a 100644 --- a/source/future.tex +++ b/source/future.tex @@ -14,7 +14,7 @@ is defined as: @@ -2047,7 +1932,7 @@ index 50edea0b..49c04f21 100644 as defaulted is deprecated if the class has a user-declared copy constructor or a user-declared destructor. -@@ -528,7 +528,7 @@ template struct tuple_size; +@@ -543,7 +543,7 @@ template struct tuple_size; \pnum Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. If the expression \tcode{TS::value} is well-formed @@ -2057,10 +1942,10 @@ index 50edea0b..49c04f21 100644 the \oldconcept{TransformationTrait} requirements with a base characteristic of \tcode{integral_constant}. diff --git a/source/intro.tex b/source/intro.tex -index e0ded4cf..736966eb 100644 +index 3e24d06d..b5e513df 100644 --- a/source/intro.tex +++ b/source/intro.tex -@@ -94,8 +94,8 @@ Reads of scalar objects are described in \ref{conv.lval} and +@@ -97,8 +97,8 @@ Reads of scalar objects are described in \ref{conv.lval} and modifications of scalar objects are described in \ref{expr.assign}, \ref{expr.post.incr}, and \ref{expr.pre.incr}. Attempts to read or modify an object of class type @@ -2071,21 +1956,24 @@ index e0ded4cf..736966eb 100644 such invocations do not themselves constitute accesses, although they may involve accesses of scalar subobjects. \end{defnote} -@@ -243,11 +243,11 @@ implementation's output messages +@@ -246,11 +246,12 @@ implementation's output messages glvalue refers \begin{example} -If a pointer\iref{dcl.ptr} \tcode{p} whose type is ``pointer to +If a \link{pointer}{dcl.ptr} \tcode{p} whose type is ``pointer to class \tcode{B}'' is pointing to a base class subobject - of class \tcode{B}, whose most derived object is of class \tcode{D}, derived - from \tcode{B}\iref{class.derived}, the dynamic type of the +-of class \tcode{B}, whose most derived object is of class \tcode{D}, derived +-from \tcode{B}\iref{class.derived}, the dynamic type of the -expression \tcode{*p} is ``\tcode{D}''. References\iref{dcl.ref} are ++of class \tcode{B}, whose most derived object is of class \tcode{D}, ++\link{derived}{class.derived} ++from \tcode{B}, the dynamic type of the +expression \tcode{*p} is ``\tcode{D}''. \link{References}{dcl.ref} are treated similarly. \end{example} -@@ -315,7 +315,7 @@ handler functions (see \ref{support}). +@@ -318,7 +319,7 @@ handler functions (see \ref{support}). \indexdefn{program!ill-formed}% \definition{ill-formed program}{defns.ill.formed} @@ -2094,7 +1982,7 @@ index e0ded4cf..736966eb 100644 \indexdefn{behavior!implementation-defined}% \definition{implementation-defined behavior}{defns.impl.defined} -@@ -811,7 +811,7 @@ resulting in a contract violation. +@@ -819,7 +820,7 @@ resulting in a contract violation. \indextext{conformance requirements!classes}% \indextext{conformance requirements!class templates}% For classes and class templates, the library Clauses specify partial @@ -2103,7 +1991,7 @@ index e0ded4cf..736966eb 100644 specified, but each implementation shall supply them to complete the definitions according to the description in the library Clauses. -@@ -828,7 +828,7 @@ the appropriate standard library named header unit\iref{using.headers}. +@@ -836,7 +837,7 @@ the appropriate standard library named header unit\iref{using.headers}. \pnum The templates, classes, functions, and objects in the library have @@ -2113,10 +2001,10 @@ index e0ded4cf..736966eb 100644 translation units to form a complete \Cpp{} program\iref{lex.phases}.% \indextext{conformance requirements!library|)} diff --git a/source/iostreams.tex b/source/iostreams.tex -index 3f925b2b..f89a4754 100644 +index 615ea941..ad9e3afe 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -561,7 +561,7 @@ is initialized, +@@ -558,7 +558,7 @@ is initialized, returns \tcode{\&cout}. Its state is otherwise the same as required for @@ -2125,7 +2013,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \indexlibraryglobal{cout}% -@@ -594,7 +594,7 @@ is initialized, +@@ -591,7 +591,7 @@ is initialized, \tcode{cerr.flags() \& unitbuf} is nonzero and \tcode{cerr.tie()} returns \tcode{\&cout}. Its state is otherwise the same as required for @@ -2134,7 +2022,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \indexlibraryglobal{clog}% -@@ -631,7 +631,7 @@ is initialized, +@@ -628,7 +628,7 @@ is initialized, returns \tcode{\&wcout}. Its state is otherwise the same as required for @@ -2143,7 +2031,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \indexlibraryglobal{wcout}% -@@ -664,7 +664,7 @@ is initialized, +@@ -661,7 +661,7 @@ is initialized, \tcode{wcerr.flags() \& unitbuf} is nonzero and \tcode{wcerr.tie()} returns \tcode{\&wcout}. Its state is otherwise the same as required for @@ -2152,7 +2040,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \indexlibraryglobal{wclog}% -@@ -1384,7 +1384,7 @@ operate independently of the standard C streams. +@@ -1381,7 +1381,7 @@ operate independently of the standard C streams. \pnum \returns \tcode{true} @@ -2161,7 +2049,7 @@ index 3f925b2b..f89a4754 100644 was synchronized and otherwise returns \tcode{false}. The first time it is called, -@@ -1443,8 +1443,8 @@ static int xalloc(); +@@ -1440,8 +1440,8 @@ static int xalloc(); \pnum \remarks @@ -2172,7 +2060,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \indexlibrarymember{iword}{ios_base}% -@@ -2031,12 +2031,12 @@ locale imbue(const locale& loc); +@@ -2028,12 +2028,12 @@ locale imbue(const locale& loc); \pnum \effects Calls @@ -2187,7 +2075,7 @@ index 3f925b2b..f89a4754 100644 \pnum \returns -@@ -3289,7 +3289,7 @@ streamsize in_avail(); +@@ -3286,7 +3286,7 @@ streamsize in_avail(); If a read position is available, returns \tcode{egptr() - gptr()}. Otherwise returns @@ -2196,16 +2084,16 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \indexlibrarymember{snextc}{basic_streambuf}% -@@ -4314,7 +4314,7 @@ namespace std { +@@ -4311,7 +4311,7 @@ namespace std { template> class basic_istream : virtual public basic_ios { public: - // types (inherited from \tcode{basic_ios}\iref{ios}) + // types (inherited from \link{\tcode{basic_ios}}{ios}) using char_type = charT; - using int_type = typename traits::int_type; - using pos_type = typename traits::pos_type; -@@ -4720,7 +4720,7 @@ basic_istream& operator>>(void*& val); + using int_type = traits::int_type; + using pos_type = traits::pos_type; +@@ -4718,7 +4718,7 @@ basic_istream& operator>>(void*& val); \pnum As in the case of the inserters, these extractors depend on the locale's @@ -2214,7 +2102,7 @@ index 3f925b2b..f89a4754 100644 stream data. These extractors behave as formatted input functions (as described in~\ref{istream.formatted.reqmts}). After a \tcode{sentry} object is constructed, the conversion occurs as if performed by the following code fragment, -@@ -5007,7 +5007,7 @@ basic_istream& operator>>(basic_streambuf* sb); +@@ -5005,7 +5005,7 @@ basic_istream& operator>>(basic_streambuf* sb); \begin{itemdescr} \pnum \effects @@ -2223,7 +2111,7 @@ index 3f925b2b..f89a4754 100644 If \tcode{sb} is null, calls \tcode{setstate(fail\-bit)}, which may throw -@@ -5402,7 +5402,7 @@ characters and discards them. +@@ -5400,7 +5400,7 @@ characters and discards them. Characters are extracted until any of the following occurs: \begin{itemize} \item @@ -2232,7 +2120,7 @@ index 3f925b2b..f89a4754 100644 and \tcode{n} characters have been extracted so far; \item -@@ -5738,12 +5738,12 @@ template +@@ -5751,12 +5751,12 @@ template \begin{itemdescr} \pnum \effects @@ -2247,7 +2135,7 @@ index 3f925b2b..f89a4754 100644 If \tcode{ws} stops extracting characters because there are no more available it sets -@@ -5768,7 +5768,7 @@ template +@@ -5781,7 +5781,7 @@ template \pnum \constraints The expression \tcode{is >> std::forward(x)} is well-formed @@ -2256,7 +2144,7 @@ index 3f925b2b..f89a4754 100644 \tcode{Istream} is publicly and unambiguously derived from \tcode{ios_base}. \pnum -@@ -5836,7 +5836,7 @@ explicit basic_iostream(basic_streambuf* sb); +@@ -5849,7 +5849,7 @@ explicit basic_iostream(basic_streambuf* sb); Initializes the base class subobjects with \tcode{basic_istream(sb)}\iref{istream} and @@ -2265,16 +2153,16 @@ index 3f925b2b..f89a4754 100644 \pnum \ensures -@@ -5922,7 +5922,7 @@ namespace std { +@@ -5935,7 +5935,7 @@ namespace std { template> class basic_ostream : virtual public basic_ios { public: - // types (inherited from \tcode{basic_ios}\iref{ios}) + // types (inherited from \link{\tcode{basic_ios}}{ios}) using char_type = charT; - using int_type = typename traits::int_type; - using pos_type = typename traits::pos_type; -@@ -6691,7 +6691,7 @@ return *this << s; + using int_type = traits::int_type; + using pos_type = traits::pos_type; +@@ -6705,7 +6705,7 @@ return *this << s; \end{codeblock} where \tcode{s} is an \impldef{NTCTS in \tcode{basic_ostream\& op\-er\-ator<<(nullptr_t)}} @@ -2283,7 +2171,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \rSec4[ostream.inserters.character]{Character inserter function templates} -@@ -6715,7 +6715,7 @@ template +@@ -6729,7 +6729,7 @@ template \begin{itemdescr} \pnum \effects @@ -2292,7 +2180,7 @@ index 3f925b2b..f89a4754 100644 of \tcode{out}. Constructs a character sequence \tcode{seq}. If \tcode{c} has type \tcode{char} -@@ -7468,7 +7468,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. +@@ -7482,7 +7482,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. \pnum \effects The expression \tcode{in >> get_money(mon, intl)} described below @@ -2301,7 +2189,7 @@ index 3f925b2b..f89a4754 100644 \pnum \returns -@@ -7513,7 +7513,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. +@@ -7527,7 +7527,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. An object of unspecified type such that if \tcode{out} is an object of type \tcode{basic_ostream} then the expression \tcode{out << put_money(mon, intl)} behaves as a @@ -2310,7 +2198,7 @@ index 3f925b2b..f89a4754 100644 \tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as: \begin{codeblock} -@@ -7637,7 +7637,7 @@ of \tcode{basic_ostream} with member type \tcode{char_type} the same as +@@ -7651,7 +7651,7 @@ of \tcode{basic_ostream} with member type \tcode{char_type} the same as \tcode{charT} and with member type \tcode{traits_type}, which in the second and third forms is the same as \tcode{traits}, then the expression \tcode{out << quoted(s, delim, escape)} @@ -2319,7 +2207,7 @@ index 3f925b2b..f89a4754 100644 of \tcode{out}. This forms a character sequence \tcode{seq}, initially consisting of the following elements: \begin{itemize} -@@ -14118,7 +14118,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. +@@ -14130,7 +14130,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. \pnum \begin{note} @@ -2328,7 +2216,7 @@ index 3f925b2b..f89a4754 100644 for how the value types above and their encodings convert to \tcode{path::value_type} and its encoding. \end{note} -@@ -14718,7 +14718,7 @@ by \ref{fs.path.cvt}. +@@ -14742,7 +14742,7 @@ and print functions\iref{print.fun}. \pnum Generic format observer functions return strings formatted according to the @@ -2337,7 +2225,7 @@ index 3f925b2b..f89a4754 100644 A single slash (\tcode{'/'}) character is used as the \grammarterm{directory-separator}. -@@ -15261,11 +15261,11 @@ If normalization\iref{fs.path.generic} is needed +@@ -15298,11 +15298,11 @@ If normalization\iref{fs.path.generic} is needed \indexlibrarymember{path}{iterator}% \pnum Path iterators iterate over the elements of the pathname @@ -2351,7 +2239,7 @@ index 3f925b2b..f89a4754 100644 except that, for dereferenceable iterators \tcode{a} and \tcode{b} of type \tcode{path::iterator} -@@ -16622,7 +16622,7 @@ If a file is removed from or added to a directory after the +@@ -16659,7 +16659,7 @@ If a file is removed from or added to a directory after the construction of a \tcode{directory_iterator} for the directory, it is unspecified whether or not subsequently incrementing the iterator will ever result in an iterator referencing the removed or added directory entry. See @@ -2360,7 +2248,7 @@ index 3f925b2b..f89a4754 100644 \end{note} \rSec3[fs.dir.itr.members]{Members} -@@ -16714,7 +16714,7 @@ directory_iterator& increment(error_code& ec); +@@ -16751,7 +16751,7 @@ directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -2369,7 +2257,7 @@ index 3f925b2b..f89a4754 100644 \pnum \returns -@@ -17026,7 +17026,7 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17063,7 +17063,7 @@ recursive_directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -2378,7 +2266,7 @@ index 3f925b2b..f89a4754 100644 except that: \begin{itemize} -@@ -17617,7 +17617,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin +@@ -17654,7 +17654,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin \begin{itemdescr} \pnum \effects @@ -2387,7 +2275,7 @@ index 3f925b2b..f89a4754 100644 \pnum \ensures -@@ -17693,7 +17693,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, +@@ -17730,7 +17730,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, \begin{itemdescr} \pnum \effects @@ -2396,7 +2284,7 @@ index 3f925b2b..f89a4754 100644 \pnum \ensures -@@ -17726,7 +17726,7 @@ path filesystem::current_path(error_code& ec); +@@ -17763,7 +17763,7 @@ path filesystem::current_path(error_code& ec); \returns The absolute path of the current working directory, whose pathname in the native format is @@ -2405,7 +2293,7 @@ index 3f925b2b..f89a4754 100644 The signature with argument \tcode{ec} returns \tcode{path()} if an error occurs. -@@ -17757,7 +17757,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; +@@ -17794,7 +17794,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; \begin{itemdescr} \pnum \effects @@ -2414,7 +2302,7 @@ index 3f925b2b..f89a4754 100644 \pnum \ensures -@@ -17868,7 +17868,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. +@@ -17905,7 +17905,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. \item If \tcode{is_regular_file(p)}, the size in bytes of the file \tcode{p} resolves to, determined as if by the value of the POSIX \tcode{stat} @@ -2423,7 +2311,7 @@ index 3f925b2b..f89a4754 100644 \item Otherwise, the result is \impldef{result of \tcode{filesystem::file_size}}. \end{itemize} -@@ -18250,7 +18250,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time, +@@ -18287,7 +18287,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time, \pnum \effects Sets the time of last data modification of the file @@ -2433,19 +2321,10 @@ index 3f925b2b..f89a4754 100644 \pnum \throws diff --git a/source/iterators.tex b/source/iterators.tex -index e073c001..6078fec7 100644 +index ed599d97..46edb440 100644 --- a/source/iterators.tex +++ b/source/iterators.tex -@@ -729,7 +729,7 @@ is undefined. - - \pnum - \indextext{iterator!constexpr}% --Iterators meet the \defn{constexpr iterator} requirements -+Iterators meet the \defnadjx{constexpr}{iterators}{iterator} requirements - if all operations provided to meet iterator category requirements - are constexpr functions. - \begin{note} -@@ -6849,7 +6849,7 @@ ostream_iterator& operator++(int); +@@ -6872,7 +6872,7 @@ ostream_iterator& operator++(int); The class template \tcode{istreambuf_iterator} @@ -2454,7 +2333,7 @@ index e073c001..6078fec7 100644 reads successive \textit{characters} from the streambuf for which it was constructed. -@@ -6974,7 +6974,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; +@@ -6997,7 +6997,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; Initializes \tcode{sbuf_} with \keyword{nullptr}. \end{itemdescr} @@ -2462,7 +2341,7 @@ index e073c001..6078fec7 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(istream_type& s) noexcept; -@@ -6986,7 +6985,6 @@ istreambuf_iterator(istream_type& s) noexcept; +@@ -7009,7 +7008,6 @@ istreambuf_iterator(istream_type& s) noexcept; Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2470,7 +2349,7 @@ index e073c001..6078fec7 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(streambuf_type* s) noexcept; -@@ -6998,7 +6996,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; +@@ -7021,7 +7019,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; Initializes \tcode{sbuf_} with \tcode{s}. \end{itemdescr} @@ -2478,7 +2357,7 @@ index e073c001..6078fec7 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept; -@@ -7149,7 +7146,6 @@ is not a null pointer. +@@ -7172,7 +7169,6 @@ is not a null pointer. Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2487,7 +2366,7 @@ index e073c001..6078fec7 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index 6cf011e4..aa909af0 100644 +index bfd55be5..5baaf9a1 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2501,18 +2380,7 @@ index 6cf011e4..aa909af0 100644 directive \tcode{\#include}, less any source lines skipped by any of the conditional inclusion\iref{cpp.cond} preprocessing directives, as modified by the implementation-defined behavior of any -@@ -50,8 +50,8 @@ example) - calls to functions whose identifiers have external or module linkage, - manipulation of objects whose identifiers have external or module linkage, or - manipulation of data files. Translation units can be separately --translated and then later linked to produce an executable --program\iref{basic.link}. -+translated and then later \link{linked}{basic.link} to produce an executable -+program. - \end{note} - \indextext{compilation!separate|)} - -@@ -2243,7 +2243,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) +@@ -2315,7 +2315,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) \pnum If \placeholder{L} is a \grammarterm{user-defined-character-literal}, let \placeholder{ch} be the literal without its \grammarterm{ud-suffix}. @@ -2522,7 +2390,7 @@ index 6cf011e4..aa909af0 100644 literal \placeholder{L} is treated as a call of the form diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index ea7a21b7..10076632 100644 +index 24029adb..6c8b5dab 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2534,7 +2402,7 @@ index ea7a21b7..10076632 100644 numeric algorithms and complex number components that extend support for numeric processing. The \tcode{valarray} -@@ -518,8 +518,8 @@ of other standards\iref{intro.refs}. +@@ -521,8 +521,8 @@ of other standards\iref{intro.refs}. Subclause \ref{conventions} describes several editorial conventions used to describe the contents of the \Cpp{} standard library. These conventions are for describing @@ -2545,7 +2413,7 @@ index ea7a21b7..10076632 100644 \rSec3[expos.only.entity]{Exposition-only entities, etc.} -@@ -641,7 +641,7 @@ and \ref{depr} are +@@ -651,7 +651,7 @@ and \ref{depr} are Each bitmask type can be implemented as an enumerated type that overloads certain operators, as an integer type, or as a @@ -2554,7 +2422,7 @@ index ea7a21b7..10076632 100644 \indextext{type!enumerated}% \pnum -@@ -767,7 +767,7 @@ locale. +@@ -777,7 +777,7 @@ locale. \item A \defn{character sequence} @@ -2563,7 +2431,7 @@ index ea7a21b7..10076632 100644 can be declared as \tcode{\placeholdernc{T\;A}[\placeholder{N}]}, where \tcode{\placeholder{T}} is any of the types -@@ -948,7 +948,7 @@ signatures, or for virtual destructors that can be generated by default. +@@ -968,7 +968,7 @@ signatures, or for virtual destructors that can be generated by default. \pnum \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr} do not specify the representation of classes, and intentionally @@ -2572,7 +2440,7 @@ index ea7a21b7..10076632 100644 define static or non-static class members, or both, as needed to implement the semantics of the member functions specified in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr}. -@@ -1360,10 +1360,10 @@ std::vector vi; // OK +@@ -1380,10 +1380,10 @@ std::vector vi; // OK Except as noted in \ref{library} through \ref{\lastlibchapter} and \ref{depr}, the contents of each header \tcode{c\placeholder{name}} is the same as that of the corresponding header \tcode{\placeholder{name}.h} as @@ -2585,7 +2453,7 @@ index ea7a21b7..10076632 100644 It is unspecified whether these names (including any overloads added in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr}) are first declared within the global namespace scope -@@ -1680,8 +1680,8 @@ a hosted implementation. +@@ -1701,8 +1701,8 @@ a hosted implementation. \pnum Subclause \ref{using} describes how a \Cpp{} program gains access to the facilities of the \Cpp{} standard library. \ref{using.headers} describes effects during translation @@ -2596,7 +2464,7 @@ index ea7a21b7..10076632 100644 \rSec3[using.headers]{Headers} -@@ -1724,7 +1724,7 @@ declared in that header. No diagnostic is required. +@@ -1745,7 +1745,7 @@ declared in that header. No diagnostic is required. \rSec3[using.linkage]{Linkage} \pnum @@ -2605,7 +2473,7 @@ index ea7a21b7..10076632 100644 Unless otherwise specified, objects and functions have the default \tcode{extern "C++"} linkage\iref{dcl.link}. -@@ -1758,8 +1758,8 @@ the program prior to program startup. +@@ -1779,8 +1779,8 @@ the program prior to program startup. \indextext{startup!program}% \pnum See also @@ -2616,16 +2484,7 @@ index ea7a21b7..10076632 100644 \rSec2[utility.requirements]{Requirements on types and expressions} -@@ -1807,7 +1807,7 @@ rvalue of type \tcode{const T}. - In general, a default constructor is not required. Certain container class - member function signatures specify \tcode{T()} as a default argument. - \tcode{T()} shall be a well-defined expression\iref{dcl.init} if one of those --signatures is called using the default argument\iref{dcl.fct.default}. -+signatures is called using the \link{default argument}{dcl.fct.default}. - - \begin{oldconcepttable}{EqualityComparable}{}{cpp17.equalitycomparable} - {x{1in}x{1in}p{3in}} -@@ -1933,13 +1933,13 @@ evaluated in the context described below, and +@@ -1947,13 +1947,13 @@ evaluated in the context described below, and \pnum The context in which \tcode{swap(t, u)} and \tcode{swap(u, t)} are evaluated shall @@ -2642,7 +2501,7 @@ index ea7a21b7..10076632 100644 \end{itemize} \begin{note} If \tcode{T} and \tcode{U} are both fundamental types or arrays of -@@ -2042,8 +2042,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in +@@ -2056,8 +2056,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in \end{note} \pnum @@ -2654,7 +2513,7 @@ index ea7a21b7..10076632 100644 had been evaluated in place of \tcode{p}. \pnum -@@ -2146,7 +2147,7 @@ as the memory allocation and deallocation primitives for it. All of the +@@ -2160,7 +2161,7 @@ as the memory allocation and deallocation primitives for it. All of the string types\iref{strings}, containers\iref{containers} (except \tcode{array} and \tcode{inplace_vector}), string buffers and string streams\iref{input.output}, and @@ -2663,7 +2522,7 @@ index ea7a21b7..10076632 100644 allocators. \pnum -@@ -2970,7 +2971,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, +@@ -2986,7 +2987,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, whether or not \tcode{T} is a complete type: \begin{itemize} \item \tcode{X} is a complete type, and @@ -2672,7 +2531,7 @@ index ea7a21b7..10076632 100644 other than \tcode{value_type} are complete types. \end{itemize} -@@ -2981,11 +2982,11 @@ whether or not \tcode{T} is a complete type: +@@ -2997,11 +2998,11 @@ whether or not \tcode{T} is a complete type: \pnum Subclause \ref{constraints} describes restrictions on \Cpp{} programs that use the facilities of the \Cpp{} standard library. The following subclauses specify constraints on the @@ -2688,7 +2547,7 @@ index ea7a21b7..10076632 100644 \rSec3[namespace.constraints]{Namespace use} -@@ -3378,7 +3379,7 @@ are reserved for use by \Cpp{} implementations. +@@ -3412,7 +3413,7 @@ are reserved for use by \Cpp{} implementations. If a file with a name equivalent to the derived file name for one of the \Cpp{} standard library headers is not provided as part of the implementation, and a file with that name @@ -2697,7 +2556,7 @@ index ea7a21b7..10076632 100644 the behavior is undefined.% \indextext{source file}% \indextext{undefined} -@@ -3549,7 +3550,7 @@ specified as being shareable without data races or the user supplies a locking m +@@ -3583,7 +3584,7 @@ specified as being shareable without data races or the user supplies a locking m \pnum If an object of a standard library type is accessed, and @@ -2706,7 +2565,7 @@ index ea7a21b7..10076632 100644 does not happen before the access, or the access does not happen before the end of the object's lifetime, the behavior is undefined unless otherwise specified. -@@ -3615,7 +3616,7 @@ Every such entity shall be defined such that any header that defines it may be +@@ -3649,7 +3650,7 @@ Every such entity shall be defined such that any header that defines it may be included after any other header that also defines it\iref{basic.def.odr}. \pnum @@ -2715,7 +2574,7 @@ index ea7a21b7..10076632 100644 shall include only their corresponding \Cpp{} standard library header, as described in~\ref{headers}. -@@ -3643,7 +3644,7 @@ explicitly stated otherwise. +@@ -3677,7 +3678,7 @@ explicitly stated otherwise. It is unspecified whether any non-member functions in the \Cpp{} standard library are defined as @@ -2724,7 +2583,7 @@ index ea7a21b7..10076632 100644 \pnum A call to a non-member function signature -@@ -3671,7 +3672,7 @@ The phrase ``unless otherwise specified'' applies to cases such as +@@ -3705,7 +3706,7 @@ The phrase ``unless otherwise specified'' applies to cases such as the swappable with requirements\iref{swappable.requirements}. The exception for overloaded operators allows argument-dependent lookup in cases like that of @@ -2733,7 +2592,7 @@ index ea7a21b7..10076632 100644 \effects \begin{codeblock} -@@ -3686,7 +3687,7 @@ return *this; +@@ -3720,7 +3721,7 @@ return *this; \pnum It is unspecified whether any member functions in the \Cpp{} standard library are defined as @@ -2742,7 +2601,7 @@ index ea7a21b7..10076632 100644 \pnum For a non-virtual member function described in the \Cpp{} standard library, -@@ -3765,8 +3766,8 @@ library may be recursively reentered. +@@ -3809,8 +3810,8 @@ the behavior is undefined unless otherwise specified. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -2753,7 +2612,7 @@ index ea7a21b7..10076632 100644 Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. -@@ -3809,7 +3810,7 @@ not visible to users and are protected against data races. +@@ -3853,7 +3854,7 @@ not visible to users and are protected against data races. \pnum Unless otherwise specified, \Cpp{} standard library functions shall perform all operations solely within the current thread if those operations have effects that are @@ -2762,7 +2621,7 @@ index ea7a21b7..10076632 100644 \pnum \begin{note} -@@ -3938,7 +3939,7 @@ potentially-throwing exception specification} exceptions. +@@ -3968,7 +3969,7 @@ potentially-throwing exception specification} exceptions. \begin{footnote} In particular, they can report a failure to allocate storage by throwing an exception of type @@ -2771,17 +2630,8 @@ index ea7a21b7..10076632 100644 or a class derived from \tcode{bad_alloc}\iref{bad.alloc}. \end{footnote} -@@ -3966,7 +3967,7 @@ assertions\iref{basic.contract,structure.specifications}. - - \pnum - Certain functions in the \Cpp{} standard library report errors via a --\tcode{error_code}\iref{syserr.errcode.overview} object. That object's -+\link{\tcode{error_code}}{syserr.errcode.overview} object. That object's - \tcode{category()} member shall return \tcode{system_category()} for - errors originating from the operating system, or a reference to an - \impldef{\tcode{error_category} for errors originating outside the diff --git a/source/limits.tex b/source/limits.tex -index bdc1f3de..efd4eb00 100644 +index e0596a32..877f21f3 100644 --- a/source/limits.tex +++ b/source/limits.tex @@ -120,7 +120,7 @@ during template argument deduction\iref{temp.deduct} [1\,024]. @@ -2794,10 +2644,10 @@ index bdc1f3de..efd4eb00 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index 529ed109..9402c55b 100644 +index 544aa428..f3299984 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -156,8 +156,8 @@ floating-point evaluation in constant expressions. +@@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. \rSec2[cfenv.thread]{Threads} \pnum @@ -2808,32 +2658,28 @@ index 529ed109..9402c55b 100644 environment is the state of the floating-point environment of the thread that constructs the corresponding \tcode{thread} object\iref{thread.thread.class} or \tcode{jthread} object\iref{thread.jthread.class} -@@ -1565,21 +1565,21 @@ the effect of instantiating a template: - is undefined unless the corresponding template argument - is cv-unqualified and - meets the requirements +@@ -1571,17 +1571,17 @@ on an instantiated template $T$: + A template argument corresponding to a template parameter + named \tcode{Sseq} + shall meet the requirements - of seed sequence\iref{rand.req.seedseq}. + of \link{seed sequence}{rand.req.seedseq}. \item - that has a template type parameter + A template argument corresponding to a template parameter named \tcode{URBG} - is undefined unless the corresponding template argument - is cv-unqualified and - meets the requirements + shall meet the requirements - of uniform random bit generator\iref{rand.req.urng}. + of \link{uniform random bit generator}{rand.req.urng}. \item - that has a template type parameter + A template argument corresponding to a template parameter named \tcode{Engine} - is undefined unless the corresponding template argument - is cv-unqualified and - meets the requirements + shall meet the requirements - of random number engine\iref{rand.req.eng}. + of \link{random number engine}{rand.req.eng}. \item - that has a template type parameter + If a template argument corresponding to a template parameter named \tcode{RealType} -@@ -1703,7 +1703,7 @@ In \tref{rand.req.seedseq} and throughout this subclause: +@@ -1702,7 +1702,7 @@ In \tref{rand.req.seedseq} and throughout this subclause: \endhead \tcode{S::result_type} & \tcode{T} @@ -2842,7 +2688,7 @@ index 529ed109..9402c55b 100644 of at least 32 bits. & \\ \rowsep -@@ -1868,7 +1868,7 @@ An engine's state may be established via +@@ -1867,7 +1867,7 @@ An engine's state may be established via \pnum A class \tcode{E} that meets the requirements @@ -2851,7 +2697,7 @@ index 529ed109..9402c55b 100644 also meets the requirements of a \term{random number engine} if the expressions shown -@@ -1889,7 +1889,7 @@ In \tref{rand.req.eng} and throughout this subclause: +@@ -1888,7 +1888,7 @@ In \tref{rand.req.eng} and throughout this subclause: \tcode{s} is a value of \tcode{T}; \item \tcode{q} is an lvalue @@ -2860,7 +2706,7 @@ index 529ed109..9402c55b 100644 \item \tcode{z} is a value of type \tcode{unsigned long long}; -@@ -2323,7 +2323,7 @@ In \tref{rand.req.dist} and throughout this subclause, +@@ -2322,7 +2322,7 @@ In \tref{rand.req.dist} and throughout this subclause, \item \tcode{g}, \tcode{g1}, and \tcode{g2} are lvalues of a type meeting the requirements @@ -2869,7 +2715,7 @@ index 529ed109..9402c55b 100644 \item \tcode{os} is an lvalue of the type of some class template specialization \tcode{basic_ostream}; -@@ -2355,7 +2355,7 @@ according to \ref{strings} and \ref{input.output}. +@@ -2354,7 +2354,7 @@ according to \ref{strings} and \ref{input.output}. \endhead \tcode{D::result_type} & \tcode{T} @@ -2878,7 +2724,7 @@ index 529ed109..9402c55b 100644 & \\ \rowsep \tcode{D::param_type} -@@ -2597,7 +2597,7 @@ reference to the type of \tcode{is}. +@@ -2596,7 +2596,7 @@ reference to the type of \tcode{is}. Each type instantiated from a class template specified in \ref{rand.eng} meets the requirements @@ -2887,7 +2733,7 @@ index 529ed109..9402c55b 100644 \pnum Except where specified otherwise, -@@ -3395,7 +3395,7 @@ The counter is the value $Z$ introduced at the beginning of this subclause. +@@ -3394,7 +3394,7 @@ The counter is the value $Z$ introduced at the beginning of this subclause. Each type instantiated from a class template specified in \ref{rand.adapt} meets the requirements @@ -2896,7 +2742,7 @@ index 529ed109..9402c55b 100644 \pnum Except where specified otherwise, -@@ -4489,7 +4489,7 @@ than the output when computing $S$. +@@ -4488,7 +4488,7 @@ than the output when computing $S$. Each type instantiated from a class template specified in \ref{rand.dist} meets the requirements @@ -2905,7 +2751,7 @@ index 529ed109..9402c55b 100644 \pnum Descriptions are provided in \ref{rand.dist} -@@ -5343,6 +5343,7 @@ p(x\,|\,\alpha,\beta) = +@@ -5342,6 +5342,7 @@ p(x\,|\,\alpha,\beta) = \indexlibraryglobal{gamma_distribution}% \indexlibrarymember{result_type}{gamma_distribution}% @@ -2913,7 +2759,7 @@ index 529ed109..9402c55b 100644 \begin{codeblock} namespace std { template -@@ -5386,7 +5387,6 @@ namespace std { +@@ -5385,7 +5386,6 @@ namespace std { } \end{codeblock} @@ -2921,7 +2767,7 @@ index 529ed109..9402c55b 100644 \indexlibraryctor{gamma_distribution}% \begin{itemdecl} explicit gamma_distribution(RealType alpha, RealType beta = 1.0); -@@ -5493,7 +5493,7 @@ namespace std { +@@ -5492,7 +5492,7 @@ namespace std { \indexlibraryctor{weibull_distribution}% \begin{itemdecl} explicit weibull_distribution(RealType a, RealType b = 1.0); @@ -2930,7 +2776,7 @@ index 529ed109..9402c55b 100644 \begin{itemdescr} \pnum -@@ -5603,7 +5603,6 @@ namespace std { +@@ -5602,7 +5602,6 @@ namespace std { } \end{codeblock} @@ -2938,7 +2784,7 @@ index 529ed109..9402c55b 100644 \indexlibraryctor{extreme_value_distribution}% \begin{itemdecl} explicit extreme_value_distribution(RealType a, RealType b = 1.0); -@@ -5727,7 +5726,6 @@ namespace std { +@@ -5726,7 +5725,6 @@ namespace std { } \end{codeblock} @@ -2946,7 +2792,7 @@ index 529ed109..9402c55b 100644 \indexlibraryctor{normal_distribution}% \begin{itemdecl} explicit normal_distribution(RealType mean, RealType stddev = 1.0); -@@ -5931,7 +5929,6 @@ namespace std { +@@ -5930,7 +5928,6 @@ namespace std { } \end{codeblock} @@ -2954,7 +2800,7 @@ index 529ed109..9402c55b 100644 \indexlibraryctor{chi_squared_distribution}% \begin{itemdecl} explicit chi_squared_distribution(RealType n); -@@ -6125,7 +6122,6 @@ namespace std { +@@ -6124,7 +6121,6 @@ namespace std { } \end{codeblock} @@ -2962,7 +2808,7 @@ index 529ed109..9402c55b 100644 \indexlibraryctor{fisher_f_distribution}% \begin{itemdecl} explicit fisher_f_distribution(RealType m, RealType n = 1); -@@ -6228,7 +6224,6 @@ namespace std { +@@ -6227,7 +6223,6 @@ namespace std { } \end{codeblock} @@ -2970,7 +2816,7 @@ index 529ed109..9402c55b 100644 \indexlibraryctor{student_t_distribution}% \begin{itemdecl} explicit student_t_distribution(RealType n); -@@ -6344,7 +6339,7 @@ namespace std { +@@ -6343,7 +6338,7 @@ namespace std { } \end{codeblock} @@ -2979,19 +2825,7 @@ index 529ed109..9402c55b 100644 \begin{itemdecl} discrete_distribution(); \end{itemdecl} -@@ -7174,8 +7169,9 @@ additional functions and operators as follows: - \begin{itemize} - \item - for every function taking a --\tcode{const valarray\&} other than \tcode{begin} and --\tcode{end}\iref{valarray.range}, -+\tcode{const valarray\&} other than -+\libmemberrefx{begin}{begin}{valarray} and -+\libmemberrefx{end}{end}{valarray}, - identical functions taking the replacement types shall be added; - \item - for every function taking two -@@ -7200,7 +7196,7 @@ objects. +@@ -7194,7 +7189,7 @@ objects. \pnum These library functions are permitted to throw a @@ -3000,7 +2834,7 @@ index 529ed109..9402c55b 100644 to carry out the operation. Note that the exception is not mandated. -@@ -7360,7 +7356,7 @@ explicit valarray(size_t n); +@@ -7362,7 +7357,7 @@ explicit valarray(size_t n); \pnum \effects Constructs a \tcode{valarray} that has length \tcode{n}. @@ -3009,7 +2843,7 @@ index 529ed109..9402c55b 100644 \end{itemdescr} \indexlibraryctor{valarray}% -@@ -7620,7 +7616,7 @@ and other techniques to generate efficient +@@ -7622,7 +7617,7 @@ and other techniques to generate efficient \pnum The reference returned by the subscript operator for an array shall be valid until the member function @@ -3018,7 +2852,7 @@ index 529ed109..9402c55b 100644 that array ends, whichever happens first. \end{itemdescr} -@@ -8046,7 +8042,7 @@ places, with zero fill. +@@ -8048,7 +8043,7 @@ places, with zero fill. \pnum \begin{example} If the argument has the value $-2$, @@ -3027,7 +2861,7 @@ index 529ed109..9402c55b 100644 of the first element of \tcode{*this}; etc. \end{example} \end{itemdescr} -@@ -9171,7 +9167,7 @@ parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. +@@ -9173,7 +9168,7 @@ parameter \tcode{T} and its \tcode{reference} type is \tcode{const T\&}. \pnum The iterators returned by \tcode{begin} and \tcode{end} for an array are guaranteed to be valid until the member function @@ -3036,9 +2870,9 @@ index 529ed109..9402c55b 100644 array or until the lifetime of that array ends, whichever happens first. -@@ -9788,12 +9784,12 @@ namespace std { - The contents and meaning of the header \libheader{cmath} - are the same as the C standard library header \libheader{math.h}, +@@ -9814,12 +9809,12 @@ The contents and meaning of the header \libheader{cmath} + are a subset of the C standard library header \libheader{math.h} and + only the declarations shown in the synopsis above are present, with the addition of -a three-dimensional hypotenuse function\iref{c.math.hypot3}, -a linear interpolation function\iref{c.math.lerp}, and @@ -3052,7 +2886,7 @@ index 529ed109..9402c55b 100644 \end{note} \pnum -@@ -9857,7 +9853,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. +@@ -9883,7 +9878,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. If \tcode{abs} is called with an argument of type \tcode{X} for which \tcode{is_unsigned_v} is \tcode{true} and if \tcode{X} cannot be converted to \tcode{int} @@ -3062,10 +2896,10 @@ index 529ed109..9402c55b 100644 Allowing arguments that can be promoted to \tcode{int} provides compatibility with C. diff --git a/source/overloading.tex b/source/overloading.tex -index 5343a015..db9317ec 100644 +index 52883f84..d3250f2d 100644 --- a/source/overloading.tex +++ b/source/overloading.tex -@@ -69,7 +69,7 @@ Overload resolution selects the function to call in seven distinct +@@ -74,7 +74,7 @@ Overload resolution selects the function to call in seven distinct contexts within the language: \begin{itemize} \item @@ -3074,7 +2908,7 @@ index 5343a015..db9317ec 100644 \item invocation of a function call operator, a pointer-to-function conversion function, a reference-to-pointer-to-function conversion -@@ -83,14 +83,14 @@ invocation of a constructor for default- or direct-initialization\iref{dcl.init} +@@ -88,14 +88,14 @@ invocation of a constructor for default- or direct-initialization\iref{dcl.init} of a class object\iref{over.match.ctor}; \item invocation of a user-defined conversion for @@ -3091,7 +2925,7 @@ index 5343a015..db9317ec 100644 \end{itemize} Each of these contexts defines the set of candidate functions and -@@ -108,7 +108,7 @@ conditions) is selected to form a set of +@@ -113,7 +113,7 @@ conditions) is selected to form a set of viable functions\iref{over.match.viable}. \item Then the best viable function is selected based on the @@ -3100,7 +2934,7 @@ index 5343a015..db9317ec 100644 match each argument to the corresponding parameter of each viable function. \end{itemize} -@@ -119,7 +119,7 @@ resolution succeeds and produces it as the result. +@@ -124,7 +124,7 @@ resolution succeeds and produces it as the result. Otherwise overload resolution fails and the invocation is ill-formed. When overload resolution succeeds, @@ -3109,7 +2943,7 @@ index 5343a015..db9317ec 100644 in which it is used, the program is ill-formed. -@@ -233,7 +233,7 @@ as long as in all other respects the argument can be +@@ -238,7 +238,7 @@ as long as in all other respects the argument can be converted to the type of the implicit object parameter. \begin{note} The fact that such an argument is an rvalue does not @@ -3118,7 +2952,7 @@ index 5343a015..db9317ec 100644 \end{note} \pnum -@@ -356,7 +356,7 @@ B b3 = C(); // calls \#4 +@@ -361,7 +361,7 @@ B b3 = C(); // calls \#4 \indextext{overloading!resolution!function call syntax|(} \pnum @@ -3127,7 +2961,7 @@ index 5343a015..db9317ec 100644 \begin{ncsimplebnf} postfix-expression \terminal{(} \opt{expression-list} \terminal{)} \end{ncsimplebnf} -@@ -938,7 +938,7 @@ in each case using the selected rewritten \tcode{\keyword{operator}==} candidate +@@ -958,7 +958,7 @@ in each case using the selected rewritten \tcode{\keyword{operator}==} candidate If a built-in candidate is selected by overload resolution, the operands of class type are converted to the types of the corresponding parameters of the selected operation function, except that the second standard conversion @@ -3136,7 +2970,7 @@ index 5343a015..db9317ec 100644 Then the operator is treated as the corresponding built-in operator and interpreted according to \ref{expr.compound}. \begin{example} -@@ -1021,10 +1021,10 @@ void B::f() { +@@ -1041,10 +1041,10 @@ void B::f() { \indextext{overloading!resolution!initialization} \pnum @@ -3149,7 +2983,7 @@ index 5343a015..db9317ec 100644 overload resolution selects the constructor. For direct-initialization or default-initialization (including default-initialization in the context of copy-list-initialization), -@@ -1715,7 +1715,7 @@ Third, for +@@ -1836,7 +1836,7 @@ Third, for \tcode{F} to be a viable function, there shall exist for each argument an @@ -3158,7 +2992,7 @@ index 5343a015..db9317ec 100644 converts that argument to the corresponding parameter of \tcode{F}. If the parameter has reference type, the implicit conversion sequence -@@ -1779,8 +1779,8 @@ float x = a; // ambiguous: both possibilities require conversions, +@@ -1900,8 +1900,8 @@ float x = a; // ambiguous: both possibilities require conversions, \end{example} or, if not that, @@ -3169,7 +3003,7 @@ index 5343a015..db9317ec 100644 return type of $\tcode{F}_1$ is the same kind of reference (lvalue or rvalue) as the reference being initialized, and the return type of $\tcode{F}_2$ is not \begin{example} -@@ -1910,7 +1910,7 @@ $\tcode{F}_1$ is generated from a +@@ -2031,7 +2031,7 @@ $\tcode{F}_1$ is generated from a and $\tcode{F}_2$ is not, or, if not that, \item @@ -3178,7 +3012,7 @@ index 5343a015..db9317ec 100644 and $\tcode{F}_2$ is not, or, if not that, \item -@@ -2055,7 +2055,7 @@ parameter. +@@ -2157,7 +2157,7 @@ parameter. \begin{note} Other properties, such as the lifetime, storage duration, linkage, alignment, accessibility of the argument, whether the argument is a bit-field, @@ -3187,7 +3021,7 @@ index 5343a015..db9317ec 100644 So, although an implicit conversion sequence can be defined for a given argument-parameter pair, the conversion from the argument to the parameter might still -@@ -2068,11 +2068,11 @@ well-formed implicit conversion +@@ -2170,11 +2170,11 @@ well-formed implicit conversion sequence is one of the following forms: \begin{itemize} \item @@ -3202,7 +3036,7 @@ index 5343a015..db9317ec 100644 \end{itemize} \pnum -@@ -2253,10 +2253,10 @@ Each conversion in \tref{over.ics.scs} +@@ -2352,10 +2352,10 @@ Each conversion in \tref{over.ics.scs} also has an associated rank (Exact Match, Promotion, or Conversion). These are used @@ -3216,7 +3050,7 @@ index 5343a015..db9317ec 100644 If any of those has Conversion rank, the sequence has Conversion rank; otherwise, if any of those has Promotion rank, the sequence has Promotion rank; otherwise, the sequence has Exact -@@ -2293,7 +2293,7 @@ by a constructor\iref{class.conv.ctor}, the initial standard +@@ -2392,7 +2392,7 @@ by a constructor\iref{class.conv.ctor}, the initial standard conversion sequence converts the source type to the type of the first parameter of that constructor. If the user-defined @@ -3225,7 +3059,7 @@ index 5343a015..db9317ec 100644 initial standard conversion sequence converts the source type to the type of the object parameter of that conversion function. -@@ -2429,7 +2429,7 @@ the prohibition on binding a non-\keyword{const} lvalue reference to a bit-field +@@ -2528,7 +2528,7 @@ the prohibition on binding a non-\keyword{const} lvalue reference to a bit-field \rSec4[over.ics.list]{List-initialization sequence} \pnum @@ -3234,7 +3068,7 @@ index 5343a015..db9317ec 100644 expression and special rules apply for converting it to a parameter type. \pnum -@@ -2671,13 +2671,13 @@ When comparing the basic forms of implicit conversion sequences +@@ -2770,13 +2770,13 @@ When comparing the basic forms of implicit conversion sequences (as defined in~\ref{over.best.ics}) \begin{itemize} \item @@ -3252,7 +3086,7 @@ index 5343a015..db9317ec 100644 \end{itemize} \pnum -@@ -3123,7 +3123,7 @@ the left side of an assignment\iref{expr.assign}, +@@ -3203,7 +3203,7 @@ the left side of an assignment\iref{expr.assign}, \item a parameter of a function\iref{expr.call}, \item @@ -3261,7 +3095,7 @@ index 5343a015..db9317ec 100644 \item the return value of a function, operator function, or conversion\iref{stmt.return}, \item -@@ -3323,8 +3323,8 @@ The operators +@@ -3403,8 +3403,8 @@ The operators and \tcode{[]} are formed from more than one token. @@ -3272,7 +3106,7 @@ index 5343a015..db9317ec 100644 \end{note} \indextext{operator!subscripting}% \indextext{operator!function call}% -@@ -3420,7 +3420,7 @@ this is not required by operator functions. +@@ -3500,7 +3500,7 @@ this is not required by operator functions. \pnum \indextext{argument!overloaded operator and default}% @@ -3281,7 +3115,7 @@ index 5343a015..db9317ec 100644 except where explicitly stated below. Operator functions cannot have more or fewer parameters than the -@@ -3756,7 +3756,7 @@ to not be included in the set of candidate functions. +@@ -3845,7 +3845,7 @@ to not be included in the set of candidate functions. In this subclause, the term \defn{promoted integral type} is used to refer to those cv-unqualified integral types which are preserved by @@ -3291,18 +3125,9 @@ index 5343a015..db9317ec 100644 and \tcode{long} diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index ee7959ab..885db47e 100644 +index 0bfb7f19..b3cf7fc7 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex -@@ -504,7 +504,7 @@ shall not appear in any context not mentioned in this subclause. - Each preprocessing token that remains (in the list of preprocessing tokens that - will become the controlling expression) - after all macro replacements have occurred --shall be in the lexical form of a token\iref{lex.token}. -+shall be in the lexical form of a \link{token}{lex.token}. - - \pnum - Preprocessing directives of the forms @@ -551,8 +551,8 @@ are replaced with the \grammarterm{pp-number} \tcode{0}, and then each preprocessing token is converted into a token. @@ -3325,7 +3150,7 @@ index ee7959ab..885db47e 100644 \end{note} This includes interpreting \grammarterm{character-literal}s according to the rules in \ref{lex.ccon}. -@@ -2041,7 +2041,7 @@ of the current source line is +@@ -2126,7 +2126,7 @@ of the current source line is the line number of the current physical source line, i.e., it is one greater than the number of new-line characters read or introduced @@ -3334,20 +3159,20 @@ index ee7959ab..885db47e 100644 while processing the source file to the current preprocessing token. \pnum -@@ -2399,7 +2399,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. +@@ -2489,7 +2489,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. \indextext{__stdcpp_threads__@\mname{STDCPP_THREADS}}% \mname{STDCPP_THREADS}\\ - Defined, and has the value integer literal 1, if and only if a program + Defined, and has the value integer literal \tcode{1}, if and only if a program -can have more than one thread of execution\iref{intro.multithread}. +can have more than one \link{thread of execution}{intro.multithread}. \end{description} diff --git a/source/statements.tex b/source/statements.tex -index ba75c744..9782eab7 100644 +index fa6944b1..301d6304 100644 --- a/source/statements.tex +++ b/source/statements.tex -@@ -198,7 +198,7 @@ Expression statements have the form +@@ -224,7 +224,7 @@ Expression statements have the form \end{bnf} The expression is @@ -3356,7 +3181,7 @@ index ba75c744..9782eab7 100644 All \indextext{side effects}% side effects from an expression statement -@@ -427,10 +427,10 @@ the value of the condition is the value of the \grammarterm{expression}; +@@ -452,10 +452,10 @@ the value of the condition is the value of the \grammarterm{expression}; otherwise, it is the value of the decision variable. The value of the condition shall be of integral type, enumeration type, or class type. If of class type, the @@ -3370,16 +3195,16 @@ index ba75c744..9782eab7 100644 to the promoted type. Any statement within the \keyword{switch} statement can be labeled with one or -@@ -440,7 +440,7 @@ more case labels as follows: +@@ -465,7 +465,7 @@ more case labels as follows: \keyword{case} constant-expression \terminal{:} \end{ncbnf} where the \grammarterm{constant-expression} shall be --a converted constant expression\iref{expr.const} of the -+a converted \link{constant expression}{expr.const} of the +-a converted constant expression\iref{expr.const.const} of the ++a converted \link{constant expression}{expr.const.const} of the adjusted type of the switch condition. No two of the case constants in the same switch shall have the same value after conversion. -@@ -539,7 +539,7 @@ An \grammarterm{init-statement} ends with a semicolon. +@@ -551,7 +551,7 @@ An \grammarterm{init-statement} ends with a semicolon. \pnum \indextext{scope!\idxgram{iteration-statement}}% The substatement in an \grammarterm{iteration-statement} implicitly defines @@ -3388,7 +3213,7 @@ index ba75c744..9782eab7 100644 through the loop. If the substatement in an \grammarterm{iteration-statement} is a single statement and not a \grammarterm{compound-statement}, -@@ -638,7 +638,7 @@ fails. +@@ -650,7 +650,7 @@ fails. \indextext{statement!\idxcode{do}} \pnum @@ -3397,7 +3222,7 @@ index ba75c744..9782eab7 100644 if that conversion is ill-formed, the program is ill-formed. \pnum -@@ -807,8 +807,8 @@ Jump statements unconditionally transfer control. +@@ -1028,8 +1028,8 @@ Jump statements unconditionally transfer control. \indextext{local variable!destruction of}% \indextext{scope!destructor and exit from}% \begin{note} @@ -3408,7 +3233,7 @@ index ba75c744..9782eab7 100644 in the reverse order of their construction\iref{stmt.dcl}. For temporaries, see~\ref{class.temporary}. However, the program can be terminated (by calling -@@ -908,7 +908,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; +@@ -1098,7 +1098,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; the \tcode{return} statement initializes the returned reference or prvalue result object of the (explicit or implicit) function call @@ -3417,7 +3242,7 @@ index ba75c744..9782eab7 100644 \begin{note} A constructor or destructor does not have a return type. \end{note} -@@ -1041,7 +1041,7 @@ results in undefined behavior. +@@ -1235,7 +1235,7 @@ results in undefined behavior. The \tcode{goto} statement unconditionally transfers control to the statement labeled by the identifier. The identifier shall be a \indextext{label}% @@ -3426,7 +3251,7 @@ index ba75c744..9782eab7 100644 \rSec1[stmt.contract.assert]{Assertion statement} -@@ -1152,8 +1152,8 @@ lx: +@@ -1347,8 +1347,8 @@ lx: \indextext{initialization!local \tcode{static}}% \indextext{initialization!local \tcode{thread_local}}% Dynamic initialization of a block variable with @@ -3437,7 +3262,7 @@ index ba75c744..9782eab7 100644 the first time control passes through its declaration; such a variable is considered initialized upon the completion of its initialization. If the initialization exits by throwing an exception, the initialization is not -@@ -1196,8 +1196,8 @@ will be destroyed if and only if it was constructed. +@@ -1391,8 +1391,8 @@ will be destroyed if and only if it was constructed. \pnum There is an ambiguity in the grammar involving \grammarterm{expression-statement}{s} and \grammarterm{declaration}{s}: An @@ -3449,10 +3274,10 @@ index ba75c744..9782eab7 100644 \grammarterm{declarator} starts with a \tcode{(}. In those cases the \grammarterm{statement} is considered a \grammarterm{declaration}, diff --git a/source/strings.tex b/source/strings.tex -index 0245aaae..6f584dff 100644 +index b8619c9b..e9c20ec8 100644 --- a/source/strings.tex +++ b/source/strings.tex -@@ -5505,13 +5505,13 @@ The contents and meaning of the header \libheaderdef{cstring} +@@ -5537,13 +5537,13 @@ The contents and meaning of the header \libheaderdef{cstring} are the same as the C standard library header \libheader{string.h}. \pnum @@ -3469,7 +3294,7 @@ index 0245aaae..6f584dff 100644 Each of these functions implicitly creates objects\iref{intro.object} in the destination region of storage immediately prior to copying the sequence of characters to the destination. -@@ -5523,7 +5523,7 @@ otherwise the value of the first parameter. +@@ -5555,7 +5555,7 @@ otherwise the value of the first parameter. The functions \tcode{strchr}, \tcode{strpbrk}, \tcode{strrchr}, \tcode{strstr}, and \tcode{memchr}, have different signatures in this document, @@ -3477,9 +3302,9 @@ index 0245aaae..6f584dff 100644 +but they have the same behavior as in the \link{C standard library}{library.c}. \end{note} - \xrefc{7.24} + \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index 95d674aa..ff85b31b 100644 +index e86cf147..0dd4cd06 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3521,7 +3346,7 @@ index 95d674aa..ff85b31b 100644 \end{codeblock} \pnum -@@ -101,11 +94,6 @@ and as noted in +@@ -102,11 +95,6 @@ and as noted in \rSec2[cstdlib.syn]{Header \tcode{} synopsis} \indexheader{cstdlib}% @@ -3533,7 +3358,7 @@ index 95d674aa..ff85b31b 100644 \indexlibraryglobal{_Exit}% \indexlibraryglobal{abort}% \indexlibraryglobal{abs}% -@@ -122,7 +110,6 @@ and as noted in +@@ -123,7 +111,6 @@ and as noted in \indexlibraryglobal{div_t}% \indexlibraryglobal{exit}% \indexlibraryglobal{free}% @@ -3541,7 +3366,7 @@ index 95d674aa..ff85b31b 100644 \indexlibraryglobal{labs}% \indexlibraryglobal{ldiv}% \indexlibraryglobal{ldiv_t}% -@@ -157,11 +144,11 @@ namespace std { +@@ -158,11 +145,11 @@ namespace std { using lldiv_t = @\seebelow@; // freestanding } @@ -3558,7 +3383,7 @@ index 95d674aa..ff85b31b 100644 namespace std { // Exposition-only function type aliases -@@ -180,7 +167,7 @@ namespace std { +@@ -181,7 +168,7 @@ namespace std { [[noreturn]] void _Exit(int status) noexcept; // freestanding [[noreturn]] void quick_exit(int status) noexcept; // freestanding @@ -3567,7 +3392,7 @@ index 95d674aa..ff85b31b 100644 int system(const char* string); // \ref{c.malloc}, C library memory allocation -@@ -253,7 +240,7 @@ and except as noted in +@@ -265,7 +252,7 @@ and except as noted in \ref{c.math.abs}. \begin{note} Several functions have additional overloads in this document, @@ -3575,8 +3400,8 @@ index 95d674aa..ff85b31b 100644 +but they have the same behavior as in the \link{C standard library}{library.c}. \end{note} - \xrefc{7.22} -@@ -307,8 +294,8 @@ is required to work as specified even if unary + \xrefc{7.24} +@@ -319,8 +306,8 @@ is required to work as specified even if unary is overloaded for any of the types involved. \end{footnote} The expression \tcode{offsetof(\placeholder{type}, \placeholder{member-designator})} @@ -3587,7 +3412,7 @@ index 95d674aa..ff85b31b 100644 dependent. The result of applying the \tcode{offsetof} macro to a static data member or a function member is undefined. No operation invoked by the \tcode{offsetof} macro shall throw an exception and -@@ -1068,7 +1055,7 @@ the specialization on the unqualified type \tcode{T}. +@@ -1118,7 +1105,7 @@ the specialization on the unqualified type \tcode{T}. \pnum Non-arithmetic standard types, such as @@ -3596,7 +3421,7 @@ index 95d674aa..ff85b31b 100644 \rSec3[numeric.limits.members]{\tcode{numeric_limits} members} -@@ -2132,7 +2119,7 @@ The program is terminated without executing destructors for objects with automat +@@ -2122,7 +2109,7 @@ The program is terminated without executing destructors for objects with automat thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{_Exit}}% @@ -3605,7 +3430,7 @@ index 95d674aa..ff85b31b 100644 \end{itemdescr} \indexlibraryglobal{abort}% -@@ -2152,7 +2139,7 @@ automatic, thread, or static storage +@@ -2142,7 +2129,7 @@ automatic, thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{abort}}% @@ -3614,7 +3439,7 @@ index 95d674aa..ff85b31b 100644 \end{itemdescr} \indexlibraryglobal{atexit}% -@@ -2169,7 +2156,8 @@ The +@@ -2159,7 +2146,8 @@ The functions register the function pointed to by \tcode{f} to be called without arguments at normal program termination. It is unspecified whether a call to \tcode{atexit()} that does not @@ -3624,7 +3449,7 @@ index 95d674aa..ff85b31b 100644 \begin{note} The \tcode{atexit()} functions do not introduce a data race\iref{res.on.data.races}. -@@ -2263,7 +2251,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; +@@ -2253,7 +2241,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; The \tcode{at_quick_exit()} functions register the function pointed to by \tcode{f} to be called without arguments when \tcode{quick_exit} is called. It is unspecified whether a call to \tcode{at_quick_exit()} that does not @@ -3634,7 +3459,7 @@ index 95d674aa..ff85b31b 100644 \begin{note} The \tcode{at_quick_exit()} functions do not introduce a -@@ -2315,7 +2304,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s +@@ -2305,7 +2294,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s \pnum \remarks \indextext{signal-safe!\idxcode{quick_exit}}% @@ -3643,7 +3468,7 @@ index 95d674aa..ff85b31b 100644 when the functions registered with \tcode{at_quick_exit} are. \end{itemdescr} -@@ -2442,7 +2431,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); +@@ -2432,7 +2421,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3652,7 +3477,7 @@ index 95d674aa..ff85b31b 100644 called by a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -2478,7 +2467,7 @@ a null pointer value, throws +@@ -2468,7 +2457,7 @@ a null pointer value, throws \tcode{bad_alloc}. \item Otherwise, the function calls the current @@ -3661,7 +3486,7 @@ index 95d674aa..ff85b31b 100644 If the called function returns, the loop repeats. \item The loop terminates when an attempt to allocate the requested storage is -@@ -2700,7 +2689,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); +@@ -2690,7 +2679,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3670,7 +3495,7 @@ index 95d674aa..ff85b31b 100644 called by the array form of a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -3013,8 +3002,8 @@ versions of \tcode{operator delete}, the C standard library function +@@ -3003,8 +2992,8 @@ versions of \tcode{operator delete}, the C standard library function introduce a data race\iref{res.on.data.races}. Calls to these functions that allocate or deallocate a particular unit of storage shall occur in a single total order, and each such deallocation call @@ -3681,18 +3506,7 @@ index 95d674aa..ff85b31b 100644 \rSec2[alloc.errors]{Storage allocation errors} -@@ -3168,8 +3157,8 @@ template constexpr T* launder(T* p) noexcept; - \pnum - \expects - \tcode{p} represents the address \placeholder{A} of a byte in memory. --An object \placeholder{X} that is within its lifetime\iref{basic.life} --and whose type is similar\iref{conv.qual} to \tcode{T} -+An object \placeholder{X} that is within its \deflink{lifetime}{basic.life} -+and whose type is \deflinkx{similar}{similar types}{conv.qual} to \tcode{T} - is located at the address \placeholder{A}. - All bytes of storage that would be - reachable through\iref{basic.compound} the result -@@ -3382,7 +3371,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. +@@ -3375,7 +3364,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. \pnum \remarks @@ -3702,7 +3516,7 @@ index 95d674aa..ff85b31b 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. \end{itemdescr} -@@ -3956,7 +3946,8 @@ the ordinary literal encoding\iref{lex.ccon}. +@@ -3946,7 +3936,8 @@ the ordinary literal encoding\iref{lex.ccon}. \pnum \remarks @@ -3712,7 +3526,7 @@ index 95d674aa..ff85b31b 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. The return value remains valid until the exception object from which -@@ -4107,7 +4098,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread. +@@ -4097,7 +4088,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread. \remarks When \tcode{uncaught_exceptions() > 0}, throwing an exception can result in a call of the function @@ -3721,7 +3535,7 @@ index 95d674aa..ff85b31b 100644 \end{itemdescr} \rSec2[propagation]{Exception propagation} -@@ -4169,8 +4160,9 @@ constexpr exception_ptr current_exception() noexcept; +@@ -4161,8 +4152,9 @@ exception_ptr current_exception() noexcept; \begin{itemdescr} \pnum \returns @@ -3733,7 +3547,7 @@ index 95d674aa..ff85b31b 100644 handled exception, or a null \tcode{exception_ptr} object if no exception is being handled. The referenced object shall remain valid at least as long as there is an \tcode{exception_ptr} object that refers to it. -@@ -4755,7 +4747,7 @@ template constexpr const E* end(initializer_list il) noexcept; +@@ -4748,7 +4740,7 @@ constexpr bool empty() const noexcept; \pnum The header \libheaderdef{compare} specifies types, objects, and functions for use primarily in connection with @@ -3742,7 +3556,7 @@ index 95d674aa..ff85b31b 100644 \indexlibraryglobal{is_eq}% \indexlibraryglobal{is_neq}% -@@ -6296,7 +6288,7 @@ environment. +@@ -6342,7 +6334,7 @@ environment. \end{note} \pnum @@ -3752,10 +3566,10 @@ index 95d674aa..ff85b31b 100644 calls to the \tcode{setlocale} function or with calls to functions that are affected by the current C locale. The implementation shall behave as if no diff --git a/source/templates.tex b/source/templates.tex -index bf283e46..00d8fae6 100644 +index 36975546..ea6af80c 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -681,7 +681,7 @@ struct A {}; +@@ -716,7 +716,7 @@ struct A {}; \rSec1[temp.names]{Names of template specializations} \pnum @@ -3764,7 +3578,7 @@ index bf283e46..00d8fae6 100644 \grammarterm{template-id}: \begin{bnf} -@@ -973,8 +973,8 @@ specified in a +@@ -1055,8 +1055,8 @@ in a \grammarterm{splice-specialization-specifier} shall match the type and form specified for the corresponding parameter declared by the template in its \grammarterm{template-parameter-list}. @@ -3775,16 +3589,16 @@ index bf283e46..00d8fae6 100644 \grammarterm{template-argument}{s}. \begin{example} \begin{codeblock} -@@ -1137,7 +1137,7 @@ the program is ill-formed. - \pnum - When a \grammarterm{simple-template-id} does not name a function, +@@ -1247,7 +1247,7 @@ When a \grammarterm{simple-template-id} or + \grammarterm{splice-specialization-specifier} + does not designate a function, a default \grammarterm{template-argument} is -implicitly instantiated\iref{temp.inst} +\link{implicitly instantiated}{temp.inst} when the value of that default argument is needed. \begin{example} \begin{codeblock} -@@ -1149,7 +1149,7 @@ The default argument for \tcode{U} is instantiated to form the type \tcode{S 1} is not satisfied; the second operand is not checked for satisfaction. \end{example} -@@ -1703,9 +1703,9 @@ in the declaration of a constrained entity (and, therefore, can involve the +@@ -1816,9 +1816,9 @@ in the declaration of a constrained entity (and, therefore, can involve the unsubstituted template parameters of the constrained entity), called the \defn{parameter mapping}\iref{temp.constr.decl}. \begin{note} -Atomic constraints are formed by constraint normalization\iref{temp.constr.normal}. -\tcode{E} is never a logical \logop{and} expression\iref{expr.log.and} -nor a logical \logop{or} expression\iref{expr.log.or}. -+Atomic constraints are formed by \deflinkx{constraint normalization}{constraint!normalization}{temp.constr.normal}. ++Atomic constraints are formed by \link{constraint normalization}{temp.constr.normal}. +\tcode{E} is never a \link{logical \logop{and} expression}{expr.log.and} +nor a \link{logical \logop{or} expression}{expr.log.or}. \end{note} \pnum -@@ -1782,7 +1782,7 @@ first substituted into its expression. +@@ -1895,7 +1895,7 @@ first substituted into its expression. If substitution results in an invalid type or expression in the immediate context of the atomic constraint\iref{temp.deduct.general}, the constraint is not satisfied. @@ -3853,7 +3667,7 @@ index bf283e46..00d8fae6 100644 is performed if necessary, and \tcode{E} shall be a constant expression of type \tcode{bool}. The constraint is satisfied if and only if evaluation of \tcode{E} -@@ -1945,11 +1945,11 @@ A declaration's \defn{associated constraints} are defined as follows: +@@ -2057,11 +2057,11 @@ A declaration's \defn{associated constraints} are defined as follows: the declaration has no associated constraints. \item Otherwise, if there is a single introduced \grammarterm{constraint-expression}, @@ -3868,7 +3682,7 @@ index bf283e46..00d8fae6 100644 following order: \begin{itemize} \item -@@ -2046,7 +2046,7 @@ so it does match \#2. +@@ -2158,7 +2158,7 @@ so it does match \#2. \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is @@ -3877,7 +3691,7 @@ index bf283e46..00d8fae6 100644 % \begin{itemize} \item -@@ -2055,7 +2055,7 @@ the normal form of \tcode{E}. +@@ -2167,7 +2167,7 @@ the normal form of \tcode{E}. \item The normal form of an expression \tcode{E1 || E2} is @@ -3886,7 +3700,7 @@ index bf283e46..00d8fae6 100644 the normal forms of \tcode{E1} and \tcode{E2}. \item -@@ -2303,7 +2303,7 @@ the constraint of $A$ subsumes that of $B$. +@@ -2415,7 +2415,7 @@ the constraint of $A$ subsumes that of $B$. \end{itemize} % \begin{example} @@ -3895,7 +3709,7 @@ index bf283e46..00d8fae6 100644 % The constraint $A \land B$ subsumes $A$, but $A$ does not subsume $A \land B$. % -@@ -2519,7 +2519,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. +@@ -2637,7 +2637,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. \end{example} \pnum @@ -3904,18 +3718,7 @@ index bf283e46..00d8fae6 100644 \tcode{decltype($e$)} denotes a unique dependent type. Two such \grammarterm{decltype-specifier}{s} refer to the same type only if their \grammarterm{expression}{s} are -@@ -2589,8 +2589,8 @@ default arguments, - \grammarterm{requires-clause}{s}, - or - \grammarterm{noexcept-specifier}{s}. --For the purpose of instantiation, the substatements of a constexpr if --statement\iref{stmt.if} are considered definitions. -+For the purpose of instantiation, the substatements of a -+\deflink{constexpr if}{stmt.if} statement are considered definitions. - - \pnum - Because an \grammarterm{alias-declaration} cannot declare a -@@ -2944,7 +2944,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} +@@ -3064,7 +3064,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} \pnum A local class of non-closure type shall not have member templates. @@ -3924,7 +3727,7 @@ index bf283e46..00d8fae6 100644 apply to member template names. A destructor shall not be a member template. -@@ -3164,7 +3164,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. +@@ -3291,7 +3291,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. \item In a \grammarterm{capture-list}\iref{expr.prim.lambda.capture}; the pattern is the \grammarterm{capture} without the ellipsis. @@ -3933,7 +3736,7 @@ index bf283e46..00d8fae6 100644 \grammarterm{identifier}. \item In a \grammarterm{pack-index-expression}; -@@ -3787,9 +3787,9 @@ primary template. +@@ -3914,9 +3914,9 @@ primary template. \pnum A partial specialization matches a given actual template argument list if the template arguments of the partial specialization can be @@ -3946,7 +3749,7 @@ index bf283e46..00d8fae6 100644 \begin{example} \begin{codeblock} template class A { }; // \#1 -@@ -3851,14 +3851,14 @@ of the primary template. +@@ -3978,14 +3978,14 @@ of the primary template. For two partial specializations, the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more @@ -3964,7 +3767,7 @@ index bf283e46..00d8fae6 100644 as the corresponding partial specialization. \item Each function template -@@ -4064,8 +4064,8 @@ void h(int* p) { +@@ -4191,8 +4191,8 @@ void h(int* p) { \end{example} \pnum @@ -3975,7 +3778,7 @@ index bf283e46..00d8fae6 100644 \pnum The signature of a function template -@@ -4116,7 +4116,7 @@ For example, a template type parameter can be used in the +@@ -4243,7 +4243,7 @@ For example, a template type parameter can be used in the Two expressions involving template parameters are considered \defnx{equivalent}{equivalent!expressions} if two function definitions containing the expressions would satisfy @@ -3984,9 +3787,9 @@ index bf283e46..00d8fae6 100644 to name the template parameters may differ as long as a token used to name a template parameter in one expression is replaced by another token that names the same template parameter in the other expression. -@@ -4286,8 +4286,8 @@ function template +@@ -4413,8 +4413,8 @@ function template specialization - is selected to match a placement operator new\iref{basic.stc.dynamic.deallocation,expr.new}; + is selected to match a placement allocation function\iref{basic.stc.dynamic.deallocation,expr.new}; \item -when a friend function declaration\iref{temp.friend}, an -explicit instantiation\iref{temp.explicit} or an explicit specialization\iref{temp.expl.spec} refers to @@ -3995,7 +3798,7 @@ index bf283e46..00d8fae6 100644 a function template specialization. \end{itemize} -@@ -4669,7 +4669,7 @@ A \grammarterm{concept-definition} +@@ -4807,7 +4807,7 @@ A \grammarterm{concept-definition} shall inhabit a namespace scope\iref{basic.scope.namespace}. \pnum @@ -4004,16 +3807,7 @@ index bf283e46..00d8fae6 100644 \pnum A concept is not instantiated\iref{temp.spec}. -@@ -4980,7 +4980,7 @@ was a pack expansion and the corresponding pack is empty, or - \item an instantiation uses a default argument or default template argument - that had not been defined at the point at which the template was defined, or - --\item constant expression evaluation\iref{expr.const} within the template -+\item \link{constant expression evaluation}{expr.const} within the template - instantiation uses - \begin{itemize} - \item the value of a const object of integral or unscoped enumeration type or -@@ -5233,7 +5233,7 @@ any of the expressions +@@ -5387,7 +5387,7 @@ any of the expressions or \grammarterm{braced-init-list}{s} in the \grammarterm{expression-list} @@ -4022,7 +3816,7 @@ index bf283e46..00d8fae6 100644 \item the \grammarterm{unqualified-id} is a \grammarterm{template-id} in which any of the template arguments depends -@@ -5293,7 +5293,7 @@ if it is +@@ -5447,7 +5447,7 @@ if it is \item in the definition of a class template, a nested class of a class template, a member of a class template, or a member of a nested class of a class template, @@ -4031,34 +3825,25 @@ index bf283e46..00d8fae6 100644 \item in the definition of a primary class template or a member of a primary class template, the name of the -@@ -5572,7 +5572,7 @@ used without a \grammarterm{template-argument-list}. +@@ -5728,7 +5728,7 @@ used without a \grammarterm{template-argument-list}. \end{footnote} - \item a \grammarterm{pack-index-specifier}, or + \item a \grammarterm{pack-index-specifier}, \item denoted by \tcode{decltype(}\grammarterm{expression}{}\tcode{)}, --where \grammarterm{expression} is type-dependent\iref{temp.dep.expr}. -+where \grammarterm{expression} is \link{type-dependent}{temp.dep.expr}. - \end{itemize} - - \pnum -@@ -5711,7 +5711,7 @@ see~\ref{support.types}. +-where \grammarterm{expression} is type-dependent\iref{temp.dep.expr}, or ++where \grammarterm{expression} is \link{type-dependent}{temp.dep.expr}, or + \item denoted by a \grammarterm{splice-type-specifier} in which either + the \grammarterm{splice-specifier} or + \grammarterm{splice-specialization-specifier} +@@ -5880,7 +5880,7 @@ see~\ref{support.types}. \end{note} \pnum -A class member access expression\iref{expr.ref} is +A \link{class member access expression}{expr.ref} is type-dependent if - the terminal name of its \grammarterm{id-expression}, if any, is dependent or - the expression refers to a member of the current instantiation and -@@ -5846,7 +5846,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the - instantiation is value-dependent. - An expression of the form \tcode{\&}\grammarterm{cast-expression} - is also value-dependent if evaluating \grammarterm{cast-expression} --as a core constant expression\iref{expr.const} succeeds and -+as a \deflinkx{core constant expression}{expression!core constant}{expr.const} succeeds and - the result of the evaluation refers to a templated entity - that is an object with static or thread storage duration or a member function. - -@@ -5970,7 +5970,7 @@ within a translation unit. + \begin{itemize} + \item +@@ -6260,7 +6260,7 @@ within a translation unit. A specialization for any template may have points of instantiation in multiple translation units. If two different points of instantiation give a template specialization @@ -4066,8 +3851,8 @@ index bf283e46..00d8fae6 100644 +different meanings according to the \link{one-definition rule}{basic.def.odr}, the program is ill-formed, no diagnostic required. - \rSec3[temp.dep.candidate]{Candidate functions} -@@ -6275,7 +6275,7 @@ of type + \pnum +@@ -6571,7 +6571,7 @@ of type \pnum If a function declaration acquired its function type through @@ -4076,16 +3861,7 @@ index bf283e46..00d8fae6 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -6356,7 +6356,7 @@ X ch; // error: incomplete type \tcode{X} - \end{example} - \begin{note} - Within a template declaration, --a local class\iref{class.local} or enumeration and the members of -+a \link{local class}{class.local} or enumeration and the members of - a local class are never considered to be entities that can be separately - instantiated (this includes their default arguments, - \grammarterm{noexcept-specifier}{s}, and non-static data member -@@ -6534,7 +6534,7 @@ void x() { +@@ -6808,7 +6808,7 @@ void x() { \end{example} \pnum @@ -4094,7 +3870,7 @@ index bf283e46..00d8fae6 100644 can be determined without instantiating a class template definition, it is unspecified whether that instantiation actually takes place. \begin{example} -@@ -6871,7 +6871,7 @@ If an entity is the subject of both an explicit instantiation declaration +@@ -7165,7 +7165,7 @@ If an entity is the subject of both an explicit instantiation declaration and an explicit instantiation definition in the same translation unit, the definition shall follow the declaration. An entity that is the subject of an explicit instantiation declaration and that is also used @@ -4103,7 +3879,7 @@ index bf283e46..00d8fae6 100644 in the translation unit shall be the subject of an explicit instantiation definition somewhere in the program; otherwise the program is ill-formed, no diagnostic required. -@@ -7935,7 +7935,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. +@@ -8250,7 +8250,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. In the following example, assuming a \tcode{signed char} cannot represent the value 1000, @@ -4112,7 +3888,7 @@ index bf283e46..00d8fae6 100644 would be required to convert the \grammarterm{template-argument} of type \tcode{int} to \tcode{signed char}, -@@ -8044,8 +8044,8 @@ is not a reference type: +@@ -8359,8 +8359,8 @@ is not a reference type: \item If \tcode{A} @@ -4123,7 +3899,7 @@ index bf283e46..00d8fae6 100644 \tcode{A} for type deduction; otherwise, -@@ -8053,7 +8053,7 @@ otherwise, +@@ -8368,7 +8368,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -4132,7 +3908,7 @@ index bf283e46..00d8fae6 100644 of \tcode{A} for type -@@ -8149,8 +8149,8 @@ The transformed \tcode{A} +@@ -8464,8 +8464,8 @@ The transformed \tcode{A} can be another pointer or pointer-to-member type that can be converted to the deduced \tcode{A} @@ -4143,7 +3919,7 @@ index bf283e46..00d8fae6 100644 \item If -@@ -8281,7 +8281,7 @@ void test() { +@@ -8598,7 +8598,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -4152,7 +3928,7 @@ index bf283e46..00d8fae6 100644 If there is a target, the function template's function type and the target type are used as the types of -@@ -8328,7 +8328,7 @@ is not a reference type: +@@ -8645,7 +8645,7 @@ is not a reference type: If \tcode{P} is an array type, the pointer type produced by the @@ -4161,7 +3937,7 @@ index bf283e46..00d8fae6 100644 \tcode{P} for type deduction; otherwise, -@@ -8336,7 +8336,7 @@ deduction; otherwise, +@@ -8653,7 +8653,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -4170,7 +3946,7 @@ index bf283e46..00d8fae6 100644 \tcode{P} for type deduction; otherwise, -@@ -8427,7 +8427,7 @@ after a function has been selected. +@@ -8744,7 +8744,7 @@ after a function has been selected. In the context of a call to a conversion function, the return types of the conversion function templates are used. \item @@ -4179,7 +3955,7 @@ index bf283e46..00d8fae6 100644 type is used. \end{itemize} -@@ -8939,7 +8939,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the +@@ -9258,7 +9258,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the template argument list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by $\texttt{P}_i$. @@ -4188,7 +3964,7 @@ index bf283e46..00d8fae6 100644 originally a pack expansion: \begin{itemize} \item if \tcode{P} does not contain a template argument corresponding to -@@ -9002,7 +9002,7 @@ each remaining parameter type in the parameter-type-list +@@ -9321,7 +9321,7 @@ each remaining parameter type in the parameter-type-list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by the function parameter pack. @@ -4197,7 +3973,7 @@ index bf283e46..00d8fae6 100644 originally a function parameter pack: \begin{itemize} \item if \tcode{P} does not contain a function parameter type corresponding to -@@ -9296,8 +9296,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod +@@ -9659,8 +9659,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod In a declaration whose \grammarterm{declarator-id} refers to a specialization of a function template, template argument deduction is performed to identify the specialization to which the declaration refers. Specifically, this is done @@ -4206,10 +3982,10 @@ index bf283e46..00d8fae6 100644 +for \link{explicit instantiations}{temp.explicit}, \link{explicit specializations}{temp.expl.spec}, +and certain \link{friend declarations}{temp.friend}. This is also done to determine whether a deallocation function template specialization matches a placement - \tcode{operator new}\iref{basic.stc.dynamic.deallocation,expr.new}. + allocation function\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index 1b3e2577..8a388c9f 100644 +index 53bec754..7a2d110e 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4221,18 +3997,7 @@ index 1b3e2577..8a388c9f 100644 and values between threads, as summarized in \tref{thread.summary}. -@@ -294,8 +294,8 @@ exception is thrown then a lock shall not have been acquired for the current exe - A type \tcode{L} meets the \defnoldconcept{TimedLockable} requirements if it meets the \oldconcept{Lockable} - requirements and the following expressions are well-formed and have the specified semantics - (\tcode{m} denotes a value of type \tcode{L}, \tcode{rel_time} denotes a value of an --instantiation of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes a value --of an instantiation of \tcode{time_point}\iref{time.point}). -+instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes a value -+of an instantiation of \link{\tcode{time_point}}{time.point}). - - \begin{itemdecl} - m.try_lock_for(rel_time) -@@ -6577,7 +6577,7 @@ namespace std { +@@ -7309,7 +7309,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -4241,8 +4006,8 @@ index 1b3e2577..8a388c9f 100644 An execution agent \term{owns} a mutex from the time it successfully calls one of the lock functions until it calls unlock. Mutexes can be either recursive or non-recursive, and can grant simultaneous ownership to one or many execution agents. Both -@@ -6621,7 +6621,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on - a single mutex appears to occur in a single total order. +@@ -7353,7 +7353,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on + a single mutex appear to occur in a single total order. \begin{note} This -can be viewed as the modification order\iref{intro.multithread} of the @@ -4250,7 +4015,7 @@ index 1b3e2577..8a388c9f 100644 mutex. \end{note} \begin{note} -@@ -6701,7 +6701,7 @@ in the absence of contending mutex acquisitions. +@@ -7433,7 +7433,7 @@ in the absence of contending mutex acquisitions. \pnum \sync If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations @@ -4259,7 +4024,7 @@ index 1b3e2577..8a388c9f 100644 \begin{note} Since \tcode{lock()} does not synchronize with a failed subsequent \tcode{try_lock()}, the visibility rules are weak enough that little would be -@@ -6737,7 +6737,7 @@ Releases the calling thread's ownership of the mutex. +@@ -7469,7 +7469,7 @@ Releases the calling thread's ownership of the mutex. \pnum \sync @@ -4268,19 +4033,7 @@ index 1b3e2577..8a388c9f 100644 lock operations that obtain ownership on the same object. \pnum -@@ -6866,9 +6866,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, - meet the requirements set out below. - In this description, \tcode{m} denotes an object of a mutex type, - \tcode{rel_time} denotes an object of an --instantiation of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes an -+instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes an - object of an --instantiation of \tcode{time_point}\iref{time.point}. -+instantiation of \link{\tcode{time_point}}{time.point}. - \begin{note} - The timed mutex types meet the \oldconcept{TimedLockable} - requirements\iref{thread.req.lockable.timed}. -@@ -7158,7 +7158,7 @@ Releases a shared lock on the mutex held by the calling thread. +@@ -7890,7 +7890,7 @@ Releases a shared lock on the mutex held by the calling thread. \pnum \sync @@ -4289,34 +4042,25 @@ index 1b3e2577..8a388c9f 100644 \tcode{lock()} operations that obtain ownership on the same object. \pnum -@@ -7262,7 +7262,7 @@ meet the requirements set out below. In this description, - \tcode{rel_time} denotes an object of an instantiation of - \tcode{duration}\iref{time.duration}, and - \tcode{abs_time} denotes an object of an instantiation of --\tcode{time_point}\iref{time.point}. -+\link{\tcode{time_point}}{time.point}. - \begin{note} - The shared timed mutex types meet the \oldconcept{SharedTimedLockable} - requirements\iref{thread.req.lockable.shared.timed}. -@@ -7473,7 +7473,7 @@ namespace std { +@@ -8205,7 +8205,7 @@ namespace std { \pnum An object of type \tcode{lock_guard} controls the ownership of a lockable object within a scope. A \tcode{lock_guard} object maintains ownership of a lockable -object throughout the \tcode{lock_guard} object's lifetime\iref{basic.life}. +object throughout the \tcode{lock_guard} object's \deflink{lifetime}{basic.life}. The behavior of a program is undefined if the lockable object referenced by - \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} + \exposid{pm} does not exist for the entire lifetime of the \tcode{lock_guard} object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} -@@ -7546,7 +7546,7 @@ namespace std { +@@ -8278,7 +8278,7 @@ namespace std { \pnum An object of type \tcode{scoped_lock} controls the ownership of lockable objects within a scope. A \tcode{scoped_lock} object maintains ownership of lockable -objects throughout the \tcode{scoped_lock} object's lifetime\iref{basic.life}. +objects throughout the \tcode{scoped_lock} object's \deflink{lifetime}{basic.life}. The behavior of a program is undefined if the lockable objects referenced by - \tcode{pm} do not exist for the entire lifetime of the \tcode{scoped_lock} + \exposid{pm} do not exist for the entire lifetime of the \tcode{scoped_lock} object. -@@ -8703,7 +8703,7 @@ earlier returning execution. +@@ -9435,7 +9435,7 @@ earlier returning execution. \pnum \sync For any given \tcode{once_flag}: all active executions occur in a total @@ -4325,7 +4069,7 @@ index 1b3e2577..8a388c9f 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -10669,22 +10669,21 @@ the state object. +@@ -11410,22 +11410,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4352,7 +4096,7 @@ index 1b3e2577..8a388c9f 100644 \begin{note} This explicitly specifies that the result of the shared state is visible in the objects that reference this state in the sense of data race -@@ -11020,8 +11019,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -11744,8 +11743,8 @@ The class template \tcode{future} defines a type for asynchronous return objects do not share their shared state with other asynchronous return objects. A default-constructed \tcode{future} object has no shared state. A \tcode{future} object with shared state can be created by @@ -4363,7 +4107,7 @@ index 1b3e2577..8a388c9f 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -11331,7 +11330,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -12055,7 +12054,7 @@ object has no shared state. A \tcode{shared_future} object with shared state can be created by conversion from a \tcode{future} object and shares its shared state with the @@ -4372,7 +4116,7 @@ index 1b3e2577..8a388c9f 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -11780,7 +11779,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -12504,7 +12503,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -4382,10 +4126,10 @@ index 1b3e2577..8a388c9f 100644 the first function that successfully detects the ready status of the shared state or diff --git a/source/time.tex b/source/time.tex -index f547e5ef..6c988685 100644 +index a29b08ed..b4d55717 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -1222,7 +1222,7 @@ unless it meets all of the following conditions: +@@ -1216,7 +1216,7 @@ unless it meets all of the following conditions: are valid and each denotes a type\iref{temp.deduct}, \item the expression \tcode{T::is_steady} @@ -4394,7 +4138,7 @@ index f547e5ef..6c988685 100644 \item the expression \tcode{T::now()} is well-formed when treated as an unevaluated operand. -@@ -11084,7 +11084,7 @@ The expression +@@ -11098,7 +11098,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp) \end{codeblock} @@ -4403,7 +4147,7 @@ index f547e5ef..6c988685 100644 \pnum \returns -@@ -11117,7 +11117,7 @@ The expression +@@ -11131,7 +11131,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp, addressof(abbrev)) \end{codeblock} @@ -4412,7 +4156,7 @@ index f547e5ef..6c988685 100644 \pnum \returns -@@ -11154,7 +11154,7 @@ from_stream(declval&>(), +@@ -11168,7 +11168,7 @@ from_stream(declval&>(), declval*>(), &offset) \end{codeblock} @@ -4421,7 +4165,7 @@ index f547e5ef..6c988685 100644 \pnum \returns -@@ -11194,7 +11194,7 @@ The expression +@@ -11208,7 +11208,7 @@ The expression from_stream(declval&>(), @$F$@, tp, addressof(abbrev), &offset) \end{codeblock} @@ -4431,10 +4175,10 @@ index f547e5ef..6c988685 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index d3385267..d72eebe4 100644 +index 402dbea6..af0ec065 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -104,15 +104,15 @@ namespace std { +@@ -120,15 +120,15 @@ namespace std { template struct integer_sequence; template @@ -4451,9 +4195,9 @@ index d3385267..d72eebe4 100644 - using index_sequence_for = make_index_sequence; + using @\libglobal{index_sequence_for}@ = make_index_sequence; - // \ref{pairs}, class template \tcode{pair} - template -@@ -333,7 +333,7 @@ of forwarding functions. + // \ref{intseq.binding}, structured binding support + template struct tuple_size; +@@ -352,7 +352,7 @@ of forwarding functions. \indextext{signal-safe!\idxcode{forward}}% \indextext{signal-safe!\idxcode{move}}% \indextext{signal-safe!\idxcode{move_if_noexcept}}% @@ -4462,7 +4206,7 @@ index d3385267..d72eebe4 100644 \indexlibraryglobal{forward}% \indextext{\idxcode{forward}}% -@@ -508,7 +508,7 @@ template constexpr add_const_t& as_const(T& t) noexcept; +@@ -527,7 +527,7 @@ template constexpr add_const_t& as_const(T& t) noexcept; \pnum The library provides the function template \tcode{declval} to simplify the definition of @@ -4471,7 +4215,7 @@ index d3385267..d72eebe4 100644 \indexlibraryglobal{declval}% \begin{itemdecl} -@@ -1499,7 +1499,7 @@ inline constexpr piecewise_construct_t piecewise_construct{}; +@@ -1814,7 +1814,7 @@ inline constexpr piecewise_construct_t piecewise_construct{}; The \keyword{struct} \tcode{piecewise_construct_t} is an empty class type used as a unique type to disambiguate constructor and function overloading. Specifically, \tcode{pair} has a constructor with \tcode{piecewise_construct_t} as the @@ -4480,7 +4224,7 @@ index d3385267..d72eebe4 100644 for piecewise construction of the elements of the \tcode{pair} object. \rSec1[tuple]{Tuples} -@@ -2144,7 +2144,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. +@@ -2464,7 +2464,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. \pnum \effects Equivalent to the preceding constructors except that each element is constructed with @@ -4489,7 +4233,7 @@ index d3385267..d72eebe4 100644 \end{itemdescr} \rSec3[tuple.assign]{Assignment} -@@ -2810,7 +2810,7 @@ template struct tuple_size; +@@ -3122,7 +3122,7 @@ template struct tuple_size; \pnum Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. If the expression \tcode{TS::value} is well-formed @@ -4498,7 +4242,7 @@ index d3385267..d72eebe4 100644 each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts} with a base characteristic of \begin{codeblock} -@@ -6354,6 +6354,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); +@@ -7356,6 +7356,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); \rSec2[variant.monostate]{Class \tcode{monostate}}% \indexlibraryglobal{monostate}% @@ -4506,7 +4250,7 @@ index d3385267..d72eebe4 100644 \begin{itemdecl} struct monostate{}; \end{itemdecl} -@@ -6522,7 +6523,8 @@ namespace std { +@@ -7527,7 +7528,8 @@ namespace std { \end{codeblock} \pnum @@ -4520,73 +4264,20 @@ index d3385267..d72eebe4 100644 2.43.0 -From 6a179860206436f600f5af84ec4b9005e34e09eb Mon Sep 17 00:00:00 2001 -From: Eelis van der Weegen -Date: Tue, 1 Aug 2017 14:38:23 +0200 -Subject: [PATCH 3/9] Fix dubious \defnx that has see{} in it, and remove range - index entry with the same key. - ---- - source/iostreams.tex | 2 +- - source/templates.tex | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/source/iostreams.tex b/source/iostreams.tex -index f89a4754..ee7b1fc6 100644 ---- a/source/iostreams.tex -+++ b/source/iostreams.tex -@@ -13911,7 +13911,7 @@ without an intervening \grammarterm{root-directory} element. - - \pnum - \indextext{path!normalization|(}% --\defnx{Normalization}{normalization!path|see{path, normalization}} of a generic format pathname means: -+\defnx{Normalization}{normalization!path} of a generic format pathname means: - - \begin{enumerate} - \item If the path is empty, stop. -diff --git a/source/templates.tex b/source/templates.tex -index 00d8fae6..cb2c8a8e 100644 ---- a/source/templates.tex -+++ b/source/templates.tex -@@ -2042,7 +2042,6 @@ so it does match \#2. - \end{example} - - \rSec2[temp.constr.normal]{Constraint normalization} --\indextext{constraint!normalization|(}% - - \pnum - The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is -@@ -2161,10 +2160,11 @@ whose parameter mapping is the identity mapping. - \end{itemize} - - \pnum -+\indextext{normalization|see{constraint, normalization}}% - The process of obtaining the normal form of a - \grammarterm{constraint-expression} - is called --\defnx{normalization}{normalization!constraint|see{constraint, normalization}}. -+\defnx{normalization}{constraint!normalization}. - \begin{note} - Normalization of \grammarterm{constraint-expression}{s} - is performed --- -2.43.0 - - -From 7fdc0e78d979cade12db47da3ae52290fbc3f8a2 Mon Sep 17 00:00:00 2001 +From 41e5a2d3fa6d05b949f0ca91e997d6a792e762e1 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 -Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and +Subject: [PATCH 3/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and literal fragments. --- source/exceptions.tex | 4 +- - source/lex.tex | 176 +++++++------- + source/lex.tex | 180 +++++++-------- source/time.tex | 518 +++++++++++++++++++++--------------------- - 3 files changed, 349 insertions(+), 349 deletions(-) + 3 files changed, 351 insertions(+), 351 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex -index 12cfcb8d..190e0ac6 100644 +index abd4aef1..ea065465 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -135,11 +135,11 @@ does not declare a variable. @@ -4604,10 +4295,10 @@ index 12cfcb8d..190e0ac6 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index aa909af0..fbd79538 100644 +index 5baaf9a1..2e1da4ca 100644 --- a/source/lex.tex +++ b/source/lex.tex -@@ -293,43 +293,43 @@ the numerical value has no other meaning in this context. +@@ -336,43 +336,43 @@ the numerical value has no other meaning in this context. \ucode{000c} & \uname{form feed} & \\ \ucode{0020} & \uname{space} & \\ \ucode{000a} & \uname{line feed} & new-line \\ @@ -4688,7 +4379,7 @@ index aa909af0..fbd79538 100644 \end{floattable} \pnum -@@ -569,7 +569,7 @@ given character: +@@ -612,7 +612,7 @@ given character: \item \indextext{literal!string!raw}% If the next character begins a sequence of characters that could be the prefix @@ -4697,7 +4388,7 @@ index aa909af0..fbd79538 100644 token shall be a raw string literal. Between the initial and final double quote characters of the raw string, any transformations performed in phase 2 (line splicing) are reverted; this reversion -@@ -577,7 +577,7 @@ shall apply before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting +@@ -620,7 +620,7 @@ is applied before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting parenthesis is identified. The raw string literal is defined as the shortest sequence of characters that matches the raw-string pattern \begin{ncbnf} @@ -4706,7 +4397,7 @@ index aa909af0..fbd79538 100644 \end{ncbnf} \item Otherwise, if the next three characters are \tcode{<::} and the subsequent character -@@ -695,15 +695,15 @@ depending on the implementation. +@@ -755,15 +755,15 @@ depending on the implementation. \begin{bnf} \nontermdef{pp-number}\br digit\br @@ -4730,7 +4421,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \pnum -@@ -1130,19 +1130,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1189,19 +1189,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. \nontermdef{binary-literal}\br \terminal{0b} binary-digit\br \terminal{0B} binary-digit\br @@ -4753,7 +4444,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \begin{bnf} -@@ -1173,14 +1173,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1232,14 +1232,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{hexadecimal-digit-sequence}\br hexadecimal-digit\br @@ -4772,7 +4463,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \begin{bnf} -@@ -1195,17 +1195,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1254,17 +1254,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{unsigned-suffix} \textnormal{one of}\br @@ -4793,7 +4484,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \begin{bnf} -@@ -1244,7 +1244,7 @@ when determining the value. +@@ -1303,7 +1303,7 @@ when determining the value. \pnum The \grammarterm{hexadecimal-digit}s @@ -4802,7 +4493,7 @@ index aa909af0..fbd79538 100644 have decimal values ten through fifteen. \begin{example} The number twelve can be written \tcode{12}, \tcode{014}, -@@ -1288,7 +1288,7 @@ none & +@@ -1347,7 +1347,7 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4811,7 +4502,7 @@ index aa909af0..fbd79538 100644 \tcode{unsigned int} & \tcode{unsigned int}\\ & -@@ -1297,7 +1297,7 @@ none & +@@ -1356,7 +1356,7 @@ none & & \tcode{unsigned long long int} & \tcode{unsigned long long int}\\\hline @@ -4820,7 +4511,7 @@ index aa909af0..fbd79538 100644 \tcode{long int} & \tcode{long int}\\ & -@@ -1309,22 +1309,22 @@ none & +@@ -1368,22 +1368,22 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4848,7 +4539,7 @@ index aa909af0..fbd79538 100644 & \\\hline \tcode{z} or \tcode{Z} & -@@ -1372,12 +1372,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1431,12 +1431,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \indextext{literal!character}% \begin{bnf} \nontermdef{character-literal}\br @@ -4863,7 +4554,22 @@ index aa909af0..fbd79538 100644 \end{bnf} \begin{bnf} -@@ -1428,16 +1428,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1466,12 +1466,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. + + \begin{bnf} + \nontermdef{simple-escape-sequence}\br +- \terminal{\textbackslash} simple-escape-sequence-char ++ \literalterminal{\textbackslash} simple-escape-sequence-char + \end{bnf} + + \begin{bnf} + \nontermdef{simple-escape-sequence-char} \textnormal{one of}\br +- \terminal{' " ? \textbackslash{} a b f n r t v} ++ \literalterminal{' " ? \textbackslash{} a b f n r t v} + \end{bnf} + + \begin{bnf} +@@ -1487,21 +1487,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{octal-escape-sequence}\br @@ -4886,7 +4592,13 @@ index aa909af0..fbd79538 100644 \end{bnf} \begin{bnf} -@@ -1625,42 +1625,42 @@ is supported for compatibility with \CppXIV{} and C. + \nontermdef{conditional-escape-sequence}\br +- \terminal{\textbackslash} conditional-escape-sequence-char ++ \literalterminal{\textbackslash} conditional-escape-sequence-char + \end{bnf} + + \begin{bnf} +@@ -1684,42 +1684,42 @@ is supported for compatibility with \CppXIV{} and C. \begin{bnf} \nontermdef{fractional-constant}\br @@ -4940,18 +4652,16 @@ index aa909af0..fbd79538 100644 \end{bnf} \pnum -@@ -1745,8 +1745,8 @@ chosen in an \impldef{choice of larger or smaller value of - \indextext{literal!string}% +@@ -1814,7 +1814,7 @@ std::float32_t z = 1e1000000000f32; // either greatest finite value or positive \begin{bnf} \nontermdef{string-literal}\br -- \opt{encoding-prefix} \terminal{"} \opt{s-char-sequence} \terminal{"}\br + \opt{encoding-prefix} plain-string-literal\br - \opt{encoding-prefix} \terminal{R} raw-string -+ \opt{encoding-prefix} \literalterminal{"} \opt{s-char-sequence} \literalterminal{"}\br + \opt{encoding-prefix} \literalterminal{R} raw-string \end{bnf} \begin{bnf} -@@ -1769,7 +1769,7 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1842,7 +1842,7 @@ std::float32_t z = 1e1000000000f32; // either greatest finite value or positive \begin{bnf} \nontermdef{raw-string}\br @@ -4960,7 +4670,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \begin{bnf} -@@ -1856,7 +1856,7 @@ UTF-32 & +@@ -1928,7 +1928,7 @@ UTF-32 & \pnum \indextext{literal!string!raw}% @@ -4970,10 +4680,10 @@ index aa909af0..fbd79538 100644 in the prefix is a \defn{raw string literal}. The \grammarterm{d-char-sequence} serves as a delimiter. The terminating diff --git a/source/time.tex b/source/time.tex -index 6c988685..bdbef27b 100644 +index b4d55717..62226224 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -2200,7 +2200,7 @@ If the parse fails to decode a valid duration, +@@ -2201,7 +2201,7 @@ If the parse fails to decode a valid duration, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{d} is not modified. If \tcode{\%Z} is used and successfully parsed, that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. @@ -4982,7 +4692,7 @@ index 6c988685..bdbef27b 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -2792,9 +2792,9 @@ as specified in \ref{time.parse}. +@@ -2793,9 +2793,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -4994,7 +4704,7 @@ index 6c988685..bdbef27b 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp -@@ -2985,9 +2985,9 @@ as specified in \ref{time.parse}. +@@ -2986,9 +2986,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -5006,7 +4716,7 @@ index 6c988685..bdbef27b 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp -@@ -3184,9 +3184,9 @@ as specified in \ref{time.parse}. +@@ -3185,9 +3185,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -5018,7 +4728,7 @@ index 6c988685..bdbef27b 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp prior to assigning that difference to \tcode{tp}. -@@ -3347,9 +3347,9 @@ as specified in \ref{time.parse}. +@@ -3348,9 +3348,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -5030,7 +4740,7 @@ index 6c988685..bdbef27b 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp prior to assigning that difference to \tcode{tp}. -@@ -3454,9 +3454,9 @@ as specified in \ref{time.parse}. +@@ -3455,9 +3455,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -5042,7 +4752,7 @@ index 6c988685..bdbef27b 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp prior to assigning that difference to \tcode{tp}. -@@ -3565,9 +3565,9 @@ as specified in \ref{time.parse}. +@@ -3570,9 +3570,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -5054,7 +4764,7 @@ index 6c988685..bdbef27b 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4218,9 +4218,9 @@ as specified in \ref{time.parse}. +@@ -4223,9 +4223,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid day, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{d} is not modified. @@ -5066,7 +4776,7 @@ index 6c988685..bdbef27b 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4532,9 +4532,9 @@ as specified in \ref{time.parse}. +@@ -4537,9 +4537,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid month, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{m} is not modified. @@ -5078,7 +4788,7 @@ index 6c988685..bdbef27b 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4876,9 +4876,9 @@ as specified in \ref{time.parse}. +@@ -4881,9 +4881,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid year, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{y} is not modified. @@ -5090,7 +4800,7 @@ index 6c988685..bdbef27b 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -5259,9 +5259,9 @@ as specified in \ref{time.parse}. +@@ -5264,9 +5264,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid weekday, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{wd} is not modified. @@ -5102,7 +4812,7 @@ index 6c988685..bdbef27b 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -5642,9 +5642,9 @@ as specified in \ref{time.parse}. +@@ -5647,9 +5647,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid \tcode{month_day}, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{md} is not modified. @@ -5114,7 +4824,7 @@ index 6c988685..bdbef27b 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -6322,9 +6322,9 @@ as specified in \ref{time.parse}. +@@ -6327,9 +6327,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid \tcode{year_month}, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{ym} is not modified. @@ -5126,7 +4836,7 @@ index 6c988685..bdbef27b 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -6786,9 +6786,9 @@ as specified in \ref{time.parse}. +@@ -6791,9 +6791,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid \tcode{year_month_day}, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{ymd} is not modified. @@ -5138,7 +4848,7 @@ index 6c988685..bdbef27b 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -10478,23 +10478,23 @@ according to the following syntax: +@@ -10486,23 +10486,23 @@ according to the following syntax: \begin{ncbnf} \fmtnontermdef{literal-char}\br @@ -5167,7 +4877,7 @@ index 6c988685..bdbef27b 100644 \end{ncbnf} The productions -@@ -10567,11 +10567,11 @@ the result of formatting a chrono type +@@ -10575,11 +10575,11 @@ the result of formatting a chrono type does not contain time zone abbreviation and time zone offset information. If the information is available, @@ -5181,7 +4891,7 @@ index 6c988685..bdbef27b 100644 conversion specifier appears in the \fmtgrammarterm{chrono-format-spec}, an exception of type \tcode{format_error} is thrown, -@@ -10587,7 +10587,7 @@ A \tcode{duration} does not contain enough information +@@ -10595,7 +10595,7 @@ A \tcode{duration} does not contain enough information to format as a \tcode{weekday}. \end{example} However, if a flag refers to a ``time of day'' @@ -5190,7 +4900,7 @@ index 6c988685..bdbef27b 100644 then a specialization of \tcode{duration} is interpreted as the time of day elapsed since midnight. -@@ -10599,57 +10599,57 @@ the time of day elapsed since midnight. +@@ -10607,57 +10607,57 @@ the time of day elapsed since midnight. \hline \lhdr{Specifier} & \rhdr{Replacement} \\ \capsep \endhead @@ -5266,7 +4976,7 @@ index 6c988685..bdbef27b 100644 \\ \rowsep \tcode{\%g} & The last two decimal digits of the calendar year -@@ -10660,158 +10660,158 @@ If the result is a single digit it is prefixed by \tcode{0}. +@@ -10668,164 +10668,164 @@ If the result is a single digit it is prefixed by \tcode{0}. The calendar year as a decimal number, as specified in ISO 8601-1:2019 for the week calendar. If the result is less than four digits @@ -5450,7 +5160,8 @@ index 6c988685..bdbef27b 100644 \\ \rowsep -\tcode{\%y} & +\noncxxtcode{\%y} & - The last two decimal digits of the year. + The last two decimal digits of the year, + regardless of the sign of the year. -If the result is a single digit, it is prefixed by \tcode{0}. -The modified command \tcode{\%Oy} produces the locale's alternative representation. -The modified command \tcode{\%Ey} produces the locale's alternative representation @@ -5459,6 +5170,11 @@ index 6c988685..bdbef27b 100644 +The modified command \noncxxtcode{\%Oy} produces the locale's alternative representation. +The modified command \noncxxtcode{\%Ey} produces the locale's alternative representation +of offset from \noncxxtcode{\%EC} (year only). + \begin{tailexample} + \begin{codeblock} + cout << format("{:%C %y}", -1976y); // prints \tcode{-20 76} + \end{codeblock} + \end{tailexample} \\ \rowsep -\tcode{\%Y} & +\noncxxtcode{\%Y} & @@ -5496,7 +5212,7 @@ index 6c988685..bdbef27b 100644 \\ \end{LongTable} -@@ -10859,9 +10859,9 @@ template +@@ -10873,9 +10873,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5508,7 +5224,7 @@ index 6c988685..bdbef27b 100644 an offset of \tcode{0min} is formatted. \end{itemdescr} -@@ -10874,9 +10874,9 @@ template +@@ -10888,9 +10888,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5520,7 +5236,7 @@ index 6c988685..bdbef27b 100644 an offset of \tcode{0min} is formatted. If the argument represents a time during a positive leap second insertion, and if a seconds field is formatted, -@@ -10893,9 +10893,9 @@ template +@@ -10907,9 +10907,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5532,7 +5248,7 @@ index 6c988685..bdbef27b 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted by a \tcode{sys_time} initialized with -@@ -10914,9 +10914,9 @@ template +@@ -10928,9 +10928,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5544,7 +5260,7 @@ index 6c988685..bdbef27b 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted by a \tcode{sys_time} initialized with -@@ -10935,9 +10935,9 @@ template +@@ -10949,9 +10949,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5556,7 +5272,7 @@ index 6c988685..bdbef27b 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted -@@ -10955,7 +10955,7 @@ template +@@ -10969,7 +10969,7 @@ template \begin{itemdescr} \pnum \remarks @@ -5565,7 +5281,7 @@ index 6c988685..bdbef27b 100644 an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -10996,18 +10996,18 @@ passed to \tcode{formatter::format}. +@@ -11010,18 +11010,18 @@ passed to \tcode{formatter::format}. \pnum \remarks If the \fmtgrammarterm{chrono-specs} is omitted, @@ -5589,7 +5305,7 @@ index 6c988685..bdbef27b 100644 and \tcode{f.offset_sec} is a null pointer value, then an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -11211,8 +11211,8 @@ except that they have an unspecified effect +@@ -11225,8 +11225,8 @@ except that they have an unspecified effect on the value returned by subsequent calls to \tcode{basic_istream<>::gcount()}. Each overload takes a format string containing ordinary characters and flags which have special meaning. @@ -5600,7 +5316,7 @@ index 6c988685..bdbef27b 100644 During parsing each flag interprets characters as parts of date and time types according to~\tref{time.parse.spec}. Some flags can be modified by a width parameter -@@ -11230,7 +11230,7 @@ the information that the format flag refers to, +@@ -11244,7 +11244,7 @@ the information that the format flag refers to, A \tcode{duration} cannot represent a \tcode{weekday}. \end{example} However, if a flag refers to a ``time of day'' @@ -5609,7 +5325,7 @@ index 6c988685..bdbef27b 100644 then a specialization of \tcode{duration} is parsed as the time of day elapsed since midnight. -@@ -11250,251 +11250,251 @@ is called on the \tcode{basic_istream}. +@@ -11264,229 +11264,229 @@ is called on the \tcode{basic_istream}. \hline \lhdr{Flag} & \rhdr{Parsed value} \\ \capsep \endhead @@ -5919,7 +5635,8 @@ index 6c988685..bdbef27b 100644 \\ \rowsep -\tcode{\%y} & +\noncxxtcode{\%y} & - The last two decimal digits of the year. + The last two decimal digits of the year, + regardless of the sign of the year. If the century is not otherwise specified -(e.g., with \tcode{\%C}), +(e.g., with \noncxxtcode{\%C}), @@ -5936,6 +5653,11 @@ index 6c988685..bdbef27b 100644 -The modified commands \tcode{\%Ey} and \tcode{\%Oy} interpret +The modified commands \noncxxtcode{\%Ey} and \noncxxtcode{\%Oy} interpret the locale's alternative representation. + \begin{tailexample} + \begin{codeblock} +@@ -11495,27 +11495,27 @@ istringstream{"-20 76"} >> parse("%3C %y", y); // \tcode{y == -1976y} is \tcode + \end{codeblock} + \end{tailexample} \\ \rowsep -\tcode{\%Y} & +\noncxxtcode{\%Y} & @@ -5975,7 +5697,7 @@ index 6c988685..bdbef27b 100644 The time zone abbreviation or name. A single word is parsed. This word can only contain characters -@@ -11502,8 +11502,8 @@ from the basic character set\iref{lex.charset} +@@ -11523,8 +11523,8 @@ from the basic character set\iref{lex.charset} that are alphanumeric, or one of \tcode{'_'}, \tcode{'/'}, \tcode{'-'}, or \tcode{'+'}. \\ \rowsep @@ -5990,10 +5712,10 @@ index 6c988685..bdbef27b 100644 2.43.0 -From fd2502ad8ac71c2486a37945c222a60c4a2d6333 Mon Sep 17 00:00:00 2001 +From 53d23fcadc9df8c3555b3e41d6dcfcd5f9ef2057 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 -Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. +Subject: [PATCH 4/9] Remove more inappropriate paragraph breaks. --- source/algorithms.tex | 4 ---- @@ -6001,14 +5723,13 @@ Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. source/classes.tex | 8 -------- source/compatibility.tex | 5 ----- source/concepts.tex | 16 ---------------- - source/containers.tex | 15 --------------- + source/containers.tex | 11 ----------- source/declarations.tex | 14 -------------- - source/exceptions.tex | 5 ----- - source/expressions.tex | 26 -------------------------- + source/exceptions.tex | 3 --- + source/expressions.tex | 24 ------------------------ source/future.tex | 8 -------- source/iostreams.tex | 15 --------------- source/iterators.tex | 8 -------- - source/lex.tex | 1 - source/lib-intro.tex | 17 ----------------- source/limits.tex | 1 - source/memory.tex | 2 -- @@ -6017,19 +5738,19 @@ Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. source/overloading.tex | 11 ----------- source/preprocessor.tex | 10 ---------- source/ranges.tex | 13 ------------- - source/statements.tex | 3 --- + source/statements.tex | 1 - source/support.tex | 4 ---- source/templates.tex | 36 ------------------------------------ source/threads.tex | 17 ----------------- source/time.tex | 19 ------------------- source/utilities.tex | 7 ------- - 27 files changed, 278 deletions(-) + 26 files changed, 267 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 84d18c8b..71678537 100644 +index cd4ba8fb..6eaef6b7 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -6833,7 +6833,6 @@ but stronger than those for a partial ordering. +@@ -8698,7 +8698,6 @@ but stronger than those for a partial ordering. If we define \tcode{equiv(a, b)} as \tcode{!comp(a, b) \&\& !comp(b, a)}, then the requirements are that \tcode{comp} and \tcode{equiv} both be transitive relations: @@ -6037,15 +5758,15 @@ index 84d18c8b..71678537 100644 \begin{itemize} \item \tcode{comp(a, b) \&\& comp(b, c)} implies \tcode{comp(a, c)} \item \tcode{equiv(a, b) \&\& equiv(b, c)} implies \tcode{equiv(a, c)} -@@ -7756,7 +7755,6 @@ Let $N = \tcode{last - first}$: - For the overload with an \tcode{ExecutionPolicy}, +@@ -9750,7 +9749,6 @@ Let $N = \tcode{last - first}$: + For the parallel algorithm overloads, \bigoh{N \log N} swaps and \bigoh{N} applications of the predicate. \end{itemize} - \end{itemdescr} \indexlibraryglobal{stable_partition}% -@@ -8598,7 +8596,6 @@ A random access range \range{a}{b} is a +@@ -10909,7 +10907,6 @@ A random access range \range{a}{b} is a {heap with respect to comp and proj@heap with respect to \tcode{comp} and \tcode{proj}} for a comparator and projection \tcode{comp} and \tcode{proj} if its elements are organized such that: @@ -6053,7 +5774,7 @@ index 84d18c8b..71678537 100644 \begin{itemize} \item With \tcode{$N$ = b - a}, for all $i$, $0 < i < N$, -@@ -11175,7 +11172,6 @@ template +@@ -13573,7 +13570,6 @@ template \pnum Some algorithms in this subclause are constrained with the following exposition-only concepts: @@ -6062,18 +5783,18 @@ index 84d18c8b..71678537 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index ed278134..728170cc 100644 +index eab80b45..db5f28a2 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -267,7 +267,6 @@ enum { up, down }; // defines \tcode{up} and \tcode{down} +@@ -312,7 +312,6 @@ int X::y = 1; // defines \tcode{X::y} + enum { up, down }; // defines \tcode{up} and \tcode{down} namespace N { int d; } // defines \tcode{N} and \tcode{N::d} - namespace N1 = N; // defines \tcode{N1} X anX; // defines \tcode{anX} - \end{codeblock} whereas these are just declarations: \begin{codeblock} -@@ -776,7 +775,6 @@ is subject to the requirements described in this paragraph (recursively). +@@ -850,7 +849,6 @@ compute equivalent values\iref{expr.eq}. \pnum For the purposes of the preceding requirements: @@ -6081,7 +5802,7 @@ index ed278134..728170cc 100644 \begin{itemize} \item If \tcode{D} is a class with an implicitly-declared constructor\iref{class.default.ctor,class.copy.ctor}, -@@ -5814,7 +5812,6 @@ has the top-level cv-qualifier \keyword{volatile}. +@@ -6267,7 +6265,6 @@ has the top-level cv-qualifier \keyword{volatile}. \pnum Every integer type has an \term{integer conversion rank} defined as follows: @@ -6090,10 +5811,10 @@ index ed278134..728170cc 100644 \item No two signed integer types other than \keyword{char} and \tcode{\keyword{signed} \keyword{char}} (if \keyword{char} is signed) have the same rank, even if they have diff --git a/source/classes.tex b/source/classes.tex -index 170c2eb3..dc2b7d0f 100644 +index 8c2f3c53..fd067ac2 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -1663,7 +1663,6 @@ for each non-static data member of +@@ -1640,7 +1640,6 @@ for each non-static data member of that is of class type (or array thereof), the constructor selected to copy/move that member is trivial; \end{itemize} @@ -6101,7 +5822,7 @@ index 170c2eb3..dc2b7d0f 100644 \indextext{constructor!move!non-trivial}% otherwise the copy/move constructor is \defnx{non-trivial}{constructor!copy!nontrivial}. -@@ -3285,7 +3284,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat +@@ -3263,7 +3262,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat destructor and \tcode{N} has a non-trivial constructor (for instance, if they declare or inherit virtual functions), the active member of \tcode{u} can be safely switched from \tcode{m} to \tcode{n} using the destructor and placement \grammarterm{new-expression} as follows: @@ -6109,7 +5830,7 @@ index 170c2eb3..dc2b7d0f 100644 \begin{codeblock} u.m.~M(); new (&u.n) N; -@@ -3463,7 +3461,6 @@ A local class cannot have static data members\iref{class.static.data}. +@@ -3445,7 +3443,6 @@ A local class cannot have static data members\iref{class.static.data}. \indextext{multiple inheritance}% A list of base classes can be specified in a class definition using the notation: @@ -6117,7 +5838,7 @@ index 170c2eb3..dc2b7d0f 100644 \begin{bnf} \nontermdef{base-clause}\br \terminal{:} base-specifier-list -@@ -5422,7 +5419,6 @@ initializers for direct and virtual base class subobjects and +@@ -5424,7 +5421,6 @@ initializers for direct and virtual base class subobjects and non-static data members can be specified by a \grammarterm{ctor-initializer}, which has the form @@ -6125,7 +5846,7 @@ index 170c2eb3..dc2b7d0f 100644 \begin{bnf} \nontermdef{ctor-initializer}\br \terminal{:} mem-initializer-list -@@ -5893,7 +5889,6 @@ public: +@@ -5895,7 +5891,6 @@ public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; \end{codeblock} @@ -6133,7 +5854,7 @@ index 170c2eb3..dc2b7d0f 100644 \end{example} \rSec2[class.inhctor.init]{Initialization by inherited constructor}% -@@ -6549,7 +6544,6 @@ any non-static data member of \tcode{C} is of reference type or +@@ -6551,7 +6546,6 @@ any non-static data member of \tcode{C} is of reference type or A binary operator expression \tcode{a @ b} is \defnx{usable}{usable!binary operator expression} if either @@ -6141,7 +5862,7 @@ index 170c2eb3..dc2b7d0f 100644 \begin{itemize} \item \tcode{a} or \tcode{b} is of class or enumeration type and -@@ -6670,7 +6664,6 @@ The \defnadj{synthesized}{three-way comparison} +@@ -6672,7 +6666,6 @@ The \defnadj{synthesized}{three-way comparison} of type \tcode{R}\iref{cmp.categories} of glvalues \tcode{a} and \tcode{b} of the same type is defined as follows: @@ -6149,7 +5870,7 @@ index 170c2eb3..dc2b7d0f 100644 \begin{itemize} \item If \tcode{a <=> b} is usable\iref{class.compare.default} and -@@ -6770,7 +6763,6 @@ The \defn{common comparison type} \tcode{U} +@@ -6772,7 +6765,6 @@ The \defn{common comparison type} \tcode{U} of a possibly-empty list of $n$ comparison category types $\tcode{T}_0$, $\tcode{T}_1$, $\dotsc$, $\tcode{T}_{n-1}$ is defined as follows: @@ -6158,10 +5879,10 @@ index 170c2eb3..dc2b7d0f 100644 \item If at least one $\tcode{T}_i$ is \tcode{std::partial_ordering}, diff --git a/source/compatibility.tex b/source/compatibility.tex -index 3a4119ed..543204a0 100644 +index cdca4c22..74cce624 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -2552,7 +2552,6 @@ Overspecification. +@@ -2583,7 +2583,6 @@ Overspecification. \effect The signatures of the following member functions changed from taking an \tcode{iterator} to taking a \tcode{const_iterator}: @@ -6169,7 +5890,7 @@ index 3a4119ed..543204a0 100644 \begin{itemize} \item \tcode{insert(iter, val)} for \tcode{vector}, \tcode{deque}, \tcode{list}, \tcode{set}, \tcode{multiset}, \tcode{map}, \tcode{multimap} -@@ -2624,7 +2623,6 @@ Clarify intentions, avoid workarounds. +@@ -2655,7 +2654,6 @@ Clarify intentions, avoid workarounds. Valid \CppIII{} code that relies on implicit boolean conversions will fail to compile with this revision of \Cpp{}. Such conversions occur in the following conditions: @@ -6177,7 +5898,7 @@ index 3a4119ed..543204a0 100644 \begin{itemize} \item passing a value to a function that takes an argument of type \tcode{bool}; \item using \tcode{operator==} to compare to \tcode{false} or \tcode{true}; -@@ -3727,7 +3725,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in +@@ -3773,7 +3771,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in \pnum Header \libheaderref{cstring}: The following functions have different declarations: @@ -6185,7 +5906,7 @@ index 3a4119ed..543204a0 100644 \begin{itemize} \item \tcode{strchr} \item \tcode{strpbrk} -@@ -3741,7 +3738,6 @@ Subclause \ref{cstring.syn} describes the changes. +@@ -3787,7 +3784,6 @@ Subclause \ref{cstring.syn} describes the changes. \pnum Header \libheaderref{cwchar}: The following functions have different declarations: @@ -6193,7 +5914,7 @@ index 3a4119ed..543204a0 100644 \begin{itemize} \item \tcode{wcschr} \item \tcode{wcspbrk} -@@ -3766,7 +3762,6 @@ in addition to the names declared in +@@ -3812,7 +3808,6 @@ in addition to the names declared in \pnum Header \libheaderref{cstdlib}: The following functions have different behavior: @@ -6202,7 +5923,7 @@ index 3a4119ed..543204a0 100644 \item \tcode{atexit} \item \tcode{exit} diff --git a/source/concepts.tex b/source/concepts.tex -index 6bd0435e..0bfd8612 100644 +index 42828a4b..3e64abc8 100644 --- a/source/concepts.tex +++ b/source/concepts.tex @@ -150,7 +150,6 @@ already specifies exactly such an expression explicitly. @@ -6331,10 +6052,10 @@ index 6bd0435e..0bfd8612 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 9c719111..b1b1b3fb 100644 +index 0e937574..0be602a1 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -685,7 +685,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. +@@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. \ref{vector.modifiers}) all container types defined in this Clause meet the following additional requirements: @@ -6342,7 +6063,7 @@ index 9c719111..b1b1b3fb 100644 \begin{itemize} \item If an exception is thrown by an -@@ -748,7 +747,6 @@ as input iterators. +@@ -751,7 +750,6 @@ as input iterators. Likewise, the extent to which an implementation determines that a type cannot be an allocator is unspecified, except that as a minimum a type \tcode{A} shall not qualify as an allocator unless it meets both of the following conditions: @@ -6350,7 +6071,7 @@ index 9c719111..b1b1b3fb 100644 \begin{itemize} \item The \grammarterm{qualified-id} \tcode{A::value_type} is valid and denotes a type\iref{temp.deduct}. -@@ -978,7 +976,6 @@ is not allocator-aware or is a specialization of \tcode{basic_string}, +@@ -982,7 +980,6 @@ is not allocator-aware or is a specialization of \tcode{basic_string}, the terms below are defined as if \tcode{A} were \tcode{allocator} --- no allocator object needs to be created and user specializations of \tcode{allocator} are not instantiated: @@ -6358,7 +6079,7 @@ index 9c719111..b1b1b3fb 100644 \begin{itemize} \item \tcode{T} is \defnx{\oldconcept{DefaultInsertable} into \tcode{X}} -@@ -4036,14 +4033,12 @@ such that distance from +@@ -4045,14 +4042,12 @@ such that distance from to \tcode{j} is positive, the following condition holds: @@ -6373,15 +6094,15 @@ index 9c719111..b1b1b3fb 100644 \begin{codeblock} value_comp(*i, *j) != false \end{codeblock} -@@ -6055,7 +6050,6 @@ define class templates that meet the requirements for sequence containers. +@@ -6064,7 +6059,6 @@ define class templates that meet the requirements for sequence containers. \pnum The following exposition-only alias template may appear in deduction guides for sequence containers: - \begin{codeblock} template - using @\placeholdernc{iter-value-type}@ = typename iterator_traits::value_type; // \expos -@@ -9325,7 +9319,6 @@ If \tcode{size() < sz}, + using @\placeholdernc{iter-value-type}@ = iterator_traits::value_type; // \expos +@@ -9367,7 +9361,6 @@ If \tcode{size() < sz}, appends \tcode{sz - size()} default-inserted elements to the sequence. If \tcode{sz <= size()}, equivalent to: @@ -6389,29 +6110,15 @@ index 9c719111..b1b1b3fb 100644 \begin{codeblock} list::iterator it = begin(); advance(it, sz); -@@ -10614,13 +10607,11 @@ static constexpr void swap(reference x, reference y) noexcept; - \pnum - \effects - Exchanges the contents of \tcode{x} and \tcode{y} as if by: -- - \begin{codeblock} - bool b = x; - x = y; - y = b; - \end{codeblock} -- - \end{itemdescr} - - \begin{itemdecl} -@@ -20114,7 +20105,6 @@ For each of +@@ -20331,7 +20324,6 @@ For each of \tcode{stack}, - the library provides the following formatter specialization + the library provides the following constexpr-enabled formatter specialization where \tcode{\placeholder{adaptor-type}} is the name of the template: - \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -24298,7 +24288,6 @@ typename A::offset_policy +@@ -24583,7 +24575,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6419,43 +6126,27 @@ index 9c719111..b1b1b3fb 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -25197,7 +25186,6 @@ the \tcode{SliceSpecifier} arguments. - \pnum - For each function defined in \ref{mdspan.sub} that - takes a parameter pack named \tcode{slices} as an argument: -- - \begin{itemize} - \item let \tcode{index_type} be - \begin{itemize} -@@ -25461,7 +25449,6 @@ $\le \tcode{src.extent($k$)}$ +@@ -26028,7 +26019,6 @@ for the $k^\text{th}$ extent of \tcode{src}. \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: - \begin{itemize} \item - %FIXME: I think we want the count here, "number" is ambiguous. -@@ -25472,7 +25459,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and - for each rank index $k$ of \tcode{Extents} such that - \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, - \tcode{SubExt\-ents::static_extent(\placeholder{map-rank}[$k$])} equals: + \tcode{SubExtents::rank()} equals +@@ -26040,7 +26030,6 @@ the type of \tcode{slices...[$k$]} is not a collapsing slice type, + \tcode{SubExt\-ents::static_extent(\placeholder{MAP_RANK}(slices, $k$))} + equals the following, where $\Sigma_k$ + denotes the type of \tcode{slices...[$k$]}: - \begin{itemize} \item \tcode{Extents::static_extent($k$)} -@@ -25512,7 +25498,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that - for each $k$ - for which \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, - \tcode{ext.extent(\placeholder{map-rank}[$k$])} equals: -- - \begin{itemize} - \item - \tcode{$s_k$.extent == 0 ? 0 : 1 + (\exposid{de-ice}($s_k$.extent) - 1) / \exposid{de-ice}($s_k$.stride)} diff --git a/source/declarations.tex b/source/declarations.tex -index 1af3ee51..b27354dd 100644 +index cea5493a..38e1f367 100644 --- a/source/declarations.tex +++ b/source/declarations.tex -@@ -1557,7 +1557,6 @@ a partial specialization\iref{temp.spec.partial}, +@@ -1594,7 +1594,6 @@ a partial specialization\iref{temp.spec.partial}, an explicit instantiation\iref{temp.explicit}, or it has one of the following forms: @@ -6463,7 +6154,7 @@ index 1af3ee51..b27354dd 100644 \begin{ncsimplebnf} class-key \opt{attribute-specifier-seq} identifier \terminal{;}\br class-key \opt{attribute-specifier-seq} simple-template-id \terminal{;} -@@ -2396,7 +2395,6 @@ the \grammarterm{declarator} declares a function. +@@ -2499,7 +2498,6 @@ the \grammarterm{declarator} declares a function. \pnum Declarators have the syntax @@ -6471,7 +6162,7 @@ index 1af3ee51..b27354dd 100644 \begin{bnf} \nontermdef{declarator}\br ptr-declarator\br -@@ -4294,7 +4292,6 @@ In the following code, +@@ -4405,7 +4403,6 @@ In the following code, \tcode{g} will be called with the value \tcode{f(2)}: @@ -6479,7 +6170,7 @@ index 1af3ee51..b27354dd 100644 \begin{codeblock} int a = 1; int f(int); -@@ -4953,7 +4950,6 @@ To +@@ -5075,7 +5072,6 @@ To an object of type \tcode{T} means: @@ -6487,7 +6178,7 @@ index 1af3ee51..b27354dd 100644 \begin{itemize} \item If -@@ -5152,7 +5148,6 @@ is sequenced before those associated with +@@ -5285,7 +5281,6 @@ is sequenced before those associated with the initialization of the $j^\text{th}$ element. \item Otherwise, if the destination type is a class type: @@ -6495,7 +6186,7 @@ index 1af3ee51..b27354dd 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -6064,7 +6059,6 @@ a program that necessitates such a binding is ill-formed. +@@ -6203,7 +6198,6 @@ a program that necessitates such a binding is ill-formed. A reference to type ``\cvqual{cv1} \tcode{T1}'' is initialized by an expression of type ``\cvqual{cv2} \tcode{T2}'' as follows:% \indextext{binding!reference} @@ -6503,7 +6194,7 @@ index 1af3ee51..b27354dd 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6531,7 +6525,6 @@ int j { 1 }; // initialize to 1 +@@ -6671,7 +6665,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -6511,15 +6202,15 @@ index 1af3ee51..b27354dd 100644 \end{itemize} \pnum -@@ -7611,7 +7604,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, - where $\tcode{U}_i$ is an lvalue reference if - the initializer is an lvalue and an rvalue reference otherwise, +@@ -7757,7 +7750,6 @@ as $\tcode{T}_i$ if the initializer is a prvalue, + as ``lvalue reference to $\tcode{T}_i$'' if the initializer is an lvalue, or + as ``rvalue reference to $\tcode{T}_i$'' otherwise, variables are introduced with unique names $\tcode{r}_i$ as follows: - \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7743,7 +7735,6 @@ struct S { +@@ -7889,7 +7881,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6527,7 +6218,7 @@ index 1af3ee51..b27354dd 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7840,7 +7831,6 @@ If the underlying +@@ -7985,7 +7976,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6535,15 +6226,15 @@ index 1af3ee51..b27354dd 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8295,7 +8285,6 @@ void h() { +@@ -8443,7 +8433,6 @@ void h() { \pnum - A \grammarterm{namespace-alias-definition} declares an alternate name for a - namespace according to the following grammar: + A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} + according to the following grammar: - \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8450,7 +8439,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8617,7 +8606,6 @@ not declare functions or function templates, the use of the name is ill-formed\i In particular, the name of a variable, function or enumerator does not hide the name of a class or enumeration declared in a different namespace. For example, @@ -6551,7 +6242,7 @@ index 1af3ee51..b27354dd 100644 \begin{codeblock} namespace A { class X { }; -@@ -9003,7 +8991,6 @@ otherwise identical. +@@ -9180,7 +9168,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6559,7 +6250,7 @@ index 1af3ee51..b27354dd 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -9852,7 +9839,6 @@ may be applied to a function or a lambda call operator or +@@ -10057,7 +10044,6 @@ may be applied to a function or a lambda call operator or to the declaration of a class or enumeration. An \grammarterm{attribute-argument-clause} may be present and, if present, shall have the form: @@ -6568,7 +6259,7 @@ index 1af3ee51..b27354dd 100644 \terminal{(} unevaluated-string \terminal{)} \end{ncbnf} diff --git a/source/exceptions.tex b/source/exceptions.tex -index 190e0ac6..cb9faf71 100644 +index ea065465..869f7588 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -89,7 +89,6 @@ void f() { @@ -6579,8 +6270,8 @@ index 190e0ac6..cb9faf71 100644 \end{codeblock} \end{example} \indextext{\idxcode{goto}!and try block}% -@@ -561,12 +560,10 @@ to pointers to private or protected or ambiguous classes - a \link{function pointer conversion}{conv.fctptr} +@@ -561,12 +560,10 @@ to pointers to private or protected or ambiguous classes, + a \link{function pointer conversion}{conv.fctptr}, \item% a \link{qualification conversion}{conv.qual}, or - @@ -6592,21 +6283,11 @@ index 190e0ac6..cb9faf71 100644 \end{itemize} \begin{note} -@@ -1127,9 +1124,7 @@ when \tcode{unhandled_stopped} is called on - a \tcode{with_awaitable_senders} object\iref{exec.with.awaitable.senders} - whose continuation is not a handle to a coroutine - whose promise type has an \tcode{unhandled_stopped} member function. -- - \end{itemize} -- - \end{note} - - \pnum diff --git a/source/expressions.tex b/source/expressions.tex -index 13e2526b..61ca8c1d 100644 +index 24af225d..b23928b0 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -462,7 +462,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied +@@ -467,7 +467,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied if and only if the expression is a glvalue of volatile-qualified type and it is one of the following: @@ -6614,7 +6295,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item \tcode{(} \grammarterm{expression} \tcode{)}, where \grammarterm{expression} is one of these expressions, -@@ -505,7 +504,6 @@ Standard conversions are implicit conversions with built-in meaning. +@@ -511,7 +510,6 @@ Standard conversions are implicit conversions with built-in meaning. \ref{conv} enumerates the full set of such conversions. A \defnx{standard conversion sequence}{conversion sequence!standard} is a sequence of standard conversions in the following order: @@ -6622,7 +6303,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item Zero or one conversion from the following set: lvalue-to-rvalue conversion, array-to-pointer conversion, and function-to-pointer -@@ -533,7 +531,6 @@ a required destination type and value category. +@@ -539,7 +537,6 @@ a required destination type and value category. \begin{note} Expressions with a given type will be implicitly converted to other types in several contexts: @@ -6630,7 +6311,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item When used as operands of operators. The operator's requirements for its operands dictate the destination type\iref{expr.compound}. -@@ -659,7 +656,6 @@ int n = g(true); // OK, does not access \tcode{y.n} +@@ -665,7 +662,6 @@ int n = g(true); // OK, does not access \tcode{y.n} \pnum The result of the conversion is determined according to the following rules: @@ -6638,7 +6319,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If \tcode{T} is \cv{}~\tcode{std::nullptr_t}, the result is a -@@ -1169,7 +1165,6 @@ type cause conversions and yield result types in a similar way. The +@@ -1176,7 +1172,6 @@ type cause conversions and yield result types in a similar way. The purpose is to yield a common type, which is also the type of the result. This pattern is called the \defnx{usual arithmetic conversions}{conversion!usual arithmetic}, which are defined as follows: @@ -6646,7 +6327,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item The lvalue-to-rvalue conversion\iref{conv.lval} is applied to each operand and -@@ -1212,7 +1207,6 @@ As a consequence, operands of type \keyword{bool}, \keyword{char8_t}, \keyword{c +@@ -1219,7 +1214,6 @@ As a consequence, operands of type \keyword{bool}, \keyword{char8_t}, \keyword{c to some integral type. \end{footnote} Then the following rules are applied to determine \tcode{C}: @@ -6654,7 +6335,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If \tcode{T1} and \tcode{T2} are the same type, \tcode{C} is that type. -@@ -2719,7 +2713,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} +@@ -2811,7 +2805,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} \pnum For the purposes of lambda capture, an expression potentially references local entities as follows: @@ -6662,7 +6343,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item An \grammarterm{id-expression} that names a local entity -@@ -3324,7 +3317,6 @@ The \grammarterm{expression} is an unevaluated operand. +@@ -3422,7 +3415,6 @@ The \grammarterm{expression} is an unevaluated operand. Substitution of template arguments (if any) and verification of semantic properties proceed in the following order: @@ -6670,7 +6351,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -3336,7 +3328,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. +@@ -3434,7 +3426,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. \item If the \grammarterm{return-type-requirement} is present, then: @@ -6678,15 +6359,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -4002,7 +3993,6 @@ the reference is bound, - otherwise \tcode{E1.E2} designates the object or function to which - the corresponding reference member of \tcode{E1} is bound. - Otherwise, one of the following rules applies. -- - \begin{itemize} - \item If \tcode{E2} is a static data member and the type of \tcode{E2} - is \tcode{T}, then \tcode{E1.E2} is an lvalue; the expression designates -@@ -4215,7 +4205,6 @@ referred to by \tcode{T}. +@@ -4539,7 +4530,6 @@ referred to by \tcode{T}. \pnum Let \tcode{C} be the class type to which \tcode{T} points or refers. The runtime check logically executes as follows: @@ -6694,7 +6367,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If, in the most derived object pointed (referred) to by \tcode{v}, \tcode{v} points (refers) to a public base class subobject of a -@@ -4762,7 +4751,6 @@ constness. +@@ -5053,7 +5043,6 @@ constness. The null member pointer value\iref{conv.mem} is converted to the null member pointer value of the destination type. The result of this conversion is unspecified, except in the following cases: @@ -6702,7 +6375,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item Converting a prvalue of type ``pointer to member function'' to a different pointer-to-member-function type and back to its original type -@@ -5181,7 +5169,6 @@ is called a \term{suspension context} of the function. +@@ -5488,7 +5477,6 @@ is called a \term{suspension context} of the function. \pnum Evaluation of an \grammarterm{await-expression} involves the following auxiliary types, expressions, and objects: @@ -6710,7 +6383,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item \placeholder{p} is an lvalue naming the promise -@@ -5562,7 +5549,6 @@ and +@@ -5871,7 +5859,6 @@ and the \grammarterm{new-expression}, then the allocated type is the type deduced for the variable \tcode{x} in the invented declaration\iref{dcl.spec.auto}: @@ -6718,7 +6391,7 @@ index 13e2526b..61ca8c1d 100644 \begin{codeblock} T x @\textrm{\placeholder{init}}@ ; \end{codeblock} -@@ -5914,7 +5900,6 @@ the alignment argument is removed from the argument list; +@@ -6231,7 +6218,6 @@ the alignment argument is removed from the argument list; otherwise, an argument that is the type's alignment and has type \tcode{std::align_val_t} is added into the argument list immediately after the first argument; @@ -6726,7 +6399,7 @@ index 13e2526b..61ca8c1d 100644 \end{itemize} and then overload resolution is performed again. -@@ -5992,7 +5977,6 @@ necessarily be the same as that of the block if the object is an array. +@@ -6309,7 +6295,6 @@ necessarily be the same as that of the block if the object is an array. \indextext{\idxcode{new}!default constructor and}% A \grammarterm{new-expression} that creates an object of type \tcode{T} initializes that object as follows: @@ -6734,15 +6407,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If the \grammarterm{new-initializer} is omitted, the object is default-initialized\iref{dcl.init}. -@@ -6081,7 +6065,6 @@ struct S { - S* p = new (0) S; // error: non-placement deallocation function matches - // placement allocation function - \end{codeblock} -- - \end{example} - - \pnum -@@ -6201,7 +6184,6 @@ of their constructor; see~\ref{class.base.init}). +@@ -6588,7 +6573,6 @@ of their constructor; see~\ref{class.base.init}). \pnum If the value of the operand of the \grammarterm{delete-expression} is not a null pointer value, then: @@ -6750,7 +6415,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If the allocation call for the \grammarterm{new-expression} for the object to -@@ -6825,7 +6807,6 @@ or one operand has integral type and +@@ -7433,7 +7417,6 @@ or one operand has integral type and the other operand has unscoped enumeration type, the \link{usual arithmetic conversions}{expr.arith.conv} are applied to the operands. Then: @@ -6758,7 +6423,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, -@@ -6980,7 +6961,6 @@ is considered to be equivalent to a pointer to a hypothetical array element +@@ -7588,7 +7571,6 @@ is considered to be equivalent to a pointer to a hypothetical array element $n$ for this purpose. \end{footnote} is defined in terms of a partial order consistent with the following rules: @@ -6766,7 +6431,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If two pointers point to different elements of the same array, or to subobjects thereof, the pointer to the element with the higher subscript -@@ -6993,7 +6973,6 @@ neither member is a subobject of zero size +@@ -7601,7 +7583,6 @@ neither member is a subobject of zero size and their class is not a union. \item Otherwise, neither pointer is required to compare greater than the other. @@ -6774,7 +6439,7 @@ index 13e2526b..61ca8c1d 100644 \end{itemize} \pnum -@@ -7055,7 +7034,6 @@ If at least one of the converted operands is a pointer, +@@ -7663,7 +7644,6 @@ If at least one of the converted operands is a pointer, \link{qualification conversions}{conv.qual} are performed on both operands to bring them to their \deflink{composite pointer type}{expr.type}. Comparing pointers is defined as follows: @@ -6782,7 +6447,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If one pointer represents the address of a complete object, and another -@@ -7085,7 +7063,6 @@ qualification conversions\iref{conv.qual} +@@ -7693,7 +7673,6 @@ qualification conversions\iref{conv.qual} are performed on both operands to bring them to their composite pointer type\iref{expr.type}. Comparing pointers to members is defined as follows: @@ -6790,7 +6455,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If two pointers to members are both the null member pointer value, they compare -@@ -7357,7 +7334,6 @@ Attempts are made to form an implicit conversion sequence +@@ -7979,7 +7958,6 @@ Attempts are made to form an implicit conversion sequence from an operand expression \tcode{E1} of type \tcode{T1} to a target type related to the type \tcode{T2} of the operand expression \tcode{E2} as follows: @@ -6798,7 +6463,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If \tcode{E2} is an lvalue, the target type is ``lvalue reference to \tcode{T2}'', -@@ -7436,7 +7412,6 @@ subclause. +@@ -8058,7 +8036,6 @@ subclause. and \link{function-to-pointer}{conv.func} standard conversions are performed on the second and third operands. After those conversions, one of the following shall hold: @@ -6806,7 +6471,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item The second and third operands have the same type; the result is of that type and the result is copy-initialized using the selected operand. -@@ -7466,7 +7441,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. +@@ -8088,7 +8065,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. Both the second and third operands have type \tcode{std::nullptr_t} or one has that type and the other is a null pointer constant. The result is of type \tcode{std::nullptr_t}. @@ -6815,10 +6480,10 @@ index 13e2526b..61ca8c1d 100644 \rSec2[expr.yield]{Yielding a value}% diff --git a/source/future.tex b/source/future.tex -index 49c04f21..ddaaf96d 100644 +index dc26444a..ac4ac504 100644 --- a/source/future.tex +++ b/source/future.tex -@@ -268,7 +268,6 @@ shown in the above synopsis. +@@ -283,7 +283,6 @@ shown in the above synopsis. \pnum The header \libheaderrefx{type_traits}{meta.type.synop} has the following addition: @@ -6826,7 +6491,7 @@ index 49c04f21..ddaaf96d 100644 \begin{codeblock} namespace std { template struct is_trivial; -@@ -508,7 +507,6 @@ template bool operator>=(const T& x, const T& y); +@@ -523,7 +522,6 @@ template bool operator>=(const T& x, const T& y); \pnum The header \libheaderref{tuple} has the following additions: @@ -6834,7 +6499,7 @@ index 49c04f21..ddaaf96d 100644 \begin{codeblock} namespace std { template struct tuple_size; -@@ -578,7 +576,6 @@ are included. +@@ -593,7 +591,6 @@ are included. \pnum The header \libheaderref{variant} has the following additions: @@ -6842,7 +6507,7 @@ index 49c04f21..ddaaf96d 100644 \begin{codeblock} namespace std { template struct variant_size; -@@ -625,7 +622,6 @@ with a member typedef \tcode{type} that names the following type: +@@ -671,7 +668,6 @@ y = b; \pnum The header \libheaderrefx{iterator}{iterator.synopsis} has the following addition: @@ -6850,7 +6515,7 @@ index 49c04f21..ddaaf96d 100644 \indexlibraryglobal{iterator}% \begin{codeblock} namespace std { -@@ -659,7 +655,6 @@ only to callers of that class. +@@ -705,7 +701,6 @@ only to callers of that class. If a \Cpp{} program wants to define a bidirectional iterator for some data structure containing \tcode{double} and such that it works on a large memory model of the implementation, it can do so with: @@ -6858,7 +6523,7 @@ index 49c04f21..ddaaf96d 100644 \begin{codeblock} class MyIterator : public iterator { -@@ -673,7 +668,6 @@ class MyIterator : +@@ -719,7 +714,6 @@ class MyIterator : \pnum The following member is declared in addition to those members specified in \ref{move.iter.elem}: @@ -6866,7 +6531,7 @@ index 49c04f21..ddaaf96d 100644 \begin{codeblock} namespace std { template -@@ -766,7 +760,6 @@ Equivalent to: \tcode{return visit(std::forward(vis), arg.value);} +@@ -829,7 +823,6 @@ are not required to avoid data races\iref{res.on.data.races}. \pnum The header \libheaderrefx{filesystem}{fs.filesystem.syn} has the following additions: @@ -6874,7 +6539,7 @@ index 49c04f21..ddaaf96d 100644 \indexlibraryglobal{u8path}% \begin{itemdecl} template -@@ -847,7 +840,6 @@ as it is consistent with \tcode{path}'s handling of other encodings. +@@ -949,7 +942,6 @@ std::string generic_string() const; \pnum The header \libheaderrefx{atomic}{atomics.syn} has the following additions. @@ -6883,10 +6548,10 @@ index 49c04f21..ddaaf96d 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index ee7b1fc6..f01c8ec2 100644 +index ad9e3afe..a046490d 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -2108,14 +2108,12 @@ does nothing. +@@ -2105,14 +2105,12 @@ does nothing. Otherwise assigns to the member objects of \tcode{*this} the corresponding member objects of \tcode{rhs} as follows: @@ -6901,7 +6566,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{itemize} \item \tcode{rdstate()}, \tcode{rdbuf()}, and \tcode{exceptions()} are left unchanged; -@@ -7211,7 +7209,6 @@ clears \tcode{ios_base::skipws} in the format flags stored in the +@@ -7225,7 +7223,6 @@ clears \tcode{ios_base::skipws} in the format flags stored in the format flags stored in the \tcode{basic_ostream} object \tcode{cout} (the same as \tcode{cout << noshowbase}). \end{footnote} @@ -6909,7 +6574,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} void f(ios_base& str, ios_base::fmtflags mask) { // reset specified flags -@@ -7250,7 +7247,6 @@ then the expression +@@ -7264,7 +7261,6 @@ then the expression behaves as if it called \tcode{f(in, mask)}, where the function \tcode{f} is defined as: \indexlibrarymember{fmtflags}{ios_base}% @@ -6917,7 +6582,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} void f(ios_base& str, ios_base::fmtflags mask) { // set specified flags -@@ -7296,7 +7292,6 @@ then the expression +@@ -7310,7 +7306,6 @@ then the expression \tcode{in >> setbase(base)} behaves as if it called \tcode{f(in, base)}, where the function \tcode{f} is defined as: @@ -6925,7 +6590,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} void f(ios_base& str, int base) { // set \tcode{basefield} -@@ -7339,7 +7334,6 @@ then the expression +@@ -7353,7 +7348,6 @@ then the expression \tcode{out << setfill(c)} behaves as if it called \tcode{f(out, c)}, where the function \tcode{f} is defined as: @@ -6933,7 +6598,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} template void f(basic_ios& str, charT c) { -@@ -7380,7 +7374,6 @@ then the expression +@@ -7394,7 +7388,6 @@ then the expression \tcode{in >> setprecision(n)} behaves as if it called \tcode{f(in, n)}, where the function \tcode{f} is defined as: @@ -6941,7 +6606,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} void f(ios_base& str, int n) { // set precision -@@ -7426,7 +7419,6 @@ then the expression +@@ -7440,7 +7433,6 @@ then the expression \tcode{in >> setw(n)} behaves as if it called \tcode{f(in, n)}, where the function \tcode{f} is defined as: @@ -6949,7 +6614,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} void f(ios_base& str, int n) { // set width -@@ -7476,7 +7468,6 @@ An object of unspecified type such that if +@@ -7490,7 +7482,6 @@ An object of unspecified type such that if \tcode{in} is an object of type \tcode{basic_istream} then the expression \tcode{in >> get_money(mon, intl)} behaves as if it called \tcode{f(in, mon, intl)}, where the function \tcode{f} is defined as: @@ -6957,7 +6622,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} template void f(basic_ios& str, moneyT& mon, bool intl) { -@@ -7515,7 +7506,6 @@ An object of unspecified type such that if +@@ -7529,7 +7520,6 @@ An object of unspecified type such that if then the expression \tcode{out << put_money(mon, intl)} behaves as a \link{formatted output function}{ostream.formatted.reqmts} that calls \tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as: @@ -6965,7 +6630,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} template void f(basic_ios& str, const moneyT& mon, bool intl) { -@@ -7551,7 +7541,6 @@ An object of unspecified type such that if \tcode{in} is an object of type +@@ -7565,7 +7555,6 @@ An object of unspecified type such that if \tcode{in} is an object of type \tcode{basic_istream} then the expression \tcode{in >> get_time(tmb, fmt)} behaves as if it called \tcode{f(in, tmb, fmt)}, where the function \tcode{f} is defined as: @@ -6973,7 +6638,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} template void f(basic_ios& str, tm* tmb, const charT* fmt) { -@@ -7590,7 +7579,6 @@ An object of unspecified type such that if \tcode{out} is an object of +@@ -7604,7 +7593,6 @@ An object of unspecified type such that if \tcode{out} is an object of type \tcode{basic_ostream} then the expression \tcode{out << put_time(tmb, fmt)} behaves as if it called \tcode{f(out, tmb, fmt)}, where the function \tcode{f} is defined as: @@ -6981,23 +6646,23 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} template void f(basic_ios& str, const tm* tmb, const charT* fmt) { -@@ -11426,7 +11414,6 @@ with the specialization that a sequence of characters is read from the input +@@ -11432,7 +11420,6 @@ with the specialization that a sequence of characters is read from the input sequence as if by reading from the associated file into an internal buffer (\tcode{extern_buf}) and then as if by doing: - \begin{codeblock} - char extern_buf[XSIZE]; - char* extern_end; -@@ -13912,7 +13899,6 @@ without an intervening \grammarterm{root-directory} element. + char extern_buf[XSIZE]; + const char* extern_end; +@@ -13923,7 +13910,6 @@ without an intervening \grammarterm{root-directory} element. \pnum \indextext{path!normalization|(}% - \defnx{Normalization}{normalization!path} of a generic format pathname means: + \defnx{Normalization}{normalization!path|see{path, normalization}} of a generic format pathname means: - \begin{enumerate} \item If the path is empty, stop. \item Replace each slash character in the \grammarterm{root-name} with a \grammarterm{preferred-separator}. -@@ -17028,7 +17014,6 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17065,7 +17051,6 @@ recursive_directory_iterator& increment(error_code& ec); As specified for the prefix increment operation of \link{Input iterators}{input.iterators}, except that: @@ -7006,10 +6671,10 @@ index ee7b1fc6..f01c8ec2 100644 \item If there are no more entries at the current depth, then if \tcode{depth() != 0} iteration over the parent directory resumes; otherwise \tcode{*this = recursive_directory_iterator()}. diff --git a/source/iterators.tex b/source/iterators.tex -index 6078fec7..d022554d 100644 +index 46edb440..b083ad28 100644 --- a/source/iterators.tex +++ b/source/iterators.tex -@@ -948,7 +948,6 @@ may be defined as \keyword{void}. +@@ -963,7 +963,6 @@ may be declared as \keyword{void}. \pnum The definitions in this subclause make use of the following exposition-only concepts: @@ -7017,7 +6682,7 @@ index 6078fec7..d022554d 100644 \begin{codeblock} template concept @\defexposconcept{cpp17-iterator}@ = -@@ -1006,7 +1005,6 @@ concept @\defexposconcept{cpp17-random-access-iterator}@ = +@@ -1021,7 +1020,6 @@ concept @\defexposconcept{cpp17-random-access-iterator}@ = \pnum The members of a specialization \tcode{iterator_traits} generated from the \tcode{iterator_traits} primary template are computed as follows: @@ -7025,7 +6690,7 @@ index 6078fec7..d022554d 100644 \begin{itemize} \item If \tcode{I} has valid\iref{temp.deduct} member -@@ -1155,7 +1153,6 @@ The name \tcode{ranges::iter_move} denotes +@@ -1168,7 +1166,6 @@ The name \tcode{ranges::iter_move} denotes a customization point object\iref{customization.point.object}. The expression \tcode{ranges::\-iter_move(E)} for a subexpression \tcode{E} is expression-equivalent to: @@ -7033,7 +6698,7 @@ index 6078fec7..d022554d 100644 \begin{itemize} \item \tcode{iter_move(E)}, if \tcode{E} has class or enumeration type and -@@ -2795,7 +2792,6 @@ namespace std { +@@ -2811,7 +2808,6 @@ namespace std { A program-defined iterator \tcode{BinaryTreeIterator} can be included into the bidirectional iterator category by specializing the \tcode{iterator_traits} template: @@ -7041,7 +6706,7 @@ index 6078fec7..d022554d 100644 \begin{codeblock} template struct iterator_traits> { using iterator_category = bidirectional_iterator_tag; -@@ -2813,7 +2809,6 @@ If +@@ -2829,7 +2825,6 @@ If \tcode{evolve()} is well-defined for bidirectional iterators, but can be implemented more efficiently for random access iterators, then the implementation is as follows: @@ -7049,7 +6714,7 @@ index 6078fec7..d022554d 100644 \begin{codeblock} template inline void -@@ -3394,7 +3389,6 @@ As if by: +@@ -3416,7 +3411,6 @@ As if by: Iterator tmp = current; return *--tmp; \end{codeblock} @@ -7057,7 +6722,7 @@ index 6078fec7..d022554d 100644 \end{itemdescr} \indexlibrarymember{operator->}{reverse_iterator}% -@@ -4776,7 +4770,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 +@@ -4799,7 +4793,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 vector v2(make_move_iterator(s.begin()), make_move_iterator(s.end())); // moves strings into \tcode{v2} \end{codeblock} @@ -7065,7 +6730,7 @@ index 6078fec7..d022554d 100644 \end{example} \rSec3[move.iterator]{Class template \tcode{move_iterator}} -@@ -6495,7 +6488,6 @@ partial_sum(istream_iterator(cin), +@@ -6518,7 +6511,6 @@ partial_sum(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "@\textbackslash@n")); \end{codeblock} @@ -7073,20 +6738,8 @@ index 6078fec7..d022554d 100644 reads a file containing floating-point numbers from \tcode{cin}, and prints the partial sums onto -diff --git a/source/lex.tex b/source/lex.tex -index fbd79538..d09869b8 100644 ---- a/source/lex.tex -+++ b/source/lex.tex -@@ -597,7 +597,6 @@ after the \tcode{include} or \tcode{import} preprocessing token in a - - \item - within a \grammarterm{has-include-expression}. -- - \end{itemize} - \end{itemize} - diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 10076632..6effcd33 100644 +index 6c8b5dab..a8a934eb 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -196,7 +196,6 @@ save space, items that do not apply to a Clause are omitted. @@ -7137,7 +6790,7 @@ index 10076632..6effcd33 100644 \begin{itemize} \item \constraints -@@ -613,7 +607,6 @@ values\iref{basic.fundamental}. +@@ -623,7 +617,6 @@ values\iref{basic.fundamental}. \pnum The enumerated type \tcode{\placeholder{enumerated}} can be written: @@ -7145,7 +6798,7 @@ index 10076632..6effcd33 100644 \begin{codeblock} enum @\placeholder{enumerated}@ { @$\tcode{\placeholder{V}}_{0}$@, @$\tcode{\placeholder{V}}_{1}$@, @$\tcode{\placeholder{V}}_{2}$@, @$\tcode{\placeholder{V}}_{3}$@, @$\ldots$@ }; -@@ -646,7 +639,6 @@ or as a +@@ -656,7 +649,6 @@ or as a \pnum The bitmask type \tcode{\placeholder{bitmask}} can be written: @@ -7153,7 +6806,7 @@ index 10076632..6effcd33 100644 \begin{codeblock} // For exposition only. // \tcode{int_type} is an integral type capable of representing all values of the bitmask type. -@@ -723,7 +715,6 @@ The value \textit{Y} \defnx{is set}{bitmask!value!is set} in the object +@@ -733,7 +725,6 @@ The value \textit{Y} \defnx{is set}{bitmask!value!is set} in the object The C standard library makes widespread use \indextext{library!C standard}% of characters and character sequences that follow a few uniform conventions: @@ -7161,7 +6814,7 @@ index 10076632..6effcd33 100644 \begin{itemize} \item Properties specified as \defn{locale-specific} -@@ -959,7 +950,6 @@ some subclauses provide representative declarations, and semantic requirements, +@@ -979,7 +970,6 @@ some subclauses provide representative declarations, and semantic requirements, private members of classes that meet the external specifications of the classes. The declarations for such members are followed by a comment that ends with \expos, as in: @@ -7169,7 +6822,7 @@ index 10076632..6effcd33 100644 \begin{codeblock} streambuf* sb; // \expos \end{codeblock} -@@ -1924,7 +1914,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if +@@ -1938,7 +1928,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if evaluated in the context described below, and \item these expressions have the following effects: @@ -7177,7 +6830,7 @@ index 10076632..6effcd33 100644 \begin{itemize} \item the object referred to by \tcode{t} has the value originally held by \tcode{u} and \item the object referred to by \tcode{u} has the value originally held by \tcode{t}. -@@ -2930,7 +2919,6 @@ for that type can fail by throwing an object of type +@@ -2944,7 +2933,6 @@ for that type can fail by throwing an object of type \begin{example} The following is an allocator class template supporting the minimal interface that meets the requirements of \ref{allocator.requirements.general}: @@ -7185,7 +6838,7 @@ index 10076632..6effcd33 100644 \begin{codeblock} template struct SimpleAllocator { -@@ -3404,13 +3392,11 @@ the description of function semantics apply +@@ -3438,13 +3426,11 @@ the description of function semantics apply to both the default version defined by the \Cpp{} standard library and the replacement function defined by the program. @@ -7199,7 +6852,7 @@ index 10076632..6effcd33 100644 \begin{itemize} \item \tcode{terminate_handler} -@@ -3431,7 +3417,6 @@ Exception handling. +@@ -3465,7 +3451,6 @@ Exception handling. \pnum A \Cpp{} program can get a pointer to the current handler function by calling the following functions: @@ -7207,7 +6860,7 @@ index 10076632..6effcd33 100644 \begin{itemize} \item \indexlibraryglobal{get_new_handler}% -@@ -3457,7 +3442,6 @@ on the implementation. +@@ -3491,7 +3476,6 @@ on the implementation. \pnum In particular, the behavior is undefined in the following cases: @@ -7215,7 +6868,7 @@ index 10076632..6effcd33 100644 \begin{itemize} \item For replacement functions\iref{replacement.functions}, if the installed replacement function does not -@@ -3742,7 +3726,6 @@ functions or constructors an implementation shall provide corresponding definiti +@@ -3776,7 +3760,6 @@ functions an implementation shall provide corresponding definitions. \indextext{stable algorithm}% When the requirements for an algorithm state that it is ``stable'' without further elaboration, it means: @@ -7224,7 +6877,7 @@ index 10076632..6effcd33 100644 \item For the sort algorithms the relative order of equivalent elements is preserved. diff --git a/source/limits.tex b/source/limits.tex -index efd4eb00..12180661 100644 +index 877f21f3..7fc0a416 100644 --- a/source/limits.tex +++ b/source/limits.tex @@ -123,5 +123,4 @@ Handlers per try block\iref{except.handle} [256]. @@ -7234,10 +6887,10 @@ index efd4eb00..12180661 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index d4451b02..add15a22 100644 +index be9812fa..fb901823 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1455,7 +1455,6 @@ when considered as an unevaluated operand. +@@ -1481,7 +1481,6 @@ when considered as an unevaluated operand. \pnum Let \exposid{pair-constructor} be an exposition-only class defined as follows: @@ -7245,7 +6898,7 @@ index d4451b02..add15a22 100644 \begin{codeblock} class @\exposid{pair-constructor}@ { using @\exposid{pair-type}@ = remove_cv_t; // \expos -@@ -3565,7 +3564,6 @@ template shared_ptr(nullptr_t p, D d, A a); +@@ -3620,7 +3619,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a); \tcode{is_move_constructible_v} is \tcode{true}, and \tcode{d(p)} is a well-formed expression. For the first two overloads: @@ -7254,30 +6907,30 @@ index d4451b02..add15a22 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index 9484e79a..cd75eee5 100644 +index 7c1dbfb9..eda69180 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -1623,7 +1623,6 @@ is_base_of_v // \tcode{false} - The predicate condition for a template specialization \tcode{is_convertible} - shall be satisfied if and only if the return expression in the following code would be +@@ -1684,7 +1684,6 @@ The predicate condition for a template specialization \tcode{is_convertible(); -@@ -2105,7 +2104,6 @@ If any of the types computed above is ill-formed, then +@@ -2194,7 +2193,6 @@ If any of the types computed above is ill-formed, then \pnum For the \tcode{common_type} trait applied to a template parameter pack \tcode{T} of types, - the member \tcode{type} shall be either defined or not present as follows: + the member \tcode{type} shall be either declared or not present as follows: - \begin{itemize} \item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}. diff --git a/source/numerics.tex b/source/numerics.tex -index 9402c55b..c37ff4f3 100644 +index f3299984..a0370273 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -605,7 +605,6 @@ template constexpr complex operator+(const complex& lhs); +@@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); \pnum \returns \tcode{complex(lhs)}. @@ -7285,7 +6938,7 @@ index 9402c55b..c37ff4f3 100644 \end{itemdescr} \begin{itemdecl} -@@ -744,7 +743,6 @@ template +@@ -745,7 +744,6 @@ template \effects Inserts the complex number \tcode{x} onto the stream \tcode{o} as if it were implemented as follows: @@ -7293,7 +6946,7 @@ index 9402c55b..c37ff4f3 100644 \begin{codeblock} basic_ostringstream s; s.flags(o.flags()); -@@ -4276,7 +4274,6 @@ template +@@ -4275,7 +4273,6 @@ template each operation is to be carried out modulo $2^{32}$, each indexing operator applied to \tcode{begin} is to be taken modulo $n$, and $T(x)$ is defined as $x \xor (x \rightshift 27)$: @@ -7301,7 +6954,7 @@ index 9402c55b..c37ff4f3 100644 \begin{itemize} \item By way of initialization, -@@ -8355,7 +8352,6 @@ A unique function with the indicated name can be applied (unqualified) +@@ -8356,7 +8353,6 @@ A unique function with the indicated name can be applied (unqualified) to an operand of type \tcode{T}. This function returns a value of type \tcode{T} or which can be unambiguously implicitly converted to type \tcode{T}. @@ -7309,7 +6962,7 @@ index 9402c55b..c37ff4f3 100644 \end{itemdescr} \rSec3[valarray.special]{Specialized algorithms} -@@ -8371,7 +8367,6 @@ template void swap(valarray& x, valarray& y) noexcept; +@@ -8372,7 +8368,6 @@ template void swap(valarray& x, valarray& y) noexcept; Equivalent to \tcode{x.swap(y)}. \end{itemdescr} @@ -7317,7 +6970,7 @@ index 9402c55b..c37ff4f3 100644 \rSec2[class.slice]{Class \tcode{slice}} \rSec3[class.slice.overview]{Overview} -@@ -8791,7 +8786,6 @@ namespace std { +@@ -8792,7 +8787,6 @@ namespace std { This template is a helper template used by the \tcode{gslice} subscript operator @@ -7325,7 +6978,7 @@ index 9402c55b..c37ff4f3 100644 \indexlibraryglobal{gslice_array}% \indexlibraryglobal{valarray}% \begin{itemdecl} -@@ -8917,7 +8911,6 @@ namespace std { +@@ -8918,7 +8912,6 @@ namespace std { \pnum This template is a helper template used by the mask subscript operator: @@ -7333,7 +6986,7 @@ index 9402c55b..c37ff4f3 100644 \indexlibrarymember{operator[]}{mask_array}% \begin{itemdecl} mask_array valarray::operator[](const valarray&); -@@ -9034,7 +9027,6 @@ namespace std { +@@ -9035,7 +9028,6 @@ namespace std { \pnum This template is a helper template used by the indirect subscript operator @@ -7342,10 +6995,10 @@ index 9402c55b..c37ff4f3 100644 \begin{itemdecl} indirect_array valarray::operator[](const valarray&); diff --git a/source/overloading.tex b/source/overloading.tex -index db9317ec..d6a68599 100644 +index d3250f2d..c5328c3c 100644 --- a/source/overloading.tex +++ b/source/overloading.tex -@@ -98,7 +98,6 @@ the list of arguments in its own unique way. +@@ -103,7 +103,6 @@ the list of arguments in its own unique way. But, once the candidate functions and argument lists have been identified, the selection of the best function is the same in all cases: @@ -7353,7 +7006,7 @@ index db9317ec..d6a68599 100644 \begin{itemize} \item First, a subset of the candidate functions (those that have -@@ -391,7 +390,6 @@ Such a +@@ -396,7 +395,6 @@ Such a \grammarterm{postfix-expression}, perhaps nested arbitrarily deep in parentheses, has one of the following forms: @@ -7361,7 +7014,7 @@ index db9317ec..d6a68599 100644 \begin{ncbnf} postfix-expression:\br postfix-expression \terminal{.} id-expression\br -@@ -998,7 +996,6 @@ The lookup rules for operators in expressions are different than +@@ -1018,7 +1016,6 @@ The lookup rules for operators in expressions are different than the lookup rules for operator function names in a function call, as shown in the following example: @@ -7369,7 +7022,7 @@ index db9317ec..d6a68599 100644 \begin{codeblock} struct A { }; void operator + (A, A); -@@ -1060,7 +1057,6 @@ Assuming that +@@ -1081,7 +1078,6 @@ Assuming that \tcode{T} a class type, the candidate functions are selected as follows: @@ -7377,7 +7030,7 @@ index db9317ec..d6a68599 100644 \begin{itemize} \item The non-explicit constructors\iref{class.conv.ctor} of -@@ -1106,7 +1102,6 @@ conversion function to be invoked. +@@ -1127,7 +1123,6 @@ conversion function to be invoked. Assuming that ``\cv{} \tcode{T}'' is the type of the object being initialized, the candidate functions are selected as follows: @@ -7385,7 +7038,7 @@ index db9317ec..d6a68599 100644 \begin{itemize} \item The permissible types for non-explicit conversion functions are -@@ -1178,7 +1173,6 @@ list-initialized such that \ref{dcl.init.list} specifies that overload resolutio +@@ -1199,7 +1194,6 @@ list-initialized such that \ref{dcl.init.list} specifies that overload resolutio is performed according to the rules in this subclause or when forming a list-initialization sequence according to \ref{over.ics.list}, overload resolution selects the constructor in two phases: @@ -7393,7 +7046,7 @@ index db9317ec..d6a68599 100644 \begin{itemize} \item If the initializer list is not empty or \tcode{T} has no default constructor, -@@ -1259,7 +1253,6 @@ called the \defn{copy deduction candidate}. +@@ -1281,7 +1275,6 @@ called the \defn{copy deduction candidate}. For each \grammarterm{deduction-guide}, a function or function template with the following properties: @@ -7401,7 +7054,7 @@ index db9317ec..d6a68599 100644 \begin{itemize} \item The \grammarterm{template-head}, if any, -@@ -2684,7 +2677,6 @@ sequence}{over.ics.ellipsis}. +@@ -2783,7 +2776,6 @@ sequence}{over.ics.ellipsis}. Two implicit conversion sequences of the same form are indistinguishable conversion sequences unless one of the following rules applies: @@ -7409,7 +7062,7 @@ index db9317ec..d6a68599 100644 \begin{itemize} \item List-initialization sequence \tcode{L1} is a better conversion sequence than -@@ -2916,7 +2908,6 @@ int i = f(a); // calls \tcode{f(int)}, because \tcode{short} $ +@@ -3015,7 +3007,6 @@ int i = f(a); // calls \tcode{f(int)}, because \tcode{short} $ // better than \tcode{short} $\to$ \tcode{float}. \end{codeblock} \end{example} @@ -7417,7 +7070,7 @@ index db9317ec..d6a68599 100644 \end{itemize} \pnum -@@ -2925,7 +2916,6 @@ better conversion than a Promotion, which is a better conversion than +@@ -3024,7 +3015,6 @@ better conversion than a Promotion, which is a better conversion than a Conversion. Two conversion sequences with the same rank are indistinguishable unless one of the following rules applies: @@ -7425,7 +7078,7 @@ index db9317ec..d6a68599 100644 \begin{itemize} \item A conversion that does not convert a pointer or a pointer to member -@@ -4092,7 +4082,6 @@ is a \defnx{literal operator template}{literal!operator!template}. +@@ -4182,7 +4172,6 @@ is a \defnx{literal operator template}{literal!operator!template}. \pnum The declaration of a literal operator shall have a \grammarterm{parameter-declaration-clause} equivalent to one of the following: @@ -7434,10 +7087,10 @@ index db9317ec..d6a68599 100644 const char* unsigned long long int diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 885db47e..2d3e5cb6 100644 +index b3cf7fc7..cd5f8947 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex -@@ -183,7 +183,6 @@ begins with the first character in the source file +@@ -199,7 +199,6 @@ begins with the first character in the source file (optionally after whitespace containing no new-line characters) or follows whitespace containing at least one new-line character, and is @@ -7453,7 +7106,7 @@ index 885db47e..2d3e5cb6 100644 \begin{codeblock} #if __has_include() # include -@@ -804,14 +802,12 @@ However, using the \tcode{< >} form for headers provided +@@ -806,14 +804,12 @@ However, using the \tcode{< >} form for headers provided with the implementation and the \tcode{" "} form for sources outside the control of the implementation achieves wider portability. For instance: @@ -7468,7 +7121,7 @@ index 885db47e..2d3e5cb6 100644 \end{note} \pnum -@@ -819,7 +815,6 @@ achieves wider portability. For instance: +@@ -821,7 +817,6 @@ achieves wider portability. For instance: This illustrates macro-replaced \tcode{\#include} directives: @@ -7476,7 +7129,7 @@ index 885db47e..2d3e5cb6 100644 \begin{codeblock} #if VERSION == 1 #define INCFILE "vers1.h" -@@ -1895,7 +1890,6 @@ is optional. +@@ -1975,7 +1970,6 @@ is optional. \pnum \begin{example} In the following fragment: @@ -7484,7 +7137,7 @@ index 885db47e..2d3e5cb6 100644 \begin{codeblock} #define hash_hash # ## # #define mkstr(a) # a -@@ -1905,7 +1899,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";} +@@ -1985,7 +1979,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";} \end{codeblock} The expansion produces, at various stages: @@ -7492,7 +7145,7 @@ index 885db47e..2d3e5cb6 100644 \begin{codeblock} join(x, y) in_between(x hash_hash y) -@@ -2135,7 +2128,6 @@ has no effect. +@@ -2221,7 +2214,6 @@ has no effect. \pnum The following macro names shall be defined by the implementation: @@ -7500,7 +7153,7 @@ index 885db47e..2d3e5cb6 100644 \begin{description} \item -@@ -2365,7 +2357,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali +@@ -2455,7 +2447,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali \pnum The following macro names are conditionally defined by the implementation: @@ -7508,19 +7161,19 @@ index 885db47e..2d3e5cb6 100644 \begin{description} \item \indextext{__stdc__@\mname{STDC}}% -@@ -2400,7 +2391,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. +@@ -2490,7 +2481,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. \mname{STDCPP_THREADS}\\ - Defined, and has the value integer literal 1, if and only if a program + Defined, and has the value integer literal \tcode{1}, if and only if a program can have more than one \link{thread of execution}{intro.multithread}. - \end{description} \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index c16eba7f..24fc04eb 100644 +index 29b5ae53..912546d8 100644 --- a/source/ranges.tex +++ b/source/ranges.tex -@@ -651,7 +651,6 @@ object\iref{customization.point.object}. +@@ -657,7 +657,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7528,7 +7181,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -712,7 +711,6 @@ object\iref{customization.point.object}. +@@ -718,7 +717,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7536,7 +7189,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -838,7 +836,6 @@ object\iref{customization.point.object}. +@@ -844,7 +842,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7544,7 +7197,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -902,7 +899,6 @@ object\iref{customization.point.object}. +@@ -908,7 +905,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7552,7 +7205,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -1027,7 +1023,6 @@ object\iref{customization.point.object}. +@@ -1033,7 +1029,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7560,7 +7213,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{T} is an array of unknown bound\iref{term.array.type}, -@@ -1157,7 +1152,6 @@ object\iref{customization.point.object}. +@@ -1163,7 +1158,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7568,7 +7221,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{T} is an array of unknown bound\iref{term.array.type}, -@@ -1208,7 +1202,6 @@ object\iref{customization.point.object}. +@@ -1214,7 +1208,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7576,7 +7229,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -1734,7 +1727,6 @@ manipulating ranges. +@@ -1755,7 +1748,6 @@ manipulating ranges. \pnum Many of the types in \ref{range.utility} are specified in terms of the following exposition-only concepts: @@ -7584,7 +7237,7 @@ index c16eba7f..24fc04eb 100644 \begin{codeblock} template concept @\defexposconceptnc{simple-view}@ = // \expos -@@ -5852,7 +5844,6 @@ If \tcode{decltype((F))} does not model +@@ -5962,7 +5954,6 @@ If \tcode{decltype((F))} does not model \tcode{views::take(E, F)} is ill-formed. Otherwise, the expression \tcode{views::take(E, F)} is expression-equivalent to: @@ -7592,7 +7245,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{T} is a specialization -@@ -5873,7 +5864,6 @@ then +@@ -5988,7 +5979,6 @@ then ranges::be\-gin(E) + std::min(ranges::distance(E), F))}, except that \tcode{E} is evaluated only once, where \tcode{U} is a type determined as follows: @@ -7600,7 +7253,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item if \tcode{T} is a specialization of \tcode{span}, then \tcode{U} is \tcode{span}; -@@ -6335,7 +6325,6 @@ If \tcode{decltype((F))} does not model +@@ -6450,7 +6440,6 @@ If \tcode{decltype((F))} does not model \tcode{views::drop(E, F)} is ill-formed. Otherwise, the expression \tcode{views::drop(E, F)} is expression-equivalent to: @@ -7608,7 +7261,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{T} is a specialization of -@@ -7409,7 +7398,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and +@@ -7531,7 +7520,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and \exposid{Base} and \exposid{InnerBase} each model \libconcept{forward_range}. In that case, \tcode{\exposid{iterator}::iterator_category} is defined as follows: @@ -7616,7 +7269,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item Let \placeholder{OUTERC} denote -@@ -9697,7 +9685,6 @@ appears in the immediate context of a template instantiation. +@@ -9855,7 +9843,6 @@ appears in the immediate context of a template instantiation. \end{note} Otherwise, \tcode{views::counted(E, F)} is expression-equivalent to: @@ -7625,10 +7278,10 @@ index c16eba7f..24fc04eb 100644 \item If \tcode{T} models \libconcept{contiguous_iterator}, diff --git a/source/statements.tex b/source/statements.tex -index 9782eab7..62f29828 100644 +index 301d6304..65faf674 100644 --- a/source/statements.tex +++ b/source/statements.tex -@@ -719,7 +719,6 @@ exposition only; and +@@ -731,7 +731,6 @@ exposition only; and \item \exposid{begin-expr} and \exposid{end-expr} are determined as follows: @@ -7636,27 +7289,11 @@ index 9782eab7..62f29828 100644 \begin{itemize} \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are -@@ -850,7 +849,6 @@ The \keyword{continue} statement - causes control to pass to the loop-continuation portion of the - smallest such enclosing statement, that is, to the end - of the loop. More precisely, in each of the statements -- - \begin{minipage}{.30\hsize} - \begin{codeblock} - while (foo) { -@@ -881,7 +879,6 @@ for (;;) { - } - \end{codeblock} - \end{minipage} -- - a \keyword{continue} not contained in an enclosed iteration statement is - equivalent to \tcode{goto} \exposid{contin}. - diff --git a/source/support.tex b/source/support.tex -index ff85b31b..b67bffbb 100644 +index 0dd4cd06..90a3972a 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -2450,7 +2450,6 @@ This requirement is binding on any replacement versions of these functions. +@@ -2440,7 +2440,6 @@ This requirement is binding on any replacement versions of these functions. \pnum \default @@ -7664,7 +7301,7 @@ index ff85b31b..b67bffbb 100644 \begin{itemize} \item Executes a loop: -@@ -2929,7 +2928,6 @@ Intentionally performs no other action. +@@ -2919,7 +2918,6 @@ Intentionally performs no other action. \pnum \begin{example} This can be useful for constructing an object at a known address: @@ -7672,7 +7309,7 @@ index ff85b31b..b67bffbb 100644 \begin{codeblock} void* place = operator new(sizeof(Something)); Something* p = new (place) Something(); -@@ -4821,7 +4819,6 @@ are collectively termed the \defn{comparison category types}. +@@ -4822,7 +4820,6 @@ are collectively termed the \defn{comparison category types}. Each is specified in terms of an exposition-only data member named \tcode{value} whose value typically corresponds to that of an enumerator from one of the following exposition-only enumerations: @@ -7680,19 +7317,19 @@ index ff85b31b..b67bffbb 100644 \begin{codeblock} enum class @\placeholdernc{ord}@ { @\placeholdernc{equal}@ = 0, @\placeholdernc{equivalent}@ = @\placeholdernc{equal}@, @\placeholdernc{less}@ = -1, @\placeholdernc{greater}@ = 1 }; // \expos enum class @\placeholdernc{ncmp}@ { @\placeholdernc{unordered}@ = -127 }; // \expos -@@ -5731,7 +5728,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and +@@ -5780,7 +5777,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and denotes a type\iref{temp.deduct}, then \tcode{coroutine_traits} has the following publicly accessible member: - \begin{codeblock} - using promise_type = typename R::promise_type; + using promise_type = R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index cb2c8a8e..a4582e22 100644 +index ea6af80c..23c257ac 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -233,7 +233,6 @@ in some translation unit; no diagnostic is required. +@@ -257,7 +257,6 @@ in some translation unit; no diagnostic is required. The syntax for \grammarterm{template-parameter}{s} is: @@ -7700,7 +7337,7 @@ index cb2c8a8e..a4582e22 100644 \begin{bnf} \nontermdef{template-parameter}\br type-parameter\br -@@ -1525,7 +1524,6 @@ for function templates}{temp.func.order}. +@@ -1638,7 +1637,6 @@ for function templates}{temp.func.order}. Given an invented class template \tcode{X} with the \grammarterm{template-head} of \tcode{A} (including default arguments and \grammarterm{requires-clause}, if any): @@ -7708,7 +7345,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item Each of the two function templates has the same template parameters -@@ -1923,7 +1921,6 @@ or templated function declaration\iref{dcl.fct} +@@ -2035,7 +2033,6 @@ or templated function declaration\iref{dcl.fct} can be constrained by the use of a \grammarterm{requires-clause}. This allows the specification of constraints for that declaration as an expression: @@ -7716,7 +7353,7 @@ index cb2c8a8e..a4582e22 100644 \begin{bnf} \nontermdef{constraint-expression}\br logical-or-expression -@@ -1939,7 +1936,6 @@ that are used to constrain the declaration. +@@ -2051,7 +2048,6 @@ that are used to constrain the declaration. \pnum \indextext{constraint!associated|see{associated constraints}}% A declaration's \defn{associated constraints} are defined as follows: @@ -7724,7 +7361,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item If there are no introduced \grammarterm{constraint-expression}{s}, the declaration has no associated constraints. -@@ -2722,7 +2718,6 @@ public: +@@ -2842,7 +2838,6 @@ public: declares three member functions of a class template. The subscript function can be defined like this: @@ -7732,7 +7369,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template T& Array::operator[](int i) { if (i<0 || sz<=i) error("Array: range error"); -@@ -3111,7 +3106,6 @@ produces zero or more instantiations of the pattern in a list (described below). +@@ -3234,7 +3229,6 @@ produces zero or more instantiations of the pattern in a list (described below). The form of the pattern depends on the context in which the expansion occurs. Pack expansions can occur in the following contexts: @@ -7740,7 +7377,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item In a function parameter pack\iref{dcl.fct}; the pattern is the \grammarterm{parameter-declaration} without the ellipsis. -@@ -3713,7 +3707,6 @@ All other constant template arguments are specialized. +@@ -3840,7 +3834,6 @@ All other constant template arguments are specialized. \pnum Within the argument list of a partial specialization, the following restrictions apply: @@ -7748,7 +7385,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item The type of a template parameter corresponding to a specialized constant template -@@ -3727,7 +3720,6 @@ template< int X, int (*array_ptr)[X] > class A {}; +@@ -3854,7 +3847,6 @@ template< int X, int (*array_ptr)[X] > class A {}; int array[5]; template< int X > class A { }; // error \end{codeblock} @@ -7756,7 +7393,7 @@ index cb2c8a8e..a4582e22 100644 \end{example} \item The partial specialization shall be more specialized than the primary -@@ -3853,7 +3845,6 @@ the first is \defn{more specialized} than the second if, given the following +@@ -3980,7 +3972,6 @@ the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more specialized than the second according to the \link{ordering rules for function templates}{temp.func.order}: @@ -7764,7 +7401,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item Each of the two -@@ -4005,7 +3996,6 @@ A::B abci; // uses \#1 +@@ -4132,7 +4123,6 @@ A::B abci; // uses \#1 A function template defines an unbounded set of related functions. \begin{example} A family of sort functions can be declared like this: @@ -7772,7 +7409,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template class Array { }; template void sort(Array&); -@@ -4060,7 +4050,6 @@ void h(int* p) { +@@ -4187,7 +4177,6 @@ void h(int* p) { } \end{codeblock} \end{minipage} @@ -7780,7 +7417,7 @@ index cb2c8a8e..a4582e22 100644 \end{example} \pnum -@@ -4246,7 +4235,6 @@ to guarantee that functionally equivalent declarations will be treated +@@ -4373,7 +4362,6 @@ to guarantee that functionally equivalent declarations will be treated as distinct. For example, the last two declarations are functionally equivalent and would cause a program to be ill-formed: @@ -7788,7 +7425,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} // guaranteed to be the same template void f(A, A); -@@ -4339,7 +4327,6 @@ then the order of the function parameters in its transformed template +@@ -4464,7 +4452,6 @@ then the order of the function parameters in its transformed template is reversed. For a function template $M$ with cv-qualifiers \cv{} that is a member of a class $A$: @@ -7796,7 +7433,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item The type $X(M)$ is ``rvalue reference to \cv{}~$A$'' -@@ -4584,7 +4571,6 @@ template class TT> +@@ -4722,7 +4709,6 @@ template class TT> void g(TT>); g(v); // OK, \tcode{TT} = \tcode{vector} \end{codeblock} @@ -7804,7 +7441,7 @@ index cb2c8a8e..a4582e22 100644 \end{example} \pnum -@@ -5434,7 +5420,6 @@ of a class that is the current instantiation. +@@ -5588,7 +5574,6 @@ of a class that is the current instantiation. \pnum A qualified name\iref{basic.lookup.qual} is dependent if @@ -7812,7 +7449,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item it is a \grammarterm{conversion-function-id} -@@ -5671,7 +5656,6 @@ specified by the +@@ -5839,7 +5824,6 @@ specified by the or \grammarterm{new-type-id} is dependent, even if any subexpression is type-dependent: @@ -7820,7 +7457,7 @@ index cb2c8a8e..a4582e22 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br simple-type-specifier braced-init-list\br -@@ -5689,7 +5673,6 @@ typename-specifier braced-init-list\br +@@ -5857,7 +5841,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following forms are never type-dependent (because the type of the expression cannot be dependent): @@ -7828,7 +7465,7 @@ index cb2c8a8e..a4582e22 100644 \begin{ncsimplebnf} literal\br \keyword{sizeof} unary-expression\br -@@ -5784,7 +5767,6 @@ Expressions of the following form are value-dependent if the +@@ -5968,7 +5951,6 @@ Expressions of the following form are value-dependent if the is type-dependent or the \grammarterm{type-id} is dependent: @@ -7836,7 +7473,7 @@ index cb2c8a8e..a4582e22 100644 \begin{ncsimplebnf} \keyword{sizeof} unary-expression\br \keyword{sizeof} \terminal{(} type-id \terminal{)}\br -@@ -5812,7 +5794,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} +@@ -5996,7 +5978,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} is value-dependent or any \grammarterm{assignment-expression} in the \grammarterm{braced-init-list} is value-dependent: @@ -7844,7 +7481,7 @@ index cb2c8a8e..a4582e22 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br typename-specifier \terminal{(} \opt{expression-list} \terminal{)}\br -@@ -5827,7 +5808,6 @@ typename-specifier braced-init-list\br +@@ -6011,7 +5992,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following form are value-dependent: @@ -7852,7 +7489,7 @@ index cb2c8a8e..a4582e22 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -6724,7 +6704,6 @@ template. +@@ -7018,7 +6998,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -7860,7 +7497,7 @@ index cb2c8a8e..a4582e22 100644 \begin{bnf} \nontermdef{explicit-instantiation}\br \opt{\keyword{extern}} \keyword{template} declaration -@@ -7199,7 +7178,6 @@ otherwise, it is a declaration. +@@ -7493,7 +7472,6 @@ otherwise, it is a declaration. The definition of a static data member of a template for which default-initialization is desired can use functional cast notation\iref{expr.type.conv}: @@ -7868,7 +7505,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template<> X Q::x; // declaration template<> X Q::x (); // error: declares a function -@@ -7458,7 +7436,6 @@ An empty template argument list can be used to indicate that a given +@@ -7752,7 +7730,6 @@ An empty template argument list can be used to indicate that a given use refers to a specialization of a function template even when a non-template function\iref{dcl.fct} is visible that would otherwise be used. For example: @@ -7876,7 +7513,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template int f(T); // \#1 int f(int); // \#2 -@@ -8039,7 +8016,6 @@ void h(int x, float& y) { +@@ -8354,7 +8331,6 @@ void h(int x, float& y) { If \tcode{P} is not a reference type: @@ -7884,7 +7521,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item If -@@ -8134,7 +8110,6 @@ the type +@@ -8449,7 +8425,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -7892,7 +7529,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item If the original -@@ -8322,7 +8297,6 @@ of \tcode{P} for type deduction and for any further references to or transformat +@@ -8639,7 +8614,6 @@ of \tcode{P} for type deduction and for any further references to or transformat If \tcode{A} is not a reference type: @@ -7900,7 +7537,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item If -@@ -8368,7 +8342,6 @@ values that will make the deduced +@@ -8685,7 +8659,6 @@ values that will make the deduced identical to \tcode{A}. However, certain attributes of \tcode{A} may be ignored: @@ -7908,7 +7545,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item If the original \tcode{A} is a reference type, -@@ -8413,7 +8386,6 @@ the argument template and template-1 as the parameter template. +@@ -8730,7 +8703,6 @@ the argument template and template-1 as the parameter template. \pnum The types used to determine the ordering depend on the context in which the partial ordering is done: @@ -7916,7 +7553,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item In the context of a function call, the types used are those function parameter types -@@ -8441,7 +8413,6 @@ and +@@ -8758,7 +8730,6 @@ and \pnum Before the partial ordering is done, certain transformations are performed on the types used for partial ordering: @@ -7924,7 +7561,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item If -@@ -8647,7 +8618,6 @@ A given type +@@ -8962,7 +8933,6 @@ A given type \tcode{P} can be composed from a number of other types, templates, and constant template argument values: @@ -7932,7 +7569,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item A function type includes the types of each of the function parameters, -@@ -8689,7 +8659,6 @@ need not have the same form. +@@ -9004,7 +8974,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -7940,7 +7577,7 @@ index cb2c8a8e..a4582e22 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -8780,7 +8749,6 @@ is deduced. +@@ -9099,7 +9068,6 @@ is deduced. \begin{example} Here is an example in which different parameter/argument pairs produce inconsistent template argument deductions: @@ -7948,7 +7585,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template void f(T x, T y) { @\commentellip@ } struct A { @\commentellip@ }; -@@ -8797,7 +8765,6 @@ Here is an example where two template arguments are deduced from a +@@ -9116,7 +9084,6 @@ Here is an example where two template arguments are deduced from a single function parameter/argument pair. This can lead to conflicts that cause type deduction to fail: @@ -7956,7 +7593,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -8814,7 +8781,6 @@ void r() { +@@ -9133,7 +9100,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -7964,7 +7601,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -8833,7 +8799,6 @@ void h() { +@@ -9152,7 +9118,6 @@ void h() { Here is an example where a qualification conversion applies between the argument type on the function call and the deduced template argument type: @@ -7972,7 +7609,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -8844,7 +8809,6 @@ void s() { +@@ -9163,7 +9128,6 @@ void s() { Here is an example where the template argument is used to instantiate a derived class type of the corresponding function parameter type: @@ -7981,10 +7618,10 @@ index cb2c8a8e..a4582e22 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 8a388c9f..8c1b16d3 100644 +index 7a2d110e..6b8778ac 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -6633,7 +6633,6 @@ and visible to other threads. +@@ -7365,7 +7365,6 @@ and visible to other threads. \pnum The expression \tcode{m.lock()} is well-formed and has the following semantics: @@ -7992,7 +7629,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -6676,7 +6675,6 @@ that a deadlock would occur. +@@ -7408,7 +7407,6 @@ that a deadlock would occur. \pnum The expression \tcode{m.try_lock()} is well-formed and has the following semantics: @@ -8000,7 +7637,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -6722,7 +6720,6 @@ Nothing. +@@ -7454,7 +7452,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -8008,7 +7645,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -6877,7 +6874,6 @@ requirements\iref{thread.req.lockable.timed}. +@@ -7609,7 +7606,6 @@ requirements\iref{thread.req.lockable.timed}. \pnum The expression \tcode{m.try_lock_for(rel_time)} is well-formed and has the following semantics: @@ -8016,7 +7653,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -6919,7 +6915,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -7651,7 +7647,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_until(abs_time)} is well-formed and has the following semantics: @@ -8024,7 +7661,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -7106,7 +7101,6 @@ shared lock. +@@ -7838,7 +7833,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -8032,7 +7669,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -7143,7 +7137,6 @@ The calling thread has a shared lock on the mutex. +@@ -7875,7 +7869,6 @@ The calling thread has a shared lock on the mutex. \pnum The expression \tcode{m.unlock_shared()} is well-formed and has the following semantics: @@ -8040,7 +7677,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -7168,7 +7161,6 @@ Nothing. +@@ -7900,7 +7893,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -8048,7 +7685,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -7271,7 +7263,6 @@ requirements\iref{thread.req.lockable.shared.timed}. +@@ -8003,7 +7995,6 @@ requirements\iref{thread.req.lockable.shared.timed}. \pnum The expression \tcode{m.try_lock_shared_for(rel_time)} is well-formed and has the following semantics: @@ -8056,7 +7693,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -7316,7 +7307,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -8048,7 +8039,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_shared_until(abs_time)} is well-formed and has the following semantics: @@ -8064,7 +7701,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -9454,7 +9444,6 @@ template +@@ -10199,7 +10189,6 @@ template \begin{itemdescr} \pnum \effects @@ -8072,7 +7709,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -10865,7 +10854,6 @@ shared state as \tcode{*this}. +@@ -11589,7 +11578,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -8080,7 +7717,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemize} \item \tcode{future_already_retrieved} if \tcode{get_future} has already been called on a \tcode{promise} with the same shared state as \tcode{*this}. -@@ -10928,7 +10916,6 @@ already has a stored value or exception. +@@ -11652,7 +11640,6 @@ already has a stored value or exception. \pnum \errors @@ -8088,7 +7725,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -11268,7 +11255,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -11992,7 +11979,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -8096,7 +7733,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -11612,7 +11598,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -12336,7 +12322,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8104,7 +7741,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -11647,7 +11632,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -12371,7 +12356,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8112,7 +7749,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -11703,7 +11687,6 @@ The further behavior +@@ -12427,7 +12411,6 @@ The further behavior of the second function depends on the \tcode{policy} argument as follows (if more than one of these conditions applies, the implementation may choose any of the corresponding policies): @@ -8121,10 +7758,10 @@ index 8a388c9f..8c1b16d3 100644 \item If \tcode{launch::async} is set in \tcode{policy}, calls diff --git a/source/time.tex b/source/time.tex -index bdbef27b..39598098 100644 +index 62226224..6b4a0b79 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -2074,7 +2074,6 @@ return os << s.str(); +@@ -2075,7 +2075,6 @@ return os << s.str(); \end{codeblock} where \tcode{\placeholder{units-suffix}} depends on the type \tcode{Period::type} as follows: @@ -8132,7 +7769,7 @@ index bdbef27b..39598098 100644 \begin{itemize} \item If \tcode{Period::type} is \tcode{atto}, -@@ -2952,7 +2951,6 @@ for (auto i = 0; i < 8; ++i, u += 250ms) +@@ -2953,7 +2952,6 @@ for (auto i = 0; i < 8; ++i, u += 250ms) \end{codeblock} Produces this output: @@ -8140,7 +7777,7 @@ index bdbef27b..39598098 100644 \begin{outputblock} 2015-06-30 23:59:59.500 UTC 2015-06-30 23:59:59.750 UTC -@@ -3158,7 +3156,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, tt); +@@ -3159,7 +3157,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, tt); \end{codeblock} Produces this output: @@ -8148,7 +7785,7 @@ index bdbef27b..39598098 100644 \begin{outputblock} 2000-01-01 00:00:00 UTC == 2000-01-01 00:00:32 TAI \end{outputblock} -@@ -3321,7 +3318,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, gt); +@@ -3322,7 +3319,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, gt); \end{codeblock} Produces this output: @@ -8156,7 +7793,7 @@ index bdbef27b..39598098 100644 \begin{outputblock} 2000-01-01 00:00:00 UTC == 2000-01-01 00:00:13 GPS \end{outputblock} -@@ -3390,7 +3386,6 @@ such as \tcode{std::file\-sys\-tem}. +@@ -3391,7 +3387,6 @@ such as \tcode{std::file\-sys\-tem}. \pnum The type denoted by \tcode{file_clock} provides precisely one of the following two sets of static member functions: @@ -8164,7 +7801,7 @@ index bdbef27b..39598098 100644 \begin{codeblock} template static sys_time<@\seebelow@> -@@ -3399,9 +3394,7 @@ template +@@ -3400,9 +3395,7 @@ template static file_time<@\seebelow@> from_sys(const sys_time&); \end{codeblock} @@ -8174,7 +7811,7 @@ index bdbef27b..39598098 100644 \begin{codeblock} template static utc_time<@\seebelow@> -@@ -3870,7 +3863,6 @@ template +@@ -3875,7 +3868,6 @@ template \constraints At least one of the following clock time conversion expressions is well-formed: @@ -8182,7 +7819,7 @@ index bdbef27b..39598098 100644 \begin{itemize} \item \begin{codeblock} -@@ -7916,7 +7908,6 @@ a conventional syntax for the creation of civil calendar dates. +@@ -7921,7 +7913,6 @@ a conventional syntax for the creation of civil calendar dates. \pnum \begin{note} The year, month, and day are accepted in any of the following 3 orders: @@ -8190,7 +7827,7 @@ index bdbef27b..39598098 100644 \begin{codeblock} @\tcode{\placeholder{year}}@/@\tcode{\placeholder{month}}@/@\tcode{\placeholder{day}}@ @\tcode{\placeholder{month}}@/@\tcode{\placeholder{day}}@/@\tcode{\placeholder{year}}@ -@@ -7924,7 +7915,6 @@ The year, month, and day are accepted in any of the following 3 orders: +@@ -7929,7 +7920,6 @@ The year, month, and day are accepted in any of the following 3 orders: \end{codeblock} Anywhere a \tcode{\placeholder{day}} is needed, any of the following can also be specified: @@ -8198,7 +7835,7 @@ index bdbef27b..39598098 100644 \begin{codeblock} last @\tcode{\placeholder{weekday}}@[@\tcode{\placeholder{i}}@] -@@ -7937,7 +7927,6 @@ last +@@ -7942,7 +7932,6 @@ last Partial-date types such as \tcode{year_month} and \tcode{month_day} can be created by not applying the second division operator for any of the three orders. For example: @@ -8206,7 +7843,7 @@ index bdbef27b..39598098 100644 \begin{codeblock} year_month ym = 2015y/April; month_day md1 = April/4; -@@ -9126,7 +9115,6 @@ template +@@ -9134,7 +9123,6 @@ template Initializes the base class with a sequence of \tcode{char} equivalent to that produced by \tcode{os.str()} initialized as shown below: @@ -8214,7 +7851,7 @@ index bdbef27b..39598098 100644 \begin{codeblock} ostringstream os; os << tp << " is in a gap between\n" -@@ -9156,7 +9144,6 @@ int main() { +@@ -9164,7 +9152,6 @@ int main() { \end{codeblock} Produces the output: @@ -8222,7 +7859,7 @@ index bdbef27b..39598098 100644 \begin{outputblock} 2016-03-13 02:30:00 is in a gap between 2016-03-13 02:00:00 EST and -@@ -9201,7 +9188,6 @@ template +@@ -9209,7 +9196,6 @@ template Initializes the base class with a sequence of \tcode{char} equivalent to that produced by \tcode{os.str()} initialized as shown below: @@ -8230,7 +7867,7 @@ index bdbef27b..39598098 100644 \begin{codeblock} ostringstream os; os << tp << " is ambiguous. It could be\n" -@@ -9229,7 +9215,6 @@ int main() { +@@ -9237,7 +9223,6 @@ int main() { \end{codeblock} Produces the output: @@ -8238,7 +7875,7 @@ index bdbef27b..39598098 100644 \begin{outputblock} 2016-11-06 01:30:00 is ambiguous. It could be 2016-11-06 01:30:00 EDT == 2016-11-06 05:30:00 UTC or -@@ -9283,7 +9268,6 @@ The \tcode{offset} data member indicates +@@ -9291,7 +9276,6 @@ The \tcode{offset} data member indicates the UTC offset in effect for the associated \tcode{time_zone} and \tcode{time_point}. The relationship between \tcode{local_time} and \tcode{sys_time} is: @@ -8246,7 +7883,7 @@ index bdbef27b..39598098 100644 \begin{codeblock} offset = local_time - sys_time \end{codeblock} -@@ -9588,7 +9572,6 @@ the behavior of \tcode{zoned_time} +@@ -9596,7 +9580,6 @@ the behavior of \tcode{zoned_time} for the \tcode{zoned_time} default constructor, and constructors taking \tcode{string_view}. A specialization for \tcode{const time_zone*} is provided by the implementation: @@ -8254,7 +7891,7 @@ index bdbef27b..39598098 100644 \begin{codeblock} namespace std::chrono { template<> struct zoned_traits { -@@ -10164,7 +10147,6 @@ for (auto& l : get_tzdb().leap_seconds) +@@ -10172,7 +10155,6 @@ for (auto& l : get_tzdb().leap_seconds) \end{codeblock} Produces the output: @@ -8262,7 +7899,7 @@ index bdbef27b..39598098 100644 \begin{outputblock} 1972-07-01 00:00:00: 1s 1973-01-01 00:00:00: 1s -@@ -10463,7 +10445,6 @@ The \tcode{parse} member functions of these formatters +@@ -10471,7 +10453,6 @@ The \tcode{parse} member functions of these formatters interpret the format specification as a \fmtgrammarterm{chrono-format-spec} according to the following syntax: @@ -8271,10 +7908,10 @@ index bdbef27b..39598098 100644 \fmtnontermdef{chrono-format-spec}\br \opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs} diff --git a/source/utilities.tex b/source/utilities.tex -index d72eebe4..171c1b2f 100644 +index af0ec065..c39c394b 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -270,7 +270,6 @@ Exchanges values stored in two locations. +@@ -289,7 +289,6 @@ Exchanges values stored in two locations. \pnum \remarks The exception specification is equivalent to: @@ -8282,7 +7919,7 @@ index d72eebe4..171c1b2f 100644 \begin{codeblock} is_nothrow_move_constructible_v && is_nothrow_move_assignable_v \end{codeblock} -@@ -2220,7 +2219,6 @@ For all $i$, assigns \tcode{std::forward<$\tcode{T}_i$>(get<$i$>(u))} to +@@ -2540,7 +2539,6 @@ For all $i$, assigns \tcode{std::forward<$\tcode{T}_i$>(get<$i$>(u))} to \remarks The exception specification is equivalent to the logical \logop{and} of the following expressions: @@ -8290,7 +7927,7 @@ index d72eebe4..171c1b2f 100644 \begin{codeblock} is_nothrow_move_assignable_v<@$\mathtt{T}_i$@> \end{codeblock} -@@ -3166,7 +3164,6 @@ As if by \tcode{x.swap(y)}. +@@ -3486,7 +3484,6 @@ As if by \tcode{x.swap(y)}. \pnum \remarks The exception specification is equivalent to: @@ -8298,7 +7935,7 @@ index d72eebe4..171c1b2f 100644 \begin{codeblock} noexcept(x.swap(y)) \end{codeblock} -@@ -10142,7 +10139,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; +@@ -11307,7 +11304,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8306,7 +7943,7 @@ index d72eebe4..171c1b2f 100644 \begin{itemize} \item If \tcode{I < pos}, the new value is zero; -@@ -10167,7 +10163,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; +@@ -11332,7 +11328,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8314,7 +7951,7 @@ index d72eebe4..171c1b2f 100644 \begin{itemize} \item If \tcode{pos >= N - I}, the new value is zero; -@@ -10893,7 +10888,6 @@ namespace std { +@@ -12061,7 +12056,6 @@ namespace std { If a \Cpp{} program wants to have a by-element addition of two vectors \tcode{a} and \tcode{b} containing \tcode{double} and put the result into \tcode{a}, it can do: @@ -8322,7 +7959,7 @@ index d72eebe4..171c1b2f 100644 \begin{codeblock} transform(a.begin(), a.end(), b.begin(), a.begin(), plus()); \end{codeblock} -@@ -14373,7 +14367,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; +@@ -15544,7 +15538,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; The header provides partial specializations of \tcode{function_ref} for each combination of the possible replacements of the placeholders \cv{} and \placeholder{noex} where: @@ -8334,10 +7971,10 @@ index d72eebe4..171c1b2f 100644 2.43.0 -From 28f9650c9f22d94dd88610aec105f0d73e5fd8e1 Mon Sep 17 00:00:00 2001 +From 60545dee60f2abfb85a8ab5fd8e069a06de25ed8 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 -Subject: [PATCH 6/9] Use monospace font for code in figures. +Subject: [PATCH 5/9] Use monospace font for code in figures. --- source/assets/figdag.dot | 8 ++++---- @@ -8481,17 +8118,17 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From ce6fc20d159a2a02d68ce6dbeaf186db5697c2d5 Mon Sep 17 00:00:00 2001 +From cc7685c521be604401667ec9815e3e955fe5ad09 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 -Subject: [PATCH 7/9] [uaxid] Mark code that's not to be highlighted. +Subject: [PATCH 6/9] [uaxid] Mark code that's not to be highlighted. --- source/uax31.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/uax31.tex b/source/uax31.tex -index 641ab63b..db586c1f 100644 +index 79f0f7d0..80b2d666 100644 --- a/source/uax31.tex +++ b/source/uax31.tex @@ -33,8 +33,8 @@ where \tcode{} has the XID_Start property, @@ -8509,31 +8146,31 @@ index 641ab63b..db586c1f 100644 2.43.0 -From 3c4fcf9e927ba196d3104396ecea1c36e30469b3 Mon Sep 17 00:00:00 2001 +From abbb3bbd075250a722a3ed158747251af8d03697 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 -Subject: [PATCH 8/9] Use cxxdraft-htmlgen macros more. +Subject: [PATCH 7/9] Use cxxdraft-htmlgen macros more. --- - source/algorithms.tex | 194 +++++++++++++------------- + source/algorithms.tex | 180 +++++++++++++-------------- source/concepts.tex | 4 +- source/diagnostics.tex | 18 ++- source/exec.tex | 18 +-- source/future.tex | 10 +- - source/iostreams.tex | 28 ++-- - source/lib-intro.tex | 28 ++-- - source/memory.tex | 46 +++--- - source/meta.tex | 310 ++++++++++++++++++++--------------------- - source/numerics.tex | 38 ++--- + source/iostreams.tex | 28 ++--- + source/lib-intro.tex | 28 ++--- + source/memory.tex | 46 +++---- + source/meta.tex | 268 ++++++++++++++++++++--------------------- + source/numerics.tex | 34 +++--- source/strings.tex | 10 +- - source/support.tex | 14 +- - source/threads.tex | 112 +++++++-------- - source/time.tex | 66 ++++----- - source/utilities.tex | 138 +++++++++--------- - 15 files changed, 513 insertions(+), 521 deletions(-) + source/support.tex | 4 +- + source/threads.tex | 110 ++++++++--------- + source/time.tex | 66 +++++----- + source/utilities.tex | 136 ++++++++++----------- + 15 files changed, 476 insertions(+), 484 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 71678537..9b6f07ea 100644 +index 6eaef6b7..b7fd050e 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -8580,7 +8217,7 @@ index 71678537..9b6f07ea 100644 if it is required to be a mutable iterator, or model \libconcept{random_access_iterator}\iref{iterator.concept.random.access} otherwise. \end{itemize} -@@ -3611,10 +3611,10 @@ template +@@ -4619,10 +4619,10 @@ template \pnum \expects \tcode{Function} meets @@ -8593,7 +8230,7 @@ index 71678537..9b6f07ea 100644 \end{note} \pnum -@@ -3651,7 +3651,7 @@ template +@@ -4659,7 +4659,7 @@ template \begin{itemdescr} \pnum \expects @@ -8602,7 +8239,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -3737,10 +3737,10 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4793,10 +4793,10 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8615,7 +8252,7 @@ index 71678537..9b6f07ea 100644 \end{note} \pnum -@@ -3777,7 +3777,7 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4833,7 +4833,7 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8624,7 +8261,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -4443,7 +4443,7 @@ If +@@ -5681,7 +5681,7 @@ If \item the types of \tcode{first1}, \tcode{last1}, \tcode{first2}, and \tcode{last2} meet the @@ -8633,7 +8270,7 @@ index 71678537..9b6f07ea 100644 and \tcode{last1 - first1 != last2 - first2} for the overloads in namespace \tcode{std}; \item -@@ -4767,7 +4767,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} +@@ -6025,7 +6025,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} \pnum \remarks @@ -8642,16 +8279,7 @@ index 71678537..9b6f07ea 100644 \end{itemdescr} \rSec2[alg.starts.with]{Starts with} -@@ -5182,7 +5182,7 @@ do not overlap. - For the overload with an \tcode{ExecutionPolicy}, - there might be a performance cost - if \tcode{iterator_traits::value_type} --is not \oldconcept{\-Move\-Constructible} (\tref{cpp17.moveconstructible}). -+is not \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}). - \end{note} - - \pnum -@@ -5993,7 +5993,7 @@ Let $E$ be +@@ -7598,7 +7598,7 @@ Let $E(\tcode{i})$ be \expects For the algorithms in namespace \tcode{std}, the type of \tcode{*first} @@ -8660,16 +8288,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6103,7 +6103,7 @@ do not overlap. - For the overloads with an \tcode{ExecutionPolicy}, - there might be a performance cost - if \tcode{iterator_traits::value_type} does not meet --the \oldconcept{\-Move\-Constructible} (\tref{cpp17.moveconstructible}) requirements. -+the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements. - \end{note} - - \pnum -@@ -6176,7 +6176,7 @@ let $E$ be +@@ -7849,7 +7849,7 @@ let $E(\tcode{i})$ be For the overloads in namespace \tcode{std}, \tcode{pred} is an equivalence relation and the type of \tcode{*first} meets @@ -8678,7 +8297,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6279,18 +6279,18 @@ let $E$ be +@@ -7980,10 +7980,10 @@ Let: \libconcept{forward_iterator}\iref{iterator.concept.forward}, then there are no additional requirements for \tcode{T}. Otherwise, if \tcode{OutputIterator} meets @@ -8689,20 +8308,9 @@ index 71678537..9b6f07ea 100644 - the \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. + the \oldconceptref{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. Otherwise, \tcode{T} meets both -- the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and -- \oldconcept{CopyAssignable} requirements. -+ the \oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}) and -+ \oldconceptref{CopyAssignable} requirements. - \begin{note} - For the overloads with an \tcode{ExecutionPolicy}, - there might be a performance cost - if the value type of \tcode{ForwardIterator1} does not meet both the -- \oldconcept{CopyConstructible} and \oldconcept{CopyAssignable} requirements. -+ \oldconceptref{CopyConstructible} and \oldconceptref{CopyAssignable} requirements. - \end{note} - \end{itemize} - \end{itemize} -@@ -6338,7 +6338,7 @@ template<@\libconcept{bidirectional_range}@ R> + the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and + \oldconcept{CopyAssignable} requirements. +@@ -8062,7 +8062,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8711,7 +8319,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6430,10 +6430,10 @@ template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S> +@@ -8197,10 +8197,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterat \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -8725,7 +8333,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6574,13 +6574,13 @@ For the overload in namespace \tcode{std}: +@@ -8420,13 +8420,13 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{PopulationIterator} meets @@ -8742,7 +8350,7 @@ index 71678537..9b6f07ea 100644 unless \tcode{Pop\-ulat\-ion\-Iter\-ator} models \libconcept{forward_iterator}\iref{iterator.concept.forward}. \item -@@ -6648,7 +6648,7 @@ For the overload in namespace \tcode{std}: +@@ -8494,7 +8494,7 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{RandomAccessIterator} meets @@ -8751,7 +8359,7 @@ index 71678537..9b6f07ea 100644 \item The type \tcode{remove_reference_t} meets the uniform random bit generator\iref{rand.req.urng} requirements. -@@ -6700,7 +6700,7 @@ template<@\libconcept{forward_range}@ R> +@@ -8555,7 +8555,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8760,7 +8368,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6754,10 +6754,10 @@ template<@\libconcept{forward_range}@ R> +@@ -8619,10 +8619,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8774,16 +8382,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6771,7 +6771,7 @@ from \tcode{i = (last - first) - n - 1} and proceeding to \tcode{i = 0} if - \item - for the overload in namespace \tcode{std} - without an \tcode{ExecutionPolicy} template parameter, --\tcode{Forward\-Iterator} meets the \oldconcept{BidirectionalIterator} requirements, -+\tcode{Forward\-Iterator} meets the \oldconceptref{BidirectionalIterator} requirements, - \item - for the overloads in namespace \tcode{ranges}, - \tcode{I} models \libconcept{bidirectional_iterator}. -@@ -6927,10 +6927,10 @@ for the overloads with no parameters by those names. +@@ -8801,10 +8801,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8797,7 +8396,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6985,10 +6985,10 @@ for the overloads with no parameters by those names. +@@ -8869,10 +8869,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8811,7 +8410,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -7055,10 +7055,10 @@ for the overloads with no parameters by those names. +@@ -8943,10 +8943,10 @@ for the overloads with no parameters by those names. \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8825,7 +8424,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -7163,10 +7163,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. +@@ -9090,10 +9090,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8839,7 +8438,7 @@ index 71678537..9b6f07ea 100644 \pnum For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and -@@ -7368,10 +7368,10 @@ for the overloads with no parameters by those names. +@@ -9328,10 +9328,10 @@ for the overloads with no parameters by those names. \range{first}{nth} and \range{nth}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8853,7 +8452,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -7719,7 +7719,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9713,7 +9713,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -8862,8 +8461,8 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -7746,7 +7746,7 @@ Let $N = \tcode{last - first}$: - For the overload with no \tcode{ExecutionPolicy}, +@@ -9740,7 +9740,7 @@ Let $N = \tcode{last - first}$: + For the non-parallel algorithm overloads, exactly $N$ applications of the predicate and projection. At most $N / 2$ swaps if the type of \tcode{first} meets - the \oldconcept{BidirectionalIterator} requirements @@ -8871,7 +8470,7 @@ index 71678537..9b6f07ea 100644 for the overloads in namespace \tcode{std} or models \libconcept{bidirectional_iterator} for the overloads in namespace \tcode{ranges}, -@@ -7788,10 +7788,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9793,10 +9793,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8885,16 +8484,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -7874,7 +7874,7 @@ The input range and output ranges do not overlap. - \begin{note} - For the overload with an \tcode{ExecutionPolicy}, - there might be a performance cost if \tcode{first}'s value type --does not meet the \oldconcept{CopyConstructible} requirements. -+does not meet the \oldconceptref{CopyConstructible} requirements. - \end{note} - - \pnum -@@ -8079,10 +8079,10 @@ for the overloads with no parameters by those names. +@@ -10193,10 +10193,10 @@ for the overloads with no parameters by those names. sorted with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8908,7 +8498,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -8648,10 +8648,10 @@ The range \range{first}{last - 1} +@@ -10959,10 +10959,10 @@ The range \range{first}{last - 1} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8922,7 +8512,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -8701,10 +8701,10 @@ The range \range{first}{last} +@@ -11012,10 +11012,10 @@ The range \range{first}{last} is a valid non-empty heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8936,7 +8526,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -8757,10 +8757,10 @@ for the overloads with no parameters by those names. +@@ -11068,10 +11068,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8950,7 +8540,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -8810,10 +8810,10 @@ The range \range{first}{last} is +@@ -11121,10 +11121,10 @@ The range \range{first}{last} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8964,7 +8554,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -8972,7 +8972,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8984,7 +8574,7 @@ index 71678537..9b6f07ea 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9050,7 +9050,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -9004,7 +8594,7 @@ index 71678537..9b6f07ea 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9130,7 +9130,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -9024,7 +8614,7 @@ index 71678537..9b6f07ea 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9364,7 +9364,7 @@ for the overloads with no parameter \tcode{proj}. +@@ -11748,7 +11748,7 @@ for the overloads with no parameter \tcode{proj}. \expects \tcode{bool(invoke(comp, invoke(proj, hi), invoke(proj, lo)))} is \tcode{false}. For the first form, type \tcode{T} @@ -9033,7 +8623,7 @@ index 71678537..9b6f07ea 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9553,7 +9553,7 @@ for overloads with no parameters by those names. +@@ -11951,7 +11951,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9042,7 +8632,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -9612,7 +9612,7 @@ for overloads with no parameters by those names. +@@ -12010,7 +12010,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9051,7 +8641,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -9931,8 +9931,8 @@ template +@@ -12329,8 +12329,8 @@ template \pnum \expects \tcode{T} meets @@ -9062,7 +8652,7 @@ index 71678537..9b6f07ea 100644 In the range \crange{first}{last}, \tcode{binary_op} neither modifies elements nor invalidates iterators or subranges. -@@ -10054,7 +10054,7 @@ are convertible to \tcode{T}. +@@ -12452,7 +12452,7 @@ are convertible to \tcode{T}. \expects \begin{itemize} \item @@ -9071,7 +8661,7 @@ index 71678537..9b6f07ea 100644 \item \tcode{binary_op} neither invalidates iterators or subranges, nor modifies elements in the range \crange{first}{last}. -@@ -10098,8 +10098,8 @@ template}. +@@ -13191,7 +13191,7 @@ that denotes an object of type \tcode{minus<>}. \begin{itemize} \item For the overloads with no \tcode{ExecutionPolicy}, @@ -9152,7 +8742,7 @@ index 71678537..9b6f07ea 100644 \item For all overloads, in the ranges \crange{first}{last} diff --git a/source/concepts.tex b/source/concepts.tex -index 0bfd8612..b166e3a9 100644 +index 3e64abc8..9efb5afa 100644 --- a/source/concepts.tex +++ b/source/concepts.tex @@ -495,7 +495,7 @@ template @@ -9174,22 +8764,22 @@ index 0bfd8612..b166e3a9 100644 invocation of the destructor does not actually throw. \end{note} diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index b4b70046..b734f13a 100644 +index eee2454e..267f428b 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex -@@ -758,9 +758,9 @@ namespace std { +@@ -761,9 +761,9 @@ namespace std { // \ref{syserr}, system error support template - constexpr bool @\libglobal{is_error_code_enum_v}@ = is_error_code_enum::value; + constexpr bool @\libglobal{is_error_code_enum_v}@ = @\libglobalref{is_error_code_enum}@::value; template -- constexpr bool is_error_condition_enum_v = is_error_condition_enum::value; +- constexpr bool @\libglobal{is_error_condition_enum_v}@ = is_error_condition_enum::value; + constexpr bool @\libglobal{is_error_condition_enum_v}@ = @\libglobalref{is_error_condition_enum}@::value; } \end{codeblock} -@@ -771,9 +771,9 @@ Whether or not the \libheader{system_error} implementation +@@ -774,9 +774,9 @@ Whether or not the \libheader{system_error} implementation exposes the \libheader{cerrno} macros is unspecified. \pnum @@ -9201,7 +8791,7 @@ index b4b70046..b734f13a 100644 conversions, respectively. \rSec2[syserr.errcat]{Class \tcode{error_category}} -@@ -798,8 +798,6 @@ even for objects holding the same value. +@@ -801,8 +801,6 @@ even for objects holding the same value. \indexlibraryglobal{error_category}% \indexlibraryctor{error_category}% \indexlibrarydtor{error_category}% @@ -9210,7 +8800,7 @@ index b4b70046..b734f13a 100644 \begin{codeblock} namespace std { class error_category { -@@ -818,8 +816,8 @@ namespace std { +@@ -821,8 +819,8 @@ namespace std { strong_ordering operator<=>(const error_category& rhs) const noexcept; }; @@ -9221,7 +8811,7 @@ index b4b70046..b734f13a 100644 } \end{codeblock} -@@ -1090,7 +1088,7 @@ template +@@ -1093,7 +1091,7 @@ template \begin{itemdescr} \pnum \constraints @@ -9230,7 +8820,7 @@ index b4b70046..b734f13a 100644 \pnum \effects -@@ -1123,7 +1121,7 @@ template +@@ -1126,7 +1124,7 @@ template \begin{itemdescr} \pnum \constraints @@ -9240,7 +8830,7 @@ index b4b70046..b734f13a 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 251a81ab..d141246e 100644 +index 4f7f72b0..4bf25bbd 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9279,10 +8869,10 @@ index 251a81ab..d141246e 100644 \\ \end{floattable} diff --git a/source/future.tex b/source/future.tex -index ddaaf96d..fd54144f 100644 +index ac4ac504..dffbe172 100644 --- a/source/future.tex +++ b/source/future.tex -@@ -344,7 +344,7 @@ template struct is_pod; +@@ -359,7 +359,7 @@ template struct is_pod; \pnum \remarks @@ -9291,7 +8881,7 @@ index ddaaf96d..fd54144f 100644 with a base characteristic of \tcode{true_type} if \tcode{T} is a POD type, and \tcode{false_type} otherwise. -@@ -528,7 +528,7 @@ Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T} +@@ -543,7 +543,7 @@ Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T} If the expression \tcode{TS::value} is well-formed when treated as an \deflink{unevaluated operand}{expr.context}, then specializations of each of the two templates meet @@ -9300,7 +8890,7 @@ index ddaaf96d..fd54144f 100644 \tcode{integral_constant}. Otherwise, they have no member \tcode{value}. -@@ -556,7 +556,7 @@ template struct tuple_element; +@@ -571,7 +571,7 @@ template struct tuple_element; Let \tcode{TE} denote \tcode{tuple_element_t} of the cv-unqualified type \tcode{T}. Then specializations of each of the two templates meet @@ -9308,8 +8898,8 @@ index ddaaf96d..fd54144f 100644 +the \oldconceptref{TransformationTrait} requirements with a member typedef \tcode{type} that names the following type: \begin{itemize} - \item for the first specialization, \tcode{add_volatile_t}, and -@@ -596,7 +596,7 @@ template struct variant_size; + \item for the first specialization, \tcode{volatile TE}, and +@@ -611,7 +611,7 @@ template struct variant_size; Let \tcode{VS} denote \tcode{variant_size} of the cv-unqualified type \tcode{T}. Then specializations of each of the two templates meet @@ -9318,7 +8908,7 @@ index ddaaf96d..fd54144f 100644 with a base characteristic of \tcode{integral_constant}. \end{itemdescr} -@@ -610,7 +610,7 @@ template struct variant_alternative; +@@ -625,7 +625,7 @@ template struct variant_alternative; Let \tcode{VA} denote \tcode{variant_alternative} of the cv-unqualified type \tcode{T}. Then specializations of each of the two templates meet @@ -9326,12 +8916,12 @@ index ddaaf96d..fd54144f 100644 +the \oldconceptref{TransformationTrait} requirements with a member typedef \tcode{type} that names the following type: \begin{itemize} - \item for the first specialization, \tcode{add_volatile_t}, and + \item for the first specialization, \tcode{volatile VA::type}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index f01c8ec2..e15caea7 100644 +index a046490d..11bf87e7 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -1687,10 +1687,10 @@ An \tcode{fpos} type specifies file position information. +@@ -1684,10 +1684,10 @@ An \tcode{fpos} type specifies file position information. It holds a state object whose type is equal to the template parameter \tcode{stateT}. Type \tcode{stateT} shall meet @@ -9346,7 +8936,7 @@ index f01c8ec2..e15caea7 100644 If \tcode{is_trivially_copy_constructible_v} is \tcode{true}, then \tcode{fpos} has a trivial copy constructor. If \tcode{is_trivially_copy_assignable_v} is \tcode{true}, -@@ -1698,11 +1698,11 @@ then \tcode{fpos} has a trivial copy assignment operator. +@@ -1695,11 +1695,11 @@ then \tcode{fpos} has a trivial copy assignment operator. If \tcode{is_trivially_destructible_v} is \tcode{true}, then \tcode{fpos} has a trivial destructor. All specializations of \tcode{fpos} meet @@ -9363,7 +8953,7 @@ index f01c8ec2..e15caea7 100644 In addition, the expressions shown in \tref{fpos.operations} are valid and have the indicated semantics. In that table, -@@ -12954,7 +12954,7 @@ namespace std { +@@ -12960,7 +12960,7 @@ namespace std { \pnum \tcode{Allocator} shall meet @@ -9372,7 +8962,7 @@ index f01c8ec2..e15caea7 100644 \pnum \begin{example} -@@ -13247,7 +13247,7 @@ unless \tcode{EcharT} is one of the encoded character types. +@@ -13253,7 +13253,7 @@ unless \tcode{EcharT} is one of the encoded character types. \pnum Template parameters named \tcode{InputIterator} shall meet the @@ -9381,7 +8971,7 @@ index f01c8ec2..e15caea7 100644 have a value type that is one of the encoded character types. \pnum -@@ -13261,7 +13261,7 @@ they are not included as permitted types. +@@ -13267,7 +13267,7 @@ they are not included as permitted types. \pnum Template parameters named \tcode{Allocator} shall meet @@ -9390,7 +8980,7 @@ index f01c8ec2..e15caea7 100644 \rSec2[fs.filesystem.syn]{Header \tcode{} synopsis} -@@ -14074,7 +14074,7 @@ shall be one of: +@@ -14086,7 +14086,7 @@ shall be one of: \item \tcode{basic_string_view}. A function argument \tcode{const Source\&} \tcode{source} shall have an effective range \range{source.begin()}{source.end()}. @@ -9399,7 +8989,7 @@ index f01c8ec2..e15caea7 100644 The value type shall be an encoded character type. A function argument \tcode{const Source\&} \tcode{source} shall have an effective range \range{source}{end} where \tcode{end} is the first -@@ -16554,7 +16554,7 @@ namespace std::filesystem { +@@ -16591,7 +16591,7 @@ namespace std::filesystem { \pnum \tcode{directory_iterator} meets the @@ -9409,10 +8999,10 @@ index f01c8ec2..e15caea7 100644 \pnum If an iterator of type \tcode{directory_iterator} reports an error or diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 6effcd33..db29b7c9 100644 +index a8a934eb..db69d69a 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex -@@ -1854,7 +1854,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1868,7 +1868,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9421,7 +9011,7 @@ index 6effcd33..db29b7c9 100644 {p{1in}p{4.15in}} \topline \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep -@@ -1881,7 +1881,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1895,7 +1895,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9430,8 +9020,8 @@ index 6effcd33..db29b7c9 100644 {p{1in}p{1in}p{1in}p{1.9in}} \topline \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Return value} & \hdstyle{Post-condition} \\ \capsep -@@ -1895,7 +1895,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. - \tcode{u.\~T()} & All resources owned by \tcode{u} are reclaimed, no exception is propagated. \\ \rowsep +@@ -1909,7 +1909,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. + \tcode{a.\~T()} & No exception is propagated. \\ \rowsep \multicolumn{2}{|l|}{ \begin{tailnote} - Array types and non-object types are not \oldconcept{Destructible}. @@ -9439,7 +9029,7 @@ index 6effcd33..db29b7c9 100644 \end{tailnote} } \\ \end{oldconcepttable} -@@ -1974,7 +1974,7 @@ void value_swap(T&& t, U&& u) { +@@ -1988,7 +1988,7 @@ void value_swap(T&& t, U&& u) { // for rvalues and lvalues } @@ -9448,7 +9038,7 @@ index 6effcd33..db29b7c9 100644 template void lv_swap(T& t1, T& t2) { using std::swap; -@@ -2011,9 +2011,9 @@ int main() { +@@ -2025,9 +2025,9 @@ int main() { A \oldconcept{NullablePointer} type is a pointer-like type that supports null values. A type \tcode{P} meets the \oldconcept{\-Nullable\-Pointer} requirements if \begin{itemize} @@ -9461,7 +9051,7 @@ index 6effcd33..db29b7c9 100644 \item the expressions shown in \tref{cpp17.nullablepointer} are valid and have the indicated semantics, and -@@ -2089,8 +2089,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. +@@ -2103,8 +2103,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. A type \tcode{H} meets the \defnoldconcept{Hash} requirements if \begin{itemize} \item it is a function object type\iref{function.objects}, @@ -9472,7 +9062,7 @@ index 6effcd33..db29b7c9 100644 \item the expressions shown in \tref{cpp17.hash} are valid and have the indicated semantics. \end{itemize} -@@ -2774,7 +2774,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2788,7 +2788,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be copied when the client container is copy-assigned; if so, \tcode{X} shall meet @@ -9481,7 +9071,7 @@ index 6effcd33..db29b7c9 100644 the copy operation shall not throw exceptions. \pnum -@@ -2796,7 +2796,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2810,7 +2810,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be moved when the client container is move-assigned; if so, \tcode{X} shall meet @@ -9490,7 +9080,7 @@ index 6effcd33..db29b7c9 100644 the move operation shall not throw exceptions. \pnum -@@ -2818,7 +2818,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2832,7 +2832,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be swapped when the client container is swapped; if so, @@ -9499,7 +9089,7 @@ index 6effcd33..db29b7c9 100644 the \tcode{swap} operation shall not throw exceptions. \pnum -@@ -2848,7 +2848,7 @@ Default: \tcode{is_empty::type} +@@ -2862,7 +2862,7 @@ Default: \tcode{is_empty::type} \pnum An allocator type \tcode{X} shall meet the @@ -9508,7 +9098,7 @@ index 6effcd33..db29b7c9 100644 The \tcode{XX::pointer}, \tcode{XX::const_pointer}, \tcode{XX::void_pointer}, and \tcode{XX::const_void_pointer} types shall meet the \oldconcept{Nullable\-Pointer} requirements (\tref{cpp17.nullablepointer}). -@@ -2856,7 +2856,7 @@ No constructor, +@@ -2870,7 +2870,7 @@ No constructor, comparison operator function, copy operation, move operation, or swap operation on these pointer types shall exit via an exception. \tcode{XX::pointer} and \tcode{XX::const_pointer} shall also meet the requirements for @@ -9518,10 +9108,10 @@ index 6effcd33..db29b7c9 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index add15a22..2d81c518 100644 +index fb901823..2dea2cc5 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1157,7 +1157,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type +@@ -1183,7 +1183,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type disambiguate constructor and function overloading. Specifically, several types (see \tcode{tuple}~\ref{tuple}) have constructors with \tcode{allocator_arg_t} as the first argument, immediately followed by an argument of a type that meets the @@ -9530,7 +9120,7 @@ index add15a22..2d81c518 100644 \rSec2[allocator.uses]{\tcode{uses_allocator}} -@@ -1172,7 +1172,7 @@ template struct uses_allocator; +@@ -1198,7 +1198,7 @@ template struct uses_allocator; \pnum \remarks Automatically detects whether \tcode{T} has a nested \tcode{allocator_type} that @@ -9539,7 +9129,7 @@ index add15a22..2d81c518 100644 requirements\iref{meta.rqmts}. The implementation shall provide a definition that is derived from \tcode{true_type} if the \grammarterm{qualified-id} \tcode{T::allocator_type} is valid and denotes a type\iref{temp.deduct} and -@@ -2097,8 +2097,8 @@ deleter before such replacement is considered completed. +@@ -2148,8 +2148,8 @@ deleter before such replacement is considered completed. Each object of a type \tcode{U} instantiated from the \tcode{unique_ptr} template specified in \ref{unique.ptr} has the strict ownership semantics, specified above, of a unique pointer. In partial satisfaction of these semantics, each such \tcode{U} @@ -9550,7 +9140,7 @@ index add15a22..2d81c518 100644 The template parameter \tcode{T} of \tcode{unique_ptr} may be an incomplete type. \pnum -@@ -2285,7 +2285,7 @@ pointer as appropriate for that deleter. +@@ -2336,7 +2336,7 @@ pointer as appropriate for that deleter. \pnum If the deleter's type \tcode{D} is not a reference type, \tcode{D} shall meet @@ -9559,7 +9149,7 @@ index add15a22..2d81c518 100644 \pnum If the \grammarterm{qualified-id} \tcode{remove_reference_t::pointer} is valid and denotes a -@@ -2293,7 +2293,7 @@ type\iref{temp.deduct}, then \tcode{unique_ptr::pointer} shall be a synonym for \tcode{remove_reference_t::pointer}. Otherwise \tcode{unique_ptr::pointer} shall be a synonym for \tcode{element_type*}. The type \tcode{unique_ptr::pointer} shall @@ -9568,7 +9158,7 @@ index add15a22..2d81c518 100644 \pnum \begin{example} -@@ -2319,7 +2319,7 @@ constexpr unique_ptr(nullptr_t) noexcept; +@@ -2370,7 +2370,7 @@ constexpr unique_ptr(nullptr_t) noexcept; \pnum \expects @@ -9577,7 +9167,7 @@ index add15a22..2d81c518 100644 and that construction does not throw an exception. \pnum -@@ -2346,7 +2346,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; +@@ -2397,7 +2397,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; \pnum \expects @@ -9586,7 +9176,7 @@ index add15a22..2d81c518 100644 and that construction does not throw an exception. \pnum -@@ -2375,10 +2375,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex +@@ -2426,10 +2426,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex \pnum \expects For the first constructor, if \tcode{D} is not a reference type, @@ -9599,7 +9189,7 @@ index add15a22..2d81c518 100644 such construction does not exit via an exception. \pnum -@@ -2403,8 +2403,8 @@ the second constructor is defined as deleted. +@@ -2454,8 +2454,8 @@ the second constructor is defined as deleted. \begin{example} \begin{codeblock} D d; @@ -9610,7 +9200,7 @@ index add15a22..2d81c518 100644 unique_ptr p3(new int, d); // \tcode{p3} holds a reference to \tcode{d} unique_ptr p4(new int, D()); // error: rvalue deleter object combined // with reference deleter type -@@ -2425,7 +2425,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; +@@ -2476,7 +2476,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, @@ -9619,7 +9209,7 @@ index add15a22..2d81c518 100644 requirements (\tref{cpp17.moveconstructible}). Construction of the deleter from an rvalue of type \tcode{D} does not -@@ -2534,10 +2534,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; +@@ -2585,10 +2585,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, \tcode{D} meets the @@ -9632,7 +9222,7 @@ index add15a22..2d81c518 100644 requirements and assignment of the deleter from an lvalue of type \tcode{D} does not throw an exception. -@@ -3435,8 +3435,8 @@ namespace std { +@@ -3490,8 +3490,8 @@ namespace std { \end{codeblock} \pnum @@ -9643,7 +9233,7 @@ index add15a22..2d81c518 100644 containers. Specializations of \tcode{shared_ptr} shall be contextually convertible to \tcode{bool}, allowing their use in boolean expressions and declarations in conditions. -@@ -3581,7 +3581,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. +@@ -3636,7 +3636,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. The expression \tcode{d(p)} has well-defined behavior and does not throw exceptions. \tcode{A} meets @@ -9652,7 +9242,7 @@ index add15a22..2d81c518 100644 \pnum \effects -@@ -4098,7 +4098,7 @@ template +@@ -4156,7 +4156,7 @@ template \pnum \expects \tcode{A} meets @@ -9661,7 +9251,7 @@ index add15a22..2d81c518 100644 \pnum \effects -@@ -4754,8 +4754,8 @@ namespace std { +@@ -4812,8 +4812,8 @@ namespace std { \end{codeblock} \pnum @@ -9672,7 +9262,7 @@ index add15a22..2d81c518 100644 containers. The template parameter \tcode{T} of \tcode{weak_ptr} may be an incomplete type. -@@ -5334,7 +5334,7 @@ namespace std { +@@ -5392,7 +5392,7 @@ namespace std { \end{codeblock} \pnum @@ -9681,7 +9271,7 @@ index add15a22..2d81c518 100644 If \tcode{Smart} is a specialization of \tcode{shared_ptr} and \tcode{sizeof...(Args) == 0}, the program is ill-formed. -@@ -5574,7 +5574,7 @@ namespace std { +@@ -5632,7 +5632,7 @@ namespace std { \end{codeblock} \pnum @@ -9691,10 +9281,10 @@ index add15a22..2d81c518 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index cd75eee5..bbe21840 100644 +index eda69180..b61dc003 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -94,12 +94,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal +@@ -136,12 +136,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal A \defnoldconcept{UnaryTypeTrait} describes a property of a type. It shall be a class template that takes one template type argument and, optionally, additional arguments that help define the @@ -9710,7 +9300,7 @@ index cd75eee5..bbe21840 100644 the arguments to the template \tcode{integral_constant} determined by the requirements for the particular property being described. The member names of the base characteristic shall not be hidden and shall be -@@ -110,12 +110,12 @@ A \defnoldconcept{BinaryTypeTrait} describes a +@@ -152,12 +152,12 @@ A \defnoldconcept{BinaryTypeTrait} describes a relationship between two types. It shall be a class template that takes two template type arguments and, optionally, additional arguments that help define the relationship being described. It shall @@ -9725,118 +9315,121 @@ index cd75eee5..bbe21840 100644 the arguments to the template \tcode{integral_constant} determined by the requirements for the particular relationship being described. The member names of the base characteristic shall not be hidden and shall be -@@ -285,17 +285,17 @@ namespace std { +@@ -328,17 +328,17 @@ namespace std { template struct add_cv; template -- using @\libglobal{remove_const_t}@ = typename remove_const::type; -+ using @\libglobal{remove_const_t}@ = typename @\libglobalref{remove_const}@::type; +- using @\libglobal{remove_const_t}@ = remove_const::type; ++ using @\libglobal{remove_const_t}@ = @\libglobalref{remove_const}@::type; template -- using @\libglobal{remove_volatile_t}@ = typename remove_volatile::type; -+ using @\libglobal{remove_volatile_t}@ = typename @\libglobalref{remove_volatile}@::type; +- using @\libglobal{remove_volatile_t}@ = remove_volatile::type; ++ using @\libglobal{remove_volatile_t}@ = @\libglobalref{remove_volatile}@::type; template -- using @\libglobal{remove_cv_t}@ = typename remove_cv::type; -+ using @\libglobal{remove_cv_t}@ = typename @\libglobalref{remove_cv}@::type; +- using @\libglobal{remove_cv_t}@ = remove_cv::type; ++ using @\libglobal{remove_cv_t}@ = @\libglobalref{remove_cv}@::type; template -- using @\libglobal{add_const_t}@ = typename add_const::type; -+ using @\libglobal{add_const_t}@ = typename @\libglobalref{add_const}@::type; +- using @\libglobal{add_const_t}@ = add_const::type; ++ using @\libglobal{add_const_t}@ = @\libglobalref{add_const}@::type; template -- using @\libglobal{add_volatile_t}@ = typename add_volatile::type; -+ using @\libglobal{add_volatile_t}@ = typename @\libglobalref{add_volatile}@::type; +- using @\libglobal{add_volatile_t}@ = add_volatile::type; ++ using @\libglobal{add_volatile_t}@ = @\libglobalref{add_volatile}@::type; template -- using @\libglobal{add_cv_t}@ = typename add_cv::type; -+ using @\libglobal{add_cv_t}@ = typename @\libglobalref{add_cv}@::type; +- using @\libglobal{add_cv_t}@ = add_cv::type; ++ using @\libglobal{add_cv_t}@ = @\libglobalref{add_cv}@::type; // \ref{meta.trans.ref}, reference modifications template struct remove_reference; -@@ -303,38 +303,38 @@ namespace std { +@@ -346,38 +346,38 @@ namespace std { template struct add_rvalue_reference; template -- using @\libglobal{remove_reference_t}@ = typename remove_reference::type; -+ using @\libglobal{remove_reference_t}@ = typename @\libglobalref{remove_reference}@::type; +- using @\libglobal{remove_reference_t}@ = remove_reference::type; ++ using @\libglobal{remove_reference_t}@ = @\libglobalref{remove_reference}@::type; template -- using @\libglobal{add_lvalue_reference_t}@ = typename add_lvalue_reference::type; -+ using @\libglobal{add_lvalue_reference_t}@ = typename @\libglobalref{add_lvalue_reference}@::type; +- using @\libglobal{add_lvalue_reference_t}@ = add_lvalue_reference::type; ++ using @\libglobal{add_lvalue_reference_t}@ = @\libglobalref{add_lvalue_reference}@::type; template -- using @\libglobal{add_rvalue_reference_t}@ = typename add_rvalue_reference::type; -+ using @\libglobal{add_rvalue_reference_t}@ = typename @\libglobalref{add_rvalue_reference}@::type; +- using @\libglobal{add_rvalue_reference_t}@ = add_rvalue_reference::type; ++ using @\libglobal{add_rvalue_reference_t}@ = @\libglobalref{add_rvalue_reference}@::type; // \ref{meta.trans.sign}, sign modifications template struct make_signed; template struct make_unsigned; template -- using @\libglobal{make_signed_t}@ = typename make_signed::type; -+ using @\libglobal{make_signed_t}@ = typename @\libglobalref{make_signed}@::type; +- using @\libglobal{make_signed_t}@ = make_signed::type; ++ using @\libglobal{make_signed_t}@ = @\libglobalref{make_signed}@::type; template -- using @\libglobal{make_unsigned_t}@ = typename make_unsigned::type; -+ using @\libglobal{make_unsigned_t}@ = typename @\libglobalref{make_unsigned}@::type; +- using @\libglobal{make_unsigned_t}@ = make_unsigned::type; ++ using @\libglobal{make_unsigned_t}@ = @\libglobalref{make_unsigned}@::type; // \ref{meta.trans.arr}, array modifications template struct remove_extent; template struct remove_all_extents; template -- using @\libglobal{remove_extent_t}@ = typename remove_extent::type; -+ using @\libglobal{remove_extent_t}@ = typename @\libglobalref{remove_extent}@::type; +- using @\libglobal{remove_extent_t}@ = remove_extent::type; ++ using @\libglobal{remove_extent_t}@ = @\libglobalref{remove_extent}@::type; template -- using @\libglobal{remove_all_extents_t}@ = typename remove_all_extents::type; -+ using @\libglobal{remove_all_extents_t}@ = typename @\libglobalref{remove_all_extents}@::type; +- using @\libglobal{remove_all_extents_t}@ = remove_all_extents::type; ++ using @\libglobal{remove_all_extents_t}@ = @\libglobalref{remove_all_extents}@::type; // \ref{meta.trans.ptr}, pointer modifications template struct remove_pointer; template struct add_pointer; template -- using @\libglobal{remove_pointer_t}@ = typename remove_pointer::type; -+ using @\libglobal{remove_pointer_t}@ = typename @\libglobalref{remove_pointer}@::type; +- using @\libglobal{remove_pointer_t}@ = remove_pointer::type; ++ using @\libglobal{remove_pointer_t}@ = @\libglobalref{remove_pointer}@::type; template -- using @\libglobal{add_pointer_t}@ = typename add_pointer::type; -+ using @\libglobal{add_pointer_t}@ = typename @\libglobalref{add_pointer}@::type; +- using @\libglobal{add_pointer_t}@ = add_pointer::type; ++ using @\libglobal{add_pointer_t}@ = @\libglobalref{add_pointer}@::type; // \ref{meta.trans.other}, other transformations template struct type_identity; -@@ -352,27 +352,27 @@ namespace std { +@@ -396,29 +396,29 @@ namespace std { template struct unwrap_ref_decay; template -- using @\libglobal{type_identity_t}@ = typename type_identity::type; -+ using @\libglobal{type_identity_t}@ = typename @\libglobalref{type_identity}@::type; +- using @\libglobal{type_identity_t}@ = type_identity::type; ++ using @\libglobal{type_identity_t}@ = @\libglobalref{type_identity}@::type; template -- using @\libglobal{remove_cvref_t}@ = typename remove_cvref::type; -+ using @\libglobal{remove_cvref_t}@ = typename @\libglobalref{remove_cvref}@::type; +- using @\libglobal{remove_cvref_t}@ = remove_cvref::type; ++ using @\libglobal{remove_cvref_t}@ = @\libglobalref{remove_cvref}@::type; template -- using @\libglobal{decay_t}@ = typename decay::type; -+ using @\libglobal{decay_t}@ = typename @\libglobalref{decay}@::type; +- using @\libglobal{decay_t}@ = decay::type; ++ using @\libglobal{decay_t}@ = @\libglobalref{decay}@::type; template -- using @\libglobal{enable_if_t}@ = typename enable_if::type; -+ using @\libglobal{enable_if_t}@ = typename @\libglobalref{enable_if}@::type; +- using @\libglobal{enable_if_t}@ = enable_if::type; ++ using @\libglobal{enable_if_t}@ = @\libglobalref{enable_if}@::type; template -- using @\libglobal{conditional_t}@ = typename conditional::type; -+ using @\libglobal{conditional_t}@ = typename @\libglobalref{conditional}@::type; +- using @\libglobal{conditional_t}@ = conditional::type; ++ using @\libglobal{conditional_t}@ = @\libglobalref{conditional}@::type; template -- using @\libglobal{common_type_t}@ = typename common_type::type; -+ using @\libglobal{common_type_t}@ = typename @\libglobalref{common_type}@::type; +- using @\libglobal{common_type_t}@ = common_type::type; ++ using @\libglobal{common_type_t}@ = @\libglobalref{common_type}@::type; template -- using @\libglobal{common_reference_t}@ = typename common_reference::type; -+ using @\libglobal{common_reference_t}@ = typename @\libglobalref{common_reference}@::type; +- using @\libglobal{common_reference_t}@ = common_reference::type; ++ using @\libglobal{common_reference_t}@ = @\libglobalref{common_reference}@::type; template -- using @\libglobal{underlying_type_t}@ = typename underlying_type::type; -+ using @\libglobal{underlying_type_t}@ = typename @\libglobalref{underlying_type}@::type; +- using @\libglobal{underlying_type_t}@ = underlying_type::type; ++ using @\libglobal{underlying_type_t}@ = @\libglobalref{underlying_type}@::type; template -- using @\libglobal{invoke_result_t}@ = typename invoke_result::type; -+ using @\libglobal{invoke_result_t}@ = typename @\libglobalref{invoke_result}@::type; +- using @\libglobal{invoke_result_t}@ = invoke_result::type; ++ using @\libglobal{invoke_result_t}@ = @\libglobalref{invoke_result}@::type; + template +- using @\libglobal{apply_result_t}@ = apply_result::type; ++ using @\libglobal{apply_result_t}@ = @\libglobalref{apply_result}@::type; template -- using unwrap_reference_t = typename unwrap_reference::type; -+ using @\libglobal{unwrap_reference_t}@ = typename @\libglobalref{unwrap_reference}@::type; +- using @\libglobal{unwrap_reference_t}@ = unwrap_reference::type; ++ using @\libglobal{unwrap_reference_t}@ = @\libglobalref{unwrap_reference}@::type; template -- using unwrap_ref_decay_t = typename unwrap_ref_decay::type; -+ using @\libglobal{unwrap_ref_decay_t}@ = typename @\libglobalref{unwrap_ref_decay}@::type; +- using @\libglobal{unwrap_ref_decay_t}@ = unwrap_ref_decay::type; ++ using @\libglobal{unwrap_ref_decay_t}@ = @\libglobalref{unwrap_ref_decay}@::type; template using @\libglobal{void_t}@ = void; -@@ -383,206 +383,206 @@ namespace std { +@@ -429,185 +429,185 @@ namespace std { // \ref{meta.unary.cat}, primary type categories template @@ -9881,6 +9474,9 @@ index cd75eee5..bbe21840 100644 template - constexpr bool @\libglobal{is_function_v}@ = is_function::value; + constexpr bool @\libglobal{is_function_v}@ = @\libglobalref{is_function}@::value; + template +- constexpr bool @\libglobal{is_reflection_v}@ = is_reflection::value; ++ constexpr bool @\libglobal{is_reflection_v}@ = @\libglobalref{is_reflection}@::value; // \ref{meta.unary.comp}, composite type categories template @@ -9916,9 +9512,6 @@ index cd75eee5..bbe21840 100644 - constexpr bool @\libglobal{is_trivially_copyable_v}@ = is_trivially_copyable::value; + constexpr bool @\libglobal{is_trivially_copyable_v}@ = @\libglobalref{is_trivially_copyable}@::value; template -- constexpr bool @\libglobal{is_trivially_relocatable_v}@ = is_trivially_relocatable::value; -+ constexpr bool @\libglobal{is_trivially_relocatable_v}@ = @\libglobalref{is_trivially_relocatable}@::value; - template - constexpr bool @\libglobal{is_standard_layout_v}@ = is_standard_layout::value; + constexpr bool @\libglobal{is_standard_layout_v}@ = @\libglobalref{is_standard_layout}@::value; template @@ -9936,6 +9529,9 @@ index cd75eee5..bbe21840 100644 - constexpr bool @\libglobal{is_aggregate_v}@ = is_aggregate::value; + constexpr bool @\libglobal{is_aggregate_v}@ = @\libglobalref{is_aggregate}@::value; template +- constexpr bool @\libglobal{is_structural_v}@ = is_structural::value; ++ constexpr bool @\libglobal{is_structural_v}@ = @\libglobalref{is_structural}@::value; + template constexpr bool @\libglobal{is_signed_v}@ = is_signed::value; template - constexpr bool @\libglobal{is_unsigned_v}@ = is_unsigned::value; @@ -9980,61 +9576,35 @@ index cd75eee5..bbe21840 100644 - constexpr bool @\libglobal{is_destructible_v}@ = is_destructible::value; + constexpr bool @\libglobal{is_destructible_v}@ = @\libglobalref{is_destructible}@::value; template -- constexpr bool is_trivially_constructible_v -- = is_trivially_constructible::value; -+ constexpr @\libglobal{bool is_trivially_constructible_v}@ -+ = @\libglobalref{is_trivially_constructible}@::value; + constexpr bool @\libglobal{is_trivially_constructible_v}@ = is_trivially_constructible::value; template -- constexpr bool is_trivially_default_constructible_v + constexpr bool @\libglobal{is_trivially_default_constructible_v}@ - = is_trivially_default_constructible::value; -+ constexpr bool @\libglobal{is_trivially_default_constructible_v}@ + = @\libglobalref{is_trivially_default_constructible}@::value; template -- constexpr bool is_trivially_copy_constructible_v -- = is_trivially_copy_constructible::value; -+ constexpr bool @\libglobal{is_trivially_copy_constructible_v}@ -+ = @\libglobalref{is_trivially_copy_constructible}@::value; + constexpr bool @\libglobal{is_trivially_copy_constructible_v}@ = is_trivially_copy_constructible::value; template -- constexpr bool is_trivially_move_constructible_v -- = is_trivially_move_constructible::value; -+ constexpr bool @\libglobal{is_trivially_move_constructible_v}@ -+ = @\libglobalref{is_trivially_move_constructible}@::value; + constexpr bool @\libglobal{is_trivially_move_constructible_v}@ = is_trivially_move_constructible::value; template - constexpr bool @\libglobal{is_trivially_assignable_v}@ = is_trivially_assignable::value; + constexpr bool @\libglobal{is_trivially_assignable_v}@ = @\libglobalref{is_trivially_assignable}@::value; template -- constexpr bool is_trivially_copy_assignable_v -- = is_trivially_copy_assignable::value; -+ constexpr bool @\libglobal{is_trivially_copy_assignable_v}@ -+ = @\libglobalref{is_trivially_copy_assignable}@::value; + constexpr bool @\libglobal{is_trivially_copy_assignable_v}@ = is_trivially_copy_assignable::value; template -- constexpr bool is_trivially_move_assignable_v -- = is_trivially_move_assignable::value; -+ constexpr bool @\libglobal{is_trivially_move_assignable_v}@ -+ = @\libglobalref{is_trivially_move_assignable}@::value; + constexpr bool @\libglobal{is_trivially_move_assignable_v}@ = is_trivially_move_assignable::value; template - constexpr bool @\libglobal{is_trivially_destructible_v}@ = is_trivially_destructible::value; + constexpr bool @\libglobal{is_trivially_destructible_v}@ = @\libglobalref{is_trivially_destructible}@::value; template -- constexpr bool is_nothrow_constructible_v -- = is_nothrow_constructible::value; -+ constexpr bool @\libglobal{is_nothrow_constructible_v}@ -+ = @\libglobalref{is_nothrow_constructible}@::value; + constexpr bool @\libglobal{is_nothrow_constructible_v}@ = is_nothrow_constructible::value; template -- constexpr bool is_nothrow_default_constructible_v + constexpr bool @\libglobal{is_nothrow_default_constructible_v}@ - = is_nothrow_default_constructible::value; -+ constexpr bool @\libglobal{is_nothrow_default_constructible_v}@ + = @\libglobalref{is_nothrow_default_constructible}@::value; template -- constexpr bool is_nothrow_copy_constructible_v -- = is_nothrow_copy_constructible::value; -+ constexpr bool @\libglobal{is_nothrow_copy_constructible_v}@ -+ = @\libglobalref{is_nothrow_copy_constructible}@::value; + constexpr bool is_nothrow_copy_constructible_v = is_nothrow_copy_constructible::value; template -- constexpr bool is_nothrow_move_constructible_v -- = is_nothrow_move_constructible::value; -+ constexpr bool @\libglobal{is_nothrow_move_constructible_v}@ -+ = @\libglobalref{is_nothrow_move_constructible}@::value; + constexpr bool @\libglobal{is_nothrow_move_constructible_v}@ = is_nothrow_move_constructible::value; template - constexpr bool @\libglobal{is_nothrow_assignable_v}@ = is_nothrow_assignable::value; + constexpr bool @\libglobal{is_nothrow_assignable_v}@ = @\libglobalref{is_nothrow_assignable}@::value; @@ -10054,21 +9624,14 @@ index cd75eee5..bbe21840 100644 - constexpr bool @\libglobal{is_nothrow_destructible_v}@ = is_nothrow_destructible::value; + constexpr bool @\libglobal{is_nothrow_destructible_v}@ = @\libglobalref{is_nothrow_destructible}@::value; template -- constexpr bool @\libglobal{is_nothrow_relocatable_v}@ = is_nothrow_relocatable::value; -+ constexpr bool @\libglobal{is_nothrow_relocatable_v}@ = @\libglobalref{is_nothrow_relocatable}@::value; - template - constexpr bool @\libglobal{is_implicit_lifetime_v}@ = is_implicit_lifetime::value; + constexpr bool @\libglobal{is_implicit_lifetime_v}@ = @\libglobalref{is_implicit_lifetime}@::value; template -- constexpr bool @\libglobal{is_replaceable_v}@ = is_replaceable::value; -+ constexpr bool @\libglobal{is_replaceable_v}@ = @\libglobalref{is_replaceable}@::value; - template - constexpr bool @\libglobal{has_virtual_destructor_v}@ = has_virtual_destructor::value; + constexpr bool @\libglobal{has_virtual_destructor_v}@ = @\libglobalref{has_virtual_destructor}@::value; template -- constexpr bool has_unique_object_representations_v + constexpr bool @\libglobal{has_unique_object_representations_v}@ - = has_unique_object_representations::value; -+ constexpr bool @\libglobal{has_unique_object_representations_v}@ + = @\libglobalref{has_unique_object_representations}@::value; template constexpr bool @\libglobal{reference_constructs_from_temporary_v}@ @@ -10110,9 +9673,8 @@ index cd75eee5..bbe21840 100644 - constexpr bool @\libglobal{is_layout_compatible_v}@ = is_layout_compatible::value; + constexpr bool @\libglobal{is_layout_compatible_v}@ = @\libglobalref{is_layout_compatible}@::value; template -- constexpr bool is_pointer_interconvertible_base_of_v + constexpr bool @\libglobal{is_pointer_interconvertible_base_of_v}@ - = is_pointer_interconvertible_base_of::value; -+ constexpr bool @\libglobal{is_pointer_interconvertible_base_of_v}@ + = @\libglobalref{is_pointer_interconvertible_base_of}@::value; template - constexpr bool @\libglobal{is_invocable_v}@ = is_invocable::value; @@ -10124,9 +9686,9 @@ index cd75eee5..bbe21840 100644 - constexpr bool @\libglobal{is_nothrow_invocable_v}@ = is_nothrow_invocable::value; + constexpr bool @\libglobal{is_nothrow_invocable_v}@ = @\libglobalref{is_nothrow_invocable}@::value; template - constexpr bool is_nothrow_invocable_r_v -- = is_nothrow_invocable_r::value; -+ = @\libglobalref{is_nothrow_invocable_r}@::value; + constexpr bool @\libglobal{is_nothrow_invocable_r_v}@ = is_nothrow_invocable_r::value; + template +@@ -617,11 +617,11 @@ namespace std { // \ref{meta.logical}, logical operator traits template @@ -10141,7 +9703,7 @@ index cd75eee5..bbe21840 100644 // \ref{meta.member}, member relationships template -@@ -634,7 +634,7 @@ properties of a type at compile time. +@@ -674,7 +674,7 @@ properties of a type at compile time. \pnum Each of these templates shall be a @@ -10150,7 +9712,7 @@ index cd75eee5..bbe21840 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is \tcode{true}, otherwise \tcode{false_type}. -@@ -664,17 +664,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. +@@ -704,17 +704,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. \topline \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead @@ -10171,7 +9733,7 @@ index cd75eee5..bbe21840 100644 \tcode{T} is an integral type\iref{basic.fundamental} & \\ \rowsep \indexlibraryglobal{is_floating_point}% \tcode{template}\br -@@ -899,9 +896,8 @@ A union is a class type that +@@ -929,9 +926,8 @@ A union is a class type that & If \tcode{T} is a class type, \tcode{T} shall be a complete type. \\ \rowsep @@ -10182,7 +9744,7 @@ index cd75eee5..bbe21840 100644 \tcode{T} is an aggregate type\iref{dcl.init.aggr} & \tcode{T} shall be an array type, a complete type, or \cv~\keyword{void}. \\ \rowsep -@@ -912,16 +908,14 @@ A union is a class type that +@@ -948,16 +944,14 @@ A union is a class type that \tcode{T(-1) < T(0)}; otherwise, \tcode{false} & \\ \rowsep @@ -10201,7 +9763,7 @@ index cd75eee5..bbe21840 100644 \tcode{T} is an array type of known bound\iref{dcl.array} & \\ \rowsep -@@ -1425,7 +1419,7 @@ may be used to query properties of types at compile time. +@@ -1457,7 +1451,7 @@ may be used to query properties of types at compile time. \end{libreqtab2a} \pnum @@ -10210,7 +9772,7 @@ index cd75eee5..bbe21840 100644 base characteristic of \tcode{integral_constant}. \pnum -@@ -1461,7 +1455,7 @@ may be used to query relationships between types at compile time. +@@ -1493,7 +1487,7 @@ may be used to query relationships between types at compile time. \pnum Each of these templates shall be a @@ -10219,7 +9781,7 @@ index cd75eee5..bbe21840 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is true, otherwise \tcode{false_type}. -@@ -1475,7 +1469,7 @@ with a base characteristic of +@@ -1514,7 +1508,7 @@ Let \tcode{\placeholdernc{ELEMS-OF}(T)} be the parameter pack \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead \tcode{template}\br @@ -10228,7 +9790,7 @@ index cd75eee5..bbe21840 100644 \tcode{T} and \tcode{U} name the same type with the same cv-qualifications & \\ \rowsep \indexlibraryglobal{is_base_of}% -@@ -1655,7 +1649,7 @@ type to another following some predefined rule. +@@ -1718,7 +1712,7 @@ type to another following some predefined rule. \pnum Each of the templates in \ref{meta.trans} shall be a @@ -10237,7 +9799,7 @@ index cd75eee5..bbe21840 100644 \rSec3[meta.trans.cv]{Const-volatile modifications} -@@ -1942,16 +1936,16 @@ perform other modifications of a type. +@@ -2005,16 +1999,16 @@ perform other modifications of a type. \tcode{template\br struct \libglobal{remove_cvref};} & The member typedef \tcode{type} denotes @@ -10259,7 +9821,7 @@ index cd75eee5..bbe21840 100644 \begin{tailnote} This behavior is similar to the lvalue-to-rvalue\iref{conv.lval}, array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} -@@ -2031,7 +2025,7 @@ argument passing. +@@ -2120,7 +2114,7 @@ argument passing. \tcode{template} \tcode{struct \libglobal{unwrap_reference};} & If \tcode{T} is @@ -10268,7 +9830,7 @@ index cd75eee5..bbe21840 100644 the member typedef \tcode{type} of \tcode{unwrap_reference} denotes \tcode{X\&}, otherwise \tcode{type} denotes \tcode{T}. \\ \rowsep -@@ -2039,7 +2033,7 @@ argument passing. +@@ -2128,7 +2122,7 @@ argument passing. \tcode{template} \tcode{\libglobal{unwrap_ref_decay};} & The member typedef \tcode{type} of \tcode{unwrap_ref_decay} @@ -10277,7 +9839,7 @@ index cd75eee5..bbe21840 100644 \end{libreqtab2a} \pnum -@@ -2057,7 +2051,7 @@ when the header \tcode{}\iref{functional.syn} is included. +@@ -2146,7 +2140,7 @@ when the header \tcode{}\iref{functional.syn} is included. Let: \begin{itemize} \item \tcode{\placeholdernc{CREF}(A)} be @@ -10286,7 +9848,7 @@ index cd75eee5..bbe21840 100644 \item \tcode{\placeholdernc{XREF}(A)} denote a unary alias template \tcode{T} such that \tcode{T} denotes the same type as \tcode{U} with the addition of \tcode{A}'s cv and reference qualifiers, for a non-reference cv-unqualified -@@ -2082,15 +2076,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: +@@ -2171,15 +2165,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: \placeholdernc{COPYCV}(\brk{}Y, X) \&)} if that type exists and is a reference type. \item Otherwise, let \tcode{C} be @@ -10305,7 +9867,7 @@ index cd75eee5..bbe21840 100644 \tcode{true}, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is \tcode{D}. \item Otherwise, if \tcode{A} is an lvalue reference and \tcode{B} is an rvalue reference, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is -@@ -2389,7 +2383,7 @@ template struct negation : @\seebelow@ { }; +@@ -2478,7 +2472,7 @@ template struct negation : @\seebelow@ { }; The class template \tcode{negation} forms the logical negation of its template type argument. The type \tcode{negation} @@ -10315,7 +9877,7 @@ index cd75eee5..bbe21840 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index c37ff4f3..57b2e5a8 100644 +index a0370273..5304cf1b 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul @@ -10333,7 +9895,7 @@ index c37ff4f3..57b2e5a8 100644 requirements\iref{utility.arg.requirements}. \begin{footnote} In other words, value types. -@@ -2024,8 +2024,8 @@ according to \ref{strings} and \ref{input.output}. +@@ -2023,8 +2023,8 @@ according to \ref{strings} and \ref{input.output}. \pnum \tcode{E} shall meet the @@ -10344,7 +9906,7 @@ index c37ff4f3..57b2e5a8 100644 These operations shall each be of complexity no worse than \bigoh{\text{size of state}}. -@@ -2453,8 +2453,8 @@ according to \ref{strings} and \ref{input.output}. +@@ -2452,8 +2452,8 @@ according to \ref{strings} and \ref{input.output}. \pnum \tcode{D} shall meet the @@ -10355,7 +9917,7 @@ index c37ff4f3..57b2e5a8 100644 \pnum The sequence of numbers -@@ -2485,10 +2485,10 @@ for convenience of exposition only. +@@ -2484,10 +2484,10 @@ for convenience of exposition only. \pnum \tcode{P} shall meet the @@ -10369,7 +9931,7 @@ index c37ff4f3..57b2e5a8 100644 \pnum For each of the constructors of \tcode{D} -@@ -4232,7 +4232,7 @@ template +@@ -4231,7 +4231,7 @@ template \pnum \expects \tcode{InputIterator} meets the @@ -10378,7 +9940,7 @@ index c37ff4f3..57b2e5a8 100644 \pnum \effects -@@ -4259,7 +4259,7 @@ template +@@ -4258,7 +4258,7 @@ template \pnum \expects \tcode{RandomAccessIterator} meets the @@ -10387,7 +9949,7 @@ index c37ff4f3..57b2e5a8 100644 and the requirements of a mutable iterator. \pnum -@@ -4372,7 +4372,7 @@ template +@@ -4371,7 +4371,7 @@ template \pnum \expects \tcode{OutputIterator} meets the @@ -10396,7 +9958,7 @@ index c37ff4f3..57b2e5a8 100644 \pnum \effects -@@ -6367,7 +6367,7 @@ double>} is \tcode{true}. +@@ -6366,7 +6366,7 @@ double>} is \tcode{true}. \pnum \expects \tcode{InputIterator} meets the @@ -10405,7 +9967,7 @@ index c37ff4f3..57b2e5a8 100644 If \tcode{firstW == lastW}, let $n = 1$ and $w_0 = 1$. Otherwise, -@@ -6565,7 +6565,7 @@ are \tcode{true}. +@@ -6564,7 +6564,7 @@ are \tcode{true}. \expects \tcode{InputIteratorB} and \tcode{InputIteratorW} each meet the @@ -10414,7 +9976,7 @@ index c37ff4f3..57b2e5a8 100644 If \tcode{firstB == lastB} or \tcode{++firstB == lastB}, let $n = 1$, -@@ -6800,7 +6800,7 @@ are \tcode{true}. +@@ -6799,7 +6799,7 @@ are \tcode{true}. \expects \tcode{InputIteratorB} and \tcode{InputIteratorW} each meet the @@ -10423,23 +9985,8 @@ index c37ff4f3..57b2e5a8 100644 If \tcode{firstB == lastB} or \tcode{++firstB == lastB}, let $n = 1$, -@@ -9146,12 +9146,12 @@ object refers. - \pnum - In the \tcode{begin} and \tcode{end} function templates that follow, \unspec{1} - is a type that meets the requirements of a mutable --\oldconcept{RandomAccessIterator}\iref{random.access.iterators} -+\oldconceptref{RandomAccessIterator}\iref{random.access.iterators} - and models \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, - whose \tcode{value_type} is the template - parameter \tcode{T} and whose \tcode{reference} type is \tcode{T\&}. \unspec{2} is a - type that meets the requirements of a constant --\oldconcept{RandomAccessIterator} -+\oldconceptref{RandomAccessIterator} - and models \libconcept{contiguous_iterator}, - whose \tcode{value_type} is the template - parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. diff --git a/source/strings.tex b/source/strings.tex -index 6f584dff..18f79d6b 100644 +index e9c20ec8..9f0d3f9c 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -238,10 +238,10 @@ using state_type = @\seebelow@; @@ -10457,7 +10004,7 @@ index 6f584dff..18f79d6b 100644 \end{itemdescr} \rSec2[char.traits.specializations]{\tcode{char_traits} specializations} -@@ -926,7 +926,7 @@ using const_iterator = @\impdefx{type of \tcode{basic_string_view::const_iterato +@@ -928,7 +928,7 @@ using const_iterator = @\impdefx{type of \tcode{basic_string_view::const_iterato \pnum A type that meets the requirements of a constant @@ -10467,27 +10014,10 @@ index 6f584dff..18f79d6b 100644 meets the constexpr iterator requirements\iref{iterator.requirements.general}, whose \tcode{value_type} is the template parameter \tcode{charT}. diff --git a/source/support.tex b/source/support.tex -index b67bffbb..c11f5627 100644 +index 90a3972a..5d4fbbf8 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -3648,11 +3648,11 @@ namespace std { - - \pnum - The type \tcode{source_location} meets the --\oldconcept{DefaultConstructible}, --\oldconcept{CopyConstructible}, --\oldconcept{Copy\-Assignable}, --\oldconcept{Swappable}, and --\oldconcept{Destructible} -+\oldconceptref{DefaultConstructible}, -+\oldconceptref{CopyConstructible}, -+\oldconceptref{CopyAssignable}, -+\oldconceptref{Swappable}, and -+\oldconceptref{Destructible} - requirements\iref{utility.arg.requirements,swappable.requirements}. - All of the following conditions are \tcode{true}: - \begin{itemize} -@@ -4112,7 +4112,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. +@@ -4102,7 +4102,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. \pnum \tcode{exception_ptr} meets the requirements of @@ -10496,7 +10026,7 @@ index b67bffbb..c11f5627 100644 \pnum Two non-null values of type \tcode{exception_ptr} are equivalent and compare equal if and -@@ -4312,7 +4312,7 @@ Let \tcode{U} be \tcode{decay_t}. +@@ -4326,7 +4326,7 @@ Let \tcode{U} be \tcode{decay_t}. \pnum \expects @@ -10506,7 +10036,7 @@ index b67bffbb..c11f5627 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index 8c1b16d3..b16503f4 100644 +index 6b8778ac..693a8b4c 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10558,8 +10088,8 @@ index 8c1b16d3..b16503f4 100644 -A type \tcode{L} meets the \defnoldconcept{TimedLockable} requirements if it meets the \oldconcept{Lockable} +A type \tcode{L} meets the \defnoldconcept{TimedLockable} requirements if it meets the \oldconceptref{Lockable} requirements and the following expressions are well-formed and have the specified semantics - (\tcode{m} denotes a value of type \tcode{L}, \tcode{rel_time} denotes a value of an - instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes a value + (\tcode{m} denotes a value of type \tcode{L}, \tcode{rel_time} denotes a value of a + specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes a value @@ -397,7 +397,7 @@ Nothing. \pnum @@ -10569,7 +10099,7 @@ index 8c1b16d3..b16503f4 100644 the following expressions are well-formed, have type \tcode{bool}, and have the specified semantics (\tcode{m} denotes a value of type \tcode{L}, -@@ -4127,7 +4127,7 @@ namespace std { +@@ -4498,7 +4498,7 @@ namespace std { \indexlibraryglobal{atomic}% \pnum The template argument for \tcode{T} shall meet the @@ -10578,7 +10108,7 @@ index 8c1b16d3..b16503f4 100644 The program is ill-formed if any of \begin{itemize} \item \tcode{is_trivially_copyable_v}, -@@ -6594,11 +6594,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, +@@ -7326,11 +7326,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, They meet the requirements set out in \ref{thread.mutex.requirements.mutex}. In this description, \tcode{m} denotes an object of a mutex type. \begin{note} @@ -10592,16 +10122,16 @@ index 8c1b16d3..b16503f4 100644 If initialization of an object of a mutex type fails, an exception of type \tcode{system_error} is thrown. The mutex types are neither copyable nor movable. -@@ -6867,7 +6867,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de - object of an - instantiation of \link{\tcode{time_point}}{time.point}. +@@ -7599,7 +7599,7 @@ specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} den + object of a + specialization of \tcode{time_point}\iref{time.point}. \begin{note} -The timed mutex types meet the \oldconcept{TimedLockable} +The timed mutex types meet the \oldconceptref{TimedLockable} requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -7079,7 +7079,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally +@@ -7811,7 +7811,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally meet the requirements set out below. In this description, \tcode{m} denotes an object of a shared mutex type. \begin{note} @@ -10610,25 +10140,25 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.shared}. \end{note} -@@ -7256,7 +7256,7 @@ meet the requirements set out below. In this description, - \tcode{abs_time} denotes an object of an instantiation of - \link{\tcode{time_point}}{time.point}. +@@ -7988,7 +7988,7 @@ meet the requirements set out below. In this description, + \tcode{abs_time} denotes an object of a specialization of + \tcode{time_point}\iref{time.point}. \begin{note} -The shared timed mutex types meet the \oldconcept{SharedTimedLockable} +The shared timed mutex types meet the \oldconceptref{SharedTimedLockable} requirements\iref{thread.req.lockable.shared.timed}. \end{note} -@@ -7466,7 +7466,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable +@@ -8198,7 +8198,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable object throughout the \tcode{lock_guard} object's \deflink{lifetime}{basic.life}. The behavior of a program is undefined if the lockable object referenced by - \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} + \exposid{pm} does not exist for the entire lifetime of the \tcode{lock_guard} -object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} +object. The supplied \tcode{Mutex} type shall meet the \oldconceptref{BasicLockable} requirements\iref{thread.req.lockable.basic}. \indexlibraryctor{lock_guard}% -@@ -7545,12 +7545,12 @@ object. +@@ -8277,12 +8277,12 @@ object. If \tcode{sizeof...(MutexTypes)} is one, let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. \tcode{Mutex} @@ -10643,9 +10173,9 @@ index 8c1b16d3..b16503f4 100644 and there is no member \tcode{mutex_type}. \end{itemize} -@@ -7665,17 +7665,17 @@ copyable but are movable. The behavior of a program is undefined if the containe - \tcode{pm} is not null and the lockable object pointed - to by \tcode{pm} does not exist for the entire remaining +@@ -8397,17 +8397,17 @@ copyable but are movable. The behavior of a program is undefined if the containe + \exposid{pm} is not null and the lockable object pointed + to by \exposid{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied -\tcode{Mutex} type shall meet the \oldconcept{BasicLockable} +\tcode{Mutex} type shall meet the \oldconceptref{BasicLockable} @@ -10667,7 +10197,7 @@ index 8c1b16d3..b16503f4 100644 \end{note} \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} -@@ -7725,7 +7725,7 @@ unique_lock(mutex_type& m, try_to_lock_t); +@@ -8457,7 +8457,7 @@ unique_lock(mutex_type& m, try_to_lock_t); \begin{itemdescr} \pnum \expects @@ -10676,7 +10206,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -7767,7 +7767,7 @@ template +@@ -8499,7 +8499,7 @@ template \pnum \expects The supplied \tcode{Mutex} type meets the @@ -10685,7 +10215,7 @@ index 8c1b16d3..b16503f4 100644 \pnum \effects -@@ -7789,7 +7789,7 @@ template +@@ -8521,7 +8521,7 @@ template \begin{itemdescr} \pnum \expects @@ -10694,7 +10224,7 @@ index 8c1b16d3..b16503f4 100644 \pnum \effects -@@ -7876,7 +7876,7 @@ bool try_lock(); +@@ -8608,7 +8608,7 @@ bool try_lock(); \begin{itemdescr} \pnum \expects @@ -10703,7 +10233,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -7915,7 +7915,7 @@ template +@@ -8647,7 +8647,7 @@ template \begin{itemdescr} \pnum \expects @@ -10712,7 +10242,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.timed}. \pnum -@@ -7954,7 +7954,7 @@ template +@@ -8686,7 +8686,7 @@ template \begin{itemdescr} \pnum \expects @@ -10721,9 +10251,9 @@ index 8c1b16d3..b16503f4 100644 \pnum \effects -@@ -8147,16 +8147,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type - is undefined if the contained pointer \tcode{pm} is not null and the lockable - object pointed to by \tcode{pm} does not exist for the entire remaining +@@ -8879,16 +8879,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type + is undefined if the contained pointer \exposid{pm} is not null and the lockable + object pointed to by \exposid{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied -\tcode{Mutex} type shall meet the \oldconcept{SharedLockable} +\tcode{Mutex} type shall meet the \oldconceptref{SharedLockable} @@ -10742,7 +10272,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -8241,7 +8241,7 @@ template +@@ -8973,7 +8973,7 @@ template \begin{itemdescr} \pnum \expects @@ -10751,7 +10281,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8265,7 +8265,7 @@ template +@@ -8997,7 +8997,7 @@ template \begin{itemdescr} \pnum \expects @@ -10760,7 +10290,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8390,7 +8390,7 @@ template +@@ -9122,7 +9122,7 @@ template \begin{itemdescr} \pnum \expects @@ -10769,7 +10299,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8430,7 +8430,7 @@ template +@@ -9162,7 +9162,7 @@ template \begin{itemdescr} \pnum \expects @@ -10778,7 +10308,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8569,7 +8569,7 @@ template int try_lock(L1&, L2&, L3&...); +@@ -9301,7 +9301,7 @@ template int try_lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10787,7 +10317,7 @@ index 8c1b16d3..b16503f4 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -8598,7 +8598,7 @@ template void lock(L1&, L2&, L3&...); +@@ -9330,7 +9330,7 @@ template void lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10796,7 +10326,7 @@ index 8c1b16d3..b16503f4 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9264,7 +9264,7 @@ This can happen if the re-locking of the mutex throws an exception. +@@ -10009,7 +10009,7 @@ This can happen if the re-locking of the mutex throws an exception. \pnum In \ref{thread.condition.condvarany}, template arguments for template parameters named \tcode{Lock} @@ -10805,7 +10335,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.basic}. \begin{note} All of the standard -@@ -10202,24 +10202,24 @@ execute atomically. +@@ -10946,24 +10946,24 @@ execute atomically. \pnum \tcode{CompletionFunction} shall meet the @@ -10822,7 +10352,7 @@ index 8c1b16d3..b16503f4 100644 -it meets the \oldconcept{DefaultConstructible} +it meets the \oldconceptref{DefaultConstructible} requirements (\tref{cpp17.defaultconstructible}) and - \tcode{completion()} has no effects. + \tcode{\exposid{completion}()} has no effects. \pnum \tcode{barrier::arrival_token} is an unspecified type, @@ -10836,7 +10366,7 @@ index 8c1b16d3..b16503f4 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -10720,7 +10720,7 @@ namespace std { +@@ -11458,7 +11458,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10845,16 +10375,7 @@ index 8c1b16d3..b16503f4 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -10745,7 +10745,7 @@ template - \pnum - \expects - \tcode{Alloc} meets --the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. -+the \oldconceptref{Allocator} requirements\iref{allocator.requirements.general}. - \end{itemdescr} - - \indexlibraryctor{promise}% -@@ -11066,7 +11066,7 @@ namespace std { +@@ -11790,7 +11790,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10863,7 +10384,7 @@ index 8c1b16d3..b16503f4 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -11372,7 +11372,7 @@ namespace std { +@@ -12096,7 +12096,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10872,7 +10393,7 @@ index 8c1b16d3..b16503f4 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -12280,7 +12280,7 @@ the expression \tcode{d(ptr)} is valid. +@@ -13034,7 +13034,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -10881,7 +10402,7 @@ index 8c1b16d3..b16503f4 100644 \pnum If \tcode{D} is trivially copyable, -@@ -12338,7 +12338,7 @@ namespace std { +@@ -13092,7 +13092,7 @@ namespace std { \pnum This class meets the requirements of @@ -10890,7 +10411,7 @@ index 8c1b16d3..b16503f4 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -12486,8 +12486,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -13240,8 +13240,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -10901,7 +10422,7 @@ index 8c1b16d3..b16503f4 100644 \pnum \effects -@@ -12679,7 +12679,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -13433,7 +13433,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -10911,10 +10432,10 @@ index 8c1b16d3..b16503f4 100644 \pnum \tcode{T} may be an incomplete type. diff --git a/source/time.tex b/source/time.tex -index 39598098..ca78ddce 100644 +index 6b4a0b79..5e264ea3 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -1039,13 +1039,13 @@ SI definition is a measure of the quality of implementation. +@@ -1033,13 +1033,13 @@ SI definition is a measure of the quality of implementation. A type \tcode{TC} meets the \defnoldconcept{TrivialClock} requirements if \begin{itemize} \item @@ -10932,7 +10453,7 @@ index 39598098..ca78ddce 100644 requirements and the requirements of numeric types\iref{numeric.requirements}, \begin{note} -@@ -1203,15 +1203,15 @@ template struct is_clock; +@@ -1197,15 +1197,15 @@ template struct is_clock; \end{itemdecl} \pnum @@ -10952,7 +10473,7 @@ index 39598098..ca78ddce 100644 unless it meets all of the following conditions: \begin{itemize} \item the \grammarterm{qualified-id}s -@@ -2632,7 +2632,7 @@ template +@@ -2633,7 +2633,7 @@ template \pnum The types defined in \ref{time.clock} meet the @@ -10961,7 +10482,7 @@ index 39598098..ca78ddce 100644 requirements\iref{time.clock.req} unless otherwise specified. -@@ -2850,7 +2850,7 @@ which is \tcode{10'957 * 86'400s + 22s}. \\ +@@ -2851,7 +2851,7 @@ which is \tcode{10'957 * 86'400s + 22s}. \\ \end{example} \pnum @@ -10970,7 +10491,7 @@ index 39598098..ca78ddce 100644 unless the implementation can guarantee that \tcode{utc_clock::now()} does not propagate an exception. \begin{note} -@@ -3069,7 +3069,7 @@ so 2000-01-01 00:00:00 UTC is equivalent to 2000-01-01 00:00:32 TAI +@@ -3070,7 +3070,7 @@ so 2000-01-01 00:00:00 UTC is equivalent to 2000-01-01 00:00:32 TAI (22s plus the initial 10s offset). \pnum @@ -10979,7 +10500,7 @@ index 39598098..ca78ddce 100644 unless the implementation can guarantee that \tcode{tai_clock::now()} does not propagate an exception. \begin{note} -@@ -3231,7 +3231,7 @@ GPS is behind TAI by 19s due to the 10s offset between 1958 and 1970 +@@ -3232,7 +3232,7 @@ GPS is behind TAI by 19s due to the 10s offset between 1958 and 1970 and the additional 9 leap seconds inserted between 1970 and 1980. \pnum @@ -10988,7 +10509,7 @@ index 39598098..ca78ddce 100644 unless the implementation can guarantee that \tcode{gps_clock::now()} does not propagate an exception. \begin{note} -@@ -3368,7 +3368,7 @@ namespace std::chrono { +@@ -3369,7 +3369,7 @@ namespace std::chrono { \pnum \tcode{file_clock} is an alias for a type @@ -10997,7 +10518,7 @@ index 39598098..ca78ddce 100644 using a signed arithmetic type for \tcode{file_clock::rep}. \tcode{file_clock} is used to create the \tcode{time_point} system used for \tcode{file_time_type}\iref{filesystems}. -@@ -3971,8 +3971,8 @@ It normally holds values in the range 1 to 31, +@@ -3976,8 +3976,8 @@ It normally holds values in the range 1 to 31, but may hold non-negative values outside this range. It can be constructed with any \tcode{unsigned} value, which will be subsequently truncated to fit into \tcode{day}'s unspecified internal storage. @@ -11008,7 +10529,7 @@ index 39598098..ca78ddce 100644 and participates in basic arithmetic with \tcode{days} objects, which represent a difference between two \tcode{day} objects. -@@ -4264,8 +4264,8 @@ It normally holds values in the range 1 to 12, +@@ -4269,8 +4269,8 @@ It normally holds values in the range 1 to 12, but may hold non-negative values outside this range. It can be constructed with any \tcode{unsigned} value, which will be subsequently truncated to fit into \tcode{month}'s unspecified internal storage. @@ -11019,7 +10540,7 @@ index 39598098..ca78ddce 100644 and participates in basic arithmetic with \tcode{months} objects, which represent a difference between two \tcode{month} objects. -@@ -4574,8 +4574,8 @@ namespace std::chrono { +@@ -4579,8 +4579,8 @@ namespace std::chrono { It can represent values in the range \crange{min()}{max()}. It can be constructed with any \tcode{int} value, which will be subsequently truncated to fit into \tcode{year}'s unspecified internal storage. @@ -11030,7 +10551,7 @@ index 39598098..ca78ddce 100644 and participates in basic arithmetic with \tcode{years} objects, which represent a difference between two \tcode{year} objects. -@@ -4929,10 +4929,10 @@ corresponding to Sunday through Saturday, but +@@ -4934,10 +4934,10 @@ corresponding to Sunday through Saturday, but it may hold non-negative values outside this range. It can be constructed with any \tcode{unsigned} value, which will be subsequently truncated to fit into \tcode{weekday}'s unspecified internal storage. @@ -11043,7 +10564,7 @@ index 39598098..ca78ddce 100644 because there is no universal consensus on which day is the first day of the week. \tcode{weekday}'s arithmetic operations treat the days of the week as a circular range, with no beginning and no end. -@@ -5512,8 +5512,8 @@ namespace std::chrono { +@@ -5517,8 +5517,8 @@ namespace std::chrono { \pnum \tcode{month_day} represents a specific day of a specific month, but with an unspecified year. @@ -11054,7 +10575,7 @@ index 39598098..ca78ddce 100644 \pnum \tcode{month_day} is a trivially copyable and standard-layout class type. -@@ -6013,8 +6013,8 @@ namespace std::chrono { +@@ -6018,8 +6018,8 @@ namespace std::chrono { \tcode{year_month} represents a specific month of a specific year, but with an unspecified day. \tcode{year_month} is a field-based time point with a resolution of \tcode{months}. @@ -11065,7 +10586,7 @@ index 39598098..ca78ddce 100644 \pnum \tcode{year_month} is a trivially copyable and standard-layout class type. -@@ -6369,8 +6369,8 @@ but not \tcode{days}-oriented arithmetic. +@@ -6374,8 +6374,8 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -11076,7 +10597,7 @@ index 39598098..ca78ddce 100644 \pnum \tcode{year_month_day} is a trivially copyable and standard-layout class type. -@@ -6830,8 +6830,8 @@ but not \tcode{days}-oriented arithmetic. +@@ -6835,8 +6835,8 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -11087,7 +10608,7 @@ index 39598098..ca78ddce 100644 \pnum \tcode{year_month_day_last} is a trivially copyable and standard-layout class type. -@@ -7201,7 +7201,7 @@ but not \tcode{days}-oriented arithmetic. +@@ -7206,7 +7206,7 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -11096,7 +10617,7 @@ index 39598098..ca78ddce 100644 \pnum \tcode{year_month_weekday} is a trivially copyable and standard-layout class type. -@@ -7594,7 +7594,7 @@ but not \tcode{days}-oriented arithmetic. +@@ -7599,7 +7599,7 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -11105,7 +10626,7 @@ index 39598098..ca78ddce 100644 \pnum \tcode{year_month_weekday_last} is a trivially copyable and standard-layout class type. -@@ -8844,7 +8844,7 @@ The \tcode{tzdb_list} object contains a list of \tcode{tzdb} objects. +@@ -8852,7 +8852,7 @@ The \tcode{tzdb_list} object contains a list of \tcode{tzdb} objects. \pnum \tcode{tzdb_list::const_iterator} is a constant iterator @@ -11114,7 +10635,7 @@ index 39598098..ca78ddce 100644 and has a value type of \tcode{tzdb}. \indexlibrarymember{front}{tzdb_list}% -@@ -11555,7 +11555,7 @@ template<> struct hash; +@@ -11576,7 +11576,7 @@ template<> struct hash; The specializations are enabled\iref{unord.hash}. \begin{note} All the \tcode{hash} specializations listed above meet the @@ -11124,10 +10645,10 @@ index 39598098..ca78ddce 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index 171c1b2f..44c92b72 100644 +index c39c394b..ba05d89f 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -258,9 +258,9 @@ template +@@ -277,9 +277,9 @@ template Type \tcode{T} meets the @@ -11139,7 +10660,7 @@ index 171c1b2f..44c92b72 100644 requirements. \pnum -@@ -2138,7 +2138,7 @@ template +@@ -2458,7 +2458,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -11148,7 +10669,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -2768,7 +2768,7 @@ template struct tuple_size; +@@ -3080,7 +3080,7 @@ template struct tuple_size; \pnum Except where specified otherwise, all specializations of \tcode{tuple_size} meet the @@ -11157,7 +10678,7 @@ index 171c1b2f..44c92b72 100644 base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -2809,7 +2809,7 @@ template struct tuple_size; +@@ -3121,7 +3121,7 @@ template struct tuple_size; Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. If the expression \tcode{TS::value} is well-formed when treated as an \deflink{unevaluated operand}{expr.context}, then @@ -11166,16 +10687,16 @@ index 171c1b2f..44c92b72 100644 with a base characteristic of \begin{codeblock} integral_constant -@@ -2846,7 +2846,7 @@ template struct tuple_element; +@@ -3159,7 +3159,7 @@ template struct tuple_element; \begin{itemdescr} \pnum Let \tcode{TE} denote \tcode{tuple_element_t} of the cv-unqualified type \tcode{T}. Then -each specialization of the template meets the \oldconcept{TransformationTrait} requirements\iref{meta.rqmts} +each specialization of the template meets the \oldconceptref{TransformationTrait} requirements\iref{meta.rqmts} - with a member typedef \tcode{type} that names the type \tcode{add_const_t}. + with a member typedef \tcode{type} that names the type \tcode{const TE}. \pnum -@@ -3125,7 +3125,7 @@ template +@@ -3445,7 +3445,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -11184,16 +10705,7 @@ index 171c1b2f..44c92b72 100644 \pnum \begin{note} -@@ -3378,7 +3378,7 @@ member \tcode{val} points to the contained value. - \pnum - \tcode{T} shall be a type - other than \cv{} \tcode{in_place_t} or \cv{} \tcode{nullopt_t} --that meets the \oldconcept{Destructible} requirements (\tref{cpp17.destructible}). -+that meets the \oldconceptref{Destructible} requirements (\tref{cpp17.destructible}). - - \rSec3[optional.ctor]{Constructors} - -@@ -3998,7 +3998,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); +@@ -4341,7 +4341,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11202,7 +10714,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -4055,7 +4055,7 @@ using const_iterator = @\impdef@; +@@ -4398,7 +4398,7 @@ using const_iterator = @\impdef@; \pnum These types model \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, @@ -11211,7 +10723,7 @@ index 171c1b2f..44c92b72 100644 meet the requirements for constexpr iterators\iref{iterator.requirements.general}, with value type \tcode{remove_cv_t}. The reference type is \tcode{T\&} for \tcode{iterator} and -@@ -4497,7 +4497,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5418,7 +5418,7 @@ template constexpr bool operator==(const optional& x, const The expression \tcode{*x == *y} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11220,7 +10732,7 @@ index 171c1b2f..44c92b72 100644 \end{note} \pnum -@@ -4688,7 +4688,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5609,7 +5609,7 @@ template constexpr bool operator==(const optional& x, const The expression \tcode{*x == v} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11229,7 +10741,7 @@ index 171c1b2f..44c92b72 100644 \end{note} \pnum -@@ -5175,7 +5175,7 @@ is nested within\iref{intro.object} the +@@ -6164,7 +6164,7 @@ is nested within\iref{intro.object} the \pnum All types in \tcode{Types} shall meet @@ -11238,7 +10750,7 @@ index 171c1b2f..44c92b72 100644 \pnum A program that instantiates the definition of \tcode{variant} with -@@ -5855,7 +5855,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); +@@ -6857,7 +6857,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11247,7 +10759,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -5900,7 +5900,7 @@ template struct variant_size; +@@ -6902,7 +6902,7 @@ template struct variant_size; \begin{itemdescr} \pnum All specializations of \tcode{variant_size} meet the @@ -11256,7 +10768,7 @@ index 171c1b2f..44c92b72 100644 with a base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -5913,7 +5913,7 @@ template struct variant_size; +@@ -6915,7 +6915,7 @@ template struct variant_size; \pnum Let \tcode{VS} denote \tcode{variant_size} of the cv-unqualified type \tcode{T}. Then each specialization of the template meets the @@ -11265,16 +10777,16 @@ index 171c1b2f..44c92b72 100644 base characteristic of \tcode{integral_constant}. \end{itemdescr} -@@ -5933,7 +5933,7 @@ template struct variant_alternative; +@@ -6935,7 +6935,7 @@ template struct variant_alternative; \pnum Let \tcode{VA} denote \tcode{variant_alternative} of the cv-unqualified type \tcode{T}. Then each specialization of the template -meets the \oldconcept{TransformationTrait} requirements\iref{meta.rqmts} with a +meets the \oldconceptref{TransformationTrait} requirements\iref{meta.rqmts} with a - member typedef \tcode{type} that names the type \tcode{add_const_t}. + member typedef \tcode{type} that names the type \tcode{const VA::type}. \end{itemdescr} -@@ -6661,7 +6661,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. +@@ -7666,7 +7666,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. \pnum \expects @@ -11283,7 +10795,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -6689,7 +6689,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7694,7 +7694,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11292,7 +10804,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -6722,7 +6722,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7727,7 +7727,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11301,7 +10813,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -6807,7 +6807,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7812,7 +7812,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11310,7 +10822,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -6842,7 +6842,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7847,7 +7847,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11319,7 +10831,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -6886,7 +6886,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7891,7 +7891,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11328,7 +10840,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -7592,9 +7592,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -8597,9 +8597,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum When \tcode{T} is not \cv{} \tcode{void}, it shall meet @@ -11340,7 +10852,7 @@ index 171c1b2f..44c92b72 100644 \rSec3[expected.object.cons]{Constructors} -@@ -8832,7 +8832,7 @@ template friend constexpr bool operator==(const expected& x, const T2& +@@ -9861,7 +9861,7 @@ template friend constexpr bool operator==(const expected& x, const T2& The expression \tcode{*x == v} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11349,7 +10861,7 @@ index 171c1b2f..44c92b72 100644 \end{note} \pnum -@@ -8969,7 +8969,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -10002,7 +10002,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum \tcode{E} shall meet the requirements of @@ -11358,7 +10870,7 @@ index 171c1b2f..44c92b72 100644 \rSec3[expected.void.cons]{Constructors} -@@ -10994,8 +10994,8 @@ is ill-formed. +@@ -12163,8 +12163,8 @@ is ill-formed. \indextext{call wrapper}% \indextext{call wrapper!simple}% \indextext{call wrapper!forwarding}% @@ -11369,7 +10881,7 @@ index 171c1b2f..44c92b72 100644 An \defn{argument forwarding call wrapper} is a call wrapper that can be called with an arbitrary argument list and delivers the arguments to the target object as references. -@@ -11035,7 +11035,7 @@ with references as described in the corresponding forwarding steps. +@@ -12204,7 +12204,7 @@ with references as described in the corresponding forwarding steps. \pnum \label{term.simple.call.wrapper}% A \defn{simple call wrapper} is a perfect forwarding call wrapper that meets @@ -11378,7 +10890,7 @@ index 171c1b2f..44c92b72 100644 and whose copy constructor, move constructor, and assignment operators are constexpr functions that do not throw exceptions. -@@ -11138,7 +11138,7 @@ namespace std { +@@ -12307,7 +12307,7 @@ namespace std { \end{codeblock} \pnum @@ -11387,7 +10899,7 @@ index 171c1b2f..44c92b72 100644 around a reference to an object or function of type \tcode{T}. \pnum -@@ -12592,7 +12592,7 @@ is \tcode{true}. +@@ -13761,7 +13761,7 @@ is \tcode{true}. \pnum \expects @@ -11396,7 +10908,7 @@ index 171c1b2f..44c92b72 100644 \pnum \returns -@@ -12678,10 +12678,10 @@ is \tcode{true}. +@@ -13847,10 +13847,10 @@ is \tcode{true}. \pnum \expects @@ -11409,7 +10921,7 @@ index 171c1b2f..44c92b72 100644 \pnum \returns -@@ -12747,7 +12747,7 @@ then \tcode{f != nullptr} is \tcode{true}. +@@ -13916,7 +13916,7 @@ then \tcode{f != nullptr} is \tcode{true}. \pnum \expects For each $\tcode{T}_i$ in \tcode{BoundArgs}, @@ -11418,7 +10930,7 @@ index 171c1b2f..44c92b72 100644 \pnum \returns -@@ -12792,7 +12792,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. +@@ -13962,7 +13962,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. \pnum Specializations of the \tcode{is_bind_expression} template shall meet @@ -11427,7 +10939,7 @@ index 171c1b2f..44c92b72 100644 provides a definition that has a base characteristic of \tcode{true_type} if \tcode{T} is a type returned from \tcode{bind}, otherwise it has a base characteristic of \tcode{false_type}. -@@ -12828,7 +12828,7 @@ The function template \tcode{bind} uses +@@ -13998,7 +13998,7 @@ The function template \tcode{bind} uses \pnum Specializations of the \tcode{is_placeholder} template shall meet @@ -11436,7 +10948,7 @@ index 171c1b2f..44c92b72 100644 provides a definition that has the base characteristic of \tcode{integral_constant} if \tcode{T} is the type of \tcode{std::placeholders::_\placeholder{J}}, otherwise it has a -@@ -12878,7 +12878,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> +@@ -14048,7 +14048,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> \pnum \expects \tcode{FD} and each $\tcode{TD}_i$ meet @@ -11445,7 +10957,7 @@ index 171c1b2f..44c92b72 100644 \tcode{\placeholdernc{INVOKE}(fd, $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc$, $\tcode{w}_N$)}\iref{func.require} is a valid expression for some values $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc{}$, $\tcode{w}_N$, where -@@ -12914,8 +12914,8 @@ the state entities of \tcode{g}. +@@ -14084,8 +14084,8 @@ the state entities of \tcode{g}. \pnum \begin{note} If all of \tcode{FD} and $\tcode{TD}_i$ meet @@ -11456,7 +10968,7 @@ index 171c1b2f..44c92b72 100644 \end{note} \end{itemdescr} -@@ -12984,13 +12984,13 @@ The number \tcode{\placeholder{M}} of placeholders is +@@ -14154,13 +14154,13 @@ The number \tcode{\placeholder{M}} of placeholders is \impldef{number of placeholders for bind expressions}. \pnum @@ -11473,7 +10985,7 @@ index 171c1b2f..44c92b72 100644 but if so, their copy assignment operators are constexpr functions that do not throw exceptions. -@@ -13259,7 +13259,7 @@ Let \tcode{FD} be \tcode{decay_t}. +@@ -14430,7 +14430,7 @@ Let \tcode{FD} be \tcode{decay_t}. \pnum \expects @@ -11482,7 +10994,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -13684,9 +13684,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14855,9 +14855,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11494,7 +11006,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -13736,9 +13736,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14907,9 +14907,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11506,7 +11018,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -13778,9 +13778,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14949,9 +14949,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11518,7 +11030,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -14102,8 +14102,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -15273,8 +15273,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11529,7 +11041,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -14158,8 +14158,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -15329,8 +15329,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11540,7 +11052,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -14204,8 +14204,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -15375,8 +15375,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11551,7 +11063,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -14720,7 +14720,7 @@ provided to the function call operator. +@@ -15937,7 +15937,7 @@ provided to the function call operator. \pnum Each specialization of a class template specified in \ref{func.search} @@ -11560,7 +11072,7 @@ index 171c1b2f..44c92b72 100644 Template parameters named \begin{itemize} \item \tcode{ForwardIterator}, -@@ -14734,7 +14734,7 @@ Template parameters named +@@ -15951,7 +15951,7 @@ Template parameters named of templates specified in \ref{func.search} shall meet the same requirements and semantics as specified in \ref{algorithms.general}. @@ -11569,7 +11081,7 @@ index 171c1b2f..44c92b72 100644 requirements (\tref{cpp17.hash}). \pnum -@@ -14843,9 +14843,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, +@@ -16060,9 +16060,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, \pnum \expects The value type of \tcode{RandomAccessIterator1} meets @@ -11582,7 +11094,7 @@ index 171c1b2f..44c92b72 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -14944,8 +14944,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, +@@ -16161,8 +16161,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, \begin{itemdescr} \pnum \expects @@ -11593,7 +11105,7 @@ index 171c1b2f..44c92b72 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15018,7 +15018,7 @@ as the default hash function. +@@ -16235,7 +16235,7 @@ as the default hash function. Each specialization of \tcode{hash} is either enabled or disabled, as described below. \begin{note} @@ -11602,7 +11114,7 @@ index 171c1b2f..44c92b72 100644 disabled specializations do not. \end{note} Each header that declares the template \tcode{hash} -@@ -15045,17 +15045,17 @@ Disabled specializations of \tcode{hash} +@@ -16262,17 +16262,17 @@ Disabled specializations of \tcode{hash} are not function object types\iref{function.objects}. \begin{note} This means that the specialization of \tcode{hash} exists, but @@ -11629,28 +11141,27 @@ index 171c1b2f..44c92b72 100644 2.43.0 -From 994f6337ccb16283db09320be852eb716809095d Mon Sep 17 00:00:00 2001 +From ceb985047db6f23ba96c440e695b7cda83211715 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 -Subject: [PATCH 9/9] Remove awkward \linebreaks. +Subject: [PATCH 8/9] Remove awkward \linebreaks. --- source/algorithms.tex | 4 ++-- - source/containers.tex | 53 +++++++++++++++++++++---------------------- - source/exec.tex | 18 +++++++-------- - source/memory.tex | 6 ++--- + source/containers.tex | 38 +++++++++++++++++++------------------- + source/exec.tex | 8 ++++---- + source/memory.tex | 6 +++--- source/meta.tex | 2 +- - source/numerics.tex | 4 ++-- - source/ranges.tex | 38 +++++++++++++++---------------- - source/threads.tex | 8 +++---- - source/utilities.tex | 10 ++++---- - 9 files changed, 71 insertions(+), 72 deletions(-) + source/ranges.tex | 38 +++++++++++++++++++------------------- + source/threads.tex | 8 ++++---- + source/utilities.tex | 8 ++++---- + 8 files changed, 56 insertions(+), 56 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 9b6f07ea..267f4770 100644 +index b7fd050e..8cbeb8e6 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -5588,7 +5588,7 @@ Let: +@@ -7073,7 +7073,7 @@ Let: \tcode{invoke(op, invoke(proj, *(first1 + (i - result))))} for unary transforms defined in namespace \tcode{ranges}; \item @@ -11659,7 +11170,7 @@ index 9b6f07ea..267f4770 100644 for binary transforms defined in namespace \tcode{ranges}. \end{itemize} \end{itemize} -@@ -11738,7 +11738,7 @@ namespace ranges { +@@ -14212,7 +14212,7 @@ namespace ranges { \pnum \constraints \tcode{is_unbounded_array_v} is \tcode{false}. @@ -11669,10 +11180,10 @@ index 9b6f07ea..267f4770 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index b1b1b3fb..6ae695de 100644 +index 0be602a1..1bdcf098 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -1456,7 +1456,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. +@@ -1461,7 +1461,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. \pnum \recommended If \tcode{R} models \tcode{ranges::\libconcept{approximately_sized_range}} and @@ -11681,7 +11192,7 @@ index b1b1b3fb..6ae695de 100644 an implementation should not perform more than a single reallocation. \pnum -@@ -1828,7 +1828,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. +@@ -1836,7 +1836,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. \pnum \recommended If \tcode{R} models \tcode{ranges::\libconcept{approximately_sized_range}} and @@ -11690,17 +11201,16 @@ index b1b1b3fb..6ae695de 100644 an implementation should not perform any reallocation. \end{itemdescr} -@@ -2444,8 +2444,7 @@ calling \tcode{ator_traits::template rebind_traits::dealloc - Assigns \tcode{nh.ptr_} to \tcode{ptr_}. +@@ -2453,7 +2453,7 @@ Assigns \tcode{nh.\exposid{ptr_}} to \exposid{ptr_}. \item - If \tcode{!alloc\textunderscore} or \tcode{ator_traits::propagate_on_container_move_assignment::value} + If \tcode{!\exposid{alloc_}} is \tcode{true} or + \tcode{\exposid{ator-traits}::propagate_on_container_move_assignment::value} -is \tcode{true}, \linebreak --move assigns \tcode{nh.alloc_} to \tcode{alloc_}. -+is \tcode{true}, move assigns \tcode{nh.alloc_} to \tcode{alloc_}. ++is \tcode{true}, + move assigns \tcode{nh.\exposid{alloc_}} to \exposid{alloc_}. \item Assigns - \keyword{nullptr} to \tcode{nh.ptr_} and assigns \tcode{nullopt} to -@@ -7467,14 +7466,14 @@ template +@@ -7473,14 +7473,14 @@ template \pnum \expects \tcode{T} is \oldconcept{EmplaceConstructible} into \tcode{forward_list} @@ -11717,7 +11227,7 @@ index b1b1b3fb..6ae695de 100644 \pnum \returns -@@ -10633,7 +10632,7 @@ template +@@ -10742,7 +10742,7 @@ template \pnum The expression \tcode{\exposid{is-vector-bool-reference}} is \tcode{true} @@ -11726,7 +11236,7 @@ index b1b1b3fb..6ae695de 100644 for some type \tcode{Alloc} and \tcode{vector} is not a program-defined specialization. \end{itemdescr} -@@ -12025,7 +12024,7 @@ there is no effect. +@@ -12124,7 +12124,7 @@ there is no effect. Otherwise, let \tcode{r} be \tcode{equal_range(k)}. Constructs an object \tcode{u} of type \tcode{value_type} with \tcode{piecewise_construct, forward_as_tuple(std::forward(k)), @@ -11735,16 +11245,7 @@ index b1b1b3fb..6ae695de 100644 If \tcode{equal_range(u.first) == r} is \tcode{false}, the behavior is undefined. Inserts \tcode{u} into \tcode{*this}. -@@ -17511,7 +17510,7 @@ template - \pnum - \effects - Equivalent to \tcode{flat_map(sorted_unique, key_cont, mapped_cont)} and --\tcode{flat_map(sorted_unique, key_cont, \linebreak{}mapped_cont, comp)}, respectively, -+\tcode{flat_map(sorted_unique, key_cont, mapped_cont, comp)}, respectively, - except that \tcode{\exposid{c}.keys} and \tcode{\exposid{c}.values} are constructed - with uses-allocator construction\iref{allocator.uses.construction}. - -@@ -17695,7 +17694,7 @@ template constexpr pair emplace(Args&&... args); +@@ -17817,7 +17817,7 @@ template constexpr pair emplace(Args&&... args); \pnum \effects Initializes an object \tcode{t} of type \tcode{pair} @@ -11753,7 +11254,7 @@ index b1b1b3fb..6ae695de 100644 if the map already contains an element whose key is equivalent to \tcode{t.first}, \tcode{*this} is unchanged. -@@ -17972,7 +17971,7 @@ template +@@ -18089,7 +18089,7 @@ template \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11762,7 +11263,7 @@ index b1b1b3fb..6ae695de 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18027,7 +18026,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. +@@ -18144,7 +18144,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11771,7 +11272,7 @@ index b1b1b3fb..6ae695de 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18641,14 +18640,14 @@ template +@@ -18774,14 +18774,14 @@ template \pnum \effects Equivalent to \tcode{flat_multimap(key_cont, mapped_cont)} and @@ -11788,7 +11289,7 @@ index b1b1b3fb..6ae695de 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -23202,7 +23201,7 @@ is representable as a value of type \tcode{index_type.} +@@ -23458,7 +23458,7 @@ is representable as a value of type \tcode{index_type.} \item If \exposid{rank_} is greater than one, then the product of @@ -11797,7 +11298,7 @@ index b1b1b3fb..6ae695de 100644 all values \tcode{ext.extent($k$)} with $k$ in the range of \range{1}{\exposid{rank_}} is representable as a value of type \tcode{index_type}. -@@ -23281,7 +23280,7 @@ template +@@ -23537,7 +23537,7 @@ template \item If \exposid{rank_} is greater than \tcode{1} and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11806,7 +11307,7 @@ index b1b1b3fb..6ae695de 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(0))) -@@ -23348,7 +23347,7 @@ is \tcode{true}. +@@ -23612,7 +23612,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11815,7 +11316,7 @@ index b1b1b3fb..6ae695de 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(0))) -@@ -23746,7 +23745,7 @@ Implementations should not store this value +@@ -24020,7 +24020,7 @@ Implementations should not store this value if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. \begin{note} Using \tcode{extents} @@ -11824,7 +11325,7 @@ index b1b1b3fb..6ae695de 100644 would achieve this. \end{note} \end{itemdescr} -@@ -23829,13 +23828,13 @@ is representable as a value of type \tcode{index_type}. +@@ -24107,7 +24107,7 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -11833,14 +11334,7 @@ index b1b1b3fb..6ae695de 100644 all values \tcode{ext.extent($k$)} with $k$ in the range of \range{0}{\exposid{rank_} - 1} is representable as a value of type \tcode{index_type}. - \item - If \tcode{padding_value} is not equal to \tcode{dynamic_extent}, --\tcode{padding_value} equals \tcode{extents_type::\linebreak \exposid{index-cast}(pad)}. -+\tcode{padding_value} equals \tcode{extents_type::\exposid{index-cast}(pad)}. - \end{itemize} - - \pnum -@@ -23908,7 +23907,7 @@ template +@@ -24186,7 +24186,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11849,7 +11343,7 @@ index b1b1b3fb..6ae695de 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -23976,7 +23975,7 @@ is \tcode{true}. +@@ -24261,7 +24261,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11858,66 +11352,20 @@ index b1b1b3fb..6ae695de 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) -@@ -25565,7 +25564,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, - \item - \tcode{stride(k) * \exposid{de-ice}($s_k$.stride)} - if $S_k$ is a specialization of \tcode{strided_slice} and --\tcode{$s_k$.stride < $s_k$.\linebreak extent} is \tcode{true}; -+\tcode{$s_k$.stride < $s_k$.extent} is \tcode{true}; - \item - otherwise, \tcode{stride($k$)}. - \end{itemize} -@@ -25963,11 +25962,11 @@ is well-formed when treated as an unevaluated operand. - \begin{itemize} - \item - \tcode{decltype(submdspan_mapping(src.mapping(), slices...))} --is a specialization of \tcode{submd-\linebreak{}span_mapping_result}. -+is a specialization of \tcode{submdspan_mapping_result}. - - \item - \tcode{is_same_v,} --\tcode{decltype(\linebreak{}submdspan_extents(src.mapping(), slices...))>} -+\tcode{decltype(submdspan_extents(src.mapping(), slices...))>} - is \tcode{true}. - - \item -@@ -25997,11 +25996,11 @@ all of the following are \tcode{true}: - \item - $0 \le \tcode{\exposid{first_}(slices...)}$ - $\le \tcode{\exposid{last_}<$k$>(src.extents(), slices...)}$ -- $\le \tcode{\linebreak{}src.extent($k$)}$ -+ $\le \tcode{src.extent($k$)}$ - \end{itemize} - - \item --\tcode{sub_map_offset.mapping.extents() == submdspan_extents(src.mapping(), slices...)}\linebreak -+\tcode{sub_map_offset.mapping.extents() == submdspan_extents(src.mapping(), slices...)} - is \tcode{true}; and - - \item diff --git a/source/exec.tex b/source/exec.tex -index d141246e..1730edd5 100644 +index 4bf25bbd..98317a73 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -2831,7 +2831,7 @@ except that \tcode{sch} is evaluated only once. - Let \tcode{out_sndr} and \tcode{env} be subexpressions - such that \tcode{OutSndr} is \tcode{decltype((out_sndr))}. - If \tcode{\exposconcept{sender-for}} is \tcode{false}, --then the expressions \tcode{starts_on.transform_env(out_sndr, env)} and\linebreak -+then the expressions \tcode{starts_on.transform_env(out_sndr, env)} and - \tcode{starts_on.transform_sender(out_sndr, env)} are ill-formed; otherwise - \begin{itemize} - \item -@@ -3183,7 +3183,7 @@ except that \tcode{sndr} is evaluated only once. +@@ -3914,7 +3914,7 @@ otherwise, it is expression-equivalent to \pnum Let \tcode{out_sndr} and \tcode{env} be subexpressions, let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and -let \tcode{Env} be \tcode{decltype((\linebreak env))}. +let \tcode{Env} be \tcode{decltype((env))}. If \tcode{\exposconcept{sender-for}} is \tcode{false}, - then the expressions \tcode{on.transform_env(out_sndr, env)} and - \tcode{on.transform_sender(out_sndr, env)} are ill-formed. -@@ -3345,7 +3345,7 @@ Let the expression \exposid{then-cpo} be one of + then the expression \tcode{on.transform_sender(set_value, out_sndr, env)} is ill-formed. + +@@ -4019,7 +4019,7 @@ Let the expression \exposid{then-cpo} be one of For subexpressions \tcode{sndr} and \tcode{f}, if \tcode{decltype((sndr))} does not satisfy \libconcept{sender}, or \tcode{decltype((f))} does not satisfy \exposconcept{movable-value}, @@ -11926,25 +11374,7 @@ index d141246e..1730edd5 100644 \pnum Otherwise, -@@ -3526,7 +3526,7 @@ to the \tcode{completion_signatures} specialization named by - Let \tcode{LetSigs} be a pack of those types in \tcode{Sigs} - with a return type of \tcode{\exposid{decayed-typeof}<\exposid{set-cpo}>}. - Let \exposid{as-tuple} be an alias template --such that \tcode{\exposid{as-tuple}<\linebreak Tag(Args...)>} denotes -+such that \tcode{\exposid{as-tuple}} denotes - the type \tcode{\exposid{decayed-tuple}}. - Then \tcode{args_variant_t} denotes - the type \tcode{variant...>} -@@ -3581,7 +3581,7 @@ is initialized with a callable object equivalent to the following: - Let \tcode{sndr} and \tcode{env} be subexpressions, and - let \tcode{Sndr} be \tcode{decltype((sndr))}. - If --\tcode{\exposconcept{sender-for}>} -+\tcode{\exposconcept{sender-for}>} - is \tcode{false}, - then the expression \tcode{\exposid{let-cpo}.transform_env(sndr, env)} - is ill-formed. -@@ -4338,7 +4338,7 @@ try { +@@ -4980,7 +4980,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -11953,38 +11383,20 @@ index d141246e..1730edd5 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -4651,7 +4651,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. +@@ -6150,7 +6150,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. \pnum For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. --If \tcode{\libconcept{sender_to}>} -+If \tcode{\libconcept{sender_to}>} +-If \tcode{\exposconcept{sender-to}>} ++If \tcode{\exposconcept{sender-to}>} is \tcode{false}, the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: -@@ -4722,7 +4722,7 @@ is \tcode{true}, where $e$ is the \tcode{ap\-ply_sender} expression above. - - \pnum - If \tcode{\exposconcept{callable}} is \tcode{false}, --the expression \tcode{sync_wait_with_variant.apply_sender(\linebreak sndr)} is ill-formed. -+the expression \tcode{sync_wait_with_variant.apply_sender(sndr)} is ill-formed. - Otherwise, it is equivalent to: - \begin{codeblock} - using result_type = @\exposid{sync-wait-with-variant-result-type}@; -@@ -4962,7 +4962,7 @@ Let \tcode{Vs} be a pack of the types in the \exposid{type-list} named by - Let \tcode{Es} be a pack of the types in the \exposid{type-list} named by - \tcode{\exposid{gather-signatures}}, - where \exposid{error-list} is an alias template --such that \tcode{\exposid{error-list}<\linebreak Ts...>} is -+such that \tcode{\exposid{error-list}} is - \tcode{\exposid{type-list}...>}. - - \pnum diff --git a/source/memory.tex b/source/memory.tex -index 2d81c518..8c64e657 100644 +index 2dea2cc5..e1572fe6 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1255,7 +1255,7 @@ A \tcode{tuple} value determined as follows: +@@ -1281,7 +1281,7 @@ A \tcode{tuple} value determined as follows: \begin{itemize} \item If \tcode{uses_allocator_v, Alloc>} is \tcode{false} and @@ -11993,7 +11405,7 @@ index 2d81c518..8c64e657 100644 return \tcode{forward_as_tuple(std::forward(args)...)}. \item Otherwise, if \tcode{uses_allocator_v, Alloc>} is \tcode{true} and -@@ -4188,7 +4188,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje +@@ -4246,7 +4246,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje the allocator \tcode{a} passed to \tcode{allocate_shared}. \item When a (sub)object of non-array type \tcode{U} is initialized by @@ -12002,7 +11414,7 @@ index 2d81c518..8c64e657 100644 \tcode{allocate_shared_for_overwrite}, it is initialized via the expression \tcode{::new(pv) U}, where \tcode{pv} has type \tcode{void*} and -@@ -5423,7 +5423,7 @@ if (p) { +@@ -5481,7 +5481,7 @@ if (p) { \end{codeblock} if the expression \tcode{s.reset(static_cast(p), std::forward(args)...)} @@ -12012,10 +11424,10 @@ index 2d81c518..8c64e657 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index bbe21840..71ecd729 100644 +index b61dc003..57e3b12b 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -2184,7 +2184,7 @@ present as follows: +@@ -2273,7 +2273,7 @@ present as follows: \item Let \tcode{R} be \tcode{\placeholdernc{COMMON-REF}(T1, T2)}. If \tcode{T1} and \tcode{T2} are reference types, \tcode{R} is well-formed, and @@ -12024,33 +11436,11 @@ index bbe21840..71ecd729 100644 then the member typedef \tcode{type} denotes \tcode{R}. \item Otherwise, if -diff --git a/source/numerics.tex b/source/numerics.tex -index 57b2e5a8..05ccf975 100644 ---- a/source/numerics.tex -+++ b/source/numerics.tex -@@ -13781,7 +13781,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. - \mandates - Let \tcode{a} be - \tcode{\exposid{abs-if-needed}(declval())}. --Then, \tcode{decltype(\linebreak init + a * a} is convertible to \tcode{Scalar}. -+Then, \tcode{decltype(init + a * a} is convertible to \tcode{Scalar}. - - \pnum - \returns -@@ -13987,7 +13987,7 @@ template - \mandates - Let \tcode{a} be - \tcode{\exposid{abs-if-needed}(declval())}. --Then, \tcode{decltype(\linebreak init + a * a)} -+Then, \tcode{decltype(init + a * a)} - is convertible to \tcode{Scalar}. - - \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 24fc04eb..1705fe1a 100644 +index 912546d8..ec7898d1 100644 --- a/source/ranges.tex +++ b/source/ranges.tex -@@ -1446,7 +1446,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, +@@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, regardless of the evaluation of \tcode{ranges::begin(t)}. \begin{note} \tcode{ranges::reserve_hint(t)} is otherwise not required to be well-defined @@ -12059,7 +11449,7 @@ index 24fc04eb..1705fe1a 100644 For example, it is possible for \tcode{ranges::reserve_hint(t)} to be well-defined for an \libconceptx{approximate\-ly_sized_range}{approximately_sized_range} whose -@@ -3637,7 +3637,7 @@ constexpr explicit repeat_view(piecewise_construct_t, +@@ -3673,7 +3673,7 @@ constexpr explicit repeat_view(piecewise_construct_t, Initializes \exposid{value_} with \tcode{make_from_tuple(std::move(value_args))} and @@ -12068,7 +11458,7 @@ index 24fc04eb..1705fe1a 100644 \tcode{make_from_tuple(std::move(bound_args))}. The behavior is undefined if \tcode{Bound} is not \tcode{unreachable_sentinel_t} and -@@ -5879,7 +5879,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} +@@ -5994,7 +5994,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} that models \libconcept{random_access_range} and \libconcept{sized_range}, then \tcode{iota_view(*ranges::begin(E), @@ -12077,7 +11467,7 @@ index 24fc04eb..1705fe1a 100644 except that \tcode{E} is evaluated only once. \item -@@ -6355,7 +6355,7 @@ if \tcode{T} is +@@ -6475,7 +6475,7 @@ if \tcode{T} is a specialization of \tcode{subrange} that models \libconcept{random_access_range} and \libconcept{sized_range}, then @@ -12086,7 +11476,7 @@ index 24fc04eb..1705fe1a 100644 \exposid{to-unsigned-like}(ranges::distance(E) - std::min(ranges::distance(E), F)))}, except that \tcode{E} and \tcode{F} are each evaluated only once. -@@ -7405,7 +7405,7 @@ Let \placeholder{OUTERC} denote +@@ -7527,7 +7527,7 @@ Let \placeholder{OUTERC} denote let \placeholder{INNERC} denote \tcode{iterator_traits<\exposid{InnerIter}>::iterator_category}, and let \placeholder{PATTERNC} denote @@ -12095,7 +11485,7 @@ index 24fc04eb..1705fe1a 100644 \item If \begin{codeblock} -@@ -7904,7 +7904,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); +@@ -8038,7 +8038,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -12104,7 +11494,7 @@ index 24fc04eb..1705fe1a 100644 \end{itemdescr} \rSec3[range.lazy.split.outer]{Class template \tcode{lazy_split_view::\exposid{outer-iterator}}} -@@ -8215,7 +8215,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: +@@ -8349,7 +8349,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: \begin{itemize} \item \tcode{forward_iterator_tag} if @@ -12113,7 +11503,7 @@ index 24fc04eb..1705fe1a 100644 \tcode{\libconcept{derived_from}}; \item otherwise, \tcode{iterator_traits>::iterator_category}. \end{itemize} -@@ -8435,7 +8435,7 @@ constexpr explicit split_view(R&& r, range_value_t e); +@@ -8569,7 +8569,7 @@ constexpr explicit split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -12122,7 +11512,7 @@ index 24fc04eb..1705fe1a 100644 \end{itemdescr} \indexlibrarymember{begin}{split_view} -@@ -8999,7 +8999,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. +@@ -9157,7 +9157,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. \item Otherwise, if \tcode{\exposconcept{all-forward}} is modeled, @@ -12131,7 +11521,7 @@ index 24fc04eb..1705fe1a 100644 \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} -@@ -9025,14 +9025,14 @@ let \tcode{Cs} denote the pack of types +@@ -9183,14 +9183,14 @@ let \tcode{Cs} denote the pack of types \begin{itemize} \item If @@ -12149,7 +11539,7 @@ index 24fc04eb..1705fe1a 100644 \item Otherwise, if \tcode{(\libconcept{derived_from} \&\& ...)} -@@ -9484,11 +9484,11 @@ Let +@@ -9642,11 +9642,11 @@ Let %FIXME This is hard to parse. If \tcode{$i_\tcode{x}$ > $i_\tcode{y}$}, let \tcode{$d_\tcode{y}$} be @@ -12164,7 +11554,7 @@ index 24fc04eb..1705fe1a 100644 for every integer \tcode{$i$} in the range \range{$i_\tcode{y}$ + 1}{$i_\tcode{x}$} if there is any, and -@@ -9531,7 +9531,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul +@@ -9689,7 +9689,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul Let \tcode{$i_\tcode{x}$} denote \tcode{x.\exposid{it_}.index()}, \tcode{$d_\tcode{x}$} be @@ -12173,7 +11563,7 @@ index 24fc04eb..1705fe1a 100644 Let \tcode{$s$} denote the sum of the sizes of all the ranges \tcode{std::get<$i$>(x.\exposid{parent_}->\exposid{views_})} for every integer \tcode{$i$} in the range -@@ -9688,7 +9688,7 @@ is expression-equivalent to: +@@ -9846,7 +9846,7 @@ is expression-equivalent to: \begin{itemize} \item If \tcode{T} models \libconcept{contiguous_iterator}, @@ -12182,7 +11572,7 @@ index 24fc04eb..1705fe1a 100644 \item Otherwise, if \tcode{T} models \libconcept{random_access_iterator}, -@@ -13353,7 +13353,7 @@ is defined as follows: +@@ -13555,7 +13555,7 @@ is defined as follows: \item If \tcode{invoke_result_t<\exposid{maybe-const}\&, \exposid{REPEAT}(range_reference_t<\exposid{Base}>, N)...>} @@ -12191,7 +11581,7 @@ index 24fc04eb..1705fe1a 100644 \tcode{iterator_category} denotes \tcode{input_iterator_tag}. \item Otherwise, let \tcode{C} denote the type -@@ -14439,7 +14439,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ +@@ -14666,7 +14666,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ \effects Initializes \exposid{current_} with \tcode{current}, \exposid{end_} with \tcode{ranges::end(parent->\exposid{base_})}, @@ -12201,10 +11591,10 @@ index 24fc04eb..1705fe1a 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index b16503f4..3f35f11a 100644 +index 693a8b4c..9a4c2a31 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -3412,7 +3412,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, +@@ -3492,7 +3492,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12213,7 +11603,7 @@ index b16503f4..3f35f11a 100644 \pnum \effects -@@ -4420,7 +4420,7 @@ For the \tcode{volatile} overload of this function, +@@ -4791,7 +4791,7 @@ For the \tcode{volatile} overload of this function, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12222,7 +11612,7 @@ index b16503f4..3f35f11a 100644 \pnum \effects -@@ -5579,7 +5579,7 @@ bool compare_exchange_strong(shared_ptr& expected, shared_ptr desired, +@@ -6305,7 +6305,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12231,7 +11621,7 @@ index b16503f4..3f35f11a 100644 \pnum \effects -@@ -5892,7 +5892,7 @@ bool compare_exchange_strong(weak_ptr& expected, weak_ptr desired, +@@ -6621,7 +6621,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12241,10 +11631,10 @@ index b16503f4..3f35f11a 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index 44c92b72..895b43b3 100644 +index ba05d89f..c03201fa 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -2061,7 +2061,7 @@ equals \tcode{tuple_size_v>}, +@@ -2381,7 +2381,7 @@ equals \tcode{tuple_size_v>}, \item \tcode{(is_constructible_v(std::forward(u)))> \&\& ...)} @@ -12253,16 +11643,16 @@ index 44c92b72..895b43b3 100644 \tcode{true}, and \item -@@ -3082,7 +3082,7 @@ struct basic_common_reference { - denotes a type. - \end{itemize} +@@ -3399,7 +3399,7 @@ denotes a type. + \pnum + \result The member \grammarterm{typedef-name} \tcode{type} denotes the type -\tcode{tuple, \linebreak{}UQual>...>}. +\tcode{tuple, UQual>...>}. \end{itemdescr} \indexlibrarymember{common_type}{tuple}% -@@ -4063,7 +4063,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and +@@ -4406,7 +4406,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and \pnum All requirements on container iterators\iref{container.reqmts} apply to @@ -12271,7 +11661,7 @@ index 44c92b72..895b43b3 100644 \pnum Any operation that initializes or destroys the contained value of an optional object invalidates all iterators into that object. -@@ -8418,7 +8418,7 @@ constexpr const T&& value() const &&; +@@ -9447,7 +9447,7 @@ constexpr const T&& value() const &&; \pnum \mandates \tcode{is_copy_constructible_v} is \tcode{true} and @@ -12280,15 +11670,90 @@ index 44c92b72..895b43b3 100644 \pnum \returns -@@ -14432,7 +14432,7 @@ that models \libconcept{copyable}. - \pnum - Within \ref{func.wrap.ref}, - \tcode{\placeholder{call-args}} is an argument pack with elements such that --\tcode{decltype((\placeholder{call-args}\linebreak{}))...} denote -+\tcode{decltype((\placeholder{call-args}))...} denote - \tcode{Args\&\&...} respectively. +-- +2.43.0 + + +From 3826c56a6e20a012815bac083e355c92926f71b7 Mon Sep 17 00:00:00 2001 +From: Eelis van der Weegen +Date: Thu, 25 Dec 2025 12:43:53 +0100 +Subject: [PATCH 9/9] Use \literalterminal more. + +--- + source/lex.tex | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +diff --git a/source/lex.tex b/source/lex.tex +index 2e1da4ca..23ea54ce 100644 +--- a/source/lex.tex ++++ b/source/lex.tex +@@ -449,7 +449,7 @@ for the respective Unicode encoding form. + + \begin{bnf} + \nontermdef{named-universal-character}\br +- \terminal{\textbackslash N\{} n-char-sequence \terminal{\}} ++ \literalterminal{\textbackslash N\{} n-char-sequence \literalterminal{\}} + \end{bnf} + + \begin{bnf} +@@ -464,9 +464,9 @@ for the respective Unicode encoding form. + + \begin{bnf} + \nontermdef{universal-character-name}\br +- \terminal{\textbackslash u} hex-quad\br +- \terminal{\textbackslash U} hex-quad hex-quad\br +- \terminal{\textbackslash u\{} simple-hexadecimal-digit-sequence \terminal{\}}\br ++ \literalterminal{\textbackslash u} hex-quad\br ++ \literalterminal{\textbackslash U} hex-quad hex-quad\br ++ \literalterminal{\textbackslash u\{} simple-hexadecimal-digit-sequence \literalterminal{\}}\br + named-universal-character + \end{bnf} + +@@ -1187,14 +1187,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. + + \begin{bnf} + \nontermdef{binary-literal}\br +- \terminal{0b} binary-digit\br +- \terminal{0B} binary-digit\br ++ \literalterminal{0b} binary-digit\br ++ \literalterminal{0B} binary-digit\br + binary-literal \opt{\literalterminal{'}} binary-digit + \end{bnf} - \rSec4[func.wrap.ref.ctor]{Constructors and assignment operators} + \begin{bnf} + \nontermdef{octal-literal}\br +- \terminal{0}\br ++ \literalterminal{0}\br + octal-literal \opt{\literalterminal{'}} octal-digit + \end{bnf} + +@@ -1211,22 +1211,22 @@ a literal has a type and a value category\iref{expr.prim.literal}. + + \begin{bnf} + \nontermdef{binary-digit} \textnormal{one of}\br +- \terminal{0 1} ++ \literalterminal{0 1} + \end{bnf} + + \begin{bnf} + \nontermdef{octal-digit} \textnormal{one of}\br +- \terminal{0 1 2 3 4 5 6 7} ++ \literalterminal{0 1 2 3 4 5 6 7} + \end{bnf} + + \begin{bnf} + \nontermdef{nonzero-digit} \textnormal{one of}\br +- \terminal{1 2 3 4 5 6 7 8 9} ++ \literalterminal{1 2 3 4 5 6 7 8 9} + \end{bnf} + + \begin{bnf} + \nontermdef{hexadecimal-prefix} \textnormal{one of}\br +- \terminal{0x 0X} ++ \literalterminal{0x 0X} + \end{bnf} + + \begin{bnf} -- 2.43.0 diff --git a/lastbuild.sig b/lastbuild.sig index 68ff4fcd2a..588a0930d8 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ -htmlgen eee5307c45c04761ef5c27956cbed742e08e5fb4 -draft ac78ae76c579883a32a9eb5b00346150a41e8e47 -ee2954f9c7635674003d9c2892fb2b5776fe4f95 htmlgen.patch +htmlgen 63bc5929dc4fa6bb7448390ecec586c8069516b7 +draft aaecb9378d0766482cbb46e6bbe605edfc0781aa +68db5a559863267bad23f556fdf4d2c907b772f3 htmlgen.patch