From ee85ce612a86cc12fa4885eb67acf230d89ad8c6 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Fri, 25 Jul 2025 09:07:58 -0500 Subject: [PATCH 01/18] Update --- draft | 2 +- gen_html_std.sh | 10 +- gh-pages | 2 +- htmlgen.patch | 2255 +++++++++++++++++++++----------------------- htmlgen_code.patch | 38 + lastbuild.sig | 5 +- 6 files changed, 1118 insertions(+), 1194 deletions(-) create mode 100644 htmlgen_code.patch diff --git a/draft b/draft index ac78ae76c5..454ba171cb 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit ac78ae76c579883a32a9eb5b00346150a41e8e47 +Subproject commit 454ba171cb14531639e641cb1200617fbf8d943f diff --git a/gen_html_std.sh b/gen_html_std.sh index e4d5de4a88..2e18c5df43 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,23 +47,25 @@ 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 ] diff --git a/gh-pages b/gh-pages index df7adc3717..3583928dd9 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit df7adc371752eab2b4d197727a7fe5e65c8787f1 +Subproject commit 3583928dd9a445d9c9870bd565fa2db9ad21bbcf diff --git a/htmlgen.patch b/htmlgen.patch index 7b86ae2bdc..4b2137add5 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,8 +1,8 @@ -From 087b7b86b346f3a15a16a3c7efdbb44f38a208a4 Mon Sep 17 00:00:00 2001 +From b4d8ee6d649994aafd969b8b42a1f511e00b3f48 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 - smaller (e.g. half-screen) window sizes. +Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout + on smaller (e.g. half-screen) window sizes. --- source/basic.tex | 26 +++++++++++++------------- @@ -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 c5ad9eb0..a5e431a0 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -296,7 +296,7 @@ Given +@@ -314,7 +314,7 @@ Given #include struct C { @@ -22,7 +22,7 @@ index 81781294..cc2fab73 100644 }; int main() { -@@ -2549,23 +2549,23 @@ namespace AB { +@@ -2616,23 +2616,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 51ff9a3c..77878571 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -2846,7 +2846,7 @@ struct s2 { +@@ -2924,7 +2924,7 @@ struct s2 { } auto g() { return [] { @@ -75,32 +75,32 @@ index ebc26464..c6ff9d4a 100644 2.43.0 -From eadd0f8aa92e9ad7489c01c436b187171a2cd451 Mon Sep 17 00:00:00 2001 +From d2066d5b092f42e8ebb3d97b8006c77484caaba8 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. +Subject: [PATCH 02/10] Use new link macros. --- source/algorithms.tex | 4 +- - source/basic.tex | 99 +++++++------- - source/classes.tex | 24 ++-- + source/basic.tex | 99 ++++++++------- + source/classes.tex | 22 ++-- source/compatibility.tex | 4 +- source/concepts.tex | 12 +- source/containers.tex | 50 ++++---- source/declarations.tex | 69 +++++----- source/diagnostics.tex | 6 +- source/exceptions.tex | 36 +++--- - source/expressions.tex | 270 ++++++++++++++++++++------------------- + source/expressions.tex | 266 ++++++++++++++++++++------------------- 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/lib-intro.tex | 71 +++++------ source/limits.tex | 2 +- - source/numerics.tex | 60 ++++----- + source/numerics.tex | 60 +++++---- source/overloading.tex | 64 +++++----- - source/preprocessor.tex | 14 +- + source/preprocessor.tex | 14 +-- source/statements.tex | 30 ++--- source/strings.tex | 8 +- source/support.tex | 90 ++++++------- @@ -108,10 +108,10 @@ Subject: [PATCH 2/9] Use new link macros. source/threads.tex | 45 ++++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 610 insertions(+), 620 deletions(-) + 27 files changed, 609 insertions(+), 618 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 3790bb78..84d18c8b 100644 +index f4e3bec3..9f29a804 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. +@@ -10228,7 +10228,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 a5e431a0..be952625 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -139,7 +139,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. +@@ -155,7 +155,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: +@@ -178,7 +178,7 @@ A declaration may 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}, @@ -154,7 +154,7 @@ index cc2fab73..ed278134 100644 \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, +@@ -264,7 +264,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 @@ -163,7 +163,7 @@ index cc2fab73..ed278134 100644 \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 +@@ -306,7 +306,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 +172,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 +@@ -391,7 +391,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$. +@@ -401,16 +401,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 +202,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 +@@ -572,8 +571,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 +213,7 @@ index cc2fab73..ed278134 100644 \pnum A local entity\iref{basic.pre} -@@ -615,7 +614,7 @@ void h() { +@@ -645,7 +644,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 +222,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 +@@ -693,9 +692,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 +235,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 +@@ -715,7 +714,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,7 +244,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 +@@ -770,7 +769,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}, @@ -253,7 +253,7 @@ index cc2fab73..ed278134 100644 \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.% +@@ -2876,7 +2875,7 @@ consteval int bad_splice(std::meta::info v) { \pnum \indextext{program}% \indextext{linking}% @@ -262,7 +262,7 @@ index cc2fab73..ed278134 100644 linked together. A translation unit consists of a sequence of declarations. -@@ -2778,7 +2777,7 @@ are attached to the same module. +@@ -2909,7 +2908,7 @@ are attached to the same module. \indextext{linkage!\idxcode{inline} and}% \indextext{\idxcode{inline}!linkage of}% The name of an entity @@ -271,7 +271,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 +@@ -2950,7 +2949,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 +280,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. +@@ -3026,7 +3025,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 +289,7 @@ index cc2fab73..ed278134 100644 linkage. \pnum -@@ -3217,8 +3216,8 @@ features of the language, such as references and virtual functions, might +@@ -3384,8 +3383,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 +300,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 +@@ -3429,15 +3428,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 +319,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: +@@ -3567,7 +3566,7 @@ A \defn{potentially-overlapping subobject} is either: \begin{itemize} \item a base class subobject, or \item a non-static data member @@ -328,7 +328,7 @@ index cc2fab73..ed278134 100644 \end{itemize} \pnum -@@ -3421,7 +3420,7 @@ Otherwise, the circumstances under which the object has zero size +@@ -3588,7 +3587,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 +337,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: +@@ -4161,16 +4160,16 @@ the result of the evaluation is the value so produced but is not erroneous: is produced by the evaluation of: \begin{itemize} \item @@ -357,7 +357,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}. +@@ -4361,8 +4360,8 @@ specified in~\ref{class.copy.elision}. \indextext{storage duration!dynamic|(} \pnum @@ -368,7 +368,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 +@@ -4526,9 +4525,9 @@ that would match a handler\iref{except.handle} of type \tcode{std::bad_alloc}\iref{bad.alloc}. \pnum @@ -381,7 +381,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 +@@ -5034,9 +5033,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 +394,16 @@ index cc2fab73..ed278134 100644 \end{note} \pnum -@@ -5024,7 +5023,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, +@@ -5210,7 +5209,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: +@@ -5243,7 +5242,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 +412,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. +@@ -5277,8 +5276,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 +421,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 either +@@ -5831,7 +5830,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 +432,7 @@ index cc2fab73..ed278134 100644 \end{itemize} \pnum -@@ -5618,7 +5617,7 @@ layout-compatible types shall +@@ -5909,7 +5908,7 @@ layout-compatible types shall have the same value representation and alignment requirements\iref{basic.align}. \begin{note} @@ -441,7 +441,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}. +@@ -6224,8 +6223,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. \indextext{program execution|(} \pnum @@ -452,7 +452,7 @@ 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}, +@@ -6270,7 +6269,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 @@ -461,7 +461,7 @@ index cc2fab73..ed278134 100644 the constituent expressions of each default argument\iref{dcl.fct.default} used in the call, or \item -@@ -6010,7 +6009,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope +@@ -6301,7 +6300,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope A \defn{full-expression} is \begin{itemize} \item @@ -471,7 +471,7 @@ index cc2fab73..ed278134 100644 a \grammarterm{constant-expression}\iref{expr.const}, \item diff --git a/source/classes.tex b/source/classes.tex -index f0d9a262..170c2eb3 100644 +index a1287851..5fa5e3b8 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: @@ -488,7 +488,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 +@@ -660,7 +660,7 @@ if it is \end{itemize} For any other \grammarterm{member-declaration}, each declared entity @@ -497,7 +497,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 +@@ -675,7 +675,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 +506,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 +@@ -821,9 +821,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 +518,7 @@ index f0d9a262..170c2eb3 100644 that is not a friend declaration. \pnum -@@ -913,7 +913,7 @@ unscoped enumeration type; and +@@ -926,7 +926,7 @@ unscoped enumeration type; and \pnum In addition, if class \tcode{T} has a user-declared @@ -536,7 +527,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 +@@ -976,7 +976,7 @@ non-static data members (in any order) have layout-compatible types\iref{term.layout.compatible.type}. \pnum @@ -545,7 +536,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 +@@ -2309,7 +2309,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 +545,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), +@@ -6410,7 +6410,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 +555,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 a46c9a71..8c70dc05 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -1950,8 +1950,8 @@ deallocation functions\iref{expr.new}. +@@ -2017,8 +2017,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 @@ -627,7 +618,7 @@ 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 6a71104d..77036c1f 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -6116,14 +6116,14 @@ namespace std { @@ -819,10 +810,10 @@ index d7032dfd..9c719111 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index 2e575bbb..1af3ee51 100644 +index 341c1bc1..4951f281 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 +822,7 @@ index 2e575bbb..1af3ee51 100644 \end{note} \pnum -@@ -783,10 +783,10 @@ an alias template or a type template template parameter. +@@ -814,10 +814,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 +837,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 +@@ -1152,7 +1152,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 +846,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 +@@ -1297,7 +1297,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 +855,7 @@ index 2e575bbb..1af3ee51 100644 \end{note} \pnum -@@ -1693,8 +1693,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; +@@ -1733,8 +1733,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 +865,7 @@ index 2e575bbb..1af3ee51 100644 \begin{example} \begin{codeblock} -@@ -1890,7 +1889,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. +@@ -1932,7 +1931,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 +874,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 +@@ -2074,7 +2073,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,7 +883,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 +@@ -2186,7 +2185,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 @@ -901,7 +892,7 @@ index 2e575bbb..1af3ee51 100644 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} +@@ -2285,7 +2284,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 +901,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; +@@ -4494,7 +4493,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 +909,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 +@@ -6206,15 +6205,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 +930,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 +@@ -7724,7 +7723,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 +939,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 +@@ -7875,7 +7874,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,7 +948,7 @@ index 2e575bbb..1af3ee51 100644 \pnum \indextext{constant!enumeration}% -@@ -7834,8 +7833,9 @@ If the underlying type is fixed, the type of each enumerator +@@ -7957,8 +7956,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} @@ -969,7 +960,7 @@ index 2e575bbb..1af3ee51 100644 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: +@@ -7967,8 +7967,9 @@ follows: \begin{itemize} \item If an initializer is specified for an enumerator, the @@ -981,7 +972,7 @@ index 2e575bbb..1af3ee51 100644 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. +@@ -8040,7 +8041,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 +981,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. +@@ -8323,7 +8324,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 +990,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 +@@ -9146,7 +9147,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -1008,14 +999,17 @@ 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 +@@ -9476,19 +9477,19 @@ 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 + and no \grammarterm{alignment-specifier} + 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 +1024,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. +@@ -9599,7 +9600,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,7 +1033,7 @@ 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. +@@ -9779,7 +9780,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -1049,7 +1043,7 @@ index 2e575bbb..1af3ee51 100644 such a statement is a fallthrough statement. No \grammarterm{attribute-argument-clause} shall be present. diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index 3c4b0c98..b4b70046 100644 +index d16f516a..df926181 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -505,13 +505,13 @@ the current state of \tcode{NDEBUG} each time that @@ -1078,7 +1072,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 ba2d34d0..cd476d28 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -184,7 +184,7 @@ try : i(f(ii)), d(id) { @@ -1227,7 +1221,7 @@ index 79684e4c..12cfcb8d 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index c6ff9d4a..13e2526b 100644 +index 77878571..45f82de6 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1249,7 +1243,7 @@ index c6ff9d4a..13e2526b 100644 \end{note} \pnum -@@ -212,7 +212,7 @@ xvalues; rvalue references to functions are treated as lvalues whether named or +@@ -213,7 +213,7 @@ xvalues; rvalue references to functions are treated as lvalues whether named or \begin{example} \begin{codeblock} struct A { @@ -1258,7 +1252,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}, +@@ -269,7 +269,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 +1261,7 @@ index c6ff9d4a..13e2526b 100644 applied to convert the expression to an xvalue. \pnum -@@ -450,31 +450,31 @@ An unevaluated operand is not evaluated. +@@ -452,31 +452,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 +1287,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. +@@ -615,7 +615,7 @@ descriptions of those operators and contexts. \pnum \indextext{conversion!lvalue-to-rvalue}% \indextext{type!incomplete}% @@ -1321,7 +1313,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 +@@ -640,18 +640,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 +1338,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 +@@ -819,11 +819,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 +1355,7 @@ index c6ff9d4a..13e2526b 100644 } \end{codeblock} \end{note} -@@ -1081,7 +1081,7 @@ the derived class object. +@@ -1080,7 +1080,7 @@ the derived class object. \indextext{conversion!pointer-to-member}% \indextext{null member pointer conversion|see{conversion, null member pointer}}% \indextext{constant!null pointer}% @@ -1392,7 +1384,7 @@ index c6ff9d4a..13e2526b 100644 \end{note} \pnum -@@ -1501,7 +1501,7 @@ In each case, the constraints of \tcode{f} are not satisfied. +@@ -1507,7 +1507,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 +1393,7 @@ index c6ff9d4a..13e2526b 100644 \end{example} \end{note} -@@ -2056,8 +2056,8 @@ void abssort(float* x, unsigned N) { +@@ -2126,8 +2126,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 +1404,7 @@ index c6ff9d4a..13e2526b 100644 \end{note} \pnum -@@ -2386,7 +2386,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no +@@ -2462,7 +2462,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 +1413,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)} +@@ -2571,8 +2571,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} \pnum The conversion function or conversion function template is public, @@ -1432,7 +1424,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}. +@@ -2630,9 +2630,9 @@ implicitly-declared destructor\iref{class.dtor}. \pnum A member of a closure type shall not be @@ -1445,7 +1437,7 @@ index c6ff9d4a..13e2526b 100644 \rSec3[expr.prim.lambda.capture]{Captures}% -@@ -3122,7 +3122,7 @@ A fold expression is a pack expansion. +@@ -3200,7 +3200,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 +1446,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. +@@ -3780,7 +3780,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,7 +1455,7 @@ 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. +@@ -3793,8 +3793,8 @@ an object under construction or destruction. \pnum \begin{note} @@ -1474,7 +1466,7 @@ index c6ff9d4a..13e2526b 100644 the program is ill-formed. No function is implicitly declared by such a call. \end{note} -@@ -3632,7 +3632,7 @@ function, +@@ -3861,7 +3861,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 +1475,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. +@@ -3998,10 +3998,10 @@ pointer parameters. \pnum \indextext{declaration!ellipsis in function}% \indextext{parameter list!variable}% @@ -1497,7 +1489,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 +@@ -4019,8 +4019,8 @@ thus each such argument has a corresponding parameter when a function template specialization is actually called. \end{note} The @@ -1508,7 +1500,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 +@@ -4035,16 +4035,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 +1522,7 @@ index c6ff9d4a..13e2526b 100644 \pnum A function call is an lvalue -@@ -3834,8 +3834,8 @@ except as specified in \ref{dcl.type.decltype}. +@@ -4063,8 +4063,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 +1533,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 +@@ -4075,7 +4075,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 +1542,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) { +@@ -4470,8 +4470,8 @@ void foo(D* dp) { \end{example} \pnum @@ -1561,7 +1553,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}. +@@ -4522,9 +4522,9 @@ runtime check \term{fails}. \pnum The value of a failed cast to pointer type is the null pointer value of @@ -1574,7 +1566,7 @@ index c6ff9d4a..13e2526b 100644 \indextext{\idxcode{bad_cast}}% \indexlibraryglobal{bad_cast}% -@@ -4326,13 +4326,13 @@ glvalue refers. +@@ -4613,13 +4613,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 +1584,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 +@@ -4713,7 +4713,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 +1593,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. +@@ -4818,7 +4818,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 +1603,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} +@@ -4839,7 +4840,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 +1612,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 +@@ -4850,7 +4851,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 +1621,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 +@@ -4873,7 +4874,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 +1630,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}. +@@ -4896,8 +4897,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 +1641,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 +@@ -5066,10 +5067,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 +1655,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 +@@ -5619,7 +5620,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 +1664,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 +@@ -5674,7 +5675,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 +1673,7 @@ index c6ff9d4a..13e2526b 100644 is applied. \pnum -@@ -5548,7 +5549,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. +@@ -5819,7 +5820,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. \end{bnf} \pnum @@ -1690,7 +1682,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; +@@ -5947,7 +5948,7 @@ is less than zero; \item its value is such that the size of the allocated object would exceed the @@ -1699,7 +1691,7 @@ index c6ff9d4a..13e2526b 100644 \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; +@@ -5972,7 +5973,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 +1700,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} ( +@@ -6023,8 +6024,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 +1711,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 +@@ -6135,7 +6136,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 +1720,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. +@@ -6226,7 +6227,7 @@ invocation of \keyword{new} to another. \pnum \begin{note} Unless an allocation function has a non-throwing @@ -1737,7 +1729,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. +@@ -6372,8 +6373,8 @@ to both the allocation and deallocation functions. \pnum \indextext{expression!\idxcode{delete}}% \indextext{\idxcode{delete}}% @@ -1748,7 +1740,7 @@ index c6ff9d4a..13e2526b 100644 \grammarterm{new-expression}. \begin{bnf} -@@ -6205,8 +6206,8 @@ null pointer value, then: +@@ -6476,8 +6477,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 +1751,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 +@@ -7062,8 +7063,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 +1762,7 @@ index c6ff9d4a..13e2526b 100644 \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -6595,7 +6596,7 @@ left-to-right. +@@ -7092,7 +7093,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 +1771,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}. +@@ -7228,7 +7229,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 +1780,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. +@@ -7319,12 +7320,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 +1795,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, +@@ -7366,13 +7367,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 +1811,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}, +@@ -7461,7 +7462,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring @@ -1828,7 +1820,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. +@@ -7546,10 +7547,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 +1835,7 @@ index c6ff9d4a..13e2526b 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -7069,7 +7070,8 @@ the result of the comparison is unspecified. +@@ -7566,7 +7567,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 +1845,7 @@ index c6ff9d4a..13e2526b 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -7114,12 +7116,12 @@ bool b1 = (bx == cx); // unspecified +@@ -7611,12 +7613,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -1868,7 +1860,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 +@@ -7856,7 +7858,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 +1869,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}; +@@ -7898,9 +7900,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 +1882,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 +@@ -7941,8 +7943,8 @@ are used in place of the original operands for the remainder of this subclause. \pnum @@ -1901,7 +1893,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: +@@ -7951,16 +7953,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 +1916,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}. +@@ -8144,7 +8146,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 +1925,7 @@ index c6ff9d4a..13e2526b 100644 operand. \pnum -@@ -7647,7 +7649,7 @@ resulting value of the bit-field is +@@ -8158,7 +8160,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 +1934,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. +@@ -8230,7 +8232,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,7 +1943,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 +@@ -8264,7 +8266,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, @@ -1960,7 +1952,7 @@ index c6ff9d4a..13e2526b 100644 are called \indexdefn{expression!constant}% \defnx{constant expressions}{constant expression}. -@@ -7936,9 +7938,9 @@ a temporary object of non-volatile const-qualified literal type +@@ -8447,9 +8449,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 @@ -1972,7 +1964,7 @@ index c6ff9d4a..13e2526b 100644 \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}. +@@ -8540,7 +8542,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -1981,7 +1973,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; +@@ -8562,7 +8564,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 +1982,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 +@@ -8935,7 +8937,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,7 +1991,7 @@ index c6ff9d4a..13e2526b 100644 \end{note} \pnum -@@ -8739,7 +8741,7 @@ if it is: +@@ -9436,7 +9438,7 @@ if it is: a manifestly constant-evaluated expression, \item @@ -2008,7 +2000,7 @@ index c6ff9d4a..13e2526b 100644 \item an immediate subexpression of a \grammarterm{braced-init-list}, -@@ -8766,7 +8768,9 @@ A function or variable is +@@ -9463,7 +9465,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -2020,7 +2012,7 @@ index c6ff9d4a..13e2526b 100644 \item diff --git a/source/future.tex b/source/future.tex -index 50edea0b..49c04f21 100644 +index f94b2c33..4c6942b4 100644 --- a/source/future.tex +++ b/source/future.tex @@ -14,7 +14,7 @@ is defined as: @@ -2047,7 +2039,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 +2049,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 e4014b96..abc66134 100644 --- a/source/intro.tex +++ b/source/intro.tex -@@ -94,8 +94,8 @@ Reads of scalar objects are described in \ref{conv.lval} and +@@ -105,8 +105,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 +2063,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 +@@ -254,11 +254,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}). +@@ -326,7 +327,7 @@ handler functions (see \ref{support}). \indexdefn{program!ill-formed}% \definition{ill-formed program}{defns.ill.formed} @@ -2094,7 +2089,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. +@@ -822,7 +823,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 +2098,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}. +@@ -839,7 +840,7 @@ the appropriate standard library named header unit\iref{using.headers}. \pnum The templates, classes, functions, and objects in the library have @@ -2113,10 +2108,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 4e61b9be..a7c59c26 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -561,7 +561,7 @@ is initialized, +@@ -555,7 +555,7 @@ is initialized, returns \tcode{\&cout}. Its state is otherwise the same as required for @@ -2125,7 +2120,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \indexlibraryglobal{cout}% -@@ -594,7 +594,7 @@ is initialized, +@@ -588,7 +588,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 +2129,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \indexlibraryglobal{clog}% -@@ -631,7 +631,7 @@ is initialized, +@@ -625,7 +625,7 @@ is initialized, returns \tcode{\&wcout}. Its state is otherwise the same as required for @@ -2143,7 +2138,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \indexlibraryglobal{wcout}% -@@ -664,7 +664,7 @@ is initialized, +@@ -658,7 +658,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 +2147,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \indexlibraryglobal{wclog}% -@@ -1384,7 +1384,7 @@ operate independently of the standard C streams. +@@ -1378,7 +1378,7 @@ operate independently of the standard C streams. \pnum \returns \tcode{true} @@ -2161,7 +2156,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(); +@@ -1437,8 +1437,8 @@ static int xalloc(); \pnum \remarks @@ -2172,7 +2167,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \indexlibrarymember{iword}{ios_base}% -@@ -2031,12 +2031,12 @@ locale imbue(const locale& loc); +@@ -2025,12 +2025,12 @@ locale imbue(const locale& loc); \pnum \effects Calls @@ -2187,7 +2182,7 @@ index 3f925b2b..f89a4754 100644 \pnum \returns -@@ -3289,7 +3289,7 @@ streamsize in_avail(); +@@ -3283,7 +3283,7 @@ streamsize in_avail(); If a read position is available, returns \tcode{egptr() - gptr()}. Otherwise returns @@ -2196,7 +2191,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \indexlibrarymember{snextc}{basic_streambuf}% -@@ -4314,7 +4314,7 @@ namespace std { +@@ -4308,7 +4308,7 @@ namespace std { template> class basic_istream : virtual public basic_ios { public: @@ -2205,7 +2200,7 @@ index 3f925b2b..f89a4754 100644 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); +@@ -4715,7 +4715,7 @@ basic_istream& operator>>(void*& val); \pnum As in the case of the inserters, these extractors depend on the locale's @@ -2214,7 +2209,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); +@@ -5002,7 +5002,7 @@ basic_istream& operator>>(basic_streambuf* sb); \begin{itemdescr} \pnum \effects @@ -2223,7 +2218,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. +@@ -5397,7 +5397,7 @@ characters and discards them. Characters are extracted until any of the following occurs: \begin{itemize} \item @@ -2232,7 +2227,7 @@ index 3f925b2b..f89a4754 100644 and \tcode{n} characters have been extracted so far; \item -@@ -5738,12 +5738,12 @@ template +@@ -5748,12 +5748,12 @@ template \begin{itemdescr} \pnum \effects @@ -2247,7 +2242,7 @@ index 3f925b2b..f89a4754 100644 If \tcode{ws} stops extracting characters because there are no more available it sets -@@ -5768,7 +5768,7 @@ template +@@ -5778,7 +5778,7 @@ template \pnum \constraints The expression \tcode{is >> std::forward(x)} is well-formed @@ -2256,7 +2251,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); +@@ -5846,7 +5846,7 @@ explicit basic_iostream(basic_streambuf* sb); Initializes the base class subobjects with \tcode{basic_istream(sb)}\iref{istream} and @@ -2265,7 +2260,7 @@ index 3f925b2b..f89a4754 100644 \pnum \ensures -@@ -5922,7 +5922,7 @@ namespace std { +@@ -5932,7 +5932,7 @@ namespace std { template> class basic_ostream : virtual public basic_ios { public: @@ -2274,7 +2269,7 @@ index 3f925b2b..f89a4754 100644 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; +@@ -6702,7 +6702,7 @@ return *this << s; \end{codeblock} where \tcode{s} is an \impldef{NTCTS in \tcode{basic_ostream\& op\-er\-ator<<(nullptr_t)}} @@ -2283,7 +2278,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \rSec4[ostream.inserters.character]{Character inserter function templates} -@@ -6715,7 +6715,7 @@ template +@@ -6726,7 +6726,7 @@ template \begin{itemdescr} \pnum \effects @@ -2292,7 +2287,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}. +@@ -7479,7 +7479,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 +2296,7 @@ index 3f925b2b..f89a4754 100644 \pnum \returns -@@ -7513,7 +7513,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. +@@ -7524,7 +7524,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 +2305,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 +@@ -7648,7 +7648,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 +2314,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}. +@@ -14126,7 +14126,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. \pnum \begin{note} @@ -2328,7 +2323,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}. +@@ -14738,7 +14738,7 @@ and print functions\iref{print.fun}. \pnum Generic format observer functions return strings formatted according to the @@ -2337,7 +2332,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 +@@ -15294,11 +15294,11 @@ If normalization\iref{fs.path.generic} is needed \indexlibrarymember{path}{iterator}% \pnum Path iterators iterate over the elements of the pathname @@ -2351,7 +2346,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 +@@ -16655,7 +16655,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 +2355,7 @@ index 3f925b2b..f89a4754 100644 \end{note} \rSec3[fs.dir.itr.members]{Members} -@@ -16714,7 +16714,7 @@ directory_iterator& increment(error_code& ec); +@@ -16747,7 +16747,7 @@ directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -2369,7 +2364,7 @@ index 3f925b2b..f89a4754 100644 \pnum \returns -@@ -17026,7 +17026,7 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17059,7 +17059,7 @@ recursive_directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -2378,7 +2373,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 +@@ -17650,7 +17650,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin \begin{itemdescr} \pnum \effects @@ -2387,7 +2382,7 @@ index 3f925b2b..f89a4754 100644 \pnum \ensures -@@ -17693,7 +17693,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, +@@ -17726,7 +17726,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, \begin{itemdescr} \pnum \effects @@ -2396,7 +2391,7 @@ index 3f925b2b..f89a4754 100644 \pnum \ensures -@@ -17726,7 +17726,7 @@ path filesystem::current_path(error_code& ec); +@@ -17759,7 +17759,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 +2400,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; +@@ -17790,7 +17790,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; \begin{itemdescr} \pnum \effects @@ -2414,7 +2409,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}. +@@ -17901,7 +17901,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 +2418,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, +@@ -18283,7 +18283,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,7 +2428,7 @@ index 3f925b2b..f89a4754 100644 \pnum \throws diff --git a/source/iterators.tex b/source/iterators.tex -index e073c001..6078fec7 100644 +index e0116c79..7acd9d21 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -729,7 +729,7 @@ is undefined. @@ -2445,7 +2440,7 @@ index e073c001..6078fec7 100644 if all operations provided to meet iterator category requirements are constexpr functions. \begin{note} -@@ -6849,7 +6849,7 @@ ostream_iterator& operator++(int); +@@ -6853,7 +6853,7 @@ ostream_iterator& operator++(int); The class template \tcode{istreambuf_iterator} @@ -2454,7 +2449,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; +@@ -6978,7 +6978,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; Initializes \tcode{sbuf_} with \keyword{nullptr}. \end{itemdescr} @@ -2462,7 +2457,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; +@@ -6990,7 +6989,6 @@ istreambuf_iterator(istream_type& s) noexcept; Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2470,7 +2465,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; +@@ -7002,7 +7000,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; Initializes \tcode{sbuf_} with \tcode{s}. \end{itemdescr} @@ -2478,7 +2473,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. +@@ -7153,7 +7150,6 @@ is not a null pointer. Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2487,7 +2482,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 7c818101..dad2c6a2 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2501,18 +2496,18 @@ 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. +@@ -39,8 +39,8 @@ if any, is + called a \defnadj{preprocessing}{translation unit}. + \begin{note} + A \Cpp{} program need not all be translated at the same time. +-Translation units can be separately translated and then later linked +-to produce an executable program\iref{basic.link}. ++Translation units can be separately 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}{}@) +@@ -2294,7 +2294,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 +2517,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 7d6d3012..9c2a79b8 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2534,7 +2529,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}. +@@ -524,8 +524,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 +2540,7 @@ index ea7a21b7..10076632 100644 \rSec3[expos.only.entity]{Exposition-only entities, etc.} -@@ -641,7 +641,7 @@ and \ref{depr} are +@@ -647,7 +647,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 +2549,7 @@ index ea7a21b7..10076632 100644 \indextext{type!enumerated}% \pnum -@@ -767,7 +767,7 @@ locale. +@@ -773,7 +773,7 @@ locale. \item A \defn{character sequence} @@ -2563,7 +2558,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. +@@ -954,7 +954,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 +2567,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 +@@ -1367,10 +1367,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 +2580,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. +@@ -1688,8 +1688,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 +2591,7 @@ index ea7a21b7..10076632 100644 \rSec3[using.headers]{Headers} -@@ -1724,7 +1724,7 @@ declared in that header. No diagnostic is required. +@@ -1732,7 +1732,7 @@ declared in that header. No diagnostic is required. \rSec3[using.linkage]{Linkage} \pnum @@ -2605,7 +2600,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. +@@ -1766,8 +1766,8 @@ the program prior to program startup. \indextext{startup!program}% \pnum See also @@ -2616,7 +2611,7 @@ index ea7a21b7..10076632 100644 \rSec2[utility.requirements]{Requirements on types and expressions} -@@ -1807,7 +1807,7 @@ rvalue of type \tcode{const T}. +@@ -1815,7 +1815,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 @@ -2625,7 +2620,7 @@ index ea7a21b7..10076632 100644 \begin{oldconcepttable}{EqualityComparable}{}{cpp17.equalitycomparable} {x{1in}x{1in}p{3in}} -@@ -1933,13 +1933,13 @@ evaluated in the context described below, and +@@ -1941,13 +1941,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 +2637,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 +@@ -2050,8 +2050,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in \end{note} \pnum @@ -2654,7 +2649,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 +@@ -2154,7 +2155,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 +2658,7 @@ index ea7a21b7..10076632 100644 allocators. \pnum -@@ -2970,7 +2971,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, +@@ -2978,7 +2979,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 +2667,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: +@@ -2989,11 +2990,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 +2683,7 @@ index ea7a21b7..10076632 100644 \rSec3[namespace.constraints]{Namespace use} -@@ -3378,7 +3379,7 @@ are reserved for use by \Cpp{} implementations. +@@ -3396,7 +3397,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 +2692,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 +@@ -3567,7 +3568,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 +2701,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 +@@ -3633,7 +3634,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 +2710,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. +@@ -3661,7 +3662,7 @@ explicitly stated otherwise. It is unspecified whether any non-member functions in the \Cpp{} standard library are defined as @@ -2724,7 +2719,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 +@@ -3689,7 +3690,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 +2728,7 @@ index ea7a21b7..10076632 100644 \effects \begin{codeblock} -@@ -3686,7 +3687,7 @@ return *this; +@@ -3704,7 +3705,7 @@ return *this; \pnum It is unspecified whether any member functions in the \Cpp{} standard library are defined as @@ -2742,7 +2737,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. +@@ -3783,8 +3784,8 @@ library may be recursively reentered. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -2753,7 +2748,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. +@@ -3827,7 +3828,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 +2757,7 @@ index ea7a21b7..10076632 100644 \pnum \begin{note} -@@ -3938,7 +3939,7 @@ potentially-throwing exception specification} exceptions. +@@ -3956,7 +3957,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,15 +2766,6 @@ 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 --- a/source/limits.tex @@ -2794,10 +2780,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 da32b9a2..e0a5e89d 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,7 +2794,7 @@ 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: +@@ -1566,21 +1566,21 @@ the effect of instantiating a template: is undefined unless the corresponding template argument is cv-unqualified and meets the requirements @@ -2833,7 +2819,7 @@ index 529ed109..9402c55b 100644 \item that has a template type parameter named \tcode{RealType} -@@ -1703,7 +1703,7 @@ In \tref{rand.req.seedseq} and throughout this subclause: +@@ -1704,7 +1704,7 @@ In \tref{rand.req.seedseq} and throughout this subclause: \endhead \tcode{S::result_type} & \tcode{T} @@ -2842,7 +2828,7 @@ index 529ed109..9402c55b 100644 of at least 32 bits. & \\ \rowsep -@@ -1868,7 +1868,7 @@ An engine's state may be established via +@@ -1869,7 +1869,7 @@ An engine's state may be established via \pnum A class \tcode{E} that meets the requirements @@ -2851,7 +2837,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: +@@ -1890,7 +1890,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 +2846,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, +@@ -2324,7 +2324,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 +2855,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}. +@@ -2356,7 +2356,7 @@ according to \ref{strings} and \ref{input.output}. \endhead \tcode{D::result_type} & \tcode{T} @@ -2878,7 +2864,7 @@ index 529ed109..9402c55b 100644 & \\ \rowsep \tcode{D::param_type} -@@ -2597,7 +2597,7 @@ reference to the type of \tcode{is}. +@@ -2598,7 +2598,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 +2873,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. +@@ -3396,7 +3396,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 +2882,7 @@ index 529ed109..9402c55b 100644 \pnum Except where specified otherwise, -@@ -4489,7 +4489,7 @@ than the output when computing $S$. +@@ -4490,7 +4490,7 @@ than the output when computing $S$. Each type instantiated from a class template specified in \ref{rand.dist} meets the requirements @@ -2905,7 +2891,7 @@ index 529ed109..9402c55b 100644 \pnum Descriptions are provided in \ref{rand.dist} -@@ -5343,6 +5343,7 @@ p(x\,|\,\alpha,\beta) = +@@ -5344,6 +5344,7 @@ p(x\,|\,\alpha,\beta) = \indexlibraryglobal{gamma_distribution}% \indexlibrarymember{result_type}{gamma_distribution}% @@ -2913,7 +2899,7 @@ index 529ed109..9402c55b 100644 \begin{codeblock} namespace std { template -@@ -5386,7 +5387,6 @@ namespace std { +@@ -5387,7 +5388,6 @@ namespace std { } \end{codeblock} @@ -2921,7 +2907,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 { +@@ -5494,7 +5494,7 @@ namespace std { \indexlibraryctor{weibull_distribution}% \begin{itemdecl} explicit weibull_distribution(RealType a, RealType b = 1.0); @@ -2930,7 +2916,7 @@ index 529ed109..9402c55b 100644 \begin{itemdescr} \pnum -@@ -5603,7 +5603,6 @@ namespace std { +@@ -5604,7 +5604,6 @@ namespace std { } \end{codeblock} @@ -2938,7 +2924,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 { +@@ -5728,7 +5727,6 @@ namespace std { } \end{codeblock} @@ -2946,7 +2932,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 { +@@ -5932,7 +5930,6 @@ namespace std { } \end{codeblock} @@ -2954,7 +2940,7 @@ index 529ed109..9402c55b 100644 \indexlibraryctor{chi_squared_distribution}% \begin{itemdecl} explicit chi_squared_distribution(RealType n); -@@ -6125,7 +6122,6 @@ namespace std { +@@ -6126,7 +6123,6 @@ namespace std { } \end{codeblock} @@ -2962,7 +2948,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 { +@@ -6229,7 +6225,6 @@ namespace std { } \end{codeblock} @@ -2970,7 +2956,7 @@ index 529ed109..9402c55b 100644 \indexlibraryctor{student_t_distribution}% \begin{itemdecl} explicit student_t_distribution(RealType n); -@@ -6344,7 +6339,7 @@ namespace std { +@@ -6345,7 +6340,7 @@ namespace std { } \end{codeblock} @@ -2979,7 +2965,7 @@ index 529ed109..9402c55b 100644 \begin{itemdecl} discrete_distribution(); \end{itemdecl} -@@ -7174,8 +7169,9 @@ additional functions and operators as follows: +@@ -7175,8 +7170,9 @@ additional functions and operators as follows: \begin{itemize} \item for every function taking a @@ -2991,7 +2977,7 @@ index 529ed109..9402c55b 100644 identical functions taking the replacement types shall be added; \item for every function taking two -@@ -7200,7 +7196,7 @@ objects. +@@ -7201,7 +7197,7 @@ objects. \pnum These library functions are permitted to throw a @@ -3000,7 +2986,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); +@@ -7361,7 +7357,7 @@ explicit valarray(size_t n); \pnum \effects Constructs a \tcode{valarray} that has length \tcode{n}. @@ -3009,7 +2995,7 @@ index 529ed109..9402c55b 100644 \end{itemdescr} \indexlibraryctor{valarray}% -@@ -7620,7 +7616,7 @@ and other techniques to generate efficient +@@ -7621,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 +3004,7 @@ index 529ed109..9402c55b 100644 that array ends, whichever happens first. \end{itemdescr} -@@ -8046,7 +8042,7 @@ places, with zero fill. +@@ -8047,7 +8043,7 @@ places, with zero fill. \pnum \begin{example} If the argument has the value $-2$, @@ -3027,7 +3013,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\&}. +@@ -9172,7 +9168,7 @@ parameter \tcode{T} and whose \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 +3022,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}, +@@ -9809,12 +9805,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 +3038,7 @@ index 529ed109..9402c55b 100644 \end{note} \pnum -@@ -9857,7 +9853,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. +@@ -9878,7 +9874,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 +3048,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 7b882855..8e2bc352 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 +3060,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 +3077,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 +3086,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 +3095,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 +3104,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 +3113,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 +@@ -954,7 +954,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 +3122,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() { +@@ -1037,10 +1037,10 @@ void B::f() { \indextext{overloading!resolution!initialization} \pnum @@ -3149,7 +3135,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 +@@ -1797,7 +1797,7 @@ Third, for \tcode{F} to be a viable function, there shall exist for each argument an @@ -3158,7 +3144,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, +@@ -1861,8 +1861,8 @@ float x = a; // ambiguous: both possibilities require conversions, \end{example} or, if not that, @@ -3169,7 +3155,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 +@@ -1992,7 +1992,7 @@ $\tcode{F}_1$ is generated from a and $\tcode{F}_2$ is not, or, if not that, \item @@ -3178,7 +3164,7 @@ index 5343a015..db9317ec 100644 and $\tcode{F}_2$ is not, or, if not that, \item -@@ -2055,7 +2055,7 @@ parameter. +@@ -2118,7 +2118,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 +3173,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 +@@ -2131,11 +2131,11 @@ well-formed implicit conversion sequence is one of the following forms: \begin{itemize} \item @@ -3202,7 +3188,7 @@ index 5343a015..db9317ec 100644 \end{itemize} \pnum -@@ -2253,10 +2253,10 @@ Each conversion in \tref{over.ics.scs} +@@ -2313,10 +2313,10 @@ Each conversion in \tref{over.ics.scs} also has an associated rank (Exact Match, Promotion, or Conversion). These are used @@ -3216,7 +3202,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 +@@ -2353,7 +2353,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 +3211,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 +@@ -2489,7 +2489,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 +3220,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 +@@ -2731,13 +2731,13 @@ When comparing the basic forms of implicit conversion sequences (as defined in~\ref{over.best.ics}) \begin{itemize} \item @@ -3252,7 +3238,7 @@ index 5343a015..db9317ec 100644 \end{itemize} \pnum -@@ -3123,7 +3123,7 @@ the left side of an assignment\iref{expr.assign}, +@@ -3183,7 +3183,7 @@ the left side of an assignment\iref{expr.assign}, \item a parameter of a function\iref{expr.call}, \item @@ -3261,7 +3247,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 +@@ -3383,8 +3383,8 @@ The operators and \tcode{[]} are formed from more than one token. @@ -3272,7 +3258,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. +@@ -3480,7 +3480,7 @@ this is not required by operator functions. \pnum \indextext{argument!overloaded operator and default}% @@ -3281,7 +3267,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. +@@ -3816,7 +3816,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,10 +3277,10 @@ index 5343a015..db9317ec 100644 and \tcode{long} diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index ee7959ab..885db47e 100644 +index 38c59533..a6fd4d0f 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex -@@ -504,7 +504,7 @@ shall not appear in any context not mentioned in this subclause. +@@ -508,7 +508,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 @@ -3303,7 +3289,7 @@ index ee7959ab..885db47e 100644 \pnum Preprocessing directives of the forms -@@ -551,8 +551,8 @@ are replaced with the \grammarterm{pp-number} +@@ -562,8 +562,8 @@ are replaced with the \grammarterm{pp-number} \tcode{0}, and then each preprocessing token is converted into a token. \begin{note} @@ -3314,7 +3300,7 @@ index ee7959ab..885db47e 100644 even when its spelling consists entirely of letters and underscores. Therefore it is not subject to this replacement. \end{note} -@@ -570,8 +570,8 @@ Thus on an +@@ -581,8 +581,8 @@ Thus on an implementation where \tcode{std::numeric_limits::max()} is \tcode{0x7FFF} and \tcode{std::numeric_limits::max()} is \tcode{0xFFFF}, the integer literal \tcode{0x8000} is signed and positive within a \tcode{\#if} @@ -3325,7 +3311,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 +@@ -2083,7 +2083,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,7 +3320,7 @@ 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}}. +@@ -2446,7 +2446,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 @@ -3344,10 +3330,10 @@ index ee7959ab..885db47e 100644 \end{description} diff --git a/source/statements.tex b/source/statements.tex -index ba75c744..9782eab7 100644 +index 18bd3aca..6bc31cb2 100644 --- a/source/statements.tex +++ b/source/statements.tex -@@ -198,7 +198,7 @@ Expression statements have the form +@@ -222,7 +222,7 @@ Expression statements have the form \end{bnf} The expression is @@ -3356,7 +3342,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}; +@@ -451,10 +451,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,7 +3356,7 @@ 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: +@@ -464,7 +464,7 @@ more case labels as follows: \keyword{case} constant-expression \terminal{:} \end{ncbnf} where the \grammarterm{constant-expression} shall be @@ -3379,7 +3365,7 @@ index ba75c744..9782eab7 100644 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. +@@ -550,7 +550,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 +3374,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. +@@ -649,7 +649,7 @@ fails. \indextext{statement!\idxcode{do}} \pnum @@ -3397,7 +3383,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. +@@ -1008,8 +1008,8 @@ Jump statements unconditionally transfer control. \indextext{local variable!destruction of}% \indextext{scope!destructor and exit from}% \begin{note} @@ -3408,7 +3394,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}; +@@ -1079,7 +1079,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 +3403,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. +@@ -1212,7 +1212,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 +3412,7 @@ index ba75c744..9782eab7 100644 \rSec1[stmt.contract.assert]{Assertion statement} -@@ -1152,8 +1152,8 @@ lx: +@@ -1323,8 +1323,8 @@ lx: \indextext{initialization!local \tcode{static}}% \indextext{initialization!local \tcode{thread_local}}% Dynamic initialization of a block variable with @@ -3437,7 +3423,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. +@@ -1367,8 +1367,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 +3435,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 cc13d13f..e943eef1 100644 --- a/source/strings.tex +++ b/source/strings.tex -@@ -5505,13 +5505,13 @@ The contents and meaning of the header \libheaderdef{cstring} +@@ -5528,13 +5528,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 +3455,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. +@@ -5546,7 +5546,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 +3463,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 f0277042..eeac4a21 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3521,7 +3507,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 +3519,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 +3527,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 +3544,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 +3553,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 +3561,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 +3573,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}. +@@ -1099,7 +1086,7 @@ the specialization on the unqualified type \tcode{T}. \pnum Non-arithmetic standard types, such as @@ -3596,7 +3582,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 +@@ -2141,7 +2128,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 +3591,7 @@ index 95d674aa..ff85b31b 100644 \end{itemdescr} \indexlibraryglobal{abort}% -@@ -2152,7 +2139,7 @@ automatic, thread, or static storage +@@ -2161,7 +2148,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 +3600,7 @@ index 95d674aa..ff85b31b 100644 \end{itemdescr} \indexlibraryglobal{atexit}% -@@ -2169,7 +2156,8 @@ The +@@ -2178,7 +2165,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 +3610,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; +@@ -2272,7 +2260,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 +3620,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 +@@ -2324,7 +2313,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s \pnum \remarks \indextext{signal-safe!\idxcode{quick_exit}}% @@ -3643,7 +3629,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); +@@ -2451,7 +2440,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3652,7 +3638,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 +@@ -2487,7 +2476,7 @@ a null pointer value, throws \tcode{bad_alloc}. \item Otherwise, the function calls the current @@ -3661,7 +3647,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); +@@ -2709,7 +2698,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3670,7 +3656,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 +@@ -3022,8 +3011,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,7 +3667,7 @@ index 95d674aa..ff85b31b 100644 \rSec2[alloc.errors]{Storage allocation errors} -@@ -3168,8 +3157,8 @@ template constexpr T* launder(T* p) noexcept; +@@ -3177,8 +3166,8 @@ template constexpr T* launder(T* p) noexcept; \pnum \expects \tcode{p} represents the address \placeholder{A} of a byte in memory. @@ -3692,7 +3678,7 @@ index 95d674aa..ff85b31b 100644 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{}. +@@ -3391,7 +3380,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. \pnum \remarks @@ -3702,7 +3688,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}. +@@ -3967,7 +3957,8 @@ the ordinary literal encoding\iref{lex.ccon}. \pnum \remarks @@ -3712,7 +3698,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. +@@ -4118,7 +4109,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 +3707,7 @@ index 95d674aa..ff85b31b 100644 \end{itemdescr} \rSec2[propagation]{Exception propagation} -@@ -4169,8 +4160,9 @@ constexpr exception_ptr current_exception() noexcept; +@@ -4181,8 +4172,9 @@ constexpr exception_ptr current_exception() noexcept; \begin{itemdescr} \pnum \returns @@ -3733,7 +3719,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; +@@ -4793,7 +4785,7 @@ template constexpr const E* end(initializer_list il) noexcept; \pnum The header \libheaderdef{compare} specifies types, objects, and functions for use primarily in connection with @@ -3742,7 +3728,7 @@ index 95d674aa..ff85b31b 100644 \indexlibraryglobal{is_eq}% \indexlibraryglobal{is_neq}% -@@ -6296,7 +6288,7 @@ environment. +@@ -6381,7 +6373,7 @@ environment. \end{note} \pnum @@ -3752,10 +3738,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 9ef3133a..3894c832 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -681,7 +681,7 @@ struct A {}; +@@ -687,7 +687,7 @@ struct A {}; \rSec1[temp.names]{Names of template specializations} \pnum @@ -3764,7 +3750,7 @@ index bf283e46..00d8fae6 100644 \grammarterm{template-id}: \begin{bnf} -@@ -973,8 +973,8 @@ specified in a +@@ -1015,8 +1015,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 +3761,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, +@@ -1181,7 +1181,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 +@@ -1747,9 +1747,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} @@ -3844,7 +3830,7 @@ index bf283e46..00d8fae6 100644 \end{note} \pnum -@@ -1782,7 +1782,7 @@ first substituted into its expression. +@@ -1826,7 +1826,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 +3839,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: +@@ -1988,11 +1988,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 +3854,7 @@ index bf283e46..00d8fae6 100644 following order: \begin{itemize} \item -@@ -2046,7 +2046,7 @@ so it does match \#2. +@@ -2089,7 +2089,7 @@ so it does match \#2. \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is @@ -3877,7 +3863,7 @@ index bf283e46..00d8fae6 100644 % \begin{itemize} \item -@@ -2055,7 +2055,7 @@ the normal form of \tcode{E}. +@@ -2098,7 +2098,7 @@ the normal form of \tcode{E}. \item The normal form of an expression \tcode{E1 || E2} is @@ -3886,7 +3872,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$. +@@ -2346,7 +2346,7 @@ the constraint of $A$ subsumes that of $B$. \end{itemize} % \begin{example} @@ -3895,7 +3881,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. +@@ -2566,7 +2566,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. \end{example} \pnum @@ -3904,7 +3890,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, +@@ -2636,8 +2636,8 @@ default arguments, \grammarterm{requires-clause}{s}, or \grammarterm{noexcept-specifier}{s}. @@ -3912,10 +3898,10 @@ index bf283e46..00d8fae6 100644 -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} + For the purpose of name lookup and instantiation, + the \grammarterm{compound-statement} of an \grammarterm{expansion-statement} + is considered a template definition. +@@ -2994,7 +2994,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 +3910,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. +@@ -3219,7 +3219,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 +3919,7 @@ index bf283e46..00d8fae6 100644 \grammarterm{identifier}. \item In a \grammarterm{pack-index-expression}; -@@ -3787,9 +3787,9 @@ primary template. +@@ -3842,9 +3842,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 +3932,7 @@ index bf283e46..00d8fae6 100644 \begin{example} \begin{codeblock} template class A { }; // \#1 -@@ -3851,14 +3851,14 @@ of the primary template. +@@ -3906,14 +3906,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 +3950,7 @@ index bf283e46..00d8fae6 100644 as the corresponding partial specialization. \item Each function template -@@ -4064,8 +4064,8 @@ void h(int* p) { +@@ -4119,8 +4119,8 @@ void h(int* p) { \end{example} \pnum @@ -3975,7 +3961,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 +@@ -4171,7 +4171,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,7 +3970,7 @@ 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 +@@ -4341,8 +4341,8 @@ function template specialization is selected to match a placement operator new\iref{basic.stc.dynamic.deallocation,expr.new}; \item @@ -3995,7 +3981,7 @@ index bf283e46..00d8fae6 100644 a function template specialization. \end{itemize} -@@ -4669,7 +4669,7 @@ A \grammarterm{concept-definition} +@@ -4735,7 +4735,7 @@ A \grammarterm{concept-definition} shall inhabit a namespace scope\iref{basic.scope.namespace}. \pnum @@ -4004,7 +3990,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 +@@ -5062,7 +5062,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 @@ -4013,7 +3999,7 @@ index bf283e46..00d8fae6 100644 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 +@@ -5315,7 +5315,7 @@ any of the expressions or \grammarterm{braced-init-list}{s} in the \grammarterm{expression-list} @@ -4022,7 +4008,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 +@@ -5375,7 +5375,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,16 +4017,16 @@ 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}. +@@ -5654,7 +5654,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} +@@ -5806,7 +5806,7 @@ see~\ref{support.types}. \end{note} \pnum @@ -4049,7 +4035,7 @@ index bf283e46..00d8fae6 100644 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 +@@ -5950,7 +5950,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} @@ -4058,7 +4044,7 @@ index bf283e46..00d8fae6 100644 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. +@@ -6173,7 +6173,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 +4052,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 +@@ -6486,7 +6486,7 @@ of type \pnum If a function declaration acquired its function type through @@ -4076,7 +4062,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} +@@ -6567,7 +6567,7 @@ X ch; // error: incomplete type \tcode{X} \end{example} \begin{note} Within a template declaration, @@ -4085,7 +4071,7 @@ index bf283e46..00d8fae6 100644 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() { +@@ -6745,7 +6745,7 @@ void x() { \end{example} \pnum @@ -4094,7 +4080,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 +@@ -7082,7 +7082,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 +4089,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}. +@@ -8147,7 +8147,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 +4098,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: +@@ -8256,8 +8256,8 @@ is not a reference type: \item If \tcode{A} @@ -4123,7 +4109,7 @@ index bf283e46..00d8fae6 100644 \tcode{A} for type deduction; otherwise, -@@ -8053,7 +8053,7 @@ otherwise, +@@ -8265,7 +8265,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -4132,7 +4118,7 @@ index bf283e46..00d8fae6 100644 of \tcode{A} for type -@@ -8149,8 +8149,8 @@ The transformed \tcode{A} +@@ -8361,8 +8361,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 +4129,7 @@ index bf283e46..00d8fae6 100644 \item If -@@ -8281,7 +8281,7 @@ void test() { +@@ -8495,7 +8495,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -4152,7 +4138,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: +@@ -8542,7 +8542,7 @@ is not a reference type: If \tcode{P} is an array type, the pointer type produced by the @@ -4161,7 +4147,7 @@ index bf283e46..00d8fae6 100644 \tcode{P} for type deduction; otherwise, -@@ -8336,7 +8336,7 @@ deduction; otherwise, +@@ -8550,7 +8550,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -4170,7 +4156,7 @@ index bf283e46..00d8fae6 100644 \tcode{P} for type deduction; otherwise, -@@ -8427,7 +8427,7 @@ after a function has been selected. +@@ -8641,7 +8641,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 +4165,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 +@@ -9157,7 +9157,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 +4174,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 +@@ -9220,7 +9220,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 +4183,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 +@@ -9514,8 +9514,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 @@ -4209,7 +4195,7 @@ index bf283e46..00d8fae6 100644 \tcode{operator new}\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 7ea4191b..4b2c5273 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4232,7 +4218,7 @@ index 1b3e2577..8a388c9f 100644 \begin{itemdecl} m.try_lock_for(rel_time) -@@ -6577,7 +6577,7 @@ namespace std { +@@ -7316,7 +7316,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -4241,7 +4227,7 @@ 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 +@@ -7360,7 +7360,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on a single mutex appears to occur in a single total order. \begin{note} This @@ -4250,7 +4236,7 @@ index 1b3e2577..8a388c9f 100644 mutex. \end{note} \begin{note} -@@ -6701,7 +6701,7 @@ in the absence of contending mutex acquisitions. +@@ -7440,7 +7440,7 @@ in the absence of contending mutex acquisitions. \pnum \sync If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations @@ -4259,7 +4245,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. +@@ -7476,7 +7476,7 @@ Releases the calling thread's ownership of the mutex. \pnum \sync @@ -4268,7 +4254,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}, +@@ -7605,9 +7605,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 @@ -4280,7 +4266,7 @@ index 1b3e2577..8a388c9f 100644 \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. +@@ -7897,7 +7897,7 @@ Releases a shared lock on the mutex held by the calling thread. \pnum \sync @@ -4289,7 +4275,7 @@ 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, +@@ -8001,7 +8001,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 @@ -4298,7 +4284,7 @@ index 1b3e2577..8a388c9f 100644 \begin{note} The shared timed mutex types meet the \oldconcept{SharedTimedLockable} requirements\iref{thread.req.lockable.shared.timed}. -@@ -7473,7 +7473,7 @@ namespace std { +@@ -8212,7 +8212,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 @@ -4307,7 +4293,7 @@ index 1b3e2577..8a388c9f 100644 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} object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} -@@ -7546,7 +7546,7 @@ namespace std { +@@ -8285,7 +8285,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 @@ -4316,7 +4302,7 @@ index 1b3e2577..8a388c9f 100644 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} object. -@@ -8703,7 +8703,7 @@ earlier returning execution. +@@ -9442,7 +9442,7 @@ earlier returning execution. \pnum \sync For any given \tcode{once_flag}: all active executions occur in a total @@ -4325,7 +4311,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. +@@ -11408,22 +11408,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4352,7 +4338,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 +@@ -11742,8 +11741,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 +4349,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 +@@ -12053,7 +12052,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 +4358,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 +@@ -12502,7 +12501,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,7 +4368,7 @@ 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 2e3e9b55..2939c865 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1222,7 +1222,7 @@ unless it meets all of the following conditions: @@ -4431,7 +4417,7 @@ index f547e5ef..6c988685 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index d3385267..d72eebe4 100644 +index 0a26e026..faf5d946 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -104,15 +104,15 @@ namespace std { @@ -4480,7 +4466,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}. +@@ -2145,7 +2145,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 +4475,7 @@ index d3385267..d72eebe4 100644 \end{itemdescr} \rSec3[tuple.assign]{Assignment} -@@ -2810,7 +2810,7 @@ template struct tuple_size; +@@ -2803,7 +2803,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 +4484,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); +@@ -6909,6 +6909,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); \rSec2[variant.monostate]{Class \tcode{monostate}}% \indexlibraryglobal{monostate}% @@ -4506,7 +4492,7 @@ index d3385267..d72eebe4 100644 \begin{itemdecl} struct monostate{}; \end{itemdecl} -@@ -6522,7 +6523,8 @@ namespace std { +@@ -7077,7 +7078,8 @@ namespace std { \end{codeblock} \pnum @@ -4520,11 +4506,11 @@ index d3385267..d72eebe4 100644 2.43.0 -From 6a179860206436f600f5af84ec4b9005e34e09eb Mon Sep 17 00:00:00 2001 +From 9c0922367d2937f1cbfade5e26da9203f9f1f307 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. +Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove + range index entry with the same key. --- source/iostreams.tex | 2 +- @@ -4532,10 +4518,10 @@ Subject: [PATCH 3/9] Fix dubious \defnx that has see{} in it, and remove range 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index f89a4754..ee7b1fc6 100644 +index a7c59c26..0804ddd3 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -13911,7 +13911,7 @@ without an intervening \grammarterm{root-directory} element. +@@ -13919,7 +13919,7 @@ without an intervening \grammarterm{root-directory} element. \pnum \indextext{path!normalization|(}% @@ -4545,10 +4531,10 @@ index f89a4754..ee7b1fc6 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index 00d8fae6..cb2c8a8e 100644 +index 3894c832..c17177bc 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -2042,7 +2042,6 @@ so it does match \#2. +@@ -2085,7 +2085,6 @@ so it does match \#2. \end{example} \rSec2[temp.constr.normal]{Constraint normalization} @@ -4556,7 +4542,7 @@ index 00d8fae6..cb2c8a8e 100644 \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. +@@ -2204,10 +2203,11 @@ whose parameter mapping is the identity mapping. \end{itemize} \pnum @@ -4573,11 +4559,11 @@ index 00d8fae6..cb2c8a8e 100644 2.43.0 -From 7fdc0e78d979cade12db47da3ae52290fbc3f8a2 Mon Sep 17 00:00:00 2001 +From 0ab03aaecca8d74ec38dd35d15a19e9651f5191e 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 - literal fragments. +Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code + and literal fragments. --- source/exceptions.tex | 4 +- @@ -4586,7 +4572,7 @@ Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and 3 files changed, 349 insertions(+), 349 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex -index 12cfcb8d..190e0ac6 100644 +index cd476d28..df489ab5 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -135,11 +135,11 @@ does not declare a variable. @@ -4604,10 +4590,10 @@ index 12cfcb8d..190e0ac6 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index aa909af0..fbd79538 100644 +index dad2c6a2..542d3f30 100644 --- a/source/lex.tex +++ b/source/lex.tex -@@ -293,43 +293,43 @@ the numerical value has no other meaning in this context. +@@ -330,43 +330,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 +4674,7 @@ index aa909af0..fbd79538 100644 \end{floattable} \pnum -@@ -569,7 +569,7 @@ given character: +@@ -603,7 +603,7 @@ given character: \item \indextext{literal!string!raw}% If the next character begins a sequence of characters that could be the prefix @@ -4697,7 +4683,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 +@@ -611,7 +611,7 @@ shall apply 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 +4692,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. +@@ -746,15 +746,15 @@ depending on the implementation. \begin{bnf} \nontermdef{pp-number}\br digit\br @@ -4730,7 +4716,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}. +@@ -1181,19 +1181,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 +4739,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}. +@@ -1224,14 +1224,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 +4758,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}. +@@ -1246,17 +1246,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 +4779,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \begin{bnf} -@@ -1244,7 +1244,7 @@ when determining the value. +@@ -1295,7 +1295,7 @@ when determining the value. \pnum The \grammarterm{hexadecimal-digit}s @@ -4802,7 +4788,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 & +@@ -1339,7 +1339,7 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4811,7 +4797,7 @@ index aa909af0..fbd79538 100644 \tcode{unsigned int} & \tcode{unsigned int}\\ & -@@ -1297,7 +1297,7 @@ none & +@@ -1348,7 +1348,7 @@ none & & \tcode{unsigned long long int} & \tcode{unsigned long long int}\\\hline @@ -4820,7 +4806,7 @@ index aa909af0..fbd79538 100644 \tcode{long int} & \tcode{long int}\\ & -@@ -1309,22 +1309,22 @@ none & +@@ -1360,22 +1360,22 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4848,7 +4834,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}. +@@ -1423,12 +1423,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 +4849,7 @@ 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}. +@@ -1479,16 +1479,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{octal-escape-sequence}\br @@ -4886,7 +4872,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \begin{bnf} -@@ -1625,42 +1625,42 @@ is supported for compatibility with \CppXIV{} and C. +@@ -1676,42 +1676,42 @@ is supported for compatibility with \CppXIV{} and C. \begin{bnf} \nontermdef{fractional-constant}\br @@ -4940,7 +4926,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \pnum -@@ -1745,8 +1745,8 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1796,8 +1796,8 @@ chosen in an \impldef{choice of larger or smaller value of \indextext{literal!string}% \begin{bnf} \nontermdef{string-literal}\br @@ -4951,7 +4937,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \begin{bnf} -@@ -1769,7 +1769,7 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1820,7 +1820,7 @@ chosen in an \impldef{choice of larger or smaller value of \begin{bnf} \nontermdef{raw-string}\br @@ -4960,7 +4946,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \begin{bnf} -@@ -1856,7 +1856,7 @@ UTF-32 & +@@ -1907,7 +1907,7 @@ UTF-32 & \pnum \indextext{literal!string!raw}% @@ -4970,7 +4956,7 @@ 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 2939c865..c37f5bba 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2200,7 +2200,7 @@ If the parse fails to decode a valid duration, @@ -5990,10 +5976,10 @@ index 6c988685..bdbef27b 100644 2.43.0 -From fd2502ad8ac71c2486a37945c222a60c4a2d6333 Mon Sep 17 00:00:00 2001 +From fdafb10b7fe732645af179694f0dde87f3b2b1f3 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 05/10] Remove more inappropriate paragraph breaks. --- source/algorithms.tex | 4 ---- @@ -6003,12 +5989,11 @@ Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. source/concepts.tex | 16 ---------------- source/containers.tex | 15 --------------- source/declarations.tex | 14 -------------- - source/exceptions.tex | 5 ----- - source/expressions.tex | 26 -------------------------- + source/exceptions.tex | 3 --- + source/expressions.tex | 25 ------------------------- 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 +6002,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, 272 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 84d18c8b..71678537 100644 +index 9f29a804..1e39d96e 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -6833,7 +6833,6 @@ but stronger than those for a partial ordering. +@@ -8704,7 +8704,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 +6022,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}, +@@ -9753,7 +9752,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 +@@ -10893,7 +10891,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 +6038,7 @@ index 84d18c8b..71678537 100644 \begin{itemize} \item With \tcode{$N$ = b - a}, for all $i$, $0 < i < N$, -@@ -11175,7 +11172,6 @@ template +@@ -13557,7 +13554,6 @@ template \pnum Some algorithms in this subclause are constrained with the following exposition-only concepts: @@ -6062,18 +6047,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 be952625..37b7b347 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -267,7 +267,6 @@ enum { up, down }; // defines \tcode{up} and \tcode{down} +@@ -284,7 +284,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). +@@ -821,7 +820,6 @@ compute equivalent values\iref{expr.eq}. \pnum For the purposes of the preceding requirements: @@ -6081,7 +6066,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}. +@@ -6105,7 +6103,6 @@ has the top-level cv-qualifier \keyword{volatile}. \pnum Every integer type has an \term{integer conversion rank} defined as follows: @@ -6090,10 +6075,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 5fa5e3b8..0b409248 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -1663,7 +1663,6 @@ for each non-static data member of +@@ -1716,7 +1716,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 +6086,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 +@@ -3337,7 +3336,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 +6094,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}. +@@ -3515,7 +3513,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 +6102,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 +@@ -5490,7 +5487,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 +6110,7 @@ index 170c2eb3..dc2b7d0f 100644 \begin{bnf} \nontermdef{ctor-initializer}\br \terminal{:} mem-initializer-list -@@ -5893,7 +5889,6 @@ public: +@@ -5961,7 +5957,6 @@ public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; \end{codeblock} @@ -6133,7 +6118,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 +@@ -6617,7 +6612,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 +6126,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} +@@ -6738,7 +6732,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 +6134,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} +@@ -6838,7 +6831,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 +6143,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 8c70dc05..b258ea47 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -2552,7 +2552,6 @@ Overspecification. +@@ -2619,7 +2619,6 @@ Overspecification. \effect The signatures of the following member functions changed from taking an \tcode{iterator} to taking a \tcode{const_iterator}: @@ -6169,7 +6154,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. +@@ -2691,7 +2690,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 +6162,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 +@@ -3771,7 +3769,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in \pnum Header \libheaderref{cstring}: The following functions have different declarations: @@ -6185,7 +6170,7 @@ index 3a4119ed..543204a0 100644 \begin{itemize} \item \tcode{strchr} \item \tcode{strpbrk} -@@ -3741,7 +3738,6 @@ Subclause \ref{cstring.syn} describes the changes. +@@ -3785,7 +3782,6 @@ Subclause \ref{cstring.syn} describes the changes. \pnum Header \libheaderref{cwchar}: The following functions have different declarations: @@ -6193,7 +6178,7 @@ index 3a4119ed..543204a0 100644 \begin{itemize} \item \tcode{wcschr} \item \tcode{wcspbrk} -@@ -3766,7 +3762,6 @@ in addition to the names declared in +@@ -3810,7 +3806,6 @@ in addition to the names declared in \pnum Header \libheaderref{cstdlib}: The following functions have different behavior: @@ -6331,7 +6316,7 @@ 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 77036c1f..e49a887b 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -685,7 +685,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6411,7 +6396,7 @@ index 9c719111..b1b1b3fb 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -24298,7 +24288,6 @@ typename A::offset_policy +@@ -24306,7 +24296,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6419,7 +6404,7 @@ index 9c719111..b1b1b3fb 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -25197,7 +25186,6 @@ the \tcode{SliceSpecifier} arguments. +@@ -25276,7 +25265,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: @@ -6427,7 +6412,7 @@ index 9c719111..b1b1b3fb 100644 \begin{itemize} \item let \tcode{index_type} be \begin{itemize} -@@ -25461,7 +25449,6 @@ $\le \tcode{src.extent($k$)}$ +@@ -25540,7 +25528,6 @@ $\le \tcode{src.extent($k$)}$ \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: @@ -6435,7 +6420,7 @@ index 9c719111..b1b1b3fb 100644 \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 +@@ -25551,7 +25538,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: @@ -6443,7 +6428,7 @@ index 9c719111..b1b1b3fb 100644 \begin{itemize} \item \tcode{Extents::static_extent($k$)} -@@ -25512,7 +25498,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that +@@ -25591,7 +25577,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: @@ -6452,10 +6437,10 @@ index 9c719111..b1b1b3fb 100644 \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 4951f281..ad9508aa 100644 --- a/source/declarations.tex +++ b/source/declarations.tex -@@ -1557,7 +1557,6 @@ a partial specialization\iref{temp.spec.partial}, +@@ -1593,7 +1593,6 @@ a partial specialization\iref{temp.spec.partial}, an explicit instantiation\iref{temp.explicit}, or it has one of the following forms: @@ -6463,7 +6448,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. +@@ -2491,7 +2490,6 @@ the \grammarterm{declarator} declares a function. \pnum Declarators have the syntax @@ -6471,7 +6456,7 @@ index 1af3ee51..b27354dd 100644 \begin{bnf} \nontermdef{declarator}\br ptr-declarator\br -@@ -4294,7 +4292,6 @@ In the following code, +@@ -4398,7 +4396,6 @@ In the following code, \tcode{g} will be called with the value \tcode{f(2)}: @@ -6479,7 +6464,7 @@ index 1af3ee51..b27354dd 100644 \begin{codeblock} int a = 1; int f(int); -@@ -4953,7 +4950,6 @@ To +@@ -5068,7 +5065,6 @@ To an object of type \tcode{T} means: @@ -6487,7 +6472,7 @@ index 1af3ee51..b27354dd 100644 \begin{itemize} \item If -@@ -5152,7 +5148,6 @@ is sequenced before those associated with +@@ -5271,7 +5267,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 +6480,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. +@@ -6183,7 +6178,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 +6488,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 +@@ -6651,7 +6645,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -6511,7 +6496,7 @@ index 1af3ee51..b27354dd 100644 \end{itemize} \pnum -@@ -7611,7 +7604,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, +@@ -7734,7 +7727,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, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -6519,7 +6504,7 @@ index 1af3ee51..b27354dd 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7743,7 +7735,6 @@ struct S { +@@ -7866,7 +7858,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6527,7 +6512,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 +@@ -7963,7 +7954,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6535,15 +6520,15 @@ index 1af3ee51..b27354dd 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8295,7 +8285,6 @@ void h() { +@@ -8422,7 +8412,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 +@@ -8596,7 +8585,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 +6536,7 @@ index 1af3ee51..b27354dd 100644 \begin{codeblock} namespace A { class X { }; -@@ -9003,7 +8991,6 @@ otherwise identical. +@@ -9149,7 +9137,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 +6544,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 +@@ -10018,7 +10005,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 +6553,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 df489ab5..17fe2711 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -89,7 +89,6 @@ void f() { @@ -6592,21 +6577,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 45f82de6..0bd95225 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -462,7 +462,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied +@@ -464,7 +464,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 +6589,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. +@@ -508,7 +507,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 +6597,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. +@@ -536,7 +534,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 +6605,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} +@@ -662,7 +659,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 +6613,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 +@@ -1168,7 +1164,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 +6621,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 +@@ -1211,7 +1206,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 +6629,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} +@@ -2797,7 +2791,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 +6637,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. +@@ -3407,7 +3400,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 +6645,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}. +@@ -3419,7 +3411,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. \item If the \grammarterm{return-type-requirement} is present, then: @@ -6678,15 +6653,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}. +@@ -4502,7 +4493,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 +6661,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. +@@ -5020,7 +5010,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 +6669,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. +@@ -5452,7 +5441,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 +6677,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item \placeholder{p} is an lvalue naming the promise -@@ -5562,7 +5549,6 @@ and +@@ -5833,7 +5821,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 +6685,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; +@@ -6185,7 +6172,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 +6693,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. +@@ -6263,7 +6249,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,7 +6701,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 { +@@ -6352,7 +6337,6 @@ struct S { S* p = new (0) S; // error: non-placement deallocation function matches // placement allocation function \end{codeblock} @@ -6742,7 +6709,7 @@ index 13e2526b..61ca8c1d 100644 \end{example} \pnum -@@ -6201,7 +6184,6 @@ of their constructor; see~\ref{class.base.init}). +@@ -6472,7 +6456,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 +6717,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 +@@ -7322,7 +7305,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 +6725,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 +@@ -7477,7 +7459,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 +6733,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 +@@ -7490,7 +7471,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 +6741,7 @@ index 13e2526b..61ca8c1d 100644 \end{itemize} \pnum -@@ -7055,7 +7034,6 @@ If at least one of the converted operands is a pointer, +@@ -7552,7 +7532,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 +6749,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} +@@ -7582,7 +7561,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 +6757,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 +@@ -7868,7 +7846,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 +6765,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. +@@ -7947,7 +7924,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 +6773,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. +@@ -7977,7 +7953,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 +6782,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 4c6942b4..04969113 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 +6793,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 +6801,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 +6809,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: +@@ -640,7 +637,6 @@ with a member typedef \tcode{type} that names the following type: \pnum The header \libheaderrefx{iterator}{iterator.synopsis} has the following addition: @@ -6850,7 +6817,7 @@ index 49c04f21..ddaaf96d 100644 \indexlibraryglobal{iterator}% \begin{codeblock} namespace std { -@@ -659,7 +655,6 @@ only to callers of that class. +@@ -674,7 +670,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 +6825,7 @@ index 49c04f21..ddaaf96d 100644 \begin{codeblock} class MyIterator : public iterator { -@@ -673,7 +668,6 @@ class MyIterator : +@@ -688,7 +683,6 @@ class MyIterator : \pnum The following member is declared in addition to those members specified in \ref{move.iter.elem}: @@ -6866,7 +6833,7 @@ index 49c04f21..ddaaf96d 100644 \begin{codeblock} namespace std { template -@@ -766,7 +760,6 @@ Equivalent to: \tcode{return visit(std::forward(vis), arg.value);} +@@ -798,7 +792,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 +6841,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. +@@ -918,7 +911,6 @@ std::string generic_string() const; \pnum The header \libheaderrefx{atomic}{atomics.syn} has the following additions. @@ -6883,10 +6850,10 @@ index 49c04f21..ddaaf96d 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index ee7b1fc6..f01c8ec2 100644 +index 0804ddd3..2bcd6f9a 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -2108,14 +2108,12 @@ does nothing. +@@ -2102,14 +2102,12 @@ does nothing. Otherwise assigns to the member objects of \tcode{*this} the corresponding member objects of \tcode{rhs} as follows: @@ -6901,7 +6868,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 +@@ -7222,7 +7220,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 +6876,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 +@@ -7261,7 +7258,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 +6884,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 +@@ -7307,7 +7303,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 +6892,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} void f(ios_base& str, int base) { // set \tcode{basefield} -@@ -7339,7 +7334,6 @@ then the expression +@@ -7350,7 +7345,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 +6900,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} template void f(basic_ios& str, charT c) { -@@ -7380,7 +7374,6 @@ then the expression +@@ -7391,7 +7385,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 +6908,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} void f(ios_base& str, int n) { // set precision -@@ -7426,7 +7419,6 @@ then the expression +@@ -7437,7 +7430,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 +6916,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 +@@ -7487,7 +7479,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 +6924,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 +@@ -7526,7 +7517,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 +6932,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 +@@ -7562,7 +7552,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 +6940,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 +@@ -7601,7 +7590,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,7 +6948,7 @@ 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 +@@ -11429,7 +11417,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: @@ -6989,7 +6956,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} char extern_buf[XSIZE]; char* extern_end; -@@ -13912,7 +13899,6 @@ without an intervening \grammarterm{root-directory} element. +@@ -13920,7 +13907,6 @@ without an intervening \grammarterm{root-directory} element. \pnum \indextext{path!normalization|(}% \defnx{Normalization}{normalization!path} of a generic format pathname means: @@ -6997,7 +6964,7 @@ index ee7b1fc6..f01c8ec2 100644 \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); +@@ -17061,7 +17047,6 @@ recursive_directory_iterator& increment(error_code& ec); As specified for the prefix increment operation of \link{Input iterators}{input.iterators}, except that: @@ -7006,7 +6973,7 @@ 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 7acd9d21..85213808 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -948,7 +948,6 @@ may be defined as \keyword{void}. @@ -7025,7 +6992,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 +@@ -1153,7 +1151,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 +7000,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 { +@@ -2793,7 +2790,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 +7008,7 @@ index 6078fec7..d022554d 100644 \begin{codeblock} template struct iterator_traits> { using iterator_category = bidirectional_iterator_tag; -@@ -2813,7 +2809,6 @@ If +@@ -2811,7 +2807,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 +7016,7 @@ index 6078fec7..d022554d 100644 \begin{codeblock} template inline void -@@ -3394,7 +3389,6 @@ As if by: +@@ -3398,7 +3393,6 @@ As if by: Iterator tmp = current; return *--tmp; \end{codeblock} @@ -7057,7 +7024,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 +@@ -4780,7 +4774,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 +7032,7 @@ index 6078fec7..d022554d 100644 \end{example} \rSec3[move.iterator]{Class template \tcode{move_iterator}} -@@ -6495,7 +6488,6 @@ partial_sum(istream_iterator(cin), +@@ -6499,7 +6492,6 @@ partial_sum(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "@\textbackslash@n")); \end{codeblock} @@ -7073,20 +7040,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 9c2a79b8..2b281173 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 +7092,7 @@ index 10076632..6effcd33 100644 \begin{itemize} \item \constraints -@@ -613,7 +607,6 @@ values\iref{basic.fundamental}. +@@ -619,7 +613,6 @@ values\iref{basic.fundamental}. \pnum The enumerated type \tcode{\placeholder{enumerated}} can be written: @@ -7145,7 +7100,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 +@@ -652,7 +645,6 @@ or as a \pnum The bitmask type \tcode{\placeholder{bitmask}} can be written: @@ -7153,7 +7108,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 +@@ -729,7 +721,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 +7116,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, +@@ -965,7 +956,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 +7124,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 +@@ -1932,7 +1922,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 +7132,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 +@@ -2938,7 +2927,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 +7140,7 @@ index 10076632..6effcd33 100644 \begin{codeblock} template struct SimpleAllocator { -@@ -3404,13 +3392,11 @@ the description of function semantics apply +@@ -3422,13 +3410,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 +7154,7 @@ index 10076632..6effcd33 100644 \begin{itemize} \item \tcode{terminate_handler} -@@ -3431,7 +3417,6 @@ Exception handling. +@@ -3449,7 +3435,6 @@ Exception handling. \pnum A \Cpp{} program can get a pointer to the current handler function by calling the following functions: @@ -7207,7 +7162,7 @@ index 10076632..6effcd33 100644 \begin{itemize} \item \indexlibraryglobal{get_new_handler}% -@@ -3457,7 +3442,6 @@ on the implementation. +@@ -3475,7 +3460,6 @@ on the implementation. \pnum In particular, the behavior is undefined in the following cases: @@ -7215,7 +7170,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 +@@ -3760,7 +3744,6 @@ functions or constructors an implementation shall provide corresponding definiti \indextext{stable algorithm}% When the requirements for an algorithm state that it is ``stable'' without further elaboration, it means: @@ -7234,10 +7189,10 @@ index efd4eb00..12180661 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index d4451b02..add15a22 100644 +index afb0ae18..768a50eb 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1455,7 +1455,6 @@ when considered as an unevaluated operand. +@@ -1571,7 +1571,6 @@ when considered as an unevaluated operand. \pnum Let \exposid{pair-constructor} be an exposition-only class defined as follows: @@ -7245,7 +7200,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); +@@ -3706,7 +3705,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,10 +7209,10 @@ 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 b9d9144c..c30353cd 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -1623,7 +1623,6 @@ is_base_of_v // \tcode{false} +@@ -1943,7 +1943,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 well-formed, including any implicit conversions to the return type of the function: @@ -7265,7 +7220,7 @@ index 9484e79a..cd75eee5 100644 \begin{codeblock} To test() { return declval(); -@@ -2105,7 +2104,6 @@ If any of the types computed above is ill-formed, then +@@ -2451,7 +2450,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: @@ -7274,10 +7229,10 @@ index 9484e79a..cd75eee5 100644 \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 e0a5e89d..b46401da 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 +7240,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 +7248,7 @@ index 9402c55b..c37ff4f3 100644 \begin{codeblock} basic_ostringstream s; s.flags(o.flags()); -@@ -4276,7 +4274,6 @@ template +@@ -4277,7 +4275,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 +7256,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 +7264,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 +7272,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 +7280,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 +7288,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 +7297,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 8e2bc352..f94e7c05 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 +7308,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 +7316,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 +@@ -1014,7 +1012,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 +7324,7 @@ index db9317ec..d6a68599 100644 \begin{codeblock} struct A { }; void operator + (A, A); -@@ -1060,7 +1057,6 @@ Assuming that +@@ -1076,7 +1073,6 @@ Assuming that \tcode{T} a class type, the candidate functions are selected as follows: @@ -7377,7 +7332,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. +@@ -1122,7 +1118,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 +7340,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 +@@ -1194,7 +1189,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 +7348,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}. +@@ -1276,7 +1270,6 @@ called the \defn{copy deduction candidate}. For each \grammarterm{deduction-guide}, a function or function template with the following properties: @@ -7401,7 +7356,7 @@ index db9317ec..d6a68599 100644 \begin{itemize} \item The \grammarterm{template-head}, if any, -@@ -2684,7 +2677,6 @@ sequence}{over.ics.ellipsis}. +@@ -2744,7 +2737,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 +7364,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} $ +@@ -2976,7 +2968,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 +7372,7 @@ index db9317ec..d6a68599 100644 \end{itemize} \pnum -@@ -2925,7 +2916,6 @@ better conversion than a Promotion, which is a better conversion than +@@ -2985,7 +2976,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 +7380,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}. +@@ -4152,7 +4142,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,7 +7389,7 @@ 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 a6fd4d0f..da2270a0 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -183,7 +183,6 @@ begins with the first character in the source file @@ -7445,7 +7400,7 @@ index 885db47e..2d3e5cb6 100644 \begin{itemize} \item a \tcode{\#} preprocessing token, or -@@ -645,7 +644,6 @@ including within a preprocessing directive. +@@ -656,7 +655,6 @@ including within a preprocessing directive. \begin{example} This demonstrates a way to include a library \tcode{optional} facility only if it is available: @@ -7453,7 +7408,7 @@ index 885db47e..2d3e5cb6 100644 \begin{codeblock} #if __has_include() # include -@@ -804,14 +802,12 @@ However, using the \tcode{< >} form for headers provided +@@ -813,14 +811,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 +7423,7 @@ index 885db47e..2d3e5cb6 100644 \end{note} \pnum -@@ -819,7 +815,6 @@ achieves wider portability. For instance: +@@ -828,7 +824,6 @@ achieves wider portability. For instance: This illustrates macro-replaced \tcode{\#include} directives: @@ -7476,7 +7431,7 @@ index 885db47e..2d3e5cb6 100644 \begin{codeblock} #if VERSION == 1 #define INCFILE "vers1.h" -@@ -1895,7 +1890,6 @@ is optional. +@@ -1937,7 +1932,6 @@ is optional. \pnum \begin{example} In the following fragment: @@ -7484,7 +7439,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";} +@@ -1947,7 +1941,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";} \end{codeblock} The expansion produces, at various stages: @@ -7492,7 +7447,7 @@ index 885db47e..2d3e5cb6 100644 \begin{codeblock} join(x, y) in_between(x hash_hash y) -@@ -2135,7 +2128,6 @@ has no effect. +@@ -2179,7 +2172,6 @@ has no effect. \pnum The following macro names shall be defined by the implementation: @@ -7500,7 +7455,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 +@@ -2412,7 +2404,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,7 +7463,7 @@ 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}}. +@@ -2447,7 +2438,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 can have more than one \link{thread of execution}{intro.multithread}. @@ -7517,10 +7472,10 @@ index 885db47e..2d3e5cb6 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index c16eba7f..24fc04eb 100644 +index 2a606adf..8b0f4e38 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 +7483,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 +7491,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 +7499,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 +7507,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 +7515,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 +7523,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 +7531,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 +7539,7 @@ index c16eba7f..24fc04eb 100644 \begin{codeblock} template concept @\defexposconceptnc{simple-view}@ = // \expos -@@ -5852,7 +5844,6 @@ If \tcode{decltype((F))} does not model +@@ -5886,7 +5878,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 +7547,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{T} is a specialization -@@ -5873,7 +5864,6 @@ then +@@ -5907,7 +5898,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 +7555,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 +@@ -6369,7 +6359,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 +7563,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 +@@ -7445,7 +7434,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 +7571,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. +@@ -9744,7 +9732,6 @@ appears in the immediate context of a template instantiation. \end{note} Otherwise, \tcode{views::counted(E, F)} is expression-equivalent to: @@ -7625,10 +7580,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 6bc31cb2..4426fbf0 100644 --- a/source/statements.tex +++ b/source/statements.tex -@@ -719,7 +719,6 @@ exposition only; and +@@ -730,7 +730,6 @@ exposition only; and \item \exposid{begin-expr} and \exposid{end-expr} are determined as follows: @@ -7636,27 +7591,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 eeac4a21..e360471d 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -2450,7 +2450,6 @@ This requirement is binding on any replacement versions of these functions. +@@ -2459,7 +2459,6 @@ This requirement is binding on any replacement versions of these functions. \pnum \default @@ -7664,7 +7603,7 @@ index ff85b31b..b67bffbb 100644 \begin{itemize} \item Executes a loop: -@@ -2929,7 +2928,6 @@ Intentionally performs no other action. +@@ -2938,7 +2937,6 @@ Intentionally performs no other action. \pnum \begin{example} This can be useful for constructing an object at a known address: @@ -7672,7 +7611,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}. +@@ -4867,7 +4865,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,7 +7619,7 @@ 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 +@@ -5816,7 +5813,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: @@ -7689,10 +7628,10 @@ index ff85b31b..b67bffbb 100644 using promise_type = typename R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index cb2c8a8e..a4582e22 100644 +index c17177bc..fc802e62 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -233,7 +233,6 @@ in some translation unit; no diagnostic is required. +@@ -235,7 +235,6 @@ in some translation unit; no diagnostic is required. The syntax for \grammarterm{template-parameter}{s} is: @@ -7700,7 +7639,7 @@ index cb2c8a8e..a4582e22 100644 \begin{bnf} \nontermdef{template-parameter}\br type-parameter\br -@@ -1525,7 +1524,6 @@ for function templates}{temp.func.order}. +@@ -1569,7 +1568,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 +7647,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} +@@ -1966,7 +1964,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 +7655,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. +@@ -1982,7 +1979,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 +7663,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: +@@ -2772,7 +2768,6 @@ public: declares three member functions of a class template. The subscript function can be defined like this: @@ -7732,7 +7671,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). +@@ -3164,7 +3159,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 +7679,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. +@@ -3768,7 +3762,6 @@ All other constant template arguments are specialized. \pnum Within the argument list of a partial specialization, the following restrictions apply: @@ -7748,7 +7687,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 {}; +@@ -3782,7 +3775,6 @@ template< int X, int (*array_ptr)[X] > class A {}; int array[5]; template< int X > class A { }; // error \end{codeblock} @@ -7756,7 +7695,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 +@@ -3908,7 +3900,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 +7703,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item Each of the two -@@ -4005,7 +3996,6 @@ A::B abci; // uses \#1 +@@ -4060,7 +4051,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 +7711,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template class Array { }; template void sort(Array&); -@@ -4060,7 +4050,6 @@ void h(int* p) { +@@ -4115,7 +4105,6 @@ void h(int* p) { } \end{codeblock} \end{minipage} @@ -7780,7 +7719,7 @@ index cb2c8a8e..a4582e22 100644 \end{example} \pnum -@@ -4246,7 +4235,6 @@ to guarantee that functionally equivalent declarations will be treated +@@ -4301,7 +4290,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 +7727,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 +@@ -4394,7 +4382,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 +7735,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> +@@ -4650,7 +4637,6 @@ template class TT> void g(TT>); g(v); // OK, \tcode{TT} = \tcode{vector} \end{codeblock} @@ -7804,7 +7743,7 @@ index cb2c8a8e..a4582e22 100644 \end{example} \pnum -@@ -5434,7 +5420,6 @@ of a class that is the current instantiation. +@@ -5516,7 +5502,6 @@ of a class that is the current instantiation. \pnum A qualified name\iref{basic.lookup.qual} is dependent if @@ -7812,7 +7751,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item it is a \grammarterm{conversion-function-id} -@@ -5671,7 +5656,6 @@ specified by the +@@ -5765,7 +5750,6 @@ specified by the or \grammarterm{new-type-id} is dependent, even if any subexpression is type-dependent: @@ -7820,7 +7759,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 +@@ -5783,7 +5767,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 +7767,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 +@@ -5888,7 +5871,6 @@ Expressions of the following form are value-dependent if the is type-dependent or the \grammarterm{type-id} is dependent: @@ -7836,7 +7775,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} +@@ -5916,7 +5898,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 +7783,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 +@@ -5931,7 +5912,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following form are value-dependent: @@ -7852,7 +7791,7 @@ index cb2c8a8e..a4582e22 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -6724,7 +6704,6 @@ template. +@@ -6935,7 +6915,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -7860,7 +7799,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. +@@ -7410,7 +7389,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 +7807,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 +@@ -7669,7 +7647,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 +7815,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) { +@@ -8251,7 +8228,6 @@ void h(int x, float& y) { If \tcode{P} is not a reference type: @@ -7884,7 +7823,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item If -@@ -8134,7 +8110,6 @@ the type +@@ -8346,7 +8322,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -7892,7 +7831,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 +@@ -8536,7 +8511,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 +7839,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item If -@@ -8368,7 +8342,6 @@ values that will make the deduced +@@ -8582,7 +8556,6 @@ values that will make the deduced identical to \tcode{A}. However, certain attributes of \tcode{A} may be ignored: @@ -7908,7 +7847,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. +@@ -8627,7 +8600,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 +7855,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 +@@ -8655,7 +8627,6 @@ and \pnum Before the partial ordering is done, certain transformations are performed on the types used for partial ordering: @@ -7924,7 +7863,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item If -@@ -8647,7 +8618,6 @@ A given type +@@ -8861,7 +8832,6 @@ A given type \tcode{P} can be composed from a number of other types, templates, and constant template argument values: @@ -7932,7 +7871,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. +@@ -8903,7 +8873,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -7940,7 +7879,7 @@ index cb2c8a8e..a4582e22 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -8780,7 +8749,6 @@ is deduced. +@@ -8998,7 +8967,6 @@ is deduced. \begin{example} Here is an example in which different parameter/argument pairs produce inconsistent template argument deductions: @@ -7948,7 +7887,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 +@@ -9015,7 +8983,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 +7895,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -8814,7 +8781,6 @@ void r() { +@@ -9032,7 +8999,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -7964,7 +7903,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -8833,7 +8799,6 @@ void h() { +@@ -9051,7 +9017,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 +7911,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -8844,7 +8809,6 @@ void s() { +@@ -9062,7 +9027,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 +7920,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 4b2c5273..f78b53b1 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -6633,7 +6633,6 @@ and visible to other threads. +@@ -7372,7 +7372,6 @@ and visible to other threads. \pnum The expression \tcode{m.lock()} is well-formed and has the following semantics: @@ -7992,7 +7931,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -6676,7 +6675,6 @@ that a deadlock would occur. +@@ -7415,7 +7414,6 @@ that a deadlock would occur. \pnum The expression \tcode{m.try_lock()} is well-formed and has the following semantics: @@ -8000,7 +7939,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -6722,7 +6720,6 @@ Nothing. +@@ -7461,7 +7459,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -8008,7 +7947,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -6877,7 +6874,6 @@ requirements\iref{thread.req.lockable.timed}. +@@ -7616,7 +7613,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 +7955,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -6919,7 +6915,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -7658,7 +7654,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 +7963,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -7106,7 +7101,6 @@ shared lock. +@@ -7845,7 +7840,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -8032,7 +7971,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -7143,7 +7137,6 @@ The calling thread has a shared lock on the mutex. +@@ -7882,7 +7876,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 +7979,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -7168,7 +7161,6 @@ Nothing. +@@ -7907,7 +7900,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -8048,7 +7987,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -7271,7 +7263,6 @@ requirements\iref{thread.req.lockable.shared.timed}. +@@ -8010,7 +8002,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 +7995,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -7316,7 +7307,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -8055,7 +8046,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 +8003,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -9454,7 +9444,6 @@ template +@@ -10193,7 +10183,6 @@ template \begin{itemdescr} \pnum \effects @@ -8072,7 +8011,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -10865,7 +10854,6 @@ shared state as \tcode{*this}. +@@ -11587,7 +11576,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -8080,7 +8019,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. +@@ -11650,7 +11638,6 @@ already has a stored value or exception. \pnum \errors @@ -8088,7 +8027,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 +@@ -11990,7 +11977,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -8096,7 +8035,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 +@@ -12334,7 +12320,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8104,7 +8043,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 +@@ -12369,7 +12354,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8112,7 +8051,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 +@@ -12425,7 +12409,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,7 +8060,7 @@ 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 c37f5bba..f52ab7f4 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2074,7 +2074,6 @@ return os << s.str(); @@ -8271,7 +8210,7 @@ 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 faf5d946..b79fc8d3 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -270,7 +270,6 @@ Exchanges values stored in two locations. @@ -8282,7 +8221,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 +@@ -2221,7 +2220,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 +8229,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)}. +@@ -3159,7 +3157,6 @@ As if by \tcode{x.swap(y)}. \pnum \remarks The exception specification is equivalent to: @@ -8298,7 +8237,7 @@ index d72eebe4..171c1b2f 100644 \begin{codeblock} noexcept(x.swap(y)) \end{codeblock} -@@ -10142,7 +10139,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; +@@ -10699,7 +10696,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 +8245,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; +@@ -10724,7 +10720,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 +8253,7 @@ index d72eebe4..171c1b2f 100644 \begin{itemize} \item If \tcode{pos >= N - I}, the new value is zero; -@@ -10893,7 +10888,6 @@ namespace std { +@@ -11450,7 +11445,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 +8261,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; +@@ -14930,7 +14924,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 +8273,10 @@ index d72eebe4..171c1b2f 100644 2.43.0 -From 28f9650c9f22d94dd88610aec105f0d73e5fd8e1 Mon Sep 17 00:00:00 2001 +From 143d20fb7c38beb48e10cdfbdc6dbcbf526265ce 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 06/10] Use monospace font for code in figures. --- source/assets/figdag.dot | 8 ++++---- @@ -8481,17 +8420,17 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From ce6fc20d159a2a02d68ce6dbeaf186db5697c2d5 Mon Sep 17 00:00:00 2001 +From fca0248016250ead1b0ce7a814acea409c6e7d17 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 07/10] [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 +8448,31 @@ index 641ab63b..db586c1f 100644 2.43.0 -From 3c4fcf9e927ba196d3104396ecea1c36e30469b3 Mon Sep 17 00:00:00 2001 +From 6cecacff753d0b1b1c00c828390b1367a5529a3f 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 08/10] 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/memory.tex | 46 +++---- + source/meta.tex | 282 ++++++++++++++++++++--------------------- + source/numerics.tex | 38 +++--- 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/threads.tex | 110 ++++++++-------- + source/time.tex | 66 +++++----- + source/utilities.tex | 136 ++++++++++---------- + 15 files changed, 490 insertions(+), 498 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 71678537..9b6f07ea 100644 +index 1e39d96e..af6bebcd 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 +8519,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 +@@ -4618,10 +4618,10 @@ template \pnum \expects \tcode{Function} meets @@ -8593,7 +8532,7 @@ index 71678537..9b6f07ea 100644 \end{note} \pnum -@@ -3651,7 +3651,7 @@ template +@@ -4658,7 +4658,7 @@ template \begin{itemdescr} \pnum \expects @@ -8602,7 +8541,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -3737,10 +3737,10 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4792,10 +4792,10 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8615,7 +8554,7 @@ index 71678537..9b6f07ea 100644 \end{note} \pnum -@@ -3777,7 +3777,7 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4832,7 +4832,7 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8624,7 +8563,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -4443,7 +4443,7 @@ If +@@ -5684,7 +5684,7 @@ If \item the types of \tcode{first1}, \tcode{last1}, \tcode{first2}, and \tcode{last2} meet the @@ -8633,7 +8572,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;} +@@ -6028,7 +6028,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} \pnum \remarks @@ -8642,16 +8581,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 +@@ -7610,7 +7610,7 @@ Let $E$ be \expects For the algorithms in namespace \tcode{std}, the type of \tcode{*first} @@ -8660,16 +8590,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 +@@ -7859,7 +7859,7 @@ let $E$ be For the overloads in namespace \tcode{std}, \tcode{pred} is an equivalence relation and the type of \tcode{*first} meets @@ -8678,7 +8599,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6279,18 +6279,18 @@ let $E$ be +@@ -7989,10 +7989,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 +8610,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. +@@ -8071,7 +8071,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8711,7 +8621,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6430,10 +6430,10 @@ template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S> +@@ -8203,10 +8203,10 @@ template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S> \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -8725,7 +8635,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6574,13 +6574,13 @@ For the overload in namespace \tcode{std}: +@@ -8426,13 +8426,13 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{PopulationIterator} meets @@ -8742,7 +8652,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}: +@@ -8500,7 +8500,7 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{RandomAccessIterator} meets @@ -8751,7 +8661,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> +@@ -8561,7 +8561,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 +8670,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6754,10 +6754,10 @@ template<@\libconcept{forward_range}@ R> +@@ -8625,10 +8625,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 +8684,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. +@@ -8807,10 +8807,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8797,7 +8698,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6985,10 +6985,10 @@ for the overloads with no parameters by those names. +@@ -8875,10 +8875,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8811,7 +8712,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -7055,10 +7055,10 @@ for the overloads with no parameters by those names. +@@ -8949,10 +8949,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 +8726,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -7163,10 +7163,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. +@@ -9095,10 +9095,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8839,7 +8740,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. +@@ -9333,10 +9333,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 +8754,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -7719,7 +7719,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9716,7 +9716,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 +8763,8 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -7746,7 +7746,7 @@ Let $N = \tcode{last - first}$: - For the overload with no \tcode{ExecutionPolicy}, +@@ -9743,7 +9743,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 +8772,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$)))}. +@@ -9796,10 +9796,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 +8786,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. +@@ -10196,10 +10196,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 +8800,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -8648,10 +8648,10 @@ The range \range{first}{last - 1} +@@ -10943,10 +10943,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 +8814,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -8701,10 +8701,10 @@ The range \range{first}{last} +@@ -10996,10 +10996,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 +8828,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -8757,10 +8757,10 @@ for the overloads with no parameters by those names. +@@ -11052,10 +11052,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8950,7 +8842,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -8810,10 +8810,10 @@ The range \range{first}{last} is +@@ -11105,10 +11105,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 +8856,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -8972,7 +8972,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8984,7 +8876,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 +8896,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 +8916,7 @@ index 71678537..9b6f07ea 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9364,7 +9364,7 @@ for the overloads with no parameter \tcode{proj}. +@@ -11732,7 +11732,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 +8925,7 @@ index 71678537..9b6f07ea 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9553,7 +9553,7 @@ for overloads with no parameters by those names. +@@ -11935,7 +11935,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9042,7 +8934,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -9612,7 +9612,7 @@ for overloads with no parameters by those names. +@@ -11994,7 +11994,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9051,7 +8943,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -9931,8 +9931,8 @@ template +@@ -12313,8 +12313,8 @@ template \pnum \expects \tcode{T} meets @@ -9062,7 +8954,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}. +@@ -12436,7 +12436,7 @@ are convertible to \tcode{T}. \expects \begin{itemize} \item @@ -9071,7 +8963,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}. +@@ -13175,7 +13175,7 @@ that denotes an object of type \tcode{minus<>}. \begin{itemize} \item For the overloads with no \tcode{ExecutionPolicy}, @@ -9174,7 +9066,7 @@ 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 df926181..ffcb4e9f 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -758,9 +758,9 @@ namespace std { @@ -9240,7 +9132,7 @@ index b4b70046..b734f13a 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 251a81ab..d141246e 100644 +index c8c912f6..58cf02c5 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9279,10 +9171,10 @@ index 251a81ab..d141246e 100644 \\ \end{floattable} diff --git a/source/future.tex b/source/future.tex -index ddaaf96d..fd54144f 100644 +index 04969113..8c17e33e 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 +9183,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 +9192,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 @@ -9309,7 +9201,7 @@ index ddaaf96d..fd54144f 100644 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; +@@ -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 +9210,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 @@ -9328,10 +9220,10 @@ index ddaaf96d..fd54144f 100644 \begin{itemize} \item for the first specialization, \tcode{add_volatile_t}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index f01c8ec2..e15caea7 100644 +index 2bcd6f9a..f5f73c3b 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -1687,10 +1687,10 @@ An \tcode{fpos} type specifies file position information. +@@ -1681,10 +1681,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 +9238,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. +@@ -1692,11 +1692,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 +9255,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 { +@@ -12957,7 +12957,7 @@ namespace std { \pnum \tcode{Allocator} shall meet @@ -9372,7 +9264,7 @@ index f01c8ec2..e15caea7 100644 \pnum \begin{example} -@@ -13247,7 +13247,7 @@ unless \tcode{EcharT} is one of the encoded character types. +@@ -13250,7 +13250,7 @@ unless \tcode{EcharT} is one of the encoded character types. \pnum Template parameters named \tcode{InputIterator} shall meet the @@ -9381,7 +9273,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. +@@ -13264,7 +13264,7 @@ they are not included as permitted types. \pnum Template parameters named \tcode{Allocator} shall meet @@ -9390,7 +9282,7 @@ index f01c8ec2..e15caea7 100644 \rSec2[fs.filesystem.syn]{Header \tcode{} synopsis} -@@ -14074,7 +14074,7 @@ shall be one of: +@@ -14082,7 +14082,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 +9291,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 { +@@ -16587,7 +16587,7 @@ namespace std::filesystem { \pnum \tcode{directory_iterator} meets the @@ -9409,10 +9301,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 2b281173..d159fc9d 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}. +@@ -1862,7 +1862,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9421,7 +9313,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}. +@@ -1889,7 +1889,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9430,7 +9322,7 @@ 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}. +@@ -1903,7 +1903,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 \multicolumn{2}{|l|}{ \begin{tailnote} @@ -9439,7 +9331,7 @@ index 6effcd33..db29b7c9 100644 \end{tailnote} } \\ \end{oldconcepttable} -@@ -1974,7 +1974,7 @@ void value_swap(T&& t, U&& u) { +@@ -1982,7 +1982,7 @@ void value_swap(T&& t, U&& u) { // for rvalues and lvalues } @@ -9448,7 +9340,7 @@ index 6effcd33..db29b7c9 100644 template void lv_swap(T& t1, T& t2) { using std::swap; -@@ -2011,9 +2011,9 @@ int main() { +@@ -2019,9 +2019,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 +9353,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}. +@@ -2097,8 +2097,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 +9364,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}. +@@ -2782,7 +2782,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 +9373,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}. +@@ -2804,7 +2804,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 +9382,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}. +@@ -2826,7 +2826,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 +9391,7 @@ index 6effcd33..db29b7c9 100644 the \tcode{swap} operation shall not throw exceptions. \pnum -@@ -2848,7 +2848,7 @@ Default: \tcode{is_empty::type} +@@ -2856,7 +2856,7 @@ Default: \tcode{is_empty::type} \pnum An allocator type \tcode{X} shall meet the @@ -9508,7 +9400,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, +@@ -2864,7 +2864,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 +9410,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 768a50eb..fb24bbe3 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 +@@ -1273,7 +1273,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 +9422,7 @@ index add15a22..2d81c518 100644 \rSec2[allocator.uses]{\tcode{uses_allocator}} -@@ -1172,7 +1172,7 @@ template struct uses_allocator; +@@ -1288,7 +1288,7 @@ template struct uses_allocator; \pnum \remarks Automatically detects whether \tcode{T} has a nested \tcode{allocator_type} that @@ -9539,7 +9431,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. +@@ -2238,8 +2238,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 +9442,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. +@@ -2426,7 +2426,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 +9451,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 +9460,7 @@ index add15a22..2d81c518 100644 \pnum \begin{example} -@@ -2319,7 +2319,7 @@ constexpr unique_ptr(nullptr_t) noexcept; +@@ -2460,7 +2460,7 @@ constexpr unique_ptr(nullptr_t) noexcept; \pnum \expects @@ -9577,7 +9469,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; +@@ -2487,7 +2487,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; \pnum \expects @@ -9586,7 +9478,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 +@@ -2516,10 +2516,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 +9491,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. +@@ -2544,8 +2544,8 @@ the second constructor is defined as deleted. \begin{example} \begin{codeblock} D d; @@ -9610,7 +9502,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; +@@ -2566,7 +2566,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, @@ -9619,7 +9511,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; +@@ -2675,10 +2675,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 +9524,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 { +@@ -3576,8 +3576,8 @@ namespace std { \end{codeblock} \pnum @@ -9643,7 +9535,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. +@@ -3722,7 +3722,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 +9544,7 @@ index add15a22..2d81c518 100644 \pnum \effects -@@ -4098,7 +4098,7 @@ template +@@ -4242,7 +4242,7 @@ template \pnum \expects \tcode{A} meets @@ -9661,7 +9553,7 @@ index add15a22..2d81c518 100644 \pnum \effects -@@ -4754,8 +4754,8 @@ namespace std { +@@ -4898,8 +4898,8 @@ namespace std { \end{codeblock} \pnum @@ -9672,7 +9564,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 { +@@ -5478,7 +5478,7 @@ namespace std { \end{codeblock} \pnum @@ -9681,7 +9573,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 { +@@ -5718,7 +5718,7 @@ namespace std { \end{codeblock} \pnum @@ -9691,10 +9583,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 c30353cd..27831f74 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 +@@ -95,12 +95,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 +9602,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 +@@ -111,12 +111,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,7 +9617,7 @@ 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 { +@@ -307,17 +307,17 @@ namespace std { template struct add_cv; template @@ -9749,7 +9641,7 @@ index cd75eee5..bbe21840 100644 // \ref{meta.trans.ref}, reference modifications template struct remove_reference; -@@ -303,38 +303,38 @@ namespace std { +@@ -325,38 +325,38 @@ namespace std { template struct add_rvalue_reference; template @@ -9797,7 +9689,7 @@ index cd75eee5..bbe21840 100644 // \ref{meta.trans.other}, other transformations template struct type_identity; -@@ -352,27 +352,27 @@ namespace std { +@@ -375,29 +375,29 @@ namespace std { template struct unwrap_ref_decay; template @@ -9827,6 +9719,9 @@ index cd75eee5..bbe21840 100644 template - using @\libglobal{invoke_result_t}@ = typename invoke_result::type; + using @\libglobal{invoke_result_t}@ = typename @\libglobalref{invoke_result}@::type; + template +- using @\libglobal{apply_result_t}@ = typename apply_result::type; ++ using @\libglobal{apply_result_t}@ = typename @\libglobalref{apply_result}@::type; template - using unwrap_reference_t = typename unwrap_reference::type; + using @\libglobal{unwrap_reference_t}@ = typename @\libglobalref{unwrap_reference}@::type; @@ -9836,7 +9731,7 @@ index cd75eee5..bbe21840 100644 template using @\libglobal{void_t}@ = void; -@@ -383,206 +383,206 @@ namespace std { +@@ -408,191 +408,191 @@ namespace std { // \ref{meta.unary.cat}, primary type categories template @@ -9881,6 +9776,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 @@ -9936,6 +9834,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_consteval_only_v}@ = is_consteval_only::value; ++ constexpr bool @\libglobal{is_consteval_only_v}@ = @\libglobalref{is_consteval_only}@::value; + template constexpr bool @\libglobal{is_signed_v}@ = is_signed::value; template - constexpr bool @\libglobal{is_unsigned_v}@ = is_unsigned::value; @@ -9980,61 +9881,37 @@ 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 is_trivially_constructible_v = is_trivially_constructible::value; template - constexpr bool 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 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 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 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 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 is_nothrow_constructible_v = is_nothrow_constructible::value; template - constexpr bool 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 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; @@ -10124,9 +10001,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 is_nothrow_invocable_r_v = is_nothrow_invocable_r::value; + template +@@ -602,11 +602,11 @@ namespace std { // \ref{meta.logical}, logical operator traits template @@ -10141,7 +10018,7 @@ index cd75eee5..bbe21840 100644 // \ref{meta.member}, member relationships template -@@ -634,7 +634,7 @@ properties of a type at compile time. +@@ -916,7 +916,7 @@ properties of a type at compile time. \pnum Each of these templates shall be a @@ -10150,7 +10027,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}. +@@ -953,17 +953,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. \topline \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead @@ -10171,7 +10048,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 +@@ -1192,9 +1189,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 +10059,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 +@@ -1211,16 +1207,14 @@ A union is a class type that \tcode{T(-1) < T(0)}; otherwise, \tcode{false} & \\ \rowsep @@ -10201,7 +10078,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. +@@ -1724,7 +1718,7 @@ may be used to query properties of types at compile time. \end{libreqtab2a} \pnum @@ -10210,7 +10087,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. +@@ -1760,7 +1754,7 @@ may be used to query relationships between types at compile time. \pnum Each of these templates shall be a @@ -10219,7 +10096,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 +@@ -1774,7 +1768,7 @@ with a base characteristic of \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead \tcode{template}\br @@ -10228,7 +10105,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. +@@ -1975,7 +1969,7 @@ type to another following some predefined rule. \pnum Each of the templates in \ref{meta.trans} shall be a @@ -10237,7 +10114,7 @@ index cd75eee5..bbe21840 100644 \rSec3[meta.trans.cv]{Const-volatile modifications} -@@ -1942,16 +1936,16 @@ perform other modifications of a type. +@@ -2262,16 +2256,16 @@ perform other modifications of a type. \tcode{template\br struct \libglobal{remove_cvref};} & The member typedef \tcode{type} denotes @@ -10259,7 +10136,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. +@@ -2377,7 +2371,7 @@ argument passing. \tcode{template} \tcode{struct \libglobal{unwrap_reference};} & If \tcode{T} is @@ -10268,7 +10145,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. +@@ -2385,7 +2379,7 @@ argument passing. \tcode{template} \tcode{\libglobal{unwrap_ref_decay};} & The member typedef \tcode{type} of \tcode{unwrap_ref_decay} @@ -10277,7 +10154,7 @@ index cd75eee5..bbe21840 100644 \end{libreqtab2a} \pnum -@@ -2057,7 +2051,7 @@ when the header \tcode{}\iref{functional.syn} is included. +@@ -2403,7 +2397,7 @@ when the header \tcode{}\iref{functional.syn} is included. Let: \begin{itemize} \item \tcode{\placeholdernc{CREF}(A)} be @@ -10286,7 +10163,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: +@@ -2428,15 +2422,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 +10182,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@ { }; +@@ -2735,7 +2729,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 +10192,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 b46401da..021e5dbb 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 +10210,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}. +@@ -2025,8 +2025,8 @@ according to \ref{strings} and \ref{input.output}. \pnum \tcode{E} shall meet the @@ -10344,7 +10221,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}. +@@ -2454,8 +2454,8 @@ according to \ref{strings} and \ref{input.output}. \pnum \tcode{D} shall meet the @@ -10355,7 +10232,7 @@ index c37ff4f3..57b2e5a8 100644 \pnum The sequence of numbers -@@ -2485,10 +2485,10 @@ for convenience of exposition only. +@@ -2486,10 +2486,10 @@ for convenience of exposition only. \pnum \tcode{P} shall meet the @@ -10369,7 +10246,7 @@ index c37ff4f3..57b2e5a8 100644 \pnum For each of the constructors of \tcode{D} -@@ -4232,7 +4232,7 @@ template +@@ -4233,7 +4233,7 @@ template \pnum \expects \tcode{InputIterator} meets the @@ -10378,7 +10255,7 @@ index c37ff4f3..57b2e5a8 100644 \pnum \effects -@@ -4259,7 +4259,7 @@ template +@@ -4260,7 +4260,7 @@ template \pnum \expects \tcode{RandomAccessIterator} meets the @@ -10387,7 +10264,7 @@ index c37ff4f3..57b2e5a8 100644 and the requirements of a mutable iterator. \pnum -@@ -4372,7 +4372,7 @@ template +@@ -4373,7 +4373,7 @@ template \pnum \expects \tcode{OutputIterator} meets the @@ -10396,7 +10273,7 @@ index c37ff4f3..57b2e5a8 100644 \pnum \effects -@@ -6367,7 +6367,7 @@ double>} is \tcode{true}. +@@ -6368,7 +6368,7 @@ double>} is \tcode{true}. \pnum \expects \tcode{InputIterator} meets the @@ -10405,7 +10282,7 @@ index c37ff4f3..57b2e5a8 100644 If \tcode{firstW == lastW}, let $n = 1$ and $w_0 = 1$. Otherwise, -@@ -6565,7 +6565,7 @@ are \tcode{true}. +@@ -6566,7 +6566,7 @@ are \tcode{true}. \expects \tcode{InputIteratorB} and \tcode{InputIteratorW} each meet the @@ -10414,7 +10291,7 @@ index c37ff4f3..57b2e5a8 100644 If \tcode{firstB == lastB} or \tcode{++firstB == lastB}, let $n = 1$, -@@ -6800,7 +6800,7 @@ are \tcode{true}. +@@ -6801,7 +6801,7 @@ are \tcode{true}. \expects \tcode{InputIteratorB} and \tcode{InputIteratorW} each meet the @@ -10423,7 +10300,7 @@ index c37ff4f3..57b2e5a8 100644 If \tcode{firstB == lastB} or \tcode{++firstB == lastB}, let $n = 1$, -@@ -9146,12 +9146,12 @@ object refers. +@@ -9147,12 +9147,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 @@ -10439,7 +10316,7 @@ index c37ff4f3..57b2e5a8 100644 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 e943eef1..13b33fa6 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -238,10 +238,10 @@ using state_type = @\seebelow@; @@ -10457,7 +10334,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,10 +10344,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 e360471d..6212b511 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -3648,11 +3648,11 @@ namespace std { +@@ -3657,11 +3657,11 @@ namespace std { \pnum The type \tcode{source_location} meets the @@ -10487,7 +10364,7 @@ index b67bffbb..c11f5627 100644 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. +@@ -4123,7 +4123,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 +10373,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}. +@@ -4350,7 +4350,7 @@ Let \tcode{U} be \tcode{decay_t}. \pnum \expects @@ -10506,7 +10383,7 @@ index b67bffbb..c11f5627 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index 8c1b16d3..b16503f4 100644 +index f78b53b1..f538f650 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10569,7 +10446,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 { +@@ -4499,7 +4499,7 @@ namespace std { \indexlibraryglobal{atomic}% \pnum The template argument for \tcode{T} shall meet the @@ -10578,7 +10455,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}, +@@ -7333,11 +7333,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,7 +10469,7 @@ 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 +@@ -7606,7 +7606,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de object of an instantiation of \link{\tcode{time_point}}{time.point}. \begin{note} @@ -10601,7 +10478,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -7079,7 +7079,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally +@@ -7818,7 +7818,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,7 +10487,7 @@ 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, +@@ -7995,7 +7995,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}. \begin{note} @@ -10619,7 +10496,7 @@ index 8c1b16d3..b16503f4 100644 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 +@@ -8205,7 +8205,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} @@ -10628,7 +10505,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.basic}. \indexlibraryctor{lock_guard}% -@@ -7545,12 +7545,12 @@ object. +@@ -8284,12 +8284,12 @@ object. If \tcode{sizeof...(MutexTypes)} is one, let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. \tcode{Mutex} @@ -10643,7 +10520,7 @@ 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 +@@ -8404,17 +8404,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 lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied @@ -10667,7 +10544,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); +@@ -8464,7 +8464,7 @@ unique_lock(mutex_type& m, try_to_lock_t); \begin{itemdescr} \pnum \expects @@ -10676,7 +10553,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -7767,7 +7767,7 @@ template +@@ -8506,7 +8506,7 @@ template \pnum \expects The supplied \tcode{Mutex} type meets the @@ -10685,7 +10562,7 @@ index 8c1b16d3..b16503f4 100644 \pnum \effects -@@ -7789,7 +7789,7 @@ template +@@ -8528,7 +8528,7 @@ template \begin{itemdescr} \pnum \expects @@ -10694,7 +10571,7 @@ index 8c1b16d3..b16503f4 100644 \pnum \effects -@@ -7876,7 +7876,7 @@ bool try_lock(); +@@ -8615,7 +8615,7 @@ bool try_lock(); \begin{itemdescr} \pnum \expects @@ -10703,7 +10580,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -7915,7 +7915,7 @@ template +@@ -8654,7 +8654,7 @@ template \begin{itemdescr} \pnum \expects @@ -10712,7 +10589,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.timed}. \pnum -@@ -7954,7 +7954,7 @@ template +@@ -8693,7 +8693,7 @@ template \begin{itemdescr} \pnum \expects @@ -10721,7 +10598,7 @@ index 8c1b16d3..b16503f4 100644 \pnum \effects -@@ -8147,16 +8147,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type +@@ -8886,16 +8886,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 lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied @@ -10742,7 +10619,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -8241,7 +8241,7 @@ template +@@ -8980,7 +8980,7 @@ template \begin{itemdescr} \pnum \expects @@ -10751,7 +10628,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8265,7 +8265,7 @@ template +@@ -9004,7 +9004,7 @@ template \begin{itemdescr} \pnum \expects @@ -10760,7 +10637,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8390,7 +8390,7 @@ template +@@ -9129,7 +9129,7 @@ template \begin{itemdescr} \pnum \expects @@ -10769,7 +10646,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8430,7 +8430,7 @@ template +@@ -9169,7 +9169,7 @@ template \begin{itemdescr} \pnum \expects @@ -10778,7 +10655,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8569,7 +8569,7 @@ template int try_lock(L1&, L2&, L3&...); +@@ -9308,7 +9308,7 @@ template int try_lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10787,7 +10664,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&...); +@@ -9337,7 +9337,7 @@ template void lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10796,7 +10673,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. +@@ -10003,7 +10003,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 +10682,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.basic}. \begin{note} All of the standard -@@ -10202,24 +10202,24 @@ execute atomically. +@@ -10941,24 +10941,24 @@ execute atomically. \pnum \tcode{CompletionFunction} shall meet the @@ -10836,7 +10713,7 @@ index 8c1b16d3..b16503f4 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -10720,7 +10720,7 @@ namespace std { +@@ -11456,7 +11456,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10845,16 +10722,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 { +@@ -11788,7 +11788,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10863,7 +10731,7 @@ index 8c1b16d3..b16503f4 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -11372,7 +11372,7 @@ namespace std { +@@ -12094,7 +12094,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10872,7 +10740,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. +@@ -13032,7 +13032,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -10881,7 +10749,7 @@ index 8c1b16d3..b16503f4 100644 \pnum If \tcode{D} is trivially copyable, -@@ -12338,7 +12338,7 @@ namespace std { +@@ -13090,7 +13090,7 @@ namespace std { \pnum This class meets the requirements of @@ -10890,7 +10758,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. +@@ -13238,8 +13238,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -10901,7 +10769,7 @@ index 8c1b16d3..b16503f4 100644 \pnum \effects -@@ -12679,7 +12679,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -13431,7 +13431,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -10911,7 +10779,7 @@ 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 f52ab7f4..c0a4aaf9 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1039,13 +1039,13 @@ SI definition is a measure of the quality of implementation. @@ -11124,7 +10992,7 @@ index 39598098..ca78ddce 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index 171c1b2f..44c92b72 100644 +index b79fc8d3..76b19166 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -258,9 +258,9 @@ template @@ -11139,7 +11007,7 @@ index 171c1b2f..44c92b72 100644 requirements. \pnum -@@ -2138,7 +2138,7 @@ template +@@ -2139,7 +2139,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -11148,7 +11016,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -2768,7 +2768,7 @@ template struct tuple_size; +@@ -2761,7 +2761,7 @@ template struct tuple_size; \pnum Except where specified otherwise, all specializations of \tcode{tuple_size} meet the @@ -11157,7 +11025,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; +@@ -2802,7 +2802,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,7 +11034,7 @@ index 171c1b2f..44c92b72 100644 with a base characteristic of \begin{codeblock} integral_constant -@@ -2846,7 +2846,7 @@ template struct tuple_element; +@@ -2839,7 +2839,7 @@ template struct tuple_element; \begin{itemdescr} \pnum Let \tcode{TE} denote \tcode{tuple_element_t} of the cv-unqualified type \tcode{T}. Then @@ -11175,7 +11043,7 @@ index 171c1b2f..44c92b72 100644 with a member typedef \tcode{type} that names the type \tcode{add_const_t}. \pnum -@@ -3125,7 +3125,7 @@ template +@@ -3118,7 +3118,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -11184,16 +11052,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@); +@@ -4002,7 +4002,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11202,7 +11061,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -4055,7 +4055,7 @@ using const_iterator = @\impdef@; +@@ -4059,7 +4059,7 @@ using const_iterator = @\impdef@; \pnum These types model \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, @@ -11211,7 +11070,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 +@@ -5044,7 +5044,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 +11079,7 @@ index 171c1b2f..44c92b72 100644 \end{note} \pnum -@@ -4688,7 +4688,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5235,7 +5235,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 +11088,7 @@ index 171c1b2f..44c92b72 100644 \end{note} \pnum -@@ -5175,7 +5175,7 @@ is nested within\iref{intro.object} the +@@ -5730,7 +5730,7 @@ is nested within\iref{intro.object} the \pnum All types in \tcode{Types} shall meet @@ -11238,7 +11097,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@); +@@ -6410,7 +6410,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11247,7 +11106,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -5900,7 +5900,7 @@ template struct variant_size; +@@ -6455,7 +6455,7 @@ template struct variant_size; \begin{itemdescr} \pnum All specializations of \tcode{variant_size} meet the @@ -11256,7 +11115,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; +@@ -6468,7 +6468,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,7 +11124,7 @@ index 171c1b2f..44c92b72 100644 base characteristic of \tcode{integral_constant}. \end{itemdescr} -@@ -5933,7 +5933,7 @@ template struct variant_alternative; +@@ -6488,7 +6488,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 @@ -11274,7 +11133,7 @@ index 171c1b2f..44c92b72 100644 member typedef \tcode{type} that names the type \tcode{add_const_t}. \end{itemdescr} -@@ -6661,7 +6661,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. +@@ -7216,7 +7216,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. \pnum \expects @@ -11283,7 +11142,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -6689,7 +6689,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7244,7 +7244,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11292,7 +11151,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -6722,7 +6722,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7277,7 +7277,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11301,7 +11160,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -6807,7 +6807,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7362,7 +7362,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11310,7 +11169,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -6842,7 +6842,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7397,7 +7397,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11319,7 +11178,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -6886,7 +6886,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7441,7 +7441,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11328,7 +11187,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -7592,9 +7592,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -8147,9 +8147,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 +11199,7 @@ index 171c1b2f..44c92b72 100644 \rSec3[expected.object.cons]{Constructors} -@@ -8832,7 +8832,7 @@ template friend constexpr bool operator==(const expected& x, const T2& +@@ -9389,7 +9389,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 +11208,7 @@ index 171c1b2f..44c92b72 100644 \end{note} \pnum -@@ -8969,7 +8969,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -9526,7 +9526,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum \tcode{E} shall meet the requirements of @@ -11358,7 +11217,7 @@ index 171c1b2f..44c92b72 100644 \rSec3[expected.void.cons]{Constructors} -@@ -10994,8 +10994,8 @@ is ill-formed. +@@ -11551,8 +11551,8 @@ is ill-formed. \indextext{call wrapper}% \indextext{call wrapper!simple}% \indextext{call wrapper!forwarding}% @@ -11369,7 +11228,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. +@@ -11592,7 +11592,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 +11237,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 { +@@ -11695,7 +11695,7 @@ namespace std { \end{codeblock} \pnum @@ -11387,7 +11246,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}. +@@ -13149,7 +13149,7 @@ is \tcode{true}. \pnum \expects @@ -11396,7 +11255,7 @@ index 171c1b2f..44c92b72 100644 \pnum \returns -@@ -12678,10 +12678,10 @@ is \tcode{true}. +@@ -13235,10 +13235,10 @@ is \tcode{true}. \pnum \expects @@ -11409,7 +11268,7 @@ index 171c1b2f..44c92b72 100644 \pnum \returns -@@ -12747,7 +12747,7 @@ then \tcode{f != nullptr} is \tcode{true}. +@@ -13304,7 +13304,7 @@ then \tcode{f != nullptr} is \tcode{true}. \pnum \expects For each $\tcode{T}_i$ in \tcode{BoundArgs}, @@ -11418,7 +11277,7 @@ index 171c1b2f..44c92b72 100644 \pnum \returns -@@ -12792,7 +12792,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. +@@ -13349,7 +13349,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. \pnum Specializations of the \tcode{is_bind_expression} template shall meet @@ -11427,7 +11286,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 +@@ -13385,7 +13385,7 @@ The function template \tcode{bind} uses \pnum Specializations of the \tcode{is_placeholder} template shall meet @@ -11436,7 +11295,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$> +@@ -13435,7 +13435,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 +11304,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}. +@@ -13471,8 +13471,8 @@ the state entities of \tcode{g}. \pnum \begin{note} If all of \tcode{FD} and $\tcode{TD}_i$ meet @@ -11456,7 +11315,7 @@ index 171c1b2f..44c92b72 100644 \end{note} \end{itemdescr} -@@ -12984,13 +12984,13 @@ The number \tcode{\placeholder{M}} of placeholders is +@@ -13541,13 +13541,13 @@ The number \tcode{\placeholder{M}} of placeholders is \impldef{number of placeholders for bind expressions}. \pnum @@ -11473,7 +11332,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}. +@@ -13816,7 +13816,7 @@ Let \tcode{FD} be \tcode{decay_t}. \pnum \expects @@ -11482,7 +11341,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -13684,9 +13684,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14241,9 +14241,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11494,7 +11353,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -13736,9 +13736,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14293,9 +14293,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11506,7 +11365,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -13778,9 +13778,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14335,9 +14335,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11518,7 +11377,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -14102,8 +14102,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14659,8 +14659,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11529,7 +11388,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -14158,8 +14158,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14715,8 +14715,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11540,7 +11399,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -14204,8 +14204,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14761,8 +14761,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11551,7 +11410,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -14720,7 +14720,7 @@ provided to the function call operator. +@@ -15277,7 +15277,7 @@ provided to the function call operator. \pnum Each specialization of a class template specified in \ref{func.search} @@ -11560,7 +11419,7 @@ index 171c1b2f..44c92b72 100644 Template parameters named \begin{itemize} \item \tcode{ForwardIterator}, -@@ -14734,7 +14734,7 @@ Template parameters named +@@ -15291,7 +15291,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 +11428,7 @@ index 171c1b2f..44c92b72 100644 requirements (\tref{cpp17.hash}). \pnum -@@ -14843,9 +14843,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, +@@ -15400,9 +15400,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, \pnum \expects The value type of \tcode{RandomAccessIterator1} meets @@ -11582,7 +11441,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, +@@ -15501,8 +15501,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, \begin{itemdescr} \pnum \expects @@ -11593,7 +11452,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. +@@ -15575,7 +15575,7 @@ as the default hash function. Each specialization of \tcode{hash} is either enabled or disabled, as described below. \begin{note} @@ -11602,7 +11461,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} +@@ -15602,17 +15602,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 +11488,28 @@ index 171c1b2f..44c92b72 100644 2.43.0 -From 994f6337ccb16283db09320be852eb716809095d Mon Sep 17 00:00:00 2001 +From aaf2b011197979dbd69a8a84aba641fdfb91df6a 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 09/10] Remove awkward \linebreaks. --- source/algorithms.tex | 4 ++-- source/containers.tex | 53 +++++++++++++++++++++---------------------- - source/exec.tex | 18 +++++++-------- + source/exec.tex | 12 +++++----- 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(-) + 9 files changed, 68 insertions(+), 69 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 9b6f07ea..267f4770 100644 +index af6bebcd..45b81bf2 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -5588,7 +5588,7 @@ Let: +@@ -7076,7 +7076,7 @@ Let: \tcode{invoke(op, invoke(proj, *(first1 + (i - result))))} for unary transforms defined in namespace \tcode{ranges}; \item @@ -11659,7 +11518,7 @@ index 9b6f07ea..267f4770 100644 for binary transforms defined in namespace \tcode{ranges}. \end{itemize} \end{itemize} -@@ -11738,7 +11738,7 @@ namespace ranges { +@@ -14202,7 +14202,7 @@ namespace ranges { \pnum \constraints \tcode{is_unbounded_array_v} is \tcode{false}. @@ -11669,7 +11528,7 @@ index 9b6f07ea..267f4770 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index b1b1b3fb..6ae695de 100644 +index e49a887b..492a1a7d 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1456,7 +1456,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11788,7 +11647,7 @@ index b1b1b3fb..6ae695de 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -23202,7 +23201,7 @@ is representable as a value of type \tcode{index_type.} +@@ -23209,7 +23208,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 +11656,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 +@@ -23288,7 +23287,7 @@ template \item If \exposid{rank_} is greater than \tcode{1} and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11806,7 +11665,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}. +@@ -23356,7 +23355,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11815,7 +11674,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 +@@ -23754,7 +23753,7 @@ Implementations should not store this value if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. \begin{note} Using \tcode{extents} @@ -11824,7 +11683,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}. +@@ -23837,13 +23836,13 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -11840,7 +11699,7 @@ index b1b1b3fb..6ae695de 100644 \end{itemize} \pnum -@@ -23908,7 +23907,7 @@ template +@@ -23916,7 +23915,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11849,7 +11708,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}. +@@ -23984,7 +23983,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11858,7 +11717,7 @@ 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}, +@@ -25644,7 +25643,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 @@ -11867,7 +11726,7 @@ index b1b1b3fb..6ae695de 100644 \item otherwise, \tcode{stride($k$)}. \end{itemize} -@@ -25963,11 +25962,11 @@ is well-formed when treated as an unevaluated operand. +@@ -26042,11 +26041,11 @@ is well-formed when treated as an unevaluated operand. \begin{itemize} \item \tcode{decltype(submdspan_mapping(src.mapping(), slices...))} @@ -11881,7 +11740,7 @@ index b1b1b3fb..6ae695de 100644 is \tcode{true}. \item -@@ -25997,11 +25996,11 @@ all of the following are \tcode{true}: +@@ -26076,11 +26075,11 @@ all of the following are \tcode{true}: \item $0 \le \tcode{\exposid{first_}(slices...)}$ $\le \tcode{\exposid{last_}<$k$>(src.extents(), slices...)}$ @@ -11896,10 +11755,10 @@ index b1b1b3fb..6ae695de 100644 \item diff --git a/source/exec.tex b/source/exec.tex -index d141246e..1730edd5 100644 +index 58cf02c5..cda92c93 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -2831,7 +2831,7 @@ except that \tcode{sch} is evaluated only once. +@@ -3290,7 +3290,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}, @@ -11908,7 +11767,7 @@ index d141246e..1730edd5 100644 \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. +@@ -3670,7 +3670,7 @@ except that \tcode{sndr} is evaluated only once. \pnum Let \tcode{out_sndr} and \tcode{env} be subexpressions, let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and @@ -11917,7 +11776,7 @@ index d141246e..1730edd5 100644 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 +@@ -3812,7 +3812,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,16 +11785,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: +@@ -4117,7 +4117,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 @@ -11944,7 +11794,7 @@ index d141246e..1730edd5 100644 is \tcode{false}, then the expression \tcode{\exposid{let-cpo}.transform_env(sndr, env)} is ill-formed. -@@ -4338,7 +4338,7 @@ try { +@@ -4732,7 +4732,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -11953,7 +11803,7 @@ 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()}. +@@ -5775,7 +5775,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. \pnum For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. @@ -11962,29 +11812,11 @@ index d141246e..1730edd5 100644 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 fb24bbe3..15c181cc 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1255,7 +1255,7 @@ A \tcode{tuple} value determined as follows: +@@ -1371,7 +1371,7 @@ A \tcode{tuple} value determined as follows: \begin{itemize} \item If \tcode{uses_allocator_v, Alloc>} is \tcode{false} and @@ -11993,7 +11825,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 +@@ -4332,7 +4332,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 +11834,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) { +@@ -5567,7 +5567,7 @@ if (p) { \end{codeblock} if the expression \tcode{s.reset(static_cast(p), std::forward(args)...)} @@ -12012,10 +11844,10 @@ index 2d81c518..8c64e657 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index bbe21840..71ecd729 100644 +index 27831f74..81f32de8 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -2184,7 +2184,7 @@ present as follows: +@@ -2530,7 +2530,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 @@ -12025,10 +11857,10 @@ index bbe21840..71ecd729 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index 57b2e5a8..05ccf975 100644 +index 021e5dbb..be582f6f 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -13781,7 +13781,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. +@@ -13802,7 +13802,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -12037,7 +11869,7 @@ index 57b2e5a8..05ccf975 100644 \pnum \returns -@@ -13987,7 +13987,7 @@ template +@@ -14008,7 +14008,7 @@ template \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -12047,10 +11879,10 @@ index 57b2e5a8..05ccf975 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 24fc04eb..1705fe1a 100644 +index 8b0f4e38..fccb59d1 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 +11891,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, +@@ -3671,7 +3671,7 @@ constexpr explicit repeat_view(piecewise_construct_t, Initializes \exposid{value_} with \tcode{make_from_tuple(std::move(value_args))} and @@ -12068,7 +11900,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} +@@ -5913,7 +5913,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 +11909,7 @@ index 24fc04eb..1705fe1a 100644 except that \tcode{E} is evaluated only once. \item -@@ -6355,7 +6355,7 @@ if \tcode{T} is +@@ -6389,7 +6389,7 @@ if \tcode{T} is a specialization of \tcode{subrange} that models \libconcept{random_access_range} and \libconcept{sized_range}, then @@ -12086,7 +11918,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 +@@ -7441,7 +7441,7 @@ Let \placeholder{OUTERC} denote let \placeholder{INNERC} denote \tcode{iterator_traits<\exposid{InnerIter}>::iterator_category}, and let \placeholder{PATTERNC} denote @@ -12095,7 +11927,7 @@ index 24fc04eb..1705fe1a 100644 \item If \begin{codeblock} -@@ -7904,7 +7904,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); +@@ -7950,7 +7950,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 +11936,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: +@@ -8261,7 +8261,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: \begin{itemize} \item \tcode{forward_iterator_tag} if @@ -12113,7 +11945,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); +@@ -8481,7 +8481,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 +11954,7 @@ index 24fc04eb..1705fe1a 100644 \end{itemdescr} \indexlibrarymember{begin}{split_view} -@@ -8999,7 +8999,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. +@@ -9046,7 +9046,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. \item Otherwise, if \tcode{\exposconcept{all-forward}} is modeled, @@ -12131,7 +11963,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 +@@ -9072,14 +9072,14 @@ let \tcode{Cs} denote the pack of types \begin{itemize} \item If @@ -12149,7 +11981,7 @@ index 24fc04eb..1705fe1a 100644 \item Otherwise, if \tcode{(\libconcept{derived_from} \&\& ...)} -@@ -9484,11 +9484,11 @@ Let +@@ -9531,11 +9531,11 @@ Let %FIXME This is hard to parse. If \tcode{$i_\tcode{x}$ > $i_\tcode{y}$}, let \tcode{$d_\tcode{y}$} be @@ -12164,7 +11996,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 +@@ -9578,7 +9578,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 +12005,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: +@@ -9735,7 +9735,7 @@ is expression-equivalent to: \begin{itemize} \item If \tcode{T} models \libconcept{contiguous_iterator}, @@ -12182,7 +12014,7 @@ index 24fc04eb..1705fe1a 100644 \item Otherwise, if \tcode{T} models \libconcept{random_access_iterator}, -@@ -13353,7 +13353,7 @@ is defined as follows: +@@ -13431,7 +13431,7 @@ is defined as follows: \item If \tcode{invoke_result_t<\exposid{maybe-const}\&, \exposid{REPEAT}(range_reference_t<\exposid{Base}>, N)...>} @@ -12191,7 +12023,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{ +@@ -14542,7 +14542,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 +12033,10 @@ index 24fc04eb..1705fe1a 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index b16503f4..3f35f11a 100644 +index f538f650..39025707 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -3412,7 +3412,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, +@@ -3517,7 +3517,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 +12045,7 @@ index b16503f4..3f35f11a 100644 \pnum \effects -@@ -4420,7 +4420,7 @@ For the \tcode{volatile} overload of this function, +@@ -4792,7 +4792,7 @@ For the \tcode{volatile} overload of this function, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12222,7 +12054,7 @@ index b16503f4..3f35f11a 100644 \pnum \effects -@@ -5579,7 +5579,7 @@ bool compare_exchange_strong(shared_ptr& expected, shared_ptr desired, +@@ -6313,7 +6313,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 +12063,7 @@ index b16503f4..3f35f11a 100644 \pnum \effects -@@ -5892,7 +5892,7 @@ bool compare_exchange_strong(weak_ptr& expected, weak_ptr desired, +@@ -6629,7 +6629,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 +12073,10 @@ index b16503f4..3f35f11a 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index 44c92b72..895b43b3 100644 +index 76b19166..a53d2ff0 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -2061,7 +2061,7 @@ equals \tcode{tuple_size_v>}, +@@ -2062,7 +2062,7 @@ equals \tcode{tuple_size_v>}, \item \tcode{(is_constructible_v(std::forward(u)))> \&\& ...)} @@ -12253,7 +12085,7 @@ index 44c92b72..895b43b3 100644 \tcode{true}, and \item -@@ -3082,7 +3082,7 @@ struct basic_common_reference { +@@ -3075,7 +3075,7 @@ struct basic_common_reference { denotes a type. \end{itemize} The member \grammarterm{typedef-name} \tcode{type} denotes the type @@ -12262,7 +12094,7 @@ index 44c92b72..895b43b3 100644 \end{itemdescr} \indexlibrarymember{common_type}{tuple}% -@@ -4063,7 +4063,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and +@@ -4067,7 +4067,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and \pnum All requirements on container iterators\iref{container.reqmts} apply to @@ -12271,7 +12103,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 &&; +@@ -8975,7 +8975,7 @@ constexpr const T&& value() const &&; \pnum \mandates \tcode{is_copy_constructible_v} is \tcode{true} and @@ -12280,7 +12112,7 @@ index 44c92b72..895b43b3 100644 \pnum \returns -@@ -14432,7 +14432,7 @@ that models \libconcept{copyable}. +@@ -14989,7 +14989,7 @@ that models \libconcept{copyable}. \pnum Within \ref{func.wrap.ref}, \tcode{\placeholder{call-args}} is an argument pack with elements such that @@ -12292,3 +12124,54 @@ index 44c92b72..895b43b3 100644 -- 2.43.0 + +From 98949e2e6dd60065b463a4b2a718ad8a8b6bb118 Mon Sep 17 00:00:00 2001 +From: timsong-cpp +Date: Fri, 25 Jul 2025 00:06:14 -0500 +Subject: [PATCH 10/10] Revert "[intro] Special page header before Clause 1 + (#6070)" + +This reverts commit 0b41c12760d8079ee4c460df6ddecaf220f2dfb6. +--- + source/intro.tex | 11 ----------- + source/layout.tex | 2 +- + 2 files changed, 1 insertion(+), 12 deletions(-) + +diff --git a/source/intro.tex b/source/intro.tex +index abc66134..4d40f89b 100644 +--- a/source/intro.tex ++++ b/source/intro.tex +@@ -1,17 +1,6 @@ + %!TEX root = std.tex + +-\clearpage +-\bigskip\noindent\textlarger{\textbf{Programming languages --- \Cpp{}}} +-\bigskip\bigskip +- +-\begingroup +-\let\clearpage\relax + \rSec0[intro.scope]{Scope} +-\endgroup +-\copypagestyle{cpppageone}{cpppage} +-\makeoddhead{cpppageone}{\textbf{WORKING DRAFT}}{}{\leaders\hrule height 2pt\hfill\kern0pt\\\textbf{\docno}} +-\makeheadrule{cpppageone}{\textwidth}{2pt} +-\thispagestyle{cpppageone} + + \pnum + \indextext{scope|(}% +diff --git a/source/layout.tex b/source/layout.tex +index 98564d8b..1f82bd20 100644 +--- a/source/layout.tex ++++ b/source/layout.tex +@@ -10,7 +10,7 @@ + %%-------------------------------------------------- + %% set header and footer positions and sizes + +-\setheadfoot{3\onelineskip}{4\onelineskip} ++\setheadfoot{\onelineskip}{4\onelineskip} + \setheaderspaces{*}{2\onelineskip}{*} + + %%-------------------------------------------------- +-- +2.43.0 + diff --git a/htmlgen_code.patch b/htmlgen_code.patch new file mode 100644 index 0000000000..a500da21f6 --- /dev/null +++ b/htmlgen_code.patch @@ -0,0 +1,38 @@ +From 6c9496d048c4c3534524ea3212c780776844f025 Mon Sep 17 00:00:00 2001 +From: timsong-cpp +Date: Fri, 25 Jul 2025 09:03:35 -0500 +Subject: [PATCH] Handle \bot + +--- + RawDocument.hs | 2 +- + Render.hs | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/RawDocument.hs b/RawDocument.hs +index c1f82bc..935878c 100644 +--- a/RawDocument.hs ++++ b/RawDocument.hs +@@ -195,7 +195,7 @@ storeCmds = + "phi int theta zeta FlushAndPrintGrammar break backslash centering " ++ + "normalbaselineskip land lor mapsto normalfont textmu tablerefname figurerefname newline " ++ + "obeyspaces bnfindent vdots tabcolsep columnbreak emergencystretch commentellip " ++ +- "gamma widowpenalties sffamily parskip left right `") ++ "gamma widowpenalties sffamily parskip left right bot `") + , (1, "hspace footnote textit textrm textnormal texttt textbf ensuremath ref ref* mbox bibitem mathop " ++ + "terminal literalterminal noncxxterminal textsl textsc textsf text term overline " ++ + "tcode noncxxtcode literaltcode footnotetext microtypesetup cline mathtt mathit mathrm mathsf " ++ +diff --git a/Render.hs b/Render.hs +index 4b34cb6..2df6e74 100644 +--- a/Render.hs ++++ b/Render.hs +@@ -128,6 +128,7 @@ simpleMacros = + , (">" , " ") + , ("bnfindent" , "   ") + , ("\n" , "\n") ++ , ("bot" , "⊥") + ] + ++ [(n, Text.pack [c]) | (n, c) <- greekAlphabet] + +-- +2.43.0 + diff --git a/lastbuild.sig b/lastbuild.sig index 68ff4fcd2a..f6ca263c54 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,4 @@ htmlgen eee5307c45c04761ef5c27956cbed742e08e5fb4 -draft ac78ae76c579883a32a9eb5b00346150a41e8e47 -ee2954f9c7635674003d9c2892fb2b5776fe4f95 htmlgen.patch +draft 454ba171cb14531639e641cb1200617fbf8d943f +91135fa8481acf3787c89864b8c715e925279fbb htmlgen.patch +cc80936cb44795c5712f5b4d193389be54551403 htmlgen_code.patch From a543aa62e37b18eba67f725d11c22fa90cfd3c22 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Fri, 1 Aug 2025 02:15:12 -0500 Subject: [PATCH 02/18] Update --- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 431 ++++++++++++++++++++++++-------------------------- lastbuild.sig | 4 +- 4 files changed, 214 insertions(+), 225 deletions(-) diff --git a/draft b/draft index 454ba171cb..e4a7f6da57 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 454ba171cb14531639e641cb1200617fbf8d943f +Subproject commit e4a7f6da57891013ed378672c470970d95ea190e diff --git a/gh-pages b/gh-pages index 3583928dd9..ab5693fc2a 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 3583928dd9a445d9c9870bd565fa2db9ad21bbcf +Subproject commit ab5693fc2a7154ade14e4e7abc80c5b38a0cd7fc diff --git a/htmlgen.patch b/htmlgen.patch index 4b2137add5..6587411e6d 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From b4d8ee6d649994aafd969b8b42a1f511e00b3f48 Mon Sep 17 00:00:00 2001 +From 9a6ef05469016f4ebf7f3e5bb5c19cf6a8df4f06 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout @@ -10,7 +10,7 @@ Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index c5ad9eb0..a5e431a0 100644 +index a1b8f00c..326cf97f 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -314,7 +314,7 @@ Given @@ -59,7 +59,7 @@ index c5ad9eb0..a5e431a0 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 51ff9a3c..77878571 100644 +index edd0ad86..11dfe14b 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2924,7 +2924,7 @@ struct s2 { @@ -75,7 +75,7 @@ index 51ff9a3c..77878571 100644 2.43.0 -From d2066d5b092f42e8ebb3d97b8006c77484caaba8 Mon Sep 17 00:00:00 2001 +From 0017500dd3bb021bbe0beda5a01d682db38b6d86 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 Subject: [PATCH 02/10] Use new link macros. @@ -95,7 +95,7 @@ Subject: [PATCH 02/10] Use new link macros. source/intro.tex | 19 +-- source/iostreams.tex | 74 +++++------ source/iterators.tex | 8 +- - source/lex.tex | 10 +- + source/lex.tex | 6 +- source/lib-intro.tex | 71 +++++------ source/limits.tex | 2 +- source/numerics.tex | 60 +++++---- @@ -108,10 +108,10 @@ Subject: [PATCH 02/10] Use new link macros. source/threads.tex | 45 ++++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 609 insertions(+), 618 deletions(-) + 27 files changed, 607 insertions(+), 616 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index f4e3bec3..9f29a804 100644 +index 43aac8ff..7ded19bb 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -123,7 +123,7 @@ index f4e3bec3..9f29a804 100644 \pnum The following subclauses describe components for -@@ -10228,7 +10228,7 @@ In either case, twice as many projections as comparisons. +@@ -10222,7 +10222,7 @@ In either case, twice as many projections as comparisons. \pnum \remarks @@ -133,7 +133,7 @@ index f4e3bec3..9f29a804 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index a5e431a0..be952625 100644 +index 326cf97f..c83a9d0b 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -155,7 +155,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -1221,7 +1221,7 @@ index ba2d34d0..cd476d28 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index 77878571..45f82de6 100644 +index 11dfe14b..98aac71a 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1655,7 +1655,7 @@ index 77878571..45f82de6 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 -@@ -5619,7 +5620,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside +@@ -5622,7 +5623,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, @@ -1664,7 +1664,7 @@ index 77878571..45f82de6 100644 \grammarterm{type-id}. \indextext{type!incomplete}% The \keyword{sizeof} operator shall not be applied to an expression that -@@ -5674,7 +5675,7 @@ array-to-pointer\iref{conv.array}, and +@@ -5677,7 +5678,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, @@ -1673,7 +1673,7 @@ index 77878571..45f82de6 100644 is applied. \pnum -@@ -5819,7 +5820,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. +@@ -5822,7 +5823,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. \end{bnf} \pnum @@ -1682,7 +1682,7 @@ index 77878571..45f82de6 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 -@@ -5947,7 +5948,7 @@ is less than zero; +@@ -5950,7 +5951,7 @@ is less than zero; \item its value is such that the size of the allocated object would exceed the @@ -1691,7 +1691,7 @@ index 77878571..45f82de6 100644 \item the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} and the -@@ -5972,7 +5973,7 @@ is the null pointer value of the required result type; +@@ -5975,7 +5976,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 @@ -1700,7 +1700,7 @@ index 77878571..45f82de6 100644 \end{itemize} \end{itemize} When the value of the \grammarterm{expression} is zero, the allocation -@@ -6023,8 +6024,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( +@@ -6026,8 +6027,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 @@ -1711,7 +1711,7 @@ index 77878571..45f82de6 100644 is a non-array type, the allocation function's name is \indextext{\idxcode{operator new}}% \indextext{\idxcode{operator delete}}% -@@ -6135,7 +6136,7 @@ the difference between the +@@ -6138,7 +6139,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 @@ -1720,7 +1720,7 @@ index 77878571..45f82de6 100644 is no greater than the size of the array being created. \begin{note} \indextext{allocation!alignment storage}% -@@ -6226,7 +6227,7 @@ invocation of \keyword{new} to another. +@@ -6229,7 +6230,7 @@ invocation of \keyword{new} to another. \pnum \begin{note} Unless an allocation function has a non-throwing @@ -1729,7 +1729,7 @@ index 77878571..45f82de6 100644 it indicates failure to allocate storage by throwing a \indextext{\idxcode{bad_alloc}}% \indexlibraryglobal{bad_alloc}% -@@ -6372,8 +6373,8 @@ to both the allocation and deallocation functions. +@@ -6375,8 +6376,8 @@ to both the allocation and deallocation functions. \pnum \indextext{expression!\idxcode{delete}}% \indextext{\idxcode{delete}}% @@ -1740,7 +1740,7 @@ index 77878571..45f82de6 100644 \grammarterm{new-expression}. \begin{bnf} -@@ -6476,8 +6477,8 @@ null pointer value, then: +@@ -6479,8 +6480,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 @@ -1751,7 +1751,7 @@ index 77878571..45f82de6 100644 allocation call of the \grammarterm{new-expression} shall be passed as the first argument to the deallocation function. -@@ -7062,8 +7063,8 @@ The result of a \tcode{.*} expression +@@ -7065,8 +7066,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. @@ -1762,7 +1762,7 @@ index 77878571..45f82de6 100644 \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -7092,7 +7093,7 @@ left-to-right. +@@ -7095,7 +7096,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 @@ -1771,7 +1771,7 @@ index 77878571..45f82de6 100644 operands and determine the type of the result. \pnum -@@ -7228,7 +7229,7 @@ the behavior is undefined\iref{expr.pre}. +@@ -7231,7 +7232,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 @@ -1780,7 +1780,7 @@ index 77878571..45f82de6 100644 \begin{example} \begin{codeblock} int arr[5] = {1, 2, 3, 4, 5}; -@@ -7319,12 +7320,12 @@ and the other is not, the program is ill-formed. +@@ -7322,12 +7323,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, @@ -1795,7 +1795,7 @@ index 77878571..45f82de6 100644 other than from an integral type to a floating-point type, the program is ill-formed. -@@ -7366,13 +7367,13 @@ the other operand is of object pointer or array type, +@@ -7369,13 +7370,13 @@ the other operand is of object pointer or array type, array-to-pointer conversions\iref{conv.array}, pointer conversions\iref{conv.ptr}, and @@ -1811,7 +1811,7 @@ index 77878571..45f82de6 100644 \end{note} In this case, \tcode{p <=> q} is of type \tcode{std::strong_ordering} and -@@ -7461,7 +7462,7 @@ pointer conversions\iref{conv.ptr}, +@@ -7464,7 +7465,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring @@ -1820,7 +1820,7 @@ index 77878571..45f82de6 100644 After conversions, the operands shall have the same type. \pnum -@@ -7546,10 +7547,10 @@ same type after the specified conversions have been applied. +@@ -7549,10 +7550,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, @@ -1835,7 +1835,7 @@ index 77878571..45f82de6 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -7566,7 +7567,8 @@ the result of the comparison is unspecified. +@@ -7569,7 +7570,8 @@ the result of the comparison is unspecified. \item Otherwise, if the pointers are both null, both point to the same \indextext{address}% @@ -1845,7 +1845,7 @@ index 77878571..45f82de6 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -7611,12 +7613,12 @@ bool b1 = (bx == cx); // unspecified +@@ -7614,12 +7616,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -1860,7 +1860,7 @@ index 77878571..45f82de6 100644 indirection with a hypothetical object of the associated class type were performed, otherwise they compare unequal. \begin{example} -@@ -7856,7 +7858,7 @@ Otherwise, if the second and third operand have different types and +@@ -7859,7 +7861,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 @@ -1869,7 +1869,7 @@ index 77878571..45f82de6 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 -@@ -7898,9 +7900,9 @@ denotes the cv-qualifiers of \tcode{T1}; +@@ -7901,9 +7903,9 @@ denotes the cv-qualifiers of \tcode{T1}; \item otherwise, the target type is the type that \tcode{E2} would have after applying the @@ -1882,7 +1882,7 @@ index 77878571..45f82de6 100644 standard conversions. \end{itemize} \end{itemize} -@@ -7941,8 +7943,8 @@ are used in place of the original operands for the remainder of this +@@ -7944,8 +7946,8 @@ are used in place of the original operands for the remainder of this subclause. \pnum @@ -1893,7 +1893,7 @@ index 77878571..45f82de6 100644 performed on the second and third operands. After those conversions, one of the following shall hold: -@@ -7951,16 +7953,16 @@ of the following shall hold: +@@ -7954,16 +7956,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; @@ -1916,7 +1916,7 @@ index 77878571..45f82de6 100644 pointer type. \item One or both of the second and third operands have pointer-to-member type; -@@ -8144,7 +8146,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. +@@ -8147,7 +8149,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 @@ -1925,7 +1925,7 @@ index 77878571..45f82de6 100644 operand. \pnum -@@ -8158,7 +8160,7 @@ resulting value of the bit-field is +@@ -8161,7 +8163,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 @@ -1934,7 +1934,7 @@ index 77878571..45f82de6 100644 \pnum The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} -@@ -8230,7 +8232,7 @@ The comma operator groups left-to-right. +@@ -8233,7 +8235,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 @@ -1943,7 +1943,7 @@ index 77878571..45f82de6 100644 The left expression is sequenced before the right expression\iref{intro.execution}. \indextext{operator!side effects and comma}% -@@ -8264,7 +8266,7 @@ Certain contexts require expressions that satisfy additional +@@ -8267,7 +8269,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, @@ -1952,7 +1952,7 @@ index 77878571..45f82de6 100644 are called \indexdefn{expression!constant}% \defnx{constant expressions}{constant expression}. -@@ -8447,9 +8449,9 @@ a temporary object of non-volatile const-qualified literal type +@@ -8450,9 +8452,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 @@ -1964,7 +1964,7 @@ index 77878571..45f82de6 100644 \item a non-mutable subobject of any of the above, or \item -@@ -8540,7 +8542,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. +@@ -8543,7 +8545,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -1973,7 +1973,7 @@ index 77878571..45f82de6 100644 it is applied to \begin{itemize} \item -@@ -8562,7 +8564,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -8565,7 +8567,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 @@ -1982,7 +1982,7 @@ index 77878571..45f82de6 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -8935,7 +8937,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -8938,7 +8940,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}, @@ -1991,7 +1991,7 @@ index 77878571..45f82de6 100644 \end{note} \pnum -@@ -9436,7 +9438,7 @@ if it is: +@@ -9439,7 +9441,7 @@ if it is: a manifestly constant-evaluated expression, \item @@ -2000,7 +2000,7 @@ index 77878571..45f82de6 100644 \item an immediate subexpression of a \grammarterm{braced-init-list}, -@@ -9463,7 +9465,9 @@ A function or variable is +@@ -9466,7 +9468,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -2108,7 +2108,7 @@ index e4014b96..abc66134 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 4e61b9be..a7c59c26 100644 +index 7381d9c3..987b4d2d 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -555,7 +555,7 @@ is initialized, @@ -2482,7 +2482,7 @@ index e0116c79..7acd9d21 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index 7c818101..dad2c6a2 100644 +index 7c818101..372fc8c2 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2496,17 +2496,6 @@ index 7c818101..dad2c6a2 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 -@@ -39,8 +39,8 @@ if any, is - called a \defnadj{preprocessing}{translation unit}. - \begin{note} - A \Cpp{} program need not all be translated at the same time. --Translation units can be separately translated and then later linked --to produce an executable program\iref{basic.link}. -+Translation units can be separately translated and then later \link{linked}{basic.link} -+to produce an executable program. - \end{note} - \indextext{compilation!separate|)} - @@ -2294,7 +2294,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) \pnum If \placeholder{L} is a \grammarterm{user-defined-character-literal}, let \placeholder{ch} be the @@ -2517,7 +2506,7 @@ index 7c818101..dad2c6a2 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 7d6d3012..9c2a79b8 100644 +index c6339101..c3fcf8d5 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2780,7 +2769,7 @@ 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 da32b9a2..e0a5e89d 100644 +index 7b1f65de..4457140a 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -3330,7 +3319,7 @@ index 38c59533..a6fd4d0f 100644 \end{description} diff --git a/source/statements.tex b/source/statements.tex -index 18bd3aca..6bc31cb2 100644 +index 34018bd6..785798f7 100644 --- a/source/statements.tex +++ b/source/statements.tex @@ -222,7 +222,7 @@ Expression statements have the form @@ -3383,7 +3372,7 @@ index 18bd3aca..6bc31cb2 100644 if that conversion is ill-formed, the program is ill-formed. \pnum -@@ -1008,8 +1008,8 @@ Jump statements unconditionally transfer control. +@@ -1009,8 +1009,8 @@ Jump statements unconditionally transfer control. \indextext{local variable!destruction of}% \indextext{scope!destructor and exit from}% \begin{note} @@ -3394,7 +3383,7 @@ index 18bd3aca..6bc31cb2 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 -@@ -1079,7 +1079,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; +@@ -1080,7 +1080,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 @@ -3403,7 +3392,7 @@ index 18bd3aca..6bc31cb2 100644 \begin{note} A constructor or destructor does not have a return type. \end{note} -@@ -1212,7 +1212,7 @@ results in undefined behavior. +@@ -1213,7 +1213,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}% @@ -3412,7 +3401,7 @@ index 18bd3aca..6bc31cb2 100644 \rSec1[stmt.contract.assert]{Assertion statement} -@@ -1323,8 +1323,8 @@ lx: +@@ -1324,8 +1324,8 @@ lx: \indextext{initialization!local \tcode{static}}% \indextext{initialization!local \tcode{thread_local}}% Dynamic initialization of a block variable with @@ -3423,7 +3412,7 @@ index 18bd3aca..6bc31cb2 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 -@@ -1367,8 +1367,8 @@ will be destroyed if and only if it was constructed. +@@ -1368,8 +1368,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 @@ -3465,7 +3454,7 @@ index cc13d13f..e943eef1 100644 \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index f0277042..eeac4a21 100644 +index 19e19d6f..cee9e901 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -4195,7 +4184,7 @@ index 9ef3133a..3894c832 100644 \tcode{operator new}\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 7ea4191b..4b2c5273 100644 +index 6202596d..b2e9462e 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4311,7 +4300,7 @@ index 7ea4191b..4b2c5273 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -11408,22 +11408,21 @@ the state object. +@@ -11405,22 +11405,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4338,7 +4327,7 @@ index 7ea4191b..4b2c5273 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 -@@ -11742,8 +11741,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -11739,8 +11738,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 @@ -4349,7 +4338,7 @@ index 7ea4191b..4b2c5273 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -12053,7 +12052,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -12050,7 +12049,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 @@ -4358,7 +4347,7 @@ index 7ea4191b..4b2c5273 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -12502,7 +12501,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -12499,7 +12498,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -4506,7 +4495,7 @@ index 0a26e026..faf5d946 100644 2.43.0 -From 9c0922367d2937f1cbfade5e26da9203f9f1f307 Mon Sep 17 00:00:00 2001 +From 6ca4f417e91c75dc33c1da989c31995aaf9488af Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove @@ -4518,7 +4507,7 @@ Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index a7c59c26..0804ddd3 100644 +index 987b4d2d..8a5caca8 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -13919,7 +13919,7 @@ without an intervening \grammarterm{root-directory} element. @@ -4559,7 +4548,7 @@ index 3894c832..c17177bc 100644 2.43.0 -From 0ab03aaecca8d74ec38dd35d15a19e9651f5191e Mon Sep 17 00:00:00 2001 +From 3929c43d79a3bca6ad6d20f28703b0dfcfd12392 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code @@ -4590,7 +4579,7 @@ index cd476d28..df489ab5 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index dad2c6a2..542d3f30 100644 +index 372fc8c2..67fc8aaf 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -330,43 +330,43 @@ the numerical value has no other meaning in this context. @@ -5976,7 +5965,7 @@ index 2939c865..c37f5bba 100644 2.43.0 -From fdafb10b7fe732645af179694f0dde87f3b2b1f3 Mon Sep 17 00:00:00 2001 +From 028d09d4f951a2ba57932f1962ac9d8b9c989509 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. @@ -6011,10 +6000,10 @@ Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. 26 files changed, 272 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 9f29a804..1e39d96e 100644 +index 7ded19bb..a46b6385 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -8704,7 +8704,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: @@ -6022,7 +6011,7 @@ index 9f29a804..1e39d96e 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)} -@@ -9753,7 +9752,6 @@ Let $N = \tcode{last - first}$: +@@ -9747,7 +9746,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} @@ -6030,7 +6019,7 @@ index 9f29a804..1e39d96e 100644 \end{itemdescr} \indexlibraryglobal{stable_partition}% -@@ -10893,7 +10891,6 @@ A random access range \range{a}{b} is a +@@ -10882,7 +10880,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: @@ -6038,7 +6027,7 @@ index 9f29a804..1e39d96e 100644 \begin{itemize} \item With \tcode{$N$ = b - a}, for all $i$, $0 < i < N$, -@@ -13557,7 +13554,6 @@ template +@@ -13546,7 +13543,6 @@ template \pnum Some algorithms in this subclause are constrained with the following exposition-only concepts: @@ -6047,7 +6036,7 @@ index 9f29a804..1e39d96e 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index be952625..37b7b347 100644 +index c83a9d0b..e84497ce 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -284,7 +284,6 @@ int X::y = 1; // defines \tcode{X::y} @@ -6578,7 +6567,7 @@ index df489ab5..17fe2711 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 45f82de6..0bd95225 100644 +index 98aac71a..cd0d1cce 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -464,7 +464,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -6669,7 +6658,7 @@ index 45f82de6..0bd95225 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 -@@ -5452,7 +5441,6 @@ is called a \term{suspension context} of the function. +@@ -5455,7 +5444,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: @@ -6677,7 +6666,7 @@ index 45f82de6..0bd95225 100644 \begin{itemize} \item \placeholder{p} is an lvalue naming the promise -@@ -5833,7 +5821,6 @@ and +@@ -5836,7 +5824,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}: @@ -6685,7 +6674,7 @@ index 45f82de6..0bd95225 100644 \begin{codeblock} T x @\textrm{\placeholder{init}}@ ; \end{codeblock} -@@ -6185,7 +6172,6 @@ the alignment argument is removed from the argument list; +@@ -6188,7 +6175,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; @@ -6693,7 +6682,7 @@ index 45f82de6..0bd95225 100644 \end{itemize} and then overload resolution is performed again. -@@ -6263,7 +6249,6 @@ necessarily be the same as that of the block if the object is an array. +@@ -6266,7 +6252,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: @@ -6701,7 +6690,7 @@ index 45f82de6..0bd95225 100644 \begin{itemize} \item If the \grammarterm{new-initializer} is omitted, the object is default-initialized\iref{dcl.init}. -@@ -6352,7 +6337,6 @@ struct S { +@@ -6355,7 +6340,6 @@ struct S { S* p = new (0) S; // error: non-placement deallocation function matches // placement allocation function \end{codeblock} @@ -6709,7 +6698,7 @@ index 45f82de6..0bd95225 100644 \end{example} \pnum -@@ -6472,7 +6456,6 @@ of their constructor; see~\ref{class.base.init}). +@@ -6475,7 +6459,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: @@ -6717,7 +6706,7 @@ index 45f82de6..0bd95225 100644 \begin{itemize} \item If the allocation call for the \grammarterm{new-expression} for the object to -@@ -7322,7 +7305,6 @@ or one operand has integral type and +@@ -7325,7 +7308,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: @@ -6725,7 +6714,7 @@ index 45f82de6..0bd95225 100644 \begin{itemize} \item If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, -@@ -7477,7 +7459,6 @@ is considered to be equivalent to a pointer to a hypothetical array element +@@ -7480,7 +7462,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: @@ -6733,7 +6722,7 @@ index 45f82de6..0bd95225 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 -@@ -7490,7 +7471,6 @@ neither member is a subobject of zero size +@@ -7493,7 +7474,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. @@ -6741,7 +6730,7 @@ index 45f82de6..0bd95225 100644 \end{itemize} \pnum -@@ -7552,7 +7532,6 @@ If at least one of the converted operands is a pointer, +@@ -7555,7 +7535,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: @@ -6749,7 +6738,7 @@ index 45f82de6..0bd95225 100644 \begin{itemize} \item If one pointer represents the address of a complete object, and another -@@ -7582,7 +7561,6 @@ qualification conversions\iref{conv.qual} +@@ -7585,7 +7564,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: @@ -6757,7 +6746,7 @@ index 45f82de6..0bd95225 100644 \begin{itemize} \item If two pointers to members are both the null member pointer value, they compare -@@ -7868,7 +7846,6 @@ Attempts are made to form an implicit conversion sequence +@@ -7871,7 +7849,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: @@ -6765,7 +6754,7 @@ index 45f82de6..0bd95225 100644 \begin{itemize} \item If \tcode{E2} is an lvalue, the target type is ``lvalue reference to \tcode{T2}'', -@@ -7947,7 +7924,6 @@ subclause. +@@ -7950,7 +7927,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: @@ -6773,7 +6762,7 @@ index 45f82de6..0bd95225 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. -@@ -7977,7 +7953,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. +@@ -7980,7 +7956,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}. @@ -6850,7 +6839,7 @@ index 4c6942b4..04969113 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index 0804ddd3..2bcd6f9a 100644 +index 8a5caca8..19837154 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -2102,14 +2102,12 @@ does nothing. @@ -7041,7 +7030,7 @@ index 7acd9d21..85213808 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 9c2a79b8..2b281173 100644 +index c3fcf8d5..729bd1dc 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. @@ -7189,10 +7178,10 @@ index efd4eb00..12180661 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index afb0ae18..768a50eb 100644 +index 4b3d1682..0dd2d462 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1571,7 +1571,6 @@ when considered as an unevaluated operand. +@@ -1568,7 +1568,6 @@ when considered as an unevaluated operand. \pnum Let \exposid{pair-constructor} be an exposition-only class defined as follows: @@ -7200,7 +7189,7 @@ index afb0ae18..768a50eb 100644 \begin{codeblock} class @\exposid{pair-constructor}@ { using @\exposid{pair-type}@ = remove_cv_t; // \expos -@@ -3706,7 +3705,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a); +@@ -3703,7 +3702,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: @@ -7209,7 +7198,7 @@ index afb0ae18..768a50eb 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index b9d9144c..c30353cd 100644 +index 81df5dfe..5c016e13 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -1943,7 +1943,6 @@ is_base_of_v // \tcode{false} @@ -7229,7 +7218,7 @@ index b9d9144c..c30353cd 100644 \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 e0a5e89d..b46401da 100644 +index 4457140a..52a0e3ec 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); @@ -7580,7 +7569,7 @@ index 2a606adf..8b0f4e38 100644 \item If \tcode{T} models \libconcept{contiguous_iterator}, diff --git a/source/statements.tex b/source/statements.tex -index 6bc31cb2..4426fbf0 100644 +index 785798f7..fa5898d3 100644 --- a/source/statements.tex +++ b/source/statements.tex @@ -730,7 +730,6 @@ exposition only; and @@ -7592,7 +7581,7 @@ index 6bc31cb2..4426fbf0 100644 \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are diff --git a/source/support.tex b/source/support.tex -index eeac4a21..e360471d 100644 +index cee9e901..09e93b10 100644 --- a/source/support.tex +++ b/source/support.tex @@ -2459,7 +2459,6 @@ This requirement is binding on any replacement versions of these functions. @@ -7920,7 +7909,7 @@ index c17177bc..fc802e62 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 4b2c5273..f78b53b1 100644 +index b2e9462e..bec330ff 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -7372,7 +7372,6 @@ and visible to other threads. @@ -8011,7 +8000,7 @@ index 4b2c5273..f78b53b1 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -11587,7 +11576,6 @@ shared state as \tcode{*this}. +@@ -11584,7 +11573,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -8019,7 +8008,7 @@ index 4b2c5273..f78b53b1 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}. -@@ -11650,7 +11638,6 @@ already has a stored value or exception. +@@ -11647,7 +11635,6 @@ already has a stored value or exception. \pnum \errors @@ -8027,7 +8016,7 @@ index 4b2c5273..f78b53b1 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -11990,7 +11977,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -11987,7 +11974,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -8035,7 +8024,7 @@ index 4b2c5273..f78b53b1 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12334,7 +12320,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -12331,7 +12317,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8043,7 +8032,7 @@ index 4b2c5273..f78b53b1 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12369,7 +12354,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -12366,7 +12351,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8051,7 +8040,7 @@ index 4b2c5273..f78b53b1 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12425,7 +12409,6 @@ The further behavior +@@ -12422,7 +12406,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): @@ -8273,7 +8262,7 @@ index faf5d946..b79fc8d3 100644 2.43.0 -From 143d20fb7c38beb48e10cdfbdc6dbcbf526265ce Mon Sep 17 00:00:00 2001 +From be362eefd57463af046e289dc5c3ad9a9355002d Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 Subject: [PATCH 06/10] Use monospace font for code in figures. @@ -8420,7 +8409,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From fca0248016250ead1b0ce7a814acea409c6e7d17 Mon Sep 17 00:00:00 2001 +From e43cfbb40830a5df1ee972847d0115dedc28bac8 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 Subject: [PATCH 07/10] [uaxid] Mark code that's not to be highlighted. @@ -8448,7 +8437,7 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From 6cecacff753d0b1b1c00c828390b1367a5529a3f Mon Sep 17 00:00:00 2001 +From 56c5cd7c3ef9a04cc8ea8d06b1b05ae93c4e712a Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. @@ -8472,7 +8461,7 @@ Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. 15 files changed, 490 insertions(+), 498 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 1e39d96e..af6bebcd 100644 +index a46b6385..087fbc82 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -8519,7 +8508,7 @@ index 1e39d96e..af6bebcd 100644 if it is required to be a mutable iterator, or model \libconcept{random_access_iterator}\iref{iterator.concept.random.access} otherwise. \end{itemize} -@@ -4618,10 +4618,10 @@ template +@@ -4616,10 +4616,10 @@ template \pnum \expects \tcode{Function} meets @@ -8532,7 +8521,7 @@ index 1e39d96e..af6bebcd 100644 \end{note} \pnum -@@ -4658,7 +4658,7 @@ template +@@ -4656,7 +4656,7 @@ template \begin{itemdescr} \pnum \expects @@ -8541,7 +8530,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -4792,10 +4792,10 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4790,10 +4790,10 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8554,7 +8543,7 @@ index 1e39d96e..af6bebcd 100644 \end{note} \pnum -@@ -4832,7 +4832,7 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4830,7 +4830,7 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8563,7 +8552,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -5684,7 +5684,7 @@ If +@@ -5678,7 +5678,7 @@ If \item the types of \tcode{first1}, \tcode{last1}, \tcode{first2}, and \tcode{last2} meet the @@ -8572,7 +8561,7 @@ index 1e39d96e..af6bebcd 100644 and \tcode{last1 - first1 != last2 - first2} for the overloads in namespace \tcode{std}; \item -@@ -6028,7 +6028,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} +@@ -6022,7 +6022,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} \pnum \remarks @@ -8581,7 +8570,7 @@ index 1e39d96e..af6bebcd 100644 \end{itemdescr} \rSec2[alg.starts.with]{Starts with} -@@ -7610,7 +7610,7 @@ Let $E$ be +@@ -7604,7 +7604,7 @@ Let $E$ be \expects For the algorithms in namespace \tcode{std}, the type of \tcode{*first} @@ -8590,7 +8579,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -7859,7 +7859,7 @@ let $E$ be +@@ -7853,7 +7853,7 @@ let $E$ be For the overloads in namespace \tcode{std}, \tcode{pred} is an equivalence relation and the type of \tcode{*first} meets @@ -8599,7 +8588,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -7989,10 +7989,10 @@ Let: +@@ -7983,10 +7983,10 @@ Let: \libconcept{forward_iterator}\iref{iterator.concept.forward}, then there are no additional requirements for \tcode{T}. Otherwise, if \tcode{OutputIterator} meets @@ -8612,7 +8601,7 @@ index 1e39d96e..af6bebcd 100644 Otherwise, \tcode{T} meets both the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and \oldconcept{CopyAssignable} requirements. -@@ -8071,7 +8071,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8065,7 +8065,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8621,7 +8610,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -8203,10 +8203,10 @@ template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S> +@@ -8200,10 +8200,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 @@ -8635,7 +8624,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -8426,13 +8426,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 @@ -8652,7 +8641,7 @@ index 1e39d96e..af6bebcd 100644 unless \tcode{Pop\-ulat\-ion\-Iter\-ator} models \libconcept{forward_iterator}\iref{iterator.concept.forward}. \item -@@ -8500,7 +8500,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 @@ -8661,7 +8650,7 @@ index 1e39d96e..af6bebcd 100644 \item The type \tcode{remove_reference_t} meets the uniform random bit generator\iref{rand.req.urng} requirements. -@@ -8561,7 +8561,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -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}, @@ -8670,7 +8659,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -8625,10 +8625,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -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}, @@ -8684,7 +8673,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -8807,10 +8807,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 @@ -8698,7 +8687,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -8875,10 +8875,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 @@ -8712,7 +8701,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -8949,10 +8949,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 @@ -8726,7 +8715,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -9095,10 +9095,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. +@@ -9089,10 +9089,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8740,7 +8729,7 @@ index 1e39d96e..af6bebcd 100644 \pnum For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and -@@ -9333,10 +9333,10 @@ for the overloads with no parameters by those names. +@@ -9327,10 +9327,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 @@ -8754,7 +8743,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -9716,7 +9716,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9710,7 +9710,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 @@ -8763,7 +8752,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -9743,7 +9743,7 @@ Let $N = \tcode{last - first}$: +@@ -9737,7 +9737,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 @@ -8772,7 +8761,7 @@ index 1e39d96e..af6bebcd 100644 for the overloads in namespace \tcode{std} or models \libconcept{bidirectional_iterator} for the overloads in namespace \tcode{ranges}, -@@ -9796,10 +9796,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9790,10 +9790,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 @@ -8786,7 +8775,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -10196,10 +10196,10 @@ for the overloads with no parameters by those names. +@@ -10190,10 +10190,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 @@ -8800,7 +8789,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -10943,10 +10943,10 @@ The range \range{first}{last - 1} +@@ -10932,10 +10932,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 @@ -8814,7 +8803,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -10996,10 +10996,10 @@ The range \range{first}{last} +@@ -10985,10 +10985,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 @@ -8828,7 +8817,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -11052,10 +11052,10 @@ for the overloads with no parameters by those names. +@@ -11041,10 +11041,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8842,7 +8831,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -11105,10 +11105,10 @@ The range \range{first}{last} is +@@ -11094,10 +11094,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 @@ -8856,7 +8845,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -11295,7 +11295,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8876,7 +8865,7 @@ index 1e39d96e..af6bebcd 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11378,7 +11378,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8896,7 +8885,7 @@ index 1e39d96e..af6bebcd 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11463,7 +11463,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8916,7 +8905,7 @@ index 1e39d96e..af6bebcd 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11732,7 +11732,7 @@ for the overloads with no parameter \tcode{proj}. +@@ -11721,7 +11721,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} @@ -8925,7 +8914,7 @@ index 1e39d96e..af6bebcd 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11935,7 +11935,7 @@ for overloads with no parameters by those names. +@@ -11924,7 +11924,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8934,7 +8923,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -11994,7 +11994,7 @@ for overloads with no parameters by those names. +@@ -11983,7 +11983,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8943,7 +8932,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -12313,8 +12313,8 @@ template +@@ -12302,8 +12302,8 @@ template \pnum \expects \tcode{T} meets @@ -8954,7 +8943,7 @@ index 1e39d96e..af6bebcd 100644 In the range \crange{first}{last}, \tcode{binary_op} neither modifies elements nor invalidates iterators or subranges. -@@ -12436,7 +12436,7 @@ are convertible to \tcode{T}. +@@ -12425,7 +12425,7 @@ are convertible to \tcode{T}. \expects \begin{itemize} \item @@ -8963,7 +8952,7 @@ index 1e39d96e..af6bebcd 100644 \item \tcode{binary_op} neither invalidates iterators or subranges, nor modifies elements in the range \crange{first}{last}. -@@ -12480,8 +12480,8 @@ template}. +@@ -13164,7 +13164,7 @@ that denotes an object of type \tcode{minus<>}. \begin{itemize} \item For the overloads with no \tcode{ExecutionPolicy}, @@ -9132,7 +9121,7 @@ index df926181..ffcb4e9f 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index c8c912f6..58cf02c5 100644 +index 92c01d1f..9d80adfb 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9220,7 +9209,7 @@ index 04969113..8c17e33e 100644 \begin{itemize} \item for the first specialization, \tcode{add_volatile_t}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index 2bcd6f9a..f5f73c3b 100644 +index 19837154..ba13c1f7 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -1681,10 +1681,10 @@ An \tcode{fpos} type specifies file position information. @@ -9301,7 +9290,7 @@ index 2bcd6f9a..f5f73c3b 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 2b281173..d159fc9d 100644 +index 729bd1dc..2ff6567d 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -1862,7 +1862,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. @@ -9410,10 +9399,10 @@ index 2b281173..d159fc9d 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index 768a50eb..fb24bbe3 100644 +index 0dd2d462..9ed63972 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1273,7 +1273,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type +@@ -1270,7 +1270,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 @@ -9422,7 +9411,7 @@ index 768a50eb..fb24bbe3 100644 \rSec2[allocator.uses]{\tcode{uses_allocator}} -@@ -1288,7 +1288,7 @@ template struct uses_allocator; +@@ -1285,7 +1285,7 @@ template struct uses_allocator; \pnum \remarks Automatically detects whether \tcode{T} has a nested \tcode{allocator_type} that @@ -9431,7 +9420,7 @@ index 768a50eb..fb24bbe3 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 -@@ -2238,8 +2238,8 @@ deleter before such replacement is considered completed. +@@ -2235,8 +2235,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} @@ -9442,7 +9431,7 @@ index 768a50eb..fb24bbe3 100644 The template parameter \tcode{T} of \tcode{unique_ptr} may be an incomplete type. \pnum -@@ -2426,7 +2426,7 @@ pointer as appropriate for that deleter. +@@ -2423,7 +2423,7 @@ pointer as appropriate for that deleter. \pnum If the deleter's type \tcode{D} is not a reference type, \tcode{D} shall meet @@ -9451,7 +9440,7 @@ index 768a50eb..fb24bbe3 100644 \pnum If the \grammarterm{qualified-id} \tcode{remove_reference_t::pointer} is valid and denotes a -@@ -2434,7 +2434,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 @@ -9460,7 +9449,7 @@ index 768a50eb..fb24bbe3 100644 \pnum \begin{example} -@@ -2460,7 +2460,7 @@ constexpr unique_ptr(nullptr_t) noexcept; +@@ -2457,7 +2457,7 @@ constexpr unique_ptr(nullptr_t) noexcept; \pnum \expects @@ -9469,7 +9458,7 @@ index 768a50eb..fb24bbe3 100644 and that construction does not throw an exception. \pnum -@@ -2487,7 +2487,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; +@@ -2484,7 +2484,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; \pnum \expects @@ -9478,7 +9467,7 @@ index 768a50eb..fb24bbe3 100644 and that construction does not throw an exception. \pnum -@@ -2516,10 +2516,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex +@@ -2513,10 +2513,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, @@ -9491,7 +9480,7 @@ index 768a50eb..fb24bbe3 100644 such construction does not exit via an exception. \pnum -@@ -2544,8 +2544,8 @@ the second constructor is defined as deleted. +@@ -2541,8 +2541,8 @@ the second constructor is defined as deleted. \begin{example} \begin{codeblock} D d; @@ -9502,7 +9491,7 @@ index 768a50eb..fb24bbe3 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 -@@ -2566,7 +2566,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; +@@ -2563,7 +2563,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, @@ -9511,7 +9500,7 @@ index 768a50eb..fb24bbe3 100644 requirements (\tref{cpp17.moveconstructible}). Construction of the deleter from an rvalue of type \tcode{D} does not -@@ -2675,10 +2675,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; +@@ -2672,10 +2672,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, \tcode{D} meets the @@ -9524,7 +9513,7 @@ index 768a50eb..fb24bbe3 100644 requirements and assignment of the deleter from an lvalue of type \tcode{D} does not throw an exception. -@@ -3576,8 +3576,8 @@ namespace std { +@@ -3573,8 +3573,8 @@ namespace std { \end{codeblock} \pnum @@ -9535,7 +9524,7 @@ index 768a50eb..fb24bbe3 100644 containers. Specializations of \tcode{shared_ptr} shall be contextually convertible to \tcode{bool}, allowing their use in boolean expressions and declarations in conditions. -@@ -3722,7 +3722,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. +@@ -3719,7 +3719,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 @@ -9544,7 +9533,7 @@ index 768a50eb..fb24bbe3 100644 \pnum \effects -@@ -4242,7 +4242,7 @@ template +@@ -4239,7 +4239,7 @@ template \pnum \expects \tcode{A} meets @@ -9553,7 +9542,7 @@ index 768a50eb..fb24bbe3 100644 \pnum \effects -@@ -4898,8 +4898,8 @@ namespace std { +@@ -4895,8 +4895,8 @@ namespace std { \end{codeblock} \pnum @@ -9564,7 +9553,7 @@ index 768a50eb..fb24bbe3 100644 containers. The template parameter \tcode{T} of \tcode{weak_ptr} may be an incomplete type. -@@ -5478,7 +5478,7 @@ namespace std { +@@ -5475,7 +5475,7 @@ namespace std { \end{codeblock} \pnum @@ -9573,7 +9562,7 @@ index 768a50eb..fb24bbe3 100644 If \tcode{Smart} is a specialization of \tcode{shared_ptr} and \tcode{sizeof...(Args) == 0}, the program is ill-formed. -@@ -5718,7 +5718,7 @@ namespace std { +@@ -5715,7 +5715,7 @@ namespace std { \end{codeblock} \pnum @@ -9583,7 +9572,7 @@ index 768a50eb..fb24bbe3 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index c30353cd..27831f74 100644 +index 5c016e13..fea40b8a 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -95,12 +95,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -10027,7 +10016,7 @@ index c30353cd..27831f74 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is \tcode{true}, otherwise \tcode{false_type}. -@@ -953,17 +953,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. +@@ -946,17 +946,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. \topline \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead @@ -10048,7 +10037,7 @@ index c30353cd..27831f74 100644 \tcode{T} is an integral type\iref{basic.fundamental} & \\ \rowsep \indexlibraryglobal{is_floating_point}% \tcode{template}\br -@@ -1192,9 +1189,8 @@ A union is a class type that +@@ -1185,9 +1182,8 @@ A union is a class type that & If \tcode{T} is a class type, \tcode{T} shall be a complete type. \\ \rowsep @@ -10059,7 +10048,7 @@ index c30353cd..27831f74 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 -@@ -1211,16 +1207,14 @@ A union is a class type that +@@ -1204,16 +1200,14 @@ A union is a class type that \tcode{T(-1) < T(0)}; otherwise, \tcode{false} & \\ \rowsep @@ -10078,7 +10067,7 @@ index c30353cd..27831f74 100644 \tcode{T} is an array type of known bound\iref{dcl.array} & \\ \rowsep -@@ -1724,7 +1718,7 @@ may be used to query properties of types at compile time. +@@ -1717,7 +1711,7 @@ may be used to query properties of types at compile time. \end{libreqtab2a} \pnum @@ -10087,7 +10076,7 @@ index c30353cd..27831f74 100644 base characteristic of \tcode{integral_constant}. \pnum -@@ -1760,7 +1754,7 @@ may be used to query relationships between types at compile time. +@@ -1753,7 +1747,7 @@ may be used to query relationships between types at compile time. \pnum Each of these templates shall be a @@ -10096,7 +10085,7 @@ index c30353cd..27831f74 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is true, otherwise \tcode{false_type}. -@@ -1774,7 +1768,7 @@ with a base characteristic of +@@ -1774,7 +1768,7 @@ Let \tcode{\placeholdernc{ELEMS-OF}(T)} be the parameter pack \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead \tcode{template}\br @@ -10192,7 +10181,7 @@ index c30353cd..27831f74 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index b46401da..021e5dbb 100644 +index 52a0e3ec..0aac59a4 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 @@ -10344,7 +10333,7 @@ index e943eef1..13b33fa6 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 e360471d..6212b511 100644 +index 09e93b10..4ee8d4ed 100644 --- a/source/support.tex +++ b/source/support.tex @@ -3657,11 +3657,11 @@ namespace std { @@ -10383,7 +10372,7 @@ index e360471d..6212b511 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index f78b53b1..f538f650 100644 +index bec330ff..da485dc5 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10713,7 +10702,7 @@ index f78b53b1..f538f650 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -11456,7 +11456,7 @@ namespace std { +@@ -11453,7 +11453,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10722,7 +10711,7 @@ index f78b53b1..f538f650 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -11788,7 +11788,7 @@ namespace std { +@@ -11785,7 +11785,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10731,7 +10720,7 @@ index f78b53b1..f538f650 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -12094,7 +12094,7 @@ namespace std { +@@ -12091,7 +12091,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10740,7 +10729,7 @@ index f78b53b1..f538f650 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -13032,7 +13032,7 @@ the expression \tcode{d(ptr)} is valid. +@@ -13029,7 +13029,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -10749,7 +10738,7 @@ index f78b53b1..f538f650 100644 \pnum If \tcode{D} is trivially copyable, -@@ -13090,7 +13090,7 @@ namespace std { +@@ -13087,7 +13087,7 @@ namespace std { \pnum This class meets the requirements of @@ -10758,7 +10747,7 @@ index f78b53b1..f538f650 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -13238,8 +13238,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -13235,8 +13235,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -10769,7 +10758,7 @@ index f78b53b1..f538f650 100644 \pnum \effects -@@ -13431,7 +13431,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -13428,7 +13428,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -11488,7 +11477,7 @@ index b79fc8d3..76b19166 100644 2.43.0 -From aaf2b011197979dbd69a8a84aba641fdfb91df6a Mon Sep 17 00:00:00 2001 +From 9425687f2e0b2eca9ada0e103a2f3b5827649eaf Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 Subject: [PATCH 09/10] Remove awkward \linebreaks. @@ -11506,10 +11495,10 @@ Subject: [PATCH 09/10] Remove awkward \linebreaks. 9 files changed, 68 insertions(+), 69 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index af6bebcd..45b81bf2 100644 +index 087fbc82..245e9633 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -7076,7 +7076,7 @@ Let: +@@ -7070,7 +7070,7 @@ Let: \tcode{invoke(op, invoke(proj, *(first1 + (i - result))))} for unary transforms defined in namespace \tcode{ranges}; \item @@ -11518,7 +11507,7 @@ index af6bebcd..45b81bf2 100644 for binary transforms defined in namespace \tcode{ranges}. \end{itemize} \end{itemize} -@@ -14202,7 +14202,7 @@ namespace ranges { +@@ -14191,7 +14191,7 @@ namespace ranges { \pnum \constraints \tcode{is_unbounded_array_v} is \tcode{false}. @@ -11755,10 +11744,10 @@ index e49a887b..492a1a7d 100644 \item diff --git a/source/exec.tex b/source/exec.tex -index 58cf02c5..cda92c93 100644 +index 9d80adfb..b1663e28 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -3290,7 +3290,7 @@ except that \tcode{sch} is evaluated only once. +@@ -3239,7 +3239,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}, @@ -11767,7 +11756,7 @@ index 58cf02c5..cda92c93 100644 \tcode{starts_on.transform_sender(out_sndr, env)} are ill-formed; otherwise \begin{itemize} \item -@@ -3670,7 +3670,7 @@ except that \tcode{sndr} is evaluated only once. +@@ -3619,7 +3619,7 @@ except that \tcode{sndr} is evaluated only once. \pnum Let \tcode{out_sndr} and \tcode{env} be subexpressions, let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and @@ -11776,7 +11765,7 @@ index 58cf02c5..cda92c93 100644 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. -@@ -3812,7 +3812,7 @@ Let the expression \exposid{then-cpo} be one of +@@ -3761,7 +3761,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}, @@ -11785,7 +11774,7 @@ index 58cf02c5..cda92c93 100644 \pnum Otherwise, -@@ -4117,7 +4117,7 @@ is initialized with a callable object equivalent to the following: +@@ -4066,7 +4066,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 @@ -11794,7 +11783,7 @@ index 58cf02c5..cda92c93 100644 is \tcode{false}, then the expression \tcode{\exposid{let-cpo}.transform_env(sndr, env)} is ill-formed. -@@ -4732,7 +4732,7 @@ try { +@@ -4681,7 +4681,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -11803,7 +11792,7 @@ index 58cf02c5..cda92c93 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -5775,7 +5775,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. +@@ -5724,7 +5724,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. \pnum For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. @@ -11813,10 +11802,10 @@ index 58cf02c5..cda92c93 100644 the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: diff --git a/source/memory.tex b/source/memory.tex -index fb24bbe3..15c181cc 100644 +index 9ed63972..9e2e335e 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1371,7 +1371,7 @@ A \tcode{tuple} value determined as follows: +@@ -1368,7 +1368,7 @@ A \tcode{tuple} value determined as follows: \begin{itemize} \item If \tcode{uses_allocator_v, Alloc>} is \tcode{false} and @@ -11825,7 +11814,7 @@ index fb24bbe3..15c181cc 100644 return \tcode{forward_as_tuple(std::forward(args)...)}. \item Otherwise, if \tcode{uses_allocator_v, Alloc>} is \tcode{true} and -@@ -4332,7 +4332,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje +@@ -4329,7 +4329,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 @@ -11834,7 +11823,7 @@ index fb24bbe3..15c181cc 100644 \tcode{allocate_shared_for_overwrite}, it is initialized via the expression \tcode{::new(pv) U}, where \tcode{pv} has type \tcode{void*} and -@@ -5567,7 +5567,7 @@ if (p) { +@@ -5564,7 +5564,7 @@ if (p) { \end{codeblock} if the expression \tcode{s.reset(static_cast(p), std::forward(args)...)} @@ -11844,7 +11833,7 @@ index fb24bbe3..15c181cc 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index 27831f74..81f32de8 100644 +index fea40b8a..22cd406d 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -2530,7 +2530,7 @@ present as follows: @@ -11857,7 +11846,7 @@ index 27831f74..81f32de8 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index 021e5dbb..be582f6f 100644 +index 0aac59a4..7ae9bd01 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -13802,7 +13802,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. @@ -12033,7 +12022,7 @@ index 8b0f4e38..fccb59d1 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index f538f650..39025707 100644 +index da485dc5..fe9533b5 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -3517,7 +3517,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, @@ -12125,9 +12114,9 @@ index 76b19166..a53d2ff0 100644 2.43.0 -From 98949e2e6dd60065b463a4b2a718ad8a8b6bb118 Mon Sep 17 00:00:00 2001 +From b134c41454c39404f9c82115b172882a9571fc44 Mon Sep 17 00:00:00 2001 From: timsong-cpp -Date: Fri, 25 Jul 2025 00:06:14 -0500 +Date: Fri, 1 Aug 2025 02:09:27 -0500 Subject: [PATCH 10/10] Revert "[intro] Special page header before Clause 1 (#6070)" diff --git a/lastbuild.sig b/lastbuild.sig index f6ca263c54..8ade7387c1 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,4 +1,4 @@ htmlgen eee5307c45c04761ef5c27956cbed742e08e5fb4 -draft 454ba171cb14531639e641cb1200617fbf8d943f -91135fa8481acf3787c89864b8c715e925279fbb htmlgen.patch +draft e4a7f6da57891013ed378672c470970d95ea190e +4ae608c57971a38daeac4182a9463106b4ddfd06 htmlgen.patch cc80936cb44795c5712f5b4d193389be54551403 htmlgen_code.patch From 93f89b1c2b73fc8245d9c6b5173d8b3c88b0d904 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Wed, 6 Aug 2025 08:27:48 -0500 Subject: [PATCH 03/18] Update --- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 140 +++++++++++++++++++++++++------------------------- lastbuild.sig | 4 +- 4 files changed, 74 insertions(+), 74 deletions(-) diff --git a/draft b/draft index e4a7f6da57..c3bd02a2e4 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit e4a7f6da57891013ed378672c470970d95ea190e +Subproject commit c3bd02a2e44c53c8fe7ba5b48a94bacc9186235d diff --git a/gh-pages b/gh-pages index ab5693fc2a..51fa57f956 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit ab5693fc2a7154ade14e4e7abc80c5b38a0cd7fc +Subproject commit 51fa57f956efbbe41d0384d39e3d798bb4e44441 diff --git a/htmlgen.patch b/htmlgen.patch index 6587411e6d..7099c1c272 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From 9a6ef05469016f4ebf7f3e5bb5c19cf6a8df4f06 Mon Sep 17 00:00:00 2001 +From 363f55f01f56681d378bad6f8c32a4a703e40248 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout @@ -59,7 +59,7 @@ index a1b8f00c..326cf97f 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index edd0ad86..11dfe14b 100644 +index 1d3c4df1..c6c49338 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2924,7 +2924,7 @@ struct s2 { @@ -75,7 +75,7 @@ index edd0ad86..11dfe14b 100644 2.43.0 -From 0017500dd3bb021bbe0beda5a01d682db38b6d86 Mon Sep 17 00:00:00 2001 +From 26f62ae64ced3a459f7ed769e3163c31e023d882 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 Subject: [PATCH 02/10] Use new link macros. @@ -111,7 +111,7 @@ Subject: [PATCH 02/10] Use new link macros. 27 files changed, 607 insertions(+), 616 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 43aac8ff..7ded19bb 100644 +index c9ab8d9d..afec9113 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -810,7 +810,7 @@ index 6a71104d..77036c1f 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index 341c1bc1..4951f281 100644 +index 6214e7ef..6960c3e5 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -910,7 +910,7 @@ index 341c1bc1..4951f281 100644 \end{codeblock} \end{example} A non-static member shall not be designated in a default argument unless -@@ -6206,15 +6205,15 @@ This requires a conversion +@@ -6207,15 +6206,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 @@ -930,7 +930,7 @@ index 341c1bc1..4951f281 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7724,7 +7723,7 @@ the initializer is +@@ -7725,7 +7724,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} @@ -939,7 +939,7 @@ index 341c1bc1..4951f281 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. -@@ -7875,7 +7874,7 @@ is not looked up and is introduced by +@@ -7876,7 +7875,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}, @@ -948,7 +948,7 @@ index 341c1bc1..4951f281 100644 \pnum \indextext{constant!enumeration}% -@@ -7957,8 +7956,9 @@ If the underlying type is fixed, the type of each enumerator +@@ -7958,8 +7957,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} @@ -960,7 +960,7 @@ index 341c1bc1..4951f281 100644 If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as -@@ -7967,8 +7967,9 @@ follows: +@@ -7968,8 +7968,9 @@ follows: \begin{itemize} \item If an initializer is specified for an enumerator, the @@ -972,7 +972,7 @@ index 341c1bc1..4951f281 100644 unscoped enumeration type, the enumerator has the underlying type of that enumeration type, otherwise it has the same type as the expression. -@@ -8040,7 +8041,7 @@ if they have the same underlying type. +@@ -8041,7 +8042,7 @@ if they have the same underlying type. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -981,7 +981,7 @@ index 341c1bc1..4951f281 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8323,7 +8324,7 @@ appertains to the namespace being defined or extended. +@@ -8324,7 +8325,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 @@ -990,7 +990,7 @@ index 341c1bc1..4951f281 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 -@@ -9146,7 +9147,7 @@ different language linkages are distinct types even if they are +@@ -9147,7 +9148,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -999,7 +999,7 @@ index 341c1bc1..4951f281 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9476,19 +9477,19 @@ For each individual attribute, the form of the +@@ -9477,19 +9478,19 @@ 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 @@ -1024,7 +1024,7 @@ index 341c1bc1..4951f281 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9599,7 +9600,7 @@ declaration, the program is ill-formed. +@@ -9600,7 +9601,7 @@ declaration, the program is ill-formed. \pnum An \grammarterm{alignment-specifier} of the form \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same @@ -1033,7 +1033,7 @@ index 341c1bc1..4951f281 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9779,7 +9780,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9780,7 +9781,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -1221,7 +1221,7 @@ index ba2d34d0..cd476d28 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index 11dfe14b..98aac71a 100644 +index c6c49338..8e108f2c 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -4495,7 +4495,7 @@ index 0a26e026..faf5d946 100644 2.43.0 -From 6ca4f417e91c75dc33c1da989c31995aaf9488af Mon Sep 17 00:00:00 2001 +From b35c2a39f115c496d62b54a79e8377f38162bd87 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove @@ -4548,7 +4548,7 @@ index 3894c832..c17177bc 100644 2.43.0 -From 3929c43d79a3bca6ad6d20f28703b0dfcfd12392 Mon Sep 17 00:00:00 2001 +From f0016951bd4aa94a2fe8f54e7c2b726cad6a0623 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code @@ -5965,7 +5965,7 @@ index 2939c865..c37f5bba 100644 2.43.0 -From 028d09d4f951a2ba57932f1962ac9d8b9c989509 Mon Sep 17 00:00:00 2001 +From 6b869084fe0b2cec85d080f2babb0c92c9b9adcc Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. @@ -6000,7 +6000,7 @@ Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. 26 files changed, 272 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 7ded19bb..a46b6385 100644 +index afec9113..011292f7 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -8698,7 +8698,6 @@ but stronger than those for a partial ordering. @@ -6426,7 +6426,7 @@ index 77036c1f..e49a887b 100644 \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 4951f281..ad9508aa 100644 +index 6960c3e5..2bd0300a 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1593,7 +1593,6 @@ a partial specialization\iref{temp.spec.partial}, @@ -6461,7 +6461,7 @@ index 4951f281..ad9508aa 100644 \begin{itemize} \item If -@@ -5271,7 +5267,6 @@ is sequenced before those associated with +@@ -5272,7 +5268,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: @@ -6469,7 +6469,7 @@ index 4951f281..ad9508aa 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -6183,7 +6178,6 @@ a program that necessitates such a binding is ill-formed. +@@ -6184,7 +6179,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} @@ -6477,7 +6477,7 @@ index 4951f281..ad9508aa 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6651,7 +6645,6 @@ int j { 1 }; // initialize to 1 +@@ -6652,7 +6646,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -6485,7 +6485,7 @@ index 4951f281..ad9508aa 100644 \end{itemize} \pnum -@@ -7734,7 +7727,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, +@@ -7735,7 +7728,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, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -6493,7 +6493,7 @@ index 4951f281..ad9508aa 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7866,7 +7858,6 @@ struct S { +@@ -7867,7 +7859,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6501,7 +6501,7 @@ index 4951f281..ad9508aa 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7963,7 +7954,6 @@ If the underlying +@@ -7964,7 +7955,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6509,7 +6509,7 @@ index 4951f281..ad9508aa 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8422,7 +8412,6 @@ void h() { +@@ -8423,7 +8413,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} according to the following grammar: @@ -6517,7 +6517,7 @@ index 4951f281..ad9508aa 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8596,7 +8585,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8597,7 +8586,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, @@ -6525,7 +6525,7 @@ index 4951f281..ad9508aa 100644 \begin{codeblock} namespace A { class X { }; -@@ -9149,7 +9137,6 @@ otherwise identical. +@@ -9150,7 +9138,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6533,7 +6533,7 @@ index 4951f281..ad9508aa 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -10018,7 +10005,6 @@ may be applied to a function or a lambda call operator or +@@ -10019,7 +10006,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: @@ -6567,7 +6567,7 @@ index df489ab5..17fe2711 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 98aac71a..cd0d1cce 100644 +index 8e108f2c..9ae43f93 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -464,7 +464,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -7178,10 +7178,10 @@ index efd4eb00..12180661 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index 4b3d1682..0dd2d462 100644 +index 8ad74c93..92ff4466 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1568,7 +1568,6 @@ when considered as an unevaluated operand. +@@ -1571,7 +1571,6 @@ when considered as an unevaluated operand. \pnum Let \exposid{pair-constructor} be an exposition-only class defined as follows: @@ -7189,7 +7189,7 @@ index 4b3d1682..0dd2d462 100644 \begin{codeblock} class @\exposid{pair-constructor}@ { using @\exposid{pair-type}@ = remove_cv_t; // \expos -@@ -3703,7 +3702,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a); +@@ -3706,7 +3705,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: @@ -7198,7 +7198,7 @@ index 4b3d1682..0dd2d462 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index 81df5dfe..5c016e13 100644 +index 08347e95..0e7255dd 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -1943,7 +1943,6 @@ is_base_of_v // \tcode{false} @@ -8262,7 +8262,7 @@ index faf5d946..b79fc8d3 100644 2.43.0 -From be362eefd57463af046e289dc5c3ad9a9355002d Mon Sep 17 00:00:00 2001 +From 713553b603864c1b414be8d05b59173e693ee343 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 Subject: [PATCH 06/10] Use monospace font for code in figures. @@ -8409,7 +8409,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From e43cfbb40830a5df1ee972847d0115dedc28bac8 Mon Sep 17 00:00:00 2001 +From cb2cc2cb59467f4fa92cffdbef1395ad963ab521 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 Subject: [PATCH 07/10] [uaxid] Mark code that's not to be highlighted. @@ -8437,7 +8437,7 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From 56c5cd7c3ef9a04cc8ea8d06b1b05ae93c4e712a Mon Sep 17 00:00:00 2001 +From c640f817cfcec1580cec83b57e171dbb925c8b6e Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. @@ -8461,7 +8461,7 @@ Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. 15 files changed, 490 insertions(+), 498 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index a46b6385..087fbc82 100644 +index 011292f7..3dcc8907 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -9121,7 +9121,7 @@ index df926181..ffcb4e9f 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 92c01d1f..9d80adfb 100644 +index 058038ef..887279b0 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9399,10 +9399,10 @@ index 729bd1dc..2ff6567d 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index 0dd2d462..9ed63972 100644 +index 92ff4466..c59c2b55 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1270,7 +1270,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type +@@ -1273,7 +1273,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 @@ -9411,7 +9411,7 @@ index 0dd2d462..9ed63972 100644 \rSec2[allocator.uses]{\tcode{uses_allocator}} -@@ -1285,7 +1285,7 @@ template struct uses_allocator; +@@ -1288,7 +1288,7 @@ template struct uses_allocator; \pnum \remarks Automatically detects whether \tcode{T} has a nested \tcode{allocator_type} that @@ -9420,7 +9420,7 @@ index 0dd2d462..9ed63972 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 -@@ -2235,8 +2235,8 @@ deleter before such replacement is considered completed. +@@ -2238,8 +2238,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} @@ -9431,7 +9431,7 @@ index 0dd2d462..9ed63972 100644 The template parameter \tcode{T} of \tcode{unique_ptr} may be an incomplete type. \pnum -@@ -2423,7 +2423,7 @@ pointer as appropriate for that deleter. +@@ -2426,7 +2426,7 @@ pointer as appropriate for that deleter. \pnum If the deleter's type \tcode{D} is not a reference type, \tcode{D} shall meet @@ -9440,7 +9440,7 @@ index 0dd2d462..9ed63972 100644 \pnum If the \grammarterm{qualified-id} \tcode{remove_reference_t::pointer} is valid and denotes a -@@ -2431,7 +2431,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 @@ -9449,7 +9449,7 @@ index 0dd2d462..9ed63972 100644 \pnum \begin{example} -@@ -2457,7 +2457,7 @@ constexpr unique_ptr(nullptr_t) noexcept; +@@ -2460,7 +2460,7 @@ constexpr unique_ptr(nullptr_t) noexcept; \pnum \expects @@ -9458,7 +9458,7 @@ index 0dd2d462..9ed63972 100644 and that construction does not throw an exception. \pnum -@@ -2484,7 +2484,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; +@@ -2487,7 +2487,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; \pnum \expects @@ -9467,7 +9467,7 @@ index 0dd2d462..9ed63972 100644 and that construction does not throw an exception. \pnum -@@ -2513,10 +2513,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex +@@ -2516,10 +2516,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, @@ -9480,7 +9480,7 @@ index 0dd2d462..9ed63972 100644 such construction does not exit via an exception. \pnum -@@ -2541,8 +2541,8 @@ the second constructor is defined as deleted. +@@ -2544,8 +2544,8 @@ the second constructor is defined as deleted. \begin{example} \begin{codeblock} D d; @@ -9491,7 +9491,7 @@ index 0dd2d462..9ed63972 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 -@@ -2563,7 +2563,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; +@@ -2566,7 +2566,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, @@ -9500,7 +9500,7 @@ index 0dd2d462..9ed63972 100644 requirements (\tref{cpp17.moveconstructible}). Construction of the deleter from an rvalue of type \tcode{D} does not -@@ -2672,10 +2672,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; +@@ -2675,10 +2675,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, \tcode{D} meets the @@ -9513,7 +9513,7 @@ index 0dd2d462..9ed63972 100644 requirements and assignment of the deleter from an lvalue of type \tcode{D} does not throw an exception. -@@ -3573,8 +3573,8 @@ namespace std { +@@ -3576,8 +3576,8 @@ namespace std { \end{codeblock} \pnum @@ -9524,7 +9524,7 @@ index 0dd2d462..9ed63972 100644 containers. Specializations of \tcode{shared_ptr} shall be contextually convertible to \tcode{bool}, allowing their use in boolean expressions and declarations in conditions. -@@ -3719,7 +3719,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. +@@ -3722,7 +3722,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 @@ -9533,7 +9533,7 @@ index 0dd2d462..9ed63972 100644 \pnum \effects -@@ -4239,7 +4239,7 @@ template +@@ -4242,7 +4242,7 @@ template \pnum \expects \tcode{A} meets @@ -9542,7 +9542,7 @@ index 0dd2d462..9ed63972 100644 \pnum \effects -@@ -4895,8 +4895,8 @@ namespace std { +@@ -4898,8 +4898,8 @@ namespace std { \end{codeblock} \pnum @@ -9553,7 +9553,7 @@ index 0dd2d462..9ed63972 100644 containers. The template parameter \tcode{T} of \tcode{weak_ptr} may be an incomplete type. -@@ -5475,7 +5475,7 @@ namespace std { +@@ -5478,7 +5478,7 @@ namespace std { \end{codeblock} \pnum @@ -9562,7 +9562,7 @@ index 0dd2d462..9ed63972 100644 If \tcode{Smart} is a specialization of \tcode{shared_ptr} and \tcode{sizeof...(Args) == 0}, the program is ill-formed. -@@ -5715,7 +5715,7 @@ namespace std { +@@ -5718,7 +5718,7 @@ namespace std { \end{codeblock} \pnum @@ -9572,7 +9572,7 @@ index 0dd2d462..9ed63972 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index 5c016e13..fea40b8a 100644 +index 0e7255dd..ee96bf8f 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -95,12 +95,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -11477,7 +11477,7 @@ index b79fc8d3..76b19166 100644 2.43.0 -From 9425687f2e0b2eca9ada0e103a2f3b5827649eaf Mon Sep 17 00:00:00 2001 +From 5abd235667d32d8257596ac8c1c4204c65cde051 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 Subject: [PATCH 09/10] Remove awkward \linebreaks. @@ -11495,7 +11495,7 @@ Subject: [PATCH 09/10] Remove awkward \linebreaks. 9 files changed, 68 insertions(+), 69 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 087fbc82..245e9633 100644 +index 3dcc8907..cf914a0c 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -7070,7 +7070,7 @@ Let: @@ -11744,7 +11744,7 @@ index e49a887b..492a1a7d 100644 \item diff --git a/source/exec.tex b/source/exec.tex -index 9d80adfb..b1663e28 100644 +index 887279b0..aff106e0 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -3239,7 +3239,7 @@ except that \tcode{sch} is evaluated only once. @@ -11802,10 +11802,10 @@ index 9d80adfb..b1663e28 100644 the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: diff --git a/source/memory.tex b/source/memory.tex -index 9ed63972..9e2e335e 100644 +index c59c2b55..e13a598f 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1368,7 +1368,7 @@ A \tcode{tuple} value determined as follows: +@@ -1371,7 +1371,7 @@ A \tcode{tuple} value determined as follows: \begin{itemize} \item If \tcode{uses_allocator_v, Alloc>} is \tcode{false} and @@ -11814,7 +11814,7 @@ index 9ed63972..9e2e335e 100644 return \tcode{forward_as_tuple(std::forward(args)...)}. \item Otherwise, if \tcode{uses_allocator_v, Alloc>} is \tcode{true} and -@@ -4329,7 +4329,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje +@@ -4332,7 +4332,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 @@ -11823,7 +11823,7 @@ index 9ed63972..9e2e335e 100644 \tcode{allocate_shared_for_overwrite}, it is initialized via the expression \tcode{::new(pv) U}, where \tcode{pv} has type \tcode{void*} and -@@ -5564,7 +5564,7 @@ if (p) { +@@ -5567,7 +5567,7 @@ if (p) { \end{codeblock} if the expression \tcode{s.reset(static_cast(p), std::forward(args)...)} @@ -11833,7 +11833,7 @@ index 9ed63972..9e2e335e 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index fea40b8a..22cd406d 100644 +index ee96bf8f..c278d972 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -2530,7 +2530,7 @@ present as follows: @@ -12114,7 +12114,7 @@ index 76b19166..a53d2ff0 100644 2.43.0 -From b134c41454c39404f9c82115b172882a9571fc44 Mon Sep 17 00:00:00 2001 +From da283a7465ff0f89f3f02dbcdcfa5a40feebc9d2 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Fri, 1 Aug 2025 02:09:27 -0500 Subject: [PATCH 10/10] Revert "[intro] Special page header before Clause 1 diff --git a/lastbuild.sig b/lastbuild.sig index 8ade7387c1..51c10801b3 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,4 +1,4 @@ htmlgen eee5307c45c04761ef5c27956cbed742e08e5fb4 -draft e4a7f6da57891013ed378672c470970d95ea190e -4ae608c57971a38daeac4182a9463106b4ddfd06 htmlgen.patch +draft c3bd02a2e44c53c8fe7ba5b48a94bacc9186235d +b76cce13dbf7885170532b899c35ef6d11ffb71c htmlgen.patch cc80936cb44795c5712f5b4d193389be54551403 htmlgen_code.patch From 823f74ccb1f2fc68f6fca572b5e7fbc1b9774384 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Mon, 27 Oct 2025 23:57:14 +1100 Subject: [PATCH 04/18] Update --- cxxdraft-htmlgen | 2 +- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 835 +++++++++++++++++++++------------------------ htmlgen_code.patch | 38 --- lastbuild.sig | 7 +- 6 files changed, 398 insertions(+), 488 deletions(-) delete mode 100644 htmlgen_code.patch diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen index eee5307c45..d76984e59a 160000 --- a/cxxdraft-htmlgen +++ b/cxxdraft-htmlgen @@ -1 +1 @@ -Subproject commit eee5307c45c04761ef5c27956cbed742e08e5fb4 +Subproject commit d76984e59af74768c3ce732b5517325f10807a57 diff --git a/draft b/draft index c3bd02a2e4..2f53f313f5 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit c3bd02a2e44c53c8fe7ba5b48a94bacc9186235d +Subproject commit 2f53f313f5b1aac5f9547b39e78863e23ca9c047 diff --git a/gh-pages b/gh-pages index 51fa57f956..5bc71b27ad 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 51fa57f956efbbe41d0384d39e3d798bb4e44441 +Subproject commit 5bc71b27ad733d9329d9985ea717a358c134c86f diff --git a/htmlgen.patch b/htmlgen.patch index 7099c1c272..e34ce89bf5 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,8 +1,8 @@ -From 363f55f01f56681d378bad6f8c32a4a703e40248 Mon Sep 17 00:00:00 2001 +From 564bd58ebe115367edb2444d5051838480453623 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 -Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout - on smaller (e.g. half-screen) window sizes. +Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on + smaller (e.g. half-screen) window sizes. --- source/basic.tex | 26 +++++++++++++------------- @@ -10,10 +10,10 @@ Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index a1b8f00c..326cf97f 100644 +index a85279f1..81d4fabf 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -314,7 +314,7 @@ Given +@@ -317,7 +317,7 @@ Given #include struct C { @@ -22,7 +22,7 @@ index a1b8f00c..326cf97f 100644 }; int main() { -@@ -2616,23 +2616,23 @@ namespace AB { +@@ -2619,23 +2619,23 @@ namespace AB { void h() { @@ -59,7 +59,7 @@ index a1b8f00c..326cf97f 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 1d3c4df1..c6c49338 100644 +index 381250b8..4266aed5 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2924,7 +2924,7 @@ struct s2 { @@ -75,10 +75,10 @@ index 1d3c4df1..c6c49338 100644 2.43.0 -From 26f62ae64ced3a459f7ed769e3163c31e023d882 Mon Sep 17 00:00:00 2001 +From 5d61a22ec14f73f20323c05da461423f6712852c Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 -Subject: [PATCH 02/10] Use new link macros. +Subject: [PATCH 2/9] Use new link macros. --- source/algorithms.tex | 4 +- @@ -111,7 +111,7 @@ Subject: [PATCH 02/10] Use new link macros. 27 files changed, 607 insertions(+), 616 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index c9ab8d9d..afec9113 100644 +index 6ca7e0f1..09938442 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -133,10 +133,10 @@ index c9ab8d9d..afec9113 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index 326cf97f..c83a9d0b 100644 +index 81d4fabf..8411bcae 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -155,7 +155,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. +@@ -158,7 +158,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 326cf97f..c83a9d0b 100644 translation unit. \rSec1[basic.def]{Declarations and definitions} -@@ -178,7 +178,7 @@ A declaration may also have effects including: +@@ -181,7 +181,7 @@ A declaration may 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}, @@ -154,7 +154,7 @@ index 326cf97f..c83a9d0b 100644 \item nothing (in the case of an \grammarterm{empty-declaration}). \end{itemize} -@@ -264,7 +264,7 @@ that defines a function, a class, a variable, or a static data member, +@@ -267,7 +267,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 @@ -163,7 +163,7 @@ index 326cf97f..c83a9d0b 100644 \grammarterm{declaration} is not a definition. \end{itemize} A declaration is said to be a \defn{definition} of each entity that it defines. -@@ -306,7 +306,7 @@ In some circumstances, \Cpp{} implementations implicitly define the +@@ -309,7 +309,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,7 +172,7 @@ index 326cf97f..c83a9d0b 100644 \end{note} \begin{example} Given -@@ -391,7 +391,7 @@ defined as follows: +@@ -394,7 +394,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$. @@ -181,7 +181,7 @@ index 326cf97f..c83a9d0b 100644 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 -@@ -401,16 +401,15 @@ the set contains the potential results of $E_1$. +@@ -404,16 +404,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 +202,7 @@ index 326cf97f..c83a9d0b 100644 contains the potential results of the right operand. \item Otherwise, the set is empty. \end{itemize} -@@ -572,8 +571,8 @@ implicitly-defined +@@ -575,8 +574,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 +213,7 @@ index 326cf97f..c83a9d0b 100644 \pnum A local entity\iref{basic.pre} -@@ -645,7 +644,7 @@ void h() { +@@ -648,7 +647,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 +222,7 @@ index 326cf97f..c83a9d0b 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}, -@@ -693,9 +692,9 @@ The rules for declarations and expressions +@@ -696,9 +695,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 +235,7 @@ index 326cf97f..c83a9d0b 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 -@@ -715,7 +714,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or +@@ -718,7 +717,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,7 +244,7 @@ index 326cf97f..c83a9d0b 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 -@@ -770,7 +769,7 @@ template specializations\iref{temp.spec.partial.match}, except that a name can r +@@ -773,7 +772,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}, @@ -253,7 +253,7 @@ index 326cf97f..c83a9d0b 100644 \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} -@@ -2876,7 +2875,7 @@ consteval int bad_splice(std::meta::info v) { +@@ -2879,7 +2878,7 @@ consteval int bad_splice(std::meta::info v) { \pnum \indextext{program}% \indextext{linking}% @@ -262,7 +262,7 @@ index 326cf97f..c83a9d0b 100644 linked together. A translation unit consists of a sequence of declarations. -@@ -2909,7 +2908,7 @@ are attached to the same module. +@@ -2912,7 +2911,7 @@ are attached to the same module. \indextext{linkage!\idxcode{inline} and}% \indextext{\idxcode{inline}!linkage of}% The name of an entity @@ -271,7 +271,7 @@ index 326cf97f..c83a9d0b 100644 has internal linkage if it is the name of \begin{itemize} \item -@@ -2950,7 +2949,7 @@ typedef declaration in which the class has the typedef name for linkage +@@ -2953,7 +2952,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 +280,7 @@ index 326cf97f..c83a9d0b 100644 in a typedef declaration in which the enumeration has the typedef name for linkage purposes\iref{dcl.typedef}; or \item an unnamed enumeration -@@ -3026,7 +3025,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. +@@ -3029,7 +3028,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 +289,7 @@ index 326cf97f..c83a9d0b 100644 linkage. \pnum -@@ -3384,8 +3383,8 @@ features of the language, such as references and virtual functions, might +@@ -3387,8 +3386,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 +300,7 @@ index 326cf97f..c83a9d0b 100644 locations without interfering with each other. \pnum -@@ -3429,15 +3428,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but +@@ -3432,15 +3431,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 +319,7 @@ index 326cf97f..c83a9d0b 100644 and in its period of destruction\iref{class.cdtor}. \begin{note} -@@ -3567,7 +3566,7 @@ A \defn{potentially-overlapping subobject} is either: +@@ -3570,7 +3569,7 @@ A \defn{potentially-overlapping subobject} is either: \begin{itemize} \item a base class subobject, or \item a non-static data member @@ -328,7 +328,7 @@ index 326cf97f..c83a9d0b 100644 \end{itemize} \pnum -@@ -3588,7 +3587,7 @@ Otherwise, the circumstances under which the object has zero size +@@ -3591,7 +3590,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 +337,7 @@ index 326cf97f..c83a9d0b 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 -@@ -4161,16 +4160,16 @@ the result of the evaluation is the value so produced but is not erroneous: +@@ -4163,16 +4162,16 @@ the result of the evaluation is the value so produced but is not erroneous: is produced by the evaluation of: \begin{itemize} \item @@ -357,7 +357,7 @@ index 326cf97f..c83a9d0b 100644 \end{itemize} then the result of the operation is an indeterminate value or that erroneous value, respectively. -@@ -4361,8 +4360,8 @@ specified in~\ref{class.copy.elision}. +@@ -4363,8 +4362,8 @@ specified in~\ref{class.copy.elision}. \indextext{storage duration!dynamic|(} \pnum @@ -368,7 +368,7 @@ index 326cf97f..c83a9d0b 100644 \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -@@ -4526,9 +4525,9 @@ that would match a handler\iref{except.handle} of type +@@ -4528,9 +4527,9 @@ that would match a handler\iref{except.handle} of type \tcode{std::bad_alloc}\iref{bad.alloc}. \pnum @@ -381,7 +381,7 @@ index 326cf97f..c83a9d0b 100644 a coroutine state\iref{dcl.fct.def.coroutine}, or called indirectly through calls to the functions in the \Cpp{} standard library. -@@ -5034,9 +5033,9 @@ shall be destroyed before +@@ -5036,9 +5035,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,7 +394,7 @@ index 326cf97f..c83a9d0b 100644 \end{note} \pnum -@@ -5210,7 +5209,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, +@@ -5212,7 +5211,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, pointer types, pointer-to-member types\iref{basic.compound}, \tcode{std::meta::\brk{}info}, \tcode{std::nullptr_t}, and @@ -403,7 +403,7 @@ index 326cf97f..c83a9d0b 100644 types are collectively called \defnadjx{scalar}{types}{type}. \label{term.trivially.copyable.type}% -@@ -5243,7 +5242,7 @@ A type is a \defnadj{literal}{type} if it is: +@@ -5246,7 +5245,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 +412,7 @@ index 326cf97f..c83a9d0b 100644 has all of the following properties: \begin{itemize} \item it has a constexpr destructor\iref{dcl.constexpr}, -@@ -5277,8 +5276,8 @@ will be usable in a constant expression. +@@ -5280,8 +5279,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, @@ -423,7 +423,7 @@ index 326cf97f..c83a9d0b 100644 \pnum A type is \defn{consteval-only} if it is either -@@ -5831,7 +5830,7 @@ ordinary pointers to objects or functions. +@@ -5834,7 +5833,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 +432,7 @@ index 326cf97f..c83a9d0b 100644 \end{itemize} \pnum -@@ -5909,7 +5908,7 @@ layout-compatible types shall +@@ -5912,7 +5911,7 @@ layout-compatible types shall have the same value representation and alignment requirements\iref{basic.align}. \begin{note} @@ -441,7 +441,7 @@ index 326cf97f..c83a9d0b 100644 representation, but their range of valid values is restricted by the extended alignment requirement. \end{note} -@@ -6224,8 +6223,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. +@@ -6227,8 +6226,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. \indextext{program execution|(} \pnum @@ -452,7 +452,7 @@ index 326cf97f..c83a9d0b 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). -@@ -6270,7 +6269,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, +@@ -6273,7 +6272,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 @@ -461,7 +461,7 @@ index 326cf97f..c83a9d0b 100644 the constituent expressions of each default argument\iref{dcl.fct.default} used in the call, or \item -@@ -6301,7 +6300,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope +@@ -6304,7 +6303,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope A \defn{full-expression} is \begin{itemize} \item @@ -471,10 +471,10 @@ index 326cf97f..c83a9d0b 100644 a \grammarterm{constant-expression}\iref{expr.const}, \item diff --git a/source/classes.tex b/source/classes.tex -index a1287851..5fa5e3b8 100644 +index 5f3fc4ea..32338393 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: +@@ -275,10 +275,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 +488,7 @@ index a1287851..5fa5e3b8 100644 for all non-static data members, \item has no non-standard-layout base classes, -@@ -660,7 +660,7 @@ if it is +@@ -661,7 +661,7 @@ if it is \end{itemize} For any other \grammarterm{member-declaration}, each declared entity @@ -497,7 +497,7 @@ index a1287851..5fa5e3b8 100644 is a member of the class, and each such \grammarterm{member-declaration} shall either -@@ -675,7 +675,7 @@ Nested types are classes\iref{class.name,class.nest} and +@@ -676,7 +676,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,7 +506,7 @@ index a1287851..5fa5e3b8 100644 are members of the class. \pnum -@@ -821,9 +821,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali +@@ -822,9 +822,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 @@ -518,7 +518,7 @@ index a1287851..5fa5e3b8 100644 that is not a friend declaration. \pnum -@@ -926,7 +926,7 @@ unscoped enumeration type; and +@@ -927,7 +927,7 @@ unscoped enumeration type; and \pnum In addition, if class \tcode{T} has a user-declared @@ -527,7 +527,7 @@ index a1287851..5fa5e3b8 100644 \tcode{T} shall have a name different from \tcode{T}. \pnum -@@ -976,7 +976,7 @@ non-static data members (in any order) have layout-compatible +@@ -977,7 +977,7 @@ non-static data members (in any order) have layout-compatible types\iref{term.layout.compatible.type}. \pnum @@ -536,7 +536,7 @@ index a1287851..5fa5e3b8 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}; -@@ -2309,7 +2309,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation +@@ -2310,7 +2310,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} @@ -545,7 +545,7 @@ index a1287851..5fa5e3b8 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}. -@@ -6410,7 +6410,7 @@ associated with a \grammarterm{try-block} (if there is one), +@@ -6411,7 +6411,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; @@ -555,7 +555,7 @@ index a1287851..5fa5e3b8 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 a46c9a71..8c70dc05 100644 +index 60165bf4..41471921 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -2017,8 +2017,8 @@ deallocation functions\iref{expr.new}. @@ -618,7 +618,7 @@ index 4d848e8f..6bd0435e 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index 6a71104d..77036c1f 100644 +index e3b455f6..321f6146 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -6116,14 +6116,14 @@ namespace std { @@ -674,7 +674,7 @@ index 6a71104d..77036c1f 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 { +@@ -7139,7 +7139,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{forward_list} if the allocator meets the @@ -683,7 +683,7 @@ index 6a71104d..77036c1f 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{forward_list} is referenced. -@@ -7722,7 +7722,7 @@ predicate. +@@ -7723,7 +7723,7 @@ predicate. \pnum \remarks @@ -692,7 +692,7 @@ index 6a71104d..77036c1f 100644 \end{itemdescr} \indexlibrarymember{unique}{forward_list}% -@@ -7827,7 +7827,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( +@@ -7828,7 +7828,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( \pnum \remarks @@ -701,7 +701,7 @@ index 6a71104d..77036c1f 100644 \end{itemdescr} \indexlibrarymember{reverse}{forward_list}% -@@ -9027,7 +9027,7 @@ A +@@ -9028,7 +9028,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 @@ -710,7 +710,7 @@ index 6a71104d..77036c1f 100644 fast random access to list elements is not supported, but many algorithms only need sequential access anyway. -@@ -9203,7 +9203,7 @@ namespace std { +@@ -9204,7 +9204,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{list} if the allocator meets the @@ -719,7 +719,7 @@ index 6a71104d..77036c1f 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. +@@ -9617,7 +9617,7 @@ applications of the corresponding predicate. \pnum \remarks @@ -728,7 +728,7 @@ index 6a71104d..77036c1f 100644 \end{itemdescr} \indexlibrarymember{unique}{list}% -@@ -9739,7 +9739,7 @@ comparisons, where $N$ is \tcode{size()}. +@@ -9740,7 +9740,7 @@ comparisons, where $N$ is \tcode{size()}. \pnum \remarks @@ -737,7 +737,7 @@ index 6a71104d..77036c1f 100644 \end{itemdescr} \rSec3[list.erasure]{Erasure} -@@ -9847,7 +9847,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, +@@ -9848,7 +9848,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}, @@ -746,7 +746,7 @@ index 6a71104d..77036c1f 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 { +@@ -9986,7 +9986,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{vector} if the allocator meets the @@ -755,8 +755,8 @@ index 6a71104d..77036c1f 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 +@@ -10579,7 +10579,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} @@ -764,7 +764,7 @@ index 6a71104d..77036c1f 100644 is not used to construct these values. \pnum -@@ -15653,9 +15653,9 @@ and +@@ -15655,9 +15655,9 @@ and can be used to instantiate \tcode{queue}. In particular, @@ -776,7 +776,7 @@ index 6a71104d..77036c1f 100644 can be used. \begin{codeblock} -@@ -16010,15 +16010,15 @@ and +@@ -16012,15 +16012,15 @@ and can be used to instantiate \tcode{priority_queue}. In particular, @@ -795,7 +795,7 @@ index 6a71104d..77036c1f 100644 \begin{codeblock} namespace std { -@@ -16563,10 +16563,10 @@ and +@@ -16565,10 +16565,10 @@ and can be used to instantiate \tcode{stack}. In particular, @@ -810,7 +810,7 @@ index 6a71104d..77036c1f 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index 6214e7ef..6960c3e5 100644 +index ee70278b..a8c0ecb3 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -930,7 +930,7 @@ index 6214e7ef..6960c3e5 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7725,7 +7724,7 @@ the initializer is +@@ -7729,7 +7728,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} @@ -939,7 +939,7 @@ index 6214e7ef..6960c3e5 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. -@@ -7876,7 +7875,7 @@ is not looked up and is introduced by +@@ -7880,7 +7879,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}, @@ -948,7 +948,7 @@ index 6214e7ef..6960c3e5 100644 \pnum \indextext{constant!enumeration}% -@@ -7958,8 +7957,9 @@ If the underlying type is fixed, the type of each enumerator +@@ -7962,8 +7961,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} @@ -960,7 +960,7 @@ index 6214e7ef..6960c3e5 100644 If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as -@@ -7968,8 +7968,9 @@ follows: +@@ -7972,8 +7972,9 @@ follows: \begin{itemize} \item If an initializer is specified for an enumerator, the @@ -972,7 +972,7 @@ index 6214e7ef..6960c3e5 100644 unscoped enumeration type, the enumerator has the underlying type of that enumeration type, otherwise it has the same type as the expression. -@@ -8041,7 +8042,7 @@ if they have the same underlying type. +@@ -8045,7 +8046,7 @@ if they have the same underlying type. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -981,7 +981,7 @@ index 6214e7ef..6960c3e5 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8324,7 +8325,7 @@ appertains to the namespace being defined or extended. +@@ -8328,7 +8329,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 @@ -990,7 +990,7 @@ index 6214e7ef..6960c3e5 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 -@@ -9147,7 +9148,7 @@ different language linkages are distinct types even if they are +@@ -9151,7 +9152,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -999,7 +999,7 @@ index 6214e7ef..6960c3e5 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9477,19 +9478,19 @@ For each individual attribute, the form of the +@@ -9481,19 +9482,19 @@ 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 @@ -1024,7 +1024,7 @@ index 6214e7ef..6960c3e5 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9600,7 +9601,7 @@ declaration, the program is ill-formed. +@@ -9604,7 +9605,7 @@ declaration, the program is ill-formed. \pnum An \grammarterm{alignment-specifier} of the form \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same @@ -1033,7 +1033,7 @@ index 6214e7ef..6960c3e5 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9780,7 +9781,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9784,7 +9785,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -1043,7 +1043,7 @@ index 6214e7ef..6960c3e5 100644 such a statement is a fallthrough statement. No \grammarterm{attribute-argument-clause} shall be present. diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index d16f516a..df926181 100644 +index be2b863f..e653b348 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -505,13 +505,13 @@ the current state of \tcode{NDEBUG} each time that @@ -1221,7 +1221,7 @@ index ba2d34d0..cd476d28 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index c6c49338..8e108f2c 100644 +index 4266aed5..d9469cf9 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -2012,7 +2012,7 @@ index c6c49338..8e108f2c 100644 \item diff --git a/source/future.tex b/source/future.tex -index f94b2c33..4c6942b4 100644 +index 5022a94d..fc805a6e 100644 --- a/source/future.tex +++ b/source/future.tex @@ -14,7 +14,7 @@ is defined as: @@ -2049,7 +2049,7 @@ index f94b2c33..4c6942b4 100644 the \oldconcept{TransformationTrait} requirements with a base characteristic of \tcode{integral_constant}. diff --git a/source/intro.tex b/source/intro.tex -index e4014b96..abc66134 100644 +index 880da163..8fb36735 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -105,8 +105,8 @@ Reads of scalar objects are described in \ref{conv.lval} and @@ -2108,7 +2108,7 @@ index e4014b96..abc66134 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 7381d9c3..987b4d2d 100644 +index 2de81f0e..af9dce40 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -555,7 +555,7 @@ is initialized, @@ -2428,7 +2428,7 @@ index 7381d9c3..987b4d2d 100644 \pnum \throws diff --git a/source/iterators.tex b/source/iterators.tex -index e0116c79..7acd9d21 100644 +index 6a21fdf1..98944de7 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -729,7 +729,7 @@ is undefined. @@ -2440,7 +2440,7 @@ index e0116c79..7acd9d21 100644 if all operations provided to meet iterator category requirements are constexpr functions. \begin{note} -@@ -6853,7 +6853,7 @@ ostream_iterator& operator++(int); +@@ -6851,7 +6851,7 @@ ostream_iterator& operator++(int); The class template \tcode{istreambuf_iterator} @@ -2449,7 +2449,7 @@ index e0116c79..7acd9d21 100644 reads successive \textit{characters} from the streambuf for which it was constructed. -@@ -6978,7 +6978,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; +@@ -6976,7 +6976,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; Initializes \tcode{sbuf_} with \keyword{nullptr}. \end{itemdescr} @@ -2457,7 +2457,7 @@ index e0116c79..7acd9d21 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(istream_type& s) noexcept; -@@ -6990,7 +6989,6 @@ istreambuf_iterator(istream_type& s) noexcept; +@@ -6988,7 +6987,6 @@ istreambuf_iterator(istream_type& s) noexcept; Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2465,7 +2465,7 @@ index e0116c79..7acd9d21 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(streambuf_type* s) noexcept; -@@ -7002,7 +7000,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; +@@ -7000,7 +6998,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; Initializes \tcode{sbuf_} with \tcode{s}. \end{itemdescr} @@ -2473,7 +2473,7 @@ index e0116c79..7acd9d21 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept; -@@ -7153,7 +7150,6 @@ is not a null pointer. +@@ -7151,7 +7148,6 @@ is not a null pointer. Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2482,7 +2482,7 @@ index e0116c79..7acd9d21 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index 7c818101..372fc8c2 100644 +index 414f0b0d..c14e162a 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2496,7 +2496,7 @@ index 7c818101..372fc8c2 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 -@@ -2294,7 +2294,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) +@@ -2298,7 +2298,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}. @@ -2506,7 +2506,7 @@ index 7c818101..372fc8c2 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 c6339101..c3fcf8d5 100644 +index 4444d26a..4bd46d8f 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2769,7 +2769,7 @@ 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 7b1f65de..4457140a 100644 +index 24d01efc..e7613b33 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -3424,7 +3424,7 @@ index 34018bd6..785798f7 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 cc13d13f..e943eef1 100644 +index 5a93b51d..e0a6f1ca 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -5528,13 +5528,13 @@ The contents and meaning of the header \libheaderdef{cstring} @@ -3454,7 +3454,7 @@ index cc13d13f..e943eef1 100644 \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index 19e19d6f..cee9e901 100644 +index ad8cbc54..f3691cd9 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3727,7 +3727,7 @@ index 19e19d6f..cee9e901 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 9ef3133a..3894c832 100644 +index 2a020516..2133a25e 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -687,7 +687,7 @@ struct A {}; @@ -3899,7 +3899,7 @@ index 9ef3133a..3894c832 100644 apply to member template names. A destructor shall not be a member template. -@@ -3219,7 +3219,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. +@@ -3221,7 +3221,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. @@ -3908,7 +3908,7 @@ index 9ef3133a..3894c832 100644 \grammarterm{identifier}. \item In a \grammarterm{pack-index-expression}; -@@ -3842,9 +3842,9 @@ primary template. +@@ -3844,9 +3844,9 @@ primary template. \pnum A partial specialization matches a given actual template argument list if the template arguments of the partial specialization can be @@ -3921,7 +3921,7 @@ index 9ef3133a..3894c832 100644 \begin{example} \begin{codeblock} template class A { }; // \#1 -@@ -3906,14 +3906,14 @@ of the primary template. +@@ -3908,14 +3908,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 @@ -3939,7 +3939,7 @@ index 9ef3133a..3894c832 100644 as the corresponding partial specialization. \item Each function template -@@ -4119,8 +4119,8 @@ void h(int* p) { +@@ -4121,8 +4121,8 @@ void h(int* p) { \end{example} \pnum @@ -3950,7 +3950,7 @@ index 9ef3133a..3894c832 100644 \pnum The signature of a function template -@@ -4171,7 +4171,7 @@ For example, a template type parameter can be used in the +@@ -4173,7 +4173,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 @@ -3959,7 +3959,7 @@ index 9ef3133a..3894c832 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. -@@ -4341,8 +4341,8 @@ function template +@@ -4343,8 +4343,8 @@ function template specialization is selected to match a placement operator new\iref{basic.stc.dynamic.deallocation,expr.new}; \item @@ -3970,7 +3970,7 @@ index 9ef3133a..3894c832 100644 a function template specialization. \end{itemize} -@@ -4735,7 +4735,7 @@ A \grammarterm{concept-definition} +@@ -4737,7 +4737,7 @@ A \grammarterm{concept-definition} shall inhabit a namespace scope\iref{basic.scope.namespace}. \pnum @@ -3979,7 +3979,7 @@ index 9ef3133a..3894c832 100644 \pnum A concept is not instantiated\iref{temp.spec}. -@@ -5062,7 +5062,7 @@ was a pack expansion and the corresponding pack is empty, or +@@ -5064,7 +5064,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 @@ -3988,7 +3988,7 @@ index 9ef3133a..3894c832 100644 instantiation uses \begin{itemize} \item the value of a const object of integral or unscoped enumeration type or -@@ -5315,7 +5315,7 @@ any of the expressions +@@ -5317,7 +5317,7 @@ any of the expressions or \grammarterm{braced-init-list}{s} in the \grammarterm{expression-list} @@ -3997,7 +3997,7 @@ index 9ef3133a..3894c832 100644 \item the \grammarterm{unqualified-id} is a \grammarterm{template-id} in which any of the template arguments depends -@@ -5375,7 +5375,7 @@ if it is +@@ -5377,7 +5377,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, @@ -4006,7 +4006,7 @@ index 9ef3133a..3894c832 100644 \item in the definition of a primary class template or a member of a primary class template, the name of the -@@ -5654,7 +5654,7 @@ used without a \grammarterm{template-argument-list}. +@@ -5656,7 +5656,7 @@ used without a \grammarterm{template-argument-list}. \end{footnote} \item a \grammarterm{pack-index-specifier}, \item denoted by \tcode{decltype(}\grammarterm{expression}{}\tcode{)}, @@ -4015,7 +4015,7 @@ index 9ef3133a..3894c832 100644 \item denoted by a \grammarterm{splice-type-specifier} in which either the \grammarterm{splice-specifier} or \grammarterm{splice-specialization-specifier} -@@ -5806,7 +5806,7 @@ see~\ref{support.types}. +@@ -5808,7 +5808,7 @@ see~\ref{support.types}. \end{note} \pnum @@ -4024,7 +4024,7 @@ index 9ef3133a..3894c832 100644 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 -@@ -5950,7 +5950,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the +@@ -5952,7 +5952,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} @@ -4033,7 +4033,7 @@ index 9ef3133a..3894c832 100644 the result of the evaluation refers to a templated entity that is an object with static or thread storage duration or a member function. -@@ -6173,7 +6173,7 @@ within a translation unit. +@@ -6175,7 +6175,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 @@ -4042,7 +4042,7 @@ index 9ef3133a..3894c832 100644 the program is ill-formed, no diagnostic required. \pnum -@@ -6486,7 +6486,7 @@ of type +@@ -6488,7 +6488,7 @@ of type \pnum If a function declaration acquired its function type through @@ -4051,7 +4051,7 @@ index 9ef3133a..3894c832 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -6567,7 +6567,7 @@ X ch; // error: incomplete type \tcode{X} +@@ -6569,7 +6569,7 @@ X ch; // error: incomplete type \tcode{X} \end{example} \begin{note} Within a template declaration, @@ -4060,7 +4060,7 @@ index 9ef3133a..3894c832 100644 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 -@@ -6745,7 +6745,7 @@ void x() { +@@ -6747,7 +6747,7 @@ void x() { \end{example} \pnum @@ -4069,7 +4069,7 @@ index 9ef3133a..3894c832 100644 can be determined without instantiating a class template definition, it is unspecified whether that instantiation actually takes place. \begin{example} -@@ -7082,7 +7082,7 @@ If an entity is the subject of both an explicit instantiation declaration +@@ -7084,7 +7084,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 @@ -4078,7 +4078,7 @@ index 9ef3133a..3894c832 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. -@@ -8147,7 +8147,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. +@@ -8149,7 +8149,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, @@ -4087,7 +4087,7 @@ index 9ef3133a..3894c832 100644 would be required to convert the \grammarterm{template-argument} of type \tcode{int} to \tcode{signed char}, -@@ -8256,8 +8256,8 @@ is not a reference type: +@@ -8258,8 +8258,8 @@ is not a reference type: \item If \tcode{A} @@ -4098,7 +4098,7 @@ index 9ef3133a..3894c832 100644 \tcode{A} for type deduction; otherwise, -@@ -8265,7 +8265,7 @@ otherwise, +@@ -8267,7 +8267,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -4107,7 +4107,7 @@ index 9ef3133a..3894c832 100644 of \tcode{A} for type -@@ -8361,8 +8361,8 @@ The transformed \tcode{A} +@@ -8363,8 +8363,8 @@ The transformed \tcode{A} can be another pointer or pointer-to-member type that can be converted to the deduced \tcode{A} @@ -4118,7 +4118,7 @@ index 9ef3133a..3894c832 100644 \item If -@@ -8495,7 +8495,7 @@ void test() { +@@ -8497,7 +8497,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -4127,7 +4127,7 @@ index 9ef3133a..3894c832 100644 If there is a target, the function template's function type and the target type are used as the types of -@@ -8542,7 +8542,7 @@ is not a reference type: +@@ -8544,7 +8544,7 @@ is not a reference type: If \tcode{P} is an array type, the pointer type produced by the @@ -4136,7 +4136,7 @@ index 9ef3133a..3894c832 100644 \tcode{P} for type deduction; otherwise, -@@ -8550,7 +8550,7 @@ deduction; otherwise, +@@ -8552,7 +8552,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -4145,7 +4145,7 @@ index 9ef3133a..3894c832 100644 \tcode{P} for type deduction; otherwise, -@@ -8641,7 +8641,7 @@ after a function has been selected. +@@ -8643,7 +8643,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 @@ -4154,7 +4154,7 @@ index 9ef3133a..3894c832 100644 type is used. \end{itemize} -@@ -9157,7 +9157,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the +@@ -9159,7 +9159,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$. @@ -4163,7 +4163,7 @@ index 9ef3133a..3894c832 100644 originally a pack expansion: \begin{itemize} \item if \tcode{P} does not contain a template argument corresponding to -@@ -9220,7 +9220,7 @@ each remaining parameter type in the parameter-type-list +@@ -9222,7 +9222,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. @@ -4172,7 +4172,7 @@ index 9ef3133a..3894c832 100644 originally a function parameter pack: \begin{itemize} \item if \tcode{P} does not contain a function parameter type corresponding to -@@ -9514,8 +9514,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod +@@ -9516,8 +9516,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 @@ -4184,7 +4184,7 @@ index 9ef3133a..3894c832 100644 \tcode{operator new}\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 6202596d..b2e9462e 100644 +index 68206c12..1b18d89d 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4207,7 +4207,7 @@ index 6202596d..b2e9462e 100644 \begin{itemdecl} m.try_lock_for(rel_time) -@@ -7316,7 +7316,7 @@ namespace std { +@@ -7330,7 +7330,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -4216,7 +4216,7 @@ index 6202596d..b2e9462e 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 -@@ -7360,7 +7360,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on +@@ -7374,7 +7374,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on a single mutex appears to occur in a single total order. \begin{note} This @@ -4225,7 +4225,7 @@ index 6202596d..b2e9462e 100644 mutex. \end{note} \begin{note} -@@ -7440,7 +7440,7 @@ in the absence of contending mutex acquisitions. +@@ -7454,7 +7454,7 @@ in the absence of contending mutex acquisitions. \pnum \sync If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations @@ -4234,7 +4234,7 @@ index 6202596d..b2e9462e 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 -@@ -7476,7 +7476,7 @@ Releases the calling thread's ownership of the mutex. +@@ -7490,7 +7490,7 @@ Releases the calling thread's ownership of the mutex. \pnum \sync @@ -4243,7 +4243,7 @@ index 6202596d..b2e9462e 100644 lock operations that obtain ownership on the same object. \pnum -@@ -7605,9 +7605,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, +@@ -7619,9 +7619,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 @@ -4255,7 +4255,7 @@ index 6202596d..b2e9462e 100644 \begin{note} The timed mutex types meet the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. -@@ -7897,7 +7897,7 @@ Releases a shared lock on the mutex held by the calling thread. +@@ -7911,7 +7911,7 @@ Releases a shared lock on the mutex held by the calling thread. \pnum \sync @@ -4264,7 +4264,7 @@ index 6202596d..b2e9462e 100644 \tcode{lock()} operations that obtain ownership on the same object. \pnum -@@ -8001,7 +8001,7 @@ meet the requirements set out below. In this description, +@@ -8015,7 +8015,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 @@ -4273,7 +4273,7 @@ index 6202596d..b2e9462e 100644 \begin{note} The shared timed mutex types meet the \oldconcept{SharedTimedLockable} requirements\iref{thread.req.lockable.shared.timed}. -@@ -8212,7 +8212,7 @@ namespace std { +@@ -8226,7 +8226,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 @@ -4282,7 +4282,7 @@ index 6202596d..b2e9462e 100644 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} object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} -@@ -8285,7 +8285,7 @@ namespace std { +@@ -8299,7 +8299,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 @@ -4291,7 +4291,7 @@ index 6202596d..b2e9462e 100644 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} object. -@@ -9442,7 +9442,7 @@ earlier returning execution. +@@ -9456,7 +9456,7 @@ earlier returning execution. \pnum \sync For any given \tcode{once_flag}: all active executions occur in a total @@ -4300,7 +4300,7 @@ index 6202596d..b2e9462e 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -11405,22 +11405,21 @@ the state object. +@@ -11419,22 +11419,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4327,7 +4327,7 @@ index 6202596d..b2e9462e 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 -@@ -11739,8 +11738,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -11753,8 +11752,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 @@ -4338,7 +4338,7 @@ index 6202596d..b2e9462e 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -12050,7 +12049,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -12064,7 +12063,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 @@ -4347,7 +4347,7 @@ index 6202596d..b2e9462e 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -12499,7 +12498,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -12513,7 +12512,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -4406,7 +4406,7 @@ index 2e3e9b55..2939c865 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index 0a26e026..faf5d946 100644 +index db10d7c9..6febc3c3 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -104,15 +104,15 @@ namespace std { @@ -4495,11 +4495,11 @@ index 0a26e026..faf5d946 100644 2.43.0 -From b35c2a39f115c496d62b54a79e8377f38162bd87 Mon Sep 17 00:00:00 2001 +From 857f2971669f68909d9b271c9e98ce2cea8c1537 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 -Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove - range index entry with the same key. +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 +- @@ -4507,7 +4507,7 @@ Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index 987b4d2d..8a5caca8 100644 +index af9dce40..0f649a76 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -13919,7 +13919,7 @@ without an intervening \grammarterm{root-directory} element. @@ -4520,7 +4520,7 @@ index 987b4d2d..8a5caca8 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index 3894c832..c17177bc 100644 +index 2133a25e..63baaaf8 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -2085,7 +2085,6 @@ so it does match \#2. @@ -4548,11 +4548,11 @@ index 3894c832..c17177bc 100644 2.43.0 -From f0016951bd4aa94a2fe8f54e7c2b726cad6a0623 Mon Sep 17 00:00:00 2001 +From 2384aaae34a7f18462dee0e59147228df6781c36 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 -Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code - and literal fragments. +Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and + literal fragments. --- source/exceptions.tex | 4 +- @@ -4579,7 +4579,7 @@ index cd476d28..df489ab5 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index 372fc8c2..67fc8aaf 100644 +index c14e162a..5e38b875 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -330,43 +330,43 @@ the numerical value has no other meaning in this context. @@ -4663,7 +4663,7 @@ index 372fc8c2..67fc8aaf 100644 \end{floattable} \pnum -@@ -603,7 +603,7 @@ given character: +@@ -606,7 +606,7 @@ given character: \item \indextext{literal!string!raw}% If the next character begins a sequence of characters that could be the prefix @@ -4672,7 +4672,7 @@ index 372fc8c2..67fc8aaf 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 -@@ -611,7 +611,7 @@ shall apply before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting +@@ -614,7 +614,7 @@ shall apply 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} @@ -4681,7 +4681,7 @@ index 372fc8c2..67fc8aaf 100644 \end{ncbnf} \item Otherwise, if the next three characters are \tcode{<::} and the subsequent character -@@ -746,15 +746,15 @@ depending on the implementation. +@@ -749,15 +749,15 @@ depending on the implementation. \begin{bnf} \nontermdef{pp-number}\br digit\br @@ -4705,7 +4705,7 @@ index 372fc8c2..67fc8aaf 100644 \end{bnf} \pnum -@@ -1181,19 +1181,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1185,19 +1185,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 @@ -4728,7 +4728,7 @@ index 372fc8c2..67fc8aaf 100644 \end{bnf} \begin{bnf} -@@ -1224,14 +1224,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1228,14 +1228,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{hexadecimal-digit-sequence}\br hexadecimal-digit\br @@ -4747,7 +4747,7 @@ index 372fc8c2..67fc8aaf 100644 \end{bnf} \begin{bnf} -@@ -1246,17 +1246,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1250,17 +1250,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{unsigned-suffix} \textnormal{one of}\br @@ -4768,7 +4768,7 @@ index 372fc8c2..67fc8aaf 100644 \end{bnf} \begin{bnf} -@@ -1295,7 +1295,7 @@ when determining the value. +@@ -1299,7 +1299,7 @@ when determining the value. \pnum The \grammarterm{hexadecimal-digit}s @@ -4777,7 +4777,7 @@ index 372fc8c2..67fc8aaf 100644 have decimal values ten through fifteen. \begin{example} The number twelve can be written \tcode{12}, \tcode{014}, -@@ -1339,7 +1339,7 @@ none & +@@ -1343,7 +1343,7 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4786,7 +4786,7 @@ index 372fc8c2..67fc8aaf 100644 \tcode{unsigned int} & \tcode{unsigned int}\\ & -@@ -1348,7 +1348,7 @@ none & +@@ -1352,7 +1352,7 @@ none & & \tcode{unsigned long long int} & \tcode{unsigned long long int}\\\hline @@ -4795,7 +4795,7 @@ index 372fc8c2..67fc8aaf 100644 \tcode{long int} & \tcode{long int}\\ & -@@ -1360,22 +1360,22 @@ none & +@@ -1364,22 +1364,22 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4823,7 +4823,7 @@ index 372fc8c2..67fc8aaf 100644 & \\\hline \tcode{z} or \tcode{Z} & -@@ -1423,12 +1423,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1427,12 +1427,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \indextext{literal!character}% \begin{bnf} \nontermdef{character-literal}\br @@ -4838,7 +4838,7 @@ index 372fc8c2..67fc8aaf 100644 \end{bnf} \begin{bnf} -@@ -1479,16 +1479,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1483,16 +1483,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{octal-escape-sequence}\br @@ -4861,7 +4861,7 @@ index 372fc8c2..67fc8aaf 100644 \end{bnf} \begin{bnf} -@@ -1676,42 +1676,42 @@ is supported for compatibility with \CppXIV{} and C. +@@ -1680,42 +1680,42 @@ is supported for compatibility with \CppXIV{} and C. \begin{bnf} \nontermdef{fractional-constant}\br @@ -4915,7 +4915,7 @@ index 372fc8c2..67fc8aaf 100644 \end{bnf} \pnum -@@ -1796,8 +1796,8 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1800,8 +1800,8 @@ chosen in an \impldef{choice of larger or smaller value of \indextext{literal!string}% \begin{bnf} \nontermdef{string-literal}\br @@ -4926,7 +4926,7 @@ index 372fc8c2..67fc8aaf 100644 \end{bnf} \begin{bnf} -@@ -1820,7 +1820,7 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1824,7 +1824,7 @@ chosen in an \impldef{choice of larger or smaller value of \begin{bnf} \nontermdef{raw-string}\br @@ -4935,7 +4935,7 @@ index 372fc8c2..67fc8aaf 100644 \end{bnf} \begin{bnf} -@@ -1907,7 +1907,7 @@ UTF-32 & +@@ -1911,7 +1911,7 @@ UTF-32 & \pnum \indextext{literal!string!raw}% @@ -5965,10 +5965,10 @@ index 2939c865..c37f5bba 100644 2.43.0 -From 6b869084fe0b2cec85d080f2babb0c92c9b9adcc Mon Sep 17 00:00:00 2001 +From c789975472923e49702e7ae17f082e17e2da368b Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 -Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. +Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. --- source/algorithms.tex | 4 ---- @@ -6000,7 +6000,7 @@ Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. 26 files changed, 272 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index afec9113..011292f7 100644 +index 09938442..3af19872 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -8698,7 +8698,6 @@ but stronger than those for a partial ordering. @@ -6036,10 +6036,10 @@ index afec9113..011292f7 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index c83a9d0b..e84497ce 100644 +index 8411bcae..0cf54882 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -284,7 +284,6 @@ int X::y = 1; // defines \tcode{X::y} +@@ -287,7 +287,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} X anX; // defines \tcode{anX} @@ -6047,7 +6047,7 @@ index c83a9d0b..e84497ce 100644 \end{codeblock} whereas these are just declarations: \begin{codeblock} -@@ -821,7 +820,6 @@ compute equivalent values\iref{expr.eq}. +@@ -824,7 +823,6 @@ compute equivalent values\iref{expr.eq}. \pnum For the purposes of the preceding requirements: @@ -6055,7 +6055,7 @@ index c83a9d0b..e84497ce 100644 \begin{itemize} \item If \tcode{D} is a class with an implicitly-declared constructor\iref{class.default.ctor,class.copy.ctor}, -@@ -6105,7 +6103,6 @@ has the top-level cv-qualifier \keyword{volatile}. +@@ -6108,7 +6106,6 @@ has the top-level cv-qualifier \keyword{volatile}. \pnum Every integer type has an \term{integer conversion rank} defined as follows: @@ -6064,10 +6064,10 @@ index c83a9d0b..e84497ce 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 5fa5e3b8..0b409248 100644 +index 32338393..fcf3f025 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -1716,7 +1716,6 @@ for each non-static data member of +@@ -1717,7 +1717,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} @@ -6075,7 +6075,7 @@ index 5fa5e3b8..0b409248 100644 \indextext{constructor!move!non-trivial}% otherwise the copy/move constructor is \defnx{non-trivial}{constructor!copy!nontrivial}. -@@ -3337,7 +3336,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat +@@ -3338,7 +3337,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: @@ -6083,7 +6083,7 @@ index 5fa5e3b8..0b409248 100644 \begin{codeblock} u.m.~M(); new (&u.n) N; -@@ -3515,7 +3513,6 @@ A local class cannot have static data members\iref{class.static.data}. +@@ -3516,7 +3514,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: @@ -6091,7 +6091,7 @@ index 5fa5e3b8..0b409248 100644 \begin{bnf} \nontermdef{base-clause}\br \terminal{:} base-specifier-list -@@ -5490,7 +5487,6 @@ initializers for direct and virtual base class subobjects and +@@ -5491,7 +5488,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 @@ -6099,7 +6099,7 @@ index 5fa5e3b8..0b409248 100644 \begin{bnf} \nontermdef{ctor-initializer}\br \terminal{:} mem-initializer-list -@@ -5961,7 +5957,6 @@ public: +@@ -5962,7 +5958,6 @@ public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; \end{codeblock} @@ -6107,7 +6107,7 @@ index 5fa5e3b8..0b409248 100644 \end{example} \rSec2[class.inhctor.init]{Initialization by inherited constructor}% -@@ -6617,7 +6612,6 @@ any non-static data member of \tcode{C} is of reference type or +@@ -6618,7 +6613,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 @@ -6115,7 +6115,7 @@ index 5fa5e3b8..0b409248 100644 \begin{itemize} \item \tcode{a} or \tcode{b} is of class or enumeration type and -@@ -6738,7 +6732,6 @@ The \defnadj{synthesized}{three-way comparison} +@@ -6739,7 +6733,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: @@ -6123,7 +6123,7 @@ index 5fa5e3b8..0b409248 100644 \begin{itemize} \item If \tcode{a <=> b} is usable\iref{class.compare.default} and -@@ -6838,7 +6831,6 @@ The \defn{common comparison type} \tcode{U} +@@ -6839,7 +6832,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: @@ -6132,7 +6132,7 @@ index 5fa5e3b8..0b409248 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 8c70dc05..b258ea47 100644 +index 41471921..f67b16a1 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -2619,7 +2619,6 @@ Overspecification. @@ -6151,7 +6151,7 @@ index 8c70dc05..b258ea47 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}; -@@ -3771,7 +3769,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in +@@ -3768,7 +3766,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in \pnum Header \libheaderref{cstring}: The following functions have different declarations: @@ -6159,7 +6159,7 @@ index 8c70dc05..b258ea47 100644 \begin{itemize} \item \tcode{strchr} \item \tcode{strpbrk} -@@ -3785,7 +3782,6 @@ Subclause \ref{cstring.syn} describes the changes. +@@ -3782,7 +3779,6 @@ Subclause \ref{cstring.syn} describes the changes. \pnum Header \libheaderref{cwchar}: The following functions have different declarations: @@ -6167,7 +6167,7 @@ index 8c70dc05..b258ea47 100644 \begin{itemize} \item \tcode{wcschr} \item \tcode{wcspbrk} -@@ -3810,7 +3806,6 @@ in addition to the names declared in +@@ -3807,7 +3803,6 @@ in addition to the names declared in \pnum Header \libheaderref{cstdlib}: The following functions have different behavior: @@ -6305,7 +6305,7 @@ index 6bd0435e..0bfd8612 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 77036c1f..e49a887b 100644 +index 321f6146..1e5a9871 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -685,7 +685,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6355,7 +6355,7 @@ index 77036c1f..e49a887b 100644 \begin{codeblock} template using @\placeholdernc{iter-value-type}@ = typename iterator_traits::value_type; // \expos -@@ -9325,7 +9319,6 @@ If \tcode{size() < sz}, +@@ -9326,7 +9320,6 @@ If \tcode{size() < sz}, appends \tcode{sz - size()} default-inserted elements to the sequence. If \tcode{sz <= size()}, equivalent to: @@ -6363,7 +6363,7 @@ index 77036c1f..e49a887b 100644 \begin{codeblock} list::iterator it = begin(); advance(it, sz); -@@ -10614,13 +10607,11 @@ static constexpr void swap(reference x, reference y) noexcept; +@@ -10615,13 +10608,11 @@ static constexpr void swap(reference x, reference y) noexcept; \pnum \effects Exchanges the contents of \tcode{x} and \tcode{y} as if by: @@ -6377,7 +6377,7 @@ index 77036c1f..e49a887b 100644 \end{itemdescr} \begin{itemdecl} -@@ -20114,7 +20105,6 @@ For each of +@@ -20116,7 +20107,6 @@ For each of \tcode{stack}, the library provides the following formatter specialization where \tcode{\placeholder{adaptor-type}} is the name of the template: @@ -6385,7 +6385,7 @@ index 77036c1f..e49a887b 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -24306,7 +24296,6 @@ typename A::offset_policy +@@ -24308,7 +24298,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6393,7 +6393,7 @@ index 77036c1f..e49a887b 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -25276,7 +25265,6 @@ the \tcode{SliceSpecifier} arguments. +@@ -25278,7 +25267,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: @@ -6401,7 +6401,7 @@ index 77036c1f..e49a887b 100644 \begin{itemize} \item let \tcode{index_type} be \begin{itemize} -@@ -25540,7 +25528,6 @@ $\le \tcode{src.extent($k$)}$ +@@ -25542,7 +25530,6 @@ $\le \tcode{src.extent($k$)}$ \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: @@ -6409,7 +6409,7 @@ index 77036c1f..e49a887b 100644 \begin{itemize} \item %FIXME: I think we want the count here, "number" is ambiguous. -@@ -25551,7 +25538,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and +@@ -25553,7 +25540,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: @@ -6417,7 +6417,7 @@ index 77036c1f..e49a887b 100644 \begin{itemize} \item \tcode{Extents::static_extent($k$)} -@@ -25591,7 +25577,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that +@@ -25593,7 +25579,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: @@ -6426,7 +6426,7 @@ index 77036c1f..e49a887b 100644 \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 6960c3e5..2bd0300a 100644 +index a8c0ecb3..1e8c45d2 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1593,7 +1593,6 @@ a partial specialization\iref{temp.spec.partial}, @@ -6485,7 +6485,7 @@ index 6960c3e5..2bd0300a 100644 \end{itemize} \pnum -@@ -7735,7 +7728,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, +@@ -7739,7 +7732,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, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -6493,7 +6493,7 @@ index 6960c3e5..2bd0300a 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7867,7 +7859,6 @@ struct S { +@@ -7871,7 +7863,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6501,7 +6501,7 @@ index 6960c3e5..2bd0300a 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7964,7 +7955,6 @@ If the underlying +@@ -7968,7 +7959,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6509,7 +6509,7 @@ index 6960c3e5..2bd0300a 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8423,7 +8413,6 @@ void h() { +@@ -8427,7 +8417,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} according to the following grammar: @@ -6517,7 +6517,7 @@ index 6960c3e5..2bd0300a 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8597,7 +8586,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8601,7 +8590,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, @@ -6525,7 +6525,7 @@ index 6960c3e5..2bd0300a 100644 \begin{codeblock} namespace A { class X { }; -@@ -9150,7 +9138,6 @@ otherwise identical. +@@ -9154,7 +9142,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6533,7 +6533,7 @@ index 6960c3e5..2bd0300a 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -10019,7 +10006,6 @@ may be applied to a function or a lambda call operator or +@@ -10023,7 +10010,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: @@ -6567,7 +6567,7 @@ index df489ab5..17fe2711 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 8e108f2c..9ae43f93 100644 +index d9469cf9..61abb53e 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -464,7 +464,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -6771,7 +6771,7 @@ index 8e108f2c..9ae43f93 100644 \rSec2[expr.yield]{Yielding a value}% diff --git a/source/future.tex b/source/future.tex -index 4c6942b4..04969113 100644 +index fc805a6e..ab7c724e 100644 --- a/source/future.tex +++ b/source/future.tex @@ -283,7 +283,6 @@ shown in the above synopsis. @@ -6839,7 +6839,7 @@ index 4c6942b4..04969113 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index 8a5caca8..19837154 100644 +index 0f649a76..a34a3f84 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -2102,14 +2102,12 @@ does nothing. @@ -6962,7 +6962,7 @@ index 8a5caca8..19837154 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 7acd9d21..85213808 100644 +index 98944de7..315cca9e 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -948,7 +948,6 @@ may be defined as \keyword{void}. @@ -6989,7 +6989,7 @@ index 7acd9d21..85213808 100644 \begin{itemize} \item \tcode{iter_move(E)}, if \tcode{E} has class or enumeration type and -@@ -2793,7 +2790,6 @@ namespace std { +@@ -2791,7 +2788,6 @@ namespace std { A program-defined iterator \tcode{BinaryTreeIterator} can be included into the bidirectional iterator category by specializing the \tcode{iterator_traits} template: @@ -6997,7 +6997,7 @@ index 7acd9d21..85213808 100644 \begin{codeblock} template struct iterator_traits> { using iterator_category = bidirectional_iterator_tag; -@@ -2811,7 +2807,6 @@ If +@@ -2809,7 +2805,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: @@ -7005,7 +7005,7 @@ index 7acd9d21..85213808 100644 \begin{codeblock} template inline void -@@ -3398,7 +3393,6 @@ As if by: +@@ -3396,7 +3391,6 @@ As if by: Iterator tmp = current; return *--tmp; \end{codeblock} @@ -7013,7 +7013,7 @@ index 7acd9d21..85213808 100644 \end{itemdescr} \indexlibrarymember{operator->}{reverse_iterator}% -@@ -4780,7 +4774,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 +@@ -4778,7 +4772,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} @@ -7021,7 +7021,7 @@ index 7acd9d21..85213808 100644 \end{example} \rSec3[move.iterator]{Class template \tcode{move_iterator}} -@@ -6499,7 +6492,6 @@ partial_sum(istream_iterator(cin), +@@ -6497,7 +6490,6 @@ partial_sum(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "@\textbackslash@n")); \end{codeblock} @@ -7030,7 +7030,7 @@ index 7acd9d21..85213808 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index c3fcf8d5..729bd1dc 100644 +index 4bd46d8f..76ea7917 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. @@ -7178,7 +7178,7 @@ index efd4eb00..12180661 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index 8ad74c93..92ff4466 100644 +index e4a250b1..deb35ac5 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1571,7 +1571,6 @@ when considered as an unevaluated operand. @@ -7198,7 +7198,7 @@ index 8ad74c93..92ff4466 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index 08347e95..0e7255dd 100644 +index 6eda2087..e6dedae6 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -1943,7 +1943,6 @@ is_base_of_v // \tcode{false} @@ -7218,7 +7218,7 @@ index 08347e95..0e7255dd 100644 \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 4457140a..52a0e3ec 100644 +index e7613b33..accd8c6d 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); @@ -7461,7 +7461,7 @@ index a6fd4d0f..da2270a0 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 2a606adf..8b0f4e38 100644 +index 49105075..1ce5326c 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7528,7 +7528,7 @@ index 2a606adf..8b0f4e38 100644 \begin{codeblock} template concept @\defexposconceptnc{simple-view}@ = // \expos -@@ -5886,7 +5878,6 @@ If \tcode{decltype((F))} does not model +@@ -5888,7 +5880,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: @@ -7536,7 +7536,7 @@ index 2a606adf..8b0f4e38 100644 \begin{itemize} \item If \tcode{T} is a specialization -@@ -5907,7 +5898,6 @@ then +@@ -5909,7 +5900,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: @@ -7544,7 +7544,7 @@ index 2a606adf..8b0f4e38 100644 \begin{itemize} \item if \tcode{T} is a specialization of \tcode{span}, then \tcode{U} is \tcode{span}; -@@ -6369,7 +6359,6 @@ If \tcode{decltype((F))} does not model +@@ -6371,7 +6361,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: @@ -7552,7 +7552,7 @@ index 2a606adf..8b0f4e38 100644 \begin{itemize} \item If \tcode{T} is a specialization of -@@ -7445,7 +7434,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and +@@ -7447,7 +7436,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: @@ -7560,7 +7560,7 @@ index 2a606adf..8b0f4e38 100644 \begin{itemize} \item Let \placeholder{OUTERC} denote -@@ -9744,7 +9732,6 @@ appears in the immediate context of a template instantiation. +@@ -9746,7 +9734,6 @@ appears in the immediate context of a template instantiation. \end{note} Otherwise, \tcode{views::counted(E, F)} is expression-equivalent to: @@ -7581,7 +7581,7 @@ index 785798f7..fa5898d3 100644 \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are diff --git a/source/support.tex b/source/support.tex -index cee9e901..09e93b10 100644 +index f3691cd9..43f3c9f5 100644 --- a/source/support.tex +++ b/source/support.tex @@ -2459,7 +2459,6 @@ This requirement is binding on any replacement versions of these functions. @@ -7617,7 +7617,7 @@ index cee9e901..09e93b10 100644 using promise_type = typename R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index c17177bc..fc802e62 100644 +index 63baaaf8..91b148f9 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -235,7 +235,6 @@ in some translation unit; no diagnostic is required. @@ -7668,7 +7668,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item In a function parameter pack\iref{dcl.fct}; the pattern is the \grammarterm{parameter-declaration} without the ellipsis. -@@ -3768,7 +3762,6 @@ All other constant template arguments are specialized. +@@ -3770,7 +3764,6 @@ All other constant template arguments are specialized. \pnum Within the argument list of a partial specialization, the following restrictions apply: @@ -7676,7 +7676,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item The type of a template parameter corresponding to a specialized constant template -@@ -3782,7 +3775,6 @@ template< int X, int (*array_ptr)[X] > class A {}; +@@ -3784,7 +3777,6 @@ template< int X, int (*array_ptr)[X] > class A {}; int array[5]; template< int X > class A { }; // error \end{codeblock} @@ -7684,7 +7684,7 @@ index c17177bc..fc802e62 100644 \end{example} \item The partial specialization shall be more specialized than the primary -@@ -3908,7 +3900,6 @@ the first is \defn{more specialized} than the second if, given the following +@@ -3910,7 +3902,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}: @@ -7692,7 +7692,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item Each of the two -@@ -4060,7 +4051,6 @@ A::B abci; // uses \#1 +@@ -4062,7 +4053,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: @@ -7700,7 +7700,7 @@ index c17177bc..fc802e62 100644 \begin{codeblock} template class Array { }; template void sort(Array&); -@@ -4115,7 +4105,6 @@ void h(int* p) { +@@ -4117,7 +4107,6 @@ void h(int* p) { } \end{codeblock} \end{minipage} @@ -7708,7 +7708,7 @@ index c17177bc..fc802e62 100644 \end{example} \pnum -@@ -4301,7 +4290,6 @@ to guarantee that functionally equivalent declarations will be treated +@@ -4303,7 +4292,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: @@ -7716,7 +7716,7 @@ index c17177bc..fc802e62 100644 \begin{codeblock} // guaranteed to be the same template void f(A, A); -@@ -4394,7 +4382,6 @@ then the order of the function parameters in its transformed template +@@ -4396,7 +4384,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$: @@ -7724,7 +7724,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item The type $X(M)$ is ``rvalue reference to \cv{}~$A$'' -@@ -4650,7 +4637,6 @@ template class TT> +@@ -4652,7 +4639,6 @@ template class TT> void g(TT>); g(v); // OK, \tcode{TT} = \tcode{vector} \end{codeblock} @@ -7732,7 +7732,7 @@ index c17177bc..fc802e62 100644 \end{example} \pnum -@@ -5516,7 +5502,6 @@ of a class that is the current instantiation. +@@ -5518,7 +5504,6 @@ of a class that is the current instantiation. \pnum A qualified name\iref{basic.lookup.qual} is dependent if @@ -7740,7 +7740,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item it is a \grammarterm{conversion-function-id} -@@ -5765,7 +5750,6 @@ specified by the +@@ -5767,7 +5752,6 @@ specified by the or \grammarterm{new-type-id} is dependent, even if any subexpression is type-dependent: @@ -7748,7 +7748,7 @@ index c17177bc..fc802e62 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br simple-type-specifier braced-init-list\br -@@ -5783,7 +5767,6 @@ typename-specifier braced-init-list\br +@@ -5785,7 +5769,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): @@ -7756,7 +7756,7 @@ index c17177bc..fc802e62 100644 \begin{ncsimplebnf} literal\br \keyword{sizeof} unary-expression\br -@@ -5888,7 +5871,6 @@ Expressions of the following form are value-dependent if the +@@ -5890,7 +5873,6 @@ Expressions of the following form are value-dependent if the is type-dependent or the \grammarterm{type-id} is dependent: @@ -7764,7 +7764,7 @@ index c17177bc..fc802e62 100644 \begin{ncsimplebnf} \keyword{sizeof} unary-expression\br \keyword{sizeof} \terminal{(} type-id \terminal{)}\br -@@ -5916,7 +5898,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} +@@ -5918,7 +5900,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: @@ -7772,7 +7772,7 @@ index c17177bc..fc802e62 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br typename-specifier \terminal{(} \opt{expression-list} \terminal{)}\br -@@ -5931,7 +5912,6 @@ typename-specifier braced-init-list\br +@@ -5933,7 +5914,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following form are value-dependent: @@ -7780,7 +7780,7 @@ index c17177bc..fc802e62 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -6935,7 +6915,6 @@ template. +@@ -6937,7 +6917,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -7788,7 +7788,7 @@ index c17177bc..fc802e62 100644 \begin{bnf} \nontermdef{explicit-instantiation}\br \opt{\keyword{extern}} \keyword{template} declaration -@@ -7410,7 +7389,6 @@ otherwise, it is a declaration. +@@ -7412,7 +7391,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}: @@ -7796,7 +7796,7 @@ index c17177bc..fc802e62 100644 \begin{codeblock} template<> X Q::x; // declaration template<> X Q::x (); // error: declares a function -@@ -7669,7 +7647,6 @@ An empty template argument list can be used to indicate that a given +@@ -7671,7 +7649,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: @@ -7804,7 +7804,7 @@ index c17177bc..fc802e62 100644 \begin{codeblock} template int f(T); // \#1 int f(int); // \#2 -@@ -8251,7 +8228,6 @@ void h(int x, float& y) { +@@ -8253,7 +8230,6 @@ void h(int x, float& y) { If \tcode{P} is not a reference type: @@ -7812,7 +7812,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item If -@@ -8346,7 +8322,6 @@ the type +@@ -8348,7 +8324,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -7820,7 +7820,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item If the original -@@ -8536,7 +8511,6 @@ of \tcode{P} for type deduction and for any further references to or transformat +@@ -8538,7 +8513,6 @@ of \tcode{P} for type deduction and for any further references to or transformat If \tcode{A} is not a reference type: @@ -7828,7 +7828,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item If -@@ -8582,7 +8556,6 @@ values that will make the deduced +@@ -8584,7 +8558,6 @@ values that will make the deduced identical to \tcode{A}. However, certain attributes of \tcode{A} may be ignored: @@ -7836,7 +7836,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item If the original \tcode{A} is a reference type, -@@ -8627,7 +8600,6 @@ the argument template and template-1 as the parameter template. +@@ -8629,7 +8602,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: @@ -7844,7 +7844,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item In the context of a function call, the types used are those function parameter types -@@ -8655,7 +8627,6 @@ and +@@ -8657,7 +8629,6 @@ and \pnum Before the partial ordering is done, certain transformations are performed on the types used for partial ordering: @@ -7852,7 +7852,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item If -@@ -8861,7 +8832,6 @@ A given type +@@ -8863,7 +8834,6 @@ A given type \tcode{P} can be composed from a number of other types, templates, and constant template argument values: @@ -7860,7 +7860,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item A function type includes the types of each of the function parameters, -@@ -8903,7 +8873,6 @@ need not have the same form. +@@ -8905,7 +8875,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -7868,7 +7868,7 @@ index c17177bc..fc802e62 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -8998,7 +8967,6 @@ is deduced. +@@ -9000,7 +8969,6 @@ is deduced. \begin{example} Here is an example in which different parameter/argument pairs produce inconsistent template argument deductions: @@ -7876,7 +7876,7 @@ index c17177bc..fc802e62 100644 \begin{codeblock} template void f(T x, T y) { @\commentellip@ } struct A { @\commentellip@ }; -@@ -9015,7 +8983,6 @@ Here is an example where two template arguments are deduced from a +@@ -9017,7 +8985,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: @@ -7884,7 +7884,7 @@ index c17177bc..fc802e62 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -9032,7 +8999,6 @@ void r() { +@@ -9034,7 +9001,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -7892,7 +7892,7 @@ index c17177bc..fc802e62 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -9051,7 +9017,6 @@ void h() { +@@ -9053,7 +9019,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: @@ -7900,7 +7900,7 @@ index c17177bc..fc802e62 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -9062,7 +9027,6 @@ void s() { +@@ -9064,7 +9029,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: @@ -7909,10 +7909,10 @@ index c17177bc..fc802e62 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index b2e9462e..bec330ff 100644 +index 1b18d89d..45b25596 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -7372,7 +7372,6 @@ and visible to other threads. +@@ -7386,7 +7386,6 @@ and visible to other threads. \pnum The expression \tcode{m.lock()} is well-formed and has the following semantics: @@ -7920,7 +7920,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -7415,7 +7414,6 @@ that a deadlock would occur. +@@ -7429,7 +7428,6 @@ that a deadlock would occur. \pnum The expression \tcode{m.try_lock()} is well-formed and has the following semantics: @@ -7928,7 +7928,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -7461,7 +7459,6 @@ Nothing. +@@ -7475,7 +7473,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -7936,7 +7936,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -7616,7 +7613,6 @@ requirements\iref{thread.req.lockable.timed}. +@@ -7630,7 +7627,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: @@ -7944,7 +7944,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -7658,7 +7654,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -7672,7 +7668,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: @@ -7952,7 +7952,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -7845,7 +7840,6 @@ shared lock. +@@ -7859,7 +7854,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -7960,7 +7960,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -7882,7 +7876,6 @@ The calling thread has a shared lock on the mutex. +@@ -7896,7 +7890,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: @@ -7968,7 +7968,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -7907,7 +7900,6 @@ Nothing. +@@ -7921,7 +7914,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -7976,7 +7976,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -8010,7 +8002,6 @@ requirements\iref{thread.req.lockable.shared.timed}. +@@ -8024,7 +8016,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: @@ -7984,7 +7984,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -8055,7 +8046,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -8069,7 +8060,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: @@ -7992,7 +7992,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -10193,7 +10183,6 @@ template +@@ -10207,7 +10197,6 @@ template \begin{itemdescr} \pnum \effects @@ -8000,7 +8000,7 @@ index b2e9462e..bec330ff 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -11584,7 +11573,6 @@ shared state as \tcode{*this}. +@@ -11598,7 +11587,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -8008,7 +8008,7 @@ index b2e9462e..bec330ff 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}. -@@ -11647,7 +11635,6 @@ already has a stored value or exception. +@@ -11661,7 +11649,6 @@ already has a stored value or exception. \pnum \errors @@ -8016,7 +8016,7 @@ index b2e9462e..bec330ff 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -11987,7 +11974,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -12001,7 +11988,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -8024,7 +8024,7 @@ index b2e9462e..bec330ff 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12331,7 +12317,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -12345,7 +12331,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8032,7 +8032,7 @@ index b2e9462e..bec330ff 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12366,7 +12351,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -12380,7 +12365,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8040,7 +8040,7 @@ index b2e9462e..bec330ff 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12422,7 +12406,6 @@ The further behavior +@@ -12436,7 +12420,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): @@ -8199,7 +8199,7 @@ index c37f5bba..f52ab7f4 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 faf5d946..b79fc8d3 100644 +index 6febc3c3..78087710 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -270,7 +270,6 @@ Exchanges values stored in two locations. @@ -8250,7 +8250,7 @@ index faf5d946..b79fc8d3 100644 \begin{codeblock} transform(a.begin(), a.end(), b.begin(), a.begin(), plus()); \end{codeblock} -@@ -14930,7 +14924,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; +@@ -14929,7 +14923,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: @@ -8262,10 +8262,10 @@ index faf5d946..b79fc8d3 100644 2.43.0 -From 713553b603864c1b414be8d05b59173e693ee343 Mon Sep 17 00:00:00 2001 +From c92248534f4ad6851524ecd28625433427575860 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 -Subject: [PATCH 06/10] Use monospace font for code in figures. +Subject: [PATCH 6/9] Use monospace font for code in figures. --- source/assets/figdag.dot | 8 ++++---- @@ -8409,10 +8409,10 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From cb2cc2cb59467f4fa92cffdbef1395ad963ab521 Mon Sep 17 00:00:00 2001 +From 0019625753aa4d51eb92af8b1a67721d088d6d45 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 -Subject: [PATCH 07/10] [uaxid] Mark code that's not to be highlighted. +Subject: [PATCH 7/9] [uaxid] Mark code that's not to be highlighted. --- source/uax31.tex | 4 ++-- @@ -8437,10 +8437,10 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From c640f817cfcec1580cec83b57e171dbb925c8b6e Mon Sep 17 00:00:00 2001 +From cfcee64febebd71b55588c5a211edb800d558450 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 -Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. +Subject: [PATCH 8/9] Use cxxdraft-htmlgen macros more. --- source/algorithms.tex | 180 +++++++++++++------------- @@ -8461,7 +8461,7 @@ Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. 15 files changed, 490 insertions(+), 498 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 011292f7..3dcc8907 100644 +index 3af19872..42bc0626 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -9055,7 +9055,7 @@ 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 df926181..ffcb4e9f 100644 +index e653b348..2adaa033 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -758,9 +758,9 @@ namespace std { @@ -9121,7 +9121,7 @@ index df926181..ffcb4e9f 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 058038ef..887279b0 100644 +index 22eb3485..587fdbf0 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9160,7 +9160,7 @@ index 058038ef..887279b0 100644 \\ \end{floattable} diff --git a/source/future.tex b/source/future.tex -index 04969113..8c17e33e 100644 +index ab7c724e..c69ae9e5 100644 --- a/source/future.tex +++ b/source/future.tex @@ -359,7 +359,7 @@ template struct is_pod; @@ -9209,7 +9209,7 @@ index 04969113..8c17e33e 100644 \begin{itemize} \item for the first specialization, \tcode{add_volatile_t}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index 19837154..ba13c1f7 100644 +index a34a3f84..0ff3588e 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -1681,10 +1681,10 @@ An \tcode{fpos} type specifies file position information. @@ -9290,7 +9290,7 @@ index 19837154..ba13c1f7 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 729bd1dc..2ff6567d 100644 +index 76ea7917..7712e342 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -1862,7 +1862,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. @@ -9399,7 +9399,7 @@ index 729bd1dc..2ff6567d 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index 92ff4466..c59c2b55 100644 +index deb35ac5..d574546f 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1273,7 +1273,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type @@ -9572,7 +9572,7 @@ index 92ff4466..c59c2b55 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index 0e7255dd..ee96bf8f 100644 +index e6dedae6..b2188af9 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -95,12 +95,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -10181,7 +10181,7 @@ index 0e7255dd..ee96bf8f 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index 52a0e3ec..0aac59a4 100644 +index accd8c6d..f9579b68 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 @@ -10305,7 +10305,7 @@ index 52a0e3ec..0aac59a4 100644 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 e943eef1..13b33fa6 100644 +index e0a6f1ca..e654c723 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -238,10 +238,10 @@ using state_type = @\seebelow@; @@ -10333,7 +10333,7 @@ index e943eef1..13b33fa6 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 09e93b10..4ee8d4ed 100644 +index 43f3c9f5..047f9904 100644 --- a/source/support.tex +++ b/source/support.tex @@ -3657,11 +3657,11 @@ namespace std { @@ -10372,7 +10372,7 @@ index 09e93b10..4ee8d4ed 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index bec330ff..da485dc5 100644 +index 45b25596..c897fccc 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10435,7 +10435,7 @@ index bec330ff..da485dc5 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}, -@@ -4499,7 +4499,7 @@ namespace std { +@@ -4510,7 +4510,7 @@ namespace std { \indexlibraryglobal{atomic}% \pnum The template argument for \tcode{T} shall meet the @@ -10444,7 +10444,7 @@ index bec330ff..da485dc5 100644 The program is ill-formed if any of \begin{itemize} \item \tcode{is_trivially_copyable_v}, -@@ -7333,11 +7333,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, +@@ -7347,11 +7347,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} @@ -10458,7 +10458,7 @@ index bec330ff..da485dc5 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. -@@ -7606,7 +7606,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de +@@ -7620,7 +7620,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de object of an instantiation of \link{\tcode{time_point}}{time.point}. \begin{note} @@ -10467,7 +10467,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -7818,7 +7818,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally +@@ -7832,7 +7832,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} @@ -10476,7 +10476,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.shared}. \end{note} -@@ -7995,7 +7995,7 @@ meet the requirements set out below. In this description, +@@ -8009,7 +8009,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}. \begin{note} @@ -10485,7 +10485,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.shared.timed}. \end{note} -@@ -8205,7 +8205,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable +@@ -8219,7 +8219,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} @@ -10494,7 +10494,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.basic}. \indexlibraryctor{lock_guard}% -@@ -8284,12 +8284,12 @@ object. +@@ -8298,12 +8298,12 @@ object. If \tcode{sizeof...(MutexTypes)} is one, let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. \tcode{Mutex} @@ -10509,7 +10509,7 @@ index bec330ff..da485dc5 100644 and there is no member \tcode{mutex_type}. \end{itemize} -@@ -8404,17 +8404,17 @@ copyable but are movable. The behavior of a program is undefined if the containe +@@ -8418,17 +8418,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 lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied @@ -10533,7 +10533,7 @@ index bec330ff..da485dc5 100644 \end{note} \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} -@@ -8464,7 +8464,7 @@ unique_lock(mutex_type& m, try_to_lock_t); +@@ -8478,7 +8478,7 @@ unique_lock(mutex_type& m, try_to_lock_t); \begin{itemdescr} \pnum \expects @@ -10542,7 +10542,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8506,7 +8506,7 @@ template +@@ -8520,7 +8520,7 @@ template \pnum \expects The supplied \tcode{Mutex} type meets the @@ -10551,7 +10551,7 @@ index bec330ff..da485dc5 100644 \pnum \effects -@@ -8528,7 +8528,7 @@ template +@@ -8542,7 +8542,7 @@ template \begin{itemdescr} \pnum \expects @@ -10560,7 +10560,7 @@ index bec330ff..da485dc5 100644 \pnum \effects -@@ -8615,7 +8615,7 @@ bool try_lock(); +@@ -8629,7 +8629,7 @@ bool try_lock(); \begin{itemdescr} \pnum \expects @@ -10569,7 +10569,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8654,7 +8654,7 @@ template +@@ -8668,7 +8668,7 @@ template \begin{itemdescr} \pnum \expects @@ -10578,7 +10578,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.timed}. \pnum -@@ -8693,7 +8693,7 @@ template +@@ -8707,7 +8707,7 @@ template \begin{itemdescr} \pnum \expects @@ -10587,7 +10587,7 @@ index bec330ff..da485dc5 100644 \pnum \effects -@@ -8886,16 +8886,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type +@@ -8900,16 +8900,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 lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied @@ -10608,7 +10608,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -8980,7 +8980,7 @@ template +@@ -8994,7 +8994,7 @@ template \begin{itemdescr} \pnum \expects @@ -10617,7 +10617,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9004,7 +9004,7 @@ template +@@ -9018,7 +9018,7 @@ template \begin{itemdescr} \pnum \expects @@ -10626,7 +10626,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9129,7 +9129,7 @@ template +@@ -9143,7 +9143,7 @@ template \begin{itemdescr} \pnum \expects @@ -10635,7 +10635,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9169,7 +9169,7 @@ template +@@ -9183,7 +9183,7 @@ template \begin{itemdescr} \pnum \expects @@ -10644,7 +10644,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9308,7 +9308,7 @@ template int try_lock(L1&, L2&, L3&...); +@@ -9322,7 +9322,7 @@ template int try_lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10653,7 +10653,7 @@ index bec330ff..da485dc5 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9337,7 +9337,7 @@ template void lock(L1&, L2&, L3&...); +@@ -9351,7 +9351,7 @@ template void lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10662,7 +10662,7 @@ index bec330ff..da485dc5 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -10003,7 +10003,7 @@ This can happen if the re-locking of the mutex throws an exception. +@@ -10017,7 +10017,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} @@ -10671,7 +10671,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.basic}. \begin{note} All of the standard -@@ -10941,24 +10941,24 @@ execute atomically. +@@ -10955,24 +10955,24 @@ execute atomically. \pnum \tcode{CompletionFunction} shall meet the @@ -10702,7 +10702,7 @@ index bec330ff..da485dc5 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -11453,7 +11453,7 @@ namespace std { +@@ -11467,7 +11467,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10711,7 +10711,7 @@ index bec330ff..da485dc5 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -11785,7 +11785,7 @@ namespace std { +@@ -11799,7 +11799,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10720,7 +10720,7 @@ index bec330ff..da485dc5 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -12091,7 +12091,7 @@ namespace std { +@@ -12105,7 +12105,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10729,7 +10729,7 @@ index bec330ff..da485dc5 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -13029,7 +13029,7 @@ the expression \tcode{d(ptr)} is valid. +@@ -13043,7 +13043,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -10738,7 +10738,7 @@ index bec330ff..da485dc5 100644 \pnum If \tcode{D} is trivially copyable, -@@ -13087,7 +13087,7 @@ namespace std { +@@ -13101,7 +13101,7 @@ namespace std { \pnum This class meets the requirements of @@ -10747,7 +10747,7 @@ index bec330ff..da485dc5 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -13235,8 +13235,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -13249,8 +13249,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -10758,7 +10758,7 @@ index bec330ff..da485dc5 100644 \pnum \effects -@@ -13428,7 +13428,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -13442,7 +13442,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -10981,7 +10981,7 @@ index f52ab7f4..c0a4aaf9 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index b79fc8d3..76b19166 100644 +index 78087710..722b6077 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -258,9 +258,9 @@ template @@ -11321,7 +11321,7 @@ index b79fc8d3..76b19166 100644 but if so, their copy assignment operators are constexpr functions that do not throw exceptions. -@@ -13816,7 +13816,7 @@ Let \tcode{FD} be \tcode{decay_t}. +@@ -13815,7 +13815,7 @@ Let \tcode{FD} be \tcode{decay_t}. \pnum \expects @@ -11330,7 +11330,7 @@ index b79fc8d3..76b19166 100644 \pnum \ensures -@@ -14241,9 +14241,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14240,9 +14240,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11342,7 +11342,7 @@ index b79fc8d3..76b19166 100644 \pnum \ensures -@@ -14293,9 +14293,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14292,9 +14292,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11354,7 +11354,7 @@ index b79fc8d3..76b19166 100644 \pnum \ensures -@@ -14335,9 +14335,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14334,9 +14334,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11366,7 +11366,7 @@ index b79fc8d3..76b19166 100644 \pnum \ensures -@@ -14659,8 +14659,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14658,8 +14658,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11377,7 +11377,7 @@ index b79fc8d3..76b19166 100644 \pnum \ensures -@@ -14715,8 +14715,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14714,8 +14714,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11388,7 +11388,7 @@ index b79fc8d3..76b19166 100644 \pnum \ensures -@@ -14761,8 +14761,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14760,8 +14760,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11399,7 +11399,7 @@ index b79fc8d3..76b19166 100644 \pnum \ensures -@@ -15277,7 +15277,7 @@ provided to the function call operator. +@@ -15276,7 +15276,7 @@ provided to the function call operator. \pnum Each specialization of a class template specified in \ref{func.search} @@ -11408,7 +11408,7 @@ index b79fc8d3..76b19166 100644 Template parameters named \begin{itemize} \item \tcode{ForwardIterator}, -@@ -15291,7 +15291,7 @@ Template parameters named +@@ -15290,7 +15290,7 @@ Template parameters named of templates specified in \ref{func.search} shall meet the same requirements and semantics as specified in \ref{algorithms.general}. @@ -11417,7 +11417,7 @@ index b79fc8d3..76b19166 100644 requirements (\tref{cpp17.hash}). \pnum -@@ -15400,9 +15400,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, +@@ -15399,9 +15399,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, \pnum \expects The value type of \tcode{RandomAccessIterator1} meets @@ -11430,7 +11430,7 @@ index b79fc8d3..76b19166 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15501,8 +15501,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, +@@ -15500,8 +15500,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, \begin{itemdescr} \pnum \expects @@ -11441,7 +11441,7 @@ index b79fc8d3..76b19166 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15575,7 +15575,7 @@ as the default hash function. +@@ -15574,7 +15574,7 @@ as the default hash function. Each specialization of \tcode{hash} is either enabled or disabled, as described below. \begin{note} @@ -11450,7 +11450,7 @@ index b79fc8d3..76b19166 100644 disabled specializations do not. \end{note} Each header that declares the template \tcode{hash} -@@ -15602,17 +15602,17 @@ Disabled specializations of \tcode{hash} +@@ -15601,17 +15601,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 @@ -11477,10 +11477,10 @@ index b79fc8d3..76b19166 100644 2.43.0 -From 5abd235667d32d8257596ac8c1c4204c65cde051 Mon Sep 17 00:00:00 2001 +From fef073bd6ac7704e98c783ea6444c14a160f8cbf Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 -Subject: [PATCH 09/10] Remove awkward \linebreaks. +Subject: [PATCH 9/9] Remove awkward \linebreaks. --- source/algorithms.tex | 4 ++-- @@ -11495,7 +11495,7 @@ Subject: [PATCH 09/10] Remove awkward \linebreaks. 9 files changed, 68 insertions(+), 69 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 3dcc8907..cf914a0c 100644 +index 42bc0626..4fa0e6ac 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -7070,7 +7070,7 @@ Let: @@ -11517,7 +11517,7 @@ index 3dcc8907..cf914a0c 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index e49a887b..492a1a7d 100644 +index 1e5a9871..a1ea4d5c 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1456,7 +1456,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11548,7 +11548,7 @@ index e49a887b..492a1a7d 100644 \item Assigns \keyword{nullptr} to \tcode{nh.ptr_} and assigns \tcode{nullopt} to -@@ -7467,14 +7466,14 @@ template +@@ -7468,14 +7467,14 @@ template \pnum \expects \tcode{T} is \oldconcept{EmplaceConstructible} into \tcode{forward_list} @@ -11565,7 +11565,7 @@ index e49a887b..492a1a7d 100644 \pnum \returns -@@ -10633,7 +10632,7 @@ template +@@ -10634,7 +10633,7 @@ template \pnum The expression \tcode{\exposid{is-vector-bool-reference}} is \tcode{true} @@ -11574,7 +11574,7 @@ index e49a887b..492a1a7d 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. +@@ -12026,7 +12025,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)), @@ -11583,7 +11583,7 @@ index e49a887b..492a1a7d 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 +@@ -17513,7 +17512,7 @@ template \pnum \effects Equivalent to \tcode{flat_map(sorted_unique, key_cont, mapped_cont)} and @@ -11592,7 +11592,7 @@ index e49a887b..492a1a7d 100644 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); +@@ -17697,7 +17696,7 @@ template constexpr pair emplace(Args&&... args); \pnum \effects Initializes an object \tcode{t} of type \tcode{pair} @@ -11601,7 +11601,7 @@ index e49a887b..492a1a7d 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 +@@ -17974,7 +17973,7 @@ template \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11610,7 +11610,7 @@ index e49a887b..492a1a7d 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}. +@@ -18029,7 +18028,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}, @@ -11619,7 +11619,7 @@ index e49a887b..492a1a7d 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18641,14 +18640,14 @@ template +@@ -18643,14 +18642,14 @@ template \pnum \effects Equivalent to \tcode{flat_multimap(key_cont, mapped_cont)} and @@ -11636,7 +11636,7 @@ index e49a887b..492a1a7d 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -23209,7 +23208,7 @@ is representable as a value of type \tcode{index_type.} +@@ -23211,7 +23210,7 @@ is representable as a value of type \tcode{index_type.} \item If \exposid{rank_} is greater than one, then the product of @@ -11645,7 +11645,7 @@ index e49a887b..492a1a7d 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}. -@@ -23288,7 +23287,7 @@ template +@@ -23290,7 +23289,7 @@ template \item If \exposid{rank_} is greater than \tcode{1} and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11654,7 +11654,7 @@ index e49a887b..492a1a7d 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(0))) -@@ -23356,7 +23355,7 @@ is \tcode{true}. +@@ -23358,7 +23357,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11663,7 +11663,7 @@ index e49a887b..492a1a7d 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(0))) -@@ -23754,7 +23753,7 @@ Implementations should not store this value +@@ -23756,7 +23755,7 @@ Implementations should not store this value if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. \begin{note} Using \tcode{extents} @@ -11672,7 +11672,7 @@ index e49a887b..492a1a7d 100644 would achieve this. \end{note} \end{itemdescr} -@@ -23837,13 +23836,13 @@ is representable as a value of type \tcode{index_type}. +@@ -23839,13 +23838,13 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -11688,7 +11688,7 @@ index e49a887b..492a1a7d 100644 \end{itemize} \pnum -@@ -23916,7 +23915,7 @@ template +@@ -23918,7 +23917,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11697,7 +11697,7 @@ index e49a887b..492a1a7d 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -23984,7 +23983,7 @@ is \tcode{true}. +@@ -23986,7 +23985,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11706,7 +11706,7 @@ index e49a887b..492a1a7d 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) -@@ -25644,7 +25643,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, +@@ -25646,7 +25645,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 @@ -11715,7 +11715,7 @@ index e49a887b..492a1a7d 100644 \item otherwise, \tcode{stride($k$)}. \end{itemize} -@@ -26042,11 +26041,11 @@ is well-formed when treated as an unevaluated operand. +@@ -26044,11 +26043,11 @@ is well-formed when treated as an unevaluated operand. \begin{itemize} \item \tcode{decltype(submdspan_mapping(src.mapping(), slices...))} @@ -11729,7 +11729,7 @@ index e49a887b..492a1a7d 100644 is \tcode{true}. \item -@@ -26076,11 +26075,11 @@ all of the following are \tcode{true}: +@@ -26078,11 +26077,11 @@ all of the following are \tcode{true}: \item $0 \le \tcode{\exposid{first_}(slices...)}$ $\le \tcode{\exposid{last_}<$k$>(src.extents(), slices...)}$ @@ -11744,10 +11744,10 @@ index e49a887b..492a1a7d 100644 \item diff --git a/source/exec.tex b/source/exec.tex -index 887279b0..aff106e0 100644 +index 587fdbf0..f6852a32 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -3239,7 +3239,7 @@ except that \tcode{sch} is evaluated only once. +@@ -3247,7 +3247,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}, @@ -11756,7 +11756,7 @@ index 887279b0..aff106e0 100644 \tcode{starts_on.transform_sender(out_sndr, env)} are ill-formed; otherwise \begin{itemize} \item -@@ -3619,7 +3619,7 @@ except that \tcode{sndr} is evaluated only once. +@@ -3627,7 +3627,7 @@ except that \tcode{sndr} is evaluated only once. \pnum Let \tcode{out_sndr} and \tcode{env} be subexpressions, let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and @@ -11765,7 +11765,7 @@ index 887279b0..aff106e0 100644 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. -@@ -3761,7 +3761,7 @@ Let the expression \exposid{then-cpo} be one of +@@ -3769,7 +3769,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}, @@ -11774,7 +11774,7 @@ index 887279b0..aff106e0 100644 \pnum Otherwise, -@@ -4066,7 +4066,7 @@ is initialized with a callable object equivalent to the following: +@@ -4074,7 +4074,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 @@ -11783,7 +11783,7 @@ index 887279b0..aff106e0 100644 is \tcode{false}, then the expression \tcode{\exposid{let-cpo}.transform_env(sndr, env)} is ill-formed. -@@ -4681,7 +4681,7 @@ try { +@@ -4689,7 +4689,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -11792,7 +11792,7 @@ index 887279b0..aff106e0 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -5724,7 +5724,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. +@@ -5732,7 +5732,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. \pnum For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. @@ -11802,7 +11802,7 @@ index 887279b0..aff106e0 100644 the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: diff --git a/source/memory.tex b/source/memory.tex -index c59c2b55..e13a598f 100644 +index d574546f..f254eca5 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1371,7 +1371,7 @@ A \tcode{tuple} value determined as follows: @@ -11833,7 +11833,7 @@ index c59c2b55..e13a598f 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index ee96bf8f..c278d972 100644 +index b2188af9..7d111969 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -2530,7 +2530,7 @@ present as follows: @@ -11846,10 +11846,10 @@ index ee96bf8f..c278d972 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index 0aac59a4..7ae9bd01 100644 +index f9579b68..55338c7e 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -13802,7 +13802,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. +@@ -13803,7 +13803,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -11858,7 +11858,7 @@ index 0aac59a4..7ae9bd01 100644 \pnum \returns -@@ -14008,7 +14008,7 @@ template +@@ -14009,7 +14009,7 @@ template \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -11868,7 +11868,7 @@ index 0aac59a4..7ae9bd01 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 8b0f4e38..fccb59d1 100644 +index 1ce5326c..1f3504a8 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -11880,7 +11880,7 @@ index 8b0f4e38..fccb59d1 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 -@@ -3671,7 +3671,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 @@ -11889,7 +11889,7 @@ index 8b0f4e38..fccb59d1 100644 \tcode{make_from_tuple(std::move(bound_args))}. The behavior is undefined if \tcode{Bound} is not \tcode{unreachable_sentinel_t} and -@@ -5913,7 +5913,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} +@@ -5915,7 +5915,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), @@ -11898,7 +11898,7 @@ index 8b0f4e38..fccb59d1 100644 except that \tcode{E} is evaluated only once. \item -@@ -6389,7 +6389,7 @@ if \tcode{T} is +@@ -6391,7 +6391,7 @@ if \tcode{T} is a specialization of \tcode{subrange} that models \libconcept{random_access_range} and \libconcept{sized_range}, then @@ -11907,7 +11907,7 @@ index 8b0f4e38..fccb59d1 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. -@@ -7441,7 +7441,7 @@ Let \placeholder{OUTERC} denote +@@ -7443,7 +7443,7 @@ Let \placeholder{OUTERC} denote let \placeholder{INNERC} denote \tcode{iterator_traits<\exposid{InnerIter}>::iterator_category}, and let \placeholder{PATTERNC} denote @@ -11916,7 +11916,7 @@ index 8b0f4e38..fccb59d1 100644 \item If \begin{codeblock} -@@ -7950,7 +7950,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); +@@ -7952,7 +7952,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 @@ -11925,7 +11925,7 @@ index 8b0f4e38..fccb59d1 100644 \end{itemdescr} \rSec3[range.lazy.split.outer]{Class template \tcode{lazy_split_view::\exposid{outer-iterator}}} -@@ -8261,7 +8261,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: +@@ -8263,7 +8263,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: \begin{itemize} \item \tcode{forward_iterator_tag} if @@ -11934,7 +11934,7 @@ index 8b0f4e38..fccb59d1 100644 \tcode{\libconcept{derived_from}}; \item otherwise, \tcode{iterator_traits>::iterator_category}. \end{itemize} -@@ -8481,7 +8481,7 @@ constexpr explicit split_view(R&& r, range_value_t e); +@@ -8483,7 +8483,7 @@ constexpr explicit split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -11943,7 +11943,7 @@ index 8b0f4e38..fccb59d1 100644 \end{itemdescr} \indexlibrarymember{begin}{split_view} -@@ -9046,7 +9046,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. +@@ -9048,7 +9048,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. \item Otherwise, if \tcode{\exposconcept{all-forward}} is modeled, @@ -11952,7 +11952,7 @@ index 8b0f4e38..fccb59d1 100644 \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} -@@ -9072,14 +9072,14 @@ let \tcode{Cs} denote the pack of types +@@ -9074,14 +9074,14 @@ let \tcode{Cs} denote the pack of types \begin{itemize} \item If @@ -11970,7 +11970,7 @@ index 8b0f4e38..fccb59d1 100644 \item Otherwise, if \tcode{(\libconcept{derived_from} \&\& ...)} -@@ -9531,11 +9531,11 @@ Let +@@ -9533,11 +9533,11 @@ Let %FIXME This is hard to parse. If \tcode{$i_\tcode{x}$ > $i_\tcode{y}$}, let \tcode{$d_\tcode{y}$} be @@ -11985,7 +11985,7 @@ index 8b0f4e38..fccb59d1 100644 for every integer \tcode{$i$} in the range \range{$i_\tcode{y}$ + 1}{$i_\tcode{x}$} if there is any, and -@@ -9578,7 +9578,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul +@@ -9580,7 +9580,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 @@ -11994,7 +11994,7 @@ index 8b0f4e38..fccb59d1 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 -@@ -9735,7 +9735,7 @@ is expression-equivalent to: +@@ -9737,7 +9737,7 @@ is expression-equivalent to: \begin{itemize} \item If \tcode{T} models \libconcept{contiguous_iterator}, @@ -12003,7 +12003,7 @@ index 8b0f4e38..fccb59d1 100644 \item Otherwise, if \tcode{T} models \libconcept{random_access_iterator}, -@@ -13431,7 +13431,7 @@ is defined as follows: +@@ -13433,7 +13433,7 @@ is defined as follows: \item If \tcode{invoke_result_t<\exposid{maybe-const}\&, \exposid{REPEAT}(range_reference_t<\exposid{Base}>, N)...>} @@ -12012,7 +12012,7 @@ index 8b0f4e38..fccb59d1 100644 \tcode{iterator_category} denotes \tcode{input_iterator_tag}. \item Otherwise, let \tcode{C} denote the type -@@ -14542,7 +14542,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ +@@ -14544,7 +14544,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_})}, @@ -12022,10 +12022,10 @@ index 8b0f4e38..fccb59d1 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index da485dc5..fe9533b5 100644 +index c897fccc..e2d183ce 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -3517,7 +3517,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, +@@ -3528,7 +3528,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12034,7 +12034,7 @@ index da485dc5..fe9533b5 100644 \pnum \effects -@@ -4792,7 +4792,7 @@ For the \tcode{volatile} overload of this function, +@@ -4803,7 +4803,7 @@ For the \tcode{volatile} overload of this function, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12043,7 +12043,7 @@ index da485dc5..fe9533b5 100644 \pnum \effects -@@ -6313,7 +6313,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de +@@ -6327,7 +6327,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12052,7 +12052,7 @@ index da485dc5..fe9533b5 100644 \pnum \effects -@@ -6629,7 +6629,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire +@@ -6643,7 +6643,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12062,7 +12062,7 @@ index da485dc5..fe9533b5 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index 76b19166..a53d2ff0 100644 +index 722b6077..45444ce6 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -2062,7 +2062,7 @@ equals \tcode{tuple_size_v>}, @@ -12101,7 +12101,7 @@ index 76b19166..a53d2ff0 100644 \pnum \returns -@@ -14989,7 +14989,7 @@ that models \libconcept{copyable}. +@@ -14988,7 +14988,7 @@ that models \libconcept{copyable}. \pnum Within \ref{func.wrap.ref}, \tcode{\placeholder{call-args}} is an argument pack with elements such that @@ -12113,54 +12113,3 @@ index 76b19166..a53d2ff0 100644 -- 2.43.0 - -From da283a7465ff0f89f3f02dbcdcfa5a40feebc9d2 Mon Sep 17 00:00:00 2001 -From: timsong-cpp -Date: Fri, 1 Aug 2025 02:09:27 -0500 -Subject: [PATCH 10/10] Revert "[intro] Special page header before Clause 1 - (#6070)" - -This reverts commit 0b41c12760d8079ee4c460df6ddecaf220f2dfb6. ---- - source/intro.tex | 11 ----------- - source/layout.tex | 2 +- - 2 files changed, 1 insertion(+), 12 deletions(-) - -diff --git a/source/intro.tex b/source/intro.tex -index abc66134..4d40f89b 100644 ---- a/source/intro.tex -+++ b/source/intro.tex -@@ -1,17 +1,6 @@ - %!TEX root = std.tex - --\clearpage --\bigskip\noindent\textlarger{\textbf{Programming languages --- \Cpp{}}} --\bigskip\bigskip -- --\begingroup --\let\clearpage\relax - \rSec0[intro.scope]{Scope} --\endgroup --\copypagestyle{cpppageone}{cpppage} --\makeoddhead{cpppageone}{\textbf{WORKING DRAFT}}{}{\leaders\hrule height 2pt\hfill\kern0pt\\\textbf{\docno}} --\makeheadrule{cpppageone}{\textwidth}{2pt} --\thispagestyle{cpppageone} - - \pnum - \indextext{scope|(}% -diff --git a/source/layout.tex b/source/layout.tex -index 98564d8b..1f82bd20 100644 ---- a/source/layout.tex -+++ b/source/layout.tex -@@ -10,7 +10,7 @@ - %%-------------------------------------------------- - %% set header and footer positions and sizes - --\setheadfoot{3\onelineskip}{4\onelineskip} -+\setheadfoot{\onelineskip}{4\onelineskip} - \setheaderspaces{*}{2\onelineskip}{*} - - %%-------------------------------------------------- --- -2.43.0 - diff --git a/htmlgen_code.patch b/htmlgen_code.patch deleted file mode 100644 index a500da21f6..0000000000 --- a/htmlgen_code.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 6c9496d048c4c3534524ea3212c780776844f025 Mon Sep 17 00:00:00 2001 -From: timsong-cpp -Date: Fri, 25 Jul 2025 09:03:35 -0500 -Subject: [PATCH] Handle \bot - ---- - RawDocument.hs | 2 +- - Render.hs | 1 + - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/RawDocument.hs b/RawDocument.hs -index c1f82bc..935878c 100644 ---- a/RawDocument.hs -+++ b/RawDocument.hs -@@ -195,7 +195,7 @@ storeCmds = - "phi int theta zeta FlushAndPrintGrammar break backslash centering " ++ - "normalbaselineskip land lor mapsto normalfont textmu tablerefname figurerefname newline " ++ - "obeyspaces bnfindent vdots tabcolsep columnbreak emergencystretch commentellip " ++ -- "gamma widowpenalties sffamily parskip left right `") -+ "gamma widowpenalties sffamily parskip left right bot `") - , (1, "hspace footnote textit textrm textnormal texttt textbf ensuremath ref ref* mbox bibitem mathop " ++ - "terminal literalterminal noncxxterminal textsl textsc textsf text term overline " ++ - "tcode noncxxtcode literaltcode footnotetext microtypesetup cline mathtt mathit mathrm mathsf " ++ -diff --git a/Render.hs b/Render.hs -index 4b34cb6..2df6e74 100644 ---- a/Render.hs -+++ b/Render.hs -@@ -128,6 +128,7 @@ simpleMacros = - , (">" , " ") - , ("bnfindent" , "   ") - , ("\n" , "\n") -+ , ("bot" , "⊥") - ] - ++ [(n, Text.pack [c]) | (n, c) <- greekAlphabet] - --- -2.43.0 - diff --git a/lastbuild.sig b/lastbuild.sig index 51c10801b3..a17bd2b562 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,4 +1,3 @@ -htmlgen eee5307c45c04761ef5c27956cbed742e08e5fb4 -draft c3bd02a2e44c53c8fe7ba5b48a94bacc9186235d -b76cce13dbf7885170532b899c35ef6d11ffb71c htmlgen.patch -cc80936cb44795c5712f5b4d193389be54551403 htmlgen_code.patch +htmlgen d76984e59af74768c3ce732b5517325f10807a57 +draft 2f53f313f5b1aac5f9547b39e78863e23ca9c047 +fbaf0fe6216effbdbbcc47732adc950955af5a05 htmlgen.patch From c4d611391ab003f6986096b362a70b9f6128acb2 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Tue, 4 Nov 2025 10:23:33 -1000 Subject: [PATCH 05/18] Update --- cxxdraft-htmlgen | 2 +- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 938 ++++++++++++++++++++++++----------------------- lastbuild.sig | 6 +- 5 files changed, 483 insertions(+), 467 deletions(-) diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen index d76984e59a..42983f240e 160000 --- a/cxxdraft-htmlgen +++ b/cxxdraft-htmlgen @@ -1 +1 @@ -Subproject commit d76984e59af74768c3ce732b5517325f10807a57 +Subproject commit 42983f240e7a7623a03d34a83eca3c064c920c8b diff --git a/draft b/draft index 2f53f313f5..acab9e5532 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 2f53f313f5b1aac5f9547b39e78863e23ca9c047 +Subproject commit acab9e553267137d6ac25e5568bafce734b70257 diff --git a/gh-pages b/gh-pages index 5bc71b27ad..bc0adeaf28 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 5bc71b27ad733d9329d9985ea717a358c134c86f +Subproject commit bc0adeaf28bf5ace30c36e065ba975678e2ed9f2 diff --git a/htmlgen.patch b/htmlgen.patch index e34ce89bf5..3615a9b5c1 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From 564bd58ebe115367edb2444d5051838480453623 Mon Sep 17 00:00:00 2001 +From 5b77e7e5ad095dd8f07a9dd76c7ba863950bfffe 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 a85279f1..81d4fabf 100644 +index b9727f49..e98c0f3b 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -317,7 +317,7 @@ Given +@@ -324,7 +324,7 @@ Given #include struct C { @@ -22,7 +22,7 @@ index a85279f1..81d4fabf 100644 }; int main() { -@@ -2619,23 +2619,23 @@ namespace AB { +@@ -2626,23 +2626,23 @@ namespace AB { void h() { @@ -59,7 +59,7 @@ index a85279f1..81d4fabf 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 381250b8..4266aed5 100644 +index 180fbbac..3fda23c5 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2924,7 +2924,7 @@ struct s2 { @@ -75,7 +75,7 @@ index 381250b8..4266aed5 100644 2.43.0 -From 5d61a22ec14f73f20323c05da461423f6712852c Mon Sep 17 00:00:00 2001 +From f62b2287d8cddae5e607c5497dea59fc6d4b5db6 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. @@ -111,7 +111,7 @@ Subject: [PATCH 2/9] Use new link macros. 27 files changed, 607 insertions(+), 616 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 6ca7e0f1..09938442 100644 +index a30ec424..959658fe 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -133,10 +133,10 @@ index 6ca7e0f1..09938442 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index 81d4fabf..8411bcae 100644 +index e98c0f3b..1c0a6cfc 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -158,7 +158,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. +@@ -162,7 +162,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 81d4fabf..8411bcae 100644 translation unit. \rSec1[basic.def]{Declarations and definitions} -@@ -181,7 +181,7 @@ A declaration may also have effects including: +@@ -187,7 +187,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,8 +153,8 @@ index 81d4fabf..8411bcae 100644 +\item use of \link{attributes}{dcl.attr}, and \item nothing (in the case of an \grammarterm{empty-declaration}). \end{itemize} - -@@ -267,7 +267,7 @@ that defines a function, a class, a variable, or a static data member, + \end{note} +@@ -274,7 +274,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 @@ -163,7 +163,7 @@ index 81d4fabf..8411bcae 100644 \grammarterm{declaration} is not a definition. \end{itemize} A declaration is said to be a \defn{definition} of each entity that it defines. -@@ -309,7 +309,7 @@ In some circumstances, \Cpp{} implementations implicitly define the +@@ -316,7 +316,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,7 +172,7 @@ index 81d4fabf..8411bcae 100644 \end{note} \begin{example} Given -@@ -394,7 +394,7 @@ defined as follows: +@@ -401,7 +401,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$. @@ -181,7 +181,7 @@ index 81d4fabf..8411bcae 100644 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 -@@ -404,16 +404,15 @@ the set contains the potential results of $E_1$. +@@ -411,16 +411,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 +202,7 @@ index 81d4fabf..8411bcae 100644 contains the potential results of the right operand. \item Otherwise, the set is empty. \end{itemize} -@@ -575,8 +574,8 @@ implicitly-defined +@@ -582,8 +581,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 +213,7 @@ index 81d4fabf..8411bcae 100644 \pnum A local entity\iref{basic.pre} -@@ -648,7 +647,7 @@ void h() { +@@ -655,7 +654,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 +222,7 @@ index 81d4fabf..8411bcae 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}, -@@ -696,9 +695,9 @@ The rules for declarations and expressions +@@ -703,9 +702,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 +235,7 @@ index 81d4fabf..8411bcae 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 -@@ -718,7 +717,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or +@@ -725,7 +724,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,7 +244,7 @@ index 81d4fabf..8411bcae 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 -@@ -773,7 +772,7 @@ template specializations\iref{temp.spec.partial.match}, except that a name can r +@@ -780,7 +779,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}, @@ -253,7 +253,7 @@ index 81d4fabf..8411bcae 100644 \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} -@@ -2879,7 +2878,7 @@ consteval int bad_splice(std::meta::info v) { +@@ -2886,7 +2885,7 @@ consteval int bad_splice(std::meta::info v) { \pnum \indextext{program}% \indextext{linking}% @@ -262,7 +262,7 @@ index 81d4fabf..8411bcae 100644 linked together. A translation unit consists of a sequence of declarations. -@@ -2912,7 +2911,7 @@ are attached to the same module. +@@ -2919,7 +2918,7 @@ are attached to the same module. \indextext{linkage!\idxcode{inline} and}% \indextext{\idxcode{inline}!linkage of}% The name of an entity @@ -271,7 +271,7 @@ index 81d4fabf..8411bcae 100644 has internal linkage if it is the name of \begin{itemize} \item -@@ -2953,7 +2952,7 @@ typedef declaration in which the class has the typedef name for linkage +@@ -2960,7 +2959,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 +280,7 @@ index 81d4fabf..8411bcae 100644 in a typedef declaration in which the enumeration has the typedef name for linkage purposes\iref{dcl.typedef}; or \item an unnamed enumeration -@@ -3029,7 +3028,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. +@@ -3036,7 +3035,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 +289,7 @@ index 81d4fabf..8411bcae 100644 linkage. \pnum -@@ -3387,8 +3386,8 @@ features of the language, such as references and virtual functions, might +@@ -3394,8 +3393,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 +300,7 @@ index 81d4fabf..8411bcae 100644 locations without interfering with each other. \pnum -@@ -3432,15 +3431,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but +@@ -3439,15 +3438,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 +319,7 @@ index 81d4fabf..8411bcae 100644 and in its period of destruction\iref{class.cdtor}. \begin{note} -@@ -3570,7 +3569,7 @@ A \defn{potentially-overlapping subobject} is either: +@@ -3577,7 +3576,7 @@ A \defn{potentially-overlapping subobject} is either: \begin{itemize} \item a base class subobject, or \item a non-static data member @@ -328,7 +328,7 @@ index 81d4fabf..8411bcae 100644 \end{itemize} \pnum -@@ -3591,7 +3590,7 @@ Otherwise, the circumstances under which the object has zero size +@@ -3598,7 +3597,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 +337,7 @@ index 81d4fabf..8411bcae 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 -@@ -4163,16 +4162,16 @@ the result of the evaluation is the value so produced but is not erroneous: +@@ -4174,16 +4173,16 @@ the result of the evaluation is the value so produced but is not erroneous: is produced by the evaluation of: \begin{itemize} \item @@ -357,7 +357,7 @@ index 81d4fabf..8411bcae 100644 \end{itemize} then the result of the operation is an indeterminate value or that erroneous value, respectively. -@@ -4363,8 +4362,8 @@ specified in~\ref{class.copy.elision}. +@@ -4374,8 +4373,8 @@ specified in~\ref{class.copy.elision}. \indextext{storage duration!dynamic|(} \pnum @@ -368,7 +368,7 @@ index 81d4fabf..8411bcae 100644 \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -@@ -4528,9 +4527,9 @@ that would match a handler\iref{except.handle} of type +@@ -4539,9 +4538,9 @@ that would match a handler\iref{except.handle} of type \tcode{std::bad_alloc}\iref{bad.alloc}. \pnum @@ -381,7 +381,7 @@ index 81d4fabf..8411bcae 100644 a coroutine state\iref{dcl.fct.def.coroutine}, or called indirectly through calls to the functions in the \Cpp{} standard library. -@@ -5036,9 +5035,9 @@ shall be destroyed before +@@ -5047,9 +5046,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,7 +394,7 @@ index 81d4fabf..8411bcae 100644 \end{note} \pnum -@@ -5212,7 +5211,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, +@@ -5223,7 +5222,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, pointer types, pointer-to-member types\iref{basic.compound}, \tcode{std::meta::\brk{}info}, \tcode{std::nullptr_t}, and @@ -403,7 +403,7 @@ index 81d4fabf..8411bcae 100644 types are collectively called \defnadjx{scalar}{types}{type}. \label{term.trivially.copyable.type}% -@@ -5246,7 +5245,7 @@ A type is a \defnadj{literal}{type} if it is: +@@ -5257,7 +5256,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 +412,7 @@ index 81d4fabf..8411bcae 100644 has all of the following properties: \begin{itemize} \item it has a constexpr destructor\iref{dcl.constexpr}, -@@ -5280,8 +5279,8 @@ will be usable in a constant expression. +@@ -5291,8 +5290,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, @@ -423,7 +423,7 @@ index 81d4fabf..8411bcae 100644 \pnum A type is \defn{consteval-only} if it is either -@@ -5834,7 +5833,7 @@ ordinary pointers to objects or functions. +@@ -5849,7 +5848,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 +432,7 @@ index 81d4fabf..8411bcae 100644 \end{itemize} \pnum -@@ -5912,7 +5911,7 @@ layout-compatible types shall +@@ -5927,7 +5926,7 @@ layout-compatible types shall have the same value representation and alignment requirements\iref{basic.align}. \begin{note} @@ -441,7 +441,7 @@ index 81d4fabf..8411bcae 100644 representation, but their range of valid values is restricted by the extended alignment requirement. \end{note} -@@ -6227,8 +6226,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. +@@ -6242,8 +6241,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. \indextext{program execution|(} \pnum @@ -452,7 +452,7 @@ index 81d4fabf..8411bcae 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). -@@ -6273,7 +6272,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, +@@ -6288,7 +6287,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 @@ -461,7 +461,7 @@ index 81d4fabf..8411bcae 100644 the constituent expressions of each default argument\iref{dcl.fct.default} used in the call, or \item -@@ -6304,7 +6303,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope +@@ -6319,7 +6318,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope A \defn{full-expression} is \begin{itemize} \item @@ -471,7 +471,7 @@ index 81d4fabf..8411bcae 100644 a \grammarterm{constant-expression}\iref{expr.const}, \item diff --git a/source/classes.tex b/source/classes.tex -index 5f3fc4ea..32338393 100644 +index b3ff3a98..7b286507 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -275,10 +275,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: @@ -536,7 +536,7 @@ index 5f3fc4ea..32338393 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}; -@@ -2310,7 +2310,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation +@@ -2306,7 +2306,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} @@ -545,7 +545,7 @@ index 5f3fc4ea..32338393 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}. -@@ -6411,7 +6411,7 @@ associated with a \grammarterm{try-block} (if there is one), +@@ -6407,7 +6407,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; @@ -555,7 +555,7 @@ index 5f3fc4ea..32338393 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 60165bf4..41471921 100644 +index d0b6bcec..17355dea 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -2017,8 +2017,8 @@ deallocation functions\iref{expr.new}. @@ -570,7 +570,7 @@ index 60165bf4..41471921 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 3cbd110a..1722b95c 100644 --- a/source/concepts.tex +++ b/source/concepts.tex @@ -300,7 +300,7 @@ classifications, and fundamental type properties. @@ -618,7 +618,7 @@ index 4d848e8f..6bd0435e 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index e3b455f6..321f6146 100644 +index e197ec6e..ed136ec9 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -6116,14 +6116,14 @@ namespace std { @@ -764,7 +764,7 @@ index e3b455f6..321f6146 100644 is not used to construct these values. \pnum -@@ -15655,9 +15655,9 @@ and +@@ -15653,9 +15653,9 @@ and can be used to instantiate \tcode{queue}. In particular, @@ -776,7 +776,7 @@ index e3b455f6..321f6146 100644 can be used. \begin{codeblock} -@@ -16012,15 +16012,15 @@ and +@@ -16010,15 +16010,15 @@ and can be used to instantiate \tcode{priority_queue}. In particular, @@ -795,7 +795,7 @@ index e3b455f6..321f6146 100644 \begin{codeblock} namespace std { -@@ -16565,10 +16565,10 @@ and +@@ -16563,10 +16563,10 @@ and can be used to instantiate \tcode{stack}. In particular, @@ -810,7 +810,7 @@ index e3b455f6..321f6146 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index ee70278b..a8c0ecb3 100644 +index b958e5a3..f41fea44 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -901,7 +901,7 @@ index ee70278b..a8c0ecb3 100644 or as the \grammarterm{type-specifier} in the \grammarterm{parameter-declaration} of a \grammarterm{template-parameter}\iref{temp.param}. -@@ -4494,7 +4493,7 @@ int a; +@@ -4492,7 +4491,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 @@ -910,7 +910,7 @@ index ee70278b..a8c0ecb3 100644 \end{codeblock} \end{example} A non-static member shall not be designated in a default argument unless -@@ -6207,15 +6206,15 @@ This requires a conversion +@@ -6205,15 +6204,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 @@ -930,7 +930,7 @@ index ee70278b..a8c0ecb3 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7729,7 +7728,7 @@ the initializer is +@@ -7727,7 +7726,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} @@ -939,7 +939,7 @@ index ee70278b..a8c0ecb3 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. -@@ -7880,7 +7879,7 @@ is not looked up and is introduced by +@@ -7878,7 +7877,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}, @@ -948,7 +948,7 @@ index ee70278b..a8c0ecb3 100644 \pnum \indextext{constant!enumeration}% -@@ -7962,8 +7961,9 @@ If the underlying type is fixed, the type of each enumerator +@@ -7960,8 +7959,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} @@ -960,7 +960,7 @@ index ee70278b..a8c0ecb3 100644 If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as -@@ -7972,8 +7972,9 @@ follows: +@@ -7970,8 +7970,9 @@ follows: \begin{itemize} \item If an initializer is specified for an enumerator, the @@ -972,7 +972,7 @@ index ee70278b..a8c0ecb3 100644 unscoped enumeration type, the enumerator has the underlying type of that enumeration type, otherwise it has the same type as the expression. -@@ -8045,7 +8046,7 @@ if they have the same underlying type. +@@ -8043,7 +8044,7 @@ if they have the same underlying type. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -981,7 +981,7 @@ index ee70278b..a8c0ecb3 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8328,7 +8329,7 @@ appertains to the namespace being defined or extended. +@@ -8326,7 +8327,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 @@ -990,7 +990,7 @@ index ee70278b..a8c0ecb3 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 -@@ -9151,7 +9152,7 @@ different language linkages are distinct types even if they are +@@ -9149,7 +9150,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -999,7 +999,7 @@ index ee70278b..a8c0ecb3 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9481,19 +9482,19 @@ For each individual attribute, the form of the +@@ -9479,18 +9480,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 @@ -1007,7 +1007,6 @@ index ee70278b..a8c0ecb3 100644 +by an ellipsis is a \deflink{pack expansion}{temp.variadic}. An \grammarterm{attribute-specifier} that contains an \grammarterm{attribute-list} with no \grammarterm{attribute}s - and no \grammarterm{alignment-specifier} has no effect. The order in which the \grammarterm{attribute-token}{s} appear in an \grammarterm{attribute-list} is not significant. If a @@ -1024,7 +1023,7 @@ index ee70278b..a8c0ecb3 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9604,7 +9605,7 @@ declaration, the program is ill-formed. +@@ -9601,7 +9602,7 @@ declaration, the program is ill-formed. \pnum An \grammarterm{alignment-specifier} of the form \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same @@ -1033,7 +1032,7 @@ index ee70278b..a8c0ecb3 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9784,7 +9785,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9781,7 +9782,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -1221,7 +1220,7 @@ index ba2d34d0..cd476d28 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index 4266aed5..d9469cf9 100644 +index 3fda23c5..f6fdd1c7 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1459,9 +1458,9 @@ index 4266aed5..d9469cf9 100644 \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. @@ -1751,7 +1750,7 @@ index 4266aed5..d9469cf9 100644 allocation call of the \grammarterm{new-expression} shall be passed as the first argument to the deallocation function. -@@ -7065,8 +7066,8 @@ The result of a \tcode{.*} expression +@@ -7063,8 +7064,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. @@ -1762,7 +1761,7 @@ index 4266aed5..d9469cf9 100644 \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -7095,7 +7096,7 @@ left-to-right. +@@ -7093,7 +7094,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 @@ -1771,7 +1770,7 @@ index 4266aed5..d9469cf9 100644 operands and determine the type of the result. \pnum -@@ -7231,7 +7232,7 @@ the behavior is undefined\iref{expr.pre}. +@@ -7229,7 +7230,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 @@ -1780,7 +1779,7 @@ index 4266aed5..d9469cf9 100644 \begin{example} \begin{codeblock} int arr[5] = {1, 2, 3, 4, 5}; -@@ -7322,12 +7323,12 @@ and the other is not, the program is ill-formed. +@@ -7320,12 +7321,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, @@ -1795,7 +1794,7 @@ index 4266aed5..d9469cf9 100644 other than from an integral type to a floating-point type, the program is ill-formed. -@@ -7369,13 +7370,13 @@ the other operand is of object pointer or array type, +@@ -7367,13 +7368,13 @@ the other operand is of object pointer or array type, array-to-pointer conversions\iref{conv.array}, pointer conversions\iref{conv.ptr}, and @@ -1811,7 +1810,7 @@ index 4266aed5..d9469cf9 100644 \end{note} In this case, \tcode{p <=> q} is of type \tcode{std::strong_ordering} and -@@ -7464,7 +7465,7 @@ pointer conversions\iref{conv.ptr}, +@@ -7462,7 +7463,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring @@ -1820,7 +1819,7 @@ index 4266aed5..d9469cf9 100644 After conversions, the operands shall have the same type. \pnum -@@ -7549,10 +7550,10 @@ same type after the specified conversions have been applied. +@@ -7547,10 +7548,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, @@ -1835,7 +1834,7 @@ index 4266aed5..d9469cf9 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -7569,7 +7570,8 @@ the result of the comparison is unspecified. +@@ -7567,7 +7568,8 @@ the result of the comparison is unspecified. \item Otherwise, if the pointers are both null, both point to the same \indextext{address}% @@ -1845,7 +1844,7 @@ index 4266aed5..d9469cf9 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -7614,12 +7616,12 @@ bool b1 = (bx == cx); // unspecified +@@ -7612,12 +7614,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -1860,7 +1859,7 @@ index 4266aed5..d9469cf9 100644 indirection with a hypothetical object of the associated class type were performed, otherwise they compare unequal. \begin{example} -@@ -7859,7 +7861,7 @@ Otherwise, if the second and third operand have different types and +@@ -7857,7 +7859,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 @@ -1869,7 +1868,7 @@ index 4266aed5..d9469cf9 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 -@@ -7901,9 +7903,9 @@ denotes the cv-qualifiers of \tcode{T1}; +@@ -7899,9 +7901,9 @@ denotes the cv-qualifiers of \tcode{T1}; \item otherwise, the target type is the type that \tcode{E2} would have after applying the @@ -1882,7 +1881,7 @@ index 4266aed5..d9469cf9 100644 standard conversions. \end{itemize} \end{itemize} -@@ -7944,8 +7946,8 @@ are used in place of the original operands for the remainder of this +@@ -7942,8 +7944,8 @@ are used in place of the original operands for the remainder of this subclause. \pnum @@ -1893,7 +1892,7 @@ index 4266aed5..d9469cf9 100644 performed on the second and third operands. After those conversions, one of the following shall hold: -@@ -7954,16 +7956,16 @@ of the following shall hold: +@@ -7952,16 +7954,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; @@ -1916,7 +1915,7 @@ index 4266aed5..d9469cf9 100644 pointer type. \item One or both of the second and third operands have pointer-to-member type; -@@ -8147,7 +8149,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. +@@ -8145,7 +8147,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 @@ -1925,7 +1924,7 @@ index 4266aed5..d9469cf9 100644 operand. \pnum -@@ -8161,7 +8163,7 @@ resulting value of the bit-field is +@@ -8159,7 +8161,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 @@ -1934,7 +1933,7 @@ index 4266aed5..d9469cf9 100644 \pnum The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} -@@ -8233,7 +8235,7 @@ The comma operator groups left-to-right. +@@ -8231,7 +8233,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 @@ -1943,7 +1942,7 @@ index 4266aed5..d9469cf9 100644 The left expression is sequenced before the right expression\iref{intro.execution}. \indextext{operator!side effects and comma}% -@@ -8267,7 +8269,7 @@ Certain contexts require expressions that satisfy additional +@@ -8265,7 +8267,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, @@ -1952,7 +1951,7 @@ index 4266aed5..d9469cf9 100644 are called \indexdefn{expression!constant}% \defnx{constant expressions}{constant expression}. -@@ -8450,9 +8452,9 @@ a temporary object of non-volatile const-qualified literal type +@@ -8448,9 +8450,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 @@ -1964,7 +1963,7 @@ index 4266aed5..d9469cf9 100644 \item a non-mutable subobject of any of the above, or \item -@@ -8543,7 +8545,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. +@@ -8541,7 +8543,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -1973,7 +1972,7 @@ index 4266aed5..d9469cf9 100644 it is applied to \begin{itemize} \item -@@ -8565,7 +8567,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -8563,7 +8565,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 @@ -1982,7 +1981,7 @@ index 4266aed5..d9469cf9 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -8938,7 +8940,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -8936,7 +8938,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}, @@ -1991,7 +1990,7 @@ index 4266aed5..d9469cf9 100644 \end{note} \pnum -@@ -9439,7 +9441,7 @@ if it is: +@@ -9437,7 +9439,7 @@ if it is: a manifestly constant-evaluated expression, \item @@ -2000,7 +1999,7 @@ index 4266aed5..d9469cf9 100644 \item an immediate subexpression of a \grammarterm{braced-init-list}, -@@ -9466,7 +9468,9 @@ A function or variable is +@@ -9464,7 +9466,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -2012,7 +2011,7 @@ index 4266aed5..d9469cf9 100644 \item diff --git a/source/future.tex b/source/future.tex -index 5022a94d..fc805a6e 100644 +index bba0b7f7..41979b62 100644 --- a/source/future.tex +++ b/source/future.tex @@ -14,7 +14,7 @@ is defined as: @@ -2049,7 +2048,7 @@ index 5022a94d..fc805a6e 100644 the \oldconcept{TransformationTrait} requirements with a base characteristic of \tcode{integral_constant}. diff --git a/source/intro.tex b/source/intro.tex -index 880da163..8fb36735 100644 +index 1b4ace6b..aa368350 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -105,8 +105,8 @@ Reads of scalar objects are described in \ref{conv.lval} and @@ -2108,7 +2107,7 @@ index 880da163..8fb36735 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 2de81f0e..af9dce40 100644 +index d5d867ad..f0d3b942 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -555,7 +555,7 @@ is initialized, @@ -2198,8 +2197,8 @@ index 2de81f0e..af9dce40 100644 - // 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; + using int_type = traits::int_type; + using pos_type = traits::pos_type; @@ -4715,7 +4715,7 @@ basic_istream& operator>>(void*& val); \pnum As in the case of the inserters, these extractors depend on the @@ -2267,8 +2266,8 @@ index 2de81f0e..af9dce40 100644 - // 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; + using int_type = traits::int_type; + using pos_type = traits::pos_type; @@ -6702,7 +6702,7 @@ return *this << s; \end{codeblock} where \tcode{s} is an @@ -2428,7 +2427,7 @@ index 2de81f0e..af9dce40 100644 \pnum \throws diff --git a/source/iterators.tex b/source/iterators.tex -index 6a21fdf1..98944de7 100644 +index 9914bd24..ffa39eaf 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -729,7 +729,7 @@ is undefined. @@ -2440,7 +2439,7 @@ index 6a21fdf1..98944de7 100644 if all operations provided to meet iterator category requirements are constexpr functions. \begin{note} -@@ -6851,7 +6851,7 @@ ostream_iterator& operator++(int); +@@ -6852,7 +6852,7 @@ ostream_iterator& operator++(int); The class template \tcode{istreambuf_iterator} @@ -2449,7 +2448,7 @@ index 6a21fdf1..98944de7 100644 reads successive \textit{characters} from the streambuf for which it was constructed. -@@ -6976,7 +6976,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; +@@ -6977,7 +6977,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; Initializes \tcode{sbuf_} with \keyword{nullptr}. \end{itemdescr} @@ -2457,7 +2456,7 @@ index 6a21fdf1..98944de7 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(istream_type& s) noexcept; -@@ -6988,7 +6987,6 @@ istreambuf_iterator(istream_type& s) noexcept; +@@ -6989,7 +6988,6 @@ istreambuf_iterator(istream_type& s) noexcept; Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2465,7 +2464,7 @@ index 6a21fdf1..98944de7 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(streambuf_type* s) noexcept; -@@ -7000,7 +6998,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; +@@ -7001,7 +6999,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; Initializes \tcode{sbuf_} with \tcode{s}. \end{itemdescr} @@ -2473,7 +2472,7 @@ index 6a21fdf1..98944de7 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept; -@@ -7151,7 +7148,6 @@ is not a null pointer. +@@ -7152,7 +7149,6 @@ is not a null pointer. Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2482,7 +2481,7 @@ index 6a21fdf1..98944de7 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index 414f0b0d..c14e162a 100644 +index 0e93f84e..8a72eaf5 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2506,7 +2505,7 @@ index 414f0b0d..c14e162a 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 4444d26a..4bd46d8f 100644 +index c8731821..03b19a61 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2647,7 +2646,7 @@ index 4444d26a..4bd46d8f 100644 allocators. \pnum -@@ -2978,7 +2979,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, +@@ -2980,7 +2981,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 @@ -2656,7 +2655,7 @@ index 4444d26a..4bd46d8f 100644 other than \tcode{value_type} are complete types. \end{itemize} -@@ -2989,11 +2990,11 @@ whether or not \tcode{T} is a complete type: +@@ -2991,11 +2992,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 @@ -2672,7 +2671,7 @@ index 4444d26a..4bd46d8f 100644 \rSec3[namespace.constraints]{Namespace use} -@@ -3396,7 +3397,7 @@ are reserved for use by \Cpp{} implementations. +@@ -3398,7 +3399,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 @@ -2681,7 +2680,7 @@ index 4444d26a..4bd46d8f 100644 the behavior is undefined.% \indextext{source file}% \indextext{undefined} -@@ -3567,7 +3568,7 @@ specified as being shareable without data races or the user supplies a locking m +@@ -3569,7 +3570,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 @@ -2690,7 +2689,7 @@ index 4444d26a..4bd46d8f 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. -@@ -3633,7 +3634,7 @@ Every such entity shall be defined such that any header that defines it may be +@@ -3635,7 +3636,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 @@ -2699,7 +2698,7 @@ index 4444d26a..4bd46d8f 100644 shall include only their corresponding \Cpp{} standard library header, as described in~\ref{headers}. -@@ -3661,7 +3662,7 @@ explicitly stated otherwise. +@@ -3663,7 +3664,7 @@ explicitly stated otherwise. It is unspecified whether any non-member functions in the \Cpp{} standard library are defined as @@ -2708,7 +2707,7 @@ index 4444d26a..4bd46d8f 100644 \pnum A call to a non-member function signature -@@ -3689,7 +3690,7 @@ The phrase ``unless otherwise specified'' applies to cases such as +@@ -3691,7 +3692,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 @@ -2717,7 +2716,7 @@ index 4444d26a..4bd46d8f 100644 \effects \begin{codeblock} -@@ -3704,7 +3705,7 @@ return *this; +@@ -3706,7 +3707,7 @@ return *this; \pnum It is unspecified whether any member functions in the \Cpp{} standard library are defined as @@ -2726,7 +2725,7 @@ index 4444d26a..4bd46d8f 100644 \pnum For a non-virtual member function described in the \Cpp{} standard library, -@@ -3783,8 +3784,8 @@ library may be recursively reentered. +@@ -3785,8 +3786,8 @@ library may be recursively reentered. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -2737,7 +2736,7 @@ index 4444d26a..4bd46d8f 100644 Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. -@@ -3827,7 +3828,7 @@ not visible to users and are protected against data races. +@@ -3829,7 +3830,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 @@ -2746,7 +2745,7 @@ index 4444d26a..4bd46d8f 100644 \pnum \begin{note} -@@ -3956,7 +3957,7 @@ potentially-throwing exception specification} exceptions. +@@ -3958,7 +3959,7 @@ potentially-throwing exception specification} exceptions. \begin{footnote} In particular, they can report a failure to allocate storage by throwing an exception of type @@ -2769,7 +2768,7 @@ 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 24d01efc..e7613b33 100644 +index 681efff4..7ccd12be 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -3011,7 +3010,7 @@ index 24d01efc..e7613b33 100644 array or until the lifetime of that array ends, whichever happens first. -@@ -9809,12 +9805,12 @@ The contents and meaning of the header \libheader{cmath} +@@ -9813,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 @@ -3027,7 +3026,7 @@ index 24d01efc..e7613b33 100644 \end{note} \pnum -@@ -9878,7 +9874,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. +@@ -9882,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} @@ -3266,7 +3265,7 @@ index 7b882855..8e2bc352 100644 and \tcode{long} diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 38c59533..a6fd4d0f 100644 +index bbcf9a66..7d85b2e3 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -508,7 +508,7 @@ shall not appear in any context not mentioned in this subclause. @@ -3424,7 +3423,7 @@ index 34018bd6..785798f7 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 5a93b51d..e0a6f1ca 100644 +index 9e1e9481..099fd5f3 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -5528,13 +5528,13 @@ The contents and meaning of the header \libheaderdef{cstring} @@ -3454,7 +3453,7 @@ index 5a93b51d..e0a6f1ca 100644 \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index ad8cbc54..f3691cd9 100644 +index b6f6be77..d55d8d15 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3727,7 +3726,7 @@ index ad8cbc54..f3691cd9 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 2a020516..2133a25e 100644 +index 627a70ec..40dcf126 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -687,7 +687,7 @@ struct A {}; @@ -4042,7 +4041,7 @@ index 2a020516..2133a25e 100644 the program is ill-formed, no diagnostic required. \pnum -@@ -6488,7 +6488,7 @@ of type +@@ -6486,7 +6486,7 @@ of type \pnum If a function declaration acquired its function type through @@ -4051,7 +4050,7 @@ index 2a020516..2133a25e 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -6569,7 +6569,7 @@ X ch; // error: incomplete type \tcode{X} +@@ -6567,7 +6567,7 @@ X ch; // error: incomplete type \tcode{X} \end{example} \begin{note} Within a template declaration, @@ -4060,7 +4059,7 @@ index 2a020516..2133a25e 100644 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 -@@ -6747,7 +6747,7 @@ void x() { +@@ -6745,7 +6745,7 @@ void x() { \end{example} \pnum @@ -4069,7 +4068,7 @@ index 2a020516..2133a25e 100644 can be determined without instantiating a class template definition, it is unspecified whether that instantiation actually takes place. \begin{example} -@@ -7084,7 +7084,7 @@ If an entity is the subject of both an explicit instantiation declaration +@@ -7082,7 +7082,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 @@ -4078,7 +4077,7 @@ index 2a020516..2133a25e 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. -@@ -8149,7 +8149,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. +@@ -8147,7 +8147,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, @@ -4087,7 +4086,7 @@ index 2a020516..2133a25e 100644 would be required to convert the \grammarterm{template-argument} of type \tcode{int} to \tcode{signed char}, -@@ -8258,8 +8258,8 @@ is not a reference type: +@@ -8256,8 +8256,8 @@ is not a reference type: \item If \tcode{A} @@ -4098,7 +4097,7 @@ index 2a020516..2133a25e 100644 \tcode{A} for type deduction; otherwise, -@@ -8267,7 +8267,7 @@ otherwise, +@@ -8265,7 +8265,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -4107,7 +4106,7 @@ index 2a020516..2133a25e 100644 of \tcode{A} for type -@@ -8363,8 +8363,8 @@ The transformed \tcode{A} +@@ -8361,8 +8361,8 @@ The transformed \tcode{A} can be another pointer or pointer-to-member type that can be converted to the deduced \tcode{A} @@ -4118,7 +4117,7 @@ index 2a020516..2133a25e 100644 \item If -@@ -8497,7 +8497,7 @@ void test() { +@@ -8495,7 +8495,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -4127,7 +4126,7 @@ index 2a020516..2133a25e 100644 If there is a target, the function template's function type and the target type are used as the types of -@@ -8544,7 +8544,7 @@ is not a reference type: +@@ -8542,7 +8542,7 @@ is not a reference type: If \tcode{P} is an array type, the pointer type produced by the @@ -4136,7 +4135,7 @@ index 2a020516..2133a25e 100644 \tcode{P} for type deduction; otherwise, -@@ -8552,7 +8552,7 @@ deduction; otherwise, +@@ -8550,7 +8550,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -4145,7 +4144,7 @@ index 2a020516..2133a25e 100644 \tcode{P} for type deduction; otherwise, -@@ -8643,7 +8643,7 @@ after a function has been selected. +@@ -8641,7 +8641,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 @@ -4154,7 +4153,7 @@ index 2a020516..2133a25e 100644 type is used. \end{itemize} -@@ -9159,7 +9159,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the +@@ -9157,7 +9157,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$. @@ -4163,7 +4162,7 @@ index 2a020516..2133a25e 100644 originally a pack expansion: \begin{itemize} \item if \tcode{P} does not contain a template argument corresponding to -@@ -9222,7 +9222,7 @@ each remaining parameter type in the parameter-type-list +@@ -9220,7 +9220,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. @@ -4172,7 +4171,7 @@ index 2a020516..2133a25e 100644 originally a function parameter pack: \begin{itemize} \item if \tcode{P} does not contain a function parameter type corresponding to -@@ -9516,8 +9516,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod +@@ -9514,8 +9514,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 @@ -4184,7 +4183,7 @@ index 2a020516..2133a25e 100644 \tcode{operator new}\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 68206c12..1b18d89d 100644 +index 166a8a24..bb641003 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4357,7 +4356,7 @@ index 68206c12..1b18d89d 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 2e3e9b55..2939c865 100644 +index d82346f7..5f5fdcfb 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1222,7 +1222,7 @@ unless it meets all of the following conditions: @@ -4406,7 +4405,7 @@ index 2e3e9b55..2939c865 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index db10d7c9..6febc3c3 100644 +index a35b63a5..dcf80d40 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -104,15 +104,15 @@ namespace std { @@ -4473,7 +4472,7 @@ index db10d7c9..6febc3c3 100644 each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts} with a base characteristic of \begin{codeblock} -@@ -6909,6 +6909,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); +@@ -6911,6 +6911,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); \rSec2[variant.monostate]{Class \tcode{monostate}}% \indexlibraryglobal{monostate}% @@ -4481,7 +4480,7 @@ index db10d7c9..6febc3c3 100644 \begin{itemdecl} struct monostate{}; \end{itemdecl} -@@ -7077,7 +7078,8 @@ namespace std { +@@ -7079,7 +7080,8 @@ namespace std { \end{codeblock} \pnum @@ -4495,7 +4494,7 @@ index db10d7c9..6febc3c3 100644 2.43.0 -From 857f2971669f68909d9b271c9e98ce2cea8c1537 Mon Sep 17 00:00:00 2001 +From 89b64002fa2ceb25d44b6203ca455415eea52afa 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 @@ -4507,7 +4506,7 @@ Subject: [PATCH 3/9] Fix dubious \defnx that has see{} in it, and remove range 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index af9dce40..0f649a76 100644 +index f0d3b942..90000ab2 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -13919,7 +13919,7 @@ without an intervening \grammarterm{root-directory} element. @@ -4520,7 +4519,7 @@ index af9dce40..0f649a76 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index 2133a25e..63baaaf8 100644 +index 40dcf126..656d82ed 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -2085,7 +2085,6 @@ so it does match \#2. @@ -4548,7 +4547,7 @@ index 2133a25e..63baaaf8 100644 2.43.0 -From 2384aaae34a7f18462dee0e59147228df6781c36 Mon Sep 17 00:00:00 2001 +From 8fe580026edc338785a923c6eba6f90840b3ed01 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 @@ -4556,9 +4555,9 @@ Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and --- source/exceptions.tex | 4 +- - source/lex.tex | 176 +++++++------- + source/lex.tex | 182 +++++++-------- source/time.tex | 518 +++++++++++++++++++++--------------------- - 3 files changed, 349 insertions(+), 349 deletions(-) + 3 files changed, 352 insertions(+), 352 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex index cd476d28..df489ab5 100644 @@ -4579,7 +4578,7 @@ index cd476d28..df489ab5 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index c14e162a..5e38b875 100644 +index 8a72eaf5..c1386c6a 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -330,43 +330,43 @@ the numerical value has no other meaning in this context. @@ -4838,7 +4837,22 @@ index c14e162a..5e38b875 100644 \end{bnf} \begin{bnf} -@@ -1483,16 +1483,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1462,12 +1462,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} +@@ -1483,21 +1483,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{octal-escape-sequence}\br @@ -4860,6 +4874,12 @@ index c14e162a..5e38b875 100644 + \literalterminal{\textbackslash x\{} simple-hexadecimal-digit-sequence \literalterminal{\}} \end{bnf} + \begin{bnf} + \nontermdef{conditional-escape-sequence}\br +- \terminal{\textbackslash} conditional-escape-sequence-char ++ \literalterminal{\textbackslash} conditional-escape-sequence-char + \end{bnf} + \begin{bnf} @@ -1680,42 +1680,42 @@ is supported for compatibility with \CppXIV{} and C. @@ -4945,7 +4965,7 @@ index c14e162a..5e38b875 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 2939c865..c37f5bba 100644 +index 5f5fdcfb..fd854a49 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2200,7 +2200,7 @@ If the parse fails to decode a valid duration, @@ -5965,7 +5985,7 @@ index 2939c865..c37f5bba 100644 2.43.0 -From c789975472923e49702e7ae17f082e17e2da368b Mon Sep 17 00:00:00 2001 +From 5b43052734eacc81eba5f244cb9f3b3ba4d9ed71 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. @@ -6000,7 +6020,7 @@ Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. 26 files changed, 272 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 09938442..3af19872 100644 +index 959658fe..efe3f977 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -8698,7 +8698,6 @@ but stronger than those for a partial ordering. @@ -6036,10 +6056,10 @@ index 09938442..3af19872 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index 8411bcae..0cf54882 100644 +index 1c0a6cfc..baadca8b 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -287,7 +287,6 @@ int X::y = 1; // defines \tcode{X::y} +@@ -294,7 +294,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} X anX; // defines \tcode{anX} @@ -6047,7 +6067,7 @@ index 8411bcae..0cf54882 100644 \end{codeblock} whereas these are just declarations: \begin{codeblock} -@@ -824,7 +823,6 @@ compute equivalent values\iref{expr.eq}. +@@ -831,7 +830,6 @@ compute equivalent values\iref{expr.eq}. \pnum For the purposes of the preceding requirements: @@ -6055,7 +6075,7 @@ index 8411bcae..0cf54882 100644 \begin{itemize} \item If \tcode{D} is a class with an implicitly-declared constructor\iref{class.default.ctor,class.copy.ctor}, -@@ -6108,7 +6106,6 @@ has the top-level cv-qualifier \keyword{volatile}. +@@ -6123,7 +6121,6 @@ has the top-level cv-qualifier \keyword{volatile}. \pnum Every integer type has an \term{integer conversion rank} defined as follows: @@ -6064,10 +6084,10 @@ index 8411bcae..0cf54882 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 32338393..fcf3f025 100644 +index 7b286507..e2b6a5eb 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -1717,7 +1717,6 @@ for each non-static data member of +@@ -1713,7 +1713,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} @@ -6075,7 +6095,7 @@ index 32338393..fcf3f025 100644 \indextext{constructor!move!non-trivial}% otherwise the copy/move constructor is \defnx{non-trivial}{constructor!copy!nontrivial}. -@@ -3338,7 +3337,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat +@@ -3334,7 +3333,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: @@ -6083,7 +6103,7 @@ index 32338393..fcf3f025 100644 \begin{codeblock} u.m.~M(); new (&u.n) N; -@@ -3516,7 +3514,6 @@ A local class cannot have static data members\iref{class.static.data}. +@@ -3512,7 +3510,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: @@ -6091,7 +6111,7 @@ index 32338393..fcf3f025 100644 \begin{bnf} \nontermdef{base-clause}\br \terminal{:} base-specifier-list -@@ -5491,7 +5488,6 @@ initializers for direct and virtual base class subobjects and +@@ -5487,7 +5484,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 @@ -6099,7 +6119,7 @@ index 32338393..fcf3f025 100644 \begin{bnf} \nontermdef{ctor-initializer}\br \terminal{:} mem-initializer-list -@@ -5962,7 +5958,6 @@ public: +@@ -5958,7 +5954,6 @@ public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; \end{codeblock} @@ -6107,7 +6127,7 @@ index 32338393..fcf3f025 100644 \end{example} \rSec2[class.inhctor.init]{Initialization by inherited constructor}% -@@ -6618,7 +6613,6 @@ any non-static data member of \tcode{C} is of reference type or +@@ -6614,7 +6609,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 @@ -6115,7 +6135,7 @@ index 32338393..fcf3f025 100644 \begin{itemize} \item \tcode{a} or \tcode{b} is of class or enumeration type and -@@ -6739,7 +6733,6 @@ The \defnadj{synthesized}{three-way comparison} +@@ -6735,7 +6729,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: @@ -6123,7 +6143,7 @@ index 32338393..fcf3f025 100644 \begin{itemize} \item If \tcode{a <=> b} is usable\iref{class.compare.default} and -@@ -6839,7 +6832,6 @@ The \defn{common comparison type} \tcode{U} +@@ -6835,7 +6828,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: @@ -6132,7 +6152,7 @@ index 32338393..fcf3f025 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 41471921..f67b16a1 100644 +index 17355dea..8186b85c 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -2619,7 +2619,6 @@ Overspecification. @@ -6151,7 +6171,7 @@ index 41471921..f67b16a1 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}; -@@ -3768,7 +3766,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in +@@ -3769,7 +3767,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in \pnum Header \libheaderref{cstring}: The following functions have different declarations: @@ -6159,7 +6179,7 @@ index 41471921..f67b16a1 100644 \begin{itemize} \item \tcode{strchr} \item \tcode{strpbrk} -@@ -3782,7 +3779,6 @@ Subclause \ref{cstring.syn} describes the changes. +@@ -3783,7 +3780,6 @@ Subclause \ref{cstring.syn} describes the changes. \pnum Header \libheaderref{cwchar}: The following functions have different declarations: @@ -6167,7 +6187,7 @@ index 41471921..f67b16a1 100644 \begin{itemize} \item \tcode{wcschr} \item \tcode{wcspbrk} -@@ -3807,7 +3803,6 @@ in addition to the names declared in +@@ -3808,7 +3804,6 @@ in addition to the names declared in \pnum Header \libheaderref{cstdlib}: The following functions have different behavior: @@ -6176,7 +6196,7 @@ index 41471921..f67b16a1 100644 \item \tcode{atexit} \item \tcode{exit} diff --git a/source/concepts.tex b/source/concepts.tex -index 6bd0435e..0bfd8612 100644 +index 1722b95c..6663d0e0 100644 --- a/source/concepts.tex +++ b/source/concepts.tex @@ -150,7 +150,6 @@ already specifies exactly such an expression explicitly. @@ -6305,7 +6325,7 @@ index 6bd0435e..0bfd8612 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 321f6146..1e5a9871 100644 +index ed136ec9..2f5de6f4 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -685,7 +685,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6354,7 +6374,7 @@ index 321f6146..1e5a9871 100644 - \begin{codeblock} template - using @\placeholdernc{iter-value-type}@ = typename iterator_traits::value_type; // \expos + using @\placeholdernc{iter-value-type}@ = iterator_traits::value_type; // \expos @@ -9326,7 +9320,6 @@ If \tcode{size() < sz}, appends \tcode{sz - size()} default-inserted elements to the sequence. @@ -6377,7 +6397,7 @@ index 321f6146..1e5a9871 100644 \end{itemdescr} \begin{itemdecl} -@@ -20116,7 +20107,6 @@ For each of +@@ -20093,7 +20084,6 @@ For each of \tcode{stack}, the library provides the following formatter specialization where \tcode{\placeholder{adaptor-type}} is the name of the template: @@ -6385,7 +6405,7 @@ index 321f6146..1e5a9871 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -24308,7 +24298,6 @@ typename A::offset_policy +@@ -24285,7 +24275,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6393,7 +6413,7 @@ index 321f6146..1e5a9871 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -25278,7 +25267,6 @@ the \tcode{SliceSpecifier} arguments. +@@ -25254,7 +25243,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: @@ -6401,7 +6421,7 @@ index 321f6146..1e5a9871 100644 \begin{itemize} \item let \tcode{index_type} be \begin{itemize} -@@ -25542,7 +25530,6 @@ $\le \tcode{src.extent($k$)}$ +@@ -25518,7 +25506,6 @@ $\le \tcode{src.extent($k$)}$ \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: @@ -6409,7 +6429,7 @@ index 321f6146..1e5a9871 100644 \begin{itemize} \item %FIXME: I think we want the count here, "number" is ambiguous. -@@ -25553,7 +25540,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and +@@ -25529,7 +25516,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: @@ -6417,7 +6437,7 @@ index 321f6146..1e5a9871 100644 \begin{itemize} \item \tcode{Extents::static_extent($k$)} -@@ -25593,7 +25579,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that +@@ -25569,7 +25555,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: @@ -6426,7 +6446,7 @@ index 321f6146..1e5a9871 100644 \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 a8c0ecb3..1e8c45d2 100644 +index f41fea44..4fa9b627 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1593,7 +1593,6 @@ a partial specialization\iref{temp.spec.partial}, @@ -6445,7 +6465,7 @@ index a8c0ecb3..1e8c45d2 100644 \begin{bnf} \nontermdef{declarator}\br ptr-declarator\br -@@ -4398,7 +4396,6 @@ In the following code, +@@ -4396,7 +4394,6 @@ In the following code, \tcode{g} will be called with the value \tcode{f(2)}: @@ -6453,7 +6473,7 @@ index a8c0ecb3..1e8c45d2 100644 \begin{codeblock} int a = 1; int f(int); -@@ -5068,7 +5065,6 @@ To +@@ -5066,7 +5063,6 @@ To an object of type \tcode{T} means: @@ -6461,7 +6481,7 @@ index a8c0ecb3..1e8c45d2 100644 \begin{itemize} \item If -@@ -5272,7 +5268,6 @@ is sequenced before those associated with +@@ -5270,7 +5266,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: @@ -6469,7 +6489,7 @@ index a8c0ecb3..1e8c45d2 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -6184,7 +6179,6 @@ a program that necessitates such a binding is ill-formed. +@@ -6182,7 +6177,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} @@ -6477,7 +6497,7 @@ index a8c0ecb3..1e8c45d2 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6652,7 +6646,6 @@ int j { 1 }; // initialize to 1 +@@ -6650,7 +6644,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -6485,7 +6505,7 @@ index a8c0ecb3..1e8c45d2 100644 \end{itemize} \pnum -@@ -7739,7 +7732,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, +@@ -7737,7 +7730,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, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -6493,7 +6513,7 @@ index a8c0ecb3..1e8c45d2 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7871,7 +7863,6 @@ struct S { +@@ -7869,7 +7861,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6501,7 +6521,7 @@ index a8c0ecb3..1e8c45d2 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7968,7 +7959,6 @@ If the underlying +@@ -7966,7 +7957,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6509,7 +6529,7 @@ index a8c0ecb3..1e8c45d2 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8427,7 +8417,6 @@ void h() { +@@ -8425,7 +8415,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} according to the following grammar: @@ -6517,7 +6537,7 @@ index a8c0ecb3..1e8c45d2 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8601,7 +8590,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8599,7 +8588,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, @@ -6525,7 +6545,7 @@ index a8c0ecb3..1e8c45d2 100644 \begin{codeblock} namespace A { class X { }; -@@ -9154,7 +9142,6 @@ otherwise identical. +@@ -9152,7 +9140,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6533,7 +6553,7 @@ index a8c0ecb3..1e8c45d2 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -10023,7 +10010,6 @@ may be applied to a function or a lambda call operator or +@@ -10020,7 +10007,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: @@ -6567,7 +6587,7 @@ index df489ab5..17fe2711 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index d9469cf9..61abb53e 100644 +index f6fdd1c7..37b62ab4 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -464,7 +464,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -6706,7 +6726,7 @@ index d9469cf9..61abb53e 100644 \begin{itemize} \item If the allocation call for the \grammarterm{new-expression} for the object to -@@ -7325,7 +7308,6 @@ or one operand has integral type and +@@ -7323,7 +7306,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: @@ -6714,7 +6734,7 @@ index d9469cf9..61abb53e 100644 \begin{itemize} \item If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, -@@ -7480,7 +7462,6 @@ is considered to be equivalent to a pointer to a hypothetical array element +@@ -7478,7 +7460,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: @@ -6722,7 +6742,7 @@ index d9469cf9..61abb53e 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 -@@ -7493,7 +7474,6 @@ neither member is a subobject of zero size +@@ -7491,7 +7472,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. @@ -6730,7 +6750,7 @@ index d9469cf9..61abb53e 100644 \end{itemize} \pnum -@@ -7555,7 +7535,6 @@ If at least one of the converted operands is a pointer, +@@ -7553,7 +7533,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: @@ -6738,7 +6758,7 @@ index d9469cf9..61abb53e 100644 \begin{itemize} \item If one pointer represents the address of a complete object, and another -@@ -7585,7 +7564,6 @@ qualification conversions\iref{conv.qual} +@@ -7583,7 +7562,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: @@ -6746,7 +6766,7 @@ index d9469cf9..61abb53e 100644 \begin{itemize} \item If two pointers to members are both the null member pointer value, they compare -@@ -7871,7 +7849,6 @@ Attempts are made to form an implicit conversion sequence +@@ -7869,7 +7847,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: @@ -6754,7 +6774,7 @@ index d9469cf9..61abb53e 100644 \begin{itemize} \item If \tcode{E2} is an lvalue, the target type is ``lvalue reference to \tcode{T2}'', -@@ -7950,7 +7927,6 @@ subclause. +@@ -7948,7 +7925,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: @@ -6762,7 +6782,7 @@ index d9469cf9..61abb53e 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. -@@ -7980,7 +7956,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. +@@ -7978,7 +7954,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}. @@ -6771,7 +6791,7 @@ index d9469cf9..61abb53e 100644 \rSec2[expr.yield]{Yielding a value}% diff --git a/source/future.tex b/source/future.tex -index fc805a6e..ab7c724e 100644 +index 41979b62..4957e2c3 100644 --- a/source/future.tex +++ b/source/future.tex @@ -283,7 +283,6 @@ shown in the above synopsis. @@ -6839,7 +6859,7 @@ index fc805a6e..ab7c724e 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index 0f649a76..a34a3f84 100644 +index 90000ab2..6058ccab 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -2102,14 +2102,12 @@ does nothing. @@ -6943,8 +6963,8 @@ index 0f649a76..a34a3f84 100644 and then as if by doing: - \begin{codeblock} - char extern_buf[XSIZE]; - char* extern_end; + char extern_buf[XSIZE]; + const char* extern_end; @@ -13920,7 +13907,6 @@ without an intervening \grammarterm{root-directory} element. \pnum \indextext{path!normalization|(}% @@ -6962,7 +6982,7 @@ index 0f649a76..a34a3f84 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 98944de7..315cca9e 100644 +index ffa39eaf..ed2a7332 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -948,7 +948,6 @@ may be defined as \keyword{void}. @@ -6989,7 +7009,7 @@ index 98944de7..315cca9e 100644 \begin{itemize} \item \tcode{iter_move(E)}, if \tcode{E} has class or enumeration type and -@@ -2791,7 +2788,6 @@ namespace std { +@@ -2792,7 +2789,6 @@ namespace std { A program-defined iterator \tcode{BinaryTreeIterator} can be included into the bidirectional iterator category by specializing the \tcode{iterator_traits} template: @@ -6997,7 +7017,7 @@ index 98944de7..315cca9e 100644 \begin{codeblock} template struct iterator_traits> { using iterator_category = bidirectional_iterator_tag; -@@ -2809,7 +2805,6 @@ If +@@ -2810,7 +2806,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: @@ -7005,7 +7025,7 @@ index 98944de7..315cca9e 100644 \begin{codeblock} template inline void -@@ -3396,7 +3391,6 @@ As if by: +@@ -3397,7 +3392,6 @@ As if by: Iterator tmp = current; return *--tmp; \end{codeblock} @@ -7013,7 +7033,7 @@ index 98944de7..315cca9e 100644 \end{itemdescr} \indexlibrarymember{operator->}{reverse_iterator}% -@@ -4778,7 +4772,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 +@@ -4779,7 +4773,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} @@ -7021,7 +7041,7 @@ index 98944de7..315cca9e 100644 \end{example} \rSec3[move.iterator]{Class template \tcode{move_iterator}} -@@ -6497,7 +6490,6 @@ partial_sum(istream_iterator(cin), +@@ -6498,7 +6491,6 @@ partial_sum(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "@\textbackslash@n")); \end{codeblock} @@ -7030,7 +7050,7 @@ index 98944de7..315cca9e 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 4bd46d8f..76ea7917 100644 +index 03b19a61..b668fdac 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. @@ -7129,7 +7149,7 @@ index 4bd46d8f..76ea7917 100644 \begin{codeblock} template struct SimpleAllocator { -@@ -3422,13 +3410,11 @@ the description of function semantics apply +@@ -3424,13 +3412,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. @@ -7143,7 +7163,7 @@ index 4bd46d8f..76ea7917 100644 \begin{itemize} \item \tcode{terminate_handler} -@@ -3449,7 +3435,6 @@ Exception handling. +@@ -3451,7 +3437,6 @@ Exception handling. \pnum A \Cpp{} program can get a pointer to the current handler function by calling the following functions: @@ -7151,7 +7171,7 @@ index 4bd46d8f..76ea7917 100644 \begin{itemize} \item \indexlibraryglobal{get_new_handler}% -@@ -3475,7 +3460,6 @@ on the implementation. +@@ -3477,7 +3462,6 @@ on the implementation. \pnum In particular, the behavior is undefined in the following cases: @@ -7159,7 +7179,7 @@ index 4bd46d8f..76ea7917 100644 \begin{itemize} \item For replacement functions\iref{replacement.functions}, if the installed replacement function does not -@@ -3760,7 +3744,6 @@ functions or constructors an implementation shall provide corresponding definiti +@@ -3762,7 +3746,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: @@ -7178,7 +7198,7 @@ index efd4eb00..12180661 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index e4a250b1..deb35ac5 100644 +index 1b455e86..f2964f90 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1571,7 +1571,6 @@ when considered as an unevaluated operand. @@ -7198,10 +7218,10 @@ index e4a250b1..deb35ac5 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index 6eda2087..e6dedae6 100644 +index 16365a12..7541a534 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -1943,7 +1943,6 @@ is_base_of_v // \tcode{false} +@@ -1947,7 +1947,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 well-formed, including any implicit conversions to the return type of the function: @@ -7209,7 +7229,7 @@ index 6eda2087..e6dedae6 100644 \begin{codeblock} To test() { return declval(); -@@ -2451,7 +2450,6 @@ If any of the types computed above is ill-formed, then +@@ -2455,7 +2454,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: @@ -7218,7 +7238,7 @@ index 6eda2087..e6dedae6 100644 \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 e7613b33..accd8c6d 100644 +index 7ccd12be..56017d80 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); @@ -7378,10 +7398,10 @@ index 8e2bc352..f94e7c05 100644 const char* unsigned long long int diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index a6fd4d0f..da2270a0 100644 +index 7d85b2e3..a147d15a 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex -@@ -183,7 +183,6 @@ begins with the first character in the source file +@@ -194,7 +194,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 @@ -7461,7 +7481,7 @@ index a6fd4d0f..da2270a0 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 49105075..1ce5326c 100644 +index 1f4f807d..cd516a76 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7528,7 +7548,7 @@ index 49105075..1ce5326c 100644 \begin{codeblock} template concept @\defexposconceptnc{simple-view}@ = // \expos -@@ -5888,7 +5880,6 @@ If \tcode{decltype((F))} does not model +@@ -5889,7 +5881,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: @@ -7536,7 +7556,7 @@ index 49105075..1ce5326c 100644 \begin{itemize} \item If \tcode{T} is a specialization -@@ -5909,7 +5900,6 @@ then +@@ -5910,7 +5901,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: @@ -7544,7 +7564,7 @@ index 49105075..1ce5326c 100644 \begin{itemize} \item if \tcode{T} is a specialization of \tcode{span}, then \tcode{U} is \tcode{span}; -@@ -6371,7 +6361,6 @@ If \tcode{decltype((F))} does not model +@@ -6372,7 +6362,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: @@ -7552,7 +7572,7 @@ index 49105075..1ce5326c 100644 \begin{itemize} \item If \tcode{T} is a specialization of -@@ -7447,7 +7436,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and +@@ -7448,7 +7437,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: @@ -7560,7 +7580,7 @@ index 49105075..1ce5326c 100644 \begin{itemize} \item Let \placeholder{OUTERC} denote -@@ -9746,7 +9734,6 @@ appears in the immediate context of a template instantiation. +@@ -9747,7 +9735,6 @@ appears in the immediate context of a template instantiation. \end{note} Otherwise, \tcode{views::counted(E, F)} is expression-equivalent to: @@ -7581,7 +7601,7 @@ index 785798f7..fa5898d3 100644 \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are diff --git a/source/support.tex b/source/support.tex -index f3691cd9..43f3c9f5 100644 +index d55d8d15..54ed6da8 100644 --- a/source/support.tex +++ b/source/support.tex @@ -2459,7 +2459,6 @@ This requirement is binding on any replacement versions of these functions. @@ -7614,10 +7634,10 @@ index f3691cd9..43f3c9f5 100644 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 63baaaf8..91b148f9 100644 +index 656d82ed..e31f88b7 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -235,7 +235,6 @@ in some translation unit; no diagnostic is required. @@ -7780,7 +7800,7 @@ index 63baaaf8..91b148f9 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -6937,7 +6917,6 @@ template. +@@ -6935,7 +6915,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -7788,7 +7808,7 @@ index 63baaaf8..91b148f9 100644 \begin{bnf} \nontermdef{explicit-instantiation}\br \opt{\keyword{extern}} \keyword{template} declaration -@@ -7412,7 +7391,6 @@ otherwise, it is a declaration. +@@ -7410,7 +7389,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}: @@ -7796,7 +7816,7 @@ index 63baaaf8..91b148f9 100644 \begin{codeblock} template<> X Q::x; // declaration template<> X Q::x (); // error: declares a function -@@ -7671,7 +7649,6 @@ An empty template argument list can be used to indicate that a given +@@ -7669,7 +7647,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: @@ -7804,7 +7824,7 @@ index 63baaaf8..91b148f9 100644 \begin{codeblock} template int f(T); // \#1 int f(int); // \#2 -@@ -8253,7 +8230,6 @@ void h(int x, float& y) { +@@ -8251,7 +8228,6 @@ void h(int x, float& y) { If \tcode{P} is not a reference type: @@ -7812,7 +7832,7 @@ index 63baaaf8..91b148f9 100644 \begin{itemize} \item If -@@ -8348,7 +8324,6 @@ the type +@@ -8346,7 +8322,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -7820,7 +7840,7 @@ index 63baaaf8..91b148f9 100644 \begin{itemize} \item If the original -@@ -8538,7 +8513,6 @@ of \tcode{P} for type deduction and for any further references to or transformat +@@ -8536,7 +8511,6 @@ of \tcode{P} for type deduction and for any further references to or transformat If \tcode{A} is not a reference type: @@ -7828,7 +7848,7 @@ index 63baaaf8..91b148f9 100644 \begin{itemize} \item If -@@ -8584,7 +8558,6 @@ values that will make the deduced +@@ -8582,7 +8556,6 @@ values that will make the deduced identical to \tcode{A}. However, certain attributes of \tcode{A} may be ignored: @@ -7836,7 +7856,7 @@ index 63baaaf8..91b148f9 100644 \begin{itemize} \item If the original \tcode{A} is a reference type, -@@ -8629,7 +8602,6 @@ the argument template and template-1 as the parameter template. +@@ -8627,7 +8600,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: @@ -7844,7 +7864,7 @@ index 63baaaf8..91b148f9 100644 \begin{itemize} \item In the context of a function call, the types used are those function parameter types -@@ -8657,7 +8629,6 @@ and +@@ -8655,7 +8627,6 @@ and \pnum Before the partial ordering is done, certain transformations are performed on the types used for partial ordering: @@ -7852,7 +7872,7 @@ index 63baaaf8..91b148f9 100644 \begin{itemize} \item If -@@ -8863,7 +8834,6 @@ A given type +@@ -8861,7 +8832,6 @@ A given type \tcode{P} can be composed from a number of other types, templates, and constant template argument values: @@ -7860,7 +7880,7 @@ index 63baaaf8..91b148f9 100644 \begin{itemize} \item A function type includes the types of each of the function parameters, -@@ -8905,7 +8875,6 @@ need not have the same form. +@@ -8903,7 +8873,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -7868,7 +7888,7 @@ index 63baaaf8..91b148f9 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -9000,7 +8969,6 @@ is deduced. +@@ -8998,7 +8967,6 @@ is deduced. \begin{example} Here is an example in which different parameter/argument pairs produce inconsistent template argument deductions: @@ -7876,7 +7896,7 @@ index 63baaaf8..91b148f9 100644 \begin{codeblock} template void f(T x, T y) { @\commentellip@ } struct A { @\commentellip@ }; -@@ -9017,7 +8985,6 @@ Here is an example where two template arguments are deduced from a +@@ -9015,7 +8983,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: @@ -7884,7 +7904,7 @@ index 63baaaf8..91b148f9 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -9034,7 +9001,6 @@ void r() { +@@ -9032,7 +8999,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -7892,7 +7912,7 @@ index 63baaaf8..91b148f9 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -9053,7 +9019,6 @@ void h() { +@@ -9051,7 +9017,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: @@ -7900,7 +7920,7 @@ index 63baaaf8..91b148f9 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -9064,7 +9029,6 @@ void s() { +@@ -9062,7 +9027,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: @@ -7909,7 +7929,7 @@ index 63baaaf8..91b148f9 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 1b18d89d..45b25596 100644 +index bb641003..dd7d639f 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -7386,7 +7386,6 @@ and visible to other threads. @@ -8049,7 +8069,7 @@ index 1b18d89d..45b25596 100644 \item If \tcode{launch::async} is set in \tcode{policy}, calls diff --git a/source/time.tex b/source/time.tex -index c37f5bba..f52ab7f4 100644 +index fd854a49..175e3ab5 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2074,7 +2074,6 @@ return os << s.str(); @@ -8199,7 +8219,7 @@ index c37f5bba..f52ab7f4 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 6febc3c3..78087710 100644 +index dcf80d40..58252722 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -270,7 +270,6 @@ Exchanges values stored in two locations. @@ -8226,7 +8246,7 @@ index 6febc3c3..78087710 100644 \begin{codeblock} noexcept(x.swap(y)) \end{codeblock} -@@ -10699,7 +10696,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; +@@ -10701,7 +10698,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8234,7 +8254,7 @@ index 6febc3c3..78087710 100644 \begin{itemize} \item If \tcode{I < pos}, the new value is zero; -@@ -10724,7 +10720,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; +@@ -10726,7 +10722,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8242,7 +8262,7 @@ index 6febc3c3..78087710 100644 \begin{itemize} \item If \tcode{pos >= N - I}, the new value is zero; -@@ -11450,7 +11445,6 @@ namespace std { +@@ -11452,7 +11447,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: @@ -8250,7 +8270,7 @@ index 6febc3c3..78087710 100644 \begin{codeblock} transform(a.begin(), a.end(), b.begin(), a.begin(), plus()); \end{codeblock} -@@ -14929,7 +14923,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; +@@ -14931,7 +14925,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: @@ -8262,7 +8282,7 @@ index 6febc3c3..78087710 100644 2.43.0 -From c92248534f4ad6851524ecd28625433427575860 Mon Sep 17 00:00:00 2001 +From 434cbc5df3741cf4f767d724f6e4dee48be4fd36 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. @@ -8409,7 +8429,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From 0019625753aa4d51eb92af8b1a67721d088d6d45 Mon Sep 17 00:00:00 2001 +From d1c1e42329a61c4367c89657eb0aed985a0aecee 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. @@ -8437,31 +8457,31 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From cfcee64febebd71b55588c5a211edb800d558450 Mon Sep 17 00:00:00 2001 +From 80f1e2bfcf9b2f760c29cddfdd4d1875bac2e82a 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. --- - source/algorithms.tex | 180 +++++++++++++------------- + 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/iostreams.tex | 28 ++--- + source/lib-intro.tex | 28 ++--- source/memory.tex | 46 +++---- - source/meta.tex | 282 ++++++++++++++++++++--------------------- + source/meta.tex | 274 ++++++++++++++++++++--------------------- source/numerics.tex | 38 +++--- source/strings.tex | 10 +- - source/support.tex | 14 +- - source/threads.tex | 110 ++++++++-------- + source/support.tex | 14 +-- + source/threads.tex | 110 ++++++++--------- source/time.tex | 66 +++++----- source/utilities.tex | 136 ++++++++++---------- - 15 files changed, 490 insertions(+), 498 deletions(-) + 15 files changed, 486 insertions(+), 494 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 3af19872..42bc0626 100644 +index efe3f977..c196ba1b 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -9033,7 +9053,7 @@ index 3af19872..42bc0626 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 6663d0e0..53d43b5d 100644 --- a/source/concepts.tex +++ b/source/concepts.tex @@ -495,7 +495,7 @@ template @@ -9121,7 +9141,7 @@ index e653b348..2adaa033 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 22eb3485..587fdbf0 100644 +index ed0a8d5c..f4136f9b 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9160,7 +9180,7 @@ index 22eb3485..587fdbf0 100644 \\ \end{floattable} diff --git a/source/future.tex b/source/future.tex -index ab7c724e..c69ae9e5 100644 +index 4957e2c3..6d5a4e97 100644 --- a/source/future.tex +++ b/source/future.tex @@ -359,7 +359,7 @@ template struct is_pod; @@ -9209,7 +9229,7 @@ index ab7c724e..c69ae9e5 100644 \begin{itemize} \item for the first specialization, \tcode{add_volatile_t}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index a34a3f84..0ff3588e 100644 +index 6058ccab..7586f5cb 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -1681,10 +1681,10 @@ An \tcode{fpos} type specifies file position information. @@ -9290,7 +9310,7 @@ index a34a3f84..0ff3588e 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 76ea7917..7712e342 100644 +index b668fdac..d01e3aa2 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -1862,7 +1862,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. @@ -9399,7 +9419,7 @@ index 76ea7917..7712e342 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index deb35ac5..d574546f 100644 +index f2964f90..eddd5794 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1273,7 +1273,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type @@ -9572,7 +9592,7 @@ index deb35ac5..d574546f 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index e6dedae6..b2188af9 100644 +index 7541a534..e7f1ce51 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -95,12 +95,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -9606,121 +9626,121 @@ index e6dedae6..b2188af9 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 -@@ -307,17 +307,17 @@ namespace std { +@@ -306,17 +306,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; -@@ -325,38 +325,38 @@ namespace std { +@@ -324,38 +324,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; -@@ -375,29 +375,29 @@ namespace std { +@@ -374,29 +374,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}@ = typename apply_result::type; -+ using @\libglobal{apply_result_t}@ = typename @\libglobalref{apply_result}@::type; +- 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; -@@ -408,191 +408,191 @@ namespace std { +@@ -407,191 +407,191 @@ namespace std { // \ref{meta.unary.cat}, primary type categories template @@ -9870,37 +9890,35 @@ index e6dedae6..b2188af9 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 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}@ = 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}@ = 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}@ = 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}@ = 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}@ = 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; template - constexpr bool is_nothrow_move_constructible_v = 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; @@ -9932,9 +9950,8 @@ index e6dedae6..b2188af9 100644 - 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}@ @@ -9976,9 +9993,8 @@ index e6dedae6..b2188af9 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; @@ -9990,9 +10006,9 @@ index e6dedae6..b2188af9 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; + constexpr bool @\libglobal{is_nothrow_invocable_r_v}@ = is_nothrow_invocable_r::value; template -@@ -602,11 +602,11 @@ namespace std { +@@ -601,11 +601,11 @@ namespace std { // \ref{meta.logical}, logical operator traits template @@ -10007,7 +10023,7 @@ index e6dedae6..b2188af9 100644 // \ref{meta.member}, member relationships template -@@ -916,7 +916,7 @@ properties of a type at compile time. +@@ -920,7 +920,7 @@ properties of a type at compile time. \pnum Each of these templates shall be a @@ -10016,7 +10032,7 @@ index e6dedae6..b2188af9 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is \tcode{true}, otherwise \tcode{false_type}. -@@ -946,17 +946,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. +@@ -950,17 +950,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. \topline \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead @@ -10037,7 +10053,7 @@ index e6dedae6..b2188af9 100644 \tcode{T} is an integral type\iref{basic.fundamental} & \\ \rowsep \indexlibraryglobal{is_floating_point}% \tcode{template}\br -@@ -1185,9 +1182,8 @@ A union is a class type that +@@ -1189,9 +1186,8 @@ A union is a class type that & If \tcode{T} is a class type, \tcode{T} shall be a complete type. \\ \rowsep @@ -10048,7 +10064,7 @@ index e6dedae6..b2188af9 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 -@@ -1204,16 +1200,14 @@ A union is a class type that +@@ -1208,16 +1204,14 @@ A union is a class type that \tcode{T(-1) < T(0)}; otherwise, \tcode{false} & \\ \rowsep @@ -10067,7 +10083,7 @@ index e6dedae6..b2188af9 100644 \tcode{T} is an array type of known bound\iref{dcl.array} & \\ \rowsep -@@ -1717,7 +1711,7 @@ may be used to query properties of types at compile time. +@@ -1721,7 +1715,7 @@ may be used to query properties of types at compile time. \end{libreqtab2a} \pnum @@ -10076,7 +10092,7 @@ index e6dedae6..b2188af9 100644 base characteristic of \tcode{integral_constant}. \pnum -@@ -1753,7 +1747,7 @@ may be used to query relationships between types at compile time. +@@ -1757,7 +1751,7 @@ may be used to query relationships between types at compile time. \pnum Each of these templates shall be a @@ -10085,7 +10101,7 @@ index e6dedae6..b2188af9 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is true, otherwise \tcode{false_type}. -@@ -1774,7 +1768,7 @@ Let \tcode{\placeholdernc{ELEMS-OF}(T)} be the parameter pack +@@ -1778,7 +1772,7 @@ Let \tcode{\placeholdernc{ELEMS-OF}(T)} be the parameter pack \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead \tcode{template}\br @@ -10094,7 +10110,7 @@ index e6dedae6..b2188af9 100644 \tcode{T} and \tcode{U} name the same type with the same cv-qualifications & \\ \rowsep \indexlibraryglobal{is_base_of}% -@@ -1975,7 +1969,7 @@ type to another following some predefined rule. +@@ -1979,7 +1973,7 @@ type to another following some predefined rule. \pnum Each of the templates in \ref{meta.trans} shall be a @@ -10103,7 +10119,7 @@ index e6dedae6..b2188af9 100644 \rSec3[meta.trans.cv]{Const-volatile modifications} -@@ -2262,16 +2256,16 @@ perform other modifications of a type. +@@ -2266,16 +2260,16 @@ perform other modifications of a type. \tcode{template\br struct \libglobal{remove_cvref};} & The member typedef \tcode{type} denotes @@ -10125,7 +10141,7 @@ index e6dedae6..b2188af9 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} -@@ -2377,7 +2371,7 @@ argument passing. +@@ -2381,7 +2375,7 @@ argument passing. \tcode{template} \tcode{struct \libglobal{unwrap_reference};} & If \tcode{T} is @@ -10134,7 +10150,7 @@ index e6dedae6..b2188af9 100644 the member typedef \tcode{type} of \tcode{unwrap_reference} denotes \tcode{X\&}, otherwise \tcode{type} denotes \tcode{T}. \\ \rowsep -@@ -2385,7 +2379,7 @@ argument passing. +@@ -2389,7 +2383,7 @@ argument passing. \tcode{template} \tcode{\libglobal{unwrap_ref_decay};} & The member typedef \tcode{type} of \tcode{unwrap_ref_decay} @@ -10143,7 +10159,7 @@ index e6dedae6..b2188af9 100644 \end{libreqtab2a} \pnum -@@ -2403,7 +2397,7 @@ when the header \tcode{}\iref{functional.syn} is included. +@@ -2407,7 +2401,7 @@ when the header \tcode{}\iref{functional.syn} is included. Let: \begin{itemize} \item \tcode{\placeholdernc{CREF}(A)} be @@ -10152,7 +10168,7 @@ index e6dedae6..b2188af9 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 -@@ -2428,15 +2422,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: +@@ -2432,15 +2426,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 @@ -10171,7 +10187,7 @@ index e6dedae6..b2188af9 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 -@@ -2735,7 +2729,7 @@ template struct negation : @\seebelow@ { }; +@@ -2739,7 +2733,7 @@ template struct negation : @\seebelow@ { }; The class template \tcode{negation} forms the logical negation of its template type argument. The type \tcode{negation} @@ -10181,7 +10197,7 @@ index e6dedae6..b2188af9 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index accd8c6d..f9579b68 100644 +index 56017d80..7d576b59 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 @@ -10305,7 +10321,7 @@ index accd8c6d..f9579b68 100644 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 e0a6f1ca..e654c723 100644 +index 099fd5f3..d906a754 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -238,10 +238,10 @@ using state_type = @\seebelow@; @@ -10333,7 +10349,7 @@ index e0a6f1ca..e654c723 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 43f3c9f5..047f9904 100644 +index 54ed6da8..9158f6fb 100644 --- a/source/support.tex +++ b/source/support.tex @@ -3657,11 +3657,11 @@ namespace std { @@ -10372,7 +10388,7 @@ index 43f3c9f5..047f9904 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index 45b25596..c897fccc 100644 +index dd7d639f..277d15be 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10768,7 +10784,7 @@ index 45b25596..c897fccc 100644 \pnum \tcode{T} may be an incomplete type. diff --git a/source/time.tex b/source/time.tex -index f52ab7f4..c0a4aaf9 100644 +index 175e3ab5..dec0fb9f 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1039,13 +1039,13 @@ SI definition is a measure of the quality of implementation. @@ -10981,7 +10997,7 @@ index f52ab7f4..c0a4aaf9 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index 78087710..722b6077 100644 +index 58252722..e9676caf 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -258,9 +258,9 @@ template @@ -11041,7 +11057,7 @@ index 78087710..722b6077 100644 \pnum \begin{note} -@@ -4002,7 +4002,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); +@@ -4004,7 +4004,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11050,7 +11066,7 @@ index 78087710..722b6077 100644 \pnum \effects -@@ -4059,7 +4059,7 @@ using const_iterator = @\impdef@; +@@ -4061,7 +4061,7 @@ using const_iterator = @\impdef@; \pnum These types model \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, @@ -11059,7 +11075,7 @@ index 78087710..722b6077 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 -@@ -5044,7 +5044,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5046,7 +5046,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} @@ -11068,7 +11084,7 @@ index 78087710..722b6077 100644 \end{note} \pnum -@@ -5235,7 +5235,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5237,7 +5237,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} @@ -11077,7 +11093,7 @@ index 78087710..722b6077 100644 \end{note} \pnum -@@ -5730,7 +5730,7 @@ is nested within\iref{intro.object} the +@@ -5732,7 +5732,7 @@ is nested within\iref{intro.object} the \pnum All types in \tcode{Types} shall meet @@ -11086,7 +11102,7 @@ index 78087710..722b6077 100644 \pnum A program that instantiates the definition of \tcode{variant} with -@@ -6410,7 +6410,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); +@@ -6412,7 +6412,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11095,7 +11111,7 @@ index 78087710..722b6077 100644 \pnum \effects -@@ -6455,7 +6455,7 @@ template struct variant_size; +@@ -6457,7 +6457,7 @@ template struct variant_size; \begin{itemdescr} \pnum All specializations of \tcode{variant_size} meet the @@ -11104,7 +11120,7 @@ index 78087710..722b6077 100644 with a base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -6468,7 +6468,7 @@ template struct variant_size; +@@ -6470,7 +6470,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 @@ -11113,7 +11129,7 @@ index 78087710..722b6077 100644 base characteristic of \tcode{integral_constant}. \end{itemdescr} -@@ -6488,7 +6488,7 @@ template struct variant_alternative; +@@ -6490,7 +6490,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 @@ -11122,7 +11138,7 @@ index 78087710..722b6077 100644 member typedef \tcode{type} that names the type \tcode{add_const_t}. \end{itemdescr} -@@ -7216,7 +7216,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. +@@ -7218,7 +7218,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. \pnum \expects @@ -11131,7 +11147,7 @@ index 78087710..722b6077 100644 \pnum \effects -@@ -7244,7 +7244,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7246,7 +7246,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11140,7 +11156,7 @@ index 78087710..722b6077 100644 \pnum \effects -@@ -7277,7 +7277,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7279,7 +7279,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11149,7 +11165,7 @@ index 78087710..722b6077 100644 \pnum \effects -@@ -7362,7 +7362,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7364,7 +7364,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11158,7 +11174,7 @@ index 78087710..722b6077 100644 \pnum \effects -@@ -7397,7 +7397,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7399,7 +7399,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11167,7 +11183,7 @@ index 78087710..722b6077 100644 \pnum \effects -@@ -7441,7 +7441,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7443,7 +7443,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11176,7 +11192,7 @@ index 78087710..722b6077 100644 \pnum \effects -@@ -8147,9 +8147,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -8149,9 +8149,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 @@ -11188,7 +11204,7 @@ index 78087710..722b6077 100644 \rSec3[expected.object.cons]{Constructors} -@@ -9389,7 +9389,7 @@ template friend constexpr bool operator==(const expected& x, const T2& +@@ -9391,7 +9391,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} @@ -11197,7 +11213,7 @@ index 78087710..722b6077 100644 \end{note} \pnum -@@ -9526,7 +9526,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -9528,7 +9528,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum \tcode{E} shall meet the requirements of @@ -11206,7 +11222,7 @@ index 78087710..722b6077 100644 \rSec3[expected.void.cons]{Constructors} -@@ -11551,8 +11551,8 @@ is ill-formed. +@@ -11553,8 +11553,8 @@ is ill-formed. \indextext{call wrapper}% \indextext{call wrapper!simple}% \indextext{call wrapper!forwarding}% @@ -11217,7 +11233,7 @@ index 78087710..722b6077 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. -@@ -11592,7 +11592,7 @@ with references as described in the corresponding forwarding steps. +@@ -11594,7 +11594,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 @@ -11226,7 +11242,7 @@ index 78087710..722b6077 100644 and whose copy constructor, move constructor, and assignment operators are constexpr functions that do not throw exceptions. -@@ -11695,7 +11695,7 @@ namespace std { +@@ -11697,7 +11697,7 @@ namespace std { \end{codeblock} \pnum @@ -11235,7 +11251,7 @@ index 78087710..722b6077 100644 around a reference to an object or function of type \tcode{T}. \pnum -@@ -13149,7 +13149,7 @@ is \tcode{true}. +@@ -13151,7 +13151,7 @@ is \tcode{true}. \pnum \expects @@ -11244,7 +11260,7 @@ index 78087710..722b6077 100644 \pnum \returns -@@ -13235,10 +13235,10 @@ is \tcode{true}. +@@ -13237,10 +13237,10 @@ is \tcode{true}. \pnum \expects @@ -11257,7 +11273,7 @@ index 78087710..722b6077 100644 \pnum \returns -@@ -13304,7 +13304,7 @@ then \tcode{f != nullptr} is \tcode{true}. +@@ -13306,7 +13306,7 @@ then \tcode{f != nullptr} is \tcode{true}. \pnum \expects For each $\tcode{T}_i$ in \tcode{BoundArgs}, @@ -11266,7 +11282,7 @@ index 78087710..722b6077 100644 \pnum \returns -@@ -13349,7 +13349,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. +@@ -13351,7 +13351,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. \pnum Specializations of the \tcode{is_bind_expression} template shall meet @@ -11275,7 +11291,7 @@ index 78087710..722b6077 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}. -@@ -13385,7 +13385,7 @@ The function template \tcode{bind} uses +@@ -13387,7 +13387,7 @@ The function template \tcode{bind} uses \pnum Specializations of the \tcode{is_placeholder} template shall meet @@ -11284,7 +11300,7 @@ index 78087710..722b6077 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 -@@ -13435,7 +13435,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> +@@ -13437,7 +13437,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 @@ -11293,7 +11309,7 @@ index 78087710..722b6077 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 -@@ -13471,8 +13471,8 @@ the state entities of \tcode{g}. +@@ -13473,8 +13473,8 @@ the state entities of \tcode{g}. \pnum \begin{note} If all of \tcode{FD} and $\tcode{TD}_i$ meet @@ -11304,7 +11320,7 @@ index 78087710..722b6077 100644 \end{note} \end{itemdescr} -@@ -13541,13 +13541,13 @@ The number \tcode{\placeholder{M}} of placeholders is +@@ -13543,13 +13543,13 @@ The number \tcode{\placeholder{M}} of placeholders is \impldef{number of placeholders for bind expressions}. \pnum @@ -11321,7 +11337,7 @@ index 78087710..722b6077 100644 but if so, their copy assignment operators are constexpr functions that do not throw exceptions. -@@ -13815,7 +13815,7 @@ Let \tcode{FD} be \tcode{decay_t}. +@@ -13817,7 +13817,7 @@ Let \tcode{FD} be \tcode{decay_t}. \pnum \expects @@ -11330,7 +11346,7 @@ index 78087710..722b6077 100644 \pnum \ensures -@@ -14240,9 +14240,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14242,9 +14242,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11342,7 +11358,7 @@ index 78087710..722b6077 100644 \pnum \ensures -@@ -14292,9 +14292,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14294,9 +14294,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11354,7 +11370,7 @@ index 78087710..722b6077 100644 \pnum \ensures -@@ -14334,9 +14334,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14336,9 +14336,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11366,7 +11382,7 @@ index 78087710..722b6077 100644 \pnum \ensures -@@ -14658,8 +14658,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14660,8 +14660,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11377,7 +11393,7 @@ index 78087710..722b6077 100644 \pnum \ensures -@@ -14714,8 +14714,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14716,8 +14716,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11388,7 +11404,7 @@ index 78087710..722b6077 100644 \pnum \ensures -@@ -14760,8 +14760,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14762,8 +14762,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11399,7 +11415,7 @@ index 78087710..722b6077 100644 \pnum \ensures -@@ -15276,7 +15276,7 @@ provided to the function call operator. +@@ -15278,7 +15278,7 @@ provided to the function call operator. \pnum Each specialization of a class template specified in \ref{func.search} @@ -11408,7 +11424,7 @@ index 78087710..722b6077 100644 Template parameters named \begin{itemize} \item \tcode{ForwardIterator}, -@@ -15290,7 +15290,7 @@ Template parameters named +@@ -15292,7 +15292,7 @@ Template parameters named of templates specified in \ref{func.search} shall meet the same requirements and semantics as specified in \ref{algorithms.general}. @@ -11417,7 +11433,7 @@ index 78087710..722b6077 100644 requirements (\tref{cpp17.hash}). \pnum -@@ -15399,9 +15399,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, +@@ -15401,9 +15401,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, \pnum \expects The value type of \tcode{RandomAccessIterator1} meets @@ -11430,7 +11446,7 @@ index 78087710..722b6077 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15500,8 +15500,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, +@@ -15502,8 +15502,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, \begin{itemdescr} \pnum \expects @@ -11441,7 +11457,7 @@ index 78087710..722b6077 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15574,7 +15574,7 @@ as the default hash function. +@@ -15576,7 +15576,7 @@ as the default hash function. Each specialization of \tcode{hash} is either enabled or disabled, as described below. \begin{note} @@ -11450,7 +11466,7 @@ index 78087710..722b6077 100644 disabled specializations do not. \end{note} Each header that declares the template \tcode{hash} -@@ -15601,17 +15601,17 @@ Disabled specializations of \tcode{hash} +@@ -15603,17 +15603,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 @@ -11477,7 +11493,7 @@ index 78087710..722b6077 100644 2.43.0 -From fef073bd6ac7704e98c783ea6444c14a160f8cbf Mon Sep 17 00:00:00 2001 +From 3b3c19914f00afbebee29eddb016865e6d6ddbfa 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. @@ -11495,7 +11511,7 @@ Subject: [PATCH 9/9] Remove awkward \linebreaks. 9 files changed, 68 insertions(+), 69 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 42bc0626..4fa0e6ac 100644 +index c196ba1b..4de0042f 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -7070,7 +7070,7 @@ Let: @@ -11517,7 +11533,7 @@ index 42bc0626..4fa0e6ac 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index 1e5a9871..a1ea4d5c 100644 +index 2f5de6f4..b8a1871a 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1456,7 +1456,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11574,7 +11590,7 @@ index 1e5a9871..a1ea4d5c 100644 for some type \tcode{Alloc} and \tcode{vector} is not a program-defined specialization. \end{itemdescr} -@@ -12026,7 +12025,7 @@ there is no effect. +@@ -12025,7 +12024,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)), @@ -11583,7 +11599,7 @@ index 1e5a9871..a1ea4d5c 100644 If \tcode{equal_range(u.first) == r} is \tcode{false}, the behavior is undefined. Inserts \tcode{u} into \tcode{*this}. -@@ -17513,7 +17512,7 @@ template +@@ -17511,7 +17510,7 @@ template \pnum \effects Equivalent to \tcode{flat_map(sorted_unique, key_cont, mapped_cont)} and @@ -11592,7 +11608,7 @@ index 1e5a9871..a1ea4d5c 100644 except that \tcode{\exposid{c}.keys} and \tcode{\exposid{c}.values} are constructed with uses-allocator construction\iref{allocator.uses.construction}. -@@ -17697,7 +17696,7 @@ template constexpr pair emplace(Args&&... args); +@@ -17695,7 +17694,7 @@ template constexpr pair emplace(Args&&... args); \pnum \effects Initializes an object \tcode{t} of type \tcode{pair} @@ -11601,7 +11617,7 @@ index 1e5a9871..a1ea4d5c 100644 if the map already contains an element whose key is equivalent to \tcode{t.first}, \tcode{*this} is unchanged. -@@ -17974,7 +17973,7 @@ template +@@ -17951,7 +17950,7 @@ template \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11610,7 +11626,7 @@ index 1e5a9871..a1ea4d5c 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18029,7 +18028,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. +@@ -18006,7 +18005,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}, @@ -11619,7 +11635,7 @@ index 1e5a9871..a1ea4d5c 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18643,14 +18642,14 @@ template +@@ -18620,14 +18619,14 @@ template \pnum \effects Equivalent to \tcode{flat_multimap(key_cont, mapped_cont)} and @@ -11636,7 +11652,7 @@ index 1e5a9871..a1ea4d5c 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -23211,7 +23210,7 @@ is representable as a value of type \tcode{index_type.} +@@ -23188,7 +23187,7 @@ is representable as a value of type \tcode{index_type.} \item If \exposid{rank_} is greater than one, then the product of @@ -11645,7 +11661,7 @@ index 1e5a9871..a1ea4d5c 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}. -@@ -23290,7 +23289,7 @@ template +@@ -23267,7 +23266,7 @@ template \item If \exposid{rank_} is greater than \tcode{1} and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11654,7 +11670,7 @@ index 1e5a9871..a1ea4d5c 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(0))) -@@ -23358,7 +23357,7 @@ is \tcode{true}. +@@ -23335,7 +23334,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11663,7 +11679,7 @@ index 1e5a9871..a1ea4d5c 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(0))) -@@ -23756,7 +23755,7 @@ Implementations should not store this value +@@ -23733,7 +23732,7 @@ Implementations should not store this value if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. \begin{note} Using \tcode{extents} @@ -11672,7 +11688,7 @@ index 1e5a9871..a1ea4d5c 100644 would achieve this. \end{note} \end{itemdescr} -@@ -23839,13 +23838,13 @@ is representable as a value of type \tcode{index_type}. +@@ -23816,13 +23815,13 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -11688,7 +11704,7 @@ index 1e5a9871..a1ea4d5c 100644 \end{itemize} \pnum -@@ -23918,7 +23917,7 @@ template +@@ -23895,7 +23894,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11697,7 +11713,7 @@ index 1e5a9871..a1ea4d5c 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -23986,7 +23985,7 @@ is \tcode{true}. +@@ -23963,7 +23962,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11706,7 +11722,7 @@ index 1e5a9871..a1ea4d5c 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) -@@ -25646,7 +25645,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, +@@ -25622,7 +25621,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 @@ -11715,7 +11731,7 @@ index 1e5a9871..a1ea4d5c 100644 \item otherwise, \tcode{stride($k$)}. \end{itemize} -@@ -26044,11 +26043,11 @@ is well-formed when treated as an unevaluated operand. +@@ -26020,11 +26019,11 @@ is well-formed when treated as an unevaluated operand. \begin{itemize} \item \tcode{decltype(submdspan_mapping(src.mapping(), slices...))} @@ -11729,7 +11745,7 @@ index 1e5a9871..a1ea4d5c 100644 is \tcode{true}. \item -@@ -26078,11 +26077,11 @@ all of the following are \tcode{true}: +@@ -26054,11 +26053,11 @@ all of the following are \tcode{true}: \item $0 \le \tcode{\exposid{first_}(slices...)}$ $\le \tcode{\exposid{last_}<$k$>(src.extents(), slices...)}$ @@ -11744,10 +11760,10 @@ index 1e5a9871..a1ea4d5c 100644 \item diff --git a/source/exec.tex b/source/exec.tex -index 587fdbf0..f6852a32 100644 +index f4136f9b..dc1f2a5e 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -3247,7 +3247,7 @@ except that \tcode{sch} is evaluated only once. +@@ -3244,7 +3244,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}, @@ -11756,7 +11772,7 @@ index 587fdbf0..f6852a32 100644 \tcode{starts_on.transform_sender(out_sndr, env)} are ill-formed; otherwise \begin{itemize} \item -@@ -3627,7 +3627,7 @@ except that \tcode{sndr} is evaluated only once. +@@ -3624,7 +3624,7 @@ except that \tcode{sndr} is evaluated only once. \pnum Let \tcode{out_sndr} and \tcode{env} be subexpressions, let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and @@ -11765,7 +11781,7 @@ index 587fdbf0..f6852a32 100644 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. -@@ -3769,7 +3769,7 @@ Let the expression \exposid{then-cpo} be one of +@@ -3766,7 +3766,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}, @@ -11774,7 +11790,7 @@ index 587fdbf0..f6852a32 100644 \pnum Otherwise, -@@ -4074,7 +4074,7 @@ is initialized with a callable object equivalent to the following: +@@ -4071,7 +4071,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 @@ -11783,7 +11799,7 @@ index 587fdbf0..f6852a32 100644 is \tcode{false}, then the expression \tcode{\exposid{let-cpo}.transform_env(sndr, env)} is ill-formed. -@@ -4689,7 +4689,7 @@ try { +@@ -4686,7 +4686,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -11792,7 +11808,7 @@ index 587fdbf0..f6852a32 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -5732,7 +5732,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. +@@ -5729,7 +5729,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. \pnum For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. @@ -11802,7 +11818,7 @@ index 587fdbf0..f6852a32 100644 the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: diff --git a/source/memory.tex b/source/memory.tex -index d574546f..f254eca5 100644 +index eddd5794..ceadf294 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1371,7 +1371,7 @@ A \tcode{tuple} value determined as follows: @@ -11833,10 +11849,10 @@ index d574546f..f254eca5 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index b2188af9..7d111969 100644 +index e7f1ce51..2f732db9 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -2530,7 +2530,7 @@ present as follows: +@@ -2534,7 +2534,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 @@ -11846,10 +11862,10 @@ index b2188af9..7d111969 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index f9579b68..55338c7e 100644 +index 7d576b59..90da4b4c 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -13803,7 +13803,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. +@@ -13807,7 +13807,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -11858,7 +11874,7 @@ index f9579b68..55338c7e 100644 \pnum \returns -@@ -14009,7 +14009,7 @@ template +@@ -14013,7 +14013,7 @@ template \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -11868,7 +11884,7 @@ index f9579b68..55338c7e 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 1ce5326c..1f3504a8 100644 +index cd516a76..74722f48 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -11889,7 +11905,7 @@ index 1ce5326c..1f3504a8 100644 \tcode{make_from_tuple(std::move(bound_args))}. The behavior is undefined if \tcode{Bound} is not \tcode{unreachable_sentinel_t} and -@@ -5915,7 +5915,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} +@@ -5916,7 +5916,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), @@ -11898,7 +11914,7 @@ index 1ce5326c..1f3504a8 100644 except that \tcode{E} is evaluated only once. \item -@@ -6391,7 +6391,7 @@ if \tcode{T} is +@@ -6392,7 +6392,7 @@ if \tcode{T} is a specialization of \tcode{subrange} that models \libconcept{random_access_range} and \libconcept{sized_range}, then @@ -11907,7 +11923,7 @@ index 1ce5326c..1f3504a8 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. -@@ -7443,7 +7443,7 @@ Let \placeholder{OUTERC} denote +@@ -7444,7 +7444,7 @@ Let \placeholder{OUTERC} denote let \placeholder{INNERC} denote \tcode{iterator_traits<\exposid{InnerIter}>::iterator_category}, and let \placeholder{PATTERNC} denote @@ -11916,7 +11932,7 @@ index 1ce5326c..1f3504a8 100644 \item If \begin{codeblock} -@@ -7952,7 +7952,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); +@@ -7953,7 +7953,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 @@ -11925,7 +11941,7 @@ index 1ce5326c..1f3504a8 100644 \end{itemdescr} \rSec3[range.lazy.split.outer]{Class template \tcode{lazy_split_view::\exposid{outer-iterator}}} -@@ -8263,7 +8263,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: +@@ -8264,7 +8264,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: \begin{itemize} \item \tcode{forward_iterator_tag} if @@ -11934,7 +11950,7 @@ index 1ce5326c..1f3504a8 100644 \tcode{\libconcept{derived_from}}; \item otherwise, \tcode{iterator_traits>::iterator_category}. \end{itemize} -@@ -8483,7 +8483,7 @@ constexpr explicit split_view(R&& r, range_value_t e); +@@ -8484,7 +8484,7 @@ constexpr explicit split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -11943,7 +11959,7 @@ index 1ce5326c..1f3504a8 100644 \end{itemdescr} \indexlibrarymember{begin}{split_view} -@@ -9048,7 +9048,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. +@@ -9049,7 +9049,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. \item Otherwise, if \tcode{\exposconcept{all-forward}} is modeled, @@ -11952,7 +11968,7 @@ index 1ce5326c..1f3504a8 100644 \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} -@@ -9074,14 +9074,14 @@ let \tcode{Cs} denote the pack of types +@@ -9075,14 +9075,14 @@ let \tcode{Cs} denote the pack of types \begin{itemize} \item If @@ -11970,7 +11986,7 @@ index 1ce5326c..1f3504a8 100644 \item Otherwise, if \tcode{(\libconcept{derived_from} \&\& ...)} -@@ -9533,11 +9533,11 @@ Let +@@ -9534,11 +9534,11 @@ Let %FIXME This is hard to parse. If \tcode{$i_\tcode{x}$ > $i_\tcode{y}$}, let \tcode{$d_\tcode{y}$} be @@ -11985,7 +12001,7 @@ index 1ce5326c..1f3504a8 100644 for every integer \tcode{$i$} in the range \range{$i_\tcode{y}$ + 1}{$i_\tcode{x}$} if there is any, and -@@ -9580,7 +9580,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul +@@ -9581,7 +9581,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 @@ -11994,7 +12010,7 @@ index 1ce5326c..1f3504a8 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 -@@ -9737,7 +9737,7 @@ is expression-equivalent to: +@@ -9738,7 +9738,7 @@ is expression-equivalent to: \begin{itemize} \item If \tcode{T} models \libconcept{contiguous_iterator}, @@ -12003,7 +12019,7 @@ index 1ce5326c..1f3504a8 100644 \item Otherwise, if \tcode{T} models \libconcept{random_access_iterator}, -@@ -13433,7 +13433,7 @@ is defined as follows: +@@ -13434,7 +13434,7 @@ is defined as follows: \item If \tcode{invoke_result_t<\exposid{maybe-const}\&, \exposid{REPEAT}(range_reference_t<\exposid{Base}>, N)...>} @@ -12012,7 +12028,7 @@ index 1ce5326c..1f3504a8 100644 \tcode{iterator_category} denotes \tcode{input_iterator_tag}. \item Otherwise, let \tcode{C} denote the type -@@ -14544,7 +14544,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ +@@ -14545,7 +14545,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_})}, @@ -12022,7 +12038,7 @@ index 1ce5326c..1f3504a8 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index c897fccc..e2d183ce 100644 +index 277d15be..63ce5eb2 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -3528,7 +3528,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, @@ -12062,7 +12078,7 @@ index c897fccc..e2d183ce 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index 722b6077..45444ce6 100644 +index e9676caf..a9cda918 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -2062,7 +2062,7 @@ equals \tcode{tuple_size_v>}, @@ -12083,7 +12099,7 @@ index 722b6077..45444ce6 100644 \end{itemdescr} \indexlibrarymember{common_type}{tuple}% -@@ -4067,7 +4067,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and +@@ -4069,7 +4069,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and \pnum All requirements on container iterators\iref{container.reqmts} apply to @@ -12092,7 +12108,7 @@ index 722b6077..45444ce6 100644 \pnum Any operation that initializes or destroys the contained value of an optional object invalidates all iterators into that object. -@@ -8975,7 +8975,7 @@ constexpr const T&& value() const &&; +@@ -8977,7 +8977,7 @@ constexpr const T&& value() const &&; \pnum \mandates \tcode{is_copy_constructible_v} is \tcode{true} and @@ -12101,7 +12117,7 @@ index 722b6077..45444ce6 100644 \pnum \returns -@@ -14988,7 +14988,7 @@ that models \libconcept{copyable}. +@@ -14990,7 +14990,7 @@ that models \libconcept{copyable}. \pnum Within \ref{func.wrap.ref}, \tcode{\placeholder{call-args}} is an argument pack with elements such that diff --git a/lastbuild.sig b/lastbuild.sig index a17bd2b562..888855fe2a 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ -htmlgen d76984e59af74768c3ce732b5517325f10807a57 -draft 2f53f313f5b1aac5f9547b39e78863e23ca9c047 -fbaf0fe6216effbdbbcc47732adc950955af5a05 htmlgen.patch +htmlgen 42983f240e7a7623a03d34a83eca3c064c920c8b +draft acab9e553267137d6ac25e5568bafce734b70257 +d8a803d15bc7d0de5e7f258de00e278cf6d12d98 htmlgen.patch From 8c093a71cc5ff4e31687839750994d3790d9be46 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Tue, 4 Nov 2025 10:47:20 -1000 Subject: [PATCH 06/18] Update --- draft | 2 +- gh-pages | 2 +- lastbuild.sig | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/draft b/draft index acab9e5532..ad99d5224a 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit acab9e553267137d6ac25e5568bafce734b70257 +Subproject commit ad99d5224a03821bcff46081195fed20f0afee31 diff --git a/gh-pages b/gh-pages index bc0adeaf28..6cf1202a52 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit bc0adeaf28bf5ace30c36e065ba975678e2ed9f2 +Subproject commit 6cf1202a5210b4d50f9916182af42c17a4511a15 diff --git a/lastbuild.sig b/lastbuild.sig index 888855fe2a..05dd9fbad2 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ htmlgen 42983f240e7a7623a03d34a83eca3c064c920c8b -draft acab9e553267137d6ac25e5568bafce734b70257 +draft ad99d5224a03821bcff46081195fed20f0afee31 d8a803d15bc7d0de5e7f258de00e278cf6d12d98 htmlgen.patch From b9c80ec75bdcd8bec7dbcff1155bdc5c4a5724f5 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Sun, 16 Nov 2025 02:30:44 -0600 Subject: [PATCH 07/18] Update --- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 1170 ++++++++++++++++++++++++------------------------- lastbuild.sig | 6 +- 4 files changed, 581 insertions(+), 599 deletions(-) diff --git a/draft b/draft index ad99d5224a..98ce5ac6fb 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit ad99d5224a03821bcff46081195fed20f0afee31 +Subproject commit 98ce5ac6fbce2338787adb9b1c842fcf8ebab37c diff --git a/gh-pages b/gh-pages index 6cf1202a52..6e7f49b523 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 6cf1202a5210b4d50f9916182af42c17a4511a15 +Subproject commit 6e7f49b52300f5cb2d5712e54af118633853b4c0 diff --git a/htmlgen.patch b/htmlgen.patch index 3615a9b5c1..d62ff3bb21 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From 5b77e7e5ad095dd8f07a9dd76c7ba863950bfffe Mon Sep 17 00:00:00 2001 +From 2568c2db9e76e19217920d94caf563bc141db727 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,7 +10,7 @@ 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 b9727f49..e98c0f3b 100644 +index 78a03978..7a83b32c 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -324,7 +324,7 @@ Given @@ -59,7 +59,7 @@ index b9727f49..e98c0f3b 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 180fbbac..3fda23c5 100644 +index 2bfc4057..dcaa4be0 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2924,7 +2924,7 @@ struct s2 { @@ -75,14 +75,14 @@ index 180fbbac..3fda23c5 100644 2.43.0 -From f62b2287d8cddae5e607c5497dea59fc6d4b5db6 Mon Sep 17 00:00:00 2001 +From d57679daa449937dee27051e53c6221259bb8162 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/basic.tex | 97 +++++++------- source/classes.tex | 22 ++-- source/compatibility.tex | 4 +- source/concepts.tex | 12 +- @@ -108,10 +108,10 @@ Subject: [PATCH 2/9] Use new link macros. source/threads.tex | 45 ++++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 607 insertions(+), 616 deletions(-) + 27 files changed, 606 insertions(+), 615 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index a30ec424..959658fe 100644 +index c6ea2cd6..9b4a8075 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -123,7 +123,7 @@ index a30ec424..959658fe 100644 \pnum The following subclauses describe components for -@@ -10222,7 +10222,7 @@ In either case, twice as many projections as comparisons. +@@ -10224,7 +10224,7 @@ In either case, twice as many projections as comparisons. \pnum \remarks @@ -133,7 +133,7 @@ index a30ec424..959658fe 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index e98c0f3b..1c0a6cfc 100644 +index 7a83b32c..4d017537 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -162,7 +162,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -253,15 +253,6 @@ index e98c0f3b..1c0a6cfc 100644 \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} -@@ -2886,7 +2885,7 @@ consteval int bad_splice(std::meta::info v) { - \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. - @@ -2919,7 +2918,7 @@ are attached to the same module. \indextext{linkage!\idxcode{inline} and}% \indextext{\idxcode{inline}!linkage of}% @@ -471,7 +462,7 @@ index e98c0f3b..1c0a6cfc 100644 a \grammarterm{constant-expression}\iref{expr.const}, \item diff --git a/source/classes.tex b/source/classes.tex -index b3ff3a98..7b286507 100644 +index 6f1e64c9..259175cd 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -275,10 +275,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: @@ -536,7 +527,7 @@ index b3ff3a98..7b286507 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}; -@@ -2306,7 +2306,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation +@@ -2303,7 +2303,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} @@ -545,7 +536,7 @@ index b3ff3a98..7b286507 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}. -@@ -6407,7 +6407,7 @@ associated with a \grammarterm{try-block} (if there is one), +@@ -6404,7 +6404,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; @@ -618,10 +609,10 @@ index 3cbd110a..1722b95c 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index e197ec6e..ed136ec9 100644 +index d2db2ed3..71b577a1 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -6116,14 +6116,14 @@ namespace std { +@@ -6121,14 +6121,14 @@ namespace std { \indextext{\idxcode{array}!contiguous storage}% The header \libheader{array} defines a class template for storing fixed-size sequences of objects. @@ -638,7 +629,7 @@ index e197ec6e..ed136ec9 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 +@@ -6139,8 +6139,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$. @@ -649,7 +640,7 @@ index e197ec6e..ed136ec9 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. +@@ -6150,13 +6150,13 @@ 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} @@ -665,7 +656,7 @@ index e197ec6e..ed136ec9 100644 \indexlibraryglobal{array}% \indexlibrarymember{array}{begin}% -@@ -6474,7 +6474,7 @@ namespace std { +@@ -6479,7 +6479,7 @@ namespace std { A \indexlibraryglobal{deque}% \tcode{deque} @@ -674,7 +665,7 @@ index e197ec6e..ed136ec9 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. -@@ -7139,7 +7139,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 @@ -683,7 +674,7 @@ index e197ec6e..ed136ec9 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{forward_list} is referenced. -@@ -7723,7 +7723,7 @@ predicate. +@@ -7728,7 +7728,7 @@ predicate. \pnum \remarks @@ -692,7 +683,7 @@ index e197ec6e..ed136ec9 100644 \end{itemdescr} \indexlibrarymember{unique}{forward_list}% -@@ -7828,7 +7828,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 @@ -701,7 +692,7 @@ index e197ec6e..ed136ec9 100644 \end{itemdescr} \indexlibrarymember{reverse}{forward_list}% -@@ -9028,7 +9028,7 @@ A +@@ -9033,7 +9033,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 @@ -710,7 +701,7 @@ index e197ec6e..ed136ec9 100644 fast random access to list elements is not supported, but many algorithms only need sequential access anyway. -@@ -9204,7 +9204,7 @@ namespace std { +@@ -9209,7 +9209,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{list} if the allocator meets the @@ -719,7 +710,7 @@ index e197ec6e..ed136ec9 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{list} is referenced. -@@ -9617,7 +9617,7 @@ applications of the corresponding predicate. +@@ -9622,7 +9622,7 @@ applications of the corresponding predicate. \pnum \remarks @@ -728,7 +719,7 @@ index e197ec6e..ed136ec9 100644 \end{itemdescr} \indexlibrarymember{unique}{list}% -@@ -9740,7 +9740,7 @@ comparisons, where $N$ is \tcode{size()}. +@@ -9745,7 +9745,7 @@ comparisons, where $N$ is \tcode{size()}. \pnum \remarks @@ -737,7 +728,7 @@ index e197ec6e..ed136ec9 100644 \end{itemdescr} \rSec3[list.erasure]{Erasure} -@@ -9848,7 +9848,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, +@@ -9853,7 +9853,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}, @@ -746,7 +737,7 @@ index e197ec6e..ed136ec9 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} -@@ -9986,7 +9986,7 @@ namespace std { +@@ -9991,7 +9991,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{vector} if the allocator meets the @@ -755,7 +746,7 @@ index e197ec6e..ed136ec9 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{vector} is referenced. -@@ -10579,7 +10579,7 @@ Unless described below, all operations have the same requirements and +@@ -10584,7 +10584,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 @@ -764,7 +755,7 @@ index e197ec6e..ed136ec9 100644 is not used to construct these values. \pnum -@@ -15653,9 +15653,9 @@ and +@@ -15659,9 +15659,9 @@ and can be used to instantiate \tcode{queue}. In particular, @@ -776,7 +767,7 @@ index e197ec6e..ed136ec9 100644 can be used. \begin{codeblock} -@@ -16010,15 +16010,15 @@ and +@@ -16016,15 +16016,15 @@ and can be used to instantiate \tcode{priority_queue}. In particular, @@ -795,7 +786,7 @@ index e197ec6e..ed136ec9 100644 \begin{codeblock} namespace std { -@@ -16563,10 +16563,10 @@ and +@@ -16569,10 +16569,10 @@ and can be used to instantiate \tcode{stack}. In particular, @@ -810,7 +801,7 @@ index e197ec6e..ed136ec9 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index b958e5a3..f41fea44 100644 +index d82e4bcb..74100ed5 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -837,7 +828,7 @@ index b958e5a3..f41fea44 100644 \end{note} \begin{example} \begin{codeblock} -@@ -1152,7 +1152,7 @@ If an inline function or variable that is attached to a named module +@@ -1150,7 +1150,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} @@ -846,7 +837,7 @@ index b958e5a3..f41fea44 100644 In the global module, a function defined within a class definition is implicitly inline\iref{class.mfct,class.friend}. \end{note} -@@ -1297,7 +1297,7 @@ the object referenced is a non-const object and can be modified through +@@ -1295,7 +1295,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 @@ -855,7 +846,7 @@ index b958e5a3..f41fea44 100644 \end{note} \pnum -@@ -1733,8 +1733,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; +@@ -1731,8 +1731,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; \item otherwise, \tcode{decltype($E$)} is the type of $E$. \end{itemize} @@ -865,7 +856,7 @@ index b958e5a3..f41fea44 100644 \begin{example} \begin{codeblock} -@@ -1932,7 +1931,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. +@@ -1930,7 +1929,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 @@ -874,7 +865,7 @@ index b958e5a3..f41fea44 100644 and if the type that replaces the placeholder type is not the same in each deduction, the program is ill-formed. -@@ -2074,7 +2073,7 @@ A function declared with a return type that uses a placeholder type shall not +@@ -2072,7 +2071,7 @@ A function declared with a return type that uses a placeholder type shall not be a coroutine\iref{dcl.fct.def.coroutine}. \pnum @@ -883,7 +874,7 @@ index b958e5a3..f41fea44 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. -@@ -2186,7 +2185,7 @@ Obtain \tcode{P} from +@@ -2184,7 +2183,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 @@ -892,7 +883,7 @@ index b958e5a3..f41fea44 100644 where \tcode{P} is a function template parameter type and the corresponding argument is $E$. -@@ -2285,7 +2284,7 @@ in the \grammarterm{type-specifier-seq} +@@ -2283,7 +2282,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} @@ -901,7 +892,7 @@ index b958e5a3..f41fea44 100644 or as the \grammarterm{type-specifier} in the \grammarterm{parameter-declaration} of a \grammarterm{template-parameter}\iref{temp.param}. -@@ -4492,7 +4491,7 @@ int a; +@@ -4490,7 +4489,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 @@ -910,7 +901,7 @@ index b958e5a3..f41fea44 100644 \end{codeblock} \end{example} A non-static member shall not be designated in a default argument unless -@@ -6205,15 +6204,15 @@ This requires a conversion +@@ -6203,15 +6202,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 @@ -930,7 +921,7 @@ index b958e5a3..f41fea44 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7727,7 +7726,7 @@ the initializer is +@@ -7725,7 +7724,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} @@ -939,7 +930,7 @@ index b958e5a3..f41fea44 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. -@@ -7878,7 +7877,7 @@ is not looked up and is introduced by +@@ -7876,7 +7875,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}, @@ -948,7 +939,7 @@ index b958e5a3..f41fea44 100644 \pnum \indextext{constant!enumeration}% -@@ -7960,8 +7959,9 @@ If the underlying type is fixed, the type of each enumerator +@@ -7958,8 +7957,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} @@ -960,7 +951,7 @@ index b958e5a3..f41fea44 100644 If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as -@@ -7970,8 +7970,9 @@ follows: +@@ -7968,8 +7968,9 @@ follows: \begin{itemize} \item If an initializer is specified for an enumerator, the @@ -972,7 +963,7 @@ index b958e5a3..f41fea44 100644 unscoped enumeration type, the enumerator has the underlying type of that enumeration type, otherwise it has the same type as the expression. -@@ -8043,7 +8044,7 @@ if they have the same underlying type. +@@ -8041,7 +8042,7 @@ if they have the same underlying type. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -981,7 +972,7 @@ index b958e5a3..f41fea44 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8326,7 +8327,7 @@ appertains to the namespace being defined or extended. +@@ -8324,7 +8325,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 @@ -990,7 +981,7 @@ index b958e5a3..f41fea44 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 -@@ -9149,7 +9150,7 @@ different language linkages are distinct types even if they are +@@ -9147,7 +9148,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -999,7 +990,7 @@ index b958e5a3..f41fea44 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9479,18 +9480,18 @@ For each individual attribute, the form of the +@@ -9477,18 +9478,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 @@ -1023,7 +1014,7 @@ index b958e5a3..f41fea44 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9601,7 +9602,7 @@ declaration, the program is ill-formed. +@@ -9599,7 +9600,7 @@ declaration, the program is ill-formed. \pnum An \grammarterm{alignment-specifier} of the form \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same @@ -1032,15 +1023,15 @@ index b958e5a3..f41fea44 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9781,7 +9782,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9779,7 +9780,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 be2b863f..e653b348 100644 --- a/source/diagnostics.tex @@ -1071,7 +1062,7 @@ index be2b863f..e653b348 100644 \end{note} \indexlibraryglobal{system_error}% diff --git a/source/exceptions.tex b/source/exceptions.tex -index ba2d34d0..cd476d28 100644 +index 2a4d6d7b..0072f5d6 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -184,7 +184,7 @@ try : i(f(ii)), d(id) { @@ -1153,7 +1144,7 @@ index ba2d34d0..cd476d28 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} @@ -1162,7 +1153,7 @@ index ba2d34d0..cd476d28 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}. @@ -1171,7 +1162,7 @@ index ba2d34d0..cd476d28 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 @@ -1180,7 +1171,7 @@ index ba2d34d0..cd476d28 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 +@@ -886,7 +886,7 @@ applied to a pointer to a polymorphic class type\iref{expr.typeid}, or \item @@ -1189,7 +1180,7 @@ index ba2d34d0..cd476d28 100644 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 @@ -1198,7 +1189,7 @@ index ba2d34d0..cd476d28 100644 with no explicit \grammarterm{noexcept-specifier} has a non-throwing exception specification. -@@ -1051,9 +1051,9 @@ via an exception, or +@@ -1054,9 +1054,9 @@ via an exception, or \item% when the exception handling mechanism cannot find a handler for a thrown exception\iref{except.handle}, or @@ -1210,7 +1201,7 @@ index ba2d34d0..cd476d28 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, +@@ -1064,7 +1064,7 @@ exits via an exception, or \item% @@ -1220,7 +1211,7 @@ index ba2d34d0..cd476d28 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index 3fda23c5..f6fdd1c7 100644 +index dcaa4be0..9f91843e 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1948,10 +1939,10 @@ index 3fda23c5..f6fdd1c7 100644 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}. -@@ -8448,9 +8450,9 @@ a temporary object of non-volatile const-qualified literal type + are called constant expressions. + \begin{note} + Constant expressions can be evaluated +@@ -8446,9 +8448,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 @@ -1963,7 +1954,7 @@ index 3fda23c5..f6fdd1c7 100644 \item a non-mutable subobject of any of the above, or \item -@@ -8541,7 +8543,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. +@@ -8539,7 +8541,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -1972,7 +1963,7 @@ index 3fda23c5..f6fdd1c7 100644 it is applied to \begin{itemize} \item -@@ -8563,7 +8565,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -8561,7 +8563,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 @@ -1981,7 +1972,7 @@ index 3fda23c5..f6fdd1c7 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -8936,7 +8938,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -8934,7 +8936,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}, @@ -1990,7 +1981,7 @@ index 3fda23c5..f6fdd1c7 100644 \end{note} \pnum -@@ -9437,7 +9439,7 @@ if it is: +@@ -9436,7 +9438,7 @@ if it is: a manifestly constant-evaluated expression, \item @@ -1999,7 +1990,7 @@ index 3fda23c5..f6fdd1c7 100644 \item an immediate subexpression of a \grammarterm{braced-init-list}, -@@ -9464,7 +9466,9 @@ A function or variable is +@@ -9463,7 +9465,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -2048,10 +2039,10 @@ index bba0b7f7..41979b62 100644 the \oldconcept{TransformationTrait} requirements with a base characteristic of \tcode{integral_constant}. diff --git a/source/intro.tex b/source/intro.tex -index 1b4ace6b..aa368350 100644 +index 22114ac3..0a8f75a6 100644 --- a/source/intro.tex +++ b/source/intro.tex -@@ -105,8 +105,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 @@ -2062,7 +2053,7 @@ index 1b4ace6b..aa368350 100644 such invocations do not themselves constitute accesses, although they may involve accesses of scalar subobjects. \end{defnote} -@@ -254,11 +254,12 @@ implementation's output messages +@@ -246,11 +246,12 @@ implementation's output messages glvalue refers \begin{example} @@ -2079,7 +2070,7 @@ index 1b4ace6b..aa368350 100644 treated similarly. \end{example} -@@ -326,7 +327,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} @@ -2088,7 +2079,7 @@ index 1b4ace6b..aa368350 100644 \indexdefn{behavior!implementation-defined}% \definition{implementation-defined behavior}{defns.impl.defined} -@@ -822,7 +823,7 @@ resulting in a contract violation. +@@ -814,7 +815,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 @@ -2097,7 +2088,7 @@ index 1b4ace6b..aa368350 100644 specified, but each implementation shall supply them to complete the definitions according to the description in the library Clauses. -@@ -839,7 +840,7 @@ the appropriate standard library named header unit\iref{using.headers}. +@@ -831,7 +832,7 @@ the appropriate standard library named header unit\iref{using.headers}. \pnum The templates, classes, functions, and objects in the library have @@ -2481,7 +2472,7 @@ index 9914bd24..ffa39eaf 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index 0e93f84e..8a72eaf5 100644 +index 8005b333..4ea5904d 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2495,7 +2486,7 @@ index 0e93f84e..8a72eaf5 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 -@@ -2298,7 +2298,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) +@@ -2297,7 +2297,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}. @@ -2505,7 +2496,7 @@ index 0e93f84e..8a72eaf5 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 c8731821..03b19a61 100644 +index 2958545e..1c229c08 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2546,7 +2537,7 @@ index c8731821..03b19a61 100644 can be declared as \tcode{\placeholdernc{T\;A}[\placeholder{N}]}, where \tcode{\placeholder{T}} is any of the types -@@ -954,7 +954,7 @@ signatures, or for virtual destructors that can be generated by default. +@@ -959,7 +959,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 @@ -2555,7 +2546,7 @@ index c8731821..03b19a61 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}. -@@ -1367,10 +1367,10 @@ std::vector vi; // OK +@@ -1371,10 +1371,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 @@ -2568,7 +2559,7 @@ index c8731821..03b19a61 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 -@@ -1688,8 +1688,8 @@ a hosted implementation. +@@ -1692,8 +1692,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 @@ -2579,7 +2570,7 @@ index c8731821..03b19a61 100644 \rSec3[using.headers]{Headers} -@@ -1732,7 +1732,7 @@ declared in that header. No diagnostic is required. +@@ -1736,7 +1736,7 @@ declared in that header. No diagnostic is required. \rSec3[using.linkage]{Linkage} \pnum @@ -2588,7 +2579,7 @@ index c8731821..03b19a61 100644 Unless otherwise specified, objects and functions have the default \tcode{extern "C++"} linkage\iref{dcl.link}. -@@ -1766,8 +1766,8 @@ the program prior to program startup. +@@ -1770,8 +1770,8 @@ the program prior to program startup. \indextext{startup!program}% \pnum See also @@ -2599,7 +2590,7 @@ index c8731821..03b19a61 100644 \rSec2[utility.requirements]{Requirements on types and expressions} -@@ -1815,7 +1815,7 @@ rvalue of type \tcode{const T}. +@@ -1819,7 +1819,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 @@ -2608,7 +2599,7 @@ index c8731821..03b19a61 100644 \begin{oldconcepttable}{EqualityComparable}{}{cpp17.equalitycomparable} {x{1in}x{1in}p{3in}} -@@ -1941,13 +1941,13 @@ evaluated in the context described below, and +@@ -1945,13 +1945,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 @@ -2625,7 +2616,7 @@ index c8731821..03b19a61 100644 \end{itemize} \begin{note} If \tcode{T} and \tcode{U} are both fundamental types or arrays of -@@ -2050,8 +2050,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in +@@ -2054,8 +2054,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in \end{note} \pnum @@ -2637,7 +2628,7 @@ index c8731821..03b19a61 100644 had been evaluated in place of \tcode{p}. \pnum -@@ -2154,7 +2155,7 @@ as the memory allocation and deallocation primitives for it. All of the +@@ -2158,7 +2159,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 @@ -2646,7 +2637,7 @@ index c8731821..03b19a61 100644 allocators. \pnum -@@ -2980,7 +2981,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, +@@ -2984,7 +2985,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 @@ -2655,7 +2646,7 @@ index c8731821..03b19a61 100644 other than \tcode{value_type} are complete types. \end{itemize} -@@ -2991,11 +2992,11 @@ whether or not \tcode{T} is a complete type: +@@ -2995,11 +2996,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 @@ -2671,7 +2662,7 @@ index c8731821..03b19a61 100644 \rSec3[namespace.constraints]{Namespace use} -@@ -3398,7 +3399,7 @@ are reserved for use by \Cpp{} implementations. +@@ -3402,7 +3403,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 @@ -2680,7 +2671,7 @@ index c8731821..03b19a61 100644 the behavior is undefined.% \indextext{source file}% \indextext{undefined} -@@ -3569,7 +3570,7 @@ specified as being shareable without data races or the user supplies a locking m +@@ -3573,7 +3574,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 @@ -2689,7 +2680,7 @@ index c8731821..03b19a61 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. -@@ -3635,7 +3636,7 @@ Every such entity shall be defined such that any header that defines it may be +@@ -3639,7 +3640,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 @@ -2698,7 +2689,7 @@ index c8731821..03b19a61 100644 shall include only their corresponding \Cpp{} standard library header, as described in~\ref{headers}. -@@ -3663,7 +3664,7 @@ explicitly stated otherwise. +@@ -3667,7 +3668,7 @@ explicitly stated otherwise. It is unspecified whether any non-member functions in the \Cpp{} standard library are defined as @@ -2707,7 +2698,7 @@ index c8731821..03b19a61 100644 \pnum A call to a non-member function signature -@@ -3691,7 +3692,7 @@ The phrase ``unless otherwise specified'' applies to cases such as +@@ -3695,7 +3696,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 @@ -2716,7 +2707,7 @@ index c8731821..03b19a61 100644 \effects \begin{codeblock} -@@ -3706,7 +3707,7 @@ return *this; +@@ -3710,7 +3711,7 @@ return *this; \pnum It is unspecified whether any member functions in the \Cpp{} standard library are defined as @@ -2725,7 +2716,7 @@ index c8731821..03b19a61 100644 \pnum For a non-virtual member function described in the \Cpp{} standard library, -@@ -3785,8 +3786,8 @@ library may be recursively reentered. +@@ -3789,8 +3790,8 @@ library may be recursively reentered. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -2736,7 +2727,7 @@ index c8731821..03b19a61 100644 Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. -@@ -3829,7 +3830,7 @@ not visible to users and are protected against data races. +@@ -3833,7 +3834,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 @@ -2745,7 +2736,7 @@ index c8731821..03b19a61 100644 \pnum \begin{note} -@@ -3958,7 +3959,7 @@ potentially-throwing exception specification} exceptions. +@@ -3962,7 +3963,7 @@ potentially-throwing exception specification} exceptions. \begin{footnote} In particular, they can report a failure to allocate storage by throwing an exception of type @@ -2768,7 +2759,7 @@ 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 681efff4..7ccd12be 100644 +index 9d6bf6e6..65e08e2c 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -3036,7 +3027,7 @@ index 681efff4..7ccd12be 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 7b882855..8e2bc352 100644 +index 2340f356..6fa6a1b1 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -74,7 +74,7 @@ Overload resolution selects the function to call in seven distinct @@ -3265,7 +3256,7 @@ index 7b882855..8e2bc352 100644 and \tcode{long} diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index bbcf9a66..7d85b2e3 100644 +index bab9b3be..14e251f7 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -508,7 +508,7 @@ shall not appear in any context not mentioned in this subclause. @@ -3453,7 +3444,7 @@ index 9e1e9481..099fd5f3 100644 \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index b6f6be77..d55d8d15 100644 +index c6929d58..aac6e41e 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3726,7 +3717,7 @@ index b6f6be77..d55d8d15 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 627a70ec..40dcf126 100644 +index 1cc78289..e9f69fd7 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -687,7 +687,7 @@ struct A {}; @@ -3738,7 +3729,7 @@ index 627a70ec..40dcf126 100644 \grammarterm{template-id}: \begin{bnf} -@@ -1015,8 +1015,8 @@ in a \grammarterm{splice-specialization-specifier} +@@ -1016,8 +1016,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}. @@ -3749,7 +3740,7 @@ index 627a70ec..40dcf126 100644 \grammarterm{template-argument}{s}. \begin{example} \begin{codeblock} -@@ -1181,7 +1181,7 @@ When a \grammarterm{simple-template-id} or +@@ -1182,7 +1182,7 @@ When a \grammarterm{simple-template-id} or \grammarterm{splice-specialization-specifier} does not designate a function, a default \grammarterm{template-argument} is @@ -3758,7 +3749,7 @@ index 627a70ec..40dcf126 100644 when the value of that default argument is needed. \begin{example} \begin{codeblock} -@@ -1193,7 +1193,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} -@@ -1747,9 +1747,9 @@ in the declaration of a constrained entity (and, therefore, can involve the +@@ -1748,9 +1748,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} @@ -3818,7 +3809,7 @@ index 627a70ec..40dcf126 100644 \end{note} \pnum -@@ -1826,7 +1826,7 @@ first substituted into its expression. +@@ -1827,7 +1827,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. @@ -3827,7 +3818,7 @@ index 627a70ec..40dcf126 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} -@@ -1988,11 +1988,11 @@ A declaration's \defn{associated constraints} are defined as follows: +@@ -1989,11 +1989,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}, @@ -3842,7 +3833,7 @@ index 627a70ec..40dcf126 100644 following order: \begin{itemize} \item -@@ -2089,7 +2089,7 @@ so it does match \#2. +@@ -2090,7 +2090,7 @@ so it does match \#2. \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is @@ -3851,7 +3842,7 @@ index 627a70ec..40dcf126 100644 % \begin{itemize} \item -@@ -2098,7 +2098,7 @@ the normal form of \tcode{E}. +@@ -2099,7 +2099,7 @@ the normal form of \tcode{E}. \item The normal form of an expression \tcode{E1 || E2} is @@ -3860,7 +3851,7 @@ index 627a70ec..40dcf126 100644 the normal forms of \tcode{E1} and \tcode{E2}. \item -@@ -2346,7 +2346,7 @@ the constraint of $A$ subsumes that of $B$. +@@ -2347,7 +2347,7 @@ the constraint of $A$ subsumes that of $B$. \end{itemize} % \begin{example} @@ -3869,7 +3860,7 @@ index 627a70ec..40dcf126 100644 % The constraint $A \land B$ subsumes $A$, but $A$ does not subsume $A \land B$. % -@@ -2566,7 +2566,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. +@@ -2567,7 +2567,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. \end{example} \pnum @@ -3878,7 +3869,7 @@ index 627a70ec..40dcf126 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 -@@ -2636,8 +2636,8 @@ default arguments, +@@ -2637,8 +2637,8 @@ default arguments, \grammarterm{requires-clause}{s}, or \grammarterm{noexcept-specifier}{s}. @@ -3889,7 +3880,7 @@ index 627a70ec..40dcf126 100644 For the purpose of name lookup and instantiation, the \grammarterm{compound-statement} of an \grammarterm{expansion-statement} is considered a template definition. -@@ -2994,7 +2994,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} +@@ -2995,7 +2995,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. @@ -3898,7 +3889,7 @@ index 627a70ec..40dcf126 100644 apply to member template names. A destructor shall not be a member template. -@@ -3221,7 +3221,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. +@@ -3222,7 +3222,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. @@ -3907,7 +3898,7 @@ index 627a70ec..40dcf126 100644 \grammarterm{identifier}. \item In a \grammarterm{pack-index-expression}; -@@ -3844,9 +3844,9 @@ primary template. +@@ -3845,9 +3845,9 @@ primary template. \pnum A partial specialization matches a given actual template argument list if the template arguments of the partial specialization can be @@ -3920,7 +3911,7 @@ index 627a70ec..40dcf126 100644 \begin{example} \begin{codeblock} template class A { }; // \#1 -@@ -3908,14 +3908,14 @@ of the primary template. +@@ -3909,14 +3909,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 @@ -3938,7 +3929,7 @@ index 627a70ec..40dcf126 100644 as the corresponding partial specialization. \item Each function template -@@ -4121,8 +4121,8 @@ void h(int* p) { +@@ -4122,8 +4122,8 @@ void h(int* p) { \end{example} \pnum @@ -3949,7 +3940,7 @@ index 627a70ec..40dcf126 100644 \pnum The signature of a function template -@@ -4173,7 +4173,7 @@ For example, a template type parameter can be used in the +@@ -4174,7 +4174,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 @@ -3958,7 +3949,7 @@ index 627a70ec..40dcf126 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. -@@ -4343,8 +4343,8 @@ function template +@@ -4344,8 +4344,8 @@ function template specialization is selected to match a placement operator new\iref{basic.stc.dynamic.deallocation,expr.new}; \item @@ -3969,7 +3960,7 @@ index 627a70ec..40dcf126 100644 a function template specialization. \end{itemize} -@@ -4737,7 +4737,7 @@ A \grammarterm{concept-definition} +@@ -4738,7 +4738,7 @@ A \grammarterm{concept-definition} shall inhabit a namespace scope\iref{basic.scope.namespace}. \pnum @@ -3978,7 +3969,7 @@ index 627a70ec..40dcf126 100644 \pnum A concept is not instantiated\iref{temp.spec}. -@@ -5064,7 +5064,7 @@ was a pack expansion and the corresponding pack is empty, or +@@ -5065,7 +5065,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 @@ -3987,7 +3978,7 @@ index 627a70ec..40dcf126 100644 instantiation uses \begin{itemize} \item the value of a const object of integral or unscoped enumeration type or -@@ -5317,7 +5317,7 @@ any of the expressions +@@ -5318,7 +5318,7 @@ any of the expressions or \grammarterm{braced-init-list}{s} in the \grammarterm{expression-list} @@ -3996,7 +3987,7 @@ index 627a70ec..40dcf126 100644 \item the \grammarterm{unqualified-id} is a \grammarterm{template-id} in which any of the template arguments depends -@@ -5377,7 +5377,7 @@ if it is +@@ -5378,7 +5378,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, @@ -4005,7 +3996,7 @@ index 627a70ec..40dcf126 100644 \item in the definition of a primary class template or a member of a primary class template, the name of the -@@ -5656,7 +5656,7 @@ used without a \grammarterm{template-argument-list}. +@@ -5657,7 +5657,7 @@ used without a \grammarterm{template-argument-list}. \end{footnote} \item a \grammarterm{pack-index-specifier}, \item denoted by \tcode{decltype(}\grammarterm{expression}{}\tcode{)}, @@ -4014,7 +4005,7 @@ index 627a70ec..40dcf126 100644 \item denoted by a \grammarterm{splice-type-specifier} in which either the \grammarterm{splice-specifier} or \grammarterm{splice-specialization-specifier} -@@ -5808,7 +5808,7 @@ see~\ref{support.types}. +@@ -5809,7 +5809,7 @@ see~\ref{support.types}. \end{note} \pnum @@ -4023,7 +4014,7 @@ index 627a70ec..40dcf126 100644 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 -@@ -5952,7 +5952,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the +@@ -5953,7 +5953,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} @@ -4032,7 +4023,7 @@ index 627a70ec..40dcf126 100644 the result of the evaluation refers to a templated entity that is an object with static or thread storage duration or a member function. -@@ -6175,7 +6175,7 @@ within a translation unit. +@@ -6176,7 +6176,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 @@ -4041,7 +4032,7 @@ index 627a70ec..40dcf126 100644 the program is ill-formed, no diagnostic required. \pnum -@@ -6486,7 +6486,7 @@ of type +@@ -6487,7 +6487,7 @@ of type \pnum If a function declaration acquired its function type through @@ -4050,7 +4041,7 @@ index 627a70ec..40dcf126 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -6567,7 +6567,7 @@ X ch; // error: incomplete type \tcode{X} +@@ -6568,7 +6568,7 @@ X ch; // error: incomplete type \tcode{X} \end{example} \begin{note} Within a template declaration, @@ -4059,7 +4050,7 @@ index 627a70ec..40dcf126 100644 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 -@@ -6745,7 +6745,7 @@ void x() { +@@ -6746,7 +6746,7 @@ void x() { \end{example} \pnum @@ -4068,7 +4059,7 @@ index 627a70ec..40dcf126 100644 can be determined without instantiating a class template definition, it is unspecified whether that instantiation actually takes place. \begin{example} -@@ -7082,7 +7082,7 @@ If an entity is the subject of both an explicit instantiation declaration +@@ -7083,7 +7083,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 @@ -4077,7 +4068,7 @@ index 627a70ec..40dcf126 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. -@@ -8147,7 +8147,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. +@@ -8148,7 +8148,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, @@ -4086,7 +4077,7 @@ index 627a70ec..40dcf126 100644 would be required to convert the \grammarterm{template-argument} of type \tcode{int} to \tcode{signed char}, -@@ -8256,8 +8256,8 @@ is not a reference type: +@@ -8257,8 +8257,8 @@ is not a reference type: \item If \tcode{A} @@ -4097,7 +4088,7 @@ index 627a70ec..40dcf126 100644 \tcode{A} for type deduction; otherwise, -@@ -8265,7 +8265,7 @@ otherwise, +@@ -8266,7 +8266,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -4106,7 +4097,7 @@ index 627a70ec..40dcf126 100644 of \tcode{A} for type -@@ -8361,8 +8361,8 @@ The transformed \tcode{A} +@@ -8362,8 +8362,8 @@ The transformed \tcode{A} can be another pointer or pointer-to-member type that can be converted to the deduced \tcode{A} @@ -4117,7 +4108,7 @@ index 627a70ec..40dcf126 100644 \item If -@@ -8495,7 +8495,7 @@ void test() { +@@ -8496,7 +8496,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -4126,7 +4117,7 @@ index 627a70ec..40dcf126 100644 If there is a target, the function template's function type and the target type are used as the types of -@@ -8542,7 +8542,7 @@ is not a reference type: +@@ -8543,7 +8543,7 @@ is not a reference type: If \tcode{P} is an array type, the pointer type produced by the @@ -4135,7 +4126,7 @@ index 627a70ec..40dcf126 100644 \tcode{P} for type deduction; otherwise, -@@ -8550,7 +8550,7 @@ deduction; otherwise, +@@ -8551,7 +8551,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -4144,7 +4135,7 @@ index 627a70ec..40dcf126 100644 \tcode{P} for type deduction; otherwise, -@@ -8641,7 +8641,7 @@ after a function has been selected. +@@ -8642,7 +8642,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 @@ -4153,7 +4144,7 @@ index 627a70ec..40dcf126 100644 type is used. \end{itemize} -@@ -9157,7 +9157,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the +@@ -9158,7 +9158,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$. @@ -4162,7 +4153,7 @@ index 627a70ec..40dcf126 100644 originally a pack expansion: \begin{itemize} \item if \tcode{P} does not contain a template argument corresponding to -@@ -9220,7 +9220,7 @@ each remaining parameter type in the parameter-type-list +@@ -9221,7 +9221,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. @@ -4171,7 +4162,7 @@ index 627a70ec..40dcf126 100644 originally a function parameter pack: \begin{itemize} \item if \tcode{P} does not contain a function parameter type corresponding to -@@ -9514,8 +9514,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod +@@ -9515,8 +9515,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 @@ -4183,7 +4174,7 @@ index 627a70ec..40dcf126 100644 \tcode{operator new}\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 166a8a24..bb641003 100644 +index db30cf64..0962d340 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4206,7 +4197,7 @@ index 166a8a24..bb641003 100644 \begin{itemdecl} m.try_lock_for(rel_time) -@@ -7330,7 +7330,7 @@ namespace std { +@@ -7267,7 +7267,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -4215,7 +4206,7 @@ index 166a8a24..bb641003 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 -@@ -7374,7 +7374,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on +@@ -7311,7 +7311,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on a single mutex appears to occur in a single total order. \begin{note} This @@ -4224,7 +4215,7 @@ index 166a8a24..bb641003 100644 mutex. \end{note} \begin{note} -@@ -7454,7 +7454,7 @@ in the absence of contending mutex acquisitions. +@@ -7391,7 +7391,7 @@ in the absence of contending mutex acquisitions. \pnum \sync If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations @@ -4233,7 +4224,7 @@ index 166a8a24..bb641003 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 -@@ -7490,7 +7490,7 @@ Releases the calling thread's ownership of the mutex. +@@ -7427,7 +7427,7 @@ Releases the calling thread's ownership of the mutex. \pnum \sync @@ -4242,7 +4233,7 @@ index 166a8a24..bb641003 100644 lock operations that obtain ownership on the same object. \pnum -@@ -7619,9 +7619,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, +@@ -7556,9 +7556,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 @@ -4254,7 +4245,7 @@ index 166a8a24..bb641003 100644 \begin{note} The timed mutex types meet the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. -@@ -7911,7 +7911,7 @@ Releases a shared lock on the mutex held by the calling thread. +@@ -7848,7 +7848,7 @@ Releases a shared lock on the mutex held by the calling thread. \pnum \sync @@ -4263,7 +4254,7 @@ index 166a8a24..bb641003 100644 \tcode{lock()} operations that obtain ownership on the same object. \pnum -@@ -8015,7 +8015,7 @@ meet the requirements set out below. In this description, +@@ -7952,7 +7952,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 @@ -4272,7 +4263,7 @@ index 166a8a24..bb641003 100644 \begin{note} The shared timed mutex types meet the \oldconcept{SharedTimedLockable} requirements\iref{thread.req.lockable.shared.timed}. -@@ -8226,7 +8226,7 @@ namespace std { +@@ -8163,7 +8163,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 @@ -4281,7 +4272,7 @@ index 166a8a24..bb641003 100644 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} object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} -@@ -8299,7 +8299,7 @@ namespace std { +@@ -8236,7 +8236,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 @@ -4290,7 +4281,7 @@ index 166a8a24..bb641003 100644 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} object. -@@ -9456,7 +9456,7 @@ earlier returning execution. +@@ -9393,7 +9393,7 @@ earlier returning execution. \pnum \sync For any given \tcode{once_flag}: all active executions occur in a total @@ -4299,7 +4290,7 @@ index 166a8a24..bb641003 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -11419,22 +11419,21 @@ the state object. +@@ -11356,22 +11356,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4326,7 +4317,7 @@ index 166a8a24..bb641003 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 -@@ -11753,8 +11752,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -11690,8 +11689,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 @@ -4337,7 +4328,7 @@ index 166a8a24..bb641003 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -12064,7 +12063,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -12001,7 +12000,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 @@ -4346,7 +4337,7 @@ index 166a8a24..bb641003 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -12513,7 +12512,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -12450,7 +12449,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -4356,10 +4347,10 @@ index 166a8a24..bb641003 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 d82346f7..5f5fdcfb 100644 +index 67b1b06b..86cb2905 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} @@ -4368,7 +4359,7 @@ index d82346f7..5f5fdcfb 100644 \item the expression \tcode{T::now()} is well-formed when treated as an unevaluated operand. -@@ -11084,7 +11084,7 @@ The expression +@@ -11078,7 +11078,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp) \end{codeblock} @@ -4377,7 +4368,7 @@ index d82346f7..5f5fdcfb 100644 \pnum \returns -@@ -11117,7 +11117,7 @@ The expression +@@ -11111,7 +11111,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp, addressof(abbrev)) \end{codeblock} @@ -4386,7 +4377,7 @@ index d82346f7..5f5fdcfb 100644 \pnum \returns -@@ -11154,7 +11154,7 @@ from_stream(declval&>(), +@@ -11148,7 +11148,7 @@ from_stream(declval&>(), declval*>(), &offset) \end{codeblock} @@ -4395,7 +4386,7 @@ index d82346f7..5f5fdcfb 100644 \pnum \returns -@@ -11194,7 +11194,7 @@ The expression +@@ -11188,7 +11188,7 @@ The expression from_stream(declval&>(), @$F$@, tp, addressof(abbrev), &offset) \end{codeblock} @@ -4405,7 +4396,7 @@ index d82346f7..5f5fdcfb 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index a35b63a5..dcf80d40 100644 +index 5e93b63c..edaa136a 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -104,15 +104,15 @@ namespace std { @@ -4472,7 +4463,7 @@ index a35b63a5..dcf80d40 100644 each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts} with a base characteristic of \begin{codeblock} -@@ -6911,6 +6911,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); +@@ -6921,6 +6921,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); \rSec2[variant.monostate]{Class \tcode{monostate}}% \indexlibraryglobal{monostate}% @@ -4480,7 +4471,7 @@ index a35b63a5..dcf80d40 100644 \begin{itemdecl} struct monostate{}; \end{itemdecl} -@@ -7079,7 +7080,8 @@ namespace std { +@@ -7089,7 +7090,8 @@ namespace std { \end{codeblock} \pnum @@ -4494,7 +4485,7 @@ index a35b63a5..dcf80d40 100644 2.43.0 -From 89b64002fa2ceb25d44b6203ca455415eea52afa Mon Sep 17 00:00:00 2001 +From 94b6f4ff78cf2a489238876c7b142361e08397ba 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 @@ -4519,10 +4510,10 @@ index f0d3b942..90000ab2 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index 40dcf126..656d82ed 100644 +index e9f69fd7..fbeb36af 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -2085,7 +2085,6 @@ so it does match \#2. +@@ -2086,7 +2086,6 @@ so it does match \#2. \end{example} \rSec2[temp.constr.normal]{Constraint normalization} @@ -4530,7 +4521,7 @@ index 40dcf126..656d82ed 100644 \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is -@@ -2204,10 +2203,11 @@ whose parameter mapping is the identity mapping. +@@ -2205,10 +2204,11 @@ whose parameter mapping is the identity mapping. \end{itemize} \pnum @@ -4547,7 +4538,7 @@ index 40dcf126..656d82ed 100644 2.43.0 -From 8fe580026edc338785a923c6eba6f90840b3ed01 Mon Sep 17 00:00:00 2001 +From af715b9daabd5ae5d1af950bfeae669f45d25bd6 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 @@ -4560,7 +4551,7 @@ Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and 3 files changed, 352 insertions(+), 352 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex -index cd476d28..df489ab5 100644 +index 0072f5d6..88e1a340 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -135,11 +135,11 @@ does not declare a variable. @@ -4578,7 +4569,7 @@ index cd476d28..df489ab5 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index 8a72eaf5..c1386c6a 100644 +index 4ea5904d..7be0ad42 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -330,43 +330,43 @@ the numerical value has no other meaning in this context. @@ -4662,7 +4653,7 @@ index 8a72eaf5..c1386c6a 100644 \end{floattable} \pnum -@@ -606,7 +606,7 @@ given character: +@@ -605,7 +605,7 @@ given character: \item \indextext{literal!string!raw}% If the next character begins a sequence of characters that could be the prefix @@ -4671,7 +4662,7 @@ index 8a72eaf5..c1386c6a 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 -@@ -614,7 +614,7 @@ shall apply before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting +@@ -613,7 +613,7 @@ shall apply 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} @@ -4680,7 +4671,7 @@ index 8a72eaf5..c1386c6a 100644 \end{ncbnf} \item Otherwise, if the next three characters are \tcode{<::} and the subsequent character -@@ -749,15 +749,15 @@ depending on the implementation. +@@ -748,15 +748,15 @@ depending on the implementation. \begin{bnf} \nontermdef{pp-number}\br digit\br @@ -4704,7 +4695,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \pnum -@@ -1185,19 +1185,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1184,19 +1184,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 @@ -4727,7 +4718,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \begin{bnf} -@@ -1228,14 +1228,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1227,14 +1227,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{hexadecimal-digit-sequence}\br hexadecimal-digit\br @@ -4746,7 +4737,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \begin{bnf} -@@ -1250,17 +1250,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1249,17 +1249,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{unsigned-suffix} \textnormal{one of}\br @@ -4767,7 +4758,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \begin{bnf} -@@ -1299,7 +1299,7 @@ when determining the value. +@@ -1298,7 +1298,7 @@ when determining the value. \pnum The \grammarterm{hexadecimal-digit}s @@ -4776,7 +4767,7 @@ index 8a72eaf5..c1386c6a 100644 have decimal values ten through fifteen. \begin{example} The number twelve can be written \tcode{12}, \tcode{014}, -@@ -1343,7 +1343,7 @@ none & +@@ -1342,7 +1342,7 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4785,7 +4776,7 @@ index 8a72eaf5..c1386c6a 100644 \tcode{unsigned int} & \tcode{unsigned int}\\ & -@@ -1352,7 +1352,7 @@ none & +@@ -1351,7 +1351,7 @@ none & & \tcode{unsigned long long int} & \tcode{unsigned long long int}\\\hline @@ -4794,7 +4785,7 @@ index 8a72eaf5..c1386c6a 100644 \tcode{long int} & \tcode{long int}\\ & -@@ -1364,22 +1364,22 @@ none & +@@ -1363,22 +1363,22 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4822,7 +4813,7 @@ index 8a72eaf5..c1386c6a 100644 & \\\hline \tcode{z} or \tcode{Z} & -@@ -1427,12 +1427,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1426,12 +1426,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \indextext{literal!character}% \begin{bnf} \nontermdef{character-literal}\br @@ -4837,7 +4828,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \begin{bnf} -@@ -1462,12 +1462,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1461,12 +1461,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{simple-escape-sequence}\br @@ -4852,7 +4843,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \begin{bnf} -@@ -1483,21 +1483,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1482,21 +1482,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{octal-escape-sequence}\br @@ -4881,7 +4872,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \begin{bnf} -@@ -1680,42 +1680,42 @@ is supported for compatibility with \CppXIV{} and C. +@@ -1679,42 +1679,42 @@ is supported for compatibility with \CppXIV{} and C. \begin{bnf} \nontermdef{fractional-constant}\br @@ -4935,7 +4926,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \pnum -@@ -1800,8 +1800,8 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1799,8 +1799,8 @@ chosen in an \impldef{choice of larger or smaller value of \indextext{literal!string}% \begin{bnf} \nontermdef{string-literal}\br @@ -4946,7 +4937,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \begin{bnf} -@@ -1824,7 +1824,7 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1823,7 +1823,7 @@ chosen in an \impldef{choice of larger or smaller value of \begin{bnf} \nontermdef{raw-string}\br @@ -4955,7 +4946,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \begin{bnf} -@@ -1911,7 +1911,7 @@ UTF-32 & +@@ -1910,7 +1910,7 @@ UTF-32 & \pnum \indextext{literal!string!raw}% @@ -4965,10 +4956,10 @@ index 8a72eaf5..c1386c6a 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 5f5fdcfb..fd854a49 100644 +index 86cb2905..f1f22e40 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -2200,7 +2200,7 @@ If the parse fails to decode a valid duration, +@@ -2194,7 +2194,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. @@ -4977,7 +4968,7 @@ index 5f5fdcfb..fd854a49 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}. +@@ -2786,9 +2786,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. @@ -4989,7 +4980,7 @@ index 5f5fdcfb..fd854a49 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}. +@@ -2979,9 +2979,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. @@ -5001,7 +4992,7 @@ index 5f5fdcfb..fd854a49 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}. +@@ -3178,9 +3178,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. @@ -5013,7 +5004,7 @@ index 5f5fdcfb..fd854a49 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}. +@@ -3341,9 +3341,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. @@ -5025,7 +5016,7 @@ index 5f5fdcfb..fd854a49 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}. +@@ -3448,9 +3448,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. @@ -5037,7 +5028,7 @@ index 5f5fdcfb..fd854a49 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}. +@@ -3559,9 +3559,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. @@ -5049,7 +5040,7 @@ index 5f5fdcfb..fd854a49 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}. +@@ -4212,9 +4212,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. @@ -5061,7 +5052,7 @@ index 5f5fdcfb..fd854a49 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}. +@@ -4526,9 +4526,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. @@ -5073,7 +5064,7 @@ index 5f5fdcfb..fd854a49 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}. +@@ -4870,9 +4870,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. @@ -5085,7 +5076,7 @@ index 5f5fdcfb..fd854a49 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}. +@@ -5253,9 +5253,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. @@ -5097,7 +5088,7 @@ index 5f5fdcfb..fd854a49 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}. +@@ -5636,9 +5636,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. @@ -5109,7 +5100,7 @@ index 5f5fdcfb..fd854a49 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}. +@@ -6316,9 +6316,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. @@ -5121,7 +5112,7 @@ index 5f5fdcfb..fd854a49 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}. +@@ -6780,9 +6780,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. @@ -5133,7 +5124,7 @@ index 5f5fdcfb..fd854a49 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: +@@ -10472,23 +10472,23 @@ according to the following syntax: \begin{ncbnf} \fmtnontermdef{literal-char}\br @@ -5162,7 +5153,7 @@ index 5f5fdcfb..fd854a49 100644 \end{ncbnf} The productions -@@ -10567,11 +10567,11 @@ the result of formatting a chrono type +@@ -10561,11 +10561,11 @@ the result of formatting a chrono type does not contain time zone abbreviation and time zone offset information. If the information is available, @@ -5176,7 +5167,7 @@ index 5f5fdcfb..fd854a49 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 +@@ -10581,7 +10581,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'' @@ -5185,7 +5176,7 @@ index 5f5fdcfb..fd854a49 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. +@@ -10593,57 +10593,57 @@ the time of day elapsed since midnight. \hline \lhdr{Specifier} & \rhdr{Replacement} \\ \capsep \endhead @@ -5261,7 +5252,7 @@ index 5f5fdcfb..fd854a49 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}. +@@ -10654,158 +10654,158 @@ 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 @@ -5491,7 +5482,7 @@ index 5f5fdcfb..fd854a49 100644 \\ \end{LongTable} -@@ -10859,9 +10859,9 @@ template +@@ -10853,9 +10853,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5503,7 +5494,7 @@ index 5f5fdcfb..fd854a49 100644 an offset of \tcode{0min} is formatted. \end{itemdescr} -@@ -10874,9 +10874,9 @@ template +@@ -10868,9 +10868,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5515,7 +5506,7 @@ index 5f5fdcfb..fd854a49 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 +@@ -10887,9 +10887,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5527,7 +5518,7 @@ index 5f5fdcfb..fd854a49 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 +@@ -10908,9 +10908,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5539,7 +5530,7 @@ index 5f5fdcfb..fd854a49 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 +@@ -10929,9 +10929,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5551,7 +5542,7 @@ index 5f5fdcfb..fd854a49 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted -@@ -10955,7 +10955,7 @@ template +@@ -10949,7 +10949,7 @@ template \begin{itemdescr} \pnum \remarks @@ -5560,7 +5551,7 @@ index 5f5fdcfb..fd854a49 100644 an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -10996,18 +10996,18 @@ passed to \tcode{formatter::format}. +@@ -10990,18 +10990,18 @@ passed to \tcode{formatter::format}. \pnum \remarks If the \fmtgrammarterm{chrono-specs} is omitted, @@ -5584,7 +5575,7 @@ index 5f5fdcfb..fd854a49 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 +@@ -11205,8 +11205,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. @@ -5595,7 +5586,7 @@ index 5f5fdcfb..fd854a49 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, +@@ -11224,7 +11224,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'' @@ -5604,7 +5595,7 @@ index 5f5fdcfb..fd854a49 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}. +@@ -11244,251 +11244,251 @@ is called on the \tcode{basic_istream}. \hline \lhdr{Flag} & \rhdr{Parsed value} \\ \capsep \endhead @@ -5970,7 +5961,7 @@ index 5f5fdcfb..fd854a49 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} +@@ -11496,8 +11496,8 @@ from the basic character set\iref{lex.charset} that are alphanumeric, or one of \tcode{'_'}, \tcode{'/'}, \tcode{'-'}, or \tcode{'+'}. \\ \rowsep @@ -5985,7 +5976,7 @@ index 5f5fdcfb..fd854a49 100644 2.43.0 -From 5b43052734eacc81eba5f244cb9f3b3ba4d9ed71 Mon Sep 17 00:00:00 2001 +From b11f64c3108ae7406e372eea611dc0498267a392 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. @@ -6020,10 +6011,10 @@ Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. 26 files changed, 272 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 959658fe..efe3f977 100644 +index 9b4a8075..aa433c38 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -8698,7 +8698,6 @@ but stronger than those for a partial ordering. +@@ -8700,7 +8700,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: @@ -6031,7 +6022,7 @@ index 959658fe..efe3f977 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)} -@@ -9747,7 +9746,6 @@ Let $N = \tcode{last - first}$: +@@ -9749,7 +9748,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} @@ -6039,7 +6030,7 @@ index 959658fe..efe3f977 100644 \end{itemdescr} \indexlibraryglobal{stable_partition}% -@@ -10882,7 +10880,6 @@ A random access range \range{a}{b} is a +@@ -10884,7 +10882,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: @@ -6047,7 +6038,7 @@ index 959658fe..efe3f977 100644 \begin{itemize} \item With \tcode{$N$ = b - a}, for all $i$, $0 < i < N$, -@@ -13546,7 +13543,6 @@ template +@@ -13548,7 +13545,6 @@ template \pnum Some algorithms in this subclause are constrained with the following exposition-only concepts: @@ -6056,7 +6047,7 @@ index 959658fe..efe3f977 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index 1c0a6cfc..baadca8b 100644 +index 4d017537..b0b15874 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -294,7 +294,6 @@ int X::y = 1; // defines \tcode{X::y} @@ -6084,10 +6075,10 @@ index 1c0a6cfc..baadca8b 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 7b286507..e2b6a5eb 100644 +index 259175cd..d0d36a78 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -1713,7 +1713,6 @@ for each non-static data member of +@@ -1712,7 +1712,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} @@ -6095,7 +6086,7 @@ index 7b286507..e2b6a5eb 100644 \indextext{constructor!move!non-trivial}% otherwise the copy/move constructor is \defnx{non-trivial}{constructor!copy!nontrivial}. -@@ -3334,7 +3333,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat +@@ -3331,7 +3330,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: @@ -6103,7 +6094,7 @@ index 7b286507..e2b6a5eb 100644 \begin{codeblock} u.m.~M(); new (&u.n) N; -@@ -3512,7 +3510,6 @@ A local class cannot have static data members\iref{class.static.data}. +@@ -3509,7 +3507,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: @@ -6111,7 +6102,7 @@ index 7b286507..e2b6a5eb 100644 \begin{bnf} \nontermdef{base-clause}\br \terminal{:} base-specifier-list -@@ -5487,7 +5484,6 @@ initializers for direct and virtual base class subobjects and +@@ -5484,7 +5481,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 @@ -6119,7 +6110,7 @@ index 7b286507..e2b6a5eb 100644 \begin{bnf} \nontermdef{ctor-initializer}\br \terminal{:} mem-initializer-list -@@ -5958,7 +5954,6 @@ public: +@@ -5955,7 +5951,6 @@ public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; \end{codeblock} @@ -6127,7 +6118,7 @@ index 7b286507..e2b6a5eb 100644 \end{example} \rSec2[class.inhctor.init]{Initialization by inherited constructor}% -@@ -6614,7 +6609,6 @@ any non-static data member of \tcode{C} is of reference type or +@@ -6611,7 +6606,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 @@ -6135,7 +6126,7 @@ index 7b286507..e2b6a5eb 100644 \begin{itemize} \item \tcode{a} or \tcode{b} is of class or enumeration type and -@@ -6735,7 +6729,6 @@ The \defnadj{synthesized}{three-way comparison} +@@ -6732,7 +6726,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: @@ -6143,7 +6134,7 @@ index 7b286507..e2b6a5eb 100644 \begin{itemize} \item If \tcode{a <=> b} is usable\iref{class.compare.default} and -@@ -6835,7 +6828,6 @@ The \defn{common comparison type} \tcode{U} +@@ -6832,7 +6825,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: @@ -6325,10 +6316,10 @@ index 1722b95c..6663d0e0 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index ed136ec9..2f5de6f4 100644 +index 71b577a1..7053f174 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: @@ -6336,7 +6327,7 @@ index ed136ec9..2f5de6f4 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: @@ -6344,7 +6335,7 @@ index ed136ec9..2f5de6f4 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: @@ -6352,7 +6343,7 @@ index ed136ec9..2f5de6f4 100644 \begin{itemize} \item \tcode{T} is \defnx{\oldconcept{DefaultInsertable} into \tcode{X}} -@@ -4036,14 +4033,12 @@ such that distance from +@@ -4041,14 +4038,12 @@ such that distance from to \tcode{j} is positive, the following condition holds: @@ -6367,7 +6358,7 @@ index ed136ec9..2f5de6f4 100644 \begin{codeblock} value_comp(*i, *j) != false \end{codeblock} -@@ -6055,7 +6050,6 @@ define class templates that meet the requirements for sequence containers. +@@ -6060,7 +6055,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: @@ -6375,7 +6366,7 @@ index ed136ec9..2f5de6f4 100644 \begin{codeblock} template using @\placeholdernc{iter-value-type}@ = iterator_traits::value_type; // \expos -@@ -9326,7 +9320,6 @@ If \tcode{size() < sz}, +@@ -9331,7 +9325,6 @@ If \tcode{size() < sz}, appends \tcode{sz - size()} default-inserted elements to the sequence. If \tcode{sz <= size()}, equivalent to: @@ -6383,7 +6374,7 @@ index ed136ec9..2f5de6f4 100644 \begin{codeblock} list::iterator it = begin(); advance(it, sz); -@@ -10615,13 +10608,11 @@ static constexpr void swap(reference x, reference y) noexcept; +@@ -10620,13 +10613,11 @@ static constexpr void swap(reference x, reference y) noexcept; \pnum \effects Exchanges the contents of \tcode{x} and \tcode{y} as if by: @@ -6397,7 +6388,7 @@ index ed136ec9..2f5de6f4 100644 \end{itemdescr} \begin{itemdecl} -@@ -20093,7 +20084,6 @@ For each of +@@ -20099,7 +20090,6 @@ For each of \tcode{stack}, the library provides the following formatter specialization where \tcode{\placeholder{adaptor-type}} is the name of the template: @@ -6405,7 +6396,7 @@ index ed136ec9..2f5de6f4 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -24285,7 +24275,6 @@ typename A::offset_policy +@@ -24291,7 +24281,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6413,7 +6404,7 @@ index ed136ec9..2f5de6f4 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -25254,7 +25243,6 @@ the \tcode{SliceSpecifier} arguments. +@@ -25260,7 +25249,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: @@ -6421,7 +6412,7 @@ index ed136ec9..2f5de6f4 100644 \begin{itemize} \item let \tcode{index_type} be \begin{itemize} -@@ -25518,7 +25506,6 @@ $\le \tcode{src.extent($k$)}$ +@@ -25524,7 +25512,6 @@ $\le \tcode{src.extent($k$)}$ \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: @@ -6429,7 +6420,7 @@ index ed136ec9..2f5de6f4 100644 \begin{itemize} \item %FIXME: I think we want the count here, "number" is ambiguous. -@@ -25529,7 +25516,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and +@@ -25535,7 +25522,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: @@ -6437,7 +6428,7 @@ index ed136ec9..2f5de6f4 100644 \begin{itemize} \item \tcode{Extents::static_extent($k$)} -@@ -25569,7 +25555,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that +@@ -25575,7 +25561,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: @@ -6446,10 +6437,10 @@ index ed136ec9..2f5de6f4 100644 \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 f41fea44..4fa9b627 100644 +index 74100ed5..da75b28c 100644 --- a/source/declarations.tex +++ b/source/declarations.tex -@@ -1593,7 +1593,6 @@ a partial specialization\iref{temp.spec.partial}, +@@ -1591,7 +1591,6 @@ a partial specialization\iref{temp.spec.partial}, an explicit instantiation\iref{temp.explicit}, or it has one of the following forms: @@ -6457,7 +6448,7 @@ index f41fea44..4fa9b627 100644 \begin{ncsimplebnf} class-key \opt{attribute-specifier-seq} identifier \terminal{;}\br class-key \opt{attribute-specifier-seq} simple-template-id \terminal{;} -@@ -2491,7 +2490,6 @@ the \grammarterm{declarator} declares a function. +@@ -2489,7 +2488,6 @@ the \grammarterm{declarator} declares a function. \pnum Declarators have the syntax @@ -6465,7 +6456,7 @@ index f41fea44..4fa9b627 100644 \begin{bnf} \nontermdef{declarator}\br ptr-declarator\br -@@ -4396,7 +4394,6 @@ In the following code, +@@ -4394,7 +4392,6 @@ In the following code, \tcode{g} will be called with the value \tcode{f(2)}: @@ -6473,7 +6464,7 @@ index f41fea44..4fa9b627 100644 \begin{codeblock} int a = 1; int f(int); -@@ -5066,7 +5063,6 @@ To +@@ -5064,7 +5061,6 @@ To an object of type \tcode{T} means: @@ -6481,7 +6472,7 @@ index f41fea44..4fa9b627 100644 \begin{itemize} \item If -@@ -5270,7 +5266,6 @@ is sequenced before those associated with +@@ -5268,7 +5264,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: @@ -6489,7 +6480,7 @@ index f41fea44..4fa9b627 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -6182,7 +6177,6 @@ a program that necessitates such a binding is ill-formed. +@@ -6180,7 +6175,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} @@ -6497,7 +6488,7 @@ index f41fea44..4fa9b627 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6650,7 +6644,6 @@ int j { 1 }; // initialize to 1 +@@ -6648,7 +6642,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -6505,7 +6496,7 @@ index f41fea44..4fa9b627 100644 \end{itemize} \pnum -@@ -7737,7 +7730,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, +@@ -7735,7 +7728,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, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -6513,7 +6504,7 @@ index f41fea44..4fa9b627 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7869,7 +7861,6 @@ struct S { +@@ -7867,7 +7859,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6521,7 +6512,7 @@ index f41fea44..4fa9b627 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7966,7 +7957,6 @@ If the underlying +@@ -7964,7 +7955,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6529,7 +6520,7 @@ index f41fea44..4fa9b627 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8425,7 +8415,6 @@ void h() { +@@ -8423,7 +8413,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} according to the following grammar: @@ -6537,7 +6528,7 @@ index f41fea44..4fa9b627 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8599,7 +8588,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8597,7 +8586,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, @@ -6545,7 +6536,7 @@ index f41fea44..4fa9b627 100644 \begin{codeblock} namespace A { class X { }; -@@ -9152,7 +9140,6 @@ otherwise identical. +@@ -9150,7 +9138,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6553,7 +6544,7 @@ index f41fea44..4fa9b627 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -10020,7 +10007,6 @@ may be applied to a function or a lambda call operator or +@@ -10017,7 +10004,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: @@ -6562,7 +6553,7 @@ index f41fea44..4fa9b627 100644 \terminal{(} unevaluated-string \terminal{)} \end{ncbnf} diff --git a/source/exceptions.tex b/source/exceptions.tex -index df489ab5..17fe2711 100644 +index 88e1a340..ed441278 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -89,7 +89,6 @@ void f() { @@ -6587,7 +6578,7 @@ index df489ab5..17fe2711 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index f6fdd1c7..37b62ab4 100644 +index 9f91843e..746166d0 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -464,7 +464,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -7050,7 +7041,7 @@ index ffa39eaf..ed2a7332 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 03b19a61..b668fdac 100644 +index 1c229c08..cc034328 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. @@ -7125,7 +7116,7 @@ index 03b19a61..b668fdac 100644 \begin{itemize} \item Properties specified as \defn{locale-specific} -@@ -965,7 +956,6 @@ some subclauses provide representative declarations, and semantic requirements, +@@ -970,7 +961,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: @@ -7133,7 +7124,7 @@ index 03b19a61..b668fdac 100644 \begin{codeblock} streambuf* sb; // \expos \end{codeblock} -@@ -1932,7 +1922,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if +@@ -1936,7 +1926,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: @@ -7141,7 +7132,7 @@ index 03b19a61..b668fdac 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}. -@@ -2938,7 +2927,6 @@ for that type can fail by throwing an object of type +@@ -2942,7 +2931,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}: @@ -7149,7 +7140,7 @@ index 03b19a61..b668fdac 100644 \begin{codeblock} template struct SimpleAllocator { -@@ -3424,13 +3412,11 @@ the description of function semantics apply +@@ -3428,13 +3416,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. @@ -7163,7 +7154,7 @@ index 03b19a61..b668fdac 100644 \begin{itemize} \item \tcode{terminate_handler} -@@ -3451,7 +3437,6 @@ Exception handling. +@@ -3455,7 +3441,6 @@ Exception handling. \pnum A \Cpp{} program can get a pointer to the current handler function by calling the following functions: @@ -7171,7 +7162,7 @@ index 03b19a61..b668fdac 100644 \begin{itemize} \item \indexlibraryglobal{get_new_handler}% -@@ -3477,7 +3462,6 @@ on the implementation. +@@ -3481,7 +3466,6 @@ on the implementation. \pnum In particular, the behavior is undefined in the following cases: @@ -7179,7 +7170,7 @@ index 03b19a61..b668fdac 100644 \begin{itemize} \item For replacement functions\iref{replacement.functions}, if the installed replacement function does not -@@ -3762,7 +3746,6 @@ functions an implementation shall provide corresponding definitions. +@@ -3766,7 +3750,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: @@ -7218,7 +7209,7 @@ index 1b455e86..f2964f90 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index 16365a12..7541a534 100644 +index f0bd37f5..36a2a88e 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -1947,7 +1947,6 @@ is_base_of_v // \tcode{false} @@ -7238,7 +7229,7 @@ index 16365a12..7541a534 100644 \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 7ccd12be..56017d80 100644 +index 65e08e2c..82e20d65 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); @@ -7306,7 +7297,7 @@ index 7ccd12be..56017d80 100644 \begin{itemdecl} indirect_array valarray::operator[](const valarray&); diff --git a/source/overloading.tex b/source/overloading.tex -index 8e2bc352..f94e7c05 100644 +index 6fa6a1b1..e2f944d5 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -103,7 +103,6 @@ the list of arguments in its own unique way. @@ -7398,7 +7389,7 @@ index 8e2bc352..f94e7c05 100644 const char* unsigned long long int diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 7d85b2e3..a147d15a 100644 +index 14e251f7..97e9ac52 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -194,7 +194,6 @@ begins with the first character in the source file @@ -7481,7 +7472,7 @@ index 7d85b2e3..a147d15a 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 1f4f807d..cd516a76 100644 +index c93b855e..095b3aca 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7601,7 +7592,7 @@ index 785798f7..fa5898d3 100644 \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are diff --git a/source/support.tex b/source/support.tex -index d55d8d15..54ed6da8 100644 +index aac6e41e..cb42f682 100644 --- a/source/support.tex +++ b/source/support.tex @@ -2459,7 +2459,6 @@ This requirement is binding on any replacement versions of these functions. @@ -7637,7 +7628,7 @@ index d55d8d15..54ed6da8 100644 using promise_type = R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index 656d82ed..e31f88b7 100644 +index fbeb36af..684e7c85 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -235,7 +235,6 @@ in some translation unit; no diagnostic is required. @@ -7648,7 +7639,7 @@ index 656d82ed..e31f88b7 100644 \begin{bnf} \nontermdef{template-parameter}\br type-parameter\br -@@ -1569,7 +1568,6 @@ for function templates}{temp.func.order}. +@@ -1570,7 +1569,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): @@ -7656,7 +7647,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item Each of the two function templates has the same template parameters -@@ -1966,7 +1964,6 @@ or templated function declaration\iref{dcl.fct} +@@ -1967,7 +1965,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: @@ -7664,7 +7655,7 @@ index 656d82ed..e31f88b7 100644 \begin{bnf} \nontermdef{constraint-expression}\br logical-or-expression -@@ -1982,7 +1979,6 @@ that are used to constrain the declaration. +@@ -1983,7 +1980,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: @@ -7672,7 +7663,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item If there are no introduced \grammarterm{constraint-expression}{s}, the declaration has no associated constraints. -@@ -2772,7 +2768,6 @@ public: +@@ -2773,7 +2769,6 @@ public: declares three member functions of a class template. The subscript function can be defined like this: @@ -7680,7 +7671,7 @@ index 656d82ed..e31f88b7 100644 \begin{codeblock} template T& Array::operator[](int i) { if (i<0 || sz<=i) error("Array: range error"); -@@ -3164,7 +3159,6 @@ produces zero or more instantiations of the pattern in a list (described below). +@@ -3165,7 +3160,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: @@ -7688,7 +7679,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item In a function parameter pack\iref{dcl.fct}; the pattern is the \grammarterm{parameter-declaration} without the ellipsis. -@@ -3770,7 +3764,6 @@ All other constant template arguments are specialized. +@@ -3771,7 +3765,6 @@ All other constant template arguments are specialized. \pnum Within the argument list of a partial specialization, the following restrictions apply: @@ -7696,7 +7687,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item The type of a template parameter corresponding to a specialized constant template -@@ -3784,7 +3777,6 @@ template< int X, int (*array_ptr)[X] > class A {}; +@@ -3785,7 +3778,6 @@ template< int X, int (*array_ptr)[X] > class A {}; int array[5]; template< int X > class A { }; // error \end{codeblock} @@ -7704,7 +7695,7 @@ index 656d82ed..e31f88b7 100644 \end{example} \item The partial specialization shall be more specialized than the primary -@@ -3910,7 +3902,6 @@ the first is \defn{more specialized} than the second if, given the following +@@ -3911,7 +3903,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}: @@ -7712,7 +7703,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item Each of the two -@@ -4062,7 +4053,6 @@ A::B abci; // uses \#1 +@@ -4063,7 +4054,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: @@ -7720,7 +7711,7 @@ index 656d82ed..e31f88b7 100644 \begin{codeblock} template class Array { }; template void sort(Array&); -@@ -4117,7 +4107,6 @@ void h(int* p) { +@@ -4118,7 +4108,6 @@ void h(int* p) { } \end{codeblock} \end{minipage} @@ -7728,7 +7719,7 @@ index 656d82ed..e31f88b7 100644 \end{example} \pnum -@@ -4303,7 +4292,6 @@ to guarantee that functionally equivalent declarations will be treated +@@ -4304,7 +4293,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: @@ -7736,7 +7727,7 @@ index 656d82ed..e31f88b7 100644 \begin{codeblock} // guaranteed to be the same template void f(A, A); -@@ -4396,7 +4384,6 @@ then the order of the function parameters in its transformed template +@@ -4397,7 +4385,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$: @@ -7744,7 +7735,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item The type $X(M)$ is ``rvalue reference to \cv{}~$A$'' -@@ -4652,7 +4639,6 @@ template class TT> +@@ -4653,7 +4640,6 @@ template class TT> void g(TT>); g(v); // OK, \tcode{TT} = \tcode{vector} \end{codeblock} @@ -7752,7 +7743,7 @@ index 656d82ed..e31f88b7 100644 \end{example} \pnum -@@ -5518,7 +5504,6 @@ of a class that is the current instantiation. +@@ -5519,7 +5505,6 @@ of a class that is the current instantiation. \pnum A qualified name\iref{basic.lookup.qual} is dependent if @@ -7760,7 +7751,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item it is a \grammarterm{conversion-function-id} -@@ -5767,7 +5752,6 @@ specified by the +@@ -5768,7 +5753,6 @@ specified by the or \grammarterm{new-type-id} is dependent, even if any subexpression is type-dependent: @@ -7768,7 +7759,7 @@ index 656d82ed..e31f88b7 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br simple-type-specifier braced-init-list\br -@@ -5785,7 +5769,6 @@ typename-specifier braced-init-list\br +@@ -5786,7 +5770,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): @@ -7776,7 +7767,7 @@ index 656d82ed..e31f88b7 100644 \begin{ncsimplebnf} literal\br \keyword{sizeof} unary-expression\br -@@ -5890,7 +5873,6 @@ Expressions of the following form are value-dependent if the +@@ -5891,7 +5874,6 @@ Expressions of the following form are value-dependent if the is type-dependent or the \grammarterm{type-id} is dependent: @@ -7784,7 +7775,7 @@ index 656d82ed..e31f88b7 100644 \begin{ncsimplebnf} \keyword{sizeof} unary-expression\br \keyword{sizeof} \terminal{(} type-id \terminal{)}\br -@@ -5918,7 +5900,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} +@@ -5919,7 +5901,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: @@ -7792,7 +7783,7 @@ index 656d82ed..e31f88b7 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br typename-specifier \terminal{(} \opt{expression-list} \terminal{)}\br -@@ -5933,7 +5914,6 @@ typename-specifier braced-init-list\br +@@ -5934,7 +5915,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following form are value-dependent: @@ -7800,7 +7791,7 @@ index 656d82ed..e31f88b7 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -6935,7 +6915,6 @@ template. +@@ -6936,7 +6916,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -7808,7 +7799,7 @@ index 656d82ed..e31f88b7 100644 \begin{bnf} \nontermdef{explicit-instantiation}\br \opt{\keyword{extern}} \keyword{template} declaration -@@ -7410,7 +7389,6 @@ otherwise, it is a declaration. +@@ -7411,7 +7390,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}: @@ -7816,7 +7807,7 @@ index 656d82ed..e31f88b7 100644 \begin{codeblock} template<> X Q::x; // declaration template<> X Q::x (); // error: declares a function -@@ -7669,7 +7647,6 @@ An empty template argument list can be used to indicate that a given +@@ -7670,7 +7648,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: @@ -7824,7 +7815,7 @@ index 656d82ed..e31f88b7 100644 \begin{codeblock} template int f(T); // \#1 int f(int); // \#2 -@@ -8251,7 +8228,6 @@ void h(int x, float& y) { +@@ -8252,7 +8229,6 @@ void h(int x, float& y) { If \tcode{P} is not a reference type: @@ -7832,7 +7823,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item If -@@ -8346,7 +8322,6 @@ the type +@@ -8347,7 +8323,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -7840,7 +7831,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item If the original -@@ -8536,7 +8511,6 @@ of \tcode{P} for type deduction and for any further references to or transformat +@@ -8537,7 +8512,6 @@ of \tcode{P} for type deduction and for any further references to or transformat If \tcode{A} is not a reference type: @@ -7848,7 +7839,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item If -@@ -8582,7 +8556,6 @@ values that will make the deduced +@@ -8583,7 +8557,6 @@ values that will make the deduced identical to \tcode{A}. However, certain attributes of \tcode{A} may be ignored: @@ -7856,7 +7847,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item If the original \tcode{A} is a reference type, -@@ -8627,7 +8600,6 @@ the argument template and template-1 as the parameter template. +@@ -8628,7 +8601,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: @@ -7864,7 +7855,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item In the context of a function call, the types used are those function parameter types -@@ -8655,7 +8627,6 @@ and +@@ -8656,7 +8628,6 @@ and \pnum Before the partial ordering is done, certain transformations are performed on the types used for partial ordering: @@ -7872,7 +7863,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item If -@@ -8861,7 +8832,6 @@ A given type +@@ -8862,7 +8833,6 @@ A given type \tcode{P} can be composed from a number of other types, templates, and constant template argument values: @@ -7880,7 +7871,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item A function type includes the types of each of the function parameters, -@@ -8903,7 +8873,6 @@ need not have the same form. +@@ -8904,7 +8874,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -7888,7 +7879,7 @@ index 656d82ed..e31f88b7 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -8998,7 +8967,6 @@ is deduced. +@@ -8999,7 +8968,6 @@ is deduced. \begin{example} Here is an example in which different parameter/argument pairs produce inconsistent template argument deductions: @@ -7896,7 +7887,7 @@ index 656d82ed..e31f88b7 100644 \begin{codeblock} template void f(T x, T y) { @\commentellip@ } struct A { @\commentellip@ }; -@@ -9015,7 +8983,6 @@ Here is an example where two template arguments are deduced from a +@@ -9016,7 +8984,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: @@ -7904,7 +7895,7 @@ index 656d82ed..e31f88b7 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -9032,7 +8999,6 @@ void r() { +@@ -9033,7 +9000,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -7912,7 +7903,7 @@ index 656d82ed..e31f88b7 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -9051,7 +9017,6 @@ void h() { +@@ -9052,7 +9018,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: @@ -7920,7 +7911,7 @@ index 656d82ed..e31f88b7 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -9062,7 +9027,6 @@ void s() { +@@ -9063,7 +9028,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: @@ -7929,10 +7920,10 @@ index 656d82ed..e31f88b7 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index bb641003..dd7d639f 100644 +index 0962d340..7fbc2b5b 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -7386,7 +7386,6 @@ and visible to other threads. +@@ -7323,7 +7323,6 @@ and visible to other threads. \pnum The expression \tcode{m.lock()} is well-formed and has the following semantics: @@ -7940,7 +7931,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -7429,7 +7428,6 @@ that a deadlock would occur. +@@ -7366,7 +7365,6 @@ that a deadlock would occur. \pnum The expression \tcode{m.try_lock()} is well-formed and has the following semantics: @@ -7948,7 +7939,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -7475,7 +7473,6 @@ Nothing. +@@ -7412,7 +7410,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -7956,7 +7947,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -7630,7 +7627,6 @@ requirements\iref{thread.req.lockable.timed}. +@@ -7567,7 +7564,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: @@ -7964,7 +7955,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -7672,7 +7668,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -7609,7 +7605,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: @@ -7972,7 +7963,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -7859,7 +7854,6 @@ shared lock. +@@ -7796,7 +7791,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -7980,7 +7971,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -7896,7 +7890,6 @@ The calling thread has a shared lock on the mutex. +@@ -7833,7 +7827,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: @@ -7988,7 +7979,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -7921,7 +7914,6 @@ Nothing. +@@ -7858,7 +7851,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -7996,7 +7987,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -8024,7 +8016,6 @@ requirements\iref{thread.req.lockable.shared.timed}. +@@ -7961,7 +7953,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: @@ -8004,7 +7995,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -8069,7 +8060,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -8006,7 +7997,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: @@ -8012,7 +8003,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -10207,7 +10197,6 @@ template +@@ -10144,7 +10134,6 @@ template \begin{itemdescr} \pnum \effects @@ -8020,7 +8011,7 @@ index bb641003..dd7d639f 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -11598,7 +11587,6 @@ shared state as \tcode{*this}. +@@ -11535,7 +11524,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -8028,7 +8019,7 @@ index bb641003..dd7d639f 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}. -@@ -11661,7 +11649,6 @@ already has a stored value or exception. +@@ -11598,7 +11586,6 @@ already has a stored value or exception. \pnum \errors @@ -8036,7 +8027,7 @@ index bb641003..dd7d639f 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -12001,7 +11988,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -11938,7 +11925,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -8044,7 +8035,7 @@ index bb641003..dd7d639f 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12345,7 +12331,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -12282,7 +12268,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8052,7 +8043,7 @@ index bb641003..dd7d639f 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12380,7 +12365,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -12317,7 +12302,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8060,7 +8051,7 @@ index bb641003..dd7d639f 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12436,7 +12420,6 @@ The further behavior +@@ -12373,7 +12357,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): @@ -8069,10 +8060,10 @@ index bb641003..dd7d639f 100644 \item If \tcode{launch::async} is set in \tcode{policy}, calls diff --git a/source/time.tex b/source/time.tex -index fd854a49..175e3ab5 100644 +index f1f22e40..2ff12f44 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -2074,7 +2074,6 @@ return os << s.str(); +@@ -2068,7 +2068,6 @@ return os << s.str(); \end{codeblock} where \tcode{\placeholder{units-suffix}} depends on the type \tcode{Period::type} as follows: @@ -8080,7 +8071,7 @@ index fd854a49..175e3ab5 100644 \begin{itemize} \item If \tcode{Period::type} is \tcode{atto}, -@@ -2952,7 +2951,6 @@ for (auto i = 0; i < 8; ++i, u += 250ms) +@@ -2946,7 +2945,6 @@ for (auto i = 0; i < 8; ++i, u += 250ms) \end{codeblock} Produces this output: @@ -8088,7 +8079,7 @@ index fd854a49..175e3ab5 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); +@@ -3152,7 +3150,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, tt); \end{codeblock} Produces this output: @@ -8096,7 +8087,7 @@ index fd854a49..175e3ab5 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); +@@ -3315,7 +3312,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, gt); \end{codeblock} Produces this output: @@ -8104,7 +8095,7 @@ index fd854a49..175e3ab5 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}. +@@ -3384,7 +3380,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: @@ -8112,7 +8103,7 @@ index fd854a49..175e3ab5 100644 \begin{codeblock} template static sys_time<@\seebelow@> -@@ -3399,9 +3394,7 @@ template +@@ -3393,9 +3388,7 @@ template static file_time<@\seebelow@> from_sys(const sys_time&); \end{codeblock} @@ -8122,7 +8113,7 @@ index fd854a49..175e3ab5 100644 \begin{codeblock} template static utc_time<@\seebelow@> -@@ -3870,7 +3863,6 @@ template +@@ -3864,7 +3857,6 @@ template \constraints At least one of the following clock time conversion expressions is well-formed: @@ -8130,7 +8121,7 @@ index fd854a49..175e3ab5 100644 \begin{itemize} \item \begin{codeblock} -@@ -7916,7 +7908,6 @@ a conventional syntax for the creation of civil calendar dates. +@@ -7910,7 +7902,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: @@ -8138,7 +8129,7 @@ index fd854a49..175e3ab5 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: +@@ -7918,7 +7909,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: @@ -8146,7 +8137,7 @@ index fd854a49..175e3ab5 100644 \begin{codeblock} last @\tcode{\placeholder{weekday}}@[@\tcode{\placeholder{i}}@] -@@ -7937,7 +7927,6 @@ last +@@ -7931,7 +7921,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: @@ -8154,7 +8145,7 @@ index fd854a49..175e3ab5 100644 \begin{codeblock} year_month ym = 2015y/April; month_day md1 = April/4; -@@ -9126,7 +9115,6 @@ template +@@ -9120,7 +9109,6 @@ template Initializes the base class with a sequence of \tcode{char} equivalent to that produced by \tcode{os.str()} initialized as shown below: @@ -8162,7 +8153,7 @@ index fd854a49..175e3ab5 100644 \begin{codeblock} ostringstream os; os << tp << " is in a gap between\n" -@@ -9156,7 +9144,6 @@ int main() { +@@ -9150,7 +9138,6 @@ int main() { \end{codeblock} Produces the output: @@ -8170,7 +8161,7 @@ index fd854a49..175e3ab5 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 +@@ -9195,7 +9182,6 @@ template Initializes the base class with a sequence of \tcode{char} equivalent to that produced by \tcode{os.str()} initialized as shown below: @@ -8178,7 +8169,7 @@ index fd854a49..175e3ab5 100644 \begin{codeblock} ostringstream os; os << tp << " is ambiguous. It could be\n" -@@ -9229,7 +9215,6 @@ int main() { +@@ -9223,7 +9209,6 @@ int main() { \end{codeblock} Produces the output: @@ -8186,7 +8177,7 @@ index fd854a49..175e3ab5 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 +@@ -9277,7 +9262,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: @@ -8194,7 +8185,7 @@ index fd854a49..175e3ab5 100644 \begin{codeblock} offset = local_time - sys_time \end{codeblock} -@@ -9588,7 +9572,6 @@ the behavior of \tcode{zoned_time} +@@ -9582,7 +9566,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: @@ -8202,7 +8193,7 @@ index fd854a49..175e3ab5 100644 \begin{codeblock} namespace std::chrono { template<> struct zoned_traits { -@@ -10164,7 +10147,6 @@ for (auto& l : get_tzdb().leap_seconds) +@@ -10158,7 +10141,6 @@ for (auto& l : get_tzdb().leap_seconds) \end{codeblock} Produces the output: @@ -8210,7 +8201,7 @@ index fd854a49..175e3ab5 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 +@@ -10457,7 +10439,6 @@ The \tcode{parse} member functions of these formatters interpret the format specification as a \fmtgrammarterm{chrono-format-spec} according to the following syntax: @@ -8219,7 +8210,7 @@ index fd854a49..175e3ab5 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 dcf80d40..58252722 100644 +index edaa136a..abe9bd67 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -270,7 +270,6 @@ Exchanges values stored in two locations. @@ -8238,7 +8229,7 @@ index dcf80d40..58252722 100644 \begin{codeblock} is_nothrow_move_assignable_v<@$\mathtt{T}_i$@> \end{codeblock} -@@ -3159,7 +3157,6 @@ As if by \tcode{x.swap(y)}. +@@ -3165,7 +3163,6 @@ As if by \tcode{x.swap(y)}. \pnum \remarks The exception specification is equivalent to: @@ -8246,7 +8237,7 @@ index dcf80d40..58252722 100644 \begin{codeblock} noexcept(x.swap(y)) \end{codeblock} -@@ -10701,7 +10698,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; +@@ -10711,7 +10708,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8254,7 +8245,7 @@ index dcf80d40..58252722 100644 \begin{itemize} \item If \tcode{I < pos}, the new value is zero; -@@ -10726,7 +10722,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; +@@ -10736,7 +10732,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8262,7 +8253,7 @@ index dcf80d40..58252722 100644 \begin{itemize} \item If \tcode{pos >= N - I}, the new value is zero; -@@ -11452,7 +11447,6 @@ namespace std { +@@ -11462,7 +11457,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: @@ -8270,7 +8261,7 @@ index dcf80d40..58252722 100644 \begin{codeblock} transform(a.begin(), a.end(), b.begin(), a.begin(), plus()); \end{codeblock} -@@ -14931,7 +14925,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; +@@ -14941,7 +14935,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: @@ -8282,7 +8273,7 @@ index dcf80d40..58252722 100644 2.43.0 -From 434cbc5df3741cf4f767d724f6e4dee48be4fd36 Mon Sep 17 00:00:00 2001 +From 3063c650e90f877f880f947b68530381b8b91a68 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. @@ -8429,7 +8420,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From d1c1e42329a61c4367c89657eb0aed985a0aecee Mon Sep 17 00:00:00 2001 +From dfe9a2ed833db8fa7310b40f53163829841d1767 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. @@ -8457,7 +8448,7 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From 80f1e2bfcf9b2f760c29cddfdd4d1875bac2e82a Mon Sep 17 00:00:00 2001 +From 3b4d83e454194730fa79d68a6bfd4c92bf99c5ab 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. @@ -8481,7 +8472,7 @@ Subject: [PATCH 8/9] Use cxxdraft-htmlgen macros more. 15 files changed, 486 insertions(+), 494 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index efe3f977..c196ba1b 100644 +index aa433c38..23502107 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -8528,7 +8519,7 @@ index efe3f977..c196ba1b 100644 if it is required to be a mutable iterator, or model \libconcept{random_access_iterator}\iref{iterator.concept.random.access} otherwise. \end{itemize} -@@ -4616,10 +4616,10 @@ template +@@ -4618,10 +4618,10 @@ template \pnum \expects \tcode{Function} meets @@ -8541,7 +8532,7 @@ index efe3f977..c196ba1b 100644 \end{note} \pnum -@@ -4656,7 +4656,7 @@ template +@@ -4658,7 +4658,7 @@ template \begin{itemdescr} \pnum \expects @@ -8550,7 +8541,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -4790,10 +4790,10 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4792,10 +4792,10 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8563,7 +8554,7 @@ index efe3f977..c196ba1b 100644 \end{note} \pnum -@@ -4830,7 +4830,7 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4832,7 +4832,7 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8572,7 +8563,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -5678,7 +5678,7 @@ If +@@ -5680,7 +5680,7 @@ If \item the types of \tcode{first1}, \tcode{last1}, \tcode{first2}, and \tcode{last2} meet the @@ -8581,7 +8572,7 @@ index efe3f977..c196ba1b 100644 and \tcode{last1 - first1 != last2 - first2} for the overloads in namespace \tcode{std}; \item -@@ -6022,7 +6022,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} +@@ -6024,7 +6024,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} \pnum \remarks @@ -8590,7 +8581,7 @@ index efe3f977..c196ba1b 100644 \end{itemdescr} \rSec2[alg.starts.with]{Starts with} -@@ -7604,7 +7604,7 @@ Let $E$ be +@@ -7606,7 +7606,7 @@ Let $E$ be \expects For the algorithms in namespace \tcode{std}, the type of \tcode{*first} @@ -8599,7 +8590,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -7853,7 +7853,7 @@ let $E$ be +@@ -7855,7 +7855,7 @@ let $E$ be For the overloads in namespace \tcode{std}, \tcode{pred} is an equivalence relation and the type of \tcode{*first} meets @@ -8608,7 +8599,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -7983,10 +7983,10 @@ Let: +@@ -7985,10 +7985,10 @@ Let: \libconcept{forward_iterator}\iref{iterator.concept.forward}, then there are no additional requirements for \tcode{T}. Otherwise, if \tcode{OutputIterator} meets @@ -8621,7 +8612,7 @@ index efe3f977..c196ba1b 100644 Otherwise, \tcode{T} meets both the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and \oldconcept{CopyAssignable} requirements. -@@ -8065,7 +8065,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8067,7 +8067,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8630,7 +8621,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -8200,10 +8200,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterat +@@ -8202,10 +8202,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 @@ -8644,7 +8635,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -8420,13 +8420,13 @@ For the overload in namespace \tcode{std}: +@@ -8422,13 +8422,13 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{PopulationIterator} meets @@ -8661,7 +8652,7 @@ index efe3f977..c196ba1b 100644 unless \tcode{Pop\-ulat\-ion\-Iter\-ator} models \libconcept{forward_iterator}\iref{iterator.concept.forward}. \item -@@ -8494,7 +8494,7 @@ For the overload in namespace \tcode{std}: +@@ -8496,7 +8496,7 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{RandomAccessIterator} meets @@ -8670,7 +8661,7 @@ index efe3f977..c196ba1b 100644 \item The type \tcode{remove_reference_t} meets the uniform random bit generator\iref{rand.req.urng} requirements. -@@ -8555,7 +8555,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8557,7 +8557,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8679,7 +8670,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -8619,10 +8619,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8621,10 +8621,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8693,7 +8684,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -8801,10 +8801,10 @@ for the overloads with no parameters by those names. +@@ -8803,10 +8803,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8707,7 +8698,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -8869,10 +8869,10 @@ for the overloads with no parameters by those names. +@@ -8871,10 +8871,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8721,7 +8712,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -8943,10 +8943,10 @@ for the overloads with no parameters by those names. +@@ -8945,10 +8945,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 @@ -8735,7 +8726,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -9089,10 +9089,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. +@@ -9091,10 +9091,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8749,7 +8740,7 @@ index efe3f977..c196ba1b 100644 \pnum For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and -@@ -9327,10 +9327,10 @@ for the overloads with no parameters by those names. +@@ -9329,10 +9329,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 @@ -8763,7 +8754,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -9710,7 +9710,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9712,7 +9712,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 @@ -8772,7 +8763,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -9737,7 +9737,7 @@ Let $N = \tcode{last - first}$: +@@ -9739,7 +9739,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 @@ -8781,7 +8772,7 @@ index efe3f977..c196ba1b 100644 for the overloads in namespace \tcode{std} or models \libconcept{bidirectional_iterator} for the overloads in namespace \tcode{ranges}, -@@ -9790,10 +9790,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9792,10 +9792,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 @@ -8795,7 +8786,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -10190,10 +10190,10 @@ for the overloads with no parameters by those names. +@@ -10192,10 +10192,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 @@ -8809,7 +8800,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -10932,10 +10932,10 @@ The range \range{first}{last - 1} +@@ -10934,10 +10934,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 @@ -8823,7 +8814,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -10985,10 +10985,10 @@ The range \range{first}{last} +@@ -10987,10 +10987,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 @@ -8837,7 +8828,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -11041,10 +11041,10 @@ for the overloads with no parameters by those names. +@@ -11043,10 +11043,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8851,7 +8842,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -11094,10 +11094,10 @@ The range \range{first}{last} is +@@ -11096,10 +11096,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 @@ -8865,7 +8856,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -11284,7 +11284,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8885,7 +8876,7 @@ index efe3f977..c196ba1b 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11367,7 +11367,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8905,7 +8896,7 @@ index efe3f977..c196ba1b 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11452,7 +11452,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8925,7 +8916,7 @@ index efe3f977..c196ba1b 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11721,7 +11721,7 @@ for the overloads with no parameter \tcode{proj}. +@@ -11723,7 +11723,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} @@ -8934,7 +8925,7 @@ index efe3f977..c196ba1b 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11924,7 +11924,7 @@ for overloads with no parameters by those names. +@@ -11926,7 +11926,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8943,7 +8934,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -11983,7 +11983,7 @@ for overloads with no parameters by those names. +@@ -11985,7 +11985,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8952,7 +8943,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -12302,8 +12302,8 @@ template +@@ -12304,8 +12304,8 @@ template \pnum \expects \tcode{T} meets @@ -8963,7 +8954,7 @@ index efe3f977..c196ba1b 100644 In the range \crange{first}{last}, \tcode{binary_op} neither modifies elements nor invalidates iterators or subranges. -@@ -12425,7 +12425,7 @@ are convertible to \tcode{T}. +@@ -12427,7 +12427,7 @@ are convertible to \tcode{T}. \expects \begin{itemize} \item @@ -8972,7 +8963,7 @@ index efe3f977..c196ba1b 100644 \item \tcode{binary_op} neither invalidates iterators or subranges, nor modifies elements in the range \crange{first}{last}. -@@ -12469,8 +12469,8 @@ template}. +@@ -13166,7 +13166,7 @@ that denotes an object of type \tcode{minus<>}. \begin{itemize} \item For the overloads with no \tcode{ExecutionPolicy}, @@ -9141,7 +9132,7 @@ index e653b348..2adaa033 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index ed0a8d5c..f4136f9b 100644 +index 6e99784a..a8d4d24a 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9310,10 +9301,10 @@ index 6058ccab..7586f5cb 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 b668fdac..d01e3aa2 100644 +index cc034328..9b6bf373 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex -@@ -1862,7 +1862,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1866,7 +1866,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9322,7 +9313,7 @@ index b668fdac..d01e3aa2 100644 {p{1in}p{4.15in}} \topline \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep -@@ -1889,7 +1889,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1893,7 +1893,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9331,8 +9322,8 @@ index b668fdac..d01e3aa2 100644 {p{1in}p{1in}p{1in}p{1.9in}} \topline \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Return value} & \hdstyle{Post-condition} \\ \capsep -@@ -1903,7 +1903,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 +@@ -1907,7 +1907,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. + \tcode{a.\~T()} & All resources owned by \tcode{a} are reclaimed, no exception is propagated. \\ \rowsep \multicolumn{2}{|l|}{ \begin{tailnote} - Array types and non-object types are not \oldconcept{Destructible}. @@ -9340,7 +9331,7 @@ index b668fdac..d01e3aa2 100644 \end{tailnote} } \\ \end{oldconcepttable} -@@ -1982,7 +1982,7 @@ void value_swap(T&& t, U&& u) { +@@ -1986,7 +1986,7 @@ void value_swap(T&& t, U&& u) { // for rvalues and lvalues } @@ -9349,7 +9340,7 @@ index b668fdac..d01e3aa2 100644 template void lv_swap(T& t1, T& t2) { using std::swap; -@@ -2019,9 +2019,9 @@ int main() { +@@ -2023,9 +2023,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} @@ -9362,7 +9353,7 @@ index b668fdac..d01e3aa2 100644 \item the expressions shown in \tref{cpp17.nullablepointer} are valid and have the indicated semantics, and -@@ -2097,8 +2097,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. +@@ -2101,8 +2101,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}, @@ -9373,7 +9364,7 @@ index b668fdac..d01e3aa2 100644 \item the expressions shown in \tref{cpp17.hash} are valid and have the indicated semantics. \end{itemize} -@@ -2782,7 +2782,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2786,7 +2786,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 @@ -9382,7 +9373,7 @@ index b668fdac..d01e3aa2 100644 the copy operation shall not throw exceptions. \pnum -@@ -2804,7 +2804,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2808,7 +2808,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 @@ -9391,7 +9382,7 @@ index b668fdac..d01e3aa2 100644 the move operation shall not throw exceptions. \pnum -@@ -2826,7 +2826,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2830,7 +2830,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, @@ -9400,7 +9391,7 @@ index b668fdac..d01e3aa2 100644 the \tcode{swap} operation shall not throw exceptions. \pnum -@@ -2856,7 +2856,7 @@ Default: \tcode{is_empty::type} +@@ -2860,7 +2860,7 @@ Default: \tcode{is_empty::type} \pnum An allocator type \tcode{X} shall meet the @@ -9409,7 +9400,7 @@ index b668fdac..d01e3aa2 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}). -@@ -2864,7 +2864,7 @@ No constructor, +@@ -2868,7 +2868,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 @@ -9592,7 +9583,7 @@ index f2964f90..eddd5794 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index 7541a534..e7f1ce51 100644 +index 36a2a88e..1a731050 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -95,12 +95,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -10197,7 +10188,7 @@ index 7541a534..e7f1ce51 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index 56017d80..7d576b59 100644 +index 82e20d65..6651e2d3 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 @@ -10349,7 +10340,7 @@ index 099fd5f3..d906a754 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 54ed6da8..9158f6fb 100644 +index cb42f682..0c8f2758 100644 --- a/source/support.tex +++ b/source/support.tex @@ -3657,11 +3657,11 @@ namespace std { @@ -10388,7 +10379,7 @@ index 54ed6da8..9158f6fb 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index dd7d639f..277d15be 100644 +index 7fbc2b5b..7b9503eb 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10451,7 +10442,7 @@ index dd7d639f..277d15be 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}, -@@ -4510,7 +4510,7 @@ namespace std { +@@ -4447,7 +4447,7 @@ namespace std { \indexlibraryglobal{atomic}% \pnum The template argument for \tcode{T} shall meet the @@ -10460,7 +10451,7 @@ index dd7d639f..277d15be 100644 The program is ill-formed if any of \begin{itemize} \item \tcode{is_trivially_copyable_v}, -@@ -7347,11 +7347,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, +@@ -7284,11 +7284,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} @@ -10474,7 +10465,7 @@ index dd7d639f..277d15be 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. -@@ -7620,7 +7620,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de +@@ -7557,7 +7557,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de object of an instantiation of \link{\tcode{time_point}}{time.point}. \begin{note} @@ -10483,7 +10474,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -7832,7 +7832,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally +@@ -7769,7 +7769,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} @@ -10492,7 +10483,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.shared}. \end{note} -@@ -8009,7 +8009,7 @@ meet the requirements set out below. In this description, +@@ -7946,7 +7946,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}. \begin{note} @@ -10501,7 +10492,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.shared.timed}. \end{note} -@@ -8219,7 +8219,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable +@@ -8156,7 +8156,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} @@ -10510,7 +10501,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.basic}. \indexlibraryctor{lock_guard}% -@@ -8298,12 +8298,12 @@ object. +@@ -8235,12 +8235,12 @@ object. If \tcode{sizeof...(MutexTypes)} is one, let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. \tcode{Mutex} @@ -10525,7 +10516,7 @@ index dd7d639f..277d15be 100644 and there is no member \tcode{mutex_type}. \end{itemize} -@@ -8418,17 +8418,17 @@ copyable but are movable. The behavior of a program is undefined if the containe +@@ -8355,17 +8355,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 lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied @@ -10549,7 +10540,7 @@ index dd7d639f..277d15be 100644 \end{note} \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} -@@ -8478,7 +8478,7 @@ unique_lock(mutex_type& m, try_to_lock_t); +@@ -8415,7 +8415,7 @@ unique_lock(mutex_type& m, try_to_lock_t); \begin{itemdescr} \pnum \expects @@ -10558,7 +10549,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8520,7 +8520,7 @@ template +@@ -8457,7 +8457,7 @@ template \pnum \expects The supplied \tcode{Mutex} type meets the @@ -10567,7 +10558,7 @@ index dd7d639f..277d15be 100644 \pnum \effects -@@ -8542,7 +8542,7 @@ template +@@ -8479,7 +8479,7 @@ template \begin{itemdescr} \pnum \expects @@ -10576,7 +10567,7 @@ index dd7d639f..277d15be 100644 \pnum \effects -@@ -8629,7 +8629,7 @@ bool try_lock(); +@@ -8566,7 +8566,7 @@ bool try_lock(); \begin{itemdescr} \pnum \expects @@ -10585,7 +10576,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8668,7 +8668,7 @@ template +@@ -8605,7 +8605,7 @@ template \begin{itemdescr} \pnum \expects @@ -10594,7 +10585,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.timed}. \pnum -@@ -8707,7 +8707,7 @@ template +@@ -8644,7 +8644,7 @@ template \begin{itemdescr} \pnum \expects @@ -10603,7 +10594,7 @@ index dd7d639f..277d15be 100644 \pnum \effects -@@ -8900,16 +8900,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type +@@ -8837,16 +8837,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 lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied @@ -10624,7 +10615,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -8994,7 +8994,7 @@ template +@@ -8931,7 +8931,7 @@ template \begin{itemdescr} \pnum \expects @@ -10633,7 +10624,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9018,7 +9018,7 @@ template +@@ -8955,7 +8955,7 @@ template \begin{itemdescr} \pnum \expects @@ -10642,7 +10633,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9143,7 +9143,7 @@ template +@@ -9080,7 +9080,7 @@ template \begin{itemdescr} \pnum \expects @@ -10651,7 +10642,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9183,7 +9183,7 @@ template +@@ -9120,7 +9120,7 @@ template \begin{itemdescr} \pnum \expects @@ -10660,7 +10651,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9322,7 +9322,7 @@ template int try_lock(L1&, L2&, L3&...); +@@ -9259,7 +9259,7 @@ template int try_lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10669,7 +10660,7 @@ index dd7d639f..277d15be 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9351,7 +9351,7 @@ template void lock(L1&, L2&, L3&...); +@@ -9288,7 +9288,7 @@ template void lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10678,7 +10669,7 @@ index dd7d639f..277d15be 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -10017,7 +10017,7 @@ This can happen if the re-locking of the mutex throws an exception. +@@ -9954,7 +9954,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} @@ -10687,7 +10678,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.basic}. \begin{note} All of the standard -@@ -10955,24 +10955,24 @@ execute atomically. +@@ -10892,24 +10892,24 @@ execute atomically. \pnum \tcode{CompletionFunction} shall meet the @@ -10718,7 +10709,7 @@ index dd7d639f..277d15be 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -11467,7 +11467,7 @@ namespace std { +@@ -11404,7 +11404,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10727,7 +10718,7 @@ index dd7d639f..277d15be 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -11799,7 +11799,7 @@ namespace std { +@@ -11736,7 +11736,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10736,7 +10727,7 @@ index dd7d639f..277d15be 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -12105,7 +12105,7 @@ namespace std { +@@ -12042,7 +12042,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10745,7 +10736,7 @@ index dd7d639f..277d15be 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -13043,7 +13043,7 @@ the expression \tcode{d(ptr)} is valid. +@@ -12980,7 +12980,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -10754,7 +10745,7 @@ index dd7d639f..277d15be 100644 \pnum If \tcode{D} is trivially copyable, -@@ -13101,7 +13101,7 @@ namespace std { +@@ -13038,7 +13038,7 @@ namespace std { \pnum This class meets the requirements of @@ -10763,7 +10754,7 @@ index dd7d639f..277d15be 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -13249,8 +13249,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -13186,8 +13186,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -10774,7 +10765,7 @@ index dd7d639f..277d15be 100644 \pnum \effects -@@ -13442,7 +13442,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -13379,7 +13379,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -10784,10 +10775,10 @@ index dd7d639f..277d15be 100644 \pnum \tcode{T} may be an incomplete type. diff --git a/source/time.tex b/source/time.tex -index 175e3ab5..dec0fb9f 100644 +index 2ff12f44..f2524afb 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 @@ -10805,7 +10796,7 @@ index 175e3ab5..dec0fb9f 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 @@ -10825,7 +10816,7 @@ index 175e3ab5..dec0fb9f 100644 unless it meets all of the following conditions: \begin{itemize} \item the \grammarterm{qualified-id}s -@@ -2632,7 +2632,7 @@ template +@@ -2626,7 +2626,7 @@ template \pnum The types defined in \ref{time.clock} meet the @@ -10834,7 +10825,7 @@ index 175e3ab5..dec0fb9f 100644 requirements\iref{time.clock.req} unless otherwise specified. -@@ -2850,7 +2850,7 @@ which is \tcode{10'957 * 86'400s + 22s}. \\ +@@ -2844,7 +2844,7 @@ which is \tcode{10'957 * 86'400s + 22s}. \\ \end{example} \pnum @@ -10843,7 +10834,7 @@ index 175e3ab5..dec0fb9f 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 +@@ -3063,7 +3063,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 @@ -10852,7 +10843,7 @@ index 175e3ab5..dec0fb9f 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 +@@ -3225,7 +3225,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 @@ -10861,7 +10852,7 @@ index 175e3ab5..dec0fb9f 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 { +@@ -3362,7 +3362,7 @@ namespace std::chrono { \pnum \tcode{file_clock} is an alias for a type @@ -10870,7 +10861,7 @@ index 175e3ab5..dec0fb9f 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, +@@ -3965,8 +3965,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. @@ -10881,7 +10872,7 @@ index 175e3ab5..dec0fb9f 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, +@@ -4258,8 +4258,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. @@ -10892,7 +10883,7 @@ index 175e3ab5..dec0fb9f 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 { +@@ -4568,8 +4568,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. @@ -10903,7 +10894,7 @@ index 175e3ab5..dec0fb9f 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 +@@ -4923,10 +4923,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. @@ -10916,7 +10907,7 @@ index 175e3ab5..dec0fb9f 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 { +@@ -5506,8 +5506,8 @@ namespace std::chrono { \pnum \tcode{month_day} represents a specific day of a specific month, but with an unspecified year. @@ -10927,7 +10918,7 @@ index 175e3ab5..dec0fb9f 100644 \pnum \tcode{month_day} is a trivially copyable and standard-layout class type. -@@ -6013,8 +6013,8 @@ namespace std::chrono { +@@ -6007,8 +6007,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}. @@ -10938,7 +10929,7 @@ index 175e3ab5..dec0fb9f 100644 \pnum \tcode{year_month} is a trivially copyable and standard-layout class type. -@@ -6369,8 +6369,8 @@ but not \tcode{days}-oriented arithmetic. +@@ -6363,8 +6363,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} @@ -10949,7 +10940,7 @@ index 175e3ab5..dec0fb9f 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. +@@ -6824,8 +6824,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} @@ -10960,7 +10951,7 @@ index 175e3ab5..dec0fb9f 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. +@@ -7195,7 +7195,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} @@ -10969,7 +10960,7 @@ index 175e3ab5..dec0fb9f 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. +@@ -7588,7 +7588,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} @@ -10978,7 +10969,7 @@ index 175e3ab5..dec0fb9f 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. +@@ -8838,7 +8838,7 @@ The \tcode{tzdb_list} object contains a list of \tcode{tzdb} objects. \pnum \tcode{tzdb_list::const_iterator} is a constant iterator @@ -10987,7 +10978,7 @@ index 175e3ab5..dec0fb9f 100644 and has a value type of \tcode{tzdb}. \indexlibrarymember{front}{tzdb_list}% -@@ -11555,7 +11555,7 @@ template<> struct hash; +@@ -11549,7 +11549,7 @@ template<> struct hash; The specializations are enabled\iref{unord.hash}. \begin{note} All the \tcode{hash} specializations listed above meet the @@ -10997,7 +10988,7 @@ index 175e3ab5..dec0fb9f 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index 58252722..e9676caf 100644 +index abe9bd67..bcfb38a3 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -258,9 +258,9 @@ template @@ -11048,7 +11039,7 @@ index 58252722..e9676caf 100644 with a member typedef \tcode{type} that names the type \tcode{add_const_t}. \pnum -@@ -3118,7 +3118,7 @@ template +@@ -3124,7 +3124,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -11057,7 +11048,7 @@ index 58252722..e9676caf 100644 \pnum \begin{note} -@@ -4004,7 +4004,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); +@@ -4010,7 +4010,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11066,7 +11057,7 @@ index 58252722..e9676caf 100644 \pnum \effects -@@ -4061,7 +4061,7 @@ using const_iterator = @\impdef@; +@@ -4067,7 +4067,7 @@ using const_iterator = @\impdef@; \pnum These types model \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, @@ -11075,7 +11066,7 @@ index 58252722..e9676caf 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 -@@ -5046,7 +5046,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5056,7 +5056,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} @@ -11084,7 +11075,7 @@ index 58252722..e9676caf 100644 \end{note} \pnum -@@ -5237,7 +5237,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5247,7 +5247,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} @@ -11093,7 +11084,7 @@ index 58252722..e9676caf 100644 \end{note} \pnum -@@ -5732,7 +5732,7 @@ is nested within\iref{intro.object} the +@@ -5742,7 +5742,7 @@ is nested within\iref{intro.object} the \pnum All types in \tcode{Types} shall meet @@ -11102,7 +11093,7 @@ index 58252722..e9676caf 100644 \pnum A program that instantiates the definition of \tcode{variant} with -@@ -6412,7 +6412,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); +@@ -6422,7 +6422,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11111,7 +11102,7 @@ index 58252722..e9676caf 100644 \pnum \effects -@@ -6457,7 +6457,7 @@ template struct variant_size; +@@ -6467,7 +6467,7 @@ template struct variant_size; \begin{itemdescr} \pnum All specializations of \tcode{variant_size} meet the @@ -11120,7 +11111,7 @@ index 58252722..e9676caf 100644 with a base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -6470,7 +6470,7 @@ template struct variant_size; +@@ -6480,7 +6480,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 @@ -11129,7 +11120,7 @@ index 58252722..e9676caf 100644 base characteristic of \tcode{integral_constant}. \end{itemdescr} -@@ -6490,7 +6490,7 @@ template struct variant_alternative; +@@ -6500,7 +6500,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 @@ -11138,7 +11129,7 @@ index 58252722..e9676caf 100644 member typedef \tcode{type} that names the type \tcode{add_const_t}. \end{itemdescr} -@@ -7218,7 +7218,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. +@@ -7228,7 +7228,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. \pnum \expects @@ -11147,7 +11138,7 @@ index 58252722..e9676caf 100644 \pnum \effects -@@ -7246,7 +7246,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7256,7 +7256,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11156,7 +11147,7 @@ index 58252722..e9676caf 100644 \pnum \effects -@@ -7279,7 +7279,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7289,7 +7289,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11165,7 +11156,7 @@ index 58252722..e9676caf 100644 \pnum \effects -@@ -7364,7 +7364,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7374,7 +7374,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11174,7 +11165,7 @@ index 58252722..e9676caf 100644 \pnum \effects -@@ -7399,7 +7399,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7409,7 +7409,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11183,7 +11174,7 @@ index 58252722..e9676caf 100644 \pnum \effects -@@ -7443,7 +7443,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7453,7 +7453,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11192,7 +11183,7 @@ index 58252722..e9676caf 100644 \pnum \effects -@@ -8149,9 +8149,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -8159,9 +8159,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 @@ -11204,7 +11195,7 @@ index 58252722..e9676caf 100644 \rSec3[expected.object.cons]{Constructors} -@@ -9391,7 +9391,7 @@ template friend constexpr bool operator==(const expected& x, const T2& +@@ -9401,7 +9401,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} @@ -11213,7 +11204,7 @@ index 58252722..e9676caf 100644 \end{note} \pnum -@@ -9528,7 +9528,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -9538,7 +9538,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum \tcode{E} shall meet the requirements of @@ -11222,7 +11213,7 @@ index 58252722..e9676caf 100644 \rSec3[expected.void.cons]{Constructors} -@@ -11553,8 +11553,8 @@ is ill-formed. +@@ -11563,8 +11563,8 @@ is ill-formed. \indextext{call wrapper}% \indextext{call wrapper!simple}% \indextext{call wrapper!forwarding}% @@ -11233,7 +11224,7 @@ index 58252722..e9676caf 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. -@@ -11594,7 +11594,7 @@ with references as described in the corresponding forwarding steps. +@@ -11604,7 +11604,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 @@ -11242,7 +11233,7 @@ index 58252722..e9676caf 100644 and whose copy constructor, move constructor, and assignment operators are constexpr functions that do not throw exceptions. -@@ -11697,7 +11697,7 @@ namespace std { +@@ -11707,7 +11707,7 @@ namespace std { \end{codeblock} \pnum @@ -11251,7 +11242,7 @@ index 58252722..e9676caf 100644 around a reference to an object or function of type \tcode{T}. \pnum -@@ -13151,7 +13151,7 @@ is \tcode{true}. +@@ -13161,7 +13161,7 @@ is \tcode{true}. \pnum \expects @@ -11260,7 +11251,7 @@ index 58252722..e9676caf 100644 \pnum \returns -@@ -13237,10 +13237,10 @@ is \tcode{true}. +@@ -13247,10 +13247,10 @@ is \tcode{true}. \pnum \expects @@ -11273,7 +11264,7 @@ index 58252722..e9676caf 100644 \pnum \returns -@@ -13306,7 +13306,7 @@ then \tcode{f != nullptr} is \tcode{true}. +@@ -13316,7 +13316,7 @@ then \tcode{f != nullptr} is \tcode{true}. \pnum \expects For each $\tcode{T}_i$ in \tcode{BoundArgs}, @@ -11282,7 +11273,7 @@ index 58252722..e9676caf 100644 \pnum \returns -@@ -13351,7 +13351,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. +@@ -13361,7 +13361,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. \pnum Specializations of the \tcode{is_bind_expression} template shall meet @@ -11291,7 +11282,7 @@ index 58252722..e9676caf 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}. -@@ -13387,7 +13387,7 @@ The function template \tcode{bind} uses +@@ -13397,7 +13397,7 @@ The function template \tcode{bind} uses \pnum Specializations of the \tcode{is_placeholder} template shall meet @@ -11300,7 +11291,7 @@ index 58252722..e9676caf 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 -@@ -13437,7 +13437,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> +@@ -13447,7 +13447,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 @@ -11309,7 +11300,7 @@ index 58252722..e9676caf 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 -@@ -13473,8 +13473,8 @@ the state entities of \tcode{g}. +@@ -13483,8 +13483,8 @@ the state entities of \tcode{g}. \pnum \begin{note} If all of \tcode{FD} and $\tcode{TD}_i$ meet @@ -11320,7 +11311,7 @@ index 58252722..e9676caf 100644 \end{note} \end{itemdescr} -@@ -13543,13 +13543,13 @@ The number \tcode{\placeholder{M}} of placeholders is +@@ -13553,13 +13553,13 @@ The number \tcode{\placeholder{M}} of placeholders is \impldef{number of placeholders for bind expressions}. \pnum @@ -11337,7 +11328,7 @@ index 58252722..e9676caf 100644 but if so, their copy assignment operators are constexpr functions that do not throw exceptions. -@@ -13817,7 +13817,7 @@ Let \tcode{FD} be \tcode{decay_t}. +@@ -13827,7 +13827,7 @@ Let \tcode{FD} be \tcode{decay_t}. \pnum \expects @@ -11346,7 +11337,7 @@ index 58252722..e9676caf 100644 \pnum \ensures -@@ -14242,9 +14242,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14252,9 +14252,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11358,7 +11349,7 @@ index 58252722..e9676caf 100644 \pnum \ensures -@@ -14294,9 +14294,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14304,9 +14304,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11370,7 +11361,7 @@ index 58252722..e9676caf 100644 \pnum \ensures -@@ -14336,9 +14336,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14346,9 +14346,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11382,7 +11373,7 @@ index 58252722..e9676caf 100644 \pnum \ensures -@@ -14660,8 +14660,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14670,8 +14670,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11393,7 +11384,7 @@ index 58252722..e9676caf 100644 \pnum \ensures -@@ -14716,8 +14716,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14726,8 +14726,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11404,7 +11395,7 @@ index 58252722..e9676caf 100644 \pnum \ensures -@@ -14762,8 +14762,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14772,8 +14772,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11415,7 +11406,7 @@ index 58252722..e9676caf 100644 \pnum \ensures -@@ -15278,7 +15278,7 @@ provided to the function call operator. +@@ -15290,7 +15290,7 @@ provided to the function call operator. \pnum Each specialization of a class template specified in \ref{func.search} @@ -11424,7 +11415,7 @@ index 58252722..e9676caf 100644 Template parameters named \begin{itemize} \item \tcode{ForwardIterator}, -@@ -15292,7 +15292,7 @@ Template parameters named +@@ -15304,7 +15304,7 @@ Template parameters named of templates specified in \ref{func.search} shall meet the same requirements and semantics as specified in \ref{algorithms.general}. @@ -11433,7 +11424,7 @@ index 58252722..e9676caf 100644 requirements (\tref{cpp17.hash}). \pnum -@@ -15401,9 +15401,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, +@@ -15413,9 +15413,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, \pnum \expects The value type of \tcode{RandomAccessIterator1} meets @@ -11446,7 +11437,7 @@ index 58252722..e9676caf 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15502,8 +15502,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, +@@ -15514,8 +15514,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, \begin{itemdescr} \pnum \expects @@ -11457,7 +11448,7 @@ index 58252722..e9676caf 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15576,7 +15576,7 @@ as the default hash function. +@@ -15588,7 +15588,7 @@ as the default hash function. Each specialization of \tcode{hash} is either enabled or disabled, as described below. \begin{note} @@ -11466,7 +11457,7 @@ index 58252722..e9676caf 100644 disabled specializations do not. \end{note} Each header that declares the template \tcode{hash} -@@ -15603,17 +15603,17 @@ Disabled specializations of \tcode{hash} +@@ -15615,17 +15615,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 @@ -11493,7 +11484,7 @@ index 58252722..e9676caf 100644 2.43.0 -From 3b3c19914f00afbebee29eddb016865e6d6ddbfa Mon Sep 17 00:00:00 2001 +From 6d3783559d80dcb25e603125353d93fa05567811 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. @@ -11507,14 +11498,14 @@ Subject: [PATCH 9/9] Remove awkward \linebreaks. source/numerics.tex | 4 ++-- source/ranges.tex | 38 +++++++++++++++---------------- source/threads.tex | 8 +++---- - source/utilities.tex | 10 ++++---- - 9 files changed, 68 insertions(+), 69 deletions(-) + source/utilities.tex | 8 +++---- + 9 files changed, 67 insertions(+), 68 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index c196ba1b..4de0042f 100644 +index 23502107..15374649 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -7070,7 +7070,7 @@ Let: +@@ -7072,7 +7072,7 @@ Let: \tcode{invoke(op, invoke(proj, *(first1 + (i - result))))} for unary transforms defined in namespace \tcode{ranges}; \item @@ -11523,7 +11514,7 @@ index c196ba1b..4de0042f 100644 for binary transforms defined in namespace \tcode{ranges}. \end{itemize} \end{itemize} -@@ -14191,7 +14191,7 @@ namespace ranges { +@@ -14185,7 +14185,7 @@ namespace ranges { \pnum \constraints \tcode{is_unbounded_array_v} is \tcode{false}. @@ -11533,10 +11524,10 @@ index c196ba1b..4de0042f 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index 2f5de6f4..b8a1871a 100644 +index 7053f174..0e9a3e38 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 @@ -11545,7 +11536,7 @@ index 2f5de6f4..b8a1871a 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. +@@ -1833,7 +1833,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 @@ -11554,7 +11545,7 @@ index 2f5de6f4..b8a1871a 100644 an implementation should not perform any reallocation. \end{itemdescr} -@@ -2444,8 +2444,7 @@ calling \tcode{ator_traits::template rebind_traits::dealloc +@@ -2449,8 +2449,7 @@ calling \tcode{ator_traits::template rebind_traits::dealloc Assigns \tcode{nh.ptr_} to \tcode{ptr_}. \item If \tcode{!alloc\textunderscore} or \tcode{ator_traits::propagate_on_container_move_assignment::value} @@ -11564,7 +11555,7 @@ index 2f5de6f4..b8a1871a 100644 \item Assigns \keyword{nullptr} to \tcode{nh.ptr_} and assigns \tcode{nullopt} to -@@ -7468,14 +7467,14 @@ template +@@ -7473,14 +7472,14 @@ template \pnum \expects \tcode{T} is \oldconcept{EmplaceConstructible} into \tcode{forward_list} @@ -11581,7 +11572,7 @@ index 2f5de6f4..b8a1871a 100644 \pnum \returns -@@ -10634,7 +10633,7 @@ template +@@ -10639,7 +10638,7 @@ template \pnum The expression \tcode{\exposid{is-vector-bool-reference}} is \tcode{true} @@ -11590,7 +11581,7 @@ index 2f5de6f4..b8a1871a 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. +@@ -12031,7 +12030,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)), @@ -11599,7 +11590,7 @@ index 2f5de6f4..b8a1871a 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 +@@ -17517,7 +17516,7 @@ template \pnum \effects Equivalent to \tcode{flat_map(sorted_unique, key_cont, mapped_cont)} and @@ -11608,7 +11599,7 @@ index 2f5de6f4..b8a1871a 100644 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); +@@ -17701,7 +17700,7 @@ template constexpr pair emplace(Args&&... args); \pnum \effects Initializes an object \tcode{t} of type \tcode{pair} @@ -11617,7 +11608,7 @@ index 2f5de6f4..b8a1871a 100644 if the map already contains an element whose key is equivalent to \tcode{t.first}, \tcode{*this} is unchanged. -@@ -17951,7 +17950,7 @@ template +@@ -17957,7 +17956,7 @@ template \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11626,7 +11617,7 @@ index 2f5de6f4..b8a1871a 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18006,7 +18005,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. +@@ -18012,7 +18011,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}, @@ -11635,7 +11626,7 @@ index 2f5de6f4..b8a1871a 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18620,14 +18619,14 @@ template +@@ -18626,14 +18625,14 @@ template \pnum \effects Equivalent to \tcode{flat_multimap(key_cont, mapped_cont)} and @@ -11652,7 +11643,7 @@ index 2f5de6f4..b8a1871a 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -23188,7 +23187,7 @@ is representable as a value of type \tcode{index_type.} +@@ -23194,7 +23193,7 @@ is representable as a value of type \tcode{index_type.} \item If \exposid{rank_} is greater than one, then the product of @@ -11661,7 +11652,7 @@ index 2f5de6f4..b8a1871a 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}. -@@ -23267,7 +23266,7 @@ template +@@ -23273,7 +23272,7 @@ template \item If \exposid{rank_} is greater than \tcode{1} and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11670,7 +11661,7 @@ index 2f5de6f4..b8a1871a 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(0))) -@@ -23335,7 +23334,7 @@ is \tcode{true}. +@@ -23341,7 +23340,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11679,7 +11670,7 @@ index 2f5de6f4..b8a1871a 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(0))) -@@ -23733,7 +23732,7 @@ Implementations should not store this value +@@ -23739,7 +23738,7 @@ Implementations should not store this value if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. \begin{note} Using \tcode{extents} @@ -11688,7 +11679,7 @@ index 2f5de6f4..b8a1871a 100644 would achieve this. \end{note} \end{itemdescr} -@@ -23816,13 +23815,13 @@ is representable as a value of type \tcode{index_type}. +@@ -23822,13 +23821,13 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -11704,7 +11695,7 @@ index 2f5de6f4..b8a1871a 100644 \end{itemize} \pnum -@@ -23895,7 +23894,7 @@ template +@@ -23901,7 +23900,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11713,7 +11704,7 @@ index 2f5de6f4..b8a1871a 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -23963,7 +23962,7 @@ is \tcode{true}. +@@ -23969,7 +23968,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11722,7 +11713,7 @@ index 2f5de6f4..b8a1871a 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) -@@ -25622,7 +25621,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, +@@ -25628,7 +25627,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 @@ -11731,7 +11722,7 @@ index 2f5de6f4..b8a1871a 100644 \item otherwise, \tcode{stride($k$)}. \end{itemize} -@@ -26020,11 +26019,11 @@ is well-formed when treated as an unevaluated operand. +@@ -26026,11 +26025,11 @@ is well-formed when treated as an unevaluated operand. \begin{itemize} \item \tcode{decltype(submdspan_mapping(src.mapping(), slices...))} @@ -11745,7 +11736,7 @@ index 2f5de6f4..b8a1871a 100644 is \tcode{true}. \item -@@ -26054,11 +26053,11 @@ all of the following are \tcode{true}: +@@ -26060,11 +26059,11 @@ all of the following are \tcode{true}: \item $0 \le \tcode{\exposid{first_}(slices...)}$ $\le \tcode{\exposid{last_}<$k$>(src.extents(), slices...)}$ @@ -11760,7 +11751,7 @@ index 2f5de6f4..b8a1871a 100644 \item diff --git a/source/exec.tex b/source/exec.tex -index f4136f9b..dc1f2a5e 100644 +index a8d4d24a..23646135 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -3244,7 +3244,7 @@ except that \tcode{sch} is evaluated only once. @@ -11849,7 +11840,7 @@ index eddd5794..ceadf294 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index e7f1ce51..2f732db9 100644 +index 1a731050..b727a291 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -2534,7 +2534,7 @@ present as follows: @@ -11862,10 +11853,10 @@ index e7f1ce51..2f732db9 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index 7d576b59..90da4b4c 100644 +index 6651e2d3..8d3ac385 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -13807,7 +13807,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. +@@ -13793,7 +13793,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -11874,7 +11865,7 @@ index 7d576b59..90da4b4c 100644 \pnum \returns -@@ -14013,7 +14013,7 @@ template +@@ -13999,7 +13999,7 @@ template \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -11884,7 +11875,7 @@ index 7d576b59..90da4b4c 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index cd516a76..74722f48 100644 +index 095b3aca..380a7035 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -12038,10 +12029,10 @@ index cd516a76..74722f48 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index 277d15be..63ce5eb2 100644 +index 7b9503eb..e28c8648 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -3528,7 +3528,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, +@@ -3465,7 +3465,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12050,7 +12041,7 @@ index 277d15be..63ce5eb2 100644 \pnum \effects -@@ -4803,7 +4803,7 @@ For the \tcode{volatile} overload of this function, +@@ -4740,7 +4740,7 @@ For the \tcode{volatile} overload of this function, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12059,7 +12050,7 @@ index 277d15be..63ce5eb2 100644 \pnum \effects -@@ -6327,7 +6327,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de +@@ -6264,7 +6264,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12068,7 +12059,7 @@ index 277d15be..63ce5eb2 100644 \pnum \effects -@@ -6643,7 +6643,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire +@@ -6580,7 +6580,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12078,7 +12069,7 @@ index 277d15be..63ce5eb2 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index e9676caf..a9cda918 100644 +index bcfb38a3..895df40f 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -2062,7 +2062,7 @@ equals \tcode{tuple_size_v>}, @@ -12090,16 +12081,16 @@ index e9676caf..a9cda918 100644 \tcode{true}, and \item -@@ -3075,7 +3075,7 @@ struct basic_common_reference { - denotes a type. - \end{itemize} +@@ -3078,7 +3078,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}% -@@ -4069,7 +4069,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and +@@ -4075,7 +4075,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and \pnum All requirements on container iterators\iref{container.reqmts} apply to @@ -12108,7 +12099,7 @@ index e9676caf..a9cda918 100644 \pnum Any operation that initializes or destroys the contained value of an optional object invalidates all iterators into that object. -@@ -8977,7 +8977,7 @@ constexpr const T&& value() const &&; +@@ -8987,7 +8987,7 @@ constexpr const T&& value() const &&; \pnum \mandates \tcode{is_copy_constructible_v} is \tcode{true} and @@ -12117,15 +12108,6 @@ index e9676caf..a9cda918 100644 \pnum \returns -@@ -14990,7 +14990,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. - - \rSec4[func.wrap.ref.ctor]{Constructors and assignment operators} -- 2.43.0 diff --git a/lastbuild.sig b/lastbuild.sig index 05dd9fbad2..640e9ffbd0 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ -htmlgen 42983f240e7a7623a03d34a83eca3c064c920c8b -draft ad99d5224a03821bcff46081195fed20f0afee31 -d8a803d15bc7d0de5e7f258de00e278cf6d12d98 htmlgen.patch +htmlgen eee5307c45c04761ef5c27956cbed742e08e5fb4 +draft 98ce5ac6fbce2338787adb9b1c842fcf8ebab37c +c312e8aec5bdafb199f3b0f435fd63c3599f2f4a htmlgen.patch From a56d897df82063c9cdf737a11442d0892a7d9c5f Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Mon, 15 Dec 2025 13:14:02 -0600 Subject: [PATCH 08/18] Update --- cxxdraft-htmlgen | 2 +- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 1929 ++++++++++++++++++++++------------------------ lastbuild.sig | 6 +- 5 files changed, 913 insertions(+), 1028 deletions(-) diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen index 42983f240e..28b6c103f5 160000 --- a/cxxdraft-htmlgen +++ b/cxxdraft-htmlgen @@ -1 +1 @@ -Subproject commit 42983f240e7a7623a03d34a83eca3c064c920c8b +Subproject commit 28b6c103f58b9b4305a7d15b224212f1727b7b05 diff --git a/draft b/draft index 98ce5ac6fb..1d9fdb066e 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 98ce5ac6fbce2338787adb9b1c842fcf8ebab37c +Subproject commit 1d9fdb066e95b7be58881f24977a20a51359097c diff --git a/gh-pages b/gh-pages index 6e7f49b523..551bd11729 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 6e7f49b52300f5cb2d5712e54af118633853b4c0 +Subproject commit 551bd117291a90dabe2194bbb6f3967c9ec73a22 diff --git a/htmlgen.patch b/htmlgen.patch index d62ff3bb21..650be36ffc 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From 2568c2db9e76e19217920d94caf563bc141db727 Mon Sep 17 00:00:00 2001 +From 25fa7a16a3a954e36753a09d8ad05ef0916ce6e3 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,7 +10,7 @@ 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 78a03978..7a83b32c 100644 +index c427e154..f34638ff 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -324,7 +324,7 @@ Given @@ -22,7 +22,7 @@ index 78a03978..7a83b32c 100644 }; int main() { -@@ -2626,23 +2626,23 @@ namespace AB { +@@ -2628,23 +2628,23 @@ namespace AB { void h() { @@ -59,10 +59,10 @@ index 78a03978..7a83b32c 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 2bfc4057..dcaa4be0 100644 +index ca57b322..ce24309d 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -2924,7 +2924,7 @@ struct s2 { +@@ -2937,7 +2937,7 @@ struct s2 { } auto g() { return [] { @@ -75,7 +75,7 @@ index 2bfc4057..dcaa4be0 100644 2.43.0 -From d57679daa449937dee27051e53c6221259bb8162 Mon Sep 17 00:00:00 2001 +From 73205525edfade93e41de3375de335f395e6e18d 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. @@ -87,7 +87,7 @@ Subject: [PATCH 2/9] Use new link macros. source/compatibility.tex | 4 +- source/concepts.tex | 12 +- source/containers.tex | 50 ++++---- - source/declarations.tex | 69 +++++----- + source/declarations.tex | 67 +++++----- source/diagnostics.tex | 6 +- source/exceptions.tex | 36 +++--- source/expressions.tex | 266 ++++++++++++++++++++------------------- @@ -98,7 +98,7 @@ Subject: [PATCH 2/9] Use new link macros. source/lex.tex | 6 +- source/lib-intro.tex | 71 +++++------ source/limits.tex | 2 +- - source/numerics.tex | 60 +++++---- + source/numerics.tex | 55 ++++---- source/overloading.tex | 64 +++++----- source/preprocessor.tex | 14 +-- source/statements.tex | 30 ++--- @@ -108,10 +108,10 @@ Subject: [PATCH 2/9] Use new link macros. source/threads.tex | 45 ++++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 606 insertions(+), 615 deletions(-) + 27 files changed, 602 insertions(+), 612 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index c6ea2cd6..9b4a8075 100644 +index 74ac223b..5bf27eb7 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -123,7 +123,7 @@ index c6ea2cd6..9b4a8075 100644 \pnum The following subclauses describe components for -@@ -10224,7 +10224,7 @@ In either case, twice as many projections as comparisons. +@@ -10243,7 +10243,7 @@ In either case, twice as many projections as comparisons. \pnum \remarks @@ -133,7 +133,7 @@ index c6ea2cd6..9b4a8075 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index 7a83b32c..4d017537 100644 +index f34638ff..ac68557f 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -162,7 +162,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -181,7 +181,7 @@ index 7a83b32c..4d017537 100644 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 -@@ -411,16 +411,15 @@ the set contains the potential results of $E_1$. +@@ -412,16 +412,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 +202,7 @@ index 7a83b32c..4d017537 100644 contains the potential results of the right operand. \item Otherwise, the set is empty. \end{itemize} -@@ -582,8 +581,8 @@ implicitly-defined +@@ -583,8 +582,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 +213,7 @@ index 7a83b32c..4d017537 100644 \pnum A local entity\iref{basic.pre} -@@ -655,7 +654,7 @@ void h() { +@@ -656,7 +655,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 +222,7 @@ index 7a83b32c..4d017537 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}, -@@ -703,9 +702,9 @@ The rules for declarations and expressions +@@ -704,9 +703,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 +235,7 @@ index 7a83b32c..4d017537 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 -@@ -725,7 +724,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or +@@ -726,7 +725,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,7 +244,7 @@ index 7a83b32c..4d017537 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 -@@ -780,7 +779,7 @@ template specializations\iref{temp.spec.partial.match}, except that a name can r +@@ -781,7 +780,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}, @@ -253,7 +253,7 @@ index 7a83b32c..4d017537 100644 \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} -@@ -2919,7 +2918,7 @@ are attached to the same module. +@@ -2921,7 +2920,7 @@ are attached to the same module. \indextext{linkage!\idxcode{inline} and}% \indextext{\idxcode{inline}!linkage of}% The name of an entity @@ -262,7 +262,7 @@ index 7a83b32c..4d017537 100644 has internal linkage if it is the name of \begin{itemize} \item -@@ -2960,7 +2959,7 @@ typedef declaration in which the class has the typedef name for linkage +@@ -2962,7 +2961,7 @@ typedef declaration in which the class has the typedef name for linkage purposes\iref{dcl.typedef}; or \item \indextext{enumeration!linkage of}% @@ -271,7 +271,7 @@ index 7a83b32c..4d017537 100644 in a typedef declaration in which the enumeration has the typedef name for linkage purposes\iref{dcl.typedef}; or \item an unnamed enumeration -@@ -3036,7 +3035,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. +@@ -3038,7 +3037,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 @@ -280,7 +280,7 @@ index 7a83b32c..4d017537 100644 linkage. \pnum -@@ -3394,8 +3393,8 @@ features of the language, such as references and virtual functions, might +@@ -3397,8 +3396,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} @@ -291,7 +291,7 @@ index 7a83b32c..4d017537 100644 locations without interfering with each other. \pnum -@@ -3439,15 +3438,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but +@@ -3442,15 +3441,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 @@ -310,7 +310,7 @@ index 7a83b32c..4d017537 100644 and in its period of destruction\iref{class.cdtor}. \begin{note} -@@ -3577,7 +3576,7 @@ A \defn{potentially-overlapping subobject} is either: +@@ -3584,7 +3583,7 @@ A \defn{potentially-overlapping subobject} is either: \begin{itemize} \item a base class subobject, or \item a non-static data member @@ -319,7 +319,7 @@ index 7a83b32c..4d017537 100644 \end{itemize} \pnum -@@ -3598,7 +3597,7 @@ Otherwise, the circumstances under which the object has zero size +@@ -3605,7 +3604,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}% @@ -328,7 +328,7 @@ index 7a83b32c..4d017537 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 -@@ -4174,16 +4173,16 @@ the result of the evaluation is the value so produced but is not erroneous: +@@ -4198,16 +4197,16 @@ the result of the evaluation is that erroneous value: is produced by the evaluation of: \begin{itemize} \item @@ -348,7 +348,7 @@ index 7a83b32c..4d017537 100644 \end{itemize} then the result of the operation is an indeterminate value or that erroneous value, respectively. -@@ -4374,8 +4373,8 @@ specified in~\ref{class.copy.elision}. +@@ -4398,8 +4397,8 @@ specified in~\ref{class.copy.elision}. \indextext{storage duration!dynamic|(} \pnum @@ -359,7 +359,7 @@ index 7a83b32c..4d017537 100644 \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -@@ -4539,9 +4538,9 @@ that would match a handler\iref{except.handle} of type +@@ -4563,9 +4562,9 @@ that would match a handler\iref{except.handle} of type \tcode{std::bad_alloc}\iref{bad.alloc}. \pnum @@ -372,7 +372,7 @@ index 7a83b32c..4d017537 100644 a coroutine state\iref{dcl.fct.def.coroutine}, or called indirectly through calls to the functions in the \Cpp{} standard library. -@@ -5047,9 +5046,9 @@ shall be destroyed before +@@ -5090,9 +5089,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. @@ -385,7 +385,7 @@ index 7a83b32c..4d017537 100644 \end{note} \pnum -@@ -5223,7 +5222,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, +@@ -5266,7 +5265,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, pointer types, pointer-to-member types\iref{basic.compound}, \tcode{std::meta::\brk{}info}, \tcode{std::nullptr_t}, and @@ -394,7 +394,7 @@ index 7a83b32c..4d017537 100644 types are collectively called \defnadjx{scalar}{types}{type}. \label{term.trivially.copyable.type}% -@@ -5257,7 +5256,7 @@ A type is a \defnadj{literal}{type} if it is: +@@ -5291,7 +5290,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 @@ -403,7 +403,7 @@ index 7a83b32c..4d017537 100644 has all of the following properties: \begin{itemize} \item it has a constexpr destructor\iref{dcl.constexpr}, -@@ -5291,8 +5290,8 @@ will be usable in a constant expression. +@@ -5325,8 +5324,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, @@ -413,8 +413,8 @@ index 7a83b32c..4d017537 100644 +\deflinkx{layout-compatible standard-layout class types}{layout-compatible!class}{class.mem}. \pnum - A type is \defn{consteval-only} if it is either -@@ -5849,7 +5848,7 @@ ordinary pointers to objects or functions. + A type is \defn{consteval-only} if it is +@@ -5896,7 +5895,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 @@ -423,7 +423,7 @@ index 7a83b32c..4d017537 100644 \end{itemize} \pnum -@@ -5927,7 +5926,7 @@ layout-compatible types shall +@@ -5974,7 +5973,7 @@ layout-compatible types shall have the same value representation and alignment requirements\iref{basic.align}. \begin{note} @@ -432,7 +432,7 @@ index 7a83b32c..4d017537 100644 representation, but their range of valid values is restricted by the extended alignment requirement. \end{note} -@@ -6242,8 +6241,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. +@@ -6289,8 +6288,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. \indextext{program execution|(} \pnum @@ -443,7 +443,7 @@ index 7a83b32c..4d017537 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). -@@ -6288,7 +6287,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, +@@ -6335,7 +6334,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 @@ -452,7 +452,7 @@ index 7a83b32c..4d017537 100644 the constituent expressions of each default argument\iref{dcl.fct.default} used in the call, or \item -@@ -6319,7 +6318,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope +@@ -6366,7 +6365,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope A \defn{full-expression} is \begin{itemize} \item @@ -462,10 +462,10 @@ index 7a83b32c..4d017537 100644 a \grammarterm{constant-expression}\iref{expr.const}, \item diff --git a/source/classes.tex b/source/classes.tex -index 6f1e64c9..259175cd 100644 +index ed746ce9..eaf6e4da 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -275,10 +275,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, @@ -479,7 +479,7 @@ index 6f1e64c9..259175cd 100644 for all non-static data members, \item has no non-standard-layout base classes, -@@ -661,7 +661,7 @@ if it is +@@ -574,7 +574,7 @@ if it is \end{itemize} For any other \grammarterm{member-declaration}, each declared entity @@ -488,7 +488,7 @@ index 6f1e64c9..259175cd 100644 is a member of the class, and each such \grammarterm{member-declaration} shall either -@@ -676,7 +676,7 @@ Nested types are classes\iref{class.name,class.nest} and +@@ -589,7 +589,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}. @@ -497,7 +497,7 @@ index 6f1e64c9..259175cd 100644 are members of the class. \pnum -@@ -822,9 +822,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali +@@ -735,9 +735,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 @@ -509,7 +509,7 @@ index 6f1e64c9..259175cd 100644 that is not a friend declaration. \pnum -@@ -927,7 +927,7 @@ unscoped enumeration type; and +@@ -840,7 +840,7 @@ unscoped enumeration type; and \pnum In addition, if class \tcode{T} has a user-declared @@ -518,7 +518,7 @@ index 6f1e64c9..259175cd 100644 \tcode{T} shall have a name different from \tcode{T}. \pnum -@@ -977,7 +977,7 @@ non-static data members (in any order) have layout-compatible +@@ -890,7 +890,7 @@ non-static data members (in any order) have layout-compatible types\iref{term.layout.compatible.type}. \pnum @@ -527,7 +527,7 @@ index 6f1e64c9..259175cd 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}; -@@ -2303,7 +2303,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation +@@ -2217,7 +2217,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} @@ -536,7 +536,7 @@ index 6f1e64c9..259175cd 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}. -@@ -6404,7 +6404,7 @@ associated with a \grammarterm{try-block} (if there is one), +@@ -6322,7 +6322,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; @@ -546,10 +546,10 @@ index 6f1e64c9..259175cd 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 d0b6bcec..17355dea 100644 +index a0ae25da..3aa1637b 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -2017,8 +2017,8 @@ deallocation functions\iref{expr.new}. +@@ -1990,8 +1990,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 @@ -609,10 +609,10 @@ index 3cbd110a..1722b95c 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index d2db2ed3..71b577a1 100644 +index 2a04fa0e..f3aded8c 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -6121,14 +6121,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. @@ -629,7 +629,7 @@ index d2db2ed3..71b577a1 100644 list-initialized with up to \tcode{N} elements whose types are convertible to \tcode{T}. -@@ -6139,8 +6139,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$. @@ -640,7 +640,7 @@ index d2db2ed3..71b577a1 100644 Descriptions are provided here only for operations on \tcode{array} that are not described in one of these tables and -@@ -6150,13 +6150,13 @@ for operations where there is additional semantic information. +@@ -6154,13 +6154,13 @@ 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} @@ -692,7 +692,7 @@ index d2db2ed3..71b577a1 100644 \end{itemdescr} \indexlibrarymember{reverse}{forward_list}% -@@ -9033,7 +9033,7 @@ A +@@ -9045,7 +9045,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 @@ -701,7 +701,7 @@ index d2db2ed3..71b577a1 100644 fast random access to list elements is not supported, but many algorithms only need sequential access anyway. -@@ -9209,7 +9209,7 @@ namespace std { +@@ -9221,7 +9221,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{list} if the allocator meets the @@ -710,7 +710,7 @@ index d2db2ed3..71b577a1 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{list} is referenced. -@@ -9622,7 +9622,7 @@ applications of the corresponding predicate. +@@ -9634,7 +9634,7 @@ applications of the corresponding predicate. \pnum \remarks @@ -719,7 +719,7 @@ index d2db2ed3..71b577a1 100644 \end{itemdescr} \indexlibrarymember{unique}{list}% -@@ -9745,7 +9745,7 @@ comparisons, where $N$ is \tcode{size()}. +@@ -9757,7 +9757,7 @@ comparisons, where $N$ is \tcode{size()}. \pnum \remarks @@ -728,7 +728,7 @@ index d2db2ed3..71b577a1 100644 \end{itemdescr} \rSec3[list.erasure]{Erasure} -@@ -9853,7 +9853,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, +@@ -9865,7 +9865,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}, @@ -737,7 +737,7 @@ index d2db2ed3..71b577a1 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} -@@ -9991,7 +9991,7 @@ namespace std { +@@ -10003,7 +10003,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{vector} if the allocator meets the @@ -746,7 +746,7 @@ index d2db2ed3..71b577a1 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{vector} is referenced. -@@ -10584,7 +10584,7 @@ Unless described below, all operations have the same requirements and +@@ -10599,7 +10599,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 @@ -755,7 +755,7 @@ index d2db2ed3..71b577a1 100644 is not used to construct these values. \pnum -@@ -15659,9 +15659,9 @@ and +@@ -15740,9 +15740,9 @@ and can be used to instantiate \tcode{queue}. In particular, @@ -767,7 +767,7 @@ index d2db2ed3..71b577a1 100644 can be used. \begin{codeblock} -@@ -16016,15 +16016,15 @@ and +@@ -16097,15 +16097,15 @@ and can be used to instantiate \tcode{priority_queue}. In particular, @@ -786,7 +786,7 @@ index d2db2ed3..71b577a1 100644 \begin{codeblock} namespace std { -@@ -16569,10 +16569,10 @@ and +@@ -16653,10 +16653,10 @@ and can be used to instantiate \tcode{stack}. In particular, @@ -801,7 +801,7 @@ index d2db2ed3..71b577a1 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index d82e4bcb..74100ed5 100644 +index 510def3e..45030de5 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -837,7 +837,7 @@ index d82e4bcb..74100ed5 100644 In the global module, a function defined within a class definition is implicitly inline\iref{class.mfct,class.friend}. \end{note} -@@ -1295,7 +1295,7 @@ the object referenced is a non-const object and can be modified through +@@ -1288,7 +1288,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 @@ -846,7 +846,7 @@ index d82e4bcb..74100ed5 100644 \end{note} \pnum -@@ -1731,8 +1731,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; +@@ -1724,8 +1724,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; \item otherwise, \tcode{decltype($E$)} is the type of $E$. \end{itemize} @@ -856,7 +856,7 @@ index d82e4bcb..74100ed5 100644 \begin{example} \begin{codeblock} -@@ -1930,7 +1929,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. +@@ -1924,7 +1923,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 @@ -865,7 +865,7 @@ index d82e4bcb..74100ed5 100644 and if the type that replaces the placeholder type is not the same in each deduction, the program is ill-formed. -@@ -2072,7 +2071,7 @@ A function declared with a return type that uses a placeholder type shall not +@@ -2066,7 +2065,7 @@ A function declared with a return type that uses a placeholder type shall not be a coroutine\iref{dcl.fct.def.coroutine}. \pnum @@ -874,16 +874,7 @@ index d82e4bcb..74100ed5 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. -@@ -2184,7 +2183,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$. -@@ -2283,7 +2282,7 @@ in the \grammarterm{type-specifier-seq} +@@ -2281,7 +2280,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} @@ -892,7 +883,7 @@ index d82e4bcb..74100ed5 100644 or as the \grammarterm{type-specifier} in the \grammarterm{parameter-declaration} of a \grammarterm{template-parameter}\iref{temp.param}. -@@ -4490,7 +4489,7 @@ int a; +@@ -4489,7 +4488,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 @@ -901,7 +892,7 @@ index d82e4bcb..74100ed5 100644 \end{codeblock} \end{example} A non-static member shall not be designated in a default argument unless -@@ -6203,15 +6202,15 @@ This requires a conversion +@@ -6214,15 +6213,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 @@ -921,7 +912,7 @@ index d82e4bcb..74100ed5 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7725,7 +7724,7 @@ the initializer is +@@ -7735,7 +7734,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} @@ -930,7 +921,7 @@ index d82e4bcb..74100ed5 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. -@@ -7876,7 +7875,7 @@ is not looked up and is introduced by +@@ -7886,7 +7885,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}, @@ -939,7 +930,7 @@ index d82e4bcb..74100ed5 100644 \pnum \indextext{constant!enumeration}% -@@ -7958,8 +7957,9 @@ If the underlying type is fixed, the type of each enumerator +@@ -7968,8 +7967,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} @@ -951,7 +942,7 @@ index d82e4bcb..74100ed5 100644 If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as -@@ -7968,8 +7968,9 @@ follows: +@@ -7978,8 +7978,9 @@ follows: \begin{itemize} \item If an initializer is specified for an enumerator, the @@ -963,7 +954,7 @@ index d82e4bcb..74100ed5 100644 unscoped enumeration type, the enumerator has the underlying type of that enumeration type, otherwise it has the same type as the expression. -@@ -8041,7 +8042,7 @@ if they have the same underlying type. +@@ -8051,7 +8052,7 @@ if they have the same underlying type. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -972,7 +963,7 @@ index d82e4bcb..74100ed5 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8324,7 +8325,7 @@ appertains to the namespace being defined or extended. +@@ -8334,7 +8335,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 @@ -981,7 +972,7 @@ index d82e4bcb..74100ed5 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 -@@ -9147,7 +9148,7 @@ different language linkages are distinct types even if they are +@@ -9167,7 +9168,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -990,7 +981,7 @@ index d82e4bcb..74100ed5 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9477,18 +9478,18 @@ For each individual attribute, the form of the +@@ -9497,18 +9498,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 @@ -1014,7 +1005,7 @@ index d82e4bcb..74100ed5 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9599,7 +9600,7 @@ declaration, the program is ill-formed. +@@ -9619,7 +9620,7 @@ declaration, the program is ill-formed. \pnum An \grammarterm{alignment-specifier} of the form \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same @@ -1023,7 +1014,7 @@ index d82e4bcb..74100ed5 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9779,7 +9780,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9799,7 +9800,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -1211,7 +1202,7 @@ index 2a4d6d7b..0072f5d6 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index dcaa4be0..9f91843e 100644 +index ce24309d..0d2c5348 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1233,7 +1224,7 @@ index dcaa4be0..9f91843e 100644 \end{note} \pnum -@@ -213,7 +213,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 { @@ -1242,7 +1233,7 @@ index dcaa4be0..9f91843e 100644 }; A&& operator+(A, A); A&& f(); -@@ -269,7 +269,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, @@ -1251,7 +1242,7 @@ index dcaa4be0..9f91843e 100644 applied to convert the expression to an xvalue. \pnum -@@ -452,31 +452,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}. @@ -1294,7 +1285,7 @@ index dcaa4be0..9f91843e 100644 these expressions. \end{itemize} -@@ -615,7 +615,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}% @@ -1303,7 +1294,7 @@ index dcaa4be0..9f91843e 100644 can be converted to a prvalue. \begin{footnote} -@@ -640,18 +640,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 @@ -1328,7 +1319,7 @@ index dcaa4be0..9f91843e 100644 } auto g = f(); int m = g(false); // undefined behavior: access of \tcode{x.n} outside its lifetime -@@ -819,11 +819,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() { @@ -1345,7 +1336,7 @@ index dcaa4be0..9f91843e 100644 } \end{codeblock} \end{note} -@@ -1080,7 +1080,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}% @@ -1354,7 +1345,7 @@ index dcaa4be0..9f91843e 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 @@ -1363,7 +1354,7 @@ index dcaa4be0..9f91843e 100644 Class members declared later are not visible. \begin{example} \begin{codeblock} -@@ -1377,8 +1377,8 @@ meaning, except as otherwise indicated. +@@ -1385,8 +1385,8 @@ meaning, except as otherwise indicated. An \grammarterm{id-expression} is a restricted form of a \grammarterm{primary-expression}. \begin{note} @@ -1374,7 +1365,7 @@ index dcaa4be0..9f91843e 100644 \end{note} \pnum -@@ -1507,7 +1507,7 @@ In each case, the constraints of \tcode{f} are not satisfied. +@@ -1519,7 +1519,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 @@ -1383,7 +1374,7 @@ index dcaa4be0..9f91843e 100644 \end{example} \end{note} -@@ -2126,8 +2126,8 @@ void abssort(float* x, unsigned N) { +@@ -2141,8 +2141,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} @@ -1394,7 +1385,7 @@ index dcaa4be0..9f91843e 100644 \end{note} \pnum -@@ -2462,7 +2462,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 @@ -1403,7 +1394,7 @@ index dcaa4be0..9f91843e 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 -@@ -2571,8 +2571,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, @@ -1414,7 +1405,7 @@ index dcaa4be0..9f91843e 100644 \begin{example} \begin{codeblock} auto Fwd = [](int (*fp)(int), auto a) { return fp(a); }; -@@ -2630,9 +2630,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 @@ -1427,7 +1418,7 @@ index dcaa4be0..9f91843e 100644 \rSec3[expr.prim.lambda.capture]{Captures}% -@@ -3200,7 +3200,7 @@ A fold expression is a pack expansion. +@@ -3213,7 +3213,7 @@ A fold expression is a pack expansion. \pnum A \grammarterm{requires-expression} provides a concise way to express requirements on template arguments @@ -1436,7 +1427,7 @@ index dcaa4be0..9f91843e 100644 or by checking properties of types and expressions. \begin{bnf} -@@ -3780,7 +3780,7 @@ or a prvalue of function pointer type. +@@ -3797,7 +3797,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 @@ -1445,7 +1436,7 @@ index dcaa4be0..9f91843e 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} -@@ -3793,8 +3793,8 @@ an object under construction or destruction. +@@ -3810,8 +3810,8 @@ an object under construction or destruction. \pnum \begin{note} @@ -1456,7 +1447,7 @@ index dcaa4be0..9f91843e 100644 the program is ill-formed. No function is implicitly declared by such a call. \end{note} -@@ -3861,7 +3861,7 @@ function, +@@ -3878,7 +3878,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, @@ -1465,7 +1456,7 @@ index dcaa4be0..9f91843e 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) -@@ -3998,10 +3998,10 @@ pointer parameters. +@@ -4015,10 +4015,10 @@ pointer parameters. \pnum \indextext{declaration!ellipsis in function}% \indextext{parameter list!variable}% @@ -1479,7 +1470,7 @@ index dcaa4be0..9f91843e 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. -@@ -4019,8 +4019,8 @@ thus each such argument has a corresponding parameter when a function template +@@ -4036,8 +4036,8 @@ thus each such argument has a corresponding parameter when a function template specialization is actually called. \end{note} The @@ -1490,7 +1481,7 @@ index dcaa4be0..9f91843e 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}. -@@ -4035,16 +4035,16 @@ an eligible non-trivial move constructor, or +@@ -4052,16 +4052,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 @@ -1512,7 +1503,7 @@ index dcaa4be0..9f91843e 100644 \pnum A function call is an lvalue -@@ -4063,8 +4063,8 @@ except as specified in \ref{dcl.type.decltype}. +@@ -4080,8 +4080,8 @@ except as specified in \ref{dcl.type.decltype}. \indextext{type conversion, explicit|see{casting}}% \indextext{conversion explicit type|see{casting}}% \indextext{casting}% @@ -1523,7 +1514,7 @@ index dcaa4be0..9f91843e 100644 by a parenthesized optional \grammarterm{expression-list} or by a \grammarterm{braced-init-list} (the initializer) -@@ -4075,7 +4075,7 @@ If the type is a placeholder +@@ -4092,7 +4092,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 @@ -1532,7 +1523,7 @@ index dcaa4be0..9f91843e 100644 for the remainder of this subclause. Otherwise, if the type contains a placeholder type, it is replaced by the type -@@ -4470,8 +4470,8 @@ void foo(D* dp) { +@@ -4491,8 +4491,8 @@ void foo(D* dp) { \end{example} \pnum @@ -1543,7 +1534,7 @@ index dcaa4be0..9f91843e 100644 \pnum If \tcode{v} is a null pointer value, the result is a null pointer value. -@@ -4522,9 +4522,9 @@ runtime check \term{fails}. +@@ -4543,9 +4543,9 @@ runtime check \term{fails}. \pnum The value of a failed cast to pointer type is the null pointer value of @@ -1556,7 +1547,7 @@ index dcaa4be0..9f91843e 100644 \indextext{\idxcode{bad_cast}}% \indexlibraryglobal{bad_cast}% -@@ -4613,13 +4613,13 @@ glvalue refers. +@@ -4634,13 +4634,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. @@ -1574,7 +1565,7 @@ index dcaa4be0..9f91843e 100644 \pnum When \keyword{typeid} is applied to a \grammarterm{type-id}, the result -@@ -4713,7 +4713,7 @@ of type \tcode{T1} can be cast to type ``rvalue +@@ -4734,7 +4734,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 @@ -1583,7 +1574,7 @@ index dcaa4be0..9f91843e 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 -@@ -4818,7 +4818,8 @@ Otherwise, the behavior is undefined. +@@ -4839,7 +4839,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}'', @@ -1593,7 +1584,7 @@ index dcaa4be0..9f91843e 100644 from \tcode{B}, if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. -@@ -4839,7 +4840,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} +@@ -4860,7 +4861,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 @@ -1602,7 +1593,7 @@ index dcaa4be0..9f91843e 100644 if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. \begin{note} -@@ -4850,7 +4851,7 @@ If no valid standard conversion +@@ -4871,7 +4872,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. @@ -1611,7 +1602,7 @@ index dcaa4be0..9f91843e 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 -@@ -4873,7 +4874,7 @@ If the original pointer value represents the address +@@ -4894,7 +4895,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} @@ -1620,7 +1611,7 @@ index dcaa4be0..9f91843e 100644 the result is a pointer to \placeholder{b}. Otherwise, the pointer value is unchanged by the conversion. \begin{example} -@@ -4896,8 +4897,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. +@@ -4917,8 +4918,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 @@ -1631,7 +1622,7 @@ index dcaa4be0..9f91843e 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}. -@@ -5066,10 +5067,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type +@@ -5083,10 +5084,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 @@ -1645,7 +1636,7 @@ index dcaa4be0..9f91843e 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 -@@ -5622,7 +5623,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside +@@ -5639,7 +5640,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, @@ -1654,7 +1645,7 @@ index dcaa4be0..9f91843e 100644 \grammarterm{type-id}. \indextext{type!incomplete}% The \keyword{sizeof} operator shall not be applied to an expression that -@@ -5677,7 +5678,7 @@ array-to-pointer\iref{conv.array}, and +@@ -5694,7 +5695,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, @@ -1663,7 +1654,7 @@ index dcaa4be0..9f91843e 100644 is applied. \pnum -@@ -5822,7 +5823,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. +@@ -5839,7 +5840,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. \end{bnf} \pnum @@ -1672,7 +1663,7 @@ index dcaa4be0..9f91843e 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 -@@ -5950,7 +5951,7 @@ is less than zero; +@@ -5967,7 +5968,7 @@ is less than zero; \item its value is such that the size of the allocated object would exceed the @@ -1680,8 +1671,8 @@ index dcaa4be0..9f91843e 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 -@@ -5975,7 +5976,7 @@ is the null pointer value of the required result type; + the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} +@@ -5993,7 +5994,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 @@ -1690,7 +1681,7 @@ index dcaa4be0..9f91843e 100644 \end{itemize} \end{itemize} When the value of the \grammarterm{expression} is zero, the allocation -@@ -6026,8 +6027,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( +@@ -6051,8 +6052,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 @@ -1701,7 +1692,7 @@ index dcaa4be0..9f91843e 100644 is a non-array type, the allocation function's name is \indextext{\idxcode{operator new}}% \indextext{\idxcode{operator delete}}% -@@ -6138,7 +6139,7 @@ the difference between the +@@ -6163,7 +6164,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 @@ -1710,7 +1701,7 @@ index dcaa4be0..9f91843e 100644 is no greater than the size of the array being created. \begin{note} \indextext{allocation!alignment storage}% -@@ -6229,7 +6230,7 @@ invocation of \keyword{new} to another. +@@ -6254,7 +6255,7 @@ invocation of \keyword{new} to another. \pnum \begin{note} Unless an allocation function has a non-throwing @@ -1719,7 +1710,7 @@ index dcaa4be0..9f91843e 100644 it indicates failure to allocate storage by throwing a \indextext{\idxcode{bad_alloc}}% \indexlibraryglobal{bad_alloc}% -@@ -6375,8 +6376,8 @@ to both the allocation and deallocation functions. +@@ -6400,8 +6401,8 @@ to both the allocation and deallocation functions. \pnum \indextext{expression!\idxcode{delete}}% \indextext{\idxcode{delete}}% @@ -1730,7 +1721,7 @@ index dcaa4be0..9f91843e 100644 \grammarterm{new-expression}. \begin{bnf} -@@ -6479,8 +6480,8 @@ null pointer value, then: +@@ -6504,8 +6505,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 @@ -1741,7 +1732,7 @@ index dcaa4be0..9f91843e 100644 allocation call of the \grammarterm{new-expression} shall be passed as the first argument to the deallocation function. -@@ -7063,8 +7064,8 @@ The result of a \tcode{.*} expression +@@ -7090,8 +7091,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. @@ -1752,7 +1743,7 @@ index dcaa4be0..9f91843e 100644 \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -7093,7 +7094,7 @@ left-to-right. +@@ -7120,7 +7121,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 @@ -1761,7 +1752,7 @@ index dcaa4be0..9f91843e 100644 operands and determine the type of the result. \pnum -@@ -7229,7 +7230,7 @@ the behavior is undefined\iref{expr.pre}. +@@ -7251,7 +7252,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 @@ -1770,7 +1761,7 @@ index dcaa4be0..9f91843e 100644 \begin{example} \begin{codeblock} int arr[5] = {1, 2, 3, 4, 5}; -@@ -7320,12 +7321,12 @@ and the other is not, the program is ill-formed. +@@ -7342,12 +7343,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, @@ -1785,7 +1776,7 @@ index dcaa4be0..9f91843e 100644 other than from an integral type to a floating-point type, the program is ill-formed. -@@ -7367,13 +7368,13 @@ the other operand is of object pointer or array type, +@@ -7389,13 +7390,13 @@ the other operand is of object pointer or array type, array-to-pointer conversions\iref{conv.array}, pointer conversions\iref{conv.ptr}, and @@ -1801,7 +1792,7 @@ index dcaa4be0..9f91843e 100644 \end{note} In this case, \tcode{p <=> q} is of type \tcode{std::strong_ordering} and -@@ -7462,7 +7463,7 @@ pointer conversions\iref{conv.ptr}, +@@ -7484,7 +7485,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring @@ -1810,7 +1801,7 @@ index dcaa4be0..9f91843e 100644 After conversions, the operands shall have the same type. \pnum -@@ -7547,10 +7548,10 @@ same type after the specified conversions have been applied. +@@ -7569,10 +7570,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, @@ -1825,7 +1816,7 @@ index dcaa4be0..9f91843e 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -7567,7 +7568,8 @@ the result of the comparison is unspecified. +@@ -7589,7 +7590,8 @@ the result of the comparison is unspecified. \item Otherwise, if the pointers are both null, both point to the same \indextext{address}% @@ -1835,7 +1826,7 @@ index dcaa4be0..9f91843e 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -7612,12 +7614,12 @@ bool b1 = (bx == cx); // unspecified +@@ -7634,12 +7636,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -1850,7 +1841,7 @@ index dcaa4be0..9f91843e 100644 indirection with a hypothetical object of the associated class type were performed, otherwise they compare unequal. \begin{example} -@@ -7857,7 +7859,7 @@ Otherwise, if the second and third operand have different types and +@@ -7879,7 +7881,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 @@ -1859,7 +1850,7 @@ index dcaa4be0..9f91843e 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 -@@ -7899,9 +7901,9 @@ denotes the cv-qualifiers of \tcode{T1}; +@@ -7921,9 +7923,9 @@ denotes the cv-qualifiers of \tcode{T1}; \item otherwise, the target type is the type that \tcode{E2} would have after applying the @@ -1872,7 +1863,7 @@ index dcaa4be0..9f91843e 100644 standard conversions. \end{itemize} \end{itemize} -@@ -7942,8 +7944,8 @@ are used in place of the original operands for the remainder of this +@@ -7964,8 +7966,8 @@ are used in place of the original operands for the remainder of this subclause. \pnum @@ -1883,7 +1874,7 @@ index dcaa4be0..9f91843e 100644 performed on the second and third operands. After those conversions, one of the following shall hold: -@@ -7952,16 +7954,16 @@ of the following shall hold: +@@ -7974,16 +7976,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; @@ -1906,7 +1897,7 @@ index dcaa4be0..9f91843e 100644 pointer type. \item One or both of the second and third operands have pointer-to-member type; -@@ -8145,7 +8147,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. +@@ -8167,7 +8169,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 @@ -1915,7 +1906,7 @@ index dcaa4be0..9f91843e 100644 operand. \pnum -@@ -8159,7 +8161,7 @@ resulting value of the bit-field is +@@ -8181,7 +8183,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 @@ -1924,7 +1915,7 @@ index dcaa4be0..9f91843e 100644 \pnum The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} -@@ -8231,7 +8233,7 @@ The comma operator groups left-to-right. +@@ -8253,7 +8255,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 @@ -1933,7 +1924,7 @@ index dcaa4be0..9f91843e 100644 The left expression is sequenced before the right expression\iref{intro.execution}. \indextext{operator!side effects and comma}% -@@ -8265,7 +8267,7 @@ Certain contexts require expressions that satisfy additional +@@ -8287,7 +8289,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, @@ -1942,7 +1933,7 @@ index dcaa4be0..9f91843e 100644 are called constant expressions. \begin{note} Constant expressions can be evaluated -@@ -8446,9 +8448,9 @@ a temporary object of non-volatile const-qualified literal type +@@ -8450,9 +8452,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 @@ -1954,7 +1945,7 @@ index dcaa4be0..9f91843e 100644 \item a non-mutable subobject of any of the above, or \item -@@ -8539,7 +8541,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. +@@ -8543,7 +8545,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -1963,7 +1954,7 @@ index dcaa4be0..9f91843e 100644 it is applied to \begin{itemize} \item -@@ -8561,7 +8563,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -8565,7 +8567,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 @@ -1972,7 +1963,7 @@ index dcaa4be0..9f91843e 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -8934,7 +8936,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -8949,7 +8951,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}, @@ -1981,7 +1972,7 @@ index dcaa4be0..9f91843e 100644 \end{note} \pnum -@@ -9436,7 +9438,7 @@ if it is: +@@ -9455,7 +9457,7 @@ if it is: a manifestly constant-evaluated expression, \item @@ -1990,7 +1981,7 @@ index dcaa4be0..9f91843e 100644 \item an immediate subexpression of a \grammarterm{braced-init-list}, -@@ -9463,7 +9465,9 @@ A function or variable is +@@ -9482,7 +9484,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -2002,7 +1993,7 @@ index dcaa4be0..9f91843e 100644 \item diff --git a/source/future.tex b/source/future.tex -index bba0b7f7..41979b62 100644 +index 14b1e41e..c72d59ea 100644 --- a/source/future.tex +++ b/source/future.tex @@ -14,7 +14,7 @@ is defined as: @@ -2039,7 +2030,7 @@ index bba0b7f7..41979b62 100644 the \oldconcept{TransformationTrait} requirements with a base characteristic of \tcode{integral_constant}. diff --git a/source/intro.tex b/source/intro.tex -index 22114ac3..0a8f75a6 100644 +index 5cb98d21..a81314b2 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -97,8 +97,8 @@ Reads of scalar objects are described in \ref{conv.lval} and @@ -2418,10 +2409,10 @@ index d5d867ad..f0d3b942 100644 \pnum \throws diff --git a/source/iterators.tex b/source/iterators.tex -index 9914bd24..ffa39eaf 100644 +index cbfa0c2a..3deb3e2b 100644 --- a/source/iterators.tex +++ b/source/iterators.tex -@@ -729,7 +729,7 @@ is undefined. +@@ -741,7 +741,7 @@ is undefined. \pnum \indextext{iterator!constexpr}% @@ -2430,7 +2421,7 @@ index 9914bd24..ffa39eaf 100644 if all operations provided to meet iterator category requirements are constexpr functions. \begin{note} -@@ -6852,7 +6852,7 @@ ostream_iterator& operator++(int); +@@ -6865,7 +6865,7 @@ ostream_iterator& operator++(int); The class template \tcode{istreambuf_iterator} @@ -2439,7 +2430,7 @@ index 9914bd24..ffa39eaf 100644 reads successive \textit{characters} from the streambuf for which it was constructed. -@@ -6977,7 +6977,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; +@@ -6990,7 +6990,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; Initializes \tcode{sbuf_} with \keyword{nullptr}. \end{itemdescr} @@ -2447,7 +2438,7 @@ index 9914bd24..ffa39eaf 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(istream_type& s) noexcept; -@@ -6989,7 +6988,6 @@ istreambuf_iterator(istream_type& s) noexcept; +@@ -7002,7 +7001,6 @@ istreambuf_iterator(istream_type& s) noexcept; Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2455,7 +2446,7 @@ index 9914bd24..ffa39eaf 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(streambuf_type* s) noexcept; -@@ -7001,7 +6999,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; +@@ -7014,7 +7012,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; Initializes \tcode{sbuf_} with \tcode{s}. \end{itemdescr} @@ -2463,7 +2454,7 @@ index 9914bd24..ffa39eaf 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept; -@@ -7152,7 +7149,6 @@ is not a null pointer. +@@ -7165,7 +7162,6 @@ is not a null pointer. Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2472,7 +2463,7 @@ index 9914bd24..ffa39eaf 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index 8005b333..4ea5904d 100644 +index ed45edd6..ba052c96 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2486,7 +2477,7 @@ index 8005b333..4ea5904d 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 -@@ -2297,7 +2297,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) +@@ -2289,7 +2289,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}. @@ -2496,7 +2487,7 @@ index 8005b333..4ea5904d 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 2958545e..1c229c08 100644 +index 185d42dd..4e6c7fa2 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2508,7 +2499,7 @@ index 2958545e..1c229c08 100644 numeric algorithms and complex number components that extend support for numeric processing. The \tcode{valarray} -@@ -524,8 +524,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 @@ -2519,7 +2510,7 @@ index 2958545e..1c229c08 100644 \rSec3[expos.only.entity]{Exposition-only entities, etc.} -@@ -647,7 +647,7 @@ and \ref{depr} are +@@ -644,7 +644,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 @@ -2528,7 +2519,7 @@ index 2958545e..1c229c08 100644 \indextext{type!enumerated}% \pnum -@@ -773,7 +773,7 @@ locale. +@@ -770,7 +770,7 @@ locale. \item A \defn{character sequence} @@ -2537,7 +2528,7 @@ index 2958545e..1c229c08 100644 can be declared as \tcode{\placeholdernc{T\;A}[\placeholder{N}]}, where \tcode{\placeholder{T}} is any of the types -@@ -959,7 +959,7 @@ signatures, or for virtual destructors that can be generated by default. +@@ -961,7 +961,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 @@ -2546,7 +2537,7 @@ index 2958545e..1c229c08 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}. -@@ -1371,10 +1371,10 @@ std::vector vi; // OK +@@ -1373,10 +1373,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 @@ -2559,7 +2550,7 @@ index 2958545e..1c229c08 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 -@@ -1692,8 +1692,8 @@ a hosted implementation. +@@ -1694,8 +1694,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 @@ -2570,7 +2561,7 @@ index 2958545e..1c229c08 100644 \rSec3[using.headers]{Headers} -@@ -1736,7 +1736,7 @@ declared in that header. No diagnostic is required. +@@ -1738,7 +1738,7 @@ declared in that header. No diagnostic is required. \rSec3[using.linkage]{Linkage} \pnum @@ -2579,7 +2570,7 @@ index 2958545e..1c229c08 100644 Unless otherwise specified, objects and functions have the default \tcode{extern "C++"} linkage\iref{dcl.link}. -@@ -1770,8 +1770,8 @@ the program prior to program startup. +@@ -1772,8 +1772,8 @@ the program prior to program startup. \indextext{startup!program}% \pnum See also @@ -2590,7 +2581,7 @@ index 2958545e..1c229c08 100644 \rSec2[utility.requirements]{Requirements on types and expressions} -@@ -1819,7 +1819,7 @@ rvalue of type \tcode{const T}. +@@ -1821,7 +1821,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 @@ -2599,7 +2590,7 @@ index 2958545e..1c229c08 100644 \begin{oldconcepttable}{EqualityComparable}{}{cpp17.equalitycomparable} {x{1in}x{1in}p{3in}} -@@ -1945,13 +1945,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 @@ -2616,7 +2607,7 @@ index 2958545e..1c229c08 100644 \end{itemize} \begin{note} If \tcode{T} and \tcode{U} are both fundamental types or arrays of -@@ -2054,8 +2054,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 @@ -2628,7 +2619,7 @@ index 2958545e..1c229c08 100644 had been evaluated in place of \tcode{p}. \pnum -@@ -2158,7 +2159,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 @@ -2637,7 +2628,7 @@ index 2958545e..1c229c08 100644 allocators. \pnum -@@ -2984,7 +2985,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 @@ -2646,7 +2637,7 @@ index 2958545e..1c229c08 100644 other than \tcode{value_type} are complete types. \end{itemize} -@@ -2995,11 +2996,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 @@ -2662,7 +2653,7 @@ index 2958545e..1c229c08 100644 \rSec3[namespace.constraints]{Namespace use} -@@ -3402,7 +3403,7 @@ are reserved for use by \Cpp{} implementations. +@@ -3404,7 +3405,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 @@ -2671,7 +2662,7 @@ index 2958545e..1c229c08 100644 the behavior is undefined.% \indextext{source file}% \indextext{undefined} -@@ -3573,7 +3574,7 @@ specified as being shareable without data races or the user supplies a locking m +@@ -3575,7 +3576,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 @@ -2680,7 +2671,7 @@ index 2958545e..1c229c08 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. -@@ -3639,7 +3640,7 @@ Every such entity shall be defined such that any header that defines it may be +@@ -3641,7 +3642,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 @@ -2689,7 +2680,7 @@ index 2958545e..1c229c08 100644 shall include only their corresponding \Cpp{} standard library header, as described in~\ref{headers}. -@@ -3667,7 +3668,7 @@ explicitly stated otherwise. +@@ -3669,7 +3670,7 @@ explicitly stated otherwise. It is unspecified whether any non-member functions in the \Cpp{} standard library are defined as @@ -2698,7 +2689,7 @@ index 2958545e..1c229c08 100644 \pnum A call to a non-member function signature -@@ -3695,7 +3696,7 @@ The phrase ``unless otherwise specified'' applies to cases such as +@@ -3697,7 +3698,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 @@ -2707,7 +2698,7 @@ index 2958545e..1c229c08 100644 \effects \begin{codeblock} -@@ -3710,7 +3711,7 @@ return *this; +@@ -3712,7 +3713,7 @@ return *this; \pnum It is unspecified whether any member functions in the \Cpp{} standard library are defined as @@ -2716,7 +2707,7 @@ index 2958545e..1c229c08 100644 \pnum For a non-virtual member function described in the \Cpp{} standard library, -@@ -3789,8 +3790,8 @@ library may be recursively reentered. +@@ -3791,8 +3792,8 @@ library may be recursively reentered. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -2727,7 +2718,7 @@ index 2958545e..1c229c08 100644 Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. -@@ -3833,7 +3834,7 @@ not visible to users and are protected against data races. +@@ -3835,7 +3836,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 @@ -2736,7 +2727,7 @@ index 2958545e..1c229c08 100644 \pnum \begin{note} -@@ -3962,7 +3963,7 @@ potentially-throwing exception specification} exceptions. +@@ -3950,7 +3951,7 @@ potentially-throwing exception specification} exceptions. \begin{footnote} In particular, they can report a failure to allocate storage by throwing an exception of type @@ -2759,7 +2750,7 @@ 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 9d6bf6e6..65e08e2c 100644 +index fbc3cea8..bbf484e7 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -2944,19 +2935,7 @@ index 9d6bf6e6..65e08e2c 100644 \begin{itemdecl} discrete_distribution(); \end{itemdecl} -@@ -7175,8 +7170,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 -@@ -7201,7 +7197,7 @@ objects. +@@ -7196,7 +7191,7 @@ objects. \pnum These library functions are permitted to throw a @@ -2965,7 +2944,7 @@ index 9d6bf6e6..65e08e2c 100644 to carry out the operation. Note that the exception is not mandated. -@@ -7361,7 +7357,7 @@ explicit valarray(size_t n); +@@ -7364,7 +7359,7 @@ explicit valarray(size_t n); \pnum \effects Constructs a \tcode{valarray} that has length \tcode{n}. @@ -2974,7 +2953,7 @@ index 9d6bf6e6..65e08e2c 100644 \end{itemdescr} \indexlibraryctor{valarray}% -@@ -7621,7 +7617,7 @@ and other techniques to generate efficient +@@ -7624,7 +7619,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 @@ -2983,7 +2962,7 @@ index 9d6bf6e6..65e08e2c 100644 that array ends, whichever happens first. \end{itemdescr} -@@ -8047,7 +8043,7 @@ places, with zero fill. +@@ -8050,7 +8045,7 @@ places, with zero fill. \pnum \begin{example} If the argument has the value $-2$, @@ -2992,7 +2971,7 @@ index 9d6bf6e6..65e08e2c 100644 of the first element of \tcode{*this}; etc. \end{example} \end{itemdescr} -@@ -9172,7 +9168,7 @@ parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. +@@ -9175,7 +9170,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 @@ -3001,7 +2980,7 @@ index 9d6bf6e6..65e08e2c 100644 array or until the lifetime of that array ends, whichever happens first. -@@ -9813,12 +9809,12 @@ The contents and meaning of the header \libheader{cmath} +@@ -9816,12 +9811,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 @@ -3017,7 +2996,7 @@ index 9d6bf6e6..65e08e2c 100644 \end{note} \pnum -@@ -9882,7 +9878,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. +@@ -9885,7 +9880,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} @@ -3027,7 +3006,7 @@ index 9d6bf6e6..65e08e2c 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 2340f356..6fa6a1b1 100644 +index fe6c4d08..9533e291 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -74,7 +74,7 @@ Overload resolution selects the function to call in seven distinct @@ -3092,7 +3071,7 @@ index 2340f356..6fa6a1b1 100644 \begin{ncsimplebnf} postfix-expression \terminal{(} \opt{expression-list} \terminal{)} \end{ncsimplebnf} -@@ -954,7 +954,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 @@ -3101,7 +3080,7 @@ index 2340f356..6fa6a1b1 100644 Then the operator is treated as the corresponding built-in operator and interpreted according to \ref{expr.compound}. \begin{example} -@@ -1037,10 +1037,10 @@ void B::f() { +@@ -1041,10 +1041,10 @@ void B::f() { \indextext{overloading!resolution!initialization} \pnum @@ -3114,7 +3093,7 @@ index 2340f356..6fa6a1b1 100644 overload resolution selects the constructor. For direct-initialization or default-initialization (including default-initialization in the context of copy-list-initialization), -@@ -1797,7 +1797,7 @@ Third, for +@@ -1801,7 +1801,7 @@ Third, for \tcode{F} to be a viable function, there shall exist for each argument an @@ -3123,7 +3102,7 @@ index 2340f356..6fa6a1b1 100644 converts that argument to the corresponding parameter of \tcode{F}. If the parameter has reference type, the implicit conversion sequence -@@ -1861,8 +1861,8 @@ float x = a; // ambiguous: both possibilities require conversions, +@@ -1865,8 +1865,8 @@ float x = a; // ambiguous: both possibilities require conversions, \end{example} or, if not that, @@ -3134,7 +3113,7 @@ index 2340f356..6fa6a1b1 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} -@@ -1992,7 +1992,7 @@ $\tcode{F}_1$ is generated from a +@@ -1996,7 +1996,7 @@ $\tcode{F}_1$ is generated from a and $\tcode{F}_2$ is not, or, if not that, \item @@ -3143,7 +3122,7 @@ index 2340f356..6fa6a1b1 100644 and $\tcode{F}_2$ is not, or, if not that, \item -@@ -2118,7 +2118,7 @@ parameter. +@@ -2122,7 +2122,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, @@ -3152,7 +3131,7 @@ index 2340f356..6fa6a1b1 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 -@@ -2131,11 +2131,11 @@ well-formed implicit conversion +@@ -2135,11 +2135,11 @@ well-formed implicit conversion sequence is one of the following forms: \begin{itemize} \item @@ -3167,7 +3146,7 @@ index 2340f356..6fa6a1b1 100644 \end{itemize} \pnum -@@ -2313,10 +2313,10 @@ Each conversion in \tref{over.ics.scs} +@@ -2317,10 +2317,10 @@ Each conversion in \tref{over.ics.scs} also has an associated rank (Exact Match, Promotion, or Conversion). These are used @@ -3181,7 +3160,7 @@ index 2340f356..6fa6a1b1 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 -@@ -2353,7 +2353,7 @@ by a constructor\iref{class.conv.ctor}, the initial standard +@@ -2357,7 +2357,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 @@ -3190,7 +3169,7 @@ index 2340f356..6fa6a1b1 100644 initial standard conversion sequence converts the source type to the type of the object parameter of that conversion function. -@@ -2489,7 +2489,7 @@ the prohibition on binding a non-\keyword{const} lvalue reference to a bit-field +@@ -2493,7 +2493,7 @@ the prohibition on binding a non-\keyword{const} lvalue reference to a bit-field \rSec4[over.ics.list]{List-initialization sequence} \pnum @@ -3199,7 +3178,7 @@ index 2340f356..6fa6a1b1 100644 expression and special rules apply for converting it to a parameter type. \pnum -@@ -2731,13 +2731,13 @@ When comparing the basic forms of implicit conversion sequences +@@ -2735,13 +2735,13 @@ When comparing the basic forms of implicit conversion sequences (as defined in~\ref{over.best.ics}) \begin{itemize} \item @@ -3217,7 +3196,7 @@ index 2340f356..6fa6a1b1 100644 \end{itemize} \pnum -@@ -3183,7 +3183,7 @@ the left side of an assignment\iref{expr.assign}, +@@ -3168,7 +3168,7 @@ the left side of an assignment\iref{expr.assign}, \item a parameter of a function\iref{expr.call}, \item @@ -3226,7 +3205,7 @@ index 2340f356..6fa6a1b1 100644 \item the return value of a function, operator function, or conversion\iref{stmt.return}, \item -@@ -3383,8 +3383,8 @@ The operators +@@ -3368,8 +3368,8 @@ The operators and \tcode{[]} are formed from more than one token. @@ -3237,7 +3216,7 @@ index 2340f356..6fa6a1b1 100644 \end{note} \indextext{operator!subscripting}% \indextext{operator!function call}% -@@ -3480,7 +3480,7 @@ this is not required by operator functions. +@@ -3465,7 +3465,7 @@ this is not required by operator functions. \pnum \indextext{argument!overloaded operator and default}% @@ -3246,7 +3225,7 @@ index 2340f356..6fa6a1b1 100644 except where explicitly stated below. Operator functions cannot have more or fewer parameters than the -@@ -3816,7 +3816,7 @@ to not be included in the set of candidate functions. +@@ -3810,7 +3810,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 @@ -3256,10 +3235,10 @@ index 2340f356..6fa6a1b1 100644 and \tcode{long} diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index bab9b3be..14e251f7 100644 +index b9809ae6..9747c367 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex -@@ -508,7 +508,7 @@ shall not appear in any context not mentioned in this subclause. +@@ -512,7 +512,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 @@ -3268,7 +3247,7 @@ index bab9b3be..14e251f7 100644 \pnum Preprocessing directives of the forms -@@ -562,8 +562,8 @@ are replaced with the \grammarterm{pp-number} +@@ -566,8 +566,8 @@ are replaced with the \grammarterm{pp-number} \tcode{0}, and then each preprocessing token is converted into a token. \begin{note} @@ -3279,7 +3258,7 @@ index bab9b3be..14e251f7 100644 even when its spelling consists entirely of letters and underscores. Therefore it is not subject to this replacement. \end{note} -@@ -581,8 +581,8 @@ Thus on an +@@ -585,8 +585,8 @@ Thus on an implementation where \tcode{std::numeric_limits::max()} is \tcode{0x7FFF} and \tcode{std::numeric_limits::max()} is \tcode{0xFFFF}, the integer literal \tcode{0x8000} is signed and positive within a \tcode{\#if} @@ -3290,7 +3269,7 @@ index bab9b3be..14e251f7 100644 \end{note} This includes interpreting \grammarterm{character-literal}s according to the rules in \ref{lex.ccon}. -@@ -2083,7 +2083,7 @@ of the current source line is +@@ -2085,7 +2085,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 @@ -3299,7 +3278,7 @@ index bab9b3be..14e251f7 100644 while processing the source file to the current preprocessing token. \pnum -@@ -2446,7 +2446,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. +@@ -2447,7 +2447,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 @@ -3309,10 +3288,10 @@ index bab9b3be..14e251f7 100644 \end{description} diff --git a/source/statements.tex b/source/statements.tex -index 34018bd6..785798f7 100644 +index 8b9e733d..247b8bce 100644 --- a/source/statements.tex +++ b/source/statements.tex -@@ -222,7 +222,7 @@ Expression statements have the form +@@ -219,7 +219,7 @@ Expression statements have the form \end{bnf} The expression is @@ -3321,7 +3300,7 @@ index 34018bd6..785798f7 100644 All \indextext{side effects}% side effects from an expression statement -@@ -451,10 +451,10 @@ the value of the condition is the value of the \grammarterm{expression}; +@@ -448,10 +448,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 @@ -3335,7 +3314,7 @@ index 34018bd6..785798f7 100644 to the promoted type. Any statement within the \keyword{switch} statement can be labeled with one or -@@ -464,7 +464,7 @@ more case labels as follows: +@@ -461,7 +461,7 @@ more case labels as follows: \keyword{case} constant-expression \terminal{:} \end{ncbnf} where the \grammarterm{constant-expression} shall be @@ -3344,7 +3323,7 @@ index 34018bd6..785798f7 100644 adjusted type of the switch condition. No two of the case constants in the same switch shall have the same value after conversion. -@@ -550,7 +550,7 @@ An \grammarterm{init-statement} ends with a semicolon. +@@ -547,7 +547,7 @@ An \grammarterm{init-statement} ends with a semicolon. \pnum \indextext{scope!\idxgram{iteration-statement}}% The substatement in an \grammarterm{iteration-statement} implicitly defines @@ -3353,7 +3332,7 @@ index 34018bd6..785798f7 100644 through the loop. If the substatement in an \grammarterm{iteration-statement} is a single statement and not a \grammarterm{compound-statement}, -@@ -649,7 +649,7 @@ fails. +@@ -646,7 +646,7 @@ fails. \indextext{statement!\idxcode{do}} \pnum @@ -3362,7 +3341,7 @@ index 34018bd6..785798f7 100644 if that conversion is ill-formed, the program is ill-formed. \pnum -@@ -1009,8 +1009,8 @@ Jump statements unconditionally transfer control. +@@ -1019,8 +1019,8 @@ Jump statements unconditionally transfer control. \indextext{local variable!destruction of}% \indextext{scope!destructor and exit from}% \begin{note} @@ -3373,7 +3352,7 @@ index 34018bd6..785798f7 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 -@@ -1080,7 +1080,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; +@@ -1089,7 +1089,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 @@ -3382,7 +3361,7 @@ index 34018bd6..785798f7 100644 \begin{note} A constructor or destructor does not have a return type. \end{note} -@@ -1213,7 +1213,7 @@ results in undefined behavior. +@@ -1226,7 +1226,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}% @@ -3391,7 +3370,7 @@ index 34018bd6..785798f7 100644 \rSec1[stmt.contract.assert]{Assertion statement} -@@ -1324,8 +1324,8 @@ lx: +@@ -1337,8 +1337,8 @@ lx: \indextext{initialization!local \tcode{static}}% \indextext{initialization!local \tcode{thread_local}}% Dynamic initialization of a block variable with @@ -3402,7 +3381,7 @@ index 34018bd6..785798f7 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 -@@ -1368,8 +1368,8 @@ will be destroyed if and only if it was constructed. +@@ -1381,8 +1381,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 @@ -3414,10 +3393,10 @@ index 34018bd6..785798f7 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 9e1e9481..099fd5f3 100644 +index 3bc1e026..749c23d9 100644 --- a/source/strings.tex +++ b/source/strings.tex -@@ -5528,13 +5528,13 @@ The contents and meaning of the header \libheaderdef{cstring} +@@ -5533,13 +5533,13 @@ The contents and meaning of the header \libheaderdef{cstring} are the same as the C standard library header \libheader{string.h}. \pnum @@ -3434,7 +3413,7 @@ index 9e1e9481..099fd5f3 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. -@@ -5546,7 +5546,7 @@ otherwise the value of the first parameter. +@@ -5551,7 +5551,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, @@ -3444,7 +3423,7 @@ index 9e1e9481..099fd5f3 100644 \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index c6929d58..aac6e41e 100644 +index f5a5ed3a..98842079 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3552,7 +3531,7 @@ index c6929d58..aac6e41e 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 -@@ -1099,7 +1086,7 @@ the specialization on the unqualified type \tcode{T}. +@@ -1102,7 +1089,7 @@ the specialization on the unqualified type \tcode{T}. \pnum Non-arithmetic standard types, such as @@ -3561,7 +3540,7 @@ index c6929d58..aac6e41e 100644 \rSec3[numeric.limits.members]{\tcode{numeric_limits} members} -@@ -2141,7 +2128,7 @@ The program is terminated without executing destructors for objects with automat +@@ -2144,7 +2131,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}}% @@ -3570,7 +3549,7 @@ index c6929d58..aac6e41e 100644 \end{itemdescr} \indexlibraryglobal{abort}% -@@ -2161,7 +2148,7 @@ automatic, thread, or static storage +@@ -2164,7 +2151,7 @@ automatic, thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{abort}}% @@ -3579,7 +3558,7 @@ index c6929d58..aac6e41e 100644 \end{itemdescr} \indexlibraryglobal{atexit}% -@@ -2178,7 +2165,8 @@ The +@@ -2181,7 +2168,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 @@ -3589,7 +3568,7 @@ index c6929d58..aac6e41e 100644 \begin{note} The \tcode{atexit()} functions do not introduce a data race\iref{res.on.data.races}. -@@ -2272,7 +2260,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; +@@ -2275,7 +2263,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 @@ -3599,7 +3578,7 @@ index c6929d58..aac6e41e 100644 \begin{note} The \tcode{at_quick_exit()} functions do not introduce a -@@ -2324,7 +2313,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s +@@ -2327,7 +2316,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s \pnum \remarks \indextext{signal-safe!\idxcode{quick_exit}}% @@ -3608,7 +3587,7 @@ index c6929d58..aac6e41e 100644 when the functions registered with \tcode{at_quick_exit} are. \end{itemdescr} -@@ -2451,7 +2440,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); +@@ -2454,7 +2443,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3617,7 +3596,7 @@ index c6929d58..aac6e41e 100644 called by a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -2487,7 +2476,7 @@ a null pointer value, throws +@@ -2490,7 +2479,7 @@ a null pointer value, throws \tcode{bad_alloc}. \item Otherwise, the function calls the current @@ -3626,7 +3605,7 @@ index c6929d58..aac6e41e 100644 If the called function returns, the loop repeats. \item The loop terminates when an attempt to allocate the requested storage is -@@ -2709,7 +2698,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); +@@ -2712,7 +2701,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3635,7 +3614,7 @@ index c6929d58..aac6e41e 100644 called by the array form of a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -3022,8 +3011,8 @@ versions of \tcode{operator delete}, the C standard library function +@@ -3025,8 +3014,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 @@ -3646,7 +3625,7 @@ index c6929d58..aac6e41e 100644 \rSec2[alloc.errors]{Storage allocation errors} -@@ -3177,8 +3166,8 @@ template constexpr T* launder(T* p) noexcept; +@@ -3180,8 +3169,8 @@ template constexpr T* launder(T* p) noexcept; \pnum \expects \tcode{p} represents the address \placeholder{A} of a byte in memory. @@ -3657,7 +3636,7 @@ index c6929d58..aac6e41e 100644 is located at the address \placeholder{A}. All bytes of storage that would be reachable through\iref{basic.compound} the result -@@ -3391,7 +3380,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. +@@ -3394,7 +3383,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. \pnum \remarks @@ -3667,7 +3646,7 @@ index c6929d58..aac6e41e 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. \end{itemdescr} -@@ -3967,7 +3957,8 @@ the ordinary literal encoding\iref{lex.ccon}. +@@ -3971,7 +3961,8 @@ the ordinary literal encoding\iref{lex.ccon}. \pnum \remarks @@ -3677,7 +3656,7 @@ index c6929d58..aac6e41e 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 -@@ -4118,7 +4109,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread. +@@ -4122,7 +4113,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 @@ -3686,7 +3665,7 @@ index c6929d58..aac6e41e 100644 \end{itemdescr} \rSec2[propagation]{Exception propagation} -@@ -4181,8 +4172,9 @@ constexpr exception_ptr current_exception() noexcept; +@@ -4185,8 +4176,9 @@ constexpr exception_ptr current_exception() noexcept; \begin{itemdescr} \pnum \returns @@ -3698,7 +3677,7 @@ index c6929d58..aac6e41e 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. -@@ -4793,7 +4785,7 @@ template constexpr const E* end(initializer_list il) noexcept; +@@ -4776,7 +4768,7 @@ constexpr bool empty() const noexcept; \pnum The header \libheaderdef{compare} specifies types, objects, and functions for use primarily in connection with @@ -3707,7 +3686,7 @@ index c6929d58..aac6e41e 100644 \indexlibraryglobal{is_eq}% \indexlibraryglobal{is_neq}% -@@ -6381,7 +6373,7 @@ environment. +@@ -6369,7 +6361,7 @@ environment. \end{note} \pnum @@ -3717,10 +3696,10 @@ index c6929d58..aac6e41e 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 1cc78289..e9f69fd7 100644 +index 6cf798ea..d7f6a4d9 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -687,7 +687,7 @@ struct A {}; +@@ -713,7 +713,7 @@ struct A {}; \rSec1[temp.names]{Names of template specializations} \pnum @@ -3729,7 +3708,7 @@ index 1cc78289..e9f69fd7 100644 \grammarterm{template-id}: \begin{bnf} -@@ -1016,8 +1016,8 @@ in a \grammarterm{splice-specialization-specifier} +@@ -1052,8 +1052,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}. @@ -3740,7 +3719,7 @@ index 1cc78289..e9f69fd7 100644 \grammarterm{template-argument}{s}. \begin{example} \begin{codeblock} -@@ -1182,7 +1182,7 @@ When a \grammarterm{simple-template-id} or +@@ -1244,7 +1244,7 @@ When a \grammarterm{simple-template-id} or \grammarterm{splice-specialization-specifier} does not designate a function, a default \grammarterm{template-argument} is @@ -3749,7 +3728,7 @@ index 1cc78289..e9f69fd7 100644 when the value of that default argument is needed. \begin{example} \begin{codeblock} -@@ -1194,7 +1194,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} -@@ -1748,9 +1748,9 @@ in the declaration of a constrained entity (and, therefore, can involve the +@@ -1813,9 +1813,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} @@ -3809,7 +3788,7 @@ index 1cc78289..e9f69fd7 100644 \end{note} \pnum -@@ -1827,7 +1827,7 @@ first substituted into its expression. +@@ -1892,7 +1892,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. @@ -3818,7 +3797,7 @@ index 1cc78289..e9f69fd7 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} -@@ -1989,11 +1989,11 @@ A declaration's \defn{associated constraints} are defined as follows: +@@ -2054,11 +2054,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}, @@ -3833,7 +3812,7 @@ index 1cc78289..e9f69fd7 100644 following order: \begin{itemize} \item -@@ -2090,7 +2090,7 @@ so it does match \#2. +@@ -2155,7 +2155,7 @@ so it does match \#2. \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is @@ -3842,7 +3821,7 @@ index 1cc78289..e9f69fd7 100644 % \begin{itemize} \item -@@ -2099,7 +2099,7 @@ the normal form of \tcode{E}. +@@ -2164,7 +2164,7 @@ the normal form of \tcode{E}. \item The normal form of an expression \tcode{E1 || E2} is @@ -3851,7 +3830,7 @@ index 1cc78289..e9f69fd7 100644 the normal forms of \tcode{E1} and \tcode{E2}. \item -@@ -2347,7 +2347,7 @@ the constraint of $A$ subsumes that of $B$. +@@ -2412,7 +2412,7 @@ the constraint of $A$ subsumes that of $B$. \end{itemize} % \begin{example} @@ -3860,7 +3839,7 @@ index 1cc78289..e9f69fd7 100644 % The constraint $A \land B$ subsumes $A$, but $A$ does not subsume $A \land B$. % -@@ -2567,7 +2567,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. +@@ -2632,7 +2632,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. \end{example} \pnum @@ -3869,7 +3848,7 @@ index 1cc78289..e9f69fd7 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 -@@ -2637,8 +2637,8 @@ default arguments, +@@ -2702,8 +2702,8 @@ default arguments, \grammarterm{requires-clause}{s}, or \grammarterm{noexcept-specifier}{s}. @@ -3880,7 +3859,7 @@ index 1cc78289..e9f69fd7 100644 For the purpose of name lookup and instantiation, the \grammarterm{compound-statement} of an \grammarterm{expansion-statement} is considered a template definition. -@@ -2995,7 +2995,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} +@@ -3060,7 +3060,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. @@ -3889,7 +3868,7 @@ index 1cc78289..e9f69fd7 100644 apply to member template names. A destructor shall not be a member template. -@@ -3222,7 +3222,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. +@@ -3287,7 +3287,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. @@ -3898,7 +3877,7 @@ index 1cc78289..e9f69fd7 100644 \grammarterm{identifier}. \item In a \grammarterm{pack-index-expression}; -@@ -3845,9 +3845,9 @@ primary template. +@@ -3910,9 +3910,9 @@ primary template. \pnum A partial specialization matches a given actual template argument list if the template arguments of the partial specialization can be @@ -3911,7 +3890,7 @@ index 1cc78289..e9f69fd7 100644 \begin{example} \begin{codeblock} template class A { }; // \#1 -@@ -3909,14 +3909,14 @@ of the primary template. +@@ -3974,14 +3974,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 @@ -3929,7 +3908,7 @@ index 1cc78289..e9f69fd7 100644 as the corresponding partial specialization. \item Each function template -@@ -4122,8 +4122,8 @@ void h(int* p) { +@@ -4187,8 +4187,8 @@ void h(int* p) { \end{example} \pnum @@ -3940,7 +3919,7 @@ index 1cc78289..e9f69fd7 100644 \pnum The signature of a function template -@@ -4174,7 +4174,7 @@ For example, a template type parameter can be used in the +@@ -4239,7 +4239,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 @@ -3949,7 +3928,7 @@ index 1cc78289..e9f69fd7 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. -@@ -4344,8 +4344,8 @@ function template +@@ -4409,8 +4409,8 @@ function template specialization is selected to match a placement operator new\iref{basic.stc.dynamic.deallocation,expr.new}; \item @@ -3960,7 +3939,7 @@ index 1cc78289..e9f69fd7 100644 a function template specialization. \end{itemize} -@@ -4738,7 +4738,7 @@ A \grammarterm{concept-definition} +@@ -4803,7 +4803,7 @@ A \grammarterm{concept-definition} shall inhabit a namespace scope\iref{basic.scope.namespace}. \pnum @@ -3969,7 +3948,7 @@ index 1cc78289..e9f69fd7 100644 \pnum A concept is not instantiated\iref{temp.spec}. -@@ -5065,7 +5065,7 @@ was a pack expansion and the corresponding pack is empty, or +@@ -5130,7 +5130,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 @@ -3978,7 +3957,7 @@ index 1cc78289..e9f69fd7 100644 instantiation uses \begin{itemize} \item the value of a const object of integral or unscoped enumeration type or -@@ -5318,7 +5318,7 @@ any of the expressions +@@ -5383,7 +5383,7 @@ any of the expressions or \grammarterm{braced-init-list}{s} in the \grammarterm{expression-list} @@ -3987,7 +3966,7 @@ index 1cc78289..e9f69fd7 100644 \item the \grammarterm{unqualified-id} is a \grammarterm{template-id} in which any of the template arguments depends -@@ -5378,7 +5378,7 @@ if it is +@@ -5443,7 +5443,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, @@ -3996,7 +3975,7 @@ index 1cc78289..e9f69fd7 100644 \item in the definition of a primary class template or a member of a primary class template, the name of the -@@ -5657,7 +5657,7 @@ used without a \grammarterm{template-argument-list}. +@@ -5722,7 +5722,7 @@ used without a \grammarterm{template-argument-list}. \end{footnote} \item a \grammarterm{pack-index-specifier}, \item denoted by \tcode{decltype(}\grammarterm{expression}{}\tcode{)}, @@ -4005,16 +3984,16 @@ index 1cc78289..e9f69fd7 100644 \item denoted by a \grammarterm{splice-type-specifier} in which either the \grammarterm{splice-specifier} or \grammarterm{splice-specialization-specifier} -@@ -5809,7 +5809,7 @@ see~\ref{support.types}. +@@ -5874,7 +5874,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 -@@ -5953,7 +5953,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the + \begin{itemize} + \item +@@ -6022,7 +6022,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} @@ -4023,7 +4002,7 @@ index 1cc78289..e9f69fd7 100644 the result of the evaluation refers to a templated entity that is an object with static or thread storage duration or a member function. -@@ -6176,7 +6176,7 @@ within a translation unit. +@@ -6245,7 +6245,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 @@ -4032,7 +4011,7 @@ index 1cc78289..e9f69fd7 100644 the program is ill-formed, no diagnostic required. \pnum -@@ -6487,7 +6487,7 @@ of type +@@ -6556,7 +6556,7 @@ of type \pnum If a function declaration acquired its function type through @@ -4041,7 +4020,7 @@ index 1cc78289..e9f69fd7 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -6568,7 +6568,7 @@ X ch; // error: incomplete type \tcode{X} +@@ -6637,7 +6637,7 @@ X ch; // error: incomplete type \tcode{X} \end{example} \begin{note} Within a template declaration, @@ -4050,7 +4029,7 @@ index 1cc78289..e9f69fd7 100644 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 -@@ -6746,7 +6746,7 @@ void x() { +@@ -6815,7 +6815,7 @@ void x() { \end{example} \pnum @@ -4059,7 +4038,7 @@ index 1cc78289..e9f69fd7 100644 can be determined without instantiating a class template definition, it is unspecified whether that instantiation actually takes place. \begin{example} -@@ -7083,7 +7083,7 @@ If an entity is the subject of both an explicit instantiation declaration +@@ -7152,7 +7152,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 @@ -4068,7 +4047,7 @@ index 1cc78289..e9f69fd7 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. -@@ -8148,7 +8148,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. +@@ -8217,7 +8217,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, @@ -4077,7 +4056,7 @@ index 1cc78289..e9f69fd7 100644 would be required to convert the \grammarterm{template-argument} of type \tcode{int} to \tcode{signed char}, -@@ -8257,8 +8257,8 @@ is not a reference type: +@@ -8326,8 +8326,8 @@ is not a reference type: \item If \tcode{A} @@ -4088,7 +4067,7 @@ index 1cc78289..e9f69fd7 100644 \tcode{A} for type deduction; otherwise, -@@ -8266,7 +8266,7 @@ otherwise, +@@ -8335,7 +8335,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -4097,7 +4076,7 @@ index 1cc78289..e9f69fd7 100644 of \tcode{A} for type -@@ -8362,8 +8362,8 @@ The transformed \tcode{A} +@@ -8431,8 +8431,8 @@ The transformed \tcode{A} can be another pointer or pointer-to-member type that can be converted to the deduced \tcode{A} @@ -4108,7 +4087,7 @@ index 1cc78289..e9f69fd7 100644 \item If -@@ -8496,7 +8496,7 @@ void test() { +@@ -8565,7 +8565,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -4117,7 +4096,7 @@ index 1cc78289..e9f69fd7 100644 If there is a target, the function template's function type and the target type are used as the types of -@@ -8543,7 +8543,7 @@ is not a reference type: +@@ -8612,7 +8612,7 @@ is not a reference type: If \tcode{P} is an array type, the pointer type produced by the @@ -4126,7 +4105,7 @@ index 1cc78289..e9f69fd7 100644 \tcode{P} for type deduction; otherwise, -@@ -8551,7 +8551,7 @@ deduction; otherwise, +@@ -8620,7 +8620,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -4135,7 +4114,7 @@ index 1cc78289..e9f69fd7 100644 \tcode{P} for type deduction; otherwise, -@@ -8642,7 +8642,7 @@ after a function has been selected. +@@ -8711,7 +8711,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 @@ -4144,7 +4123,7 @@ index 1cc78289..e9f69fd7 100644 type is used. \end{itemize} -@@ -9158,7 +9158,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the +@@ -9227,7 +9227,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$. @@ -4153,7 +4132,7 @@ index 1cc78289..e9f69fd7 100644 originally a pack expansion: \begin{itemize} \item if \tcode{P} does not contain a template argument corresponding to -@@ -9221,7 +9221,7 @@ each remaining parameter type in the parameter-type-list +@@ -9290,7 +9290,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. @@ -4162,7 +4141,7 @@ index 1cc78289..e9f69fd7 100644 originally a function parameter pack: \begin{itemize} \item if \tcode{P} does not contain a function parameter type corresponding to -@@ -9515,8 +9515,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod +@@ -9628,8 +9628,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 @@ -4174,7 +4153,7 @@ index 1cc78289..e9f69fd7 100644 \tcode{operator new}\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 db30cf64..0962d340 100644 +index 7480badf..0d7a40ef 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4197,7 +4176,7 @@ index db30cf64..0962d340 100644 \begin{itemdecl} m.try_lock_for(rel_time) -@@ -7267,7 +7267,7 @@ namespace std { +@@ -7288,7 +7288,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -4206,7 +4185,7 @@ index db30cf64..0962d340 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 -@@ -7311,7 +7311,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on +@@ -7332,7 +7332,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on a single mutex appears to occur in a single total order. \begin{note} This @@ -4215,7 +4194,7 @@ index db30cf64..0962d340 100644 mutex. \end{note} \begin{note} -@@ -7391,7 +7391,7 @@ in the absence of contending mutex acquisitions. +@@ -7412,7 +7412,7 @@ in the absence of contending mutex acquisitions. \pnum \sync If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations @@ -4224,7 +4203,7 @@ index db30cf64..0962d340 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 -@@ -7427,7 +7427,7 @@ Releases the calling thread's ownership of the mutex. +@@ -7448,7 +7448,7 @@ Releases the calling thread's ownership of the mutex. \pnum \sync @@ -4233,7 +4212,7 @@ index db30cf64..0962d340 100644 lock operations that obtain ownership on the same object. \pnum -@@ -7556,9 +7556,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, +@@ -7577,9 +7577,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 @@ -4245,7 +4224,7 @@ index db30cf64..0962d340 100644 \begin{note} The timed mutex types meet the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. -@@ -7848,7 +7848,7 @@ Releases a shared lock on the mutex held by the calling thread. +@@ -7869,7 +7869,7 @@ Releases a shared lock on the mutex held by the calling thread. \pnum \sync @@ -4254,7 +4233,7 @@ index db30cf64..0962d340 100644 \tcode{lock()} operations that obtain ownership on the same object. \pnum -@@ -7952,7 +7952,7 @@ meet the requirements set out below. In this description, +@@ -7973,7 +7973,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 @@ -4263,7 +4242,7 @@ index db30cf64..0962d340 100644 \begin{note} The shared timed mutex types meet the \oldconcept{SharedTimedLockable} requirements\iref{thread.req.lockable.shared.timed}. -@@ -8163,7 +8163,7 @@ namespace std { +@@ -8184,7 +8184,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 @@ -4272,7 +4251,7 @@ index db30cf64..0962d340 100644 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} object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} -@@ -8236,7 +8236,7 @@ namespace std { +@@ -8257,7 +8257,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 @@ -4281,7 +4260,7 @@ index db30cf64..0962d340 100644 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} object. -@@ -9393,7 +9393,7 @@ earlier returning execution. +@@ -9414,7 +9414,7 @@ earlier returning execution. \pnum \sync For any given \tcode{once_flag}: all active executions occur in a total @@ -4290,7 +4269,7 @@ index db30cf64..0962d340 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -11356,22 +11356,21 @@ the state object. +@@ -11380,22 +11380,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4317,7 +4296,7 @@ index db30cf64..0962d340 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 -@@ -11690,8 +11689,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -11714,8 +11713,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 @@ -4328,7 +4307,7 @@ index db30cf64..0962d340 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -12001,7 +12000,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -12025,7 +12024,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 @@ -4337,7 +4316,7 @@ index db30cf64..0962d340 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -12450,7 +12449,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -12474,7 +12473,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -4347,7 +4326,7 @@ index db30cf64..0962d340 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 67b1b06b..86cb2905 100644 +index 7fa1323a..85f3877e 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1216,7 +1216,7 @@ unless it meets all of the following conditions: @@ -4359,7 +4338,7 @@ index 67b1b06b..86cb2905 100644 \item the expression \tcode{T::now()} is well-formed when treated as an unevaluated operand. -@@ -11078,7 +11078,7 @@ The expression +@@ -11089,7 +11089,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp) \end{codeblock} @@ -4368,7 +4347,7 @@ index 67b1b06b..86cb2905 100644 \pnum \returns -@@ -11111,7 +11111,7 @@ The expression +@@ -11122,7 +11122,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp, addressof(abbrev)) \end{codeblock} @@ -4377,7 +4356,7 @@ index 67b1b06b..86cb2905 100644 \pnum \returns -@@ -11148,7 +11148,7 @@ from_stream(declval&>(), +@@ -11159,7 +11159,7 @@ from_stream(declval&>(), declval*>(), &offset) \end{codeblock} @@ -4386,7 +4365,7 @@ index 67b1b06b..86cb2905 100644 \pnum \returns -@@ -11188,7 +11188,7 @@ The expression +@@ -11199,7 +11199,7 @@ The expression from_stream(declval&>(), @$F$@, tp, addressof(abbrev), &offset) \end{codeblock} @@ -4396,7 +4375,7 @@ index 67b1b06b..86cb2905 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index 5e93b63c..edaa136a 100644 +index d714c1f2..9da223d9 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -104,15 +104,15 @@ namespace std { @@ -4416,9 +4395,9 @@ index 5e93b63c..edaa136a 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; +@@ -345,7 +345,7 @@ of forwarding functions. \indextext{signal-safe!\idxcode{forward}}% \indextext{signal-safe!\idxcode{move}}% \indextext{signal-safe!\idxcode{move_if_noexcept}}% @@ -4427,7 +4406,7 @@ index 5e93b63c..edaa136a 100644 \indexlibraryglobal{forward}% \indextext{\idxcode{forward}}% -@@ -508,7 +508,7 @@ template constexpr add_const_t& as_const(T& t) noexcept; +@@ -520,7 +520,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 @@ -4436,7 +4415,7 @@ index 5e93b63c..edaa136a 100644 \indexlibraryglobal{declval}% \begin{itemdecl} -@@ -1499,7 +1499,7 @@ inline constexpr piecewise_construct_t piecewise_construct{}; +@@ -1511,7 +1511,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 @@ -4445,7 +4424,7 @@ index 5e93b63c..edaa136a 100644 for piecewise construction of the elements of the \tcode{pair} object. \rSec1[tuple]{Tuples} -@@ -2145,7 +2145,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. +@@ -2161,7 +2161,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. \pnum \effects Equivalent to the preceding constructors except that each element is constructed with @@ -4454,7 +4433,7 @@ index 5e93b63c..edaa136a 100644 \end{itemdescr} \rSec3[tuple.assign]{Assignment} -@@ -2803,7 +2803,7 @@ template struct tuple_size; +@@ -2819,7 +2819,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 @@ -4463,7 +4442,7 @@ index 5e93b63c..edaa136a 100644 each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts} with a base characteristic of \begin{codeblock} -@@ -6921,6 +6921,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); +@@ -7038,6 +7038,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); \rSec2[variant.monostate]{Class \tcode{monostate}}% \indexlibraryglobal{monostate}% @@ -4471,7 +4450,7 @@ index 5e93b63c..edaa136a 100644 \begin{itemdecl} struct monostate{}; \end{itemdecl} -@@ -7089,7 +7090,8 @@ namespace std { +@@ -7209,7 +7210,8 @@ namespace std { \end{codeblock} \pnum @@ -4485,7 +4464,7 @@ index 5e93b63c..edaa136a 100644 2.43.0 -From 94b6f4ff78cf2a489238876c7b142361e08397ba Mon Sep 17 00:00:00 2001 +From 35d8595c799e8847754007c2f001a9ea312645ae 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 @@ -4510,10 +4489,10 @@ index f0d3b942..90000ab2 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index e9f69fd7..fbeb36af 100644 +index d7f6a4d9..45edbccb 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -2086,7 +2086,6 @@ so it does match \#2. +@@ -2151,7 +2151,6 @@ so it does match \#2. \end{example} \rSec2[temp.constr.normal]{Constraint normalization} @@ -4521,7 +4500,7 @@ index e9f69fd7..fbeb36af 100644 \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is -@@ -2205,10 +2204,11 @@ whose parameter mapping is the identity mapping. +@@ -2270,10 +2269,11 @@ whose parameter mapping is the identity mapping. \end{itemize} \pnum @@ -4538,7 +4517,7 @@ index e9f69fd7..fbeb36af 100644 2.43.0 -From af715b9daabd5ae5d1af950bfeae669f45d25bd6 Mon Sep 17 00:00:00 2001 +From 70b4bcca531629529edcbc9ee4e7d554e9e84b4a 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 @@ -4546,9 +4525,9 @@ Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and --- source/exceptions.tex | 4 +- - source/lex.tex | 182 +++++++-------- + source/lex.tex | 180 +++++++-------- source/time.tex | 518 +++++++++++++++++++++--------------------- - 3 files changed, 352 insertions(+), 352 deletions(-) + 3 files changed, 351 insertions(+), 351 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex index 0072f5d6..88e1a340 100644 @@ -4569,10 +4548,10 @@ index 0072f5d6..88e1a340 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index 4ea5904d..7be0ad42 100644 +index ba052c96..53864cf8 100644 --- a/source/lex.tex +++ b/source/lex.tex -@@ -330,43 +330,43 @@ the numerical value has no other meaning in this context. +@@ -333,43 +333,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 \\ @@ -4653,7 +4632,7 @@ index 4ea5904d..7be0ad42 100644 \end{floattable} \pnum -@@ -605,7 +605,7 @@ given character: +@@ -608,7 +608,7 @@ given character: \item \indextext{literal!string!raw}% If the next character begins a sequence of characters that could be the prefix @@ -4662,7 +4641,7 @@ index 4ea5904d..7be0ad42 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 -@@ -613,7 +613,7 @@ shall apply before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting +@@ -616,7 +616,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} @@ -4671,7 +4650,7 @@ index 4ea5904d..7be0ad42 100644 \end{ncbnf} \item Otherwise, if the next three characters are \tcode{<::} and the subsequent character -@@ -748,15 +748,15 @@ depending on the implementation. +@@ -751,15 +751,15 @@ depending on the implementation. \begin{bnf} \nontermdef{pp-number}\br digit\br @@ -4695,7 +4674,7 @@ index 4ea5904d..7be0ad42 100644 \end{bnf} \pnum -@@ -1184,19 +1184,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1172,19 +1172,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 @@ -4718,7 +4697,7 @@ index 4ea5904d..7be0ad42 100644 \end{bnf} \begin{bnf} -@@ -1227,14 +1227,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1215,14 +1215,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{hexadecimal-digit-sequence}\br hexadecimal-digit\br @@ -4737,7 +4716,7 @@ index 4ea5904d..7be0ad42 100644 \end{bnf} \begin{bnf} -@@ -1249,17 +1249,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1237,17 +1237,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{unsigned-suffix} \textnormal{one of}\br @@ -4758,7 +4737,7 @@ index 4ea5904d..7be0ad42 100644 \end{bnf} \begin{bnf} -@@ -1298,7 +1298,7 @@ when determining the value. +@@ -1286,7 +1286,7 @@ when determining the value. \pnum The \grammarterm{hexadecimal-digit}s @@ -4767,7 +4746,7 @@ index 4ea5904d..7be0ad42 100644 have decimal values ten through fifteen. \begin{example} The number twelve can be written \tcode{12}, \tcode{014}, -@@ -1342,7 +1342,7 @@ none & +@@ -1330,7 +1330,7 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4776,7 +4755,7 @@ index 4ea5904d..7be0ad42 100644 \tcode{unsigned int} & \tcode{unsigned int}\\ & -@@ -1351,7 +1351,7 @@ none & +@@ -1339,7 +1339,7 @@ none & & \tcode{unsigned long long int} & \tcode{unsigned long long int}\\\hline @@ -4785,7 +4764,7 @@ index 4ea5904d..7be0ad42 100644 \tcode{long int} & \tcode{long int}\\ & -@@ -1363,22 +1363,22 @@ none & +@@ -1351,22 +1351,22 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4813,7 +4792,7 @@ index 4ea5904d..7be0ad42 100644 & \\\hline \tcode{z} or \tcode{Z} & -@@ -1426,12 +1426,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1414,12 +1414,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \indextext{literal!character}% \begin{bnf} \nontermdef{character-literal}\br @@ -4828,7 +4807,7 @@ index 4ea5904d..7be0ad42 100644 \end{bnf} \begin{bnf} -@@ -1461,12 +1461,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1449,12 +1449,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{simple-escape-sequence}\br @@ -4843,7 +4822,7 @@ index 4ea5904d..7be0ad42 100644 \end{bnf} \begin{bnf} -@@ -1482,21 +1482,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1470,21 +1470,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{octal-escape-sequence}\br @@ -4872,7 +4851,7 @@ index 4ea5904d..7be0ad42 100644 \end{bnf} \begin{bnf} -@@ -1679,42 +1679,42 @@ is supported for compatibility with \CppXIV{} and C. +@@ -1667,42 +1667,42 @@ is supported for compatibility with \CppXIV{} and C. \begin{bnf} \nontermdef{fractional-constant}\br @@ -4926,18 +4905,16 @@ index 4ea5904d..7be0ad42 100644 \end{bnf} \pnum -@@ -1799,8 +1799,8 @@ chosen in an \impldef{choice of larger or smaller value of - \indextext{literal!string}% +@@ -1788,7 +1788,7 @@ chosen in an \impldef{choice of larger or smaller value of \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} -@@ -1823,7 +1823,7 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1816,7 +1816,7 @@ chosen in an \impldef{choice of larger or smaller value of \begin{bnf} \nontermdef{raw-string}\br @@ -4946,7 +4923,7 @@ index 4ea5904d..7be0ad42 100644 \end{bnf} \begin{bnf} -@@ -1910,7 +1910,7 @@ UTF-32 & +@@ -1902,7 +1902,7 @@ UTF-32 & \pnum \indextext{literal!string!raw}% @@ -4956,10 +4933,10 @@ index 4ea5904d..7be0ad42 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 86cb2905..f1f22e40 100644 +index 85f3877e..6cb712e2 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -2194,7 +2194,7 @@ If the parse fails to decode a valid duration, +@@ -2198,7 +2198,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. @@ -4968,7 +4945,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -2786,9 +2786,9 @@ as specified in \ref{time.parse}. +@@ -2790,9 +2790,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. @@ -4980,7 +4957,7 @@ index 86cb2905..f1f22e40 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 -@@ -2979,9 +2979,9 @@ as specified in \ref{time.parse}. +@@ -2983,9 +2983,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. @@ -4992,7 +4969,7 @@ index 86cb2905..f1f22e40 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 -@@ -3178,9 +3178,9 @@ as specified in \ref{time.parse}. +@@ -3182,9 +3182,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. @@ -5004,7 +4981,7 @@ index 86cb2905..f1f22e40 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}. -@@ -3341,9 +3341,9 @@ as specified in \ref{time.parse}. +@@ -3345,9 +3345,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. @@ -5016,7 +4993,7 @@ index 86cb2905..f1f22e40 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}. -@@ -3448,9 +3448,9 @@ as specified in \ref{time.parse}. +@@ -3452,9 +3452,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. @@ -5028,7 +5005,7 @@ index 86cb2905..f1f22e40 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}. -@@ -3559,9 +3559,9 @@ as specified in \ref{time.parse}. +@@ -3567,9 +3567,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. @@ -5040,7 +5017,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4212,9 +4212,9 @@ as specified in \ref{time.parse}. +@@ -4220,9 +4220,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. @@ -5052,7 +5029,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4526,9 +4526,9 @@ as specified in \ref{time.parse}. +@@ -4534,9 +4534,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. @@ -5064,7 +5041,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4870,9 +4870,9 @@ as specified in \ref{time.parse}. +@@ -4878,9 +4878,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. @@ -5076,7 +5053,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -5253,9 +5253,9 @@ as specified in \ref{time.parse}. +@@ -5261,9 +5261,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. @@ -5088,7 +5065,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -5636,9 +5636,9 @@ as specified in \ref{time.parse}. +@@ -5644,9 +5644,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. @@ -5100,7 +5077,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -6316,9 +6316,9 @@ as specified in \ref{time.parse}. +@@ -6324,9 +6324,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. @@ -5112,7 +5089,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -6780,9 +6780,9 @@ as specified in \ref{time.parse}. +@@ -6788,9 +6788,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. @@ -5124,7 +5101,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -10472,23 +10472,23 @@ according to the following syntax: +@@ -10483,23 +10483,23 @@ according to the following syntax: \begin{ncbnf} \fmtnontermdef{literal-char}\br @@ -5153,7 +5130,7 @@ index 86cb2905..f1f22e40 100644 \end{ncbnf} The productions -@@ -10561,11 +10561,11 @@ the result of formatting a chrono type +@@ -10572,11 +10572,11 @@ the result of formatting a chrono type does not contain time zone abbreviation and time zone offset information. If the information is available, @@ -5167,7 +5144,7 @@ index 86cb2905..f1f22e40 100644 conversion specifier appears in the \fmtgrammarterm{chrono-format-spec}, an exception of type \tcode{format_error} is thrown, -@@ -10581,7 +10581,7 @@ A \tcode{duration} does not contain enough information +@@ -10592,7 +10592,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'' @@ -5176,7 +5153,7 @@ index 86cb2905..f1f22e40 100644 then a specialization of \tcode{duration} is interpreted as the time of day elapsed since midnight. -@@ -10593,57 +10593,57 @@ the time of day elapsed since midnight. +@@ -10604,57 +10604,57 @@ the time of day elapsed since midnight. \hline \lhdr{Specifier} & \rhdr{Replacement} \\ \capsep \endhead @@ -5252,7 +5229,7 @@ index 86cb2905..f1f22e40 100644 \\ \rowsep \tcode{\%g} & The last two decimal digits of the calendar year -@@ -10654,158 +10654,158 @@ If the result is a single digit it is prefixed by \tcode{0}. +@@ -10665,158 +10665,158 @@ 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 @@ -5482,7 +5459,7 @@ index 86cb2905..f1f22e40 100644 \\ \end{LongTable} -@@ -10853,9 +10853,9 @@ template +@@ -10864,9 +10864,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5494,7 +5471,7 @@ index 86cb2905..f1f22e40 100644 an offset of \tcode{0min} is formatted. \end{itemdescr} -@@ -10868,9 +10868,9 @@ template +@@ -10879,9 +10879,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5506,7 +5483,7 @@ index 86cb2905..f1f22e40 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, -@@ -10887,9 +10887,9 @@ template +@@ -10898,9 +10898,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5518,7 +5495,7 @@ index 86cb2905..f1f22e40 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 -@@ -10908,9 +10908,9 @@ template +@@ -10919,9 +10919,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5530,7 +5507,7 @@ index 86cb2905..f1f22e40 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 -@@ -10929,9 +10929,9 @@ template +@@ -10940,9 +10940,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5542,7 +5519,7 @@ index 86cb2905..f1f22e40 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted -@@ -10949,7 +10949,7 @@ template +@@ -10960,7 +10960,7 @@ template \begin{itemdescr} \pnum \remarks @@ -5551,7 +5528,7 @@ index 86cb2905..f1f22e40 100644 an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -10990,18 +10990,18 @@ passed to \tcode{formatter::format}. +@@ -11001,18 +11001,18 @@ passed to \tcode{formatter::format}. \pnum \remarks If the \fmtgrammarterm{chrono-specs} is omitted, @@ -5575,7 +5552,7 @@ index 86cb2905..f1f22e40 100644 and \tcode{f.offset_sec} is a null pointer value, then an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -11205,8 +11205,8 @@ except that they have an unspecified effect +@@ -11216,8 +11216,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. @@ -5586,7 +5563,7 @@ index 86cb2905..f1f22e40 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 -@@ -11224,7 +11224,7 @@ the information that the format flag refers to, +@@ -11235,7 +11235,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'' @@ -5595,7 +5572,7 @@ index 86cb2905..f1f22e40 100644 then a specialization of \tcode{duration} is parsed as the time of day elapsed since midnight. -@@ -11244,251 +11244,251 @@ is called on the \tcode{basic_istream}. +@@ -11255,251 +11255,251 @@ is called on the \tcode{basic_istream}. \hline \lhdr{Flag} & \rhdr{Parsed value} \\ \capsep \endhead @@ -5961,7 +5938,7 @@ index 86cb2905..f1f22e40 100644 The time zone abbreviation or name. A single word is parsed. This word can only contain characters -@@ -11496,8 +11496,8 @@ from the basic character set\iref{lex.charset} +@@ -11507,8 +11507,8 @@ from the basic character set\iref{lex.charset} that are alphanumeric, or one of \tcode{'_'}, \tcode{'/'}, \tcode{'-'}, or \tcode{'+'}. \\ \rowsep @@ -5976,7 +5953,7 @@ index 86cb2905..f1f22e40 100644 2.43.0 -From b11f64c3108ae7406e372eea611dc0498267a392 Mon Sep 17 00:00:00 2001 +From 377a9bc321369a97e2838c6a11283f6e12f275c6 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. @@ -5987,7 +5964,7 @@ 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 | 3 --- source/expressions.tex | 25 ------------------------- @@ -6008,13 +5985,13 @@ Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. source/threads.tex | 17 ----------------- source/time.tex | 19 ------------------- source/utilities.tex | 7 ------- - 26 files changed, 272 deletions(-) + 26 files changed, 268 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 9b4a8075..aa433c38 100644 +index 5bf27eb7..49ef7fdb 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -8700,7 +8700,6 @@ but stronger than those for a partial ordering. +@@ -8716,7 +8716,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: @@ -6022,7 +5999,7 @@ index 9b4a8075..aa433c38 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)} -@@ -9749,7 +9748,6 @@ Let $N = \tcode{last - first}$: +@@ -9768,7 +9767,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} @@ -6030,7 +6007,7 @@ index 9b4a8075..aa433c38 100644 \end{itemdescr} \indexlibraryglobal{stable_partition}% -@@ -10884,7 +10882,6 @@ A random access range \range{a}{b} is a +@@ -10916,7 +10914,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: @@ -6038,7 +6015,7 @@ index 9b4a8075..aa433c38 100644 \begin{itemize} \item With \tcode{$N$ = b - a}, for all $i$, $0 < i < N$, -@@ -13548,7 +13545,6 @@ template +@@ -13580,7 +13577,6 @@ template \pnum Some algorithms in this subclause are constrained with the following exposition-only concepts: @@ -6047,7 +6024,7 @@ index 9b4a8075..aa433c38 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index 4d017537..b0b15874 100644 +index ac68557f..63b582ea 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -294,7 +294,6 @@ int X::y = 1; // defines \tcode{X::y} @@ -6058,7 +6035,7 @@ index 4d017537..b0b15874 100644 \end{codeblock} whereas these are just declarations: \begin{codeblock} -@@ -831,7 +830,6 @@ compute equivalent values\iref{expr.eq}. +@@ -832,7 +831,6 @@ compute equivalent values\iref{expr.eq}. \pnum For the purposes of the preceding requirements: @@ -6066,7 +6043,7 @@ index 4d017537..b0b15874 100644 \begin{itemize} \item If \tcode{D} is a class with an implicitly-declared constructor\iref{class.default.ctor,class.copy.ctor}, -@@ -6123,7 +6121,6 @@ has the top-level cv-qualifier \keyword{volatile}. +@@ -6170,7 +6168,6 @@ has the top-level cv-qualifier \keyword{volatile}. \pnum Every integer type has an \term{integer conversion rank} defined as follows: @@ -6075,10 +6052,10 @@ index 4d017537..b0b15874 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 259175cd..d0d36a78 100644 +index eaf6e4da..e433d03d 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -1712,7 +1712,6 @@ for each non-static data member of +@@ -1626,7 +1626,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} @@ -6086,7 +6063,7 @@ index 259175cd..d0d36a78 100644 \indextext{constructor!move!non-trivial}% otherwise the copy/move constructor is \defnx{non-trivial}{constructor!copy!nontrivial}. -@@ -3331,7 +3330,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat +@@ -3244,7 +3243,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: @@ -6094,7 +6071,7 @@ index 259175cd..d0d36a78 100644 \begin{codeblock} u.m.~M(); new (&u.n) N; -@@ -3509,7 +3507,6 @@ A local class cannot have static data members\iref{class.static.data}. +@@ -3423,7 +3421,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: @@ -6102,7 +6079,7 @@ index 259175cd..d0d36a78 100644 \begin{bnf} \nontermdef{base-clause}\br \terminal{:} base-specifier-list -@@ -5484,7 +5481,6 @@ initializers for direct and virtual base class subobjects and +@@ -5402,7 +5399,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 @@ -6110,7 +6087,7 @@ index 259175cd..d0d36a78 100644 \begin{bnf} \nontermdef{ctor-initializer}\br \terminal{:} mem-initializer-list -@@ -5955,7 +5951,6 @@ public: +@@ -5873,7 +5869,6 @@ public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; \end{codeblock} @@ -6118,7 +6095,7 @@ index 259175cd..d0d36a78 100644 \end{example} \rSec2[class.inhctor.init]{Initialization by inherited constructor}% -@@ -6611,7 +6606,6 @@ any non-static data member of \tcode{C} is of reference type or +@@ -6529,7 +6524,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 @@ -6126,7 +6103,7 @@ index 259175cd..d0d36a78 100644 \begin{itemize} \item \tcode{a} or \tcode{b} is of class or enumeration type and -@@ -6732,7 +6726,6 @@ The \defnadj{synthesized}{three-way comparison} +@@ -6650,7 +6644,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: @@ -6134,7 +6111,7 @@ index 259175cd..d0d36a78 100644 \begin{itemize} \item If \tcode{a <=> b} is usable\iref{class.compare.default} and -@@ -6832,7 +6825,6 @@ The \defn{common comparison type} \tcode{U} +@@ -6750,7 +6743,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: @@ -6143,10 +6120,10 @@ index 259175cd..d0d36a78 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 17355dea..8186b85c 100644 +index 3aa1637b..d1e593f3 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -2619,7 +2619,6 @@ Overspecification. +@@ -2592,7 +2592,6 @@ Overspecification. \effect The signatures of the following member functions changed from taking an \tcode{iterator} to taking a \tcode{const_iterator}: @@ -6154,7 +6131,7 @@ index 17355dea..8186b85c 100644 \begin{itemize} \item \tcode{insert(iter, val)} for \tcode{vector}, \tcode{deque}, \tcode{list}, \tcode{set}, \tcode{multiset}, \tcode{map}, \tcode{multimap} -@@ -2691,7 +2690,6 @@ Clarify intentions, avoid workarounds. +@@ -2664,7 +2663,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: @@ -6162,7 +6139,7 @@ index 17355dea..8186b85c 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}; -@@ -3769,7 +3767,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in +@@ -3787,7 +3785,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in \pnum Header \libheaderref{cstring}: The following functions have different declarations: @@ -6170,7 +6147,7 @@ index 17355dea..8186b85c 100644 \begin{itemize} \item \tcode{strchr} \item \tcode{strpbrk} -@@ -3783,7 +3780,6 @@ Subclause \ref{cstring.syn} describes the changes. +@@ -3801,7 +3798,6 @@ Subclause \ref{cstring.syn} describes the changes. \pnum Header \libheaderref{cwchar}: The following functions have different declarations: @@ -6178,7 +6155,7 @@ index 17355dea..8186b85c 100644 \begin{itemize} \item \tcode{wcschr} \item \tcode{wcspbrk} -@@ -3808,7 +3804,6 @@ in addition to the names declared in +@@ -3826,7 +3822,6 @@ in addition to the names declared in \pnum Header \libheaderref{cstdlib}: The following functions have different behavior: @@ -6316,7 +6293,7 @@ index 1722b95c..6663d0e0 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 71b577a1..7053f174 100644 +index f3aded8c..0731405d 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6343,7 +6320,7 @@ index 71b577a1..7053f174 100644 \begin{itemize} \item \tcode{T} is \defnx{\oldconcept{DefaultInsertable} into \tcode{X}} -@@ -4041,14 +4038,12 @@ such that distance from +@@ -4045,14 +4042,12 @@ such that distance from to \tcode{j} is positive, the following condition holds: @@ -6358,7 +6335,7 @@ index 71b577a1..7053f174 100644 \begin{codeblock} value_comp(*i, *j) != false \end{codeblock} -@@ -6060,7 +6055,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: @@ -6366,7 +6343,7 @@ index 71b577a1..7053f174 100644 \begin{codeblock} template using @\placeholdernc{iter-value-type}@ = iterator_traits::value_type; // \expos -@@ -9331,7 +9325,6 @@ If \tcode{size() < sz}, +@@ -9343,7 +9337,6 @@ If \tcode{size() < sz}, appends \tcode{sz - size()} default-inserted elements to the sequence. If \tcode{sz <= size()}, equivalent to: @@ -6374,21 +6351,7 @@ index 71b577a1..7053f174 100644 \begin{codeblock} list::iterator it = begin(); advance(it, sz); -@@ -10620,13 +10613,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} -@@ -20099,7 +20090,6 @@ For each of +@@ -20310,7 +20303,6 @@ For each of \tcode{stack}, the library provides the following formatter specialization where \tcode{\placeholder{adaptor-type}} is the name of the template: @@ -6396,7 +6359,7 @@ index 71b577a1..7053f174 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -24291,7 +24281,6 @@ typename A::offset_policy +@@ -24566,7 +24558,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6404,43 +6367,27 @@ index 71b577a1..7053f174 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -25260,7 +25249,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} -@@ -25524,7 +25512,6 @@ $\le \tcode{src.extent($k$)}$ +@@ -25922,7 +25913,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. -@@ -25535,7 +25522,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 +@@ -25934,7 +25924,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$)} -@@ -25575,7 +25561,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 74100ed5..da75b28c 100644 +index 45030de5..94c821c5 100644 --- a/source/declarations.tex +++ b/source/declarations.tex -@@ -1591,7 +1591,6 @@ a partial specialization\iref{temp.spec.partial}, +@@ -1584,7 +1584,6 @@ a partial specialization\iref{temp.spec.partial}, an explicit instantiation\iref{temp.explicit}, or it has one of the following forms: @@ -6448,7 +6395,7 @@ index 74100ed5..da75b28c 100644 \begin{ncsimplebnf} class-key \opt{attribute-specifier-seq} identifier \terminal{;}\br class-key \opt{attribute-specifier-seq} simple-template-id \terminal{;} -@@ -2489,7 +2488,6 @@ the \grammarterm{declarator} declares a function. +@@ -2487,7 +2486,6 @@ the \grammarterm{declarator} declares a function. \pnum Declarators have the syntax @@ -6456,7 +6403,7 @@ index 74100ed5..da75b28c 100644 \begin{bnf} \nontermdef{declarator}\br ptr-declarator\br -@@ -4394,7 +4392,6 @@ In the following code, +@@ -4393,7 +4391,6 @@ In the following code, \tcode{g} will be called with the value \tcode{f(2)}: @@ -6464,7 +6411,7 @@ index 74100ed5..da75b28c 100644 \begin{codeblock} int a = 1; int f(int); -@@ -5064,7 +5061,6 @@ To +@@ -5063,7 +5060,6 @@ To an object of type \tcode{T} means: @@ -6472,7 +6419,7 @@ index 74100ed5..da75b28c 100644 \begin{itemize} \item If -@@ -5268,7 +5264,6 @@ is sequenced before those associated with +@@ -5273,7 +5269,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: @@ -6480,7 +6427,7 @@ index 74100ed5..da75b28c 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -6180,7 +6175,6 @@ a program that necessitates such a binding is ill-formed. +@@ -6191,7 +6186,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} @@ -6488,7 +6435,7 @@ index 74100ed5..da75b28c 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6648,7 +6642,6 @@ int j { 1 }; // initialize to 1 +@@ -6659,7 +6653,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -6496,7 +6443,7 @@ index 74100ed5..da75b28c 100644 \end{itemize} \pnum -@@ -7735,7 +7728,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, +@@ -7745,7 +7738,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, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -6504,7 +6451,7 @@ index 74100ed5..da75b28c 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7867,7 +7859,6 @@ struct S { +@@ -7877,7 +7869,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6512,7 +6459,7 @@ index 74100ed5..da75b28c 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7964,7 +7955,6 @@ If the underlying +@@ -7974,7 +7965,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6520,7 +6467,7 @@ index 74100ed5..da75b28c 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8423,7 +8413,6 @@ void h() { +@@ -8433,7 +8423,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} according to the following grammar: @@ -6528,7 +6475,7 @@ index 74100ed5..da75b28c 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8597,7 +8586,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8607,7 +8596,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, @@ -6536,7 +6483,7 @@ index 74100ed5..da75b28c 100644 \begin{codeblock} namespace A { class X { }; -@@ -9150,7 +9138,6 @@ otherwise identical. +@@ -9170,7 +9158,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6544,7 +6491,7 @@ index 74100ed5..da75b28c 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -10017,7 +10004,6 @@ may be applied to a function or a lambda call operator or +@@ -10040,7 +10027,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: @@ -6578,10 +6525,10 @@ index 88e1a340..ed441278 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 9f91843e..746166d0 100644 +index 0d2c5348..5d594143 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -464,7 +464,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: @@ -6589,7 +6536,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item \tcode{(} \grammarterm{expression} \tcode{)}, where \grammarterm{expression} is one of these expressions, -@@ -508,7 +507,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: @@ -6597,7 +6544,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item Zero or one conversion from the following set: lvalue-to-rvalue conversion, array-to-pointer conversion, and function-to-pointer -@@ -536,7 +534,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: @@ -6605,7 +6552,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item When used as operands of operators. The operator's requirements for its operands dictate the destination type\iref{expr.compound}. -@@ -662,7 +659,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: @@ -6613,7 +6560,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item If \tcode{T} is \cv{}~\tcode{std::nullptr_t}, the result is a -@@ -1168,7 +1164,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: @@ -6621,7 +6568,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item The lvalue-to-rvalue conversion\iref{conv.lval} is applied to each operand and -@@ -1211,7 +1206,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}: @@ -6629,7 +6576,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item If \tcode{T1} and \tcode{T2} are the same type, \tcode{C} is that type. -@@ -2797,7 +2791,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} +@@ -2810,7 +2804,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: @@ -6637,7 +6584,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item An \grammarterm{id-expression} that names a local entity -@@ -3407,7 +3400,6 @@ The \grammarterm{expression} is an unevaluated operand. +@@ -3420,7 +3413,6 @@ The \grammarterm{expression} is an unevaluated operand. Substitution of template arguments (if any) and verification of semantic properties proceed in the following order: @@ -6645,7 +6592,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -3419,7 +3411,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. +@@ -3432,7 +3424,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. \item If the \grammarterm{return-type-requirement} is present, then: @@ -6653,7 +6600,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -4502,7 +4493,6 @@ referred to by \tcode{T}. +@@ -4523,7 +4514,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: @@ -6661,7 +6608,7 @@ index 9f91843e..746166d0 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 -@@ -5020,7 +5010,6 @@ constness. +@@ -5037,7 +5027,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: @@ -6669,7 +6616,7 @@ index 9f91843e..746166d0 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 -@@ -5455,7 +5444,6 @@ is called a \term{suspension context} of the function. +@@ -5472,7 +5461,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: @@ -6677,7 +6624,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item \placeholder{p} is an lvalue naming the promise -@@ -5836,7 +5824,6 @@ and +@@ -5853,7 +5841,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}: @@ -6685,7 +6632,7 @@ index 9f91843e..746166d0 100644 \begin{codeblock} T x @\textrm{\placeholder{init}}@ ; \end{codeblock} -@@ -6188,7 +6175,6 @@ the alignment argument is removed from the argument list; +@@ -6213,7 +6200,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; @@ -6693,7 +6640,7 @@ index 9f91843e..746166d0 100644 \end{itemize} and then overload resolution is performed again. -@@ -6266,7 +6252,6 @@ necessarily be the same as that of the block if the object is an array. +@@ -6291,7 +6277,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: @@ -6701,7 +6648,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item If the \grammarterm{new-initializer} is omitted, the object is default-initialized\iref{dcl.init}. -@@ -6355,7 +6340,6 @@ struct S { +@@ -6380,7 +6365,6 @@ struct S { S* p = new (0) S; // error: non-placement deallocation function matches // placement allocation function \end{codeblock} @@ -6709,7 +6656,7 @@ index 9f91843e..746166d0 100644 \end{example} \pnum -@@ -6475,7 +6459,6 @@ of their constructor; see~\ref{class.base.init}). +@@ -6500,7 +6484,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: @@ -6717,7 +6664,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item If the allocation call for the \grammarterm{new-expression} for the object to -@@ -7323,7 +7306,6 @@ or one operand has integral type and +@@ -7345,7 +7328,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: @@ -6725,7 +6672,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, -@@ -7478,7 +7460,6 @@ is considered to be equivalent to a pointer to a hypothetical array element +@@ -7500,7 +7482,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: @@ -6733,7 +6680,7 @@ index 9f91843e..746166d0 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 -@@ -7491,7 +7472,6 @@ neither member is a subobject of zero size +@@ -7513,7 +7494,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. @@ -6741,7 +6688,7 @@ index 9f91843e..746166d0 100644 \end{itemize} \pnum -@@ -7553,7 +7533,6 @@ If at least one of the converted operands is a pointer, +@@ -7575,7 +7555,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: @@ -6749,7 +6696,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item If one pointer represents the address of a complete object, and another -@@ -7583,7 +7562,6 @@ qualification conversions\iref{conv.qual} +@@ -7605,7 +7584,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: @@ -6757,7 +6704,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item If two pointers to members are both the null member pointer value, they compare -@@ -7869,7 +7847,6 @@ Attempts are made to form an implicit conversion sequence +@@ -7891,7 +7869,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: @@ -6765,7 +6712,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item If \tcode{E2} is an lvalue, the target type is ``lvalue reference to \tcode{T2}'', -@@ -7948,7 +7925,6 @@ subclause. +@@ -7970,7 +7947,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: @@ -6773,7 +6720,7 @@ index 9f91843e..746166d0 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. -@@ -7978,7 +7954,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. +@@ -8000,7 +7976,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}. @@ -6782,7 +6729,7 @@ index 9f91843e..746166d0 100644 \rSec2[expr.yield]{Yielding a value}% diff --git a/source/future.tex b/source/future.tex -index 41979b62..4957e2c3 100644 +index c72d59ea..a740fd47 100644 --- a/source/future.tex +++ b/source/future.tex @@ -283,7 +283,6 @@ shown in the above synopsis. @@ -6809,7 +6756,7 @@ index 41979b62..4957e2c3 100644 \begin{codeblock} namespace std { template struct variant_size; -@@ -640,7 +637,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: @@ -6817,7 +6764,7 @@ index 41979b62..4957e2c3 100644 \indexlibraryglobal{iterator}% \begin{codeblock} namespace std { -@@ -674,7 +670,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: @@ -6825,7 +6772,7 @@ index 41979b62..4957e2c3 100644 \begin{codeblock} class MyIterator : public iterator { -@@ -688,7 +683,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}: @@ -6833,7 +6780,7 @@ index 41979b62..4957e2c3 100644 \begin{codeblock} namespace std { template -@@ -798,7 +792,6 @@ are not required to avoid data races\iref{res.on.data.races}. +@@ -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: @@ -6841,7 +6788,7 @@ index 41979b62..4957e2c3 100644 \indexlibraryglobal{u8path}% \begin{itemdecl} template -@@ -918,7 +911,6 @@ std::string generic_string() const; +@@ -949,7 +942,6 @@ std::string generic_string() const; \pnum The header \libheaderrefx{atomic}{atomics.syn} has the following additions. @@ -6973,10 +6920,10 @@ index 90000ab2..6058ccab 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 ffa39eaf..ed2a7332 100644 +index 3deb3e2b..fcbb42cd 100644 --- a/source/iterators.tex +++ b/source/iterators.tex -@@ -948,7 +948,6 @@ may be defined as \keyword{void}. +@@ -960,7 +960,6 @@ may be defined as \keyword{void}. \pnum The definitions in this subclause make use of the following exposition-only concepts: @@ -6984,7 +6931,7 @@ index ffa39eaf..ed2a7332 100644 \begin{codeblock} template concept @\defexposconcept{cpp17-iterator}@ = -@@ -1006,7 +1005,6 @@ concept @\defexposconcept{cpp17-random-access-iterator}@ = +@@ -1018,7 +1017,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: @@ -6992,7 +6939,7 @@ index ffa39eaf..ed2a7332 100644 \begin{itemize} \item If \tcode{I} has valid\iref{temp.deduct} member -@@ -1153,7 +1151,6 @@ The name \tcode{ranges::iter_move} denotes +@@ -1165,7 +1163,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: @@ -7000,7 +6947,7 @@ index ffa39eaf..ed2a7332 100644 \begin{itemize} \item \tcode{iter_move(E)}, if \tcode{E} has class or enumeration type and -@@ -2792,7 +2789,6 @@ namespace std { +@@ -2804,7 +2801,6 @@ namespace std { A program-defined iterator \tcode{BinaryTreeIterator} can be included into the bidirectional iterator category by specializing the \tcode{iterator_traits} template: @@ -7008,7 +6955,7 @@ index ffa39eaf..ed2a7332 100644 \begin{codeblock} template struct iterator_traits> { using iterator_category = bidirectional_iterator_tag; -@@ -2810,7 +2806,6 @@ If +@@ -2822,7 +2818,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: @@ -7016,7 +6963,7 @@ index ffa39eaf..ed2a7332 100644 \begin{codeblock} template inline void -@@ -3397,7 +3392,6 @@ As if by: +@@ -3409,7 +3404,6 @@ As if by: Iterator tmp = current; return *--tmp; \end{codeblock} @@ -7024,7 +6971,7 @@ index ffa39eaf..ed2a7332 100644 \end{itemdescr} \indexlibrarymember{operator->}{reverse_iterator}% -@@ -4779,7 +4773,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 +@@ -4792,7 +4786,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} @@ -7032,7 +6979,7 @@ index ffa39eaf..ed2a7332 100644 \end{example} \rSec3[move.iterator]{Class template \tcode{move_iterator}} -@@ -6498,7 +6491,6 @@ partial_sum(istream_iterator(cin), +@@ -6511,7 +6504,6 @@ partial_sum(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "@\textbackslash@n")); \end{codeblock} @@ -7041,7 +6988,7 @@ index ffa39eaf..ed2a7332 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 1c229c08..cc034328 100644 +index 4e6c7fa2..dda79b54 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. @@ -7092,7 +7039,7 @@ index 1c229c08..cc034328 100644 \begin{itemize} \item \constraints -@@ -619,7 +613,6 @@ values\iref{basic.fundamental}. +@@ -616,7 +610,6 @@ values\iref{basic.fundamental}. \pnum The enumerated type \tcode{\placeholder{enumerated}} can be written: @@ -7100,7 +7047,7 @@ index 1c229c08..cc034328 100644 \begin{codeblock} enum @\placeholder{enumerated}@ { @$\tcode{\placeholder{V}}_{0}$@, @$\tcode{\placeholder{V}}_{1}$@, @$\tcode{\placeholder{V}}_{2}$@, @$\tcode{\placeholder{V}}_{3}$@, @$\ldots$@ }; -@@ -652,7 +645,6 @@ or as a +@@ -649,7 +642,6 @@ or as a \pnum The bitmask type \tcode{\placeholder{bitmask}} can be written: @@ -7108,7 +7055,7 @@ index 1c229c08..cc034328 100644 \begin{codeblock} // For exposition only. // \tcode{int_type} is an integral type capable of representing all values of the bitmask type. -@@ -729,7 +721,6 @@ The value \textit{Y} \defnx{is set}{bitmask!value!is set} in the object +@@ -726,7 +718,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: @@ -7116,7 +7063,7 @@ index 1c229c08..cc034328 100644 \begin{itemize} \item Properties specified as \defn{locale-specific} -@@ -970,7 +961,6 @@ some subclauses provide representative declarations, and semantic requirements, +@@ -972,7 +963,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: @@ -7124,7 +7071,7 @@ index 1c229c08..cc034328 100644 \begin{codeblock} streambuf* sb; // \expos \end{codeblock} -@@ -1936,7 +1926,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: @@ -7132,7 +7079,7 @@ index 1c229c08..cc034328 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}. -@@ -2942,7 +2931,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}: @@ -7140,7 +7087,7 @@ index 1c229c08..cc034328 100644 \begin{codeblock} template struct SimpleAllocator { -@@ -3428,13 +3416,11 @@ the description of function semantics apply +@@ -3430,13 +3418,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. @@ -7154,7 +7101,7 @@ index 1c229c08..cc034328 100644 \begin{itemize} \item \tcode{terminate_handler} -@@ -3455,7 +3441,6 @@ Exception handling. +@@ -3457,7 +3443,6 @@ Exception handling. \pnum A \Cpp{} program can get a pointer to the current handler function by calling the following functions: @@ -7162,7 +7109,7 @@ index 1c229c08..cc034328 100644 \begin{itemize} \item \indexlibraryglobal{get_new_handler}% -@@ -3481,7 +3466,6 @@ on the implementation. +@@ -3483,7 +3468,6 @@ on the implementation. \pnum In particular, the behavior is undefined in the following cases: @@ -7170,7 +7117,7 @@ index 1c229c08..cc034328 100644 \begin{itemize} \item For replacement functions\iref{replacement.functions}, if the installed replacement function does not -@@ -3766,7 +3750,6 @@ functions an implementation shall provide corresponding definitions. +@@ -3768,7 +3752,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: @@ -7189,10 +7136,10 @@ index efd4eb00..12180661 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index 1b455e86..f2964f90 100644 +index efbf7fee..12c714b4 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1571,7 +1571,6 @@ when considered as an unevaluated operand. +@@ -1445,7 +1445,6 @@ when considered as an unevaluated operand. \pnum Let \exposid{pair-constructor} be an exposition-only class defined as follows: @@ -7200,7 +7147,7 @@ index 1b455e86..f2964f90 100644 \begin{codeblock} class @\exposid{pair-constructor}@ { using @\exposid{pair-type}@ = remove_cv_t; // \expos -@@ -3706,7 +3705,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a); +@@ -3580,7 +3579,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: @@ -7209,10 +7156,10 @@ index 1b455e86..f2964f90 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index f0bd37f5..36a2a88e 100644 +index 82675162..b1abb2de 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -1947,7 +1947,6 @@ is_base_of_v // \tcode{false} +@@ -1939,7 +1939,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 well-formed, including any implicit conversions to the return type of the function: @@ -7220,7 +7167,7 @@ index f0bd37f5..36a2a88e 100644 \begin{codeblock} To test() { return declval(); -@@ -2455,7 +2454,6 @@ If any of the types computed above is ill-formed, then +@@ -2447,7 +2446,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: @@ -7229,7 +7176,7 @@ index f0bd37f5..36a2a88e 100644 \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 65e08e2c..82e20d65 100644 +index bbf484e7..4342da1a 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); @@ -7256,7 +7203,7 @@ index 65e08e2c..82e20d65 100644 \begin{itemize} \item By way of initialization, -@@ -8356,7 +8353,6 @@ A unique function with the indicated name can be applied (unqualified) +@@ -8358,7 +8355,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}. @@ -7264,7 +7211,7 @@ index 65e08e2c..82e20d65 100644 \end{itemdescr} \rSec3[valarray.special]{Specialized algorithms} -@@ -8372,7 +8368,6 @@ template void swap(valarray& x, valarray& y) noexcept; +@@ -8374,7 +8370,6 @@ template void swap(valarray& x, valarray& y) noexcept; Equivalent to \tcode{x.swap(y)}. \end{itemdescr} @@ -7272,7 +7219,7 @@ index 65e08e2c..82e20d65 100644 \rSec2[class.slice]{Class \tcode{slice}} \rSec3[class.slice.overview]{Overview} -@@ -8792,7 +8787,6 @@ namespace std { +@@ -8794,7 +8789,6 @@ namespace std { This template is a helper template used by the \tcode{gslice} subscript operator @@ -7280,7 +7227,7 @@ index 65e08e2c..82e20d65 100644 \indexlibraryglobal{gslice_array}% \indexlibraryglobal{valarray}% \begin{itemdecl} -@@ -8918,7 +8912,6 @@ namespace std { +@@ -8920,7 +8914,6 @@ namespace std { \pnum This template is a helper template used by the mask subscript operator: @@ -7288,7 +7235,7 @@ index 65e08e2c..82e20d65 100644 \indexlibrarymember{operator[]}{mask_array}% \begin{itemdecl} mask_array valarray::operator[](const valarray&); -@@ -9035,7 +9028,6 @@ namespace std { +@@ -9037,7 +9030,6 @@ namespace std { \pnum This template is a helper template used by the indirect subscript operator @@ -7297,7 +7244,7 @@ index 65e08e2c..82e20d65 100644 \begin{itemdecl} indirect_array valarray::operator[](const valarray&); diff --git a/source/overloading.tex b/source/overloading.tex -index 6fa6a1b1..e2f944d5 100644 +index 9533e291..9eadc766 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -103,7 +103,6 @@ the list of arguments in its own unique way. @@ -7316,7 +7263,7 @@ index 6fa6a1b1..e2f944d5 100644 \begin{ncbnf} postfix-expression:\br postfix-expression \terminal{.} id-expression\br -@@ -1014,7 +1012,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: @@ -7324,7 +7271,7 @@ index 6fa6a1b1..e2f944d5 100644 \begin{codeblock} struct A { }; void operator + (A, A); -@@ -1076,7 +1073,6 @@ Assuming that +@@ -1080,7 +1077,6 @@ Assuming that \tcode{T} a class type, the candidate functions are selected as follows: @@ -7332,7 +7279,7 @@ index 6fa6a1b1..e2f944d5 100644 \begin{itemize} \item The non-explicit constructors\iref{class.conv.ctor} of -@@ -1122,7 +1118,6 @@ conversion function to be invoked. +@@ -1126,7 +1122,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: @@ -7340,7 +7287,7 @@ index 6fa6a1b1..e2f944d5 100644 \begin{itemize} \item The permissible types for non-explicit conversion functions are -@@ -1194,7 +1189,6 @@ list-initialized such that \ref{dcl.init.list} specifies that overload resolutio +@@ -1198,7 +1193,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: @@ -7348,7 +7295,7 @@ index 6fa6a1b1..e2f944d5 100644 \begin{itemize} \item If the initializer list is not empty or \tcode{T} has no default constructor, -@@ -1276,7 +1270,6 @@ called the \defn{copy deduction candidate}. +@@ -1280,7 +1274,6 @@ called the \defn{copy deduction candidate}. For each \grammarterm{deduction-guide}, a function or function template with the following properties: @@ -7356,7 +7303,7 @@ index 6fa6a1b1..e2f944d5 100644 \begin{itemize} \item The \grammarterm{template-head}, if any, -@@ -2744,7 +2737,6 @@ sequence}{over.ics.ellipsis}. +@@ -2748,7 +2741,6 @@ sequence}{over.ics.ellipsis}. Two implicit conversion sequences of the same form are indistinguishable conversion sequences unless one of the following rules applies: @@ -7364,7 +7311,7 @@ index 6fa6a1b1..e2f944d5 100644 \begin{itemize} \item List-initialization sequence \tcode{L1} is a better conversion sequence than -@@ -2976,7 +2968,6 @@ int i = f(a); // calls \tcode{f(int)}, because \tcode{short} $ +@@ -2980,7 +2972,6 @@ int i = f(a); // calls \tcode{f(int)}, because \tcode{short} $ // better than \tcode{short} $\to$ \tcode{float}. \end{codeblock} \end{example} @@ -7372,7 +7319,7 @@ index 6fa6a1b1..e2f944d5 100644 \end{itemize} \pnum -@@ -2985,7 +2976,6 @@ better conversion than a Promotion, which is a better conversion than +@@ -2989,7 +2980,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: @@ -7380,7 +7327,7 @@ index 6fa6a1b1..e2f944d5 100644 \begin{itemize} \item A conversion that does not convert a pointer or a pointer to member -@@ -4152,7 +4142,6 @@ is a \defnx{literal operator template}{literal!operator!template}. +@@ -4146,7 +4136,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: @@ -7389,10 +7336,10 @@ index 6fa6a1b1..e2f944d5 100644 const char* unsigned long long int diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 14e251f7..97e9ac52 100644 +index 9747c367..01223d42 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex -@@ -194,7 +194,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 @@ -7400,7 +7347,7 @@ index 14e251f7..97e9ac52 100644 \begin{itemize} \item a \tcode{\#} preprocessing token, or -@@ -656,7 +655,6 @@ including within a preprocessing directive. +@@ -660,7 +659,6 @@ including within a preprocessing directive. \begin{example} This demonstrates a way to include a library \tcode{optional} facility only if it is available: @@ -7408,7 +7355,7 @@ index 14e251f7..97e9ac52 100644 \begin{codeblock} #if __has_include() # include -@@ -813,14 +811,12 @@ However, using the \tcode{< >} form for headers provided +@@ -821,14 +819,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: @@ -7423,7 +7370,7 @@ index 14e251f7..97e9ac52 100644 \end{note} \pnum -@@ -828,7 +824,6 @@ achieves wider portability. For instance: +@@ -836,7 +832,6 @@ achieves wider portability. For instance: This illustrates macro-replaced \tcode{\#include} directives: @@ -7431,7 +7378,7 @@ index 14e251f7..97e9ac52 100644 \begin{codeblock} #if VERSION == 1 #define INCFILE "vers1.h" -@@ -1937,7 +1932,6 @@ is optional. +@@ -1934,7 +1929,6 @@ is optional. \pnum \begin{example} In the following fragment: @@ -7439,7 +7386,7 @@ index 14e251f7..97e9ac52 100644 \begin{codeblock} #define hash_hash # ## # #define mkstr(a) # a -@@ -1947,7 +1941,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";} +@@ -1944,7 +1938,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";} \end{codeblock} The expansion produces, at various stages: @@ -7447,7 +7394,7 @@ index 14e251f7..97e9ac52 100644 \begin{codeblock} join(x, y) in_between(x hash_hash y) -@@ -2179,7 +2172,6 @@ has no effect. +@@ -2181,7 +2174,6 @@ has no effect. \pnum The following macro names shall be defined by the implementation: @@ -7455,7 +7402,7 @@ index 14e251f7..97e9ac52 100644 \begin{description} \item -@@ -2412,7 +2404,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali +@@ -2413,7 +2405,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: @@ -7463,7 +7410,7 @@ index 14e251f7..97e9ac52 100644 \begin{description} \item \indextext{__stdc__@\mname{STDC}}% -@@ -2447,7 +2438,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. +@@ -2448,7 +2439,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 can have more than one \link{thread of execution}{intro.multithread}. @@ -7472,7 +7419,7 @@ index 14e251f7..97e9ac52 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index c93b855e..095b3aca 100644 +index 708004ea..e12de083 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7547,7 +7494,7 @@ index c93b855e..095b3aca 100644 \begin{itemize} \item If \tcode{T} is a specialization -@@ -5910,7 +5901,6 @@ then +@@ -5915,7 +5906,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: @@ -7555,7 +7502,7 @@ index c93b855e..095b3aca 100644 \begin{itemize} \item if \tcode{T} is a specialization of \tcode{span}, then \tcode{U} is \tcode{span}; -@@ -6372,7 +6362,6 @@ If \tcode{decltype((F))} does not model +@@ -6377,7 +6367,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: @@ -7563,7 +7510,7 @@ index c93b855e..095b3aca 100644 \begin{itemize} \item If \tcode{T} is a specialization of -@@ -7448,7 +7437,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and +@@ -7458,7 +7447,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: @@ -7571,7 +7518,7 @@ index c93b855e..095b3aca 100644 \begin{itemize} \item Let \placeholder{OUTERC} denote -@@ -9747,7 +9735,6 @@ appears in the immediate context of a template instantiation. +@@ -9758,7 +9746,6 @@ appears in the immediate context of a template instantiation. \end{note} Otherwise, \tcode{views::counted(E, F)} is expression-equivalent to: @@ -7580,10 +7527,10 @@ index c93b855e..095b3aca 100644 \item If \tcode{T} models \libconcept{contiguous_iterator}, diff --git a/source/statements.tex b/source/statements.tex -index 785798f7..fa5898d3 100644 +index 247b8bce..76449634 100644 --- a/source/statements.tex +++ b/source/statements.tex -@@ -730,7 +730,6 @@ exposition only; and +@@ -727,7 +727,6 @@ exposition only; and \item \exposid{begin-expr} and \exposid{end-expr} are determined as follows: @@ -7592,10 +7539,10 @@ index 785798f7..fa5898d3 100644 \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are diff --git a/source/support.tex b/source/support.tex -index aac6e41e..cb42f682 100644 +index 98842079..1a45ee0e 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -2459,7 +2459,6 @@ This requirement is binding on any replacement versions of these functions. +@@ -2462,7 +2462,6 @@ This requirement is binding on any replacement versions of these functions. \pnum \default @@ -7603,7 +7550,7 @@ index aac6e41e..cb42f682 100644 \begin{itemize} \item Executes a loop: -@@ -2938,7 +2937,6 @@ Intentionally performs no other action. +@@ -2941,7 +2940,6 @@ Intentionally performs no other action. \pnum \begin{example} This can be useful for constructing an object at a known address: @@ -7611,7 +7558,7 @@ index aac6e41e..cb42f682 100644 \begin{codeblock} void* place = operator new(sizeof(Something)); Something* p = new (place) Something(); -@@ -4867,7 +4865,6 @@ are collectively termed the \defn{comparison category types}. +@@ -4850,7 +4848,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: @@ -7619,7 +7566,7 @@ index aac6e41e..cb42f682 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 -@@ -5816,7 +5813,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and +@@ -5804,7 +5801,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: @@ -7628,10 +7575,10 @@ index aac6e41e..cb42f682 100644 using promise_type = R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index fbeb36af..684e7c85 100644 +index 45edbccb..2a51aefc 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -235,7 +235,6 @@ in some translation unit; no diagnostic is required. +@@ -256,7 +256,6 @@ in some translation unit; no diagnostic is required. The syntax for \grammarterm{template-parameter}{s} is: @@ -7639,7 +7586,7 @@ index fbeb36af..684e7c85 100644 \begin{bnf} \nontermdef{template-parameter}\br type-parameter\br -@@ -1570,7 +1569,6 @@ for function templates}{temp.func.order}. +@@ -1635,7 +1634,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): @@ -7647,7 +7594,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item Each of the two function templates has the same template parameters -@@ -1967,7 +1965,6 @@ or templated function declaration\iref{dcl.fct} +@@ -2032,7 +2030,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: @@ -7655,7 +7602,7 @@ index fbeb36af..684e7c85 100644 \begin{bnf} \nontermdef{constraint-expression}\br logical-or-expression -@@ -1983,7 +1980,6 @@ that are used to constrain the declaration. +@@ -2048,7 +2045,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: @@ -7663,7 +7610,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item If there are no introduced \grammarterm{constraint-expression}{s}, the declaration has no associated constraints. -@@ -2773,7 +2769,6 @@ public: +@@ -2838,7 +2834,6 @@ public: declares three member functions of a class template. The subscript function can be defined like this: @@ -7671,7 +7618,7 @@ index fbeb36af..684e7c85 100644 \begin{codeblock} template T& Array::operator[](int i) { if (i<0 || sz<=i) error("Array: range error"); -@@ -3165,7 +3160,6 @@ produces zero or more instantiations of the pattern in a list (described below). +@@ -3230,7 +3225,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: @@ -7679,7 +7626,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item In a function parameter pack\iref{dcl.fct}; the pattern is the \grammarterm{parameter-declaration} without the ellipsis. -@@ -3771,7 +3765,6 @@ All other constant template arguments are specialized. +@@ -3836,7 +3830,6 @@ All other constant template arguments are specialized. \pnum Within the argument list of a partial specialization, the following restrictions apply: @@ -7687,7 +7634,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item The type of a template parameter corresponding to a specialized constant template -@@ -3785,7 +3778,6 @@ template< int X, int (*array_ptr)[X] > class A {}; +@@ -3850,7 +3843,6 @@ template< int X, int (*array_ptr)[X] > class A {}; int array[5]; template< int X > class A { }; // error \end{codeblock} @@ -7695,7 +7642,7 @@ index fbeb36af..684e7c85 100644 \end{example} \item The partial specialization shall be more specialized than the primary -@@ -3911,7 +3903,6 @@ the first is \defn{more specialized} than the second if, given the following +@@ -3976,7 +3968,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}: @@ -7703,7 +7650,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item Each of the two -@@ -4063,7 +4054,6 @@ A::B abci; // uses \#1 +@@ -4128,7 +4119,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: @@ -7711,7 +7658,7 @@ index fbeb36af..684e7c85 100644 \begin{codeblock} template class Array { }; template void sort(Array&); -@@ -4118,7 +4108,6 @@ void h(int* p) { +@@ -4183,7 +4173,6 @@ void h(int* p) { } \end{codeblock} \end{minipage} @@ -7719,7 +7666,7 @@ index fbeb36af..684e7c85 100644 \end{example} \pnum -@@ -4304,7 +4293,6 @@ to guarantee that functionally equivalent declarations will be treated +@@ -4369,7 +4358,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: @@ -7727,7 +7674,7 @@ index fbeb36af..684e7c85 100644 \begin{codeblock} // guaranteed to be the same template void f(A, A); -@@ -4397,7 +4385,6 @@ then the order of the function parameters in its transformed template +@@ -4460,7 +4448,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$: @@ -7735,7 +7682,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item The type $X(M)$ is ``rvalue reference to \cv{}~$A$'' -@@ -4653,7 +4640,6 @@ template class TT> +@@ -4718,7 +4705,6 @@ template class TT> void g(TT>); g(v); // OK, \tcode{TT} = \tcode{vector} \end{codeblock} @@ -7743,7 +7690,7 @@ index fbeb36af..684e7c85 100644 \end{example} \pnum -@@ -5519,7 +5505,6 @@ of a class that is the current instantiation. +@@ -5584,7 +5570,6 @@ of a class that is the current instantiation. \pnum A qualified name\iref{basic.lookup.qual} is dependent if @@ -7751,7 +7698,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item it is a \grammarterm{conversion-function-id} -@@ -5768,7 +5753,6 @@ specified by the +@@ -5833,7 +5818,6 @@ specified by the or \grammarterm{new-type-id} is dependent, even if any subexpression is type-dependent: @@ -7759,7 +7706,7 @@ index fbeb36af..684e7c85 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br simple-type-specifier braced-init-list\br -@@ -5786,7 +5770,6 @@ typename-specifier braced-init-list\br +@@ -5851,7 +5835,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): @@ -7767,7 +7714,7 @@ index fbeb36af..684e7c85 100644 \begin{ncsimplebnf} literal\br \keyword{sizeof} unary-expression\br -@@ -5891,7 +5874,6 @@ Expressions of the following form are value-dependent if the +@@ -5962,7 +5945,6 @@ Expressions of the following form are value-dependent if the is type-dependent or the \grammarterm{type-id} is dependent: @@ -7775,7 +7722,7 @@ index fbeb36af..684e7c85 100644 \begin{ncsimplebnf} \keyword{sizeof} unary-expression\br \keyword{sizeof} \terminal{(} type-id \terminal{)}\br -@@ -5919,7 +5901,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} +@@ -5990,7 +5972,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: @@ -7783,7 +7730,7 @@ index fbeb36af..684e7c85 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br typename-specifier \terminal{(} \opt{expression-list} \terminal{)}\br -@@ -5934,7 +5915,6 @@ typename-specifier braced-init-list\br +@@ -6005,7 +5986,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following form are value-dependent: @@ -7791,7 +7738,7 @@ index fbeb36af..684e7c85 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -6936,7 +6916,6 @@ template. +@@ -7005,7 +6985,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -7799,7 +7746,7 @@ index fbeb36af..684e7c85 100644 \begin{bnf} \nontermdef{explicit-instantiation}\br \opt{\keyword{extern}} \keyword{template} declaration -@@ -7411,7 +7390,6 @@ otherwise, it is a declaration. +@@ -7480,7 +7459,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}: @@ -7807,7 +7754,7 @@ index fbeb36af..684e7c85 100644 \begin{codeblock} template<> X Q::x; // declaration template<> X Q::x (); // error: declares a function -@@ -7670,7 +7648,6 @@ An empty template argument list can be used to indicate that a given +@@ -7739,7 +7717,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: @@ -7815,7 +7762,7 @@ index fbeb36af..684e7c85 100644 \begin{codeblock} template int f(T); // \#1 int f(int); // \#2 -@@ -8252,7 +8229,6 @@ void h(int x, float& y) { +@@ -8321,7 +8298,6 @@ void h(int x, float& y) { If \tcode{P} is not a reference type: @@ -7823,7 +7770,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item If -@@ -8347,7 +8323,6 @@ the type +@@ -8416,7 +8392,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -7831,7 +7778,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item If the original -@@ -8537,7 +8512,6 @@ of \tcode{P} for type deduction and for any further references to or transformat +@@ -8606,7 +8581,6 @@ of \tcode{P} for type deduction and for any further references to or transformat If \tcode{A} is not a reference type: @@ -7839,7 +7786,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item If -@@ -8583,7 +8557,6 @@ values that will make the deduced +@@ -8652,7 +8626,6 @@ values that will make the deduced identical to \tcode{A}. However, certain attributes of \tcode{A} may be ignored: @@ -7847,7 +7794,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item If the original \tcode{A} is a reference type, -@@ -8628,7 +8601,6 @@ the argument template and template-1 as the parameter template. +@@ -8697,7 +8670,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: @@ -7855,7 +7802,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item In the context of a function call, the types used are those function parameter types -@@ -8656,7 +8628,6 @@ and +@@ -8725,7 +8697,6 @@ and \pnum Before the partial ordering is done, certain transformations are performed on the types used for partial ordering: @@ -7863,7 +7810,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item If -@@ -8862,7 +8833,6 @@ A given type +@@ -8931,7 +8902,6 @@ A given type \tcode{P} can be composed from a number of other types, templates, and constant template argument values: @@ -7871,7 +7818,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item A function type includes the types of each of the function parameters, -@@ -8904,7 +8874,6 @@ need not have the same form. +@@ -8973,7 +8943,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -7879,7 +7826,7 @@ index fbeb36af..684e7c85 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -8999,7 +8968,6 @@ is deduced. +@@ -9068,7 +9037,6 @@ is deduced. \begin{example} Here is an example in which different parameter/argument pairs produce inconsistent template argument deductions: @@ -7887,7 +7834,7 @@ index fbeb36af..684e7c85 100644 \begin{codeblock} template void f(T x, T y) { @\commentellip@ } struct A { @\commentellip@ }; -@@ -9016,7 +8984,6 @@ Here is an example where two template arguments are deduced from a +@@ -9085,7 +9053,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: @@ -7895,7 +7842,7 @@ index fbeb36af..684e7c85 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -9033,7 +9000,6 @@ void r() { +@@ -9102,7 +9069,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -7903,7 +7850,7 @@ index fbeb36af..684e7c85 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -9052,7 +9018,6 @@ void h() { +@@ -9121,7 +9087,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: @@ -7911,7 +7858,7 @@ index fbeb36af..684e7c85 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -9063,7 +9028,6 @@ void s() { +@@ -9132,7 +9097,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: @@ -7920,10 +7867,10 @@ index fbeb36af..684e7c85 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 0962d340..7fbc2b5b 100644 +index 0d7a40ef..b2503433 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -7323,7 +7323,6 @@ and visible to other threads. +@@ -7344,7 +7344,6 @@ and visible to other threads. \pnum The expression \tcode{m.lock()} is well-formed and has the following semantics: @@ -7931,7 +7878,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -7366,7 +7365,6 @@ that a deadlock would occur. +@@ -7387,7 +7386,6 @@ that a deadlock would occur. \pnum The expression \tcode{m.try_lock()} is well-formed and has the following semantics: @@ -7939,7 +7886,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -7412,7 +7410,6 @@ Nothing. +@@ -7433,7 +7431,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -7947,7 +7894,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -7567,7 +7564,6 @@ requirements\iref{thread.req.lockable.timed}. +@@ -7588,7 +7585,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: @@ -7955,7 +7902,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -7609,7 +7605,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -7630,7 +7626,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: @@ -7963,7 +7910,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -7796,7 +7791,6 @@ shared lock. +@@ -7817,7 +7812,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -7971,7 +7918,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -7833,7 +7827,6 @@ The calling thread has a shared lock on the mutex. +@@ -7854,7 +7848,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: @@ -7979,7 +7926,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -7858,7 +7851,6 @@ Nothing. +@@ -7879,7 +7872,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -7987,7 +7934,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -7961,7 +7953,6 @@ requirements\iref{thread.req.lockable.shared.timed}. +@@ -7982,7 +7974,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: @@ -7995,7 +7942,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -8006,7 +7997,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -8027,7 +8018,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: @@ -8003,7 +7950,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -10144,7 +10134,6 @@ template +@@ -10168,7 +10158,6 @@ template \begin{itemdescr} \pnum \effects @@ -8011,7 +7958,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -11535,7 +11524,6 @@ shared state as \tcode{*this}. +@@ -11559,7 +11548,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -8019,7 +7966,7 @@ index 0962d340..7fbc2b5b 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}. -@@ -11598,7 +11586,6 @@ already has a stored value or exception. +@@ -11622,7 +11610,6 @@ already has a stored value or exception. \pnum \errors @@ -8027,7 +7974,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -11938,7 +11925,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -11962,7 +11949,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -8035,7 +7982,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12282,7 +12268,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -12306,7 +12292,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8043,7 +7990,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12317,7 +12302,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -12341,7 +12326,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8051,7 +7998,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12373,7 +12357,6 @@ The further behavior +@@ -12397,7 +12381,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): @@ -8060,10 +8007,10 @@ index 0962d340..7fbc2b5b 100644 \item If \tcode{launch::async} is set in \tcode{policy}, calls diff --git a/source/time.tex b/source/time.tex -index f1f22e40..2ff12f44 100644 +index 6cb712e2..f3cefea4 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -2068,7 +2068,6 @@ return os << s.str(); +@@ -2072,7 +2072,6 @@ return os << s.str(); \end{codeblock} where \tcode{\placeholder{units-suffix}} depends on the type \tcode{Period::type} as follows: @@ -8071,7 +8018,7 @@ index f1f22e40..2ff12f44 100644 \begin{itemize} \item If \tcode{Period::type} is \tcode{atto}, -@@ -2946,7 +2945,6 @@ for (auto i = 0; i < 8; ++i, u += 250ms) +@@ -2950,7 +2949,6 @@ for (auto i = 0; i < 8; ++i, u += 250ms) \end{codeblock} Produces this output: @@ -8079,7 +8026,7 @@ index f1f22e40..2ff12f44 100644 \begin{outputblock} 2015-06-30 23:59:59.500 UTC 2015-06-30 23:59:59.750 UTC -@@ -3152,7 +3150,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, tt); +@@ -3156,7 +3154,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, tt); \end{codeblock} Produces this output: @@ -8087,7 +8034,7 @@ index f1f22e40..2ff12f44 100644 \begin{outputblock} 2000-01-01 00:00:00 UTC == 2000-01-01 00:00:32 TAI \end{outputblock} -@@ -3315,7 +3312,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, gt); +@@ -3319,7 +3316,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, gt); \end{codeblock} Produces this output: @@ -8095,7 +8042,7 @@ index f1f22e40..2ff12f44 100644 \begin{outputblock} 2000-01-01 00:00:00 UTC == 2000-01-01 00:00:13 GPS \end{outputblock} -@@ -3384,7 +3380,6 @@ such as \tcode{std::file\-sys\-tem}. +@@ -3388,7 +3384,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: @@ -8103,7 +8050,7 @@ index f1f22e40..2ff12f44 100644 \begin{codeblock} template static sys_time<@\seebelow@> -@@ -3393,9 +3388,7 @@ template +@@ -3397,9 +3392,7 @@ template static file_time<@\seebelow@> from_sys(const sys_time&); \end{codeblock} @@ -8113,7 +8060,7 @@ index f1f22e40..2ff12f44 100644 \begin{codeblock} template static utc_time<@\seebelow@> -@@ -3864,7 +3857,6 @@ template +@@ -3872,7 +3865,6 @@ template \constraints At least one of the following clock time conversion expressions is well-formed: @@ -8121,7 +8068,7 @@ index f1f22e40..2ff12f44 100644 \begin{itemize} \item \begin{codeblock} -@@ -7910,7 +7902,6 @@ a conventional syntax for the creation of civil calendar dates. +@@ -7918,7 +7910,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: @@ -8129,7 +8076,7 @@ index f1f22e40..2ff12f44 100644 \begin{codeblock} @\tcode{\placeholder{year}}@/@\tcode{\placeholder{month}}@/@\tcode{\placeholder{day}}@ @\tcode{\placeholder{month}}@/@\tcode{\placeholder{day}}@/@\tcode{\placeholder{year}}@ -@@ -7918,7 +7909,6 @@ The year, month, and day are accepted in any of the following 3 orders: +@@ -7926,7 +7917,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: @@ -8137,7 +8084,7 @@ index f1f22e40..2ff12f44 100644 \begin{codeblock} last @\tcode{\placeholder{weekday}}@[@\tcode{\placeholder{i}}@] -@@ -7931,7 +7921,6 @@ last +@@ -7939,7 +7929,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: @@ -8145,7 +8092,7 @@ index f1f22e40..2ff12f44 100644 \begin{codeblock} year_month ym = 2015y/April; month_day md1 = April/4; -@@ -9120,7 +9109,6 @@ template +@@ -9131,7 +9120,6 @@ template Initializes the base class with a sequence of \tcode{char} equivalent to that produced by \tcode{os.str()} initialized as shown below: @@ -8153,7 +8100,7 @@ index f1f22e40..2ff12f44 100644 \begin{codeblock} ostringstream os; os << tp << " is in a gap between\n" -@@ -9150,7 +9138,6 @@ int main() { +@@ -9161,7 +9149,6 @@ int main() { \end{codeblock} Produces the output: @@ -8161,7 +8108,7 @@ index f1f22e40..2ff12f44 100644 \begin{outputblock} 2016-03-13 02:30:00 is in a gap between 2016-03-13 02:00:00 EST and -@@ -9195,7 +9182,6 @@ template +@@ -9206,7 +9193,6 @@ template Initializes the base class with a sequence of \tcode{char} equivalent to that produced by \tcode{os.str()} initialized as shown below: @@ -8169,7 +8116,7 @@ index f1f22e40..2ff12f44 100644 \begin{codeblock} ostringstream os; os << tp << " is ambiguous. It could be\n" -@@ -9223,7 +9209,6 @@ int main() { +@@ -9234,7 +9220,6 @@ int main() { \end{codeblock} Produces the output: @@ -8177,7 +8124,7 @@ index f1f22e40..2ff12f44 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 -@@ -9277,7 +9262,6 @@ The \tcode{offset} data member indicates +@@ -9288,7 +9273,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: @@ -8185,7 +8132,7 @@ index f1f22e40..2ff12f44 100644 \begin{codeblock} offset = local_time - sys_time \end{codeblock} -@@ -9582,7 +9566,6 @@ the behavior of \tcode{zoned_time} +@@ -9593,7 +9577,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: @@ -8193,7 +8140,7 @@ index f1f22e40..2ff12f44 100644 \begin{codeblock} namespace std::chrono { template<> struct zoned_traits { -@@ -10158,7 +10141,6 @@ for (auto& l : get_tzdb().leap_seconds) +@@ -10169,7 +10152,6 @@ for (auto& l : get_tzdb().leap_seconds) \end{codeblock} Produces the output: @@ -8201,7 +8148,7 @@ index f1f22e40..2ff12f44 100644 \begin{outputblock} 1972-07-01 00:00:00: 1s 1973-01-01 00:00:00: 1s -@@ -10457,7 +10439,6 @@ The \tcode{parse} member functions of these formatters +@@ -10468,7 +10450,6 @@ The \tcode{parse} member functions of these formatters interpret the format specification as a \fmtgrammarterm{chrono-format-spec} according to the following syntax: @@ -8210,10 +8157,10 @@ index f1f22e40..2ff12f44 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 edaa136a..abe9bd67 100644 +index 9da223d9..25cadb3c 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -270,7 +270,6 @@ Exchanges values stored in two locations. +@@ -282,7 +282,6 @@ Exchanges values stored in two locations. \pnum \remarks The exception specification is equivalent to: @@ -8221,7 +8168,7 @@ index edaa136a..abe9bd67 100644 \begin{codeblock} is_nothrow_move_constructible_v && is_nothrow_move_assignable_v \end{codeblock} -@@ -2221,7 +2220,6 @@ For all $i$, assigns \tcode{std::forward<$\tcode{T}_i$>(get<$i$>(u))} to +@@ -2237,7 +2236,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: @@ -8229,7 +8176,7 @@ index edaa136a..abe9bd67 100644 \begin{codeblock} is_nothrow_move_assignable_v<@$\mathtt{T}_i$@> \end{codeblock} -@@ -3165,7 +3163,6 @@ As if by \tcode{x.swap(y)}. +@@ -3183,7 +3181,6 @@ As if by \tcode{x.swap(y)}. \pnum \remarks The exception specification is equivalent to: @@ -8237,7 +8184,7 @@ index edaa136a..abe9bd67 100644 \begin{codeblock} noexcept(x.swap(y)) \end{codeblock} -@@ -10711,7 +10708,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; +@@ -10930,7 +10927,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8245,7 +8192,7 @@ index edaa136a..abe9bd67 100644 \begin{itemize} \item If \tcode{I < pos}, the new value is zero; -@@ -10736,7 +10732,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; +@@ -10955,7 +10951,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8253,7 +8200,7 @@ index edaa136a..abe9bd67 100644 \begin{itemize} \item If \tcode{pos >= N - I}, the new value is zero; -@@ -11462,7 +11457,6 @@ namespace std { +@@ -11684,7 +11679,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: @@ -8261,7 +8208,7 @@ index edaa136a..abe9bd67 100644 \begin{codeblock} transform(a.begin(), a.end(), b.begin(), a.begin(), plus()); \end{codeblock} -@@ -14941,7 +14935,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; +@@ -15163,7 +15157,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: @@ -8273,7 +8220,7 @@ index edaa136a..abe9bd67 100644 2.43.0 -From 3063c650e90f877f880f947b68530381b8b91a68 Mon Sep 17 00:00:00 2001 +From b73e0476180b083ce8819f4126eaec31baa3e0d6 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. @@ -8420,7 +8367,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From dfe9a2ed833db8fa7310b40f53163829841d1767 Mon Sep 17 00:00:00 2001 +From 08c95e984a106506ed47405bd0920f7d71527fe2 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. @@ -8448,7 +8395,7 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From 3b4d83e454194730fa79d68a6bfd4c92bf99c5ab Mon Sep 17 00:00:00 2001 +From 030ef2d0324d13694333b0c59a58e5f8612c3bd0 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. @@ -8462,17 +8409,17 @@ Subject: [PATCH 8/9] Use cxxdraft-htmlgen macros more. source/iostreams.tex | 28 ++--- source/lib-intro.tex | 28 ++--- source/memory.tex | 46 +++---- - source/meta.tex | 274 ++++++++++++++++++++--------------------- - source/numerics.tex | 38 +++--- + source/meta.tex | 268 ++++++++++++++++++++--------------------- + source/numerics.tex | 34 +++--- source/strings.tex | 10 +- source/support.tex | 14 +-- source/threads.tex | 110 ++++++++--------- source/time.tex | 66 +++++----- - source/utilities.tex | 136 ++++++++++---------- - 15 files changed, 486 insertions(+), 494 deletions(-) + source/utilities.tex | 136 ++++++++++----------- + 15 files changed, 481 insertions(+), 489 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index aa433c38..23502107 100644 +index 49ef7fdb..4813bec6 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -8519,7 +8466,7 @@ index aa433c38..23502107 100644 if it is required to be a mutable iterator, or model \libconcept{random_access_iterator}\iref{iterator.concept.random.access} otherwise. \end{itemize} -@@ -4618,10 +4618,10 @@ template +@@ -4626,10 +4626,10 @@ template \pnum \expects \tcode{Function} meets @@ -8532,7 +8479,7 @@ index aa433c38..23502107 100644 \end{note} \pnum -@@ -4658,7 +4658,7 @@ template +@@ -4666,7 +4666,7 @@ template \begin{itemdescr} \pnum \expects @@ -8541,7 +8488,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -4792,10 +4792,10 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4800,10 +4800,10 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8554,7 +8501,7 @@ index aa433c38..23502107 100644 \end{note} \pnum -@@ -4832,7 +4832,7 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4840,7 +4840,7 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8563,7 +8510,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -5680,7 +5680,7 @@ If +@@ -5688,7 +5688,7 @@ If \item the types of \tcode{first1}, \tcode{last1}, \tcode{first2}, and \tcode{last2} meet the @@ -8572,7 +8519,7 @@ index aa433c38..23502107 100644 and \tcode{last1 - first1 != last2 - first2} for the overloads in namespace \tcode{std}; \item -@@ -6024,7 +6024,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} +@@ -6032,7 +6032,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} \pnum \remarks @@ -8581,7 +8528,7 @@ index aa433c38..23502107 100644 \end{itemdescr} \rSec2[alg.starts.with]{Starts with} -@@ -7606,7 +7606,7 @@ Let $E$ be +@@ -7616,7 +7616,7 @@ Let $E$ be \expects For the algorithms in namespace \tcode{std}, the type of \tcode{*first} @@ -8590,7 +8537,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -7855,7 +7855,7 @@ let $E$ be +@@ -7867,7 +7867,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 @@ -8599,7 +8546,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -7985,10 +7985,10 @@ Let: +@@ -7998,10 +7998,10 @@ Let: \libconcept{forward_iterator}\iref{iterator.concept.forward}, then there are no additional requirements for \tcode{T}. Otherwise, if \tcode{OutputIterator} meets @@ -8612,7 +8559,7 @@ index aa433c38..23502107 100644 Otherwise, \tcode{T} meets both the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and \oldconcept{CopyAssignable} requirements. -@@ -8067,7 +8067,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8080,7 +8080,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8621,7 +8568,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -8202,10 +8202,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterat +@@ -8215,10 +8215,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 @@ -8635,7 +8582,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -8422,13 +8422,13 @@ For the overload in namespace \tcode{std}: +@@ -8438,13 +8438,13 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{PopulationIterator} meets @@ -8652,7 +8599,7 @@ index aa433c38..23502107 100644 unless \tcode{Pop\-ulat\-ion\-Iter\-ator} models \libconcept{forward_iterator}\iref{iterator.concept.forward}. \item -@@ -8496,7 +8496,7 @@ For the overload in namespace \tcode{std}: +@@ -8512,7 +8512,7 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{RandomAccessIterator} meets @@ -8661,7 +8608,7 @@ index aa433c38..23502107 100644 \item The type \tcode{remove_reference_t} meets the uniform random bit generator\iref{rand.req.urng} requirements. -@@ -8557,7 +8557,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8573,7 +8573,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8670,7 +8617,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -8621,10 +8621,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8637,10 +8637,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8684,7 +8631,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -8803,10 +8803,10 @@ for the overloads with no parameters by those names. +@@ -8819,10 +8819,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8698,7 +8645,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -8871,10 +8871,10 @@ for the overloads with no parameters by those names. +@@ -8887,10 +8887,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8712,7 +8659,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -8945,10 +8945,10 @@ for the overloads with no parameters by those names. +@@ -8961,10 +8961,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 @@ -8726,7 +8673,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -9091,10 +9091,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. +@@ -9108,10 +9108,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8740,7 +8687,7 @@ index aa433c38..23502107 100644 \pnum For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and -@@ -9329,10 +9329,10 @@ for the overloads with no parameters by those names. +@@ -9346,10 +9346,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 @@ -8754,7 +8701,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -9712,7 +9712,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9731,7 +9731,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 @@ -8763,7 +8710,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -9739,7 +9739,7 @@ Let $N = \tcode{last - first}$: +@@ -9758,7 +9758,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 @@ -8772,7 +8719,7 @@ index aa433c38..23502107 100644 for the overloads in namespace \tcode{std} or models \libconcept{bidirectional_iterator} for the overloads in namespace \tcode{ranges}, -@@ -9792,10 +9792,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9811,10 +9811,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 @@ -8786,7 +8733,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -10192,10 +10192,10 @@ for the overloads with no parameters by those names. +@@ -10211,10 +10211,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 @@ -8800,7 +8747,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -10934,10 +10934,10 @@ The range \range{first}{last - 1} +@@ -10966,10 +10966,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 @@ -8814,7 +8761,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -10987,10 +10987,10 @@ The range \range{first}{last} +@@ -11019,10 +11019,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 @@ -8828,7 +8775,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -11043,10 +11043,10 @@ for the overloads with no parameters by those names. +@@ -11075,10 +11075,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8842,7 +8789,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -11096,10 +11096,10 @@ The range \range{first}{last} is +@@ -11128,10 +11128,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 @@ -8856,7 +8803,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -11286,7 +11286,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8876,7 +8823,7 @@ index aa433c38..23502107 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11369,7 +11369,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8896,7 +8843,7 @@ index aa433c38..23502107 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11454,7 +11454,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8916,7 +8863,7 @@ index aa433c38..23502107 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11723,7 +11723,7 @@ for the overloads with no parameter \tcode{proj}. +@@ -11755,7 +11755,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} @@ -8925,7 +8872,7 @@ index aa433c38..23502107 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11926,7 +11926,7 @@ for overloads with no parameters by those names. +@@ -11958,7 +11958,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8934,7 +8881,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -11985,7 +11985,7 @@ for overloads with no parameters by those names. +@@ -12017,7 +12017,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8943,7 +8890,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -12304,8 +12304,8 @@ template +@@ -12336,8 +12336,8 @@ template \pnum \expects \tcode{T} meets @@ -8954,7 +8901,7 @@ index aa433c38..23502107 100644 In the range \crange{first}{last}, \tcode{binary_op} neither modifies elements nor invalidates iterators or subranges. -@@ -12427,7 +12427,7 @@ are convertible to \tcode{T}. +@@ -12459,7 +12459,7 @@ are convertible to \tcode{T}. \expects \begin{itemize} \item @@ -8963,7 +8910,7 @@ index aa433c38..23502107 100644 \item \tcode{binary_op} neither invalidates iterators or subranges, nor modifies elements in the range \crange{first}{last}. -@@ -12471,8 +12471,8 @@ template}. +@@ -13198,7 +13198,7 @@ that denotes an object of type \tcode{minus<>}. \begin{itemize} \item For the overloads with no \tcode{ExecutionPolicy}, @@ -9132,7 +9079,7 @@ index e653b348..2adaa033 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 6e99784a..a8d4d24a 100644 +index c969a57b..16de2113 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9171,7 +9118,7 @@ index 6e99784a..a8d4d24a 100644 \\ \end{floattable} diff --git a/source/future.tex b/source/future.tex -index 4957e2c3..6d5a4e97 100644 +index a740fd47..2f15e38b 100644 --- a/source/future.tex +++ b/source/future.tex @@ -359,7 +359,7 @@ template struct is_pod; @@ -9200,7 +9147,7 @@ index 4957e2c3..6d5a4e97 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 TE}, and @@ -611,7 +611,7 @@ template struct variant_size; Let \tcode{VS} denote \tcode{variant_size} of the cv-unqualified type \tcode{T}. @@ -9218,7 +9165,7 @@ index 4957e2c3..6d5a4e97 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 6058ccab..7586f5cb 100644 --- a/source/iostreams.tex @@ -9301,10 +9248,10 @@ index 6058ccab..7586f5cb 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 cc034328..9b6bf373 100644 +index dda79b54..9a959af0 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex -@@ -1866,7 +1866,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} @@ -9313,7 +9260,7 @@ index cc034328..9b6bf373 100644 {p{1in}p{4.15in}} \topline \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep -@@ -1893,7 +1893,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} @@ -9322,8 +9269,8 @@ index cc034328..9b6bf373 100644 {p{1in}p{1in}p{1in}p{1.9in}} \topline \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Return value} & \hdstyle{Post-condition} \\ \capsep -@@ -1907,7 +1907,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. - \tcode{a.\~T()} & All resources owned by \tcode{a} 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}. @@ -9331,7 +9278,7 @@ index cc034328..9b6bf373 100644 \end{tailnote} } \\ \end{oldconcepttable} -@@ -1986,7 +1986,7 @@ void value_swap(T&& t, U&& u) { +@@ -1988,7 +1988,7 @@ void value_swap(T&& t, U&& u) { // for rvalues and lvalues } @@ -9340,7 +9287,7 @@ index cc034328..9b6bf373 100644 template void lv_swap(T& t1, T& t2) { using std::swap; -@@ -2023,9 +2023,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} @@ -9353,7 +9300,7 @@ index cc034328..9b6bf373 100644 \item the expressions shown in \tref{cpp17.nullablepointer} are valid and have the indicated semantics, and -@@ -2101,8 +2101,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}, @@ -9364,7 +9311,7 @@ index cc034328..9b6bf373 100644 \item the expressions shown in \tref{cpp17.hash} are valid and have the indicated semantics. \end{itemize} -@@ -2786,7 +2786,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 @@ -9373,7 +9320,7 @@ index cc034328..9b6bf373 100644 the copy operation shall not throw exceptions. \pnum -@@ -2808,7 +2808,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 @@ -9382,7 +9329,7 @@ index cc034328..9b6bf373 100644 the move operation shall not throw exceptions. \pnum -@@ -2830,7 +2830,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, @@ -9391,7 +9338,7 @@ index cc034328..9b6bf373 100644 the \tcode{swap} operation shall not throw exceptions. \pnum -@@ -2860,7 +2860,7 @@ Default: \tcode{is_empty::type} +@@ -2862,7 +2862,7 @@ Default: \tcode{is_empty::type} \pnum An allocator type \tcode{X} shall meet the @@ -9400,7 +9347,7 @@ index cc034328..9b6bf373 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}). -@@ -2868,7 +2868,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 @@ -9410,10 +9357,10 @@ index cc034328..9b6bf373 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index f2964f90..eddd5794 100644 +index 12c714b4..0b20e5ce 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1273,7 +1273,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type +@@ -1147,7 +1147,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 @@ -9422,7 +9369,7 @@ index f2964f90..eddd5794 100644 \rSec2[allocator.uses]{\tcode{uses_allocator}} -@@ -1288,7 +1288,7 @@ template struct uses_allocator; +@@ -1162,7 +1162,7 @@ template struct uses_allocator; \pnum \remarks Automatically detects whether \tcode{T} has a nested \tcode{allocator_type} that @@ -9431,7 +9378,7 @@ index f2964f90..eddd5794 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 -@@ -2238,8 +2238,8 @@ deleter before such replacement is considered completed. +@@ -2112,8 +2112,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} @@ -9442,7 +9389,7 @@ index f2964f90..eddd5794 100644 The template parameter \tcode{T} of \tcode{unique_ptr} may be an incomplete type. \pnum -@@ -2426,7 +2426,7 @@ pointer as appropriate for that deleter. +@@ -2300,7 +2300,7 @@ pointer as appropriate for that deleter. \pnum If the deleter's type \tcode{D} is not a reference type, \tcode{D} shall meet @@ -9451,7 +9398,7 @@ index f2964f90..eddd5794 100644 \pnum If the \grammarterm{qualified-id} \tcode{remove_reference_t::pointer} is valid and denotes a -@@ -2434,7 +2434,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 @@ -9460,7 +9407,7 @@ index f2964f90..eddd5794 100644 \pnum \begin{example} -@@ -2460,7 +2460,7 @@ constexpr unique_ptr(nullptr_t) noexcept; +@@ -2334,7 +2334,7 @@ constexpr unique_ptr(nullptr_t) noexcept; \pnum \expects @@ -9469,7 +9416,7 @@ index f2964f90..eddd5794 100644 and that construction does not throw an exception. \pnum -@@ -2487,7 +2487,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; +@@ -2361,7 +2361,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; \pnum \expects @@ -9478,7 +9425,7 @@ index f2964f90..eddd5794 100644 and that construction does not throw an exception. \pnum -@@ -2516,10 +2516,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex +@@ -2390,10 +2390,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, @@ -9491,7 +9438,7 @@ index f2964f90..eddd5794 100644 such construction does not exit via an exception. \pnum -@@ -2544,8 +2544,8 @@ the second constructor is defined as deleted. +@@ -2418,8 +2418,8 @@ the second constructor is defined as deleted. \begin{example} \begin{codeblock} D d; @@ -9502,7 +9449,7 @@ index f2964f90..eddd5794 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 -@@ -2566,7 +2566,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; +@@ -2440,7 +2440,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, @@ -9511,7 +9458,7 @@ index f2964f90..eddd5794 100644 requirements (\tref{cpp17.moveconstructible}). Construction of the deleter from an rvalue of type \tcode{D} does not -@@ -2675,10 +2675,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; +@@ -2549,10 +2549,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, \tcode{D} meets the @@ -9524,7 +9471,7 @@ index f2964f90..eddd5794 100644 requirements and assignment of the deleter from an lvalue of type \tcode{D} does not throw an exception. -@@ -3576,8 +3576,8 @@ namespace std { +@@ -3450,8 +3450,8 @@ namespace std { \end{codeblock} \pnum @@ -9535,7 +9482,7 @@ index f2964f90..eddd5794 100644 containers. Specializations of \tcode{shared_ptr} shall be contextually convertible to \tcode{bool}, allowing their use in boolean expressions and declarations in conditions. -@@ -3722,7 +3722,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. +@@ -3596,7 +3596,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 @@ -9544,7 +9491,7 @@ index f2964f90..eddd5794 100644 \pnum \effects -@@ -4242,7 +4242,7 @@ template +@@ -4116,7 +4116,7 @@ template \pnum \expects \tcode{A} meets @@ -9553,7 +9500,7 @@ index f2964f90..eddd5794 100644 \pnum \effects -@@ -4898,8 +4898,8 @@ namespace std { +@@ -4772,8 +4772,8 @@ namespace std { \end{codeblock} \pnum @@ -9564,7 +9511,7 @@ index f2964f90..eddd5794 100644 containers. The template parameter \tcode{T} of \tcode{weak_ptr} may be an incomplete type. -@@ -5478,7 +5478,7 @@ namespace std { +@@ -5352,7 +5352,7 @@ namespace std { \end{codeblock} \pnum @@ -9573,7 +9520,7 @@ index f2964f90..eddd5794 100644 If \tcode{Smart} is a specialization of \tcode{shared_ptr} and \tcode{sizeof...(Args) == 0}, the program is ill-formed. -@@ -5718,7 +5718,7 @@ namespace std { +@@ -5592,7 +5592,7 @@ namespace std { \end{codeblock} \pnum @@ -9583,10 +9530,10 @@ index f2964f90..eddd5794 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index 36a2a88e..1a731050 100644 +index b1abb2de..02a1d8f4 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -95,12 +95,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 @@ -9602,7 +9549,7 @@ index 36a2a88e..1a731050 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 -@@ -111,12 +111,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 @@ -9617,7 +9564,7 @@ index 36a2a88e..1a731050 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 -@@ -306,17 +306,17 @@ namespace std { +@@ -344,17 +344,17 @@ namespace std { template struct add_cv; template @@ -9641,7 +9588,7 @@ index 36a2a88e..1a731050 100644 // \ref{meta.trans.ref}, reference modifications template struct remove_reference; -@@ -324,38 +324,38 @@ namespace std { +@@ -362,38 +362,38 @@ namespace std { template struct add_rvalue_reference; template @@ -9689,7 +9636,7 @@ index 36a2a88e..1a731050 100644 // \ref{meta.trans.other}, other transformations template struct type_identity; -@@ -374,29 +374,29 @@ namespace std { +@@ -412,29 +412,29 @@ namespace std { template struct unwrap_ref_decay; template @@ -9731,7 +9678,7 @@ index 36a2a88e..1a731050 100644 template using @\libglobal{void_t}@ = void; -@@ -407,191 +407,191 @@ namespace std { +@@ -445,185 +445,185 @@ namespace std { // \ref{meta.unary.cat}, primary type categories template @@ -9814,9 +9761,6 @@ index 36a2a88e..1a731050 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 @@ -9929,15 +9873,9 @@ index 36a2a88e..1a731050 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 @@ -9999,7 +9937,7 @@ index 36a2a88e..1a731050 100644 template constexpr bool @\libglobal{is_nothrow_invocable_r_v}@ = is_nothrow_invocable_r::value; template -@@ -601,11 +601,11 @@ namespace std { +@@ -633,11 +633,11 @@ namespace std { // \ref{meta.logical}, logical operator traits template @@ -10014,7 +9952,7 @@ index 36a2a88e..1a731050 100644 // \ref{meta.member}, member relationships template -@@ -920,7 +920,7 @@ properties of a type at compile time. +@@ -936,7 +936,7 @@ properties of a type at compile time. \pnum Each of these templates shall be a @@ -10023,7 +9961,7 @@ index 36a2a88e..1a731050 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is \tcode{true}, otherwise \tcode{false_type}. -@@ -950,17 +950,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. +@@ -966,17 +966,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. \topline \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead @@ -10044,7 +9982,7 @@ index 36a2a88e..1a731050 100644 \tcode{T} is an integral type\iref{basic.fundamental} & \\ \rowsep \indexlibraryglobal{is_floating_point}% \tcode{template}\br -@@ -1189,9 +1186,8 @@ A union is a class type that +@@ -1191,9 +1188,8 @@ A union is a class type that & If \tcode{T} is a class type, \tcode{T} shall be a complete type. \\ \rowsep @@ -10055,7 +9993,7 @@ index 36a2a88e..1a731050 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 -@@ -1208,16 +1204,14 @@ A union is a class type that +@@ -1210,16 +1206,14 @@ A union is a class type that \tcode{T(-1) < T(0)}; otherwise, \tcode{false} & \\ \rowsep @@ -10074,7 +10012,7 @@ index 36a2a88e..1a731050 100644 \tcode{T} is an array type of known bound\iref{dcl.array} & \\ \rowsep -@@ -1721,7 +1715,7 @@ may be used to query properties of types at compile time. +@@ -1713,7 +1707,7 @@ may be used to query properties of types at compile time. \end{libreqtab2a} \pnum @@ -10083,7 +10021,7 @@ index 36a2a88e..1a731050 100644 base characteristic of \tcode{integral_constant}. \pnum -@@ -1757,7 +1751,7 @@ may be used to query relationships between types at compile time. +@@ -1749,7 +1743,7 @@ may be used to query relationships between types at compile time. \pnum Each of these templates shall be a @@ -10092,7 +10030,7 @@ index 36a2a88e..1a731050 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is true, otherwise \tcode{false_type}. -@@ -1778,7 +1772,7 @@ Let \tcode{\placeholdernc{ELEMS-OF}(T)} be the parameter pack +@@ -1770,7 +1764,7 @@ Let \tcode{\placeholdernc{ELEMS-OF}(T)} be the parameter pack \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead \tcode{template}\br @@ -10101,7 +10039,7 @@ index 36a2a88e..1a731050 100644 \tcode{T} and \tcode{U} name the same type with the same cv-qualifications & \\ \rowsep \indexlibraryglobal{is_base_of}% -@@ -1979,7 +1973,7 @@ type to another following some predefined rule. +@@ -1971,7 +1965,7 @@ type to another following some predefined rule. \pnum Each of the templates in \ref{meta.trans} shall be a @@ -10110,7 +10048,7 @@ index 36a2a88e..1a731050 100644 \rSec3[meta.trans.cv]{Const-volatile modifications} -@@ -2266,16 +2260,16 @@ perform other modifications of a type. +@@ -2258,16 +2252,16 @@ perform other modifications of a type. \tcode{template\br struct \libglobal{remove_cvref};} & The member typedef \tcode{type} denotes @@ -10132,7 +10070,7 @@ index 36a2a88e..1a731050 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} -@@ -2381,7 +2375,7 @@ argument passing. +@@ -2373,7 +2367,7 @@ argument passing. \tcode{template} \tcode{struct \libglobal{unwrap_reference};} & If \tcode{T} is @@ -10141,7 +10079,7 @@ index 36a2a88e..1a731050 100644 the member typedef \tcode{type} of \tcode{unwrap_reference} denotes \tcode{X\&}, otherwise \tcode{type} denotes \tcode{T}. \\ \rowsep -@@ -2389,7 +2383,7 @@ argument passing. +@@ -2381,7 +2375,7 @@ argument passing. \tcode{template} \tcode{\libglobal{unwrap_ref_decay};} & The member typedef \tcode{type} of \tcode{unwrap_ref_decay} @@ -10150,7 +10088,7 @@ index 36a2a88e..1a731050 100644 \end{libreqtab2a} \pnum -@@ -2407,7 +2401,7 @@ when the header \tcode{}\iref{functional.syn} is included. +@@ -2399,7 +2393,7 @@ when the header \tcode{}\iref{functional.syn} is included. Let: \begin{itemize} \item \tcode{\placeholdernc{CREF}(A)} be @@ -10159,7 +10097,7 @@ index 36a2a88e..1a731050 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 -@@ -2432,15 +2426,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: +@@ -2424,15 +2418,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 @@ -10178,7 +10116,7 @@ index 36a2a88e..1a731050 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 -@@ -2739,7 +2733,7 @@ template struct negation : @\seebelow@ { }; +@@ -2731,7 +2725,7 @@ template struct negation : @\seebelow@ { }; The class template \tcode{negation} forms the logical negation of its template type argument. The type \tcode{negation} @@ -10188,7 +10126,7 @@ index 36a2a88e..1a731050 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index 82e20d65..6651e2d3 100644 +index 4342da1a..084414fa 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 @@ -10296,23 +10234,8 @@ index 82e20d65..6651e2d3 100644 If \tcode{firstB == lastB} or \tcode{++firstB == lastB}, let $n = 1$, -@@ -9147,12 +9147,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 099fd5f3..d906a754 100644 +index 749c23d9..8aeb51c9 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -238,10 +238,10 @@ using state_type = @\seebelow@; @@ -10340,10 +10263,10 @@ index 099fd5f3..d906a754 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 cb42f682..0c8f2758 100644 +index 1a45ee0e..b77edfed 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -3657,11 +3657,11 @@ namespace std { +@@ -3661,11 +3661,11 @@ namespace std { \pnum The type \tcode{source_location} meets the @@ -10360,7 +10283,7 @@ index cb42f682..0c8f2758 100644 requirements\iref{utility.arg.requirements,swappable.requirements}. All of the following conditions are \tcode{true}: \begin{itemize} -@@ -4123,7 +4123,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. +@@ -4127,7 +4127,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. \pnum \tcode{exception_ptr} meets the requirements of @@ -10369,7 +10292,7 @@ index cb42f682..0c8f2758 100644 \pnum Two non-null values of type \tcode{exception_ptr} are equivalent and compare equal if and -@@ -4350,7 +4350,7 @@ Let \tcode{U} be \tcode{decay_t}. +@@ -4354,7 +4354,7 @@ Let \tcode{U} be \tcode{decay_t}. \pnum \expects @@ -10379,7 +10302,7 @@ index cb42f682..0c8f2758 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index 7fbc2b5b..7b9503eb 100644 +index b2503433..9d5fcfed 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10442,7 +10365,7 @@ index 7fbc2b5b..7b9503eb 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}, -@@ -4447,7 +4447,7 @@ namespace std { +@@ -4481,7 +4481,7 @@ namespace std { \indexlibraryglobal{atomic}% \pnum The template argument for \tcode{T} shall meet the @@ -10451,7 +10374,7 @@ index 7fbc2b5b..7b9503eb 100644 The program is ill-formed if any of \begin{itemize} \item \tcode{is_trivially_copyable_v}, -@@ -7284,11 +7284,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, +@@ -7305,11 +7305,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} @@ -10465,7 +10388,7 @@ index 7fbc2b5b..7b9503eb 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. -@@ -7557,7 +7557,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de +@@ -7578,7 +7578,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de object of an instantiation of \link{\tcode{time_point}}{time.point}. \begin{note} @@ -10474,7 +10397,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -7769,7 +7769,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally +@@ -7790,7 +7790,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} @@ -10483,7 +10406,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.shared}. \end{note} -@@ -7946,7 +7946,7 @@ meet the requirements set out below. In this description, +@@ -7967,7 +7967,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}. \begin{note} @@ -10492,7 +10415,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.shared.timed}. \end{note} -@@ -8156,7 +8156,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable +@@ -8177,7 +8177,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} @@ -10501,7 +10424,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.basic}. \indexlibraryctor{lock_guard}% -@@ -8235,12 +8235,12 @@ object. +@@ -8256,12 +8256,12 @@ object. If \tcode{sizeof...(MutexTypes)} is one, let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. \tcode{Mutex} @@ -10516,7 +10439,7 @@ index 7fbc2b5b..7b9503eb 100644 and there is no member \tcode{mutex_type}. \end{itemize} -@@ -8355,17 +8355,17 @@ copyable but are movable. The behavior of a program is undefined if the containe +@@ -8376,17 +8376,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 lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied @@ -10540,7 +10463,7 @@ index 7fbc2b5b..7b9503eb 100644 \end{note} \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} -@@ -8415,7 +8415,7 @@ unique_lock(mutex_type& m, try_to_lock_t); +@@ -8436,7 +8436,7 @@ unique_lock(mutex_type& m, try_to_lock_t); \begin{itemdescr} \pnum \expects @@ -10549,7 +10472,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8457,7 +8457,7 @@ template +@@ -8478,7 +8478,7 @@ template \pnum \expects The supplied \tcode{Mutex} type meets the @@ -10558,7 +10481,7 @@ index 7fbc2b5b..7b9503eb 100644 \pnum \effects -@@ -8479,7 +8479,7 @@ template +@@ -8500,7 +8500,7 @@ template \begin{itemdescr} \pnum \expects @@ -10567,7 +10490,7 @@ index 7fbc2b5b..7b9503eb 100644 \pnum \effects -@@ -8566,7 +8566,7 @@ bool try_lock(); +@@ -8587,7 +8587,7 @@ bool try_lock(); \begin{itemdescr} \pnum \expects @@ -10576,7 +10499,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8605,7 +8605,7 @@ template +@@ -8626,7 +8626,7 @@ template \begin{itemdescr} \pnum \expects @@ -10585,7 +10508,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.timed}. \pnum -@@ -8644,7 +8644,7 @@ template +@@ -8665,7 +8665,7 @@ template \begin{itemdescr} \pnum \expects @@ -10594,7 +10517,7 @@ index 7fbc2b5b..7b9503eb 100644 \pnum \effects -@@ -8837,16 +8837,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type +@@ -8858,16 +8858,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 lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied @@ -10615,7 +10538,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -8931,7 +8931,7 @@ template +@@ -8952,7 +8952,7 @@ template \begin{itemdescr} \pnum \expects @@ -10624,7 +10547,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8955,7 +8955,7 @@ template +@@ -8976,7 +8976,7 @@ template \begin{itemdescr} \pnum \expects @@ -10633,7 +10556,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9080,7 +9080,7 @@ template +@@ -9101,7 +9101,7 @@ template \begin{itemdescr} \pnum \expects @@ -10642,7 +10565,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9120,7 +9120,7 @@ template +@@ -9141,7 +9141,7 @@ template \begin{itemdescr} \pnum \expects @@ -10651,7 +10574,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9259,7 +9259,7 @@ template int try_lock(L1&, L2&, L3&...); +@@ -9280,7 +9280,7 @@ template int try_lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10660,7 +10583,7 @@ index 7fbc2b5b..7b9503eb 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9288,7 +9288,7 @@ template void lock(L1&, L2&, L3&...); +@@ -9309,7 +9309,7 @@ template void lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10669,7 +10592,7 @@ index 7fbc2b5b..7b9503eb 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9954,7 +9954,7 @@ This can happen if the re-locking of the mutex throws an exception. +@@ -9978,7 +9978,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} @@ -10678,7 +10601,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.basic}. \begin{note} All of the standard -@@ -10892,24 +10892,24 @@ execute atomically. +@@ -10916,24 +10916,24 @@ execute atomically. \pnum \tcode{CompletionFunction} shall meet the @@ -10709,7 +10632,7 @@ index 7fbc2b5b..7b9503eb 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -11404,7 +11404,7 @@ namespace std { +@@ -11428,7 +11428,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10718,7 +10641,7 @@ index 7fbc2b5b..7b9503eb 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -11736,7 +11736,7 @@ namespace std { +@@ -11760,7 +11760,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10727,7 +10650,7 @@ index 7fbc2b5b..7b9503eb 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -12042,7 +12042,7 @@ namespace std { +@@ -12066,7 +12066,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10736,7 +10659,7 @@ index 7fbc2b5b..7b9503eb 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -12980,7 +12980,7 @@ the expression \tcode{d(ptr)} is valid. +@@ -13004,7 +13004,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -10745,7 +10668,7 @@ index 7fbc2b5b..7b9503eb 100644 \pnum If \tcode{D} is trivially copyable, -@@ -13038,7 +13038,7 @@ namespace std { +@@ -13062,7 +13062,7 @@ namespace std { \pnum This class meets the requirements of @@ -10754,7 +10677,7 @@ index 7fbc2b5b..7b9503eb 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -13186,8 +13186,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -13210,8 +13210,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -10765,7 +10688,7 @@ index 7fbc2b5b..7b9503eb 100644 \pnum \effects -@@ -13379,7 +13379,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -13403,7 +13403,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -10775,7 +10698,7 @@ index 7fbc2b5b..7b9503eb 100644 \pnum \tcode{T} may be an incomplete type. diff --git a/source/time.tex b/source/time.tex -index 2ff12f44..f2524afb 100644 +index f3cefea4..05dd9136 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1033,13 +1033,13 @@ SI definition is a measure of the quality of implementation. @@ -10816,7 +10739,7 @@ index 2ff12f44..f2524afb 100644 unless it meets all of the following conditions: \begin{itemize} \item the \grammarterm{qualified-id}s -@@ -2626,7 +2626,7 @@ template +@@ -2630,7 +2630,7 @@ template \pnum The types defined in \ref{time.clock} meet the @@ -10825,7 +10748,7 @@ index 2ff12f44..f2524afb 100644 requirements\iref{time.clock.req} unless otherwise specified. -@@ -2844,7 +2844,7 @@ which is \tcode{10'957 * 86'400s + 22s}. \\ +@@ -2848,7 +2848,7 @@ which is \tcode{10'957 * 86'400s + 22s}. \\ \end{example} \pnum @@ -10834,7 +10757,7 @@ index 2ff12f44..f2524afb 100644 unless the implementation can guarantee that \tcode{utc_clock::now()} does not propagate an exception. \begin{note} -@@ -3063,7 +3063,7 @@ so 2000-01-01 00:00:00 UTC is equivalent to 2000-01-01 00:00:32 TAI +@@ -3067,7 +3067,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 @@ -10843,7 +10766,7 @@ index 2ff12f44..f2524afb 100644 unless the implementation can guarantee that \tcode{tai_clock::now()} does not propagate an exception. \begin{note} -@@ -3225,7 +3225,7 @@ GPS is behind TAI by 19s due to the 10s offset between 1958 and 1970 +@@ -3229,7 +3229,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 @@ -10852,7 +10775,7 @@ index 2ff12f44..f2524afb 100644 unless the implementation can guarantee that \tcode{gps_clock::now()} does not propagate an exception. \begin{note} -@@ -3362,7 +3362,7 @@ namespace std::chrono { +@@ -3366,7 +3366,7 @@ namespace std::chrono { \pnum \tcode{file_clock} is an alias for a type @@ -10861,7 +10784,7 @@ index 2ff12f44..f2524afb 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}. -@@ -3965,8 +3965,8 @@ It normally holds values in the range 1 to 31, +@@ -3973,8 +3973,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. @@ -10872,7 +10795,7 @@ index 2ff12f44..f2524afb 100644 and participates in basic arithmetic with \tcode{days} objects, which represent a difference between two \tcode{day} objects. -@@ -4258,8 +4258,8 @@ It normally holds values in the range 1 to 12, +@@ -4266,8 +4266,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. @@ -10883,7 +10806,7 @@ index 2ff12f44..f2524afb 100644 and participates in basic arithmetic with \tcode{months} objects, which represent a difference between two \tcode{month} objects. -@@ -4568,8 +4568,8 @@ namespace std::chrono { +@@ -4576,8 +4576,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. @@ -10894,7 +10817,7 @@ index 2ff12f44..f2524afb 100644 and participates in basic arithmetic with \tcode{years} objects, which represent a difference between two \tcode{year} objects. -@@ -4923,10 +4923,10 @@ corresponding to Sunday through Saturday, but +@@ -4931,10 +4931,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. @@ -10907,7 +10830,7 @@ index 2ff12f44..f2524afb 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. -@@ -5506,8 +5506,8 @@ namespace std::chrono { +@@ -5514,8 +5514,8 @@ namespace std::chrono { \pnum \tcode{month_day} represents a specific day of a specific month, but with an unspecified year. @@ -10918,7 +10841,7 @@ index 2ff12f44..f2524afb 100644 \pnum \tcode{month_day} is a trivially copyable and standard-layout class type. -@@ -6007,8 +6007,8 @@ namespace std::chrono { +@@ -6015,8 +6015,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}. @@ -10929,7 +10852,7 @@ index 2ff12f44..f2524afb 100644 \pnum \tcode{year_month} is a trivially copyable and standard-layout class type. -@@ -6363,8 +6363,8 @@ but not \tcode{days}-oriented arithmetic. +@@ -6371,8 +6371,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} @@ -10940,7 +10863,7 @@ index 2ff12f44..f2524afb 100644 \pnum \tcode{year_month_day} is a trivially copyable and standard-layout class type. -@@ -6824,8 +6824,8 @@ but not \tcode{days}-oriented arithmetic. +@@ -6832,8 +6832,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} @@ -10951,7 +10874,7 @@ index 2ff12f44..f2524afb 100644 \pnum \tcode{year_month_day_last} is a trivially copyable and standard-layout class type. -@@ -7195,7 +7195,7 @@ but not \tcode{days}-oriented arithmetic. +@@ -7203,7 +7203,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} @@ -10960,7 +10883,7 @@ index 2ff12f44..f2524afb 100644 \pnum \tcode{year_month_weekday} is a trivially copyable and standard-layout class type. -@@ -7588,7 +7588,7 @@ but not \tcode{days}-oriented arithmetic. +@@ -7596,7 +7596,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} @@ -10969,7 +10892,7 @@ index 2ff12f44..f2524afb 100644 \pnum \tcode{year_month_weekday_last} is a trivially copyable and standard-layout class type. -@@ -8838,7 +8838,7 @@ The \tcode{tzdb_list} object contains a list of \tcode{tzdb} objects. +@@ -8849,7 +8849,7 @@ The \tcode{tzdb_list} object contains a list of \tcode{tzdb} objects. \pnum \tcode{tzdb_list::const_iterator} is a constant iterator @@ -10978,7 +10901,7 @@ index 2ff12f44..f2524afb 100644 and has a value type of \tcode{tzdb}. \indexlibrarymember{front}{tzdb_list}% -@@ -11549,7 +11549,7 @@ template<> struct hash; +@@ -11560,7 +11560,7 @@ template<> struct hash; The specializations are enabled\iref{unord.hash}. \begin{note} All the \tcode{hash} specializations listed above meet the @@ -10988,10 +10911,10 @@ index 2ff12f44..f2524afb 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index abe9bd67..bcfb38a3 100644 +index 25cadb3c..639cc237 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -258,9 +258,9 @@ template +@@ -270,9 +270,9 @@ template Type \tcode{T} meets the @@ -11003,7 +10926,7 @@ index abe9bd67..bcfb38a3 100644 requirements. \pnum -@@ -2139,7 +2139,7 @@ template +@@ -2155,7 +2155,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -11012,7 +10935,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \effects -@@ -2761,7 +2761,7 @@ template struct tuple_size; +@@ -2777,7 +2777,7 @@ template struct tuple_size; \pnum Except where specified otherwise, all specializations of \tcode{tuple_size} meet the @@ -11021,7 +10944,7 @@ index abe9bd67..bcfb38a3 100644 base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -2802,7 +2802,7 @@ template struct tuple_size; +@@ -2818,7 +2818,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 @@ -11030,16 +10953,16 @@ index abe9bd67..bcfb38a3 100644 with a base characteristic of \begin{codeblock} integral_constant -@@ -2839,7 +2839,7 @@ template struct tuple_element; +@@ -2856,7 +2856,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 -@@ -3124,7 +3124,7 @@ template +@@ -3142,7 +3142,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -11048,7 +10971,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \begin{note} -@@ -4010,7 +4010,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); +@@ -4038,7 +4038,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11057,7 +10980,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \effects -@@ -4067,7 +4067,7 @@ using const_iterator = @\impdef@; +@@ -4095,7 +4095,7 @@ using const_iterator = @\impdef@; \pnum These types model \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, @@ -11066,7 +10989,7 @@ index abe9bd67..bcfb38a3 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 -@@ -5056,7 +5056,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5111,7 +5111,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} @@ -11075,7 +10998,7 @@ index abe9bd67..bcfb38a3 100644 \end{note} \pnum -@@ -5247,7 +5247,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5302,7 +5302,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} @@ -11084,7 +11007,7 @@ index abe9bd67..bcfb38a3 100644 \end{note} \pnum -@@ -5742,7 +5742,7 @@ is nested within\iref{intro.object} the +@@ -5857,7 +5857,7 @@ is nested within\iref{intro.object} the \pnum All types in \tcode{Types} shall meet @@ -11093,7 +11016,7 @@ index abe9bd67..bcfb38a3 100644 \pnum A program that instantiates the definition of \tcode{variant} with -@@ -6422,7 +6422,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); +@@ -6539,7 +6539,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11102,7 +11025,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \effects -@@ -6467,7 +6467,7 @@ template struct variant_size; +@@ -6584,7 +6584,7 @@ template struct variant_size; \begin{itemdescr} \pnum All specializations of \tcode{variant_size} meet the @@ -11111,7 +11034,7 @@ index abe9bd67..bcfb38a3 100644 with a base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -6480,7 +6480,7 @@ template struct variant_size; +@@ -6597,7 +6597,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 @@ -11120,16 +11043,16 @@ index abe9bd67..bcfb38a3 100644 base characteristic of \tcode{integral_constant}. \end{itemdescr} -@@ -6500,7 +6500,7 @@ template struct variant_alternative; +@@ -6617,7 +6617,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} -@@ -7228,7 +7228,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. +@@ -7348,7 +7348,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. \pnum \expects @@ -11138,7 +11061,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \effects -@@ -7256,7 +7256,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7376,7 +7376,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11147,7 +11070,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \effects -@@ -7289,7 +7289,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7409,7 +7409,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11156,7 +11079,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \effects -@@ -7374,7 +7374,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7494,7 +7494,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11165,7 +11088,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \effects -@@ -7409,7 +7409,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7529,7 +7529,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11174,7 +11097,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \effects -@@ -7453,7 +7453,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7573,7 +7573,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11183,7 +11106,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \effects -@@ -8159,9 +8159,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -8279,9 +8279,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 @@ -11195,7 +11118,7 @@ index abe9bd67..bcfb38a3 100644 \rSec3[expected.object.cons]{Constructors} -@@ -9401,7 +9401,7 @@ template friend constexpr bool operator==(const expected& x, const T2& +@@ -9521,7 +9521,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} @@ -11204,7 +11127,7 @@ index abe9bd67..bcfb38a3 100644 \end{note} \pnum -@@ -9538,7 +9538,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -9662,7 +9662,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum \tcode{E} shall meet the requirements of @@ -11213,7 +11136,7 @@ index abe9bd67..bcfb38a3 100644 \rSec3[expected.void.cons]{Constructors} -@@ -11563,8 +11563,8 @@ is ill-formed. +@@ -11785,8 +11785,8 @@ is ill-formed. \indextext{call wrapper}% \indextext{call wrapper!simple}% \indextext{call wrapper!forwarding}% @@ -11224,7 +11147,7 @@ index abe9bd67..bcfb38a3 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. -@@ -11604,7 +11604,7 @@ with references as described in the corresponding forwarding steps. +@@ -11826,7 +11826,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 @@ -11233,7 +11156,7 @@ index abe9bd67..bcfb38a3 100644 and whose copy constructor, move constructor, and assignment operators are constexpr functions that do not throw exceptions. -@@ -11707,7 +11707,7 @@ namespace std { +@@ -11929,7 +11929,7 @@ namespace std { \end{codeblock} \pnum @@ -11242,7 +11165,7 @@ index abe9bd67..bcfb38a3 100644 around a reference to an object or function of type \tcode{T}. \pnum -@@ -13161,7 +13161,7 @@ is \tcode{true}. +@@ -13383,7 +13383,7 @@ is \tcode{true}. \pnum \expects @@ -11251,7 +11174,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \returns -@@ -13247,10 +13247,10 @@ is \tcode{true}. +@@ -13469,10 +13469,10 @@ is \tcode{true}. \pnum \expects @@ -11264,7 +11187,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \returns -@@ -13316,7 +13316,7 @@ then \tcode{f != nullptr} is \tcode{true}. +@@ -13538,7 +13538,7 @@ then \tcode{f != nullptr} is \tcode{true}. \pnum \expects For each $\tcode{T}_i$ in \tcode{BoundArgs}, @@ -11273,7 +11196,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \returns -@@ -13361,7 +13361,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. +@@ -13583,7 +13583,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. \pnum Specializations of the \tcode{is_bind_expression} template shall meet @@ -11282,7 +11205,7 @@ index abe9bd67..bcfb38a3 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}. -@@ -13397,7 +13397,7 @@ The function template \tcode{bind} uses +@@ -13619,7 +13619,7 @@ The function template \tcode{bind} uses \pnum Specializations of the \tcode{is_placeholder} template shall meet @@ -11291,7 +11214,7 @@ index abe9bd67..bcfb38a3 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 -@@ -13447,7 +13447,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> +@@ -13669,7 +13669,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 @@ -11300,7 +11223,7 @@ index abe9bd67..bcfb38a3 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 -@@ -13483,8 +13483,8 @@ the state entities of \tcode{g}. +@@ -13705,8 +13705,8 @@ the state entities of \tcode{g}. \pnum \begin{note} If all of \tcode{FD} and $\tcode{TD}_i$ meet @@ -11311,7 +11234,7 @@ index abe9bd67..bcfb38a3 100644 \end{note} \end{itemdescr} -@@ -13553,13 +13553,13 @@ The number \tcode{\placeholder{M}} of placeholders is +@@ -13775,13 +13775,13 @@ The number \tcode{\placeholder{M}} of placeholders is \impldef{number of placeholders for bind expressions}. \pnum @@ -11328,7 +11251,7 @@ index abe9bd67..bcfb38a3 100644 but if so, their copy assignment operators are constexpr functions that do not throw exceptions. -@@ -13827,7 +13827,7 @@ Let \tcode{FD} be \tcode{decay_t}. +@@ -14049,7 +14049,7 @@ Let \tcode{FD} be \tcode{decay_t}. \pnum \expects @@ -11337,7 +11260,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \ensures -@@ -14252,9 +14252,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14474,9 +14474,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11349,7 +11272,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \ensures -@@ -14304,9 +14304,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14526,9 +14526,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11361,7 +11284,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \ensures -@@ -14346,9 +14346,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14568,9 +14568,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11373,7 +11296,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \ensures -@@ -14670,8 +14670,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14892,8 +14892,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11384,7 +11307,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \ensures -@@ -14726,8 +14726,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14948,8 +14948,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11395,7 +11318,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \ensures -@@ -14772,8 +14772,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14994,8 +14994,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11406,7 +11329,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \ensures -@@ -15290,7 +15290,7 @@ provided to the function call operator. +@@ -15512,7 +15512,7 @@ provided to the function call operator. \pnum Each specialization of a class template specified in \ref{func.search} @@ -11415,7 +11338,7 @@ index abe9bd67..bcfb38a3 100644 Template parameters named \begin{itemize} \item \tcode{ForwardIterator}, -@@ -15304,7 +15304,7 @@ Template parameters named +@@ -15526,7 +15526,7 @@ Template parameters named of templates specified in \ref{func.search} shall meet the same requirements and semantics as specified in \ref{algorithms.general}. @@ -11424,7 +11347,7 @@ index abe9bd67..bcfb38a3 100644 requirements (\tref{cpp17.hash}). \pnum -@@ -15413,9 +15413,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, +@@ -15635,9 +15635,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, \pnum \expects The value type of \tcode{RandomAccessIterator1} meets @@ -11437,7 +11360,7 @@ index abe9bd67..bcfb38a3 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15514,8 +15514,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, +@@ -15736,8 +15736,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, \begin{itemdescr} \pnum \expects @@ -11448,7 +11371,7 @@ index abe9bd67..bcfb38a3 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15588,7 +15588,7 @@ as the default hash function. +@@ -15810,7 +15810,7 @@ as the default hash function. Each specialization of \tcode{hash} is either enabled or disabled, as described below. \begin{note} @@ -11457,7 +11380,7 @@ index abe9bd67..bcfb38a3 100644 disabled specializations do not. \end{note} Each header that declares the template \tcode{hash} -@@ -15615,17 +15615,17 @@ Disabled specializations of \tcode{hash} +@@ -15837,17 +15837,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 @@ -11484,28 +11407,28 @@ index abe9bd67..bcfb38a3 100644 2.43.0 -From 6d3783559d80dcb25e603125353d93fa05567811 Mon Sep 17 00:00:00 2001 +From a6221ef3a01c8ed0b6e1a9deef27974da6fac2f6 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. --- source/algorithms.tex | 4 ++-- - source/containers.tex | 53 +++++++++++++++++++++---------------------- - source/exec.tex | 12 +++++----- - source/memory.tex | 6 ++--- + source/containers.tex | 42 +++++++++++++++++++++--------------------- + source/exec.tex | 12 ++++++------ + source/memory.tex | 6 +++--- source/meta.tex | 2 +- source/numerics.tex | 4 ++-- - source/ranges.tex | 38 +++++++++++++++---------------- - source/threads.tex | 8 +++---- - source/utilities.tex | 8 +++---- - 9 files changed, 67 insertions(+), 68 deletions(-) + source/ranges.tex | 38 +++++++++++++++++++------------------- + source/threads.tex | 8 ++++---- + source/utilities.tex | 8 ++++---- + 9 files changed, 62 insertions(+), 62 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 23502107..15374649 100644 +index 4813bec6..a47a149f 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -7072,7 +7072,7 @@ Let: +@@ -7080,7 +7080,7 @@ Let: \tcode{invoke(op, invoke(proj, *(first1 + (i - result))))} for unary transforms defined in namespace \tcode{ranges}; \item @@ -11514,7 +11437,7 @@ index 23502107..15374649 100644 for binary transforms defined in namespace \tcode{ranges}. \end{itemize} \end{itemize} -@@ -14185,7 +14185,7 @@ namespace ranges { +@@ -14217,7 +14217,7 @@ namespace ranges { \pnum \constraints \tcode{is_unbounded_array_v} is \tcode{false}. @@ -11524,7 +11447,7 @@ index 23502107..15374649 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index 7053f174..0e9a3e38 100644 +index 0731405d..59118f4f 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1461,7 +1461,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11536,7 +11459,7 @@ index 7053f174..0e9a3e38 100644 an implementation should not perform more than a single reallocation. \pnum -@@ -1833,7 +1833,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 @@ -11545,17 +11468,16 @@ index 7053f174..0e9a3e38 100644 an implementation should not perform any reallocation. \end{itemdescr} -@@ -2449,8 +2449,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 -@@ -7473,14 +7472,14 @@ template +@@ -7473,14 +7473,14 @@ template \pnum \expects \tcode{T} is \oldconcept{EmplaceConstructible} into \tcode{forward_list} @@ -11572,7 +11494,7 @@ index 7053f174..0e9a3e38 100644 \pnum \returns -@@ -10639,7 +10638,7 @@ template +@@ -10706,7 +10706,7 @@ template \pnum The expression \tcode{\exposid{is-vector-bool-reference}} is \tcode{true} @@ -11581,7 +11503,7 @@ index 7053f174..0e9a3e38 100644 for some type \tcode{Alloc} and \tcode{vector} is not a program-defined specialization. \end{itemdescr} -@@ -12031,7 +12030,7 @@ there is no effect. +@@ -12103,7 +12103,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)), @@ -11590,7 +11512,7 @@ index 7053f174..0e9a3e38 100644 If \tcode{equal_range(u.first) == r} is \tcode{false}, the behavior is undefined. Inserts \tcode{u} into \tcode{*this}. -@@ -17517,7 +17516,7 @@ template +@@ -17612,7 +17612,7 @@ template \pnum \effects Equivalent to \tcode{flat_map(sorted_unique, key_cont, mapped_cont)} and @@ -11599,7 +11521,7 @@ index 7053f174..0e9a3e38 100644 except that \tcode{\exposid{c}.keys} and \tcode{\exposid{c}.values} are constructed with uses-allocator construction\iref{allocator.uses.construction}. -@@ -17701,7 +17700,7 @@ template constexpr pair emplace(Args&&... args); +@@ -17796,7 +17796,7 @@ template constexpr pair emplace(Args&&... args); \pnum \effects Initializes an object \tcode{t} of type \tcode{pair} @@ -11608,7 +11530,7 @@ index 7053f174..0e9a3e38 100644 if the map already contains an element whose key is equivalent to \tcode{t.first}, \tcode{*this} is unchanged. -@@ -17957,7 +17956,7 @@ template +@@ -18068,7 +18068,7 @@ template \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11617,7 +11539,7 @@ index 7053f174..0e9a3e38 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18012,7 +18011,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. +@@ -18123,7 +18123,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}, @@ -11626,7 +11548,7 @@ index 7053f174..0e9a3e38 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18626,14 +18625,14 @@ template +@@ -18753,14 +18753,14 @@ template \pnum \effects Equivalent to \tcode{flat_multimap(key_cont, mapped_cont)} and @@ -11643,7 +11565,7 @@ index 7053f174..0e9a3e38 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -23194,7 +23193,7 @@ is representable as a value of type \tcode{index_type.} +@@ -23454,7 +23454,7 @@ is representable as a value of type \tcode{index_type.} \item If \exposid{rank_} is greater than one, then the product of @@ -11652,7 +11574,7 @@ index 7053f174..0e9a3e38 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}. -@@ -23273,7 +23272,7 @@ template +@@ -23533,7 +23533,7 @@ template \item If \exposid{rank_} is greater than \tcode{1} and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11661,7 +11583,7 @@ index 7053f174..0e9a3e38 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(0))) -@@ -23341,7 +23340,7 @@ is \tcode{true}. +@@ -23608,7 +23608,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11670,7 +11592,7 @@ index 7053f174..0e9a3e38 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(0))) -@@ -23739,7 +23738,7 @@ Implementations should not store this value +@@ -24008,7 +24008,7 @@ Implementations should not store this value if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. \begin{note} Using \tcode{extents} @@ -11679,7 +11601,7 @@ index 7053f174..0e9a3e38 100644 would achieve this. \end{note} \end{itemdescr} -@@ -23822,13 +23821,13 @@ is representable as a value of type \tcode{index_type}. +@@ -24091,13 +24091,13 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -11695,7 +11617,7 @@ index 7053f174..0e9a3e38 100644 \end{itemize} \pnum -@@ -23901,7 +23900,7 @@ template +@@ -24170,7 +24170,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11704,7 +11626,7 @@ index 7053f174..0e9a3e38 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -23969,7 +23968,7 @@ is \tcode{true}. +@@ -24245,7 +24245,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11713,48 +11635,11 @@ index 7053f174..0e9a3e38 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) -@@ -25628,7 +25627,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} -@@ -26026,11 +26025,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 -@@ -26060,11 +26059,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 a8d4d24a..23646135 100644 +index 16de2113..1bf60f69 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -3244,7 +3244,7 @@ except that \tcode{sch} is evaluated only once. +@@ -3267,7 +3267,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}, @@ -11763,7 +11648,7 @@ index a8d4d24a..23646135 100644 \tcode{starts_on.transform_sender(out_sndr, env)} are ill-formed; otherwise \begin{itemize} \item -@@ -3624,7 +3624,7 @@ except that \tcode{sndr} is evaluated only once. +@@ -3647,7 +3647,7 @@ except that \tcode{sndr} is evaluated only once. \pnum Let \tcode{out_sndr} and \tcode{env} be subexpressions, let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and @@ -11772,7 +11657,7 @@ index a8d4d24a..23646135 100644 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. -@@ -3766,7 +3766,7 @@ Let the expression \exposid{then-cpo} be one of +@@ -3789,7 +3789,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}, @@ -11781,7 +11666,7 @@ index a8d4d24a..23646135 100644 \pnum Otherwise, -@@ -4071,7 +4071,7 @@ is initialized with a callable object equivalent to the following: +@@ -4090,7 +4090,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 @@ -11790,7 +11675,7 @@ index a8d4d24a..23646135 100644 is \tcode{false}, then the expression \tcode{\exposid{let-cpo}.transform_env(sndr, env)} is ill-formed. -@@ -4686,7 +4686,7 @@ try { +@@ -4731,7 +4731,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -11799,7 +11684,7 @@ index a8d4d24a..23646135 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -5729,7 +5729,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. +@@ -5762,7 +5762,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. \pnum For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. @@ -11809,10 +11694,10 @@ index a8d4d24a..23646135 100644 the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: diff --git a/source/memory.tex b/source/memory.tex -index eddd5794..ceadf294 100644 +index 0b20e5ce..87658ba8 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1371,7 +1371,7 @@ A \tcode{tuple} value determined as follows: +@@ -1245,7 +1245,7 @@ A \tcode{tuple} value determined as follows: \begin{itemize} \item If \tcode{uses_allocator_v, Alloc>} is \tcode{false} and @@ -11821,7 +11706,7 @@ index eddd5794..ceadf294 100644 return \tcode{forward_as_tuple(std::forward(args)...)}. \item Otherwise, if \tcode{uses_allocator_v, Alloc>} is \tcode{true} and -@@ -4332,7 +4332,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje +@@ -4206,7 +4206,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 @@ -11830,7 +11715,7 @@ index eddd5794..ceadf294 100644 \tcode{allocate_shared_for_overwrite}, it is initialized via the expression \tcode{::new(pv) U}, where \tcode{pv} has type \tcode{void*} and -@@ -5567,7 +5567,7 @@ if (p) { +@@ -5441,7 +5441,7 @@ if (p) { \end{codeblock} if the expression \tcode{s.reset(static_cast(p), std::forward(args)...)} @@ -11840,10 +11725,10 @@ index eddd5794..ceadf294 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index 1a731050..b727a291 100644 +index 02a1d8f4..63be3ac8 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -2534,7 +2534,7 @@ present as follows: +@@ -2526,7 +2526,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 @@ -11853,11 +11738,11 @@ index 1a731050..b727a291 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index 6651e2d3..8d3ac385 100644 +index 084414fa..0b84dc63 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -13793,7 +13793,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. - \mandates +@@ -13822,7 +13822,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. + a specialization of \tcode{complex}. Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. -Then, \tcode{decltype(\linebreak init + a * a} is convertible to \tcode{Scalar}. @@ -11865,8 +11750,8 @@ index 6651e2d3..8d3ac385 100644 \pnum \returns -@@ -13999,7 +13999,7 @@ template - \mandates +@@ -14023,7 +14023,7 @@ template())}. -Then, \tcode{decltype(\linebreak init + a * a)} @@ -11875,7 +11760,7 @@ index 6651e2d3..8d3ac385 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 095b3aca..380a7035 100644 +index e12de083..afbb6b0c 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -11896,7 +11781,7 @@ index 095b3aca..380a7035 100644 \tcode{make_from_tuple(std::move(bound_args))}. The behavior is undefined if \tcode{Bound} is not \tcode{unreachable_sentinel_t} and -@@ -5916,7 +5916,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} +@@ -5921,7 +5921,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), @@ -11905,7 +11790,7 @@ index 095b3aca..380a7035 100644 except that \tcode{E} is evaluated only once. \item -@@ -6392,7 +6392,7 @@ if \tcode{T} is +@@ -6402,7 +6402,7 @@ if \tcode{T} is a specialization of \tcode{subrange} that models \libconcept{random_access_range} and \libconcept{sized_range}, then @@ -11914,7 +11799,7 @@ index 095b3aca..380a7035 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. -@@ -7444,7 +7444,7 @@ Let \placeholder{OUTERC} denote +@@ -7454,7 +7454,7 @@ Let \placeholder{OUTERC} denote let \placeholder{INNERC} denote \tcode{iterator_traits<\exposid{InnerIter}>::iterator_category}, and let \placeholder{PATTERNC} denote @@ -11923,7 +11808,7 @@ index 095b3aca..380a7035 100644 \item If \begin{codeblock} -@@ -7953,7 +7953,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); +@@ -7963,7 +7963,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 @@ -11932,7 +11817,7 @@ index 095b3aca..380a7035 100644 \end{itemdescr} \rSec3[range.lazy.split.outer]{Class template \tcode{lazy_split_view::\exposid{outer-iterator}}} -@@ -8264,7 +8264,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: +@@ -8274,7 +8274,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: \begin{itemize} \item \tcode{forward_iterator_tag} if @@ -11941,7 +11826,7 @@ index 095b3aca..380a7035 100644 \tcode{\libconcept{derived_from}}; \item otherwise, \tcode{iterator_traits>::iterator_category}. \end{itemize} -@@ -8484,7 +8484,7 @@ constexpr explicit split_view(R&& r, range_value_t e); +@@ -8494,7 +8494,7 @@ constexpr explicit split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -11950,7 +11835,7 @@ index 095b3aca..380a7035 100644 \end{itemdescr} \indexlibrarymember{begin}{split_view} -@@ -9049,7 +9049,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. +@@ -9060,7 +9060,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. \item Otherwise, if \tcode{\exposconcept{all-forward}} is modeled, @@ -11959,7 +11844,7 @@ index 095b3aca..380a7035 100644 \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} -@@ -9075,14 +9075,14 @@ let \tcode{Cs} denote the pack of types +@@ -9086,14 +9086,14 @@ let \tcode{Cs} denote the pack of types \begin{itemize} \item If @@ -11977,7 +11862,7 @@ index 095b3aca..380a7035 100644 \item Otherwise, if \tcode{(\libconcept{derived_from} \&\& ...)} -@@ -9534,11 +9534,11 @@ Let +@@ -9545,11 +9545,11 @@ Let %FIXME This is hard to parse. If \tcode{$i_\tcode{x}$ > $i_\tcode{y}$}, let \tcode{$d_\tcode{y}$} be @@ -11992,7 +11877,7 @@ index 095b3aca..380a7035 100644 for every integer \tcode{$i$} in the range \range{$i_\tcode{y}$ + 1}{$i_\tcode{x}$} if there is any, and -@@ -9581,7 +9581,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul +@@ -9592,7 +9592,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 @@ -12001,7 +11886,7 @@ index 095b3aca..380a7035 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 -@@ -9738,7 +9738,7 @@ is expression-equivalent to: +@@ -9749,7 +9749,7 @@ is expression-equivalent to: \begin{itemize} \item If \tcode{T} models \libconcept{contiguous_iterator}, @@ -12010,7 +11895,7 @@ index 095b3aca..380a7035 100644 \item Otherwise, if \tcode{T} models \libconcept{random_access_iterator}, -@@ -13434,7 +13434,7 @@ is defined as follows: +@@ -13455,7 +13455,7 @@ is defined as follows: \item If \tcode{invoke_result_t<\exposid{maybe-const}\&, \exposid{REPEAT}(range_reference_t<\exposid{Base}>, N)...>} @@ -12019,7 +11904,7 @@ index 095b3aca..380a7035 100644 \tcode{iterator_category} denotes \tcode{input_iterator_tag}. \item Otherwise, let \tcode{C} denote the type -@@ -14545,7 +14545,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ +@@ -14566,7 +14566,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_})}, @@ -12029,10 +11914,10 @@ index 095b3aca..380a7035 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index 7b9503eb..e28c8648 100644 +index 9d5fcfed..20d0f06a 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -3465,7 +3465,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, +@@ -3481,7 +3481,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12041,7 +11926,7 @@ index 7b9503eb..e28c8648 100644 \pnum \effects -@@ -4740,7 +4740,7 @@ For the \tcode{volatile} overload of this function, +@@ -4774,7 +4774,7 @@ For the \tcode{volatile} overload of this function, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12050,7 +11935,7 @@ index 7b9503eb..e28c8648 100644 \pnum \effects -@@ -6264,7 +6264,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de +@@ -6285,7 +6285,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12059,7 +11944,7 @@ index 7b9503eb..e28c8648 100644 \pnum \effects -@@ -6580,7 +6580,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire +@@ -6601,7 +6601,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12069,10 +11954,10 @@ index 7b9503eb..e28c8648 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index bcfb38a3..895df40f 100644 +index 639cc237..06e48fd5 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -2062,7 +2062,7 @@ equals \tcode{tuple_size_v>}, +@@ -2078,7 +2078,7 @@ equals \tcode{tuple_size_v>}, \item \tcode{(is_constructible_v(std::forward(u)))> \&\& ...)} @@ -12081,7 +11966,7 @@ index bcfb38a3..895df40f 100644 \tcode{true}, and \item -@@ -3078,7 +3078,7 @@ denotes a type. +@@ -3096,7 +3096,7 @@ denotes a type. \pnum \result The member \grammarterm{typedef-name} \tcode{type} denotes the type @@ -12090,7 +11975,7 @@ index bcfb38a3..895df40f 100644 \end{itemdescr} \indexlibrarymember{common_type}{tuple}% -@@ -4075,7 +4075,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and +@@ -4103,7 +4103,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and \pnum All requirements on container iterators\iref{container.reqmts} apply to @@ -12099,7 +11984,7 @@ index bcfb38a3..895df40f 100644 \pnum Any operation that initializes or destroys the contained value of an optional object invalidates all iterators into that object. -@@ -8987,7 +8987,7 @@ constexpr const T&& value() const &&; +@@ -9107,7 +9107,7 @@ constexpr const T&& value() const &&; \pnum \mandates \tcode{is_copy_constructible_v} is \tcode{true} and diff --git a/lastbuild.sig b/lastbuild.sig index 640e9ffbd0..d522a460da 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ -htmlgen eee5307c45c04761ef5c27956cbed742e08e5fb4 -draft 98ce5ac6fbce2338787adb9b1c842fcf8ebab37c -c312e8aec5bdafb199f3b0f435fd63c3599f2f4a htmlgen.patch +htmlgen 28b6c103f58b9b4305a7d15b224212f1727b7b05 +draft 1d9fdb066e95b7be58881f24977a20a51359097c +bbc2beaa01d1c9e4cd298aa91f392517393b5f5f htmlgen.patch From 7bedb2f40cc2b846ea9c584b02d1322355e72bdd Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Wed, 8 Apr 2026 19:21:33 -0500 Subject: [PATCH 09/18] Update --- cxxdraft-htmlgen | 2 +- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 1061 ++++++++++++++++++++++++---------------------- lastbuild.sig | 6 +- 5 files changed, 566 insertions(+), 507 deletions(-) diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen index 28b6c103f5..ec08ed9082 160000 --- a/cxxdraft-htmlgen +++ b/cxxdraft-htmlgen @@ -1 +1 @@ -Subproject commit 28b6c103f58b9b4305a7d15b224212f1727b7b05 +Subproject commit ec08ed9082b71d87ffc970becceff11c5f8438b2 diff --git a/draft b/draft index 1d9fdb066e..5c8fc4311a 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 1d9fdb066e95b7be58881f24977a20a51359097c +Subproject commit 5c8fc4311ab8ec82f789e9eadf4cf39f47beabf9 diff --git a/gh-pages b/gh-pages index 551bd11729..5fabcc0734 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 551bd117291a90dabe2194bbb6f3967c9ec73a22 +Subproject commit 5fabcc07340c334f9e21025e048c896a71e49985 diff --git a/htmlgen.patch b/htmlgen.patch index 650be36ffc..605756f5ca 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,8 +1,8 @@ -From 25fa7a16a3a954e36753a09d8ad05ef0916ce6e3 Mon Sep 17 00:00:00 2001 +From bb7ca297960b66cd35bae9ab9023b4ce400d4fc9 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 - smaller (e.g. half-screen) window sizes. +Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout + on smaller (e.g. half-screen) window sizes. --- source/basic.tex | 26 +++++++++++++------------- @@ -10,7 +10,7 @@ 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 c427e154..f34638ff 100644 +index de215a04..8e863f4c 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -324,7 +324,7 @@ Given @@ -22,7 +22,7 @@ index c427e154..f34638ff 100644 }; int main() { -@@ -2628,23 +2628,23 @@ namespace AB { +@@ -2629,23 +2629,23 @@ namespace AB { void h() { @@ -59,10 +59,10 @@ index c427e154..f34638ff 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index ca57b322..ce24309d 100644 +index 10fffe4f..de418bed 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -2937,7 +2937,7 @@ struct s2 { +@@ -2938,7 +2938,7 @@ struct s2 { } auto g() { return [] { @@ -75,10 +75,10 @@ index ca57b322..ce24309d 100644 2.43.0 -From 73205525edfade93e41de3375de335f395e6e18d Mon Sep 17 00:00:00 2001 +From 519c97d9af6000c8ab322c984b6cd7a2431a94f3 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. +Subject: [PATCH 02/10] Use new link macros. --- source/algorithms.tex | 4 +- @@ -86,7 +86,7 @@ Subject: [PATCH 2/9] Use new link macros. source/classes.tex | 22 ++-- source/compatibility.tex | 4 +- source/concepts.tex | 12 +- - source/containers.tex | 50 ++++---- + source/containers.tex | 48 +++---- source/declarations.tex | 67 +++++----- source/diagnostics.tex | 6 +- source/exceptions.tex | 36 +++--- @@ -94,7 +94,7 @@ Subject: [PATCH 2/9] Use new link macros. source/future.tex | 10 +- source/intro.tex | 19 +-- source/iostreams.tex | 74 +++++------ - source/iterators.tex | 8 +- + source/iterators.tex | 6 +- source/lex.tex | 6 +- source/lib-intro.tex | 71 +++++------ source/limits.tex | 2 +- @@ -108,10 +108,10 @@ Subject: [PATCH 2/9] Use new link macros. source/threads.tex | 45 ++++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 602 insertions(+), 612 deletions(-) + 27 files changed, 600 insertions(+), 610 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 74ac223b..5bf27eb7 100644 +index baf3e4f2..c313c941 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -133,7 +133,7 @@ index 74ac223b..5bf27eb7 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index f34638ff..ac68557f 100644 +index 8e863f4c..818f9001 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -162,7 +162,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -248,12 +248,12 @@ index f34638ff..ac68557f 100644 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 initialized with a constant expression\iref{expr.const.const}, ++\item is initialized with a \link{constant expression}{expr.const.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} -@@ -2921,7 +2920,7 @@ are attached to the same module. +@@ -2922,7 +2921,7 @@ are attached to the same module. \indextext{linkage!\idxcode{inline} and}% \indextext{\idxcode{inline}!linkage of}% The name of an entity @@ -262,7 +262,7 @@ index f34638ff..ac68557f 100644 has internal linkage if it is the name of \begin{itemize} \item -@@ -2962,7 +2961,7 @@ typedef declaration in which the class has the typedef name for linkage +@@ -2963,7 +2962,7 @@ typedef declaration in which the class has the typedef name for linkage purposes\iref{dcl.typedef}; or \item \indextext{enumeration!linkage of}% @@ -271,7 +271,7 @@ index f34638ff..ac68557f 100644 in a typedef declaration in which the enumeration has the typedef name for linkage purposes\iref{dcl.typedef}; or \item an unnamed enumeration -@@ -3038,7 +3037,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. +@@ -3039,7 +3038,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 @@ -280,7 +280,7 @@ index f34638ff..ac68557f 100644 linkage. \pnum -@@ -3397,8 +3396,8 @@ features of the language, such as references and virtual functions, might +@@ -3398,8 +3397,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} @@ -291,7 +291,7 @@ index f34638ff..ac68557f 100644 locations without interfering with each other. \pnum -@@ -3442,15 +3441,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but +@@ -3443,15 +3442,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 @@ -310,7 +310,7 @@ index f34638ff..ac68557f 100644 and in its period of destruction\iref{class.cdtor}. \begin{note} -@@ -3584,7 +3583,7 @@ A \defn{potentially-overlapping subobject} is either: +@@ -3585,7 +3584,7 @@ A \defn{potentially-overlapping subobject} is either: \begin{itemize} \item a base class subobject, or \item a non-static data member @@ -319,7 +319,7 @@ index f34638ff..ac68557f 100644 \end{itemize} \pnum -@@ -3605,7 +3604,7 @@ Otherwise, the circumstances under which the object has zero size +@@ -3606,7 +3605,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}% @@ -328,7 +328,7 @@ index f34638ff..ac68557f 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 -@@ -4198,16 +4197,16 @@ the result of the evaluation is that erroneous value: +@@ -4199,16 +4198,16 @@ the result of the evaluation is that erroneous value: is produced by the evaluation of: \begin{itemize} \item @@ -348,7 +348,7 @@ index f34638ff..ac68557f 100644 \end{itemize} then the result of the operation is an indeterminate value or that erroneous value, respectively. -@@ -4398,8 +4397,8 @@ specified in~\ref{class.copy.elision}. +@@ -4399,8 +4398,8 @@ specified in~\ref{class.copy.elision}. \indextext{storage duration!dynamic|(} \pnum @@ -359,7 +359,7 @@ index f34638ff..ac68557f 100644 \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -@@ -4563,9 +4562,9 @@ that would match a handler\iref{except.handle} of type +@@ -4564,9 +4563,9 @@ that would match a handler\iref{except.handle} of type \tcode{std::bad_alloc}\iref{bad.alloc}. \pnum @@ -372,7 +372,7 @@ index f34638ff..ac68557f 100644 a coroutine state\iref{dcl.fct.def.coroutine}, or called indirectly through calls to the functions in the \Cpp{} standard library. -@@ -5090,9 +5089,9 @@ shall be destroyed before +@@ -5091,9 +5090,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. @@ -385,7 +385,7 @@ index f34638ff..ac68557f 100644 \end{note} \pnum -@@ -5266,7 +5265,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, +@@ -5267,7 +5266,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, pointer types, pointer-to-member types\iref{basic.compound}, \tcode{std::meta::\brk{}info}, \tcode{std::nullptr_t}, and @@ -394,7 +394,7 @@ index f34638ff..ac68557f 100644 types are collectively called \defnadjx{scalar}{types}{type}. \label{term.trivially.copyable.type}% -@@ -5291,7 +5290,7 @@ A type is a \defnadj{literal}{type} if it is: +@@ -5292,7 +5291,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 @@ -403,7 +403,7 @@ index f34638ff..ac68557f 100644 has all of the following properties: \begin{itemize} \item it has a constexpr destructor\iref{dcl.constexpr}, -@@ -5325,8 +5324,8 @@ will be usable in a constant expression. +@@ -5326,8 +5325,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, @@ -459,10 +459,10 @@ index f34638ff..ac68557f 100644 -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 ed746ce9..eaf6e4da 100644 +index 058a3176..7883ea0a 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -188,10 +188,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: @@ -546,7 +546,7 @@ index ed746ce9..eaf6e4da 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 a0ae25da..3aa1637b 100644 +index edbd9196..60706217 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -1990,8 +1990,8 @@ deallocation functions\iref{expr.new}. @@ -561,7 +561,7 @@ index a0ae25da..3aa1637b 100644 lvalue-to-rvalue conversion, were considered gratuitous and surprising. \effect diff --git a/source/concepts.tex b/source/concepts.tex -index 3cbd110a..1722b95c 100644 +index d1e15a6e..42828a4b 100644 --- a/source/concepts.tex +++ b/source/concepts.tex @@ -300,7 +300,7 @@ classifications, and fundamental type properties. @@ -609,7 +609,7 @@ index 3cbd110a..1722b95c 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index 2a04fa0e..f3aded8c 100644 +index 89f3bca5..d64183f9 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -6125,14 +6125,14 @@ namespace std { @@ -640,7 +640,7 @@ index 2a04fa0e..f3aded8c 100644 Descriptions are provided here only for operations on \tcode{array} that are not described in one of these tables and -@@ -6154,13 +6154,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} @@ -649,13 +649,6 @@ index 2a04fa0e..f3aded8c 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}% @@ -6479,7 +6479,7 @@ namespace std { A \indexlibraryglobal{deque}% @@ -801,7 +794,7 @@ index 2a04fa0e..f3aded8c 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index 510def3e..45030de5 100644 +index eac2152f..cc6330bc 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -935,9 +928,9 @@ index 510def3e..45030de5 100644 type and the \grammarterm{constant-expression} in the \grammarterm{enumerator-definition} -shall be a converted constant expression of the underlying --type\iref{expr.const}. +-type\iref{expr.const.const}. +shall be a -+\deflinkx{converted constant expression}{expression!converted constant}{expr.const} ++\deflinkx{converted constant expression}{expression!converted constant}{expr.const.const} +of the underlying type. If the underlying type is not fixed, @@ -947,9 +940,9 @@ index 510def3e..45030de5 100644 \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 +-expression\iref{expr.const.const}. If the expression has +\grammarterm{constant-expression} shall be an -+\deflinkx{integral constant expression}{expression!integral constant}{expr.const}. ++\deflinkx{integral constant expression}{expression!integral constant}{expr.const.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. @@ -1024,7 +1017,7 @@ index 510def3e..45030de5 100644 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 be2b863f..e653b348 100644 +index 47be572c..8b010321 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -505,13 +505,13 @@ the current state of \tcode{NDEBUG} each time that @@ -1053,7 +1046,7 @@ index be2b863f..e653b348 100644 \end{note} \indexlibraryglobal{system_error}% diff --git a/source/exceptions.tex b/source/exceptions.tex -index 2a4d6d7b..0072f5d6 100644 +index 29d43577..a9fd6f69 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -184,7 +184,7 @@ try : i(f(ii)), d(id) { @@ -1116,10 +1109,10 @@ index 2a4d6d7b..0072f5d6 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 @@ -1202,7 +1195,7 @@ index 2a4d6d7b..0072f5d6 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index ce24309d..0d2c5348 100644 +index de418bed..cea81800 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1418,7 +1411,7 @@ index ce24309d..0d2c5348 100644 \rSec3[expr.prim.lambda.capture]{Captures}% -@@ -3213,7 +3213,7 @@ A fold expression is a pack expansion. +@@ -3214,7 +3214,7 @@ A fold expression is a pack expansion. \pnum A \grammarterm{requires-expression} provides a concise way to express requirements on template arguments @@ -1427,7 +1420,7 @@ index ce24309d..0d2c5348 100644 or by checking properties of types and expressions. \begin{bnf} -@@ -3797,7 +3797,7 @@ or a prvalue of function pointer type. +@@ -3798,7 +3798,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 @@ -1436,7 +1429,7 @@ index ce24309d..0d2c5348 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} -@@ -3810,8 +3810,8 @@ an object under construction or destruction. +@@ -3811,8 +3811,8 @@ an object under construction or destruction. \pnum \begin{note} @@ -1447,7 +1440,7 @@ index ce24309d..0d2c5348 100644 the program is ill-formed. No function is implicitly declared by such a call. \end{note} -@@ -3878,7 +3878,7 @@ function, +@@ -3879,7 +3879,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, @@ -1456,7 +1449,7 @@ index ce24309d..0d2c5348 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) -@@ -4015,10 +4015,10 @@ pointer parameters. +@@ -4016,10 +4016,10 @@ pointer parameters. \pnum \indextext{declaration!ellipsis in function}% \indextext{parameter list!variable}% @@ -1470,7 +1463,7 @@ index ce24309d..0d2c5348 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. -@@ -4036,8 +4036,8 @@ thus each such argument has a corresponding parameter when a function template +@@ -4037,8 +4037,8 @@ thus each such argument has a corresponding parameter when a function template specialization is actually called. \end{note} The @@ -1481,7 +1474,7 @@ index ce24309d..0d2c5348 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}. -@@ -4052,16 +4052,16 @@ an eligible non-trivial move constructor, or +@@ -4053,16 +4053,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 @@ -1503,7 +1496,7 @@ index ce24309d..0d2c5348 100644 \pnum A function call is an lvalue -@@ -4080,8 +4080,8 @@ except as specified in \ref{dcl.type.decltype}. +@@ -4081,8 +4081,8 @@ except as specified in \ref{dcl.type.decltype}. \indextext{type conversion, explicit|see{casting}}% \indextext{conversion explicit type|see{casting}}% \indextext{casting}% @@ -1514,7 +1507,7 @@ index ce24309d..0d2c5348 100644 by a parenthesized optional \grammarterm{expression-list} or by a \grammarterm{braced-init-list} (the initializer) -@@ -4092,7 +4092,7 @@ If the type is a placeholder +@@ -4093,7 +4093,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 @@ -1523,7 +1516,7 @@ index ce24309d..0d2c5348 100644 for the remainder of this subclause. Otherwise, if the type contains a placeholder type, it is replaced by the type -@@ -4491,8 +4491,8 @@ void foo(D* dp) { +@@ -4492,8 +4492,8 @@ void foo(D* dp) { \end{example} \pnum @@ -1534,7 +1527,7 @@ index ce24309d..0d2c5348 100644 \pnum If \tcode{v} is a null pointer value, the result is a null pointer value. -@@ -4543,9 +4543,9 @@ runtime check \term{fails}. +@@ -4544,9 +4544,9 @@ runtime check \term{fails}. \pnum The value of a failed cast to pointer type is the null pointer value of @@ -1547,7 +1540,7 @@ index ce24309d..0d2c5348 100644 \indextext{\idxcode{bad_cast}}% \indexlibraryglobal{bad_cast}% -@@ -4634,13 +4634,13 @@ glvalue refers. +@@ -4635,13 +4635,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. @@ -1565,7 +1558,7 @@ index ce24309d..0d2c5348 100644 \pnum When \keyword{typeid} is applied to a \grammarterm{type-id}, the result -@@ -4734,7 +4734,7 @@ of type \tcode{T1} can be cast to type ``rvalue +@@ -4735,7 +4735,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 @@ -1574,7 +1567,7 @@ index ce24309d..0d2c5348 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 -@@ -4839,7 +4839,8 @@ Otherwise, the behavior is undefined. +@@ -4840,7 +4840,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}'', @@ -1584,7 +1577,7 @@ index ce24309d..0d2c5348 100644 from \tcode{B}, if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. -@@ -4860,7 +4861,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} +@@ -4861,7 +4862,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 @@ -1593,7 +1586,7 @@ index ce24309d..0d2c5348 100644 if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. \begin{note} -@@ -4871,7 +4872,7 @@ If no valid standard conversion +@@ -4872,7 +4873,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. @@ -1602,7 +1595,7 @@ index ce24309d..0d2c5348 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 -@@ -4894,7 +4895,7 @@ If the original pointer value represents the address +@@ -4895,7 +4896,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} @@ -1611,7 +1604,7 @@ index ce24309d..0d2c5348 100644 the result is a pointer to \placeholder{b}. Otherwise, the pointer value is unchanged by the conversion. \begin{example} -@@ -4917,8 +4918,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. +@@ -4918,8 +4919,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 @@ -1622,7 +1615,7 @@ index ce24309d..0d2c5348 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}. -@@ -5083,10 +5084,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type +@@ -5084,10 +5085,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 @@ -1636,7 +1629,7 @@ index ce24309d..0d2c5348 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 -@@ -5639,7 +5640,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside +@@ -5640,7 +5641,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, @@ -1645,7 +1638,7 @@ index ce24309d..0d2c5348 100644 \grammarterm{type-id}. \indextext{type!incomplete}% The \keyword{sizeof} operator shall not be applied to an expression that -@@ -5694,7 +5695,7 @@ array-to-pointer\iref{conv.array}, and +@@ -5695,7 +5696,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, @@ -1654,7 +1647,7 @@ index ce24309d..0d2c5348 100644 is applied. \pnum -@@ -5839,7 +5840,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. +@@ -5840,7 +5841,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. \end{bnf} \pnum @@ -1663,7 +1656,7 @@ index ce24309d..0d2c5348 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 -@@ -5967,7 +5968,7 @@ is less than zero; +@@ -5968,7 +5969,7 @@ is less than zero; \item its value is such that the size of the allocated object would exceed the @@ -1672,7 +1665,7 @@ index ce24309d..0d2c5348 100644 \item the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} -@@ -5993,7 +5994,7 @@ is the null pointer value of the required result type; +@@ -5994,7 +5995,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 @@ -1681,7 +1674,7 @@ index ce24309d..0d2c5348 100644 \end{itemize} \end{itemize} When the value of the \grammarterm{expression} is zero, the allocation -@@ -6051,8 +6052,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( +@@ -6052,8 +6053,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 @@ -1692,7 +1685,7 @@ index ce24309d..0d2c5348 100644 is a non-array type, the allocation function's name is \indextext{\idxcode{operator new}}% \indextext{\idxcode{operator delete}}% -@@ -6163,7 +6164,7 @@ the difference between the +@@ -6164,7 +6165,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 @@ -1701,7 +1694,7 @@ index ce24309d..0d2c5348 100644 is no greater than the size of the array being created. \begin{note} \indextext{allocation!alignment storage}% -@@ -6254,7 +6255,7 @@ invocation of \keyword{new} to another. +@@ -6255,7 +6256,7 @@ invocation of \keyword{new} to another. \pnum \begin{note} Unless an allocation function has a non-throwing @@ -1710,7 +1703,7 @@ index ce24309d..0d2c5348 100644 it indicates failure to allocate storage by throwing a \indextext{\idxcode{bad_alloc}}% \indexlibraryglobal{bad_alloc}% -@@ -6400,8 +6401,8 @@ to both the allocation and deallocation functions. +@@ -6401,8 +6402,8 @@ to both the allocation and deallocation functions. \pnum \indextext{expression!\idxcode{delete}}% \indextext{\idxcode{delete}}% @@ -1721,7 +1714,7 @@ index ce24309d..0d2c5348 100644 \grammarterm{new-expression}. \begin{bnf} -@@ -6504,8 +6505,8 @@ null pointer value, then: +@@ -6505,8 +6506,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 @@ -1732,7 +1725,7 @@ index ce24309d..0d2c5348 100644 allocation call of the \grammarterm{new-expression} shall be passed as the first argument to the deallocation function. -@@ -7090,8 +7091,8 @@ The result of a \tcode{.*} expression +@@ -7091,8 +7092,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. @@ -1743,7 +1736,7 @@ index ce24309d..0d2c5348 100644 \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -7120,7 +7121,7 @@ left-to-right. +@@ -7121,7 +7122,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 @@ -1752,7 +1745,7 @@ index ce24309d..0d2c5348 100644 operands and determine the type of the result. \pnum -@@ -7251,7 +7252,7 @@ the behavior is undefined\iref{expr.pre}. +@@ -7252,7 +7253,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 @@ -1761,7 +1754,7 @@ index ce24309d..0d2c5348 100644 \begin{example} \begin{codeblock} int arr[5] = {1, 2, 3, 4, 5}; -@@ -7342,12 +7343,12 @@ and the other is not, the program is ill-formed. +@@ -7343,12 +7344,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, @@ -1776,7 +1769,7 @@ index ce24309d..0d2c5348 100644 other than from an integral type to a floating-point type, the program is ill-formed. -@@ -7389,13 +7390,13 @@ the other operand is of object pointer or array type, +@@ -7390,13 +7391,13 @@ the other operand is of object pointer or array type, array-to-pointer conversions\iref{conv.array}, pointer conversions\iref{conv.ptr}, and @@ -1792,7 +1785,7 @@ index ce24309d..0d2c5348 100644 \end{note} In this case, \tcode{p <=> q} is of type \tcode{std::strong_ordering} and -@@ -7484,7 +7485,7 @@ pointer conversions\iref{conv.ptr}, +@@ -7485,7 +7486,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring @@ -1801,7 +1794,7 @@ index ce24309d..0d2c5348 100644 After conversions, the operands shall have the same type. \pnum -@@ -7569,10 +7570,10 @@ same type after the specified conversions have been applied. +@@ -7570,10 +7571,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, @@ -1816,7 +1809,7 @@ index ce24309d..0d2c5348 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -7589,7 +7590,8 @@ the result of the comparison is unspecified. +@@ -7590,7 +7591,8 @@ the result of the comparison is unspecified. \item Otherwise, if the pointers are both null, both point to the same \indextext{address}% @@ -1826,7 +1819,7 @@ index ce24309d..0d2c5348 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -7634,12 +7636,12 @@ bool b1 = (bx == cx); // unspecified +@@ -7635,12 +7637,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -1841,7 +1834,7 @@ index ce24309d..0d2c5348 100644 indirection with a hypothetical object of the associated class type were performed, otherwise they compare unequal. \begin{example} -@@ -7879,7 +7881,7 @@ Otherwise, if the second and third operand have different types and +@@ -7880,7 +7882,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 @@ -1850,7 +1843,7 @@ index ce24309d..0d2c5348 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 -@@ -7921,9 +7923,9 @@ denotes the cv-qualifiers of \tcode{T1}; +@@ -7922,9 +7924,9 @@ denotes the cv-qualifiers of \tcode{T1}; \item otherwise, the target type is the type that \tcode{E2} would have after applying the @@ -1863,7 +1856,7 @@ index ce24309d..0d2c5348 100644 standard conversions. \end{itemize} \end{itemize} -@@ -7964,8 +7966,8 @@ are used in place of the original operands for the remainder of this +@@ -7965,8 +7967,8 @@ are used in place of the original operands for the remainder of this subclause. \pnum @@ -1874,7 +1867,7 @@ index ce24309d..0d2c5348 100644 performed on the second and third operands. After those conversions, one of the following shall hold: -@@ -7974,16 +7976,16 @@ of the following shall hold: +@@ -7975,16 +7977,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; @@ -1897,7 +1890,7 @@ index ce24309d..0d2c5348 100644 pointer type. \item One or both of the second and third operands have pointer-to-member type; -@@ -8167,7 +8169,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. +@@ -8168,7 +8170,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 @@ -1906,7 +1899,7 @@ index ce24309d..0d2c5348 100644 operand. \pnum -@@ -8181,7 +8183,7 @@ resulting value of the bit-field is +@@ -8182,7 +8184,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 @@ -1915,7 +1908,7 @@ index ce24309d..0d2c5348 100644 \pnum The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} -@@ -8253,7 +8255,7 @@ The comma operator groups left-to-right. +@@ -8254,7 +8256,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 @@ -1924,8 +1917,8 @@ index ce24309d..0d2c5348 100644 The left expression is sequenced before the right expression\iref{intro.execution}. \indextext{operator!side effects and comma}% -@@ -8287,7 +8289,7 @@ Certain contexts require expressions that satisfy additional - requirements as detailed in this subclause; other contexts have different +@@ -8295,7 +8297,7 @@ Certain contexts require expressions that satisfy additional + requirements as detailed in \ref{expr.const}; 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, @@ -1933,19 +1926,7 @@ index ce24309d..0d2c5348 100644 are called constant expressions. \begin{note} Constant expressions can be evaluated -@@ -8450,9 +8452,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 -@@ -8543,7 +8545,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. +@@ -8393,7 +8395,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -1954,7 +1935,7 @@ index ce24309d..0d2c5348 100644 it is applied to \begin{itemize} \item -@@ -8565,7 +8567,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -8415,7 +8417,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 @@ -1963,7 +1944,7 @@ index ce24309d..0d2c5348 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -8949,7 +8951,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -8864,7 +8866,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}, @@ -1972,16 +1953,28 @@ index ce24309d..0d2c5348 100644 \end{note} \pnum -@@ -9455,7 +9457,7 @@ if it is: +@@ -9082,9 +9084,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 +@@ -9465,7 +9467,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, +-a potentially evaluated expression\iref{basic.def.odr}, ++a \deflink{potentially evaluated}{basic.def.odr} expression, \item an immediate subexpression of a \grammarterm{braced-init-list}, -@@ -9482,7 +9484,9 @@ A function or variable is +@@ -9492,7 +9494,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -2030,7 +2023,7 @@ index 14b1e41e..c72d59ea 100644 the \oldconcept{TransformationTrait} requirements with a base characteristic of \tcode{integral_constant}. diff --git a/source/intro.tex b/source/intro.tex -index 5cb98d21..a81314b2 100644 +index b04be9ab..c9f5b61f 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -97,8 +97,8 @@ Reads of scalar objects are described in \ref{conv.lval} and @@ -2089,10 +2082,10 @@ index 5cb98d21..a81314b2 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 d5d867ad..f0d3b942 100644 +index 2ec4c644..faf3c046 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -555,7 +555,7 @@ is initialized, +@@ -558,7 +558,7 @@ is initialized, returns \tcode{\&cout}. Its state is otherwise the same as required for @@ -2101,7 +2094,7 @@ index d5d867ad..f0d3b942 100644 \end{itemdescr} \indexlibraryglobal{cout}% -@@ -588,7 +588,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 @@ -2110,7 +2103,7 @@ index d5d867ad..f0d3b942 100644 \end{itemdescr} \indexlibraryglobal{clog}% -@@ -625,7 +625,7 @@ is initialized, +@@ -628,7 +628,7 @@ is initialized, returns \tcode{\&wcout}. Its state is otherwise the same as required for @@ -2119,7 +2112,7 @@ index d5d867ad..f0d3b942 100644 \end{itemdescr} \indexlibraryglobal{wcout}% -@@ -658,7 +658,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 @@ -2128,7 +2121,7 @@ index d5d867ad..f0d3b942 100644 \end{itemdescr} \indexlibraryglobal{wclog}% -@@ -1378,7 +1378,7 @@ operate independently of the standard C streams. +@@ -1381,7 +1381,7 @@ operate independently of the standard C streams. \pnum \returns \tcode{true} @@ -2137,7 +2130,7 @@ index d5d867ad..f0d3b942 100644 was synchronized and otherwise returns \tcode{false}. The first time it is called, -@@ -1437,8 +1437,8 @@ static int xalloc(); +@@ -1440,8 +1440,8 @@ static int xalloc(); \pnum \remarks @@ -2148,7 +2141,7 @@ index d5d867ad..f0d3b942 100644 \end{itemdescr} \indexlibrarymember{iword}{ios_base}% -@@ -2025,12 +2025,12 @@ locale imbue(const locale& loc); +@@ -2028,12 +2028,12 @@ locale imbue(const locale& loc); \pnum \effects Calls @@ -2163,7 +2156,7 @@ index d5d867ad..f0d3b942 100644 \pnum \returns -@@ -3283,7 +3283,7 @@ streamsize in_avail(); +@@ -3286,7 +3286,7 @@ streamsize in_avail(); If a read position is available, returns \tcode{egptr() - gptr()}. Otherwise returns @@ -2172,7 +2165,7 @@ index d5d867ad..f0d3b942 100644 \end{itemdescr} \indexlibrarymember{snextc}{basic_streambuf}% -@@ -4308,7 +4308,7 @@ namespace std { +@@ -4311,7 +4311,7 @@ namespace std { template> class basic_istream : virtual public basic_ios { public: @@ -2181,7 +2174,7 @@ index d5d867ad..f0d3b942 100644 using char_type = charT; using int_type = traits::int_type; using pos_type = traits::pos_type; -@@ -4715,7 +4715,7 @@ basic_istream& operator>>(void*& val); +@@ -4718,7 +4718,7 @@ basic_istream& operator>>(void*& val); \pnum As in the case of the inserters, these extractors depend on the locale's @@ -2190,7 +2183,7 @@ index d5d867ad..f0d3b942 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, -@@ -5002,7 +5002,7 @@ basic_istream& operator>>(basic_streambuf* sb); +@@ -5005,7 +5005,7 @@ basic_istream& operator>>(basic_streambuf* sb); \begin{itemdescr} \pnum \effects @@ -2199,7 +2192,7 @@ index d5d867ad..f0d3b942 100644 If \tcode{sb} is null, calls \tcode{setstate(fail\-bit)}, which may throw -@@ -5397,7 +5397,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 @@ -2208,7 +2201,7 @@ index d5d867ad..f0d3b942 100644 and \tcode{n} characters have been extracted so far; \item -@@ -5748,12 +5748,12 @@ template +@@ -5751,12 +5751,12 @@ template \begin{itemdescr} \pnum \effects @@ -2223,7 +2216,7 @@ index d5d867ad..f0d3b942 100644 If \tcode{ws} stops extracting characters because there are no more available it sets -@@ -5778,7 +5778,7 @@ template +@@ -5781,7 +5781,7 @@ template \pnum \constraints The expression \tcode{is >> std::forward(x)} is well-formed @@ -2232,7 +2225,7 @@ index d5d867ad..f0d3b942 100644 \tcode{Istream} is publicly and unambiguously derived from \tcode{ios_base}. \pnum -@@ -5846,7 +5846,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 @@ -2241,7 +2234,7 @@ index d5d867ad..f0d3b942 100644 \pnum \ensures -@@ -5932,7 +5932,7 @@ namespace std { +@@ -5935,7 +5935,7 @@ namespace std { template> class basic_ostream : virtual public basic_ios { public: @@ -2250,7 +2243,7 @@ index d5d867ad..f0d3b942 100644 using char_type = charT; using int_type = traits::int_type; using pos_type = traits::pos_type; -@@ -6702,7 +6702,7 @@ return *this << s; +@@ -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)}} @@ -2259,7 +2252,7 @@ index d5d867ad..f0d3b942 100644 \end{itemdescr} \rSec4[ostream.inserters.character]{Character inserter function templates} -@@ -6726,7 +6726,7 @@ template +@@ -6729,7 +6729,7 @@ template \begin{itemdescr} \pnum \effects @@ -2268,7 +2261,7 @@ index d5d867ad..f0d3b942 100644 of \tcode{out}. Constructs a character sequence \tcode{seq}. If \tcode{c} has type \tcode{char} -@@ -7479,7 +7479,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 @@ -2277,7 +2270,7 @@ index d5d867ad..f0d3b942 100644 \pnum \returns -@@ -7524,7 +7524,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 @@ -2286,7 +2279,7 @@ index d5d867ad..f0d3b942 100644 \tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as: \begin{codeblock} -@@ -7648,7 +7648,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)} @@ -2295,7 +2288,7 @@ index d5d867ad..f0d3b942 100644 of \tcode{out}. This forms a character sequence \tcode{seq}, initially consisting of the following elements: \begin{itemize} -@@ -14126,7 +14126,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. +@@ -14129,7 +14129,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. \pnum \begin{note} @@ -2304,7 +2297,7 @@ index d5d867ad..f0d3b942 100644 for how the value types above and their encodings convert to \tcode{path::value_type} and its encoding. \end{note} -@@ -14738,7 +14738,7 @@ and print functions\iref{print.fun}. +@@ -14741,7 +14741,7 @@ and print functions\iref{print.fun}. \pnum Generic format observer functions return strings formatted according to the @@ -2313,7 +2306,7 @@ index d5d867ad..f0d3b942 100644 A single slash (\tcode{'/'}) character is used as the \grammarterm{directory-separator}. -@@ -15294,11 +15294,11 @@ If normalization\iref{fs.path.generic} is needed +@@ -15297,11 +15297,11 @@ If normalization\iref{fs.path.generic} is needed \indexlibrarymember{path}{iterator}% \pnum Path iterators iterate over the elements of the pathname @@ -2327,7 +2320,7 @@ index d5d867ad..f0d3b942 100644 except that, for dereferenceable iterators \tcode{a} and \tcode{b} of type \tcode{path::iterator} -@@ -16655,7 +16655,7 @@ If a file is removed from or added to a directory after the +@@ -16658,7 +16658,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 @@ -2336,7 +2329,7 @@ index d5d867ad..f0d3b942 100644 \end{note} \rSec3[fs.dir.itr.members]{Members} -@@ -16747,7 +16747,7 @@ directory_iterator& increment(error_code& ec); +@@ -16750,7 +16750,7 @@ directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -2345,7 +2338,7 @@ index d5d867ad..f0d3b942 100644 \pnum \returns -@@ -17059,7 +17059,7 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17062,7 +17062,7 @@ recursive_directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -2354,7 +2347,7 @@ index d5d867ad..f0d3b942 100644 except that: \begin{itemize} -@@ -17650,7 +17650,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin +@@ -17653,7 +17653,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin \begin{itemdescr} \pnum \effects @@ -2363,7 +2356,7 @@ index d5d867ad..f0d3b942 100644 \pnum \ensures -@@ -17726,7 +17726,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, +@@ -17729,7 +17729,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, \begin{itemdescr} \pnum \effects @@ -2372,7 +2365,7 @@ index d5d867ad..f0d3b942 100644 \pnum \ensures -@@ -17759,7 +17759,7 @@ path filesystem::current_path(error_code& ec); +@@ -17762,7 +17762,7 @@ path filesystem::current_path(error_code& ec); \returns The absolute path of the current working directory, whose pathname in the native format is @@ -2381,7 +2374,7 @@ index d5d867ad..f0d3b942 100644 The signature with argument \tcode{ec} returns \tcode{path()} if an error occurs. -@@ -17790,7 +17790,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; +@@ -17793,7 +17793,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; \begin{itemdescr} \pnum \effects @@ -2390,7 +2383,7 @@ index d5d867ad..f0d3b942 100644 \pnum \ensures -@@ -17901,7 +17901,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. +@@ -17904,7 +17904,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} @@ -2399,7 +2392,7 @@ index d5d867ad..f0d3b942 100644 \item Otherwise, the result is \impldef{result of \tcode{filesystem::file_size}}. \end{itemize} -@@ -18283,7 +18283,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time, +@@ -18286,7 +18286,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 @@ -2409,19 +2402,10 @@ index d5d867ad..f0d3b942 100644 \pnum \throws diff --git a/source/iterators.tex b/source/iterators.tex -index cbfa0c2a..3deb3e2b 100644 +index 9e972f19..909e4ed0 100644 --- a/source/iterators.tex +++ b/source/iterators.tex -@@ -741,7 +741,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} -@@ -6865,7 +6865,7 @@ ostream_iterator& operator++(int); +@@ -6868,7 +6868,7 @@ ostream_iterator& operator++(int); The class template \tcode{istreambuf_iterator} @@ -2430,7 +2414,7 @@ index cbfa0c2a..3deb3e2b 100644 reads successive \textit{characters} from the streambuf for which it was constructed. -@@ -6990,7 +6990,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; +@@ -6993,7 +6993,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; Initializes \tcode{sbuf_} with \keyword{nullptr}. \end{itemdescr} @@ -2438,7 +2422,7 @@ index cbfa0c2a..3deb3e2b 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(istream_type& s) noexcept; -@@ -7002,7 +7001,6 @@ istreambuf_iterator(istream_type& s) noexcept; +@@ -7005,7 +7004,6 @@ istreambuf_iterator(istream_type& s) noexcept; Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2446,7 +2430,7 @@ index cbfa0c2a..3deb3e2b 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(streambuf_type* s) noexcept; -@@ -7014,7 +7012,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; +@@ -7017,7 +7015,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; Initializes \tcode{sbuf_} with \tcode{s}. \end{itemdescr} @@ -2454,7 +2438,7 @@ index cbfa0c2a..3deb3e2b 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept; -@@ -7165,7 +7162,6 @@ is not a null pointer. +@@ -7168,7 +7165,6 @@ is not a null pointer. Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2463,7 +2447,7 @@ index cbfa0c2a..3deb3e2b 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index ed45edd6..ba052c96 100644 +index 7547b4aa..d662f889 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2487,7 +2471,7 @@ index ed45edd6..ba052c96 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 185d42dd..4e6c7fa2 100644 +index abe4ecf3..0b2c55f9 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2590,7 +2574,7 @@ index 185d42dd..4e6c7fa2 100644 \begin{oldconcepttable}{EqualityComparable}{}{cpp17.equalitycomparable} {x{1in}x{1in}p{3in}} -@@ -1947,13 +1947,13 @@ evaluated in the context described below, and +@@ -1946,13 +1946,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 @@ -2607,7 +2591,7 @@ index 185d42dd..4e6c7fa2 100644 \end{itemize} \begin{note} If \tcode{T} and \tcode{U} are both fundamental types or arrays of -@@ -2056,8 +2056,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in +@@ -2055,8 +2055,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in \end{note} \pnum @@ -2619,7 +2603,7 @@ index 185d42dd..4e6c7fa2 100644 had been evaluated in place of \tcode{p}. \pnum -@@ -2160,7 +2161,7 @@ as the memory allocation and deallocation primitives for it. All of the +@@ -2159,7 +2160,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 @@ -2628,7 +2612,7 @@ index 185d42dd..4e6c7fa2 100644 allocators. \pnum -@@ -2986,7 +2987,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, +@@ -2985,7 +2986,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 @@ -2637,7 +2621,7 @@ index 185d42dd..4e6c7fa2 100644 other than \tcode{value_type} are complete types. \end{itemize} -@@ -2997,11 +2998,11 @@ whether or not \tcode{T} is a complete type: +@@ -2996,11 +2997,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 @@ -2653,7 +2637,7 @@ index 185d42dd..4e6c7fa2 100644 \rSec3[namespace.constraints]{Namespace use} -@@ -3404,7 +3405,7 @@ are reserved for use by \Cpp{} implementations. +@@ -3403,7 +3404,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 @@ -2662,7 +2646,7 @@ index 185d42dd..4e6c7fa2 100644 the behavior is undefined.% \indextext{source file}% \indextext{undefined} -@@ -3575,7 +3576,7 @@ specified as being shareable without data races or the user supplies a locking m +@@ -3574,7 +3575,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 @@ -2671,7 +2655,7 @@ index 185d42dd..4e6c7fa2 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. -@@ -3641,7 +3642,7 @@ Every such entity shall be defined such that any header that defines it may be +@@ -3640,7 +3641,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 @@ -2680,7 +2664,7 @@ index 185d42dd..4e6c7fa2 100644 shall include only their corresponding \Cpp{} standard library header, as described in~\ref{headers}. -@@ -3669,7 +3670,7 @@ explicitly stated otherwise. +@@ -3668,7 +3669,7 @@ explicitly stated otherwise. It is unspecified whether any non-member functions in the \Cpp{} standard library are defined as @@ -2689,7 +2673,7 @@ index 185d42dd..4e6c7fa2 100644 \pnum A call to a non-member function signature -@@ -3697,7 +3698,7 @@ The phrase ``unless otherwise specified'' applies to cases such as +@@ -3696,7 +3697,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 @@ -2698,7 +2682,7 @@ index 185d42dd..4e6c7fa2 100644 \effects \begin{codeblock} -@@ -3712,7 +3713,7 @@ return *this; +@@ -3711,7 +3712,7 @@ return *this; \pnum It is unspecified whether any member functions in the \Cpp{} standard library are defined as @@ -2707,7 +2691,7 @@ index 185d42dd..4e6c7fa2 100644 \pnum For a non-virtual member function described in the \Cpp{} standard library, -@@ -3791,8 +3792,8 @@ library may be recursively reentered. +@@ -3790,8 +3791,8 @@ library may be recursively reentered. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -2718,7 +2702,7 @@ index 185d42dd..4e6c7fa2 100644 Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. -@@ -3835,7 +3836,7 @@ not visible to users and are protected against data races. +@@ -3834,7 +3835,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 @@ -2727,7 +2711,7 @@ index 185d42dd..4e6c7fa2 100644 \pnum \begin{note} -@@ -3950,7 +3951,7 @@ potentially-throwing exception specification} exceptions. +@@ -3949,7 +3950,7 @@ potentially-throwing exception specification} exceptions. \begin{footnote} In particular, they can report a failure to allocate storage by throwing an exception of type @@ -2737,7 +2721,7 @@ index 185d42dd..4e6c7fa2 100644 \tcode{bad_alloc}\iref{bad.alloc}. \end{footnote} 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]. @@ -2750,7 +2734,7 @@ 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 fbc3cea8..bbf484e7 100644 +index 31a2e217..214757e4 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -3235,7 +3219,7 @@ index fe6c4d08..9533e291 100644 and \tcode{long} diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index b9809ae6..9747c367 100644 +index f8bd9728..6624a7f2 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -512,7 +512,7 @@ shall not appear in any context not mentioned in this subclause. @@ -3281,14 +3265,14 @@ index b9809ae6..9747c367 100644 @@ -2447,7 +2447,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 8b9e733d..247b8bce 100644 +index 9163c191..852e314d 100644 --- a/source/statements.tex +++ b/source/statements.tex @@ -219,7 +219,7 @@ Expression statements have the form @@ -3318,8 +3302,8 @@ index 8b9e733d..247b8bce 100644 \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 \deflinkx{converted constant expression}{expression!converted constant}{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. @@ -3423,7 +3407,7 @@ index 3bc1e026..749c23d9 100644 \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index f5a5ed3a..98842079 100644 +index 203a1bf4..b0c75171 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3531,7 +3515,7 @@ index f5a5ed3a..98842079 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 -@@ -1102,7 +1089,7 @@ the specialization on the unqualified type \tcode{T}. +@@ -1103,7 +1090,7 @@ the specialization on the unqualified type \tcode{T}. \pnum Non-arithmetic standard types, such as @@ -3540,7 +3524,7 @@ index f5a5ed3a..98842079 100644 \rSec3[numeric.limits.members]{\tcode{numeric_limits} members} -@@ -2144,7 +2131,7 @@ The program is terminated without executing destructors for objects with automat +@@ -2107,7 +2094,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}}% @@ -3549,7 +3533,7 @@ index f5a5ed3a..98842079 100644 \end{itemdescr} \indexlibraryglobal{abort}% -@@ -2164,7 +2151,7 @@ automatic, thread, or static storage +@@ -2127,7 +2114,7 @@ automatic, thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{abort}}% @@ -3558,7 +3542,7 @@ index f5a5ed3a..98842079 100644 \end{itemdescr} \indexlibraryglobal{atexit}% -@@ -2181,7 +2168,8 @@ The +@@ -2144,7 +2131,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 @@ -3568,7 +3552,7 @@ index f5a5ed3a..98842079 100644 \begin{note} The \tcode{atexit()} functions do not introduce a data race\iref{res.on.data.races}. -@@ -2275,7 +2263,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; +@@ -2238,7 +2226,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 @@ -3578,7 +3562,7 @@ index f5a5ed3a..98842079 100644 \begin{note} The \tcode{at_quick_exit()} functions do not introduce a -@@ -2327,7 +2316,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s +@@ -2290,7 +2279,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s \pnum \remarks \indextext{signal-safe!\idxcode{quick_exit}}% @@ -3587,7 +3571,7 @@ index f5a5ed3a..98842079 100644 when the functions registered with \tcode{at_quick_exit} are. \end{itemdescr} -@@ -2454,7 +2443,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); +@@ -2417,7 +2406,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3596,7 +3580,7 @@ index f5a5ed3a..98842079 100644 called by a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -2490,7 +2479,7 @@ a null pointer value, throws +@@ -2453,7 +2442,7 @@ a null pointer value, throws \tcode{bad_alloc}. \item Otherwise, the function calls the current @@ -3605,7 +3589,7 @@ index f5a5ed3a..98842079 100644 If the called function returns, the loop repeats. \item The loop terminates when an attempt to allocate the requested storage is -@@ -2712,7 +2701,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); +@@ -2675,7 +2664,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3614,7 +3598,7 @@ index f5a5ed3a..98842079 100644 called by the array form of a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -3025,8 +3014,8 @@ versions of \tcode{operator delete}, the C standard library function +@@ -2988,8 +2977,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 @@ -3625,7 +3609,7 @@ index f5a5ed3a..98842079 100644 \rSec2[alloc.errors]{Storage allocation errors} -@@ -3180,8 +3169,8 @@ template constexpr T* launder(T* p) noexcept; +@@ -3143,8 +3132,8 @@ template constexpr T* launder(T* p) noexcept; \pnum \expects \tcode{p} represents the address \placeholder{A} of a byte in memory. @@ -3636,7 +3620,7 @@ index f5a5ed3a..98842079 100644 is located at the address \placeholder{A}. All bytes of storage that would be reachable through\iref{basic.compound} the result -@@ -3394,7 +3383,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. +@@ -3357,7 +3346,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. \pnum \remarks @@ -3646,7 +3630,7 @@ index f5a5ed3a..98842079 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. \end{itemdescr} -@@ -3971,7 +3961,8 @@ the ordinary literal encoding\iref{lex.ccon}. +@@ -3934,7 +3924,8 @@ the ordinary literal encoding\iref{lex.ccon}. \pnum \remarks @@ -3656,7 +3640,7 @@ index f5a5ed3a..98842079 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 -@@ -4122,7 +4113,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread. +@@ -4085,7 +4076,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 @@ -3665,7 +3649,7 @@ index f5a5ed3a..98842079 100644 \end{itemdescr} \rSec2[propagation]{Exception propagation} -@@ -4185,8 +4176,9 @@ constexpr exception_ptr current_exception() noexcept; +@@ -4148,8 +4139,9 @@ constexpr exception_ptr current_exception() noexcept; \begin{itemdescr} \pnum \returns @@ -3677,7 +3661,7 @@ index f5a5ed3a..98842079 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. -@@ -4776,7 +4768,7 @@ constexpr bool empty() const noexcept; +@@ -4739,7 +4731,7 @@ constexpr bool empty() const noexcept; \pnum The header \libheaderdef{compare} specifies types, objects, and functions for use primarily in connection with @@ -3686,7 +3670,7 @@ index f5a5ed3a..98842079 100644 \indexlibraryglobal{is_eq}% \indexlibraryglobal{is_neq}% -@@ -6369,7 +6361,7 @@ environment. +@@ -6329,7 +6321,7 @@ environment. \end{note} \pnum @@ -3696,7 +3680,7 @@ index f5a5ed3a..98842079 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 6cf798ea..d7f6a4d9 100644 +index 467b190a..cf9f5e15 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -713,7 +713,7 @@ struct A {}; @@ -3952,8 +3936,8 @@ index 6cf798ea..d7f6a4d9 100644 \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 +-\item constant expression evaluation\iref{expr.const.core} within the template ++\item \link{constant expression evaluation}{expr.const.core} within the template instantiation uses \begin{itemize} \item the value of a const object of integral or unscoped enumeration type or @@ -3997,12 +3981,12 @@ index 6cf798ea..d7f6a4d9 100644 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 +-as a core constant expression\iref{expr.const.core} succeeds and ++as a \deflinkx{core constant expression}{expression!core constant}{expr.const.core} 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. -@@ -6245,7 +6245,7 @@ within a translation unit. +@@ -6253,7 +6253,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 @@ -4011,7 +3995,7 @@ index 6cf798ea..d7f6a4d9 100644 the program is ill-formed, no diagnostic required. \pnum -@@ -6556,7 +6556,7 @@ of type +@@ -6564,7 +6564,7 @@ of type \pnum If a function declaration acquired its function type through @@ -4020,7 +4004,7 @@ index 6cf798ea..d7f6a4d9 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -6637,7 +6637,7 @@ X ch; // error: incomplete type \tcode{X} +@@ -6645,7 +6645,7 @@ X ch; // error: incomplete type \tcode{X} \end{example} \begin{note} Within a template declaration, @@ -4029,7 +4013,7 @@ index 6cf798ea..d7f6a4d9 100644 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 -@@ -6815,7 +6815,7 @@ void x() { +@@ -6823,7 +6823,7 @@ void x() { \end{example} \pnum @@ -4038,7 +4022,7 @@ index 6cf798ea..d7f6a4d9 100644 can be determined without instantiating a class template definition, it is unspecified whether that instantiation actually takes place. \begin{example} -@@ -7152,7 +7152,7 @@ If an entity is the subject of both an explicit instantiation declaration +@@ -7160,7 +7160,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 @@ -4047,7 +4031,7 @@ index 6cf798ea..d7f6a4d9 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. -@@ -8217,7 +8217,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. +@@ -8225,7 +8225,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, @@ -4056,7 +4040,7 @@ index 6cf798ea..d7f6a4d9 100644 would be required to convert the \grammarterm{template-argument} of type \tcode{int} to \tcode{signed char}, -@@ -8326,8 +8326,8 @@ is not a reference type: +@@ -8334,8 +8334,8 @@ is not a reference type: \item If \tcode{A} @@ -4067,7 +4051,7 @@ index 6cf798ea..d7f6a4d9 100644 \tcode{A} for type deduction; otherwise, -@@ -8335,7 +8335,7 @@ otherwise, +@@ -8343,7 +8343,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -4076,7 +4060,7 @@ index 6cf798ea..d7f6a4d9 100644 of \tcode{A} for type -@@ -8431,8 +8431,8 @@ The transformed \tcode{A} +@@ -8439,8 +8439,8 @@ The transformed \tcode{A} can be another pointer or pointer-to-member type that can be converted to the deduced \tcode{A} @@ -4087,7 +4071,7 @@ index 6cf798ea..d7f6a4d9 100644 \item If -@@ -8565,7 +8565,7 @@ void test() { +@@ -8573,7 +8573,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -4096,7 +4080,7 @@ index 6cf798ea..d7f6a4d9 100644 If there is a target, the function template's function type and the target type are used as the types of -@@ -8612,7 +8612,7 @@ is not a reference type: +@@ -8620,7 +8620,7 @@ is not a reference type: If \tcode{P} is an array type, the pointer type produced by the @@ -4105,7 +4089,7 @@ index 6cf798ea..d7f6a4d9 100644 \tcode{P} for type deduction; otherwise, -@@ -8620,7 +8620,7 @@ deduction; otherwise, +@@ -8628,7 +8628,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -4114,7 +4098,7 @@ index 6cf798ea..d7f6a4d9 100644 \tcode{P} for type deduction; otherwise, -@@ -8711,7 +8711,7 @@ after a function has been selected. +@@ -8719,7 +8719,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 @@ -4123,7 +4107,7 @@ index 6cf798ea..d7f6a4d9 100644 type is used. \end{itemize} -@@ -9227,7 +9227,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the +@@ -9235,7 +9235,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$. @@ -4132,7 +4116,7 @@ index 6cf798ea..d7f6a4d9 100644 originally a pack expansion: \begin{itemize} \item if \tcode{P} does not contain a template argument corresponding to -@@ -9290,7 +9290,7 @@ each remaining parameter type in the parameter-type-list +@@ -9298,7 +9298,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. @@ -4141,7 +4125,7 @@ index 6cf798ea..d7f6a4d9 100644 originally a function parameter pack: \begin{itemize} \item if \tcode{P} does not contain a function parameter type corresponding to -@@ -9628,8 +9628,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod +@@ -9636,8 +9636,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 @@ -4153,7 +4137,7 @@ index 6cf798ea..d7f6a4d9 100644 \tcode{operator new}\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 7480badf..0d7a40ef 100644 +index bfd73672..9d7efb72 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4168,15 +4152,15 @@ index 7480badf..0d7a40ef 100644 @@ -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}). + (\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 +-of a specialization of \tcode{time_point}\iref{time.point}). ++specialization of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes a value ++of a specialization of \link{\tcode{time_point}}{time.point}). \begin{itemdecl} m.try_lock_for(rel_time) -@@ -7288,7 +7288,7 @@ namespace std { +@@ -7287,7 +7287,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -4185,8 +4169,8 @@ index 7480badf..0d7a40ef 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 -@@ -7332,7 +7332,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on - a single mutex appears to occur in a single total order. +@@ -7331,7 +7331,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 @@ -4194,7 +4178,7 @@ index 7480badf..0d7a40ef 100644 mutex. \end{note} \begin{note} -@@ -7412,7 +7412,7 @@ in the absence of contending mutex acquisitions. +@@ -7411,7 +7411,7 @@ in the absence of contending mutex acquisitions. \pnum \sync If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations @@ -4203,7 +4187,7 @@ index 7480badf..0d7a40ef 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 -@@ -7448,7 +7448,7 @@ Releases the calling thread's ownership of the mutex. +@@ -7447,7 +7447,7 @@ Releases the calling thread's ownership of the mutex. \pnum \sync @@ -4212,19 +4196,19 @@ index 7480badf..0d7a40ef 100644 lock operations that obtain ownership on the same object. \pnum -@@ -7577,9 +7577,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, +@@ -7576,9 +7576,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}. + \tcode{rel_time} denotes an object of a +-specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes an ++specialization of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes an + object of a +-specialization of \tcode{time_point}\iref{time.point}. ++specialization of \link{\tcode{time_point}}{time.point}. \begin{note} The timed mutex types meet the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. -@@ -7869,7 +7869,7 @@ Releases a shared lock on the mutex held by the calling thread. +@@ -7868,7 +7868,7 @@ Releases a shared lock on the mutex held by the calling thread. \pnum \sync @@ -4233,16 +4217,16 @@ index 7480badf..0d7a40ef 100644 \tcode{lock()} operations that obtain ownership on the same object. \pnum -@@ -7973,7 +7973,7 @@ meet the requirements set out below. In this description, - \tcode{rel_time} denotes an object of an instantiation of +@@ -7972,7 +7972,7 @@ meet the requirements set out below. In this description, + \tcode{rel_time} denotes an object of a specialization of \tcode{duration}\iref{time.duration}, and - \tcode{abs_time} denotes an object of an instantiation of + \tcode{abs_time} denotes an object of a specialization 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}. -@@ -8184,7 +8184,7 @@ namespace std { +@@ -8183,7 +8183,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 @@ -4251,7 +4235,7 @@ index 7480badf..0d7a40ef 100644 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} object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} -@@ -8257,7 +8257,7 @@ namespace std { +@@ -8256,7 +8256,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 @@ -4260,7 +4244,7 @@ index 7480badf..0d7a40ef 100644 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} object. -@@ -9414,7 +9414,7 @@ earlier returning execution. +@@ -9413,7 +9413,7 @@ earlier returning execution. \pnum \sync For any given \tcode{once_flag}: all active executions occur in a total @@ -4269,7 +4253,7 @@ index 7480badf..0d7a40ef 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -11380,22 +11380,21 @@ the state object. +@@ -11379,22 +11379,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4296,7 +4280,7 @@ index 7480badf..0d7a40ef 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 -@@ -11714,8 +11713,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -11713,8 +11712,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 @@ -4307,7 +4291,7 @@ index 7480badf..0d7a40ef 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -12025,7 +12024,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -12024,7 +12023,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 @@ -4316,7 +4300,7 @@ index 7480badf..0d7a40ef 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -12474,7 +12473,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -12473,7 +12472,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -4326,7 +4310,7 @@ index 7480badf..0d7a40ef 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 7fa1323a..85f3877e 100644 +index fa46de5b..ce39bdde 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1216,7 +1216,7 @@ unless it meets all of the following conditions: @@ -4375,7 +4359,7 @@ index 7fa1323a..85f3877e 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index d714c1f2..9da223d9 100644 +index 09be66f7..6011601f 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -104,15 +104,15 @@ namespace std { @@ -4464,11 +4448,11 @@ index d714c1f2..9da223d9 100644 2.43.0 -From 35d8595c799e8847754007c2f001a9ea312645ae Mon Sep 17 00:00:00 2001 +From 115ef5611b4abe79f578693147f942a12cd0052d 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. +Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove + range index entry with the same key. --- source/iostreams.tex | 2 +- @@ -4476,10 +4460,10 @@ Subject: [PATCH 3/9] Fix dubious \defnx that has see{} in it, and remove range 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index f0d3b942..90000ab2 100644 +index faf3c046..8bc8a19a 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -13919,7 +13919,7 @@ without an intervening \grammarterm{root-directory} element. +@@ -13922,7 +13922,7 @@ without an intervening \grammarterm{root-directory} element. \pnum \indextext{path!normalization|(}% @@ -4489,7 +4473,7 @@ index f0d3b942..90000ab2 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index d7f6a4d9..45edbccb 100644 +index cf9f5e15..3e0fd2ed 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -2151,7 +2151,6 @@ so it does match \#2. @@ -4517,11 +4501,11 @@ index d7f6a4d9..45edbccb 100644 2.43.0 -From 70b4bcca531629529edcbc9ee4e7d554e9e84b4a Mon Sep 17 00:00:00 2001 +From e4700dbefbdcdad61bf0c3e303d6b2a7f2391ce2 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 - literal fragments. +Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code + and literal fragments. --- source/exceptions.tex | 4 +- @@ -4530,7 +4514,7 @@ Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and 3 files changed, 351 insertions(+), 351 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex -index 0072f5d6..88e1a340 100644 +index a9fd6f69..d3b0f3e3 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -135,11 +135,11 @@ does not declare a variable. @@ -4548,7 +4532,7 @@ index 0072f5d6..88e1a340 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index ba052c96..53864cf8 100644 +index d662f889..1b8befd1 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -333,43 +333,43 @@ the numerical value has no other meaning in this context. @@ -4933,7 +4917,7 @@ index ba052c96..53864cf8 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 85f3877e..6cb712e2 100644 +index ce39bdde..cc24c1c9 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2198,7 +2198,7 @@ If the parse fails to decode a valid duration, @@ -5953,10 +5937,10 @@ index 85f3877e..6cb712e2 100644 2.43.0 -From 377a9bc321369a97e2838c6a11283f6e12f275c6 Mon Sep 17 00:00:00 2001 +From d35ea058dc773ca110bc437d50e1a11c36b65758 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 05/10] Remove more inappropriate paragraph breaks. --- source/algorithms.tex | 4 ---- @@ -5988,7 +5972,7 @@ Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. 26 files changed, 268 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 5bf27eb7..49ef7fdb 100644 +index c313c941..f914092e 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -8716,7 +8716,6 @@ but stronger than those for a partial ordering. @@ -6024,7 +6008,7 @@ index 5bf27eb7..49ef7fdb 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index ac68557f..63b582ea 100644 +index 818f9001..29b5e6e4 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -294,7 +294,6 @@ int X::y = 1; // defines \tcode{X::y} @@ -6052,7 +6036,7 @@ index ac68557f..63b582ea 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 eaf6e4da..e433d03d 100644 +index 7883ea0a..a7391709 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -1626,7 +1626,6 @@ for each non-static data member of @@ -6120,7 +6104,7 @@ index eaf6e4da..e433d03d 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 3aa1637b..d1e593f3 100644 +index 60706217..24533a2c 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -2592,7 +2592,6 @@ Overspecification. @@ -6139,7 +6123,7 @@ index 3aa1637b..d1e593f3 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}; -@@ -3787,7 +3785,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in +@@ -3785,7 +3783,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in \pnum Header \libheaderref{cstring}: The following functions have different declarations: @@ -6147,7 +6131,7 @@ index 3aa1637b..d1e593f3 100644 \begin{itemize} \item \tcode{strchr} \item \tcode{strpbrk} -@@ -3801,7 +3798,6 @@ Subclause \ref{cstring.syn} describes the changes. +@@ -3799,7 +3796,6 @@ Subclause \ref{cstring.syn} describes the changes. \pnum Header \libheaderref{cwchar}: The following functions have different declarations: @@ -6155,7 +6139,7 @@ index 3aa1637b..d1e593f3 100644 \begin{itemize} \item \tcode{wcschr} \item \tcode{wcspbrk} -@@ -3826,7 +3822,6 @@ in addition to the names declared in +@@ -3824,7 +3820,6 @@ in addition to the names declared in \pnum Header \libheaderref{cstdlib}: The following functions have different behavior: @@ -6164,7 +6148,7 @@ index 3aa1637b..d1e593f3 100644 \item \tcode{atexit} \item \tcode{exit} diff --git a/source/concepts.tex b/source/concepts.tex -index 1722b95c..6663d0e0 100644 +index 42828a4b..3e64abc8 100644 --- a/source/concepts.tex +++ b/source/concepts.tex @@ -150,7 +150,6 @@ already specifies exactly such an expression explicitly. @@ -6293,7 +6277,7 @@ index 1722b95c..6663d0e0 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index f3aded8c..0731405d 100644 +index d64183f9..8e93903a 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6353,7 +6337,7 @@ index f3aded8c..0731405d 100644 advance(it, sz); @@ -20310,7 +20303,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}% @@ -6384,7 +6368,7 @@ index f3aded8c..0731405d 100644 \item \tcode{Extents::static_extent($k$)} diff --git a/source/declarations.tex b/source/declarations.tex -index 45030de5..94c821c5 100644 +index cc6330bc..247f80dc 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1584,7 +1584,6 @@ a partial specialization\iref{temp.spec.partial}, @@ -6500,7 +6484,7 @@ index 45030de5..94c821c5 100644 \terminal{(} unevaluated-string \terminal{)} \end{ncbnf} diff --git a/source/exceptions.tex b/source/exceptions.tex -index 88e1a340..ed441278 100644 +index d3b0f3e3..8f91c70e 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -89,7 +89,6 @@ void f() { @@ -6511,8 +6495,8 @@ index 88e1a340..ed441278 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 - @@ -6525,7 +6509,7 @@ index 88e1a340..ed441278 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 0d2c5348..5d594143 100644 +index cea81800..b61c8bbd 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -467,7 +467,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -6576,7 +6560,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item If \tcode{T1} and \tcode{T2} are the same type, \tcode{C} is that type. -@@ -2810,7 +2804,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: @@ -6584,7 +6568,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item An \grammarterm{id-expression} that names a local entity -@@ -3420,7 +3413,6 @@ The \grammarterm{expression} is an unevaluated operand. +@@ -3421,7 +3414,6 @@ The \grammarterm{expression} is an unevaluated operand. Substitution of template arguments (if any) and verification of semantic properties proceed in the following order: @@ -6592,7 +6576,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -3432,7 +3424,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. +@@ -3433,7 +3425,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. \item If the \grammarterm{return-type-requirement} is present, then: @@ -6600,7 +6584,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -4523,7 +4514,6 @@ referred to by \tcode{T}. +@@ -4524,7 +4515,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: @@ -6608,7 +6592,7 @@ index 0d2c5348..5d594143 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 -@@ -5037,7 +5027,6 @@ constness. +@@ -5038,7 +5028,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: @@ -6616,7 +6600,7 @@ index 0d2c5348..5d594143 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 -@@ -5472,7 +5461,6 @@ is called a \term{suspension context} of the function. +@@ -5473,7 +5462,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: @@ -6624,7 +6608,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item \placeholder{p} is an lvalue naming the promise -@@ -5853,7 +5841,6 @@ and +@@ -5854,7 +5842,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}: @@ -6632,7 +6616,7 @@ index 0d2c5348..5d594143 100644 \begin{codeblock} T x @\textrm{\placeholder{init}}@ ; \end{codeblock} -@@ -6213,7 +6200,6 @@ the alignment argument is removed from the argument list; +@@ -6214,7 +6201,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; @@ -6640,7 +6624,7 @@ index 0d2c5348..5d594143 100644 \end{itemize} and then overload resolution is performed again. -@@ -6291,7 +6277,6 @@ necessarily be the same as that of the block if the object is an array. +@@ -6292,7 +6278,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: @@ -6648,7 +6632,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item If the \grammarterm{new-initializer} is omitted, the object is default-initialized\iref{dcl.init}. -@@ -6380,7 +6365,6 @@ struct S { +@@ -6381,7 +6366,6 @@ struct S { S* p = new (0) S; // error: non-placement deallocation function matches // placement allocation function \end{codeblock} @@ -6656,7 +6640,7 @@ index 0d2c5348..5d594143 100644 \end{example} \pnum -@@ -6500,7 +6484,6 @@ of their constructor; see~\ref{class.base.init}). +@@ -6501,7 +6485,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: @@ -6664,7 +6648,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item If the allocation call for the \grammarterm{new-expression} for the object to -@@ -7345,7 +7328,6 @@ or one operand has integral type and +@@ -7346,7 +7329,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: @@ -6672,7 +6656,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, -@@ -7500,7 +7482,6 @@ is considered to be equivalent to a pointer to a hypothetical array element +@@ -7501,7 +7483,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: @@ -6680,7 +6664,7 @@ index 0d2c5348..5d594143 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 -@@ -7513,7 +7494,6 @@ neither member is a subobject of zero size +@@ -7514,7 +7495,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. @@ -6688,7 +6672,7 @@ index 0d2c5348..5d594143 100644 \end{itemize} \pnum -@@ -7575,7 +7555,6 @@ If at least one of the converted operands is a pointer, +@@ -7576,7 +7556,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: @@ -6696,7 +6680,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item If one pointer represents the address of a complete object, and another -@@ -7605,7 +7584,6 @@ qualification conversions\iref{conv.qual} +@@ -7606,7 +7585,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: @@ -6704,7 +6688,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item If two pointers to members are both the null member pointer value, they compare -@@ -7891,7 +7869,6 @@ Attempts are made to form an implicit conversion sequence +@@ -7892,7 +7870,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: @@ -6712,7 +6696,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item If \tcode{E2} is an lvalue, the target type is ``lvalue reference to \tcode{T2}'', -@@ -7970,7 +7947,6 @@ subclause. +@@ -7971,7 +7948,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: @@ -6720,7 +6704,7 @@ index 0d2c5348..5d594143 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. -@@ -8000,7 +7976,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. +@@ -8001,7 +7977,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}. @@ -6797,10 +6781,10 @@ index c72d59ea..a740fd47 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index 90000ab2..6058ccab 100644 +index 8bc8a19a..5651a156 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -2102,14 +2102,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: @@ -6815,7 +6799,7 @@ index 90000ab2..6058ccab 100644 \begin{itemize} \item \tcode{rdstate()}, \tcode{rdbuf()}, and \tcode{exceptions()} are left unchanged; -@@ -7222,7 +7220,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} @@ -6823,7 +6807,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} void f(ios_base& str, ios_base::fmtflags mask) { // reset specified flags -@@ -7261,7 +7258,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}% @@ -6831,7 +6815,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} void f(ios_base& str, ios_base::fmtflags mask) { // set specified flags -@@ -7307,7 +7303,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: @@ -6839,7 +6823,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} void f(ios_base& str, int base) { // set \tcode{basefield} -@@ -7350,7 +7345,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: @@ -6847,7 +6831,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} template void f(basic_ios& str, charT c) { -@@ -7391,7 +7385,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: @@ -6855,7 +6839,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} void f(ios_base& str, int n) { // set precision -@@ -7437,7 +7430,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: @@ -6863,7 +6847,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} void f(ios_base& str, int n) { // set width -@@ -7487,7 +7479,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: @@ -6871,7 +6855,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} template void f(basic_ios& str, moneyT& mon, bool intl) { -@@ -7526,7 +7517,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: @@ -6879,7 +6863,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} template void f(basic_ios& str, const moneyT& mon, bool intl) { -@@ -7562,7 +7552,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: @@ -6887,7 +6871,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} template void f(basic_ios& str, tm* tmb, const charT* fmt) { -@@ -7601,7 +7590,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: @@ -6895,7 +6879,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} template void f(basic_ios& str, const tm* tmb, const charT* fmt) { -@@ -11429,7 +11417,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: @@ -6903,7 +6887,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} char extern_buf[XSIZE]; const char* extern_end; -@@ -13920,7 +13907,6 @@ without an intervening \grammarterm{root-directory} element. +@@ -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: @@ -6911,7 +6895,7 @@ index 90000ab2..6058ccab 100644 \begin{enumerate} \item If the path is empty, stop. \item Replace each slash character in the \grammarterm{root-name} with a \grammarterm{preferred-separator}. -@@ -17061,7 +17047,6 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17064,7 +17050,6 @@ recursive_directory_iterator& increment(error_code& ec); As specified for the prefix increment operation of \link{Input iterators}{input.iterators}, except that: @@ -6920,10 +6904,10 @@ index 90000ab2..6058ccab 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 3deb3e2b..fcbb42cd 100644 +index 909e4ed0..1ac297c8 100644 --- a/source/iterators.tex +++ b/source/iterators.tex -@@ -960,7 +960,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: @@ -6931,7 +6915,7 @@ index 3deb3e2b..fcbb42cd 100644 \begin{codeblock} template concept @\defexposconcept{cpp17-iterator}@ = -@@ -1018,7 +1017,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: @@ -6939,7 +6923,7 @@ index 3deb3e2b..fcbb42cd 100644 \begin{itemize} \item If \tcode{I} has valid\iref{temp.deduct} member -@@ -1165,7 +1163,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: @@ -6947,7 +6931,7 @@ index 3deb3e2b..fcbb42cd 100644 \begin{itemize} \item \tcode{iter_move(E)}, if \tcode{E} has class or enumeration type and -@@ -2804,7 +2801,6 @@ namespace std { +@@ -2807,7 +2804,6 @@ namespace std { A program-defined iterator \tcode{BinaryTreeIterator} can be included into the bidirectional iterator category by specializing the \tcode{iterator_traits} template: @@ -6955,7 +6939,7 @@ index 3deb3e2b..fcbb42cd 100644 \begin{codeblock} template struct iterator_traits> { using iterator_category = bidirectional_iterator_tag; -@@ -2822,7 +2818,6 @@ If +@@ -2825,7 +2821,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: @@ -6963,7 +6947,7 @@ index 3deb3e2b..fcbb42cd 100644 \begin{codeblock} template inline void -@@ -3409,7 +3404,6 @@ As if by: +@@ -3412,7 +3407,6 @@ As if by: Iterator tmp = current; return *--tmp; \end{codeblock} @@ -6971,7 +6955,7 @@ index 3deb3e2b..fcbb42cd 100644 \end{itemdescr} \indexlibrarymember{operator->}{reverse_iterator}% -@@ -4792,7 +4786,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 +@@ -4795,7 +4789,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} @@ -6979,7 +6963,7 @@ index 3deb3e2b..fcbb42cd 100644 \end{example} \rSec3[move.iterator]{Class template \tcode{move_iterator}} -@@ -6511,7 +6504,6 @@ partial_sum(istream_iterator(cin), +@@ -6514,7 +6507,6 @@ partial_sum(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "@\textbackslash@n")); \end{codeblock} @@ -6988,7 +6972,7 @@ index 3deb3e2b..fcbb42cd 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 4e6c7fa2..dda79b54 100644 +index 0b2c55f9..c463010f 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. @@ -7071,7 +7055,7 @@ index 4e6c7fa2..dda79b54 100644 \begin{codeblock} streambuf* sb; // \expos \end{codeblock} -@@ -1938,7 +1928,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if +@@ -1937,7 +1927,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: @@ -7079,7 +7063,7 @@ index 4e6c7fa2..dda79b54 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}. -@@ -2944,7 +2933,6 @@ for that type can fail by throwing an object of type +@@ -2943,7 +2932,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}: @@ -7087,7 +7071,7 @@ index 4e6c7fa2..dda79b54 100644 \begin{codeblock} template struct SimpleAllocator { -@@ -3430,13 +3418,11 @@ the description of function semantics apply +@@ -3429,13 +3417,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. @@ -7101,7 +7085,7 @@ index 4e6c7fa2..dda79b54 100644 \begin{itemize} \item \tcode{terminate_handler} -@@ -3457,7 +3443,6 @@ Exception handling. +@@ -3456,7 +3442,6 @@ Exception handling. \pnum A \Cpp{} program can get a pointer to the current handler function by calling the following functions: @@ -7109,7 +7093,7 @@ index 4e6c7fa2..dda79b54 100644 \begin{itemize} \item \indexlibraryglobal{get_new_handler}% -@@ -3483,7 +3468,6 @@ on the implementation. +@@ -3482,7 +3467,6 @@ on the implementation. \pnum In particular, the behavior is undefined in the following cases: @@ -7117,7 +7101,7 @@ index 4e6c7fa2..dda79b54 100644 \begin{itemize} \item For replacement functions\iref{replacement.functions}, if the installed replacement function does not -@@ -3768,7 +3752,6 @@ functions an implementation shall provide corresponding definitions. +@@ -3767,7 +3751,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: @@ -7126,7 +7110,7 @@ index 4e6c7fa2..dda79b54 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]. @@ -7136,7 +7120,7 @@ index efd4eb00..12180661 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index efbf7fee..12c714b4 100644 +index a7f16411..17fb5e8d 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1445,7 +1445,6 @@ when considered as an unevaluated operand. @@ -7156,7 +7140,7 @@ index efbf7fee..12c714b4 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index 82675162..b1abb2de 100644 +index c76fa23e..1fa9a9f2 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -1939,7 +1939,6 @@ is_base_of_v // \tcode{false} @@ -7170,13 +7154,13 @@ index 82675162..b1abb2de 100644 @@ -2447,7 +2446,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 bbf484e7..4342da1a 100644 +index 214757e4..bce0a4ae 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); @@ -7336,7 +7320,7 @@ index 9533e291..9eadc766 100644 const char* unsigned long long int diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 9747c367..01223d42 100644 +index 6624a7f2..62225b4c 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -199,7 +199,6 @@ begins with the first character in the source file @@ -7412,14 +7396,14 @@ index 9747c367..01223d42 100644 \indextext{__stdc__@\mname{STDC}}% @@ -2448,7 +2439,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 708004ea..e12de083 100644 +index 58f2ef0c..9fff6e28 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7527,7 +7511,7 @@ index 708004ea..e12de083 100644 \item If \tcode{T} models \libconcept{contiguous_iterator}, diff --git a/source/statements.tex b/source/statements.tex -index 247b8bce..76449634 100644 +index 852e314d..5510eb74 100644 --- a/source/statements.tex +++ b/source/statements.tex @@ -727,7 +727,6 @@ exposition only; and @@ -7539,10 +7523,10 @@ index 247b8bce..76449634 100644 \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are diff --git a/source/support.tex b/source/support.tex -index 98842079..1a45ee0e 100644 +index b0c75171..f7399362 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -2462,7 +2462,6 @@ This requirement is binding on any replacement versions of these functions. +@@ -2425,7 +2425,6 @@ This requirement is binding on any replacement versions of these functions. \pnum \default @@ -7550,7 +7534,7 @@ index 98842079..1a45ee0e 100644 \begin{itemize} \item Executes a loop: -@@ -2941,7 +2940,6 @@ Intentionally performs no other action. +@@ -2904,7 +2903,6 @@ Intentionally performs no other action. \pnum \begin{example} This can be useful for constructing an object at a known address: @@ -7558,7 +7542,7 @@ index 98842079..1a45ee0e 100644 \begin{codeblock} void* place = operator new(sizeof(Something)); Something* p = new (place) Something(); -@@ -4850,7 +4848,6 @@ are collectively termed the \defn{comparison category types}. +@@ -4813,7 +4811,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: @@ -7566,7 +7550,7 @@ index 98842079..1a45ee0e 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 -@@ -5804,7 +5801,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and +@@ -5767,7 +5764,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: @@ -7575,7 +7559,7 @@ index 98842079..1a45ee0e 100644 using promise_type = R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index 45edbccb..2a51aefc 100644 +index 3e0fd2ed..2ebe5fe3 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -256,7 +256,6 @@ in some translation unit; no diagnostic is required. @@ -7738,7 +7722,7 @@ index 45edbccb..2a51aefc 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -7005,7 +6985,6 @@ template. +@@ -7013,7 +6993,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -7746,7 +7730,7 @@ index 45edbccb..2a51aefc 100644 \begin{bnf} \nontermdef{explicit-instantiation}\br \opt{\keyword{extern}} \keyword{template} declaration -@@ -7480,7 +7459,6 @@ otherwise, it is a declaration. +@@ -7488,7 +7467,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}: @@ -7754,7 +7738,7 @@ index 45edbccb..2a51aefc 100644 \begin{codeblock} template<> X Q::x; // declaration template<> X Q::x (); // error: declares a function -@@ -7739,7 +7717,6 @@ An empty template argument list can be used to indicate that a given +@@ -7747,7 +7725,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: @@ -7762,7 +7746,7 @@ index 45edbccb..2a51aefc 100644 \begin{codeblock} template int f(T); // \#1 int f(int); // \#2 -@@ -8321,7 +8298,6 @@ void h(int x, float& y) { +@@ -8329,7 +8306,6 @@ void h(int x, float& y) { If \tcode{P} is not a reference type: @@ -7770,7 +7754,7 @@ index 45edbccb..2a51aefc 100644 \begin{itemize} \item If -@@ -8416,7 +8392,6 @@ the type +@@ -8424,7 +8400,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -7778,7 +7762,7 @@ index 45edbccb..2a51aefc 100644 \begin{itemize} \item If the original -@@ -8606,7 +8581,6 @@ of \tcode{P} for type deduction and for any further references to or transformat +@@ -8614,7 +8589,6 @@ of \tcode{P} for type deduction and for any further references to or transformat If \tcode{A} is not a reference type: @@ -7786,7 +7770,7 @@ index 45edbccb..2a51aefc 100644 \begin{itemize} \item If -@@ -8652,7 +8626,6 @@ values that will make the deduced +@@ -8660,7 +8634,6 @@ values that will make the deduced identical to \tcode{A}. However, certain attributes of \tcode{A} may be ignored: @@ -7794,7 +7778,7 @@ index 45edbccb..2a51aefc 100644 \begin{itemize} \item If the original \tcode{A} is a reference type, -@@ -8697,7 +8670,6 @@ the argument template and template-1 as the parameter template. +@@ -8705,7 +8678,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: @@ -7802,7 +7786,7 @@ index 45edbccb..2a51aefc 100644 \begin{itemize} \item In the context of a function call, the types used are those function parameter types -@@ -8725,7 +8697,6 @@ and +@@ -8733,7 +8705,6 @@ and \pnum Before the partial ordering is done, certain transformations are performed on the types used for partial ordering: @@ -7810,7 +7794,7 @@ index 45edbccb..2a51aefc 100644 \begin{itemize} \item If -@@ -8931,7 +8902,6 @@ A given type +@@ -8939,7 +8910,6 @@ A given type \tcode{P} can be composed from a number of other types, templates, and constant template argument values: @@ -7818,7 +7802,7 @@ index 45edbccb..2a51aefc 100644 \begin{itemize} \item A function type includes the types of each of the function parameters, -@@ -8973,7 +8943,6 @@ need not have the same form. +@@ -8981,7 +8951,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -7826,7 +7810,7 @@ index 45edbccb..2a51aefc 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -9068,7 +9037,6 @@ is deduced. +@@ -9076,7 +9045,6 @@ is deduced. \begin{example} Here is an example in which different parameter/argument pairs produce inconsistent template argument deductions: @@ -7834,7 +7818,7 @@ index 45edbccb..2a51aefc 100644 \begin{codeblock} template void f(T x, T y) { @\commentellip@ } struct A { @\commentellip@ }; -@@ -9085,7 +9053,6 @@ Here is an example where two template arguments are deduced from a +@@ -9093,7 +9061,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: @@ -7842,7 +7826,7 @@ index 45edbccb..2a51aefc 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -9102,7 +9069,6 @@ void r() { +@@ -9110,7 +9077,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -7850,7 +7834,7 @@ index 45edbccb..2a51aefc 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -9121,7 +9087,6 @@ void h() { +@@ -9129,7 +9095,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: @@ -7858,7 +7842,7 @@ index 45edbccb..2a51aefc 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -9132,7 +9097,6 @@ void s() { +@@ -9140,7 +9105,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: @@ -7867,10 +7851,10 @@ index 45edbccb..2a51aefc 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 0d7a40ef..b2503433 100644 +index 9d7efb72..976fa0b3 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -7344,7 +7344,6 @@ and visible to other threads. +@@ -7343,7 +7343,6 @@ and visible to other threads. \pnum The expression \tcode{m.lock()} is well-formed and has the following semantics: @@ -7878,7 +7862,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -7387,7 +7386,6 @@ that a deadlock would occur. +@@ -7386,7 +7385,6 @@ that a deadlock would occur. \pnum The expression \tcode{m.try_lock()} is well-formed and has the following semantics: @@ -7886,7 +7870,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -7433,7 +7431,6 @@ Nothing. +@@ -7432,7 +7430,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -7894,7 +7878,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -7588,7 +7585,6 @@ requirements\iref{thread.req.lockable.timed}. +@@ -7587,7 +7584,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: @@ -7902,7 +7886,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -7630,7 +7626,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -7629,7 +7625,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: @@ -7910,7 +7894,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -7817,7 +7812,6 @@ shared lock. +@@ -7816,7 +7811,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -7918,7 +7902,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -7854,7 +7848,6 @@ The calling thread has a shared lock on the mutex. +@@ -7853,7 +7847,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: @@ -7926,7 +7910,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -7879,7 +7872,6 @@ Nothing. +@@ -7878,7 +7871,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -7934,7 +7918,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -7982,7 +7974,6 @@ requirements\iref{thread.req.lockable.shared.timed}. +@@ -7981,7 +7973,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: @@ -7942,7 +7926,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -8027,7 +8018,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -8026,7 +8017,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: @@ -7950,7 +7934,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -10168,7 +10158,6 @@ template +@@ -10167,7 +10157,6 @@ template \begin{itemdescr} \pnum \effects @@ -7958,7 +7942,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -11559,7 +11548,6 @@ shared state as \tcode{*this}. +@@ -11558,7 +11547,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -7966,7 +7950,7 @@ index 0d7a40ef..b2503433 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}. -@@ -11622,7 +11610,6 @@ already has a stored value or exception. +@@ -11621,7 +11609,6 @@ already has a stored value or exception. \pnum \errors @@ -7974,7 +7958,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -11962,7 +11949,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -11961,7 +11948,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -7982,7 +7966,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12306,7 +12292,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -12305,7 +12291,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -7990,7 +7974,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12341,7 +12326,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -12340,7 +12325,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -7998,7 +7982,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12397,7 +12381,6 @@ The further behavior +@@ -12396,7 +12380,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): @@ -8007,7 +7991,7 @@ index 0d7a40ef..b2503433 100644 \item If \tcode{launch::async} is set in \tcode{policy}, calls diff --git a/source/time.tex b/source/time.tex -index 6cb712e2..f3cefea4 100644 +index cc24c1c9..2d6f9c27 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2072,7 +2072,6 @@ return os << s.str(); @@ -8157,7 +8141,7 @@ index 6cb712e2..f3cefea4 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 9da223d9..25cadb3c 100644 +index 6011601f..530bb023 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -282,7 +282,6 @@ Exchanges values stored in two locations. @@ -8220,10 +8204,10 @@ index 9da223d9..25cadb3c 100644 2.43.0 -From b73e0476180b083ce8819f4126eaec31baa3e0d6 Mon Sep 17 00:00:00 2001 +From 20cfd6993f796d0067e998824e9a4dfbd6ab80f3 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 06/10] Use monospace font for code in figures. --- source/assets/figdag.dot | 8 ++++---- @@ -8367,10 +8351,10 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From 08c95e984a106506ed47405bd0920f7d71527fe2 Mon Sep 17 00:00:00 2001 +From 9e5be3d459ac25cb6550b7beab91eb9aa1c12062 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 07/10] [uaxid] Mark code that's not to be highlighted. --- source/uax31.tex | 4 ++-- @@ -8395,10 +8379,10 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From 030ef2d0324d13694333b0c59a58e5f8612c3bd0 Mon Sep 17 00:00:00 2001 +From cd3b9b294e8247f729d9d263dd6df7f14d6c982a 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 08/10] Use cxxdraft-htmlgen macros more. --- source/algorithms.tex | 180 +++++++++++++-------------- @@ -8419,7 +8403,7 @@ Subject: [PATCH 8/9] Use cxxdraft-htmlgen macros more. 15 files changed, 481 insertions(+), 489 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 49ef7fdb..4813bec6 100644 +index f914092e..16604a18 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -8528,7 +8512,7 @@ index 49ef7fdb..4813bec6 100644 \end{itemdescr} \rSec2[alg.starts.with]{Starts with} -@@ -7616,7 +7616,7 @@ Let $E$ be +@@ -7616,7 +7616,7 @@ Let $E(\tcode{i})$ be \expects For the algorithms in namespace \tcode{std}, the type of \tcode{*first} @@ -8991,7 +8975,7 @@ index 49ef7fdb..4813bec6 100644 \item For all overloads, in the ranges \crange{first}{last} diff --git a/source/concepts.tex b/source/concepts.tex -index 6663d0e0..53d43b5d 100644 +index 3e64abc8..9efb5afa 100644 --- a/source/concepts.tex +++ b/source/concepts.tex @@ -495,7 +495,7 @@ template @@ -9013,7 +8997,7 @@ index 6663d0e0..53d43b5d 100644 invocation of the destructor does not actually throw. \end{note} diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index e653b348..2adaa033 100644 +index 8b010321..0d4dff5b 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -758,9 +758,9 @@ namespace std { @@ -9079,7 +9063,7 @@ index e653b348..2adaa033 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index c969a57b..16de2113 100644 +index 4455a1c9..000fe37d 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9167,10 +9151,10 @@ index a740fd47..2f15e38b 100644 \begin{itemize} \item for the first specialization, \tcode{volatile VA::type}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index 6058ccab..7586f5cb 100644 +index 5651a156..ebbfbcba 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -1681,10 +1681,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 @@ -9185,7 +9169,7 @@ index 6058ccab..7586f5cb 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}, -@@ -1692,11 +1692,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 @@ -9202,7 +9186,7 @@ index 6058ccab..7586f5cb 100644 In addition, the expressions shown in \tref{fpos.operations} are valid and have the indicated semantics. In that table, -@@ -12957,7 +12957,7 @@ namespace std { +@@ -12960,7 +12960,7 @@ namespace std { \pnum \tcode{Allocator} shall meet @@ -9211,7 +9195,7 @@ index 6058ccab..7586f5cb 100644 \pnum \begin{example} -@@ -13250,7 +13250,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 @@ -9220,7 +9204,7 @@ index 6058ccab..7586f5cb 100644 have a value type that is one of the encoded character types. \pnum -@@ -13264,7 +13264,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 @@ -9229,7 +9213,7 @@ index 6058ccab..7586f5cb 100644 \rSec2[fs.filesystem.syn]{Header \tcode{} synopsis} -@@ -14082,7 +14082,7 @@ shall be one of: +@@ -14085,7 +14085,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()}. @@ -9238,7 +9222,7 @@ index 6058ccab..7586f5cb 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 -@@ -16587,7 +16587,7 @@ namespace std::filesystem { +@@ -16590,7 +16590,7 @@ namespace std::filesystem { \pnum \tcode{directory_iterator} meets the @@ -9248,10 +9232,10 @@ index 6058ccab..7586f5cb 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 dda79b54..9a959af0 100644 +index c463010f..8d09833e 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex -@@ -1868,7 +1868,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1867,7 +1867,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9260,7 +9244,7 @@ index dda79b54..9a959af0 100644 {p{1in}p{4.15in}} \topline \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep -@@ -1895,7 +1895,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1894,7 +1894,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9269,7 +9253,7 @@ index dda79b54..9a959af0 100644 {p{1in}p{1in}p{1in}p{1.9in}} \topline \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Return value} & \hdstyle{Post-condition} \\ \capsep -@@ -1909,7 +1909,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1908,7 +1908,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} @@ -9278,7 +9262,7 @@ index dda79b54..9a959af0 100644 \end{tailnote} } \\ \end{oldconcepttable} -@@ -1988,7 +1988,7 @@ void value_swap(T&& t, U&& u) { +@@ -1987,7 +1987,7 @@ void value_swap(T&& t, U&& u) { // for rvalues and lvalues } @@ -9287,7 +9271,7 @@ index dda79b54..9a959af0 100644 template void lv_swap(T& t1, T& t2) { using std::swap; -@@ -2025,9 +2025,9 @@ int main() { +@@ -2024,9 +2024,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} @@ -9300,7 +9284,7 @@ index dda79b54..9a959af0 100644 \item the expressions shown in \tref{cpp17.nullablepointer} are valid and have the indicated semantics, and -@@ -2103,8 +2103,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. +@@ -2102,8 +2102,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}, @@ -9311,7 +9295,7 @@ index dda79b54..9a959af0 100644 \item the expressions shown in \tref{cpp17.hash} are valid and have the indicated semantics. \end{itemize} -@@ -2788,7 +2788,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2787,7 +2787,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 @@ -9320,7 +9304,7 @@ index dda79b54..9a959af0 100644 the copy operation shall not throw exceptions. \pnum -@@ -2810,7 +2810,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2809,7 +2809,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 @@ -9329,7 +9313,7 @@ index dda79b54..9a959af0 100644 the move operation shall not throw exceptions. \pnum -@@ -2832,7 +2832,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2831,7 +2831,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, @@ -9338,7 +9322,7 @@ index dda79b54..9a959af0 100644 the \tcode{swap} operation shall not throw exceptions. \pnum -@@ -2862,7 +2862,7 @@ Default: \tcode{is_empty::type} +@@ -2861,7 +2861,7 @@ Default: \tcode{is_empty::type} \pnum An allocator type \tcode{X} shall meet the @@ -9347,7 +9331,7 @@ index dda79b54..9a959af0 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}). -@@ -2870,7 +2870,7 @@ No constructor, +@@ -2869,7 +2869,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 @@ -9357,7 +9341,7 @@ index dda79b54..9a959af0 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index 12c714b4..0b20e5ce 100644 +index 17fb5e8d..b7efaa69 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1147,7 +1147,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type @@ -9530,7 +9514,7 @@ index 12c714b4..0b20e5ce 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index b1abb2de..02a1d8f4 100644 +index 1fa9a9f2..925356e2 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -136,12 +136,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -10126,7 +10110,7 @@ index b1abb2de..02a1d8f4 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index 4342da1a..084414fa 100644 +index bce0a4ae..10fdf6e7 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 @@ -10263,10 +10247,10 @@ index 749c23d9..8aeb51c9 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 1a45ee0e..b77edfed 100644 +index f7399362..7e61389d 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -3661,11 +3661,11 @@ namespace std { +@@ -3624,11 +3624,11 @@ namespace std { \pnum The type \tcode{source_location} meets the @@ -10283,7 +10267,7 @@ index 1a45ee0e..b77edfed 100644 requirements\iref{utility.arg.requirements,swappable.requirements}. All of the following conditions are \tcode{true}: \begin{itemize} -@@ -4127,7 +4127,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. +@@ -4090,7 +4090,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. \pnum \tcode{exception_ptr} meets the requirements of @@ -10292,7 +10276,7 @@ index 1a45ee0e..b77edfed 100644 \pnum Two non-null values of type \tcode{exception_ptr} are equivalent and compare equal if and -@@ -4354,7 +4354,7 @@ Let \tcode{U} be \tcode{decay_t}. +@@ -4317,7 +4317,7 @@ Let \tcode{U} be \tcode{decay_t}. \pnum \expects @@ -10302,7 +10286,7 @@ index 1a45ee0e..b77edfed 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index b2503433..9d5fcfed 100644 +index 976fa0b3..6a73b71a 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10354,8 +10338,8 @@ index b2503433..9d5fcfed 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 \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes a value @@ -397,7 +397,7 @@ Nothing. \pnum @@ -10365,7 +10349,7 @@ index b2503433..9d5fcfed 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}, -@@ -4481,7 +4481,7 @@ namespace std { +@@ -4480,7 +4480,7 @@ namespace std { \indexlibraryglobal{atomic}% \pnum The template argument for \tcode{T} shall meet the @@ -10374,7 +10358,7 @@ index b2503433..9d5fcfed 100644 The program is ill-formed if any of \begin{itemize} \item \tcode{is_trivially_copyable_v}, -@@ -7305,11 +7305,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, +@@ -7304,11 +7304,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} @@ -10388,16 +10372,16 @@ index b2503433..9d5fcfed 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. -@@ -7578,7 +7578,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de - object of an - instantiation of \link{\tcode{time_point}}{time.point}. +@@ -7577,7 +7577,7 @@ specialization of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} d + object of a + specialization of \link{\tcode{time_point}}{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} -@@ -7790,7 +7790,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally +@@ -7789,7 +7789,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} @@ -10406,8 +10390,8 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.shared}. \end{note} -@@ -7967,7 +7967,7 @@ meet the requirements set out below. In this description, - \tcode{abs_time} denotes an object of an instantiation of +@@ -7966,7 +7966,7 @@ meet the requirements set out below. In this description, + \tcode{abs_time} denotes an object of a specialization of \link{\tcode{time_point}}{time.point}. \begin{note} -The shared timed mutex types meet the \oldconcept{SharedTimedLockable} @@ -10415,7 +10399,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.shared.timed}. \end{note} -@@ -8177,7 +8177,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable +@@ -8176,7 +8176,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} @@ -10424,7 +10408,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.basic}. \indexlibraryctor{lock_guard}% -@@ -8256,12 +8256,12 @@ object. +@@ -8255,12 +8255,12 @@ object. If \tcode{sizeof...(MutexTypes)} is one, let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. \tcode{Mutex} @@ -10439,7 +10423,7 @@ index b2503433..9d5fcfed 100644 and there is no member \tcode{mutex_type}. \end{itemize} -@@ -8376,17 +8376,17 @@ copyable but are movable. The behavior of a program is undefined if the containe +@@ -8375,17 +8375,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 lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied @@ -10463,7 +10447,7 @@ index b2503433..9d5fcfed 100644 \end{note} \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} -@@ -8436,7 +8436,7 @@ unique_lock(mutex_type& m, try_to_lock_t); +@@ -8435,7 +8435,7 @@ unique_lock(mutex_type& m, try_to_lock_t); \begin{itemdescr} \pnum \expects @@ -10472,7 +10456,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8478,7 +8478,7 @@ template +@@ -8477,7 +8477,7 @@ template \pnum \expects The supplied \tcode{Mutex} type meets the @@ -10481,7 +10465,7 @@ index b2503433..9d5fcfed 100644 \pnum \effects -@@ -8500,7 +8500,7 @@ template +@@ -8499,7 +8499,7 @@ template \begin{itemdescr} \pnum \expects @@ -10490,7 +10474,7 @@ index b2503433..9d5fcfed 100644 \pnum \effects -@@ -8587,7 +8587,7 @@ bool try_lock(); +@@ -8586,7 +8586,7 @@ bool try_lock(); \begin{itemdescr} \pnum \expects @@ -10499,7 +10483,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8626,7 +8626,7 @@ template +@@ -8625,7 +8625,7 @@ template \begin{itemdescr} \pnum \expects @@ -10508,7 +10492,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.timed}. \pnum -@@ -8665,7 +8665,7 @@ template +@@ -8664,7 +8664,7 @@ template \begin{itemdescr} \pnum \expects @@ -10517,7 +10501,7 @@ index b2503433..9d5fcfed 100644 \pnum \effects -@@ -8858,16 +8858,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type +@@ -8857,16 +8857,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 lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied @@ -10538,7 +10522,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -8952,7 +8952,7 @@ template +@@ -8951,7 +8951,7 @@ template \begin{itemdescr} \pnum \expects @@ -10547,7 +10531,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8976,7 +8976,7 @@ template +@@ -8975,7 +8975,7 @@ template \begin{itemdescr} \pnum \expects @@ -10556,7 +10540,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9101,7 +9101,7 @@ template +@@ -9100,7 +9100,7 @@ template \begin{itemdescr} \pnum \expects @@ -10565,7 +10549,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9141,7 +9141,7 @@ template +@@ -9140,7 +9140,7 @@ template \begin{itemdescr} \pnum \expects @@ -10574,7 +10558,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9280,7 +9280,7 @@ template int try_lock(L1&, L2&, L3&...); +@@ -9279,7 +9279,7 @@ template int try_lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10583,7 +10567,7 @@ index b2503433..9d5fcfed 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9309,7 +9309,7 @@ template void lock(L1&, L2&, L3&...); +@@ -9308,7 +9308,7 @@ template void lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10592,7 +10576,7 @@ index b2503433..9d5fcfed 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9978,7 +9978,7 @@ This can happen if the re-locking of the mutex throws an exception. +@@ -9977,7 +9977,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} @@ -10601,7 +10585,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.basic}. \begin{note} All of the standard -@@ -10916,24 +10916,24 @@ execute atomically. +@@ -10915,24 +10915,24 @@ execute atomically. \pnum \tcode{CompletionFunction} shall meet the @@ -10632,7 +10616,7 @@ index b2503433..9d5fcfed 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -11428,7 +11428,7 @@ namespace std { +@@ -11427,7 +11427,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10641,7 +10625,7 @@ index b2503433..9d5fcfed 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -11760,7 +11760,7 @@ namespace std { +@@ -11759,7 +11759,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10650,7 +10634,7 @@ index b2503433..9d5fcfed 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -12066,7 +12066,7 @@ namespace std { +@@ -12065,7 +12065,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10659,7 +10643,7 @@ index b2503433..9d5fcfed 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -13004,7 +13004,7 @@ the expression \tcode{d(ptr)} is valid. +@@ -13003,7 +13003,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -10668,7 +10652,7 @@ index b2503433..9d5fcfed 100644 \pnum If \tcode{D} is trivially copyable, -@@ -13062,7 +13062,7 @@ namespace std { +@@ -13061,7 +13061,7 @@ namespace std { \pnum This class meets the requirements of @@ -10677,7 +10661,7 @@ index b2503433..9d5fcfed 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -13210,8 +13210,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -13209,8 +13209,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -10688,7 +10672,7 @@ index b2503433..9d5fcfed 100644 \pnum \effects -@@ -13403,7 +13403,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -13402,7 +13402,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -10698,7 +10682,7 @@ index b2503433..9d5fcfed 100644 \pnum \tcode{T} may be an incomplete type. diff --git a/source/time.tex b/source/time.tex -index f3cefea4..05dd9136 100644 +index 2d6f9c27..5f3994d7 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1033,13 +1033,13 @@ SI definition is a measure of the quality of implementation. @@ -10911,7 +10895,7 @@ index f3cefea4..05dd9136 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index 25cadb3c..639cc237 100644 +index 530bb023..f1e23f45 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -270,9 +270,9 @@ template @@ -11407,14 +11391,14 @@ index 25cadb3c..639cc237 100644 2.43.0 -From a6221ef3a01c8ed0b6e1a9deef27974da6fac2f6 Mon Sep 17 00:00:00 2001 +From 572bce7fa3719c510e17c9b289ae342980d00227 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 09/10] Remove awkward \linebreaks. --- source/algorithms.tex | 4 ++-- - source/containers.tex | 42 +++++++++++++++++++++--------------------- + source/containers.tex | 40 ++++++++++++++++++++-------------------- source/exec.tex | 12 ++++++------ source/memory.tex | 6 +++--- source/meta.tex | 2 +- @@ -11422,10 +11406,10 @@ Subject: [PATCH 9/9] Remove awkward \linebreaks. source/ranges.tex | 38 +++++++++++++++++++------------------- source/threads.tex | 8 ++++---- source/utilities.tex | 8 ++++---- - 9 files changed, 62 insertions(+), 62 deletions(-) + 9 files changed, 61 insertions(+), 61 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 4813bec6..a47a149f 100644 +index 16604a18..645754f2 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -7080,7 +7080,7 @@ Let: @@ -11447,7 +11431,7 @@ index 4813bec6..a47a149f 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index 0731405d..59118f4f 100644 +index 8e93903a..4d27d6ad 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1461,7 +1461,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11512,15 +11496,6 @@ index 0731405d..59118f4f 100644 If \tcode{equal_range(u.first) == r} is \tcode{false}, the behavior is undefined. Inserts \tcode{u} into \tcode{*this}. -@@ -17612,7 +17612,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}. - @@ -17796,7 +17796,7 @@ template constexpr pair emplace(Args&&... args); \pnum \effects @@ -11636,10 +11611,10 @@ index 0731405d..59118f4f 100644 @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) diff --git a/source/exec.tex b/source/exec.tex -index 16de2113..1bf60f69 100644 +index 000fe37d..4a9cbe26 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -3267,7 +3267,7 @@ except that \tcode{sch} is evaluated only once. +@@ -3292,7 +3292,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}, @@ -11648,7 +11623,7 @@ index 16de2113..1bf60f69 100644 \tcode{starts_on.transform_sender(out_sndr, env)} are ill-formed; otherwise \begin{itemize} \item -@@ -3647,7 +3647,7 @@ except that \tcode{sndr} is evaluated only once. +@@ -3672,7 +3672,7 @@ except that \tcode{sndr} is evaluated only once. \pnum Let \tcode{out_sndr} and \tcode{env} be subexpressions, let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and @@ -11657,7 +11632,7 @@ index 16de2113..1bf60f69 100644 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. -@@ -3789,7 +3789,7 @@ Let the expression \exposid{then-cpo} be one of +@@ -3814,7 +3814,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}, @@ -11666,7 +11641,7 @@ index 16de2113..1bf60f69 100644 \pnum Otherwise, -@@ -4090,7 +4090,7 @@ is initialized with a callable object equivalent to the following: +@@ -4115,7 +4115,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 @@ -11675,7 +11650,7 @@ index 16de2113..1bf60f69 100644 is \tcode{false}, then the expression \tcode{\exposid{let-cpo}.transform_env(sndr, env)} is ill-formed. -@@ -4731,7 +4731,7 @@ try { +@@ -4756,7 +4756,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -11684,7 +11659,7 @@ index 16de2113..1bf60f69 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -5762,7 +5762,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. +@@ -5787,7 +5787,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. \pnum For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. @@ -11694,7 +11669,7 @@ index 16de2113..1bf60f69 100644 the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: diff --git a/source/memory.tex b/source/memory.tex -index 0b20e5ce..87658ba8 100644 +index b7efaa69..2974c94e 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1245,7 +1245,7 @@ A \tcode{tuple} value determined as follows: @@ -11725,7 +11700,7 @@ index 0b20e5ce..87658ba8 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index 02a1d8f4..63be3ac8 100644 +index 925356e2..f933e848 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -2526,7 +2526,7 @@ present as follows: @@ -11738,7 +11713,7 @@ index 02a1d8f4..63be3ac8 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index 084414fa..0b84dc63 100644 +index 10fdf6e7..41deb6c1 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -13822,7 +13822,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. @@ -11760,7 +11735,7 @@ index 084414fa..0b84dc63 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index e12de083..afbb6b0c 100644 +index 9fff6e28..3f999c75 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -11914,10 +11889,10 @@ index e12de083..afbb6b0c 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index 9d5fcfed..20d0f06a 100644 +index 6a73b71a..d966dcbf 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -3481,7 +3481,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, +@@ -3480,7 +3480,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11926,7 +11901,7 @@ index 9d5fcfed..20d0f06a 100644 \pnum \effects -@@ -4774,7 +4774,7 @@ For the \tcode{volatile} overload of this function, +@@ -4773,7 +4773,7 @@ For the \tcode{volatile} overload of this function, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11935,7 +11910,7 @@ index 9d5fcfed..20d0f06a 100644 \pnum \effects -@@ -6285,7 +6285,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de +@@ -6284,7 +6284,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11944,7 +11919,7 @@ index 9d5fcfed..20d0f06a 100644 \pnum \effects -@@ -6601,7 +6601,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire +@@ -6600,7 +6600,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11954,7 +11929,7 @@ index 9d5fcfed..20d0f06a 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index 639cc237..06e48fd5 100644 +index f1e23f45..c980a039 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -2078,7 +2078,7 @@ equals \tcode{tuple_size_v>}, @@ -11996,3 +11971,87 @@ index 639cc237..06e48fd5 100644 -- 2.43.0 + +From e3aff7dee9e37fa14bc6ac447bfa0dd135589ce3 Mon Sep 17 00:00:00 2001 +From: Eelis van der Weegen +Date: Thu, 25 Dec 2025 12:43:53 +0100 +Subject: [PATCH 10/10] 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 1b8befd1..809a61b2 100644 +--- a/source/lex.tex ++++ b/source/lex.tex +@@ -446,7 +446,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} +@@ -461,9 +461,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} + +@@ -1170,14 +1170,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} + + \begin{bnf} + \nontermdef{octal-literal}\br +- \terminal{0}\br ++ \literalterminal{0}\br + octal-literal \opt{\literalterminal{'}} octal-digit + \end{bnf} + +@@ -1194,22 +1194,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 d522a460da..0435edfefb 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ -htmlgen 28b6c103f58b9b4305a7d15b224212f1727b7b05 -draft 1d9fdb066e95b7be58881f24977a20a51359097c -bbc2beaa01d1c9e4cd298aa91f392517393b5f5f htmlgen.patch +htmlgen ec08ed9082b71d87ffc970becceff11c5f8438b2 +draft 5c8fc4311ab8ec82f789e9eadf4cf39f47beabf9 +4d7f727a3cef73dafed68af528bc04371326b1f9 htmlgen.patch From 2986cf5a801e3b29a712f7d4149057015336dff8 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Wed, 8 Apr 2026 20:22:35 -0500 Subject: [PATCH 10/18] update --- gh-pages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gh-pages b/gh-pages index 5fabcc0734..10466a4e2e 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 5fabcc07340c334f9e21025e048c896a71e49985 +Subproject commit 10466a4e2e30d9767eb6b6d58b4eb11ba470263c From 214566a77172fce5910fd89cfe523899460a75e5 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Mon, 20 Apr 2026 00:48:41 -0500 Subject: [PATCH 11/18] update --- gh-pages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gh-pages b/gh-pages index 10466a4e2e..595a1c5608 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 10466a4e2e30d9767eb6b6d58b4eb11ba470263c +Subproject commit 595a1c5608d799902ba8eb12d4cc20725ec17a63 From 3d693dc0f37b0892b98aff7cafc675f43a414642 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Tue, 21 Apr 2026 21:45:46 -0500 Subject: [PATCH 12/18] update --- gh-pages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gh-pages b/gh-pages index 595a1c5608..71c2b82292 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 595a1c5608d799902ba8eb12d4cc20725ec17a63 +Subproject commit 71c2b82292c4df5182be2a860089391b2e8b2bda From 4fb4470d7e6d8e9c7f85399ab91fdc006747738b Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Tue, 21 Apr 2026 21:52:46 -0500 Subject: [PATCH 13/18] Update --- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 2116 ++++++++++++++++++++++--------------------------- lastbuild.sig | 4 +- 4 files changed, 944 insertions(+), 1180 deletions(-) diff --git a/draft b/draft index 5c8fc4311a..1e747bf358 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 5c8fc4311ab8ec82f789e9eadf4cf39f47beabf9 +Subproject commit 1e747bf358e4546e9661c6bcee01a1dd71d2186f diff --git a/gh-pages b/gh-pages index 71c2b82292..0726db91c8 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 71c2b82292c4df5182be2a860089391b2e8b2bda +Subproject commit 0726db91c826d1ca39f90d991585882467de554c diff --git a/htmlgen.patch b/htmlgen.patch index 605756f5ca..9b4a155f5d 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From bb7ca297960b66cd35bae9ab9023b4ce400d4fc9 Mon Sep 17 00:00:00 2001 +From b60946b63be3c75c4fd6750a7c4776a6bbe6824b Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout @@ -10,10 +10,10 @@ Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index de215a04..8e863f4c 100644 +index 43122c5e..09feaca9 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -324,7 +324,7 @@ Given +@@ -342,7 +342,7 @@ Given #include struct C { @@ -22,7 +22,7 @@ index de215a04..8e863f4c 100644 }; int main() { -@@ -2629,23 +2629,23 @@ namespace AB { +@@ -2652,23 +2652,23 @@ namespace AB { void h() { @@ -59,10 +59,10 @@ index de215a04..8e863f4c 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 10fffe4f..de418bed 100644 +index ea8b1848..fb8b4ea2 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -2938,7 +2938,7 @@ struct s2 { +@@ -2939,7 +2939,7 @@ struct s2 { } auto g() { return [] { @@ -75,22 +75,22 @@ index 10fffe4f..de418bed 100644 2.43.0 -From 519c97d9af6000c8ab322c984b6cd7a2431a94f3 Mon Sep 17 00:00:00 2001 +From 1d3d72cbf6686216eb8474491baf4bcd08568eb0 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 Subject: [PATCH 02/10] Use new link macros. --- source/algorithms.tex | 4 +- - source/basic.tex | 97 +++++++------- + source/basic.tex | 93 +++++++------- source/classes.tex | 22 ++-- source/compatibility.tex | 4 +- source/concepts.tex | 12 +- - source/containers.tex | 48 +++---- - source/declarations.tex | 67 +++++----- + source/containers.tex | 48 ++++---- + source/declarations.tex | 57 +++++---- source/diagnostics.tex | 6 +- - source/exceptions.tex | 36 +++--- - source/expressions.tex | 266 ++++++++++++++++++++------------------- + source/exceptions.tex | 34 +++--- + source/expressions.tex | 258 ++++++++++++++++++++------------------- source/future.tex | 10 +- source/intro.tex | 19 +-- source/iostreams.tex | 74 +++++------ @@ -98,20 +98,20 @@ Subject: [PATCH 02/10] Use new link macros. source/lex.tex | 6 +- source/lib-intro.tex | 71 +++++------ source/limits.tex | 2 +- - source/numerics.tex | 55 ++++---- + 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, 600 insertions(+), 610 deletions(-) + 27 files changed, 574 insertions(+), 586 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index baf3e4f2..c313c941 100644 +index af6c2c98..3074bc3a 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -123,7 +123,7 @@ index baf3e4f2..c313c941 100644 \pnum The following subclauses describe components for -@@ -10243,7 +10243,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 baf3e4f2..c313c941 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index 8e863f4c..818f9001 100644 +index 09feaca9..c6a2b6c0 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -162,7 +162,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 8e863f4c..818f9001 100644 translation unit. \rSec1[basic.def]{Declarations and definitions} -@@ -187,7 +187,7 @@ A declaration can 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}, @@ -154,16 +154,7 @@ index 8e863f4c..818f9001 100644 \item nothing (in the case of an \grammarterm{empty-declaration}). \end{itemize} \end{note} -@@ -274,7 +274,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. -@@ -316,7 +316,7 @@ In some circumstances, \Cpp{} implementations implicitly define the +@@ -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,7 +163,7 @@ index 8e863f4c..818f9001 100644 \end{note} \begin{example} Given -@@ -401,7 +401,7 @@ defined as follows: +@@ -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$. @@ -181,7 +172,7 @@ index 8e863f4c..818f9001 100644 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 -@@ -412,16 +412,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 8e863f4c..818f9001 100644 contains the potential results of the right operand. \item Otherwise, the set is empty. \end{itemize} -@@ -583,8 +582,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 8e863f4c..818f9001 100644 \pnum A local entity\iref{basic.pre} -@@ -656,7 +655,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 8e863f4c..818f9001 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}, -@@ -704,9 +703,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 8e863f4c..818f9001 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 -@@ -726,7 +725,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,16 +235,7 @@ index 8e863f4c..818f9001 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 -@@ -781,7 +780,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.const}, -+\item is initialized with a \link{constant expression}{expr.const.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} -@@ -2922,7 +2921,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 @@ -262,7 +244,7 @@ index 8e863f4c..818f9001 100644 has internal linkage if it is the name of \begin{itemize} \item -@@ -2963,7 +2962,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}% @@ -271,7 +253,7 @@ index 8e863f4c..818f9001 100644 in a typedef declaration in which the enumeration has the typedef name for linkage purposes\iref{dcl.typedef}; or \item an unnamed enumeration -@@ -3039,7 +3038,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 @@ -280,7 +262,7 @@ index 8e863f4c..818f9001 100644 linkage. \pnum -@@ -3398,8 +3397,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} @@ -291,7 +273,7 @@ index 8e863f4c..818f9001 100644 locations without interfering with each other. \pnum -@@ -3443,15 +3442,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 @@ -310,7 +292,7 @@ index 8e863f4c..818f9001 100644 and in its period of destruction\iref{class.cdtor}. \begin{note} -@@ -3585,7 +3584,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 @@ -319,7 +301,7 @@ index 8e863f4c..818f9001 100644 \end{itemize} \pnum -@@ -3606,7 +3605,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}% @@ -328,7 +310,7 @@ index 8e863f4c..818f9001 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 -@@ -4199,16 +4198,16 @@ the result of the evaluation is that erroneous value: +@@ -4269,16 +4268,16 @@ the result of the evaluation is that erroneous value: is produced by the evaluation of: \begin{itemize} \item @@ -348,7 +330,7 @@ index 8e863f4c..818f9001 100644 \end{itemize} then the result of the operation is an indeterminate value or that erroneous value, respectively. -@@ -4399,8 +4398,8 @@ specified in~\ref{class.copy.elision}. +@@ -4469,8 +4468,8 @@ specified in~\ref{class.copy.elision}. \indextext{storage duration!dynamic|(} \pnum @@ -359,7 +341,7 @@ index 8e863f4c..818f9001 100644 \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -@@ -4564,9 +4563,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 @@ -372,7 +354,7 @@ index 8e863f4c..818f9001 100644 a coroutine state\iref{dcl.fct.def.coroutine}, or called indirectly through calls to the functions in the \Cpp{} standard library. -@@ -5091,9 +5090,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. @@ -385,7 +367,7 @@ index 8e863f4c..818f9001 100644 \end{note} \pnum -@@ -5267,7 +5266,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::meta::\brk{}info}, \tcode{std::nullptr_t}, and @@ -394,7 +376,7 @@ index 8e863f4c..818f9001 100644 types are collectively called \defnadjx{scalar}{types}{type}. \label{term.trivially.copyable.type}% -@@ -5292,7 +5291,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 @@ -403,7 +385,7 @@ index 8e863f4c..818f9001 100644 has all of the following properties: \begin{itemize} \item it has a constexpr destructor\iref{dcl.constexpr}, -@@ -5326,8 +5325,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, @@ -414,7 +396,7 @@ index 8e863f4c..818f9001 100644 \pnum A type is \defn{consteval-only} if it is -@@ -5896,7 +5895,7 @@ ordinary pointers to objects or functions. +@@ -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 @@ -423,7 +405,7 @@ index 8e863f4c..818f9001 100644 \end{itemize} \pnum -@@ -5974,7 +5973,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} @@ -432,7 +414,7 @@ index 8e863f4c..818f9001 100644 representation, but their range of valid values is restricted by the extended alignment requirement. \end{note} -@@ -6289,8 +6288,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 @@ -443,7 +425,7 @@ index 8e863f4c..818f9001 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). -@@ -6335,7 +6334,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 @@ -452,7 +434,7 @@ index 8e863f4c..818f9001 100644 the constituent expressions of each default argument\iref{dcl.fct.default} used in the call, or \item -@@ -6366,7 +6365,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 @@ -462,7 +444,7 @@ index 8e863f4c..818f9001 100644 a \grammarterm{constant-expression}\iref{expr.const.core}, \item diff --git a/source/classes.tex b/source/classes.tex -index 058a3176..7883ea0a 100644 +index fbd7a165..76ea152b 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -188,10 +188,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: @@ -488,7 +470,7 @@ index 058a3176..7883ea0a 100644 is a member of the class, and each such \grammarterm{member-declaration} shall either -@@ -589,7 +589,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}. @@ -497,7 +479,7 @@ index 058a3176..7883ea0a 100644 are members of the class. \pnum -@@ -735,9 +735,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 @@ -509,7 +491,7 @@ index 058a3176..7883ea0a 100644 that is not a friend declaration. \pnum -@@ -840,7 +840,7 @@ unscoped enumeration type; and +@@ -844,7 +844,7 @@ unscoped enumeration type; and \pnum In addition, if class \tcode{T} has a user-declared @@ -518,7 +500,7 @@ index 058a3176..7883ea0a 100644 \tcode{T} shall have a name different from \tcode{T}. \pnum -@@ -890,7 +890,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 @@ -527,7 +509,7 @@ index 058a3176..7883ea0a 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}; -@@ -2217,7 +2217,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation +@@ -2238,7 +2238,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} @@ -536,7 +518,7 @@ index 058a3176..7883ea0a 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}. -@@ -6322,7 +6322,7 @@ associated with a \grammarterm{try-block} (if there is one), +@@ -6346,7 +6346,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; @@ -546,10 +528,10 @@ index 058a3176..7883ea0a 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 edbd9196..60706217 100644 +index e3512400..cdca4c22 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -1990,8 +1990,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 @@ -609,7 +591,7 @@ index d1e15a6e..42828a4b 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index 89f3bca5..d64183f9 100644 +index 571b56d0..65081f46 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -6125,14 +6125,14 @@ namespace std { @@ -685,7 +667,7 @@ index 89f3bca5..d64183f9 100644 \end{itemdescr} \indexlibrarymember{reverse}{forward_list}% -@@ -9045,7 +9045,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 @@ -694,7 +676,7 @@ index 89f3bca5..d64183f9 100644 fast random access to list elements is not supported, but many algorithms only need sequential access anyway. -@@ -9221,7 +9221,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 @@ -703,7 +685,7 @@ index 89f3bca5..d64183f9 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{list} is referenced. -@@ -9634,7 +9634,7 @@ applications of the corresponding predicate. +@@ -9658,7 +9658,7 @@ applications of the corresponding predicate. \pnum \remarks @@ -712,7 +694,7 @@ index 89f3bca5..d64183f9 100644 \end{itemdescr} \indexlibrarymember{unique}{list}% -@@ -9757,7 +9757,7 @@ comparisons, where $N$ is \tcode{size()}. +@@ -9781,7 +9781,7 @@ comparisons, where $N$ is \tcode{size()}. \pnum \remarks @@ -721,7 +703,7 @@ index 89f3bca5..d64183f9 100644 \end{itemdescr} \rSec3[list.erasure]{Erasure} -@@ -9865,7 +9865,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}, @@ -730,7 +712,7 @@ index 89f3bca5..d64183f9 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} -@@ -10003,7 +10003,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 @@ -739,7 +721,7 @@ index 89f3bca5..d64183f9 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{vector} is referenced. -@@ -10599,7 +10599,7 @@ Unless described below, all operations have the same requirements and +@@ -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 @@ -748,7 +730,7 @@ index 89f3bca5..d64183f9 100644 is not used to construct these values. \pnum -@@ -15740,9 +15740,9 @@ and +@@ -15761,9 +15761,9 @@ and can be used to instantiate \tcode{queue}. In particular, @@ -760,7 +742,7 @@ index 89f3bca5..d64183f9 100644 can be used. \begin{codeblock} -@@ -16097,15 +16097,15 @@ and +@@ -16118,15 +16118,15 @@ and can be used to instantiate \tcode{priority_queue}. In particular, @@ -779,7 +761,7 @@ index 89f3bca5..d64183f9 100644 \begin{codeblock} namespace std { -@@ -16653,10 +16653,10 @@ and +@@ -16674,10 +16674,10 @@ and can be used to instantiate \tcode{stack}. In particular, @@ -794,7 +776,7 @@ index 89f3bca5..d64183f9 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index eac2152f..cc6330bc 100644 +index 0e0c521e..00cff00a 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -830,7 +812,7 @@ index eac2152f..cc6330bc 100644 In the global module, a function defined within a class definition is implicitly inline\iref{class.mfct,class.friend}. \end{note} -@@ -1288,7 +1288,7 @@ the object referenced is a non-const object and can be modified through +@@ -1289,7 +1289,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 @@ -839,7 +821,7 @@ index eac2152f..cc6330bc 100644 \end{note} \pnum -@@ -1724,8 +1724,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; +@@ -1733,8 +1733,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; \item otherwise, \tcode{decltype($E$)} is the type of $E$. \end{itemize} @@ -849,7 +831,7 @@ index eac2152f..cc6330bc 100644 \begin{example} \begin{codeblock} -@@ -1924,7 +1923,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. +@@ -1933,7 +1932,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 @@ -858,7 +840,7 @@ index eac2152f..cc6330bc 100644 and if the type that replaces the placeholder type is not the same in each deduction, the program is ill-formed. -@@ -2066,7 +2065,7 @@ A function declared with a return type that uses a placeholder type shall not +@@ -2075,7 +2074,7 @@ A function declared with a return type that uses a placeholder type shall not be a coroutine\iref{dcl.fct.def.coroutine}. \pnum @@ -867,7 +849,7 @@ index eac2152f..cc6330bc 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. -@@ -2281,7 +2280,7 @@ in the \grammarterm{type-specifier-seq} +@@ -2290,7 +2289,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} @@ -876,7 +858,7 @@ index eac2152f..cc6330bc 100644 or as the \grammarterm{type-specifier} in the \grammarterm{parameter-declaration} of a \grammarterm{template-parameter}\iref{temp.param}. -@@ -4489,7 +4488,7 @@ int a; +@@ -4500,7 +4499,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 @@ -885,7 +867,7 @@ index eac2152f..cc6330bc 100644 \end{codeblock} \end{example} A non-static member shall not be designated in a default argument unless -@@ -6214,15 +6213,15 @@ This requires a conversion +@@ -6225,15 +6224,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 @@ -905,7 +887,7 @@ index eac2152f..cc6330bc 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7735,7 +7734,7 @@ the initializer is +@@ -7746,7 +7745,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} @@ -914,7 +896,7 @@ index eac2152f..cc6330bc 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. -@@ -7886,7 +7885,7 @@ is not looked up and is introduced by +@@ -7897,7 +7896,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}, @@ -923,31 +905,7 @@ index eac2152f..cc6330bc 100644 \pnum \indextext{constant!enumeration}% -@@ -7968,8 +7967,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.const}. -+shall be a -+\deflinkx{converted constant expression}{expression!converted constant}{expr.const.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 -@@ -7978,8 +7978,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.const}. If the expression has -+\grammarterm{constant-expression} shall be an -+\deflinkx{integral constant expression}{expression!integral constant}{expr.const.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. - -@@ -8051,7 +8052,7 @@ if they have the same underlying type. +@@ -8062,7 +8061,7 @@ if they have the same underlying type. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -956,7 +914,7 @@ index eac2152f..cc6330bc 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8334,7 +8335,7 @@ appertains to the namespace being defined or extended. +@@ -8345,7 +8344,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 @@ -965,7 +923,7 @@ index eac2152f..cc6330bc 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 -@@ -9167,7 +9168,7 @@ different language linkages are distinct types even if they are +@@ -9178,7 +9177,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -974,7 +932,7 @@ index eac2152f..cc6330bc 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9497,18 +9498,18 @@ For each individual attribute, the form of the +@@ -9508,18 +9507,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 @@ -998,7 +956,7 @@ index eac2152f..cc6330bc 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9619,7 +9620,7 @@ declaration, the program is ill-formed. +@@ -9637,7 +9636,7 @@ declaration, the program is ill-formed. \pnum An \grammarterm{alignment-specifier} of the form \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same @@ -1007,7 +965,7 @@ index eac2152f..cc6330bc 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9799,7 +9800,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9817,7 +9816,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -1017,10 +975,10 @@ index eac2152f..cc6330bc 100644 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 47be572c..8b010321 100644 +index fc53cdb3..9a7aba83 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)} @@ -1036,7 +994,7 @@ index 47be572c..8b010321 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 @@ -1046,7 +1004,7 @@ index 47be572c..8b010321 100644 \end{note} \indexlibraryglobal{system_error}% diff --git a/source/exceptions.tex b/source/exceptions.tex -index 29d43577..a9fd6f69 100644 +index 465c8197..b01c7719 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -184,7 +184,7 @@ try : i(f(ii)), d(id) { @@ -1155,15 +1113,6 @@ index 29d43577..a9fd6f69 100644 whose \grammarterm{postfix-expression} has a function type, or a pointer-to-function type, -@@ -886,7 +886,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} - @@ -939,7 +939,7 @@ the invocation of any assignment operator in the implicit definition is potentially-throwing. @@ -1173,7 +1122,7 @@ index 29d43577..a9fd6f69 100644 with no explicit \grammarterm{noexcept-specifier} has a non-throwing exception specification. -@@ -1054,9 +1054,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 @@ -1185,7 +1134,7 @@ index 29d43577..a9fd6f69 100644 including when a contract-violation handler invoked from an evaluation of a function contract assertion\iref{basic.contract.eval} associated with the function -@@ -1064,7 +1064,7 @@ exits via an exception, +@@ -1063,7 +1063,7 @@ exits via an exception, or \item% @@ -1195,7 +1144,7 @@ index 29d43577..a9fd6f69 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index de418bed..cea81800 100644 +index fb8b4ea2..388f5d39 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1378,7 +1327,7 @@ index de418bed..cea81800 100644 \end{note} \pnum -@@ -2475,7 +2475,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no +@@ -2476,7 +2476,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 @@ -1387,7 +1336,7 @@ index de418bed..cea81800 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 -@@ -2584,8 +2584,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} +@@ -2585,8 +2585,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} \pnum The conversion function or conversion function template is public, @@ -1398,7 +1347,7 @@ index de418bed..cea81800 100644 \begin{example} \begin{codeblock} auto Fwd = [](int (*fp)(int), auto a) { return fp(a); }; -@@ -2643,9 +2643,9 @@ implicitly-declared destructor\iref{class.dtor}. +@@ -2644,9 +2644,9 @@ implicitly-declared destructor\iref{class.dtor}. \pnum A member of a closure type shall not be @@ -1411,7 +1360,7 @@ index de418bed..cea81800 100644 \rSec3[expr.prim.lambda.capture]{Captures}% -@@ -3214,7 +3214,7 @@ A fold expression is a pack expansion. +@@ -3216,7 +3216,7 @@ A fold expression is a pack expansion. \pnum A \grammarterm{requires-expression} provides a concise way to express requirements on template arguments @@ -1420,7 +1369,7 @@ index de418bed..cea81800 100644 or by checking properties of types and expressions. \begin{bnf} -@@ -3798,7 +3798,7 @@ or a prvalue of function pointer type. +@@ -3814,7 +3814,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 @@ -1429,7 +1378,7 @@ index de418bed..cea81800 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} -@@ -3811,8 +3811,8 @@ an object under construction or destruction. +@@ -3827,8 +3827,8 @@ an object under construction or destruction. \pnum \begin{note} @@ -1440,7 +1389,7 @@ index de418bed..cea81800 100644 the program is ill-formed. No function is implicitly declared by such a call. \end{note} -@@ -3879,7 +3879,7 @@ function, +@@ -3895,7 +3895,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, @@ -1449,7 +1398,7 @@ index de418bed..cea81800 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) -@@ -4016,10 +4016,10 @@ pointer parameters. +@@ -4032,10 +4032,10 @@ pointer parameters. \pnum \indextext{declaration!ellipsis in function}% \indextext{parameter list!variable}% @@ -1463,7 +1412,7 @@ index de418bed..cea81800 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. -@@ -4037,8 +4037,8 @@ thus each such argument has a corresponding parameter when a function template +@@ -4053,8 +4053,8 @@ thus each such argument has a corresponding parameter when a function template specialization is actually called. \end{note} The @@ -1474,7 +1423,7 @@ index de418bed..cea81800 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}. -@@ -4053,16 +4053,16 @@ an eligible non-trivial move constructor, or +@@ -4069,16 +4069,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 @@ -1496,7 +1445,7 @@ index de418bed..cea81800 100644 \pnum A function call is an lvalue -@@ -4081,8 +4081,8 @@ except as specified in \ref{dcl.type.decltype}. +@@ -4097,8 +4097,8 @@ except as specified in \ref{dcl.type.decltype}. \indextext{type conversion, explicit|see{casting}}% \indextext{conversion explicit type|see{casting}}% \indextext{casting}% @@ -1507,7 +1456,7 @@ index de418bed..cea81800 100644 by a parenthesized optional \grammarterm{expression-list} or by a \grammarterm{braced-init-list} (the initializer) -@@ -4093,7 +4093,7 @@ If the type is a placeholder +@@ -4109,7 +4109,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 @@ -1516,7 +1465,7 @@ index de418bed..cea81800 100644 for the remainder of this subclause. Otherwise, if the type contains a placeholder type, it is replaced by the type -@@ -4492,8 +4492,8 @@ void foo(D* dp) { +@@ -4508,8 +4508,8 @@ void foo(D* dp) { \end{example} \pnum @@ -1527,7 +1476,7 @@ index de418bed..cea81800 100644 \pnum If \tcode{v} is a null pointer value, the result is a null pointer value. -@@ -4544,9 +4544,9 @@ runtime check \term{fails}. +@@ -4560,9 +4560,9 @@ runtime check \term{fails}. \pnum The value of a failed cast to pointer type is the null pointer value of @@ -1540,7 +1489,7 @@ index de418bed..cea81800 100644 \indextext{\idxcode{bad_cast}}% \indexlibraryglobal{bad_cast}% -@@ -4635,13 +4635,13 @@ glvalue refers. +@@ -4651,13 +4651,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. @@ -1558,7 +1507,7 @@ index de418bed..cea81800 100644 \pnum When \keyword{typeid} is applied to a \grammarterm{type-id}, the result -@@ -4735,7 +4735,7 @@ of type \tcode{T1} can be cast to type ``rvalue +@@ -4751,7 +4751,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 @@ -1567,7 +1516,7 @@ index de418bed..cea81800 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 -@@ -4840,7 +4840,8 @@ Otherwise, the behavior is undefined. +@@ -4856,7 +4856,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}'', @@ -1577,7 +1526,7 @@ index de418bed..cea81800 100644 from \tcode{B}, if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. -@@ -4861,7 +4862,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} +@@ -4877,7 +4878,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 @@ -1586,7 +1535,7 @@ index de418bed..cea81800 100644 if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. \begin{note} -@@ -4872,7 +4873,7 @@ If no valid standard conversion +@@ -4888,7 +4889,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. @@ -1595,7 +1544,7 @@ index de418bed..cea81800 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 -@@ -4895,7 +4896,7 @@ If the original pointer value represents the address +@@ -4911,7 +4912,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} @@ -1604,7 +1553,7 @@ index de418bed..cea81800 100644 the result is a pointer to \placeholder{b}. Otherwise, the pointer value is unchanged by the conversion. \begin{example} -@@ -4918,8 +4919,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. +@@ -4934,8 +4935,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 @@ -1615,7 +1564,7 @@ index de418bed..cea81800 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}. -@@ -5084,10 +5085,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type +@@ -5100,10 +5101,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 @@ -1629,7 +1578,7 @@ index de418bed..cea81800 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 -@@ -5640,7 +5641,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside +@@ -5656,7 +5657,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, @@ -1638,7 +1587,7 @@ index de418bed..cea81800 100644 \grammarterm{type-id}. \indextext{type!incomplete}% The \keyword{sizeof} operator shall not be applied to an expression that -@@ -5695,7 +5696,7 @@ array-to-pointer\iref{conv.array}, and +@@ -5713,7 +5714,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, @@ -1647,7 +1596,7 @@ index de418bed..cea81800 100644 is applied. \pnum -@@ -5840,7 +5841,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. +@@ -5858,7 +5859,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. \end{bnf} \pnum @@ -1656,7 +1605,7 @@ index de418bed..cea81800 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 -@@ -5968,7 +5969,7 @@ is less than zero; +@@ -5986,7 +5987,7 @@ is less than zero; \item its value is such that the size of the allocated object would exceed the @@ -1665,7 +1614,7 @@ index de418bed..cea81800 100644 \item the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} -@@ -5994,7 +5995,7 @@ is the null pointer value of the required result type; +@@ -6012,7 +6013,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 @@ -1674,7 +1623,7 @@ index de418bed..cea81800 100644 \end{itemize} \end{itemize} When the value of the \grammarterm{expression} is zero, the allocation -@@ -6052,8 +6053,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( +@@ -6070,8 +6071,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 @@ -1685,7 +1634,7 @@ index de418bed..cea81800 100644 is a non-array type, the allocation function's name is \indextext{\idxcode{operator new}}% \indextext{\idxcode{operator delete}}% -@@ -6164,7 +6165,7 @@ the difference between the +@@ -6182,7 +6183,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 @@ -1694,7 +1643,7 @@ index de418bed..cea81800 100644 is no greater than the size of the array being created. \begin{note} \indextext{allocation!alignment storage}% -@@ -6255,7 +6256,7 @@ invocation of \keyword{new} to another. +@@ -6273,7 +6274,7 @@ invocation of \keyword{new} to another. \pnum \begin{note} Unless an allocation function has a non-throwing @@ -1703,7 +1652,7 @@ index de418bed..cea81800 100644 it indicates failure to allocate storage by throwing a \indextext{\idxcode{bad_alloc}}% \indexlibraryglobal{bad_alloc}% -@@ -6401,8 +6402,8 @@ to both the allocation and deallocation functions. +@@ -6489,8 +6490,8 @@ to both the allocation and deallocation functions. \pnum \indextext{expression!\idxcode{delete}}% \indextext{\idxcode{delete}}% @@ -1714,7 +1663,7 @@ index de418bed..cea81800 100644 \grammarterm{new-expression}. \begin{bnf} -@@ -6505,8 +6506,8 @@ null pointer value, then: +@@ -6593,8 +6594,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 @@ -1725,7 +1674,7 @@ index de418bed..cea81800 100644 allocation call of the \grammarterm{new-expression} shall be passed as the first argument to the deallocation function. -@@ -7091,8 +7092,8 @@ The result of a \tcode{.*} expression +@@ -7179,8 +7180,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. @@ -1736,7 +1685,7 @@ index de418bed..cea81800 100644 \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -7121,7 +7122,7 @@ left-to-right. +@@ -7209,7 +7210,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 @@ -1745,7 +1694,7 @@ index de418bed..cea81800 100644 operands and determine the type of the result. \pnum -@@ -7252,7 +7253,7 @@ the behavior is undefined\iref{expr.pre}. +@@ -7340,7 +7341,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 @@ -1754,7 +1703,7 @@ index de418bed..cea81800 100644 \begin{example} \begin{codeblock} int arr[5] = {1, 2, 3, 4, 5}; -@@ -7343,12 +7344,12 @@ and the other is not, the program is ill-formed. +@@ -7431,12 +7432,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, @@ -1769,7 +1718,7 @@ index de418bed..cea81800 100644 other than from an integral type to a floating-point type, the program is ill-formed. -@@ -7390,13 +7391,13 @@ the other operand is of object pointer or array type, +@@ -7478,13 +7479,13 @@ the other operand is of object pointer or array type, array-to-pointer conversions\iref{conv.array}, pointer conversions\iref{conv.ptr}, and @@ -1785,7 +1734,7 @@ index de418bed..cea81800 100644 \end{note} In this case, \tcode{p <=> q} is of type \tcode{std::strong_ordering} and -@@ -7485,7 +7486,7 @@ pointer conversions\iref{conv.ptr}, +@@ -7573,7 +7574,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring @@ -1794,7 +1743,7 @@ index de418bed..cea81800 100644 After conversions, the operands shall have the same type. \pnum -@@ -7570,10 +7571,10 @@ same type after the specified conversions have been applied. +@@ -7658,10 +7659,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, @@ -1809,7 +1758,7 @@ index de418bed..cea81800 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -7590,7 +7591,8 @@ the result of the comparison is unspecified. +@@ -7678,7 +7679,8 @@ the result of the comparison is unspecified. \item Otherwise, if the pointers are both null, both point to the same \indextext{address}% @@ -1819,7 +1768,7 @@ index de418bed..cea81800 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -7635,12 +7637,12 @@ bool b1 = (bx == cx); // unspecified +@@ -7723,12 +7725,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -1834,7 +1783,7 @@ index de418bed..cea81800 100644 indirection with a hypothetical object of the associated class type were performed, otherwise they compare unequal. \begin{example} -@@ -7880,7 +7882,7 @@ Otherwise, if the second and third operand have different types and +@@ -7968,7 +7970,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 @@ -1843,7 +1792,7 @@ index de418bed..cea81800 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 -@@ -7922,9 +7924,9 @@ denotes the cv-qualifiers of \tcode{T1}; +@@ -8010,9 +8012,9 @@ denotes the cv-qualifiers of \tcode{T1}; \item otherwise, the target type is the type that \tcode{E2} would have after applying the @@ -1856,7 +1805,7 @@ index de418bed..cea81800 100644 standard conversions. \end{itemize} \end{itemize} -@@ -7965,8 +7967,8 @@ are used in place of the original operands for the remainder of this +@@ -8053,8 +8055,8 @@ are used in place of the original operands for the remainder of this subclause. \pnum @@ -1867,7 +1816,7 @@ index de418bed..cea81800 100644 performed on the second and third operands. After those conversions, one of the following shall hold: -@@ -7975,16 +7977,16 @@ of the following shall hold: +@@ -8063,16 +8065,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; @@ -1890,7 +1839,7 @@ index de418bed..cea81800 100644 pointer type. \item One or both of the second and third operands have pointer-to-member type; -@@ -8168,7 +8170,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. +@@ -8256,7 +8258,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 @@ -1899,7 +1848,7 @@ index de418bed..cea81800 100644 operand. \pnum -@@ -8182,7 +8184,7 @@ resulting value of the bit-field is +@@ -8270,7 +8272,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 @@ -1908,7 +1857,7 @@ index de418bed..cea81800 100644 \pnum The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} -@@ -8254,7 +8256,7 @@ The comma operator groups left-to-right. +@@ -8342,7 +8344,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 @@ -1917,16 +1866,7 @@ index de418bed..cea81800 100644 The left expression is sequenced before the right expression\iref{intro.execution}. \indextext{operator!side effects and comma}% -@@ -8295,7 +8297,7 @@ Certain contexts require expressions that satisfy additional - requirements as detailed in \ref{expr.const}; 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 constant expressions. - \begin{note} - Constant expressions can be evaluated -@@ -8393,7 +8395,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. +@@ -8493,7 +8495,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -1935,7 +1875,7 @@ index de418bed..cea81800 100644 it is applied to \begin{itemize} \item -@@ -8415,7 +8417,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -8515,7 +8517,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 @@ -1944,7 +1884,7 @@ index de418bed..cea81800 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -8864,7 +8866,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -8993,7 +8995,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}, @@ -1953,28 +1893,7 @@ index de418bed..cea81800 100644 \end{note} \pnum -@@ -9082,9 +9084,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 -@@ -9465,7 +9467,7 @@ if it is: - a manifestly constant-evaluated expression, - - \item --a potentially evaluated expression\iref{basic.def.odr}, -+a \deflink{potentially evaluated}{basic.def.odr} expression, - - \item - an immediate subexpression of a \grammarterm{braced-init-list}, -@@ -9492,7 +9494,9 @@ A function or variable is +@@ -9678,7 +9680,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -1986,7 +1905,7 @@ index de418bed..cea81800 100644 \item diff --git a/source/future.tex b/source/future.tex -index 14b1e41e..c72d59ea 100644 +index a8772f66..88603947 100644 --- a/source/future.tex +++ b/source/future.tex @@ -14,7 +14,7 @@ is defined as: @@ -2023,7 +1942,7 @@ index 14b1e41e..c72d59ea 100644 the \oldconcept{TransformationTrait} requirements with a base characteristic of \tcode{integral_constant}. diff --git a/source/intro.tex b/source/intro.tex -index b04be9ab..c9f5b61f 100644 +index 3e24d06d..b5e513df 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -97,8 +97,8 @@ Reads of scalar objects are described in \ref{conv.lval} and @@ -2063,7 +1982,7 @@ index b04be9ab..c9f5b61f 100644 \indexdefn{behavior!implementation-defined}% \definition{implementation-defined behavior}{defns.impl.defined} -@@ -814,7 +815,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 @@ -2072,7 +1991,7 @@ index b04be9ab..c9f5b61f 100644 specified, but each implementation shall supply them to complete the definitions according to the description in the library Clauses. -@@ -831,7 +832,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 @@ -2082,7 +2001,7 @@ index b04be9ab..c9f5b61f 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 2ec4c644..faf3c046 100644 +index 3320a770..aff85000 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -558,7 +558,7 @@ is initialized, @@ -2288,7 +2207,7 @@ index 2ec4c644..faf3c046 100644 of \tcode{out}. This forms a character sequence \tcode{seq}, initially consisting of the following elements: \begin{itemize} -@@ -14129,7 +14129,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} @@ -2297,7 +2216,7 @@ index 2ec4c644..faf3c046 100644 for how the value types above and their encodings convert to \tcode{path::value_type} and its encoding. \end{note} -@@ -14741,7 +14741,7 @@ and print functions\iref{print.fun}. +@@ -14742,7 +14742,7 @@ and print functions\iref{print.fun}. \pnum Generic format observer functions return strings formatted according to the @@ -2306,7 +2225,7 @@ index 2ec4c644..faf3c046 100644 A single slash (\tcode{'/'}) character is used as the \grammarterm{directory-separator}. -@@ -15297,11 +15297,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 @@ -2320,7 +2239,7 @@ index 2ec4c644..faf3c046 100644 except that, for dereferenceable iterators \tcode{a} and \tcode{b} of type \tcode{path::iterator} -@@ -16658,7 +16658,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 @@ -2329,7 +2248,7 @@ index 2ec4c644..faf3c046 100644 \end{note} \rSec3[fs.dir.itr.members]{Members} -@@ -16750,7 +16750,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 @@ -2338,7 +2257,7 @@ index 2ec4c644..faf3c046 100644 \pnum \returns -@@ -17062,7 +17062,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 @@ -2347,7 +2266,7 @@ index 2ec4c644..faf3c046 100644 except that: \begin{itemize} -@@ -17653,7 +17653,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 @@ -2356,7 +2275,7 @@ index 2ec4c644..faf3c046 100644 \pnum \ensures -@@ -17729,7 +17729,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 @@ -2365,7 +2284,7 @@ index 2ec4c644..faf3c046 100644 \pnum \ensures -@@ -17762,7 +17762,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 @@ -2374,7 +2293,7 @@ index 2ec4c644..faf3c046 100644 The signature with argument \tcode{ec} returns \tcode{path()} if an error occurs. -@@ -17793,7 +17793,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 @@ -2383,7 +2302,7 @@ index 2ec4c644..faf3c046 100644 \pnum \ensures -@@ -17904,7 +17904,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} @@ -2392,7 +2311,7 @@ index 2ec4c644..faf3c046 100644 \item Otherwise, the result is \impldef{result of \tcode{filesystem::file_size}}. \end{itemize} -@@ -18286,7 +18286,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 @@ -2402,10 +2321,10 @@ index 2ec4c644..faf3c046 100644 \pnum \throws diff --git a/source/iterators.tex b/source/iterators.tex -index 9e972f19..909e4ed0 100644 +index ed599d97..46edb440 100644 --- a/source/iterators.tex +++ b/source/iterators.tex -@@ -6868,7 +6868,7 @@ ostream_iterator& operator++(int); +@@ -6872,7 +6872,7 @@ ostream_iterator& operator++(int); The class template \tcode{istreambuf_iterator} @@ -2414,7 +2333,7 @@ index 9e972f19..909e4ed0 100644 reads successive \textit{characters} from the streambuf for which it was constructed. -@@ -6993,7 +6993,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} @@ -2422,7 +2341,7 @@ index 9e972f19..909e4ed0 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(istream_type& s) noexcept; -@@ -7005,7 +7004,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} @@ -2430,7 +2349,7 @@ index 9e972f19..909e4ed0 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(streambuf_type* s) noexcept; -@@ -7017,7 +7015,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} @@ -2438,7 +2357,7 @@ index 9e972f19..909e4ed0 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept; -@@ -7168,7 +7165,6 @@ is not a null pointer. +@@ -7172,7 +7169,6 @@ is not a null pointer. Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2447,7 +2366,7 @@ index 9e972f19..909e4ed0 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index 7547b4aa..d662f889 100644 +index ce8aa22a..5e62f101 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2461,7 +2380,7 @@ index 7547b4aa..d662f889 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 -@@ -2289,7 +2289,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}. @@ -2471,7 +2390,7 @@ index 7547b4aa..d662f889 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 abe4ecf3..0b2c55f9 100644 +index 9422f9ea..bc8ce8e8 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2494,7 +2413,7 @@ index abe4ecf3..0b2c55f9 100644 \rSec3[expos.only.entity]{Exposition-only entities, etc.} -@@ -644,7 +644,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 @@ -2503,7 +2422,7 @@ index abe4ecf3..0b2c55f9 100644 \indextext{type!enumerated}% \pnum -@@ -770,7 +770,7 @@ locale. +@@ -777,7 +777,7 @@ locale. \item A \defn{character sequence} @@ -2512,7 +2431,7 @@ index abe4ecf3..0b2c55f9 100644 can be declared as \tcode{\placeholdernc{T\;A}[\placeholder{N}]}, where \tcode{\placeholder{T}} is any of the types -@@ -961,7 +961,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 @@ -2521,7 +2440,7 @@ index abe4ecf3..0b2c55f9 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}. -@@ -1373,10 +1373,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 @@ -2534,7 +2453,7 @@ index abe4ecf3..0b2c55f9 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 -@@ -1694,8 +1694,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 @@ -2545,7 +2464,7 @@ index abe4ecf3..0b2c55f9 100644 \rSec3[using.headers]{Headers} -@@ -1738,7 +1738,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 @@ -2554,7 +2473,7 @@ index abe4ecf3..0b2c55f9 100644 Unless otherwise specified, objects and functions have the default \tcode{extern "C++"} linkage\iref{dcl.link}. -@@ -1772,8 +1772,8 @@ the program prior to program startup. +@@ -1779,8 +1779,8 @@ the program prior to program startup. \indextext{startup!program}% \pnum See also @@ -2565,7 +2484,7 @@ index abe4ecf3..0b2c55f9 100644 \rSec2[utility.requirements]{Requirements on types and expressions} -@@ -1821,7 +1821,7 @@ rvalue of type \tcode{const T}. +@@ -1828,7 +1828,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 @@ -2574,7 +2493,7 @@ index abe4ecf3..0b2c55f9 100644 \begin{oldconcepttable}{EqualityComparable}{}{cpp17.equalitycomparable} {x{1in}x{1in}p{3in}} -@@ -1946,13 +1946,13 @@ evaluated in the context described below, and +@@ -1953,13 +1953,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 @@ -2591,7 +2510,7 @@ index abe4ecf3..0b2c55f9 100644 \end{itemize} \begin{note} If \tcode{T} and \tcode{U} are both fundamental types or arrays of -@@ -2055,8 +2055,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in +@@ -2062,8 +2062,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in \end{note} \pnum @@ -2603,7 +2522,7 @@ index abe4ecf3..0b2c55f9 100644 had been evaluated in place of \tcode{p}. \pnum -@@ -2159,7 +2160,7 @@ as the memory allocation and deallocation primitives for it. All of the +@@ -2166,7 +2167,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 @@ -2612,7 +2531,7 @@ index abe4ecf3..0b2c55f9 100644 allocators. \pnum -@@ -2985,7 +2986,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, +@@ -2992,7 +2993,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 @@ -2621,7 +2540,7 @@ index abe4ecf3..0b2c55f9 100644 other than \tcode{value_type} are complete types. \end{itemize} -@@ -2996,11 +2997,11 @@ whether or not \tcode{T} is a complete type: +@@ -3003,11 +3004,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 @@ -2637,7 +2556,7 @@ index abe4ecf3..0b2c55f9 100644 \rSec3[namespace.constraints]{Namespace use} -@@ -3403,7 +3404,7 @@ are reserved for use by \Cpp{} implementations. +@@ -3418,7 +3419,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 @@ -2646,7 +2565,7 @@ index abe4ecf3..0b2c55f9 100644 the behavior is undefined.% \indextext{source file}% \indextext{undefined} -@@ -3574,7 +3575,7 @@ specified as being shareable without data races or the user supplies a locking m +@@ -3589,7 +3590,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 @@ -2655,7 +2574,7 @@ index abe4ecf3..0b2c55f9 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. -@@ -3640,7 +3641,7 @@ Every such entity shall be defined such that any header that defines it may be +@@ -3655,7 +3656,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 @@ -2664,7 +2583,7 @@ index abe4ecf3..0b2c55f9 100644 shall include only their corresponding \Cpp{} standard library header, as described in~\ref{headers}. -@@ -3668,7 +3669,7 @@ explicitly stated otherwise. +@@ -3683,7 +3684,7 @@ explicitly stated otherwise. It is unspecified whether any non-member functions in the \Cpp{} standard library are defined as @@ -2673,7 +2592,7 @@ index abe4ecf3..0b2c55f9 100644 \pnum A call to a non-member function signature -@@ -3696,7 +3697,7 @@ The phrase ``unless otherwise specified'' applies to cases such as +@@ -3711,7 +3712,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 @@ -2682,7 +2601,7 @@ index abe4ecf3..0b2c55f9 100644 \effects \begin{codeblock} -@@ -3711,7 +3712,7 @@ return *this; +@@ -3726,7 +3727,7 @@ return *this; \pnum It is unspecified whether any member functions in the \Cpp{} standard library are defined as @@ -2691,7 +2610,7 @@ index abe4ecf3..0b2c55f9 100644 \pnum For a non-virtual member function described in the \Cpp{} standard library, -@@ -3790,8 +3791,8 @@ library may be recursively reentered. +@@ -3815,8 +3816,8 @@ the behavior is undefined unless otherwise specified. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -2702,7 +2621,7 @@ index abe4ecf3..0b2c55f9 100644 Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. -@@ -3834,7 +3835,7 @@ not visible to users and are protected against data races. +@@ -3859,7 +3860,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 @@ -2711,7 +2630,7 @@ index abe4ecf3..0b2c55f9 100644 \pnum \begin{note} -@@ -3949,7 +3950,7 @@ potentially-throwing exception specification} exceptions. +@@ -3974,7 +3975,7 @@ potentially-throwing exception specification} exceptions. \begin{footnote} In particular, they can report a failure to allocate storage by throwing an exception of type @@ -2734,7 +2653,7 @@ index e0596a32..877f21f3 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index 31a2e217..214757e4 100644 +index f127499a..0fef1e5d 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -2748,32 +2667,28 @@ index 31a2e217..214757e4 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} -@@ -1566,21 +1566,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} -@@ -1704,7 +1704,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} @@ -2782,7 +2697,7 @@ index 31a2e217..214757e4 100644 of at least 32 bits. & \\ \rowsep -@@ -1869,7 +1869,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 @@ -2791,7 +2706,7 @@ index 31a2e217..214757e4 100644 also meets the requirements of a \term{random number engine} if the expressions shown -@@ -1890,7 +1890,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 @@ -2800,7 +2715,7 @@ index 31a2e217..214757e4 100644 \item \tcode{z} is a value of type \tcode{unsigned long long}; -@@ -2324,7 +2324,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 @@ -2809,7 +2724,7 @@ index 31a2e217..214757e4 100644 \item \tcode{os} is an lvalue of the type of some class template specialization \tcode{basic_ostream}; -@@ -2356,7 +2356,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} @@ -2818,7 +2733,7 @@ index 31a2e217..214757e4 100644 & \\ \rowsep \tcode{D::param_type} -@@ -2598,7 +2598,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 @@ -2827,7 +2742,7 @@ index 31a2e217..214757e4 100644 \pnum Except where specified otherwise, -@@ -3396,7 +3396,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 @@ -2836,7 +2751,7 @@ index 31a2e217..214757e4 100644 \pnum Except where specified otherwise, -@@ -4490,7 +4490,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 @@ -2845,7 +2760,7 @@ index 31a2e217..214757e4 100644 \pnum Descriptions are provided in \ref{rand.dist} -@@ -5344,6 +5344,7 @@ p(x\,|\,\alpha,\beta) = +@@ -5342,6 +5342,7 @@ p(x\,|\,\alpha,\beta) = \indexlibraryglobal{gamma_distribution}% \indexlibrarymember{result_type}{gamma_distribution}% @@ -2853,7 +2768,7 @@ index 31a2e217..214757e4 100644 \begin{codeblock} namespace std { template -@@ -5387,7 +5388,6 @@ namespace std { +@@ -5385,7 +5386,6 @@ namespace std { } \end{codeblock} @@ -2861,7 +2776,7 @@ index 31a2e217..214757e4 100644 \indexlibraryctor{gamma_distribution}% \begin{itemdecl} explicit gamma_distribution(RealType alpha, RealType beta = 1.0); -@@ -5494,7 +5494,7 @@ namespace std { +@@ -5492,7 +5492,7 @@ namespace std { \indexlibraryctor{weibull_distribution}% \begin{itemdecl} explicit weibull_distribution(RealType a, RealType b = 1.0); @@ -2870,7 +2785,7 @@ index 31a2e217..214757e4 100644 \begin{itemdescr} \pnum -@@ -5604,7 +5604,6 @@ namespace std { +@@ -5602,7 +5602,6 @@ namespace std { } \end{codeblock} @@ -2878,7 +2793,7 @@ index 31a2e217..214757e4 100644 \indexlibraryctor{extreme_value_distribution}% \begin{itemdecl} explicit extreme_value_distribution(RealType a, RealType b = 1.0); -@@ -5728,7 +5727,6 @@ namespace std { +@@ -5726,7 +5725,6 @@ namespace std { } \end{codeblock} @@ -2886,7 +2801,7 @@ index 31a2e217..214757e4 100644 \indexlibraryctor{normal_distribution}% \begin{itemdecl} explicit normal_distribution(RealType mean, RealType stddev = 1.0); -@@ -5932,7 +5930,6 @@ namespace std { +@@ -5930,7 +5928,6 @@ namespace std { } \end{codeblock} @@ -2894,7 +2809,7 @@ index 31a2e217..214757e4 100644 \indexlibraryctor{chi_squared_distribution}% \begin{itemdecl} explicit chi_squared_distribution(RealType n); -@@ -6126,7 +6123,6 @@ namespace std { +@@ -6124,7 +6121,6 @@ namespace std { } \end{codeblock} @@ -2902,7 +2817,7 @@ index 31a2e217..214757e4 100644 \indexlibraryctor{fisher_f_distribution}% \begin{itemdecl} explicit fisher_f_distribution(RealType m, RealType n = 1); -@@ -6229,7 +6225,6 @@ namespace std { +@@ -6227,7 +6223,6 @@ namespace std { } \end{codeblock} @@ -2910,7 +2825,7 @@ index 31a2e217..214757e4 100644 \indexlibraryctor{student_t_distribution}% \begin{itemdecl} explicit student_t_distribution(RealType n); -@@ -6345,7 +6340,7 @@ namespace std { +@@ -6343,7 +6338,7 @@ namespace std { } \end{codeblock} @@ -2919,7 +2834,7 @@ index 31a2e217..214757e4 100644 \begin{itemdecl} discrete_distribution(); \end{itemdecl} -@@ -7196,7 +7191,7 @@ objects. +@@ -7194,7 +7189,7 @@ objects. \pnum These library functions are permitted to throw a @@ -2928,7 +2843,7 @@ index 31a2e217..214757e4 100644 to carry out the operation. Note that the exception is not mandated. -@@ -7364,7 +7359,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}. @@ -2937,7 +2852,7 @@ index 31a2e217..214757e4 100644 \end{itemdescr} \indexlibraryctor{valarray}% -@@ -7624,7 +7619,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 @@ -2946,7 +2861,7 @@ index 31a2e217..214757e4 100644 that array ends, whichever happens first. \end{itemdescr} -@@ -8050,7 +8045,7 @@ places, with zero fill. +@@ -8048,7 +8043,7 @@ places, with zero fill. \pnum \begin{example} If the argument has the value $-2$, @@ -2955,7 +2870,7 @@ index 31a2e217..214757e4 100644 of the first element of \tcode{*this}; etc. \end{example} \end{itemdescr} -@@ -9175,7 +9170,7 @@ parameter \tcode{T} and its \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 @@ -2964,7 +2879,7 @@ index 31a2e217..214757e4 100644 array or until the lifetime of that array ends, whichever happens first. -@@ -9816,12 +9811,12 @@ The contents and meaning of the header \libheader{cmath} +@@ -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 @@ -2980,7 +2895,7 @@ index 31a2e217..214757e4 100644 \end{note} \pnum -@@ -9885,7 +9880,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} @@ -2990,7 +2905,7 @@ index 31a2e217..214757e4 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 fe6c4d08..9533e291 100644 +index 52883f84..d3250f2d 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -74,7 +74,7 @@ Overload resolution selects the function to call in seven distinct @@ -3077,7 +2992,7 @@ index fe6c4d08..9533e291 100644 overload resolution selects the constructor. For direct-initialization or default-initialization (including default-initialization in the context of copy-list-initialization), -@@ -1801,7 +1801,7 @@ Third, for +@@ -1836,7 +1836,7 @@ Third, for \tcode{F} to be a viable function, there shall exist for each argument an @@ -3086,7 +3001,7 @@ index fe6c4d08..9533e291 100644 converts that argument to the corresponding parameter of \tcode{F}. If the parameter has reference type, the implicit conversion sequence -@@ -1865,8 +1865,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, @@ -3097,7 +3012,7 @@ index fe6c4d08..9533e291 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} -@@ -1996,7 +1996,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 @@ -3106,7 +3021,7 @@ index fe6c4d08..9533e291 100644 and $\tcode{F}_2$ is not, or, if not that, \item -@@ -2122,7 +2122,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, @@ -3115,7 +3030,7 @@ index fe6c4d08..9533e291 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 -@@ -2135,11 +2135,11 @@ well-formed implicit conversion +@@ -2170,11 +2170,11 @@ well-formed implicit conversion sequence is one of the following forms: \begin{itemize} \item @@ -3130,7 +3045,7 @@ index fe6c4d08..9533e291 100644 \end{itemize} \pnum -@@ -2317,10 +2317,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 @@ -3144,7 +3059,7 @@ index fe6c4d08..9533e291 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 -@@ -2357,7 +2357,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 @@ -3153,7 +3068,7 @@ index fe6c4d08..9533e291 100644 initial standard conversion sequence converts the source type to the type of the object parameter of that conversion function. -@@ -2493,7 +2493,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 @@ -3162,7 +3077,7 @@ index fe6c4d08..9533e291 100644 expression and special rules apply for converting it to a parameter type. \pnum -@@ -2735,13 +2735,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 @@ -3180,7 +3095,7 @@ index fe6c4d08..9533e291 100644 \end{itemize} \pnum -@@ -3168,7 +3168,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 @@ -3189,7 +3104,7 @@ index fe6c4d08..9533e291 100644 \item the return value of a function, operator function, or conversion\iref{stmt.return}, \item -@@ -3368,8 +3368,8 @@ The operators +@@ -3403,8 +3403,8 @@ The operators and \tcode{[]} are formed from more than one token. @@ -3200,7 +3115,7 @@ index fe6c4d08..9533e291 100644 \end{note} \indextext{operator!subscripting}% \indextext{operator!function call}% -@@ -3465,7 +3465,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}% @@ -3209,7 +3124,7 @@ index fe6c4d08..9533e291 100644 except where explicitly stated below. Operator functions cannot have more or fewer parameters than the -@@ -3810,7 +3810,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 @@ -3219,19 +3134,10 @@ index fe6c4d08..9533e291 100644 and \tcode{long} diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index f8bd9728..6624a7f2 100644 +index 0bfb7f19..b3cf7fc7 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex -@@ -512,7 +512,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 -@@ -566,8 +566,8 @@ are replaced with the \grammarterm{pp-number} +@@ -551,8 +551,8 @@ are replaced with the \grammarterm{pp-number} \tcode{0}, and then each preprocessing token is converted into a token. \begin{note} @@ -3242,7 +3148,7 @@ index f8bd9728..6624a7f2 100644 even when its spelling consists entirely of letters and underscores. Therefore it is not subject to this replacement. \end{note} -@@ -585,8 +585,8 @@ Thus on an +@@ -570,8 +570,8 @@ Thus on an implementation where \tcode{std::numeric_limits::max()} is \tcode{0x7FFF} and \tcode{std::numeric_limits::max()} is \tcode{0xFFFF}, the integer literal \tcode{0x8000} is signed and positive within a \tcode{\#if} @@ -3253,7 +3159,7 @@ index f8bd9728..6624a7f2 100644 \end{note} This includes interpreting \grammarterm{character-literal}s according to the rules in \ref{lex.ccon}. -@@ -2085,7 +2085,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 @@ -3262,7 +3168,7 @@ index f8bd9728..6624a7f2 100644 while processing the source file to the current preprocessing token. \pnum -@@ -2447,7 +2447,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 \tcode{1}, if and only if a program @@ -3272,10 +3178,10 @@ index f8bd9728..6624a7f2 100644 \end{description} diff --git a/source/statements.tex b/source/statements.tex -index 9163c191..852e314d 100644 +index fa6944b1..301d6304 100644 --- a/source/statements.tex +++ b/source/statements.tex -@@ -219,7 +219,7 @@ Expression statements have the form +@@ -224,7 +224,7 @@ Expression statements have the form \end{bnf} The expression is @@ -3284,7 +3190,7 @@ index 9163c191..852e314d 100644 All \indextext{side effects}% side effects from an expression statement -@@ -448,10 +448,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 @@ -3298,16 +3204,16 @@ index 9163c191..852e314d 100644 to the promoted type. Any statement within the \keyword{switch} statement can be labeled with one or -@@ -461,7 +461,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.const} of the -+a \deflinkx{converted constant expression}{expression!converted constant}{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. -@@ -547,7 +547,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 @@ -3316,7 +3222,7 @@ index 9163c191..852e314d 100644 through the loop. If the substatement in an \grammarterm{iteration-statement} is a single statement and not a \grammarterm{compound-statement}, -@@ -646,7 +646,7 @@ fails. +@@ -650,7 +650,7 @@ fails. \indextext{statement!\idxcode{do}} \pnum @@ -3325,7 +3231,7 @@ index 9163c191..852e314d 100644 if that conversion is ill-formed, the program is ill-formed. \pnum -@@ -1019,8 +1019,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} @@ -3336,7 +3242,7 @@ index 9163c191..852e314d 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 -@@ -1089,7 +1089,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 @@ -3345,7 +3251,7 @@ index 9163c191..852e314d 100644 \begin{note} A constructor or destructor does not have a return type. \end{note} -@@ -1226,7 +1226,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}% @@ -3354,7 +3260,7 @@ index 9163c191..852e314d 100644 \rSec1[stmt.contract.assert]{Assertion statement} -@@ -1337,8 +1337,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 @@ -3365,7 +3271,7 @@ index 9163c191..852e314d 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 -@@ -1381,8 +1381,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 @@ -3377,10 +3283,10 @@ index 9163c191..852e314d 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 3bc1e026..749c23d9 100644 +index b8619c9b..e9c20ec8 100644 --- a/source/strings.tex +++ b/source/strings.tex -@@ -5533,13 +5533,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 @@ -3397,7 +3303,7 @@ index 3bc1e026..749c23d9 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. -@@ -5551,7 +5551,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, @@ -3407,7 +3313,7 @@ index 3bc1e026..749c23d9 100644 \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index 203a1bf4..b0c75171 100644 +index e86cf147..0dd4cd06 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3515,7 +3421,7 @@ index 203a1bf4..b0c75171 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 -@@ -1103,7 +1090,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 @@ -3524,7 +3430,7 @@ index 203a1bf4..b0c75171 100644 \rSec3[numeric.limits.members]{\tcode{numeric_limits} members} -@@ -2107,7 +2094,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}}% @@ -3533,7 +3439,7 @@ index 203a1bf4..b0c75171 100644 \end{itemdescr} \indexlibraryglobal{abort}% -@@ -2127,7 +2114,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}}% @@ -3542,7 +3448,7 @@ index 203a1bf4..b0c75171 100644 \end{itemdescr} \indexlibraryglobal{atexit}% -@@ -2144,7 +2131,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 @@ -3552,7 +3458,7 @@ index 203a1bf4..b0c75171 100644 \begin{note} The \tcode{atexit()} functions do not introduce a data race\iref{res.on.data.races}. -@@ -2238,7 +2226,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 @@ -3562,7 +3468,7 @@ index 203a1bf4..b0c75171 100644 \begin{note} The \tcode{at_quick_exit()} functions do not introduce a -@@ -2290,7 +2279,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}}% @@ -3571,7 +3477,7 @@ index 203a1bf4..b0c75171 100644 when the functions registered with \tcode{at_quick_exit} are. \end{itemdescr} -@@ -2417,7 +2406,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 @@ -3580,7 +3486,7 @@ index 203a1bf4..b0c75171 100644 called by a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -2453,7 +2442,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 @@ -3589,7 +3495,7 @@ index 203a1bf4..b0c75171 100644 If the called function returns, the loop repeats. \item The loop terminates when an attempt to allocate the requested storage is -@@ -2675,7 +2664,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 @@ -3598,7 +3504,7 @@ index 203a1bf4..b0c75171 100644 called by the array form of a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -2988,8 +2977,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 @@ -3609,18 +3515,7 @@ index 203a1bf4..b0c75171 100644 \rSec2[alloc.errors]{Storage allocation errors} -@@ -3143,8 +3132,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 -@@ -3357,7 +3346,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 @@ -3630,7 +3525,7 @@ index 203a1bf4..b0c75171 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. \end{itemdescr} -@@ -3934,7 +3924,8 @@ the ordinary literal encoding\iref{lex.ccon}. +@@ -3946,7 +3936,8 @@ the ordinary literal encoding\iref{lex.ccon}. \pnum \remarks @@ -3640,7 +3535,7 @@ index 203a1bf4..b0c75171 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 -@@ -4085,7 +4076,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 @@ -3649,7 +3544,7 @@ index 203a1bf4..b0c75171 100644 \end{itemdescr} \rSec2[propagation]{Exception propagation} -@@ -4148,8 +4139,9 @@ constexpr exception_ptr current_exception() noexcept; +@@ -4161,8 +4152,9 @@ exception_ptr current_exception() noexcept; \begin{itemdescr} \pnum \returns @@ -3661,7 +3556,7 @@ index 203a1bf4..b0c75171 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. -@@ -4739,7 +4731,7 @@ constexpr bool empty() const 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 @@ -3670,7 +3565,7 @@ index 203a1bf4..b0c75171 100644 \indexlibraryglobal{is_eq}% \indexlibraryglobal{is_neq}% -@@ -6329,7 +6321,7 @@ environment. +@@ -6342,7 +6334,7 @@ environment. \end{note} \pnum @@ -3680,10 +3575,10 @@ index 203a1bf4..b0c75171 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 467b190a..cf9f5e15 100644 +index b5c2e933..5f70947b 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -713,7 +713,7 @@ struct A {}; +@@ -716,7 +716,7 @@ struct A {}; \rSec1[temp.names]{Names of template specializations} \pnum @@ -3692,7 +3587,7 @@ index 467b190a..cf9f5e15 100644 \grammarterm{template-id}: \begin{bnf} -@@ -1052,8 +1052,8 @@ in a \grammarterm{splice-specialization-specifier} +@@ -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}. @@ -3703,7 +3598,7 @@ index 467b190a..cf9f5e15 100644 \grammarterm{template-argument}{s}. \begin{example} \begin{codeblock} -@@ -1244,7 +1244,7 @@ When a \grammarterm{simple-template-id} or +@@ -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 @@ -3712,7 +3607,7 @@ index 467b190a..cf9f5e15 100644 when the value of that default argument is needed. \begin{example} \begin{codeblock} -@@ -1256,7 +1256,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} -@@ -1813,9 +1813,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} @@ -3772,7 +3667,7 @@ index 467b190a..cf9f5e15 100644 \end{note} \pnum -@@ -1892,7 +1892,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. @@ -3781,7 +3676,7 @@ index 467b190a..cf9f5e15 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} -@@ -2054,11 +2054,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}, @@ -3796,7 +3691,7 @@ index 467b190a..cf9f5e15 100644 following order: \begin{itemize} \item -@@ -2155,7 +2155,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 @@ -3805,7 +3700,7 @@ index 467b190a..cf9f5e15 100644 % \begin{itemize} \item -@@ -2164,7 +2164,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 @@ -3814,7 +3709,7 @@ index 467b190a..cf9f5e15 100644 the normal forms of \tcode{E1} and \tcode{E2}. \item -@@ -2412,7 +2412,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} @@ -3823,7 +3718,7 @@ index 467b190a..cf9f5e15 100644 % The constraint $A \land B$ subsumes $A$, but $A$ does not subsume $A \land B$. % -@@ -2632,7 +2632,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 @@ -3832,18 +3727,7 @@ index 467b190a..cf9f5e15 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 -@@ -2702,8 +2702,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. - For the purpose of name lookup and instantiation, - the \grammarterm{compound-statement} of an \grammarterm{expansion-statement} - is considered a template definition. -@@ -3060,7 +3060,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. @@ -3852,7 +3736,7 @@ index 467b190a..cf9f5e15 100644 apply to member template names. A destructor shall not be a member template. -@@ -3287,7 +3287,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. @@ -3861,7 +3745,7 @@ index 467b190a..cf9f5e15 100644 \grammarterm{identifier}. \item In a \grammarterm{pack-index-expression}; -@@ -3910,9 +3910,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 @@ -3874,7 +3758,7 @@ index 467b190a..cf9f5e15 100644 \begin{example} \begin{codeblock} template class A { }; // \#1 -@@ -3974,14 +3974,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 @@ -3892,7 +3776,7 @@ index 467b190a..cf9f5e15 100644 as the corresponding partial specialization. \item Each function template -@@ -4187,8 +4187,8 @@ void h(int* p) { +@@ -4191,8 +4191,8 @@ void h(int* p) { \end{example} \pnum @@ -3903,7 +3787,7 @@ index 467b190a..cf9f5e15 100644 \pnum The signature of a function template -@@ -4239,7 +4239,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 @@ -3912,9 +3796,9 @@ index 467b190a..cf9f5e15 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. -@@ -4409,8 +4409,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 @@ -3923,7 +3807,7 @@ index 467b190a..cf9f5e15 100644 a function template specialization. \end{itemize} -@@ -4803,7 +4803,7 @@ A \grammarterm{concept-definition} +@@ -4807,7 +4807,7 @@ A \grammarterm{concept-definition} shall inhabit a namespace scope\iref{basic.scope.namespace}. \pnum @@ -3932,16 +3816,7 @@ index 467b190a..cf9f5e15 100644 \pnum A concept is not instantiated\iref{temp.spec}. -@@ -5130,7 +5130,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.core} within the template -+\item \link{constant expression evaluation}{expr.const.core} within the template - instantiation uses - \begin{itemize} - \item the value of a const object of integral or unscoped enumeration type or -@@ -5383,7 +5383,7 @@ any of the expressions +@@ -5387,7 +5387,7 @@ any of the expressions or \grammarterm{braced-init-list}{s} in the \grammarterm{expression-list} @@ -3950,7 +3825,7 @@ index 467b190a..cf9f5e15 100644 \item the \grammarterm{unqualified-id} is a \grammarterm{template-id} in which any of the template arguments depends -@@ -5443,7 +5443,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, @@ -3959,7 +3834,7 @@ index 467b190a..cf9f5e15 100644 \item in the definition of a primary class template or a member of a primary class template, the name of the -@@ -5722,7 +5722,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}, \item denoted by \tcode{decltype(}\grammarterm{expression}{}\tcode{)}, @@ -3968,7 +3843,7 @@ index 467b190a..cf9f5e15 100644 \item denoted by a \grammarterm{splice-type-specifier} in which either the \grammarterm{splice-specifier} or \grammarterm{splice-specialization-specifier} -@@ -5874,7 +5874,7 @@ see~\ref{support.types}. +@@ -5880,7 +5880,7 @@ see~\ref{support.types}. \end{note} \pnum @@ -3977,16 +3852,7 @@ index 467b190a..cf9f5e15 100644 type-dependent if \begin{itemize} \item -@@ -6022,7 +6022,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.core} succeeds and -+as a \deflinkx{core constant expression}{expression!core constant}{expr.const.core} 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. - -@@ -6253,7 +6253,7 @@ within a translation unit. +@@ -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 @@ -3995,7 +3861,7 @@ index 467b190a..cf9f5e15 100644 the program is ill-formed, no diagnostic required. \pnum -@@ -6564,7 +6564,7 @@ of type +@@ -6571,7 +6571,7 @@ of type \pnum If a function declaration acquired its function type through @@ -4004,16 +3870,7 @@ index 467b190a..cf9f5e15 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -6645,7 +6645,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 -@@ -6823,7 +6823,7 @@ void x() { +@@ -6808,7 +6808,7 @@ void x() { \end{example} \pnum @@ -4022,7 +3879,7 @@ index 467b190a..cf9f5e15 100644 can be determined without instantiating a class template definition, it is unspecified whether that instantiation actually takes place. \begin{example} -@@ -7160,7 +7160,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 @@ -4031,7 +3888,7 @@ index 467b190a..cf9f5e15 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. -@@ -8225,7 +8225,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, @@ -4040,7 +3897,7 @@ index 467b190a..cf9f5e15 100644 would be required to convert the \grammarterm{template-argument} of type \tcode{int} to \tcode{signed char}, -@@ -8334,8 +8334,8 @@ is not a reference type: +@@ -8359,8 +8359,8 @@ is not a reference type: \item If \tcode{A} @@ -4051,7 +3908,7 @@ index 467b190a..cf9f5e15 100644 \tcode{A} for type deduction; otherwise, -@@ -8343,7 +8343,7 @@ otherwise, +@@ -8368,7 +8368,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -4060,7 +3917,7 @@ index 467b190a..cf9f5e15 100644 of \tcode{A} for type -@@ -8439,8 +8439,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} @@ -4071,7 +3928,7 @@ index 467b190a..cf9f5e15 100644 \item If -@@ -8573,7 +8573,7 @@ void test() { +@@ -8598,7 +8598,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -4080,7 +3937,7 @@ index 467b190a..cf9f5e15 100644 If there is a target, the function template's function type and the target type are used as the types of -@@ -8620,7 +8620,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 @@ -4089,7 +3946,7 @@ index 467b190a..cf9f5e15 100644 \tcode{P} for type deduction; otherwise, -@@ -8628,7 +8628,7 @@ deduction; otherwise, +@@ -8653,7 +8653,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -4098,7 +3955,7 @@ index 467b190a..cf9f5e15 100644 \tcode{P} for type deduction; otherwise, -@@ -8719,7 +8719,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 @@ -4107,7 +3964,7 @@ index 467b190a..cf9f5e15 100644 type is used. \end{itemize} -@@ -9235,7 +9235,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$. @@ -4116,7 +3973,7 @@ index 467b190a..cf9f5e15 100644 originally a pack expansion: \begin{itemize} \item if \tcode{P} does not contain a template argument corresponding to -@@ -9298,7 +9298,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. @@ -4125,7 +3982,7 @@ index 467b190a..cf9f5e15 100644 originally a function parameter pack: \begin{itemize} \item if \tcode{P} does not contain a function parameter type corresponding to -@@ -9636,8 +9636,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 @@ -4134,10 +3991,10 @@ index 467b190a..cf9f5e15 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 bfd73672..9d7efb72 100644 +index 679b2960..363ff13c 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4149,18 +4006,7 @@ index bfd73672..9d7efb72 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 a --specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes a value --of a specialization of \tcode{time_point}\iref{time.point}). -+specialization of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes a value -+of a specialization of \link{\tcode{time_point}}{time.point}). - - \begin{itemdecl} - m.try_lock_for(rel_time) -@@ -7287,7 +7287,7 @@ namespace std { +@@ -7309,7 +7309,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -4169,7 +4015,7 @@ index bfd73672..9d7efb72 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 -@@ -7331,7 +7331,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on +@@ -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 @@ -4178,7 +4024,7 @@ index bfd73672..9d7efb72 100644 mutex. \end{note} \begin{note} -@@ -7411,7 +7411,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 @@ -4187,7 +4033,7 @@ index bfd73672..9d7efb72 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 -@@ -7447,7 +7447,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 @@ -4196,19 +4042,7 @@ index bfd73672..9d7efb72 100644 lock operations that obtain ownership on the same object. \pnum -@@ -7576,9 +7576,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 a --specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes an -+specialization of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes an - object of a --specialization of \tcode{time_point}\iref{time.point}. -+specialization of \link{\tcode{time_point}}{time.point}. - \begin{note} - The timed mutex types meet the \oldconcept{TimedLockable} - requirements\iref{thread.req.lockable.timed}. -@@ -7868,7 +7868,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 @@ -4217,34 +4051,25 @@ index bfd73672..9d7efb72 100644 \tcode{lock()} operations that obtain ownership on the same object. \pnum -@@ -7972,7 +7972,7 @@ meet the requirements set out below. In this description, - \tcode{rel_time} denotes an object of a specialization of - \tcode{duration}\iref{time.duration}, and - \tcode{abs_time} denotes an object of a specialization 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}. -@@ -8183,7 +8183,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} -@@ -8256,7 +8256,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. -@@ -9413,7 +9413,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 @@ -4253,7 +4078,7 @@ index bfd73672..9d7efb72 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -11379,22 +11379,21 @@ the state object. +@@ -11410,22 +11410,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4280,7 +4105,7 @@ index bfd73672..9d7efb72 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 -@@ -11713,8 +11712,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 @@ -4291,7 +4116,7 @@ index bfd73672..9d7efb72 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -12024,7 +12023,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 @@ -4300,7 +4125,7 @@ index bfd73672..9d7efb72 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -12473,7 +12472,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 @@ -4310,7 +4135,7 @@ index bfd73672..9d7efb72 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 fa46de5b..ce39bdde 100644 +index a29b08ed..b4d55717 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1216,7 +1216,7 @@ unless it meets all of the following conditions: @@ -4322,7 +4147,7 @@ index fa46de5b..ce39bdde 100644 \item the expression \tcode{T::now()} is well-formed when treated as an unevaluated operand. -@@ -11089,7 +11089,7 @@ The expression +@@ -11098,7 +11098,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp) \end{codeblock} @@ -4331,7 +4156,7 @@ index fa46de5b..ce39bdde 100644 \pnum \returns -@@ -11122,7 +11122,7 @@ The expression +@@ -11131,7 +11131,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp, addressof(abbrev)) \end{codeblock} @@ -4340,7 +4165,7 @@ index fa46de5b..ce39bdde 100644 \pnum \returns -@@ -11159,7 +11159,7 @@ from_stream(declval&>(), +@@ -11168,7 +11168,7 @@ from_stream(declval&>(), declval*>(), &offset) \end{codeblock} @@ -4349,7 +4174,7 @@ index fa46de5b..ce39bdde 100644 \pnum \returns -@@ -11199,7 +11199,7 @@ The expression +@@ -11208,7 +11208,7 @@ The expression from_stream(declval&>(), @$F$@, tp, addressof(abbrev), &offset) \end{codeblock} @@ -4359,10 +4184,10 @@ index fa46de5b..ce39bdde 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index 09be66f7..6011601f 100644 +index a284b4f1..f8e08fe3 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 @@ -4381,7 +4206,7 @@ index 09be66f7..6011601f 100644 // \ref{intseq.binding}, structured binding support template struct tuple_size; -@@ -345,7 +345,7 @@ of forwarding functions. +@@ -352,7 +352,7 @@ of forwarding functions. \indextext{signal-safe!\idxcode{forward}}% \indextext{signal-safe!\idxcode{move}}% \indextext{signal-safe!\idxcode{move_if_noexcept}}% @@ -4390,7 +4215,7 @@ index 09be66f7..6011601f 100644 \indexlibraryglobal{forward}% \indextext{\idxcode{forward}}% -@@ -520,7 +520,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 @@ -4399,7 +4224,7 @@ index 09be66f7..6011601f 100644 \indexlibraryglobal{declval}% \begin{itemdecl} -@@ -1511,7 +1511,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 @@ -4408,7 +4233,7 @@ index 09be66f7..6011601f 100644 for piecewise construction of the elements of the \tcode{pair} object. \rSec1[tuple]{Tuples} -@@ -2161,7 +2161,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 @@ -4417,7 +4242,7 @@ index 09be66f7..6011601f 100644 \end{itemdescr} \rSec3[tuple.assign]{Assignment} -@@ -2819,7 +2819,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 @@ -4426,7 +4251,7 @@ index 09be66f7..6011601f 100644 each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts} with a base characteristic of \begin{codeblock} -@@ -7038,6 +7038,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}% @@ -4434,7 +4259,7 @@ index 09be66f7..6011601f 100644 \begin{itemdecl} struct monostate{}; \end{itemdecl} -@@ -7209,7 +7210,8 @@ namespace std { +@@ -7527,7 +7528,8 @@ namespace std { \end{codeblock} \pnum @@ -4448,7 +4273,7 @@ index 09be66f7..6011601f 100644 2.43.0 -From 115ef5611b4abe79f578693147f942a12cd0052d Mon Sep 17 00:00:00 2001 +From 60cd2c71f1c5afd5823cd7cd854ff6631771cabb Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove @@ -4460,7 +4285,7 @@ Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index faf3c046..8bc8a19a 100644 +index aff85000..4cf63702 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -13922,7 +13922,7 @@ without an intervening \grammarterm{root-directory} element. @@ -4473,10 +4298,10 @@ index faf3c046..8bc8a19a 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index cf9f5e15..3e0fd2ed 100644 +index 5f70947b..5b4f6ad6 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -2151,7 +2151,6 @@ so it does match \#2. +@@ -2154,7 +2154,6 @@ so it does match \#2. \end{example} \rSec2[temp.constr.normal]{Constraint normalization} @@ -4484,7 +4309,7 @@ index cf9f5e15..3e0fd2ed 100644 \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is -@@ -2270,10 +2269,11 @@ whose parameter mapping is the identity mapping. +@@ -2273,10 +2272,11 @@ whose parameter mapping is the identity mapping. \end{itemize} \pnum @@ -4501,7 +4326,7 @@ index cf9f5e15..3e0fd2ed 100644 2.43.0 -From e4700dbefbdcdad61bf0c3e303d6b2a7f2391ce2 Mon Sep 17 00:00:00 2001 +From b3979fdc7f9e5993e9c6d9c0d9247321fe537de1 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code @@ -4514,7 +4339,7 @@ Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code 3 files changed, 351 insertions(+), 351 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex -index a9fd6f69..d3b0f3e3 100644 +index b01c7719..76071483 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -135,11 +135,11 @@ does not declare a variable. @@ -4532,10 +4357,10 @@ index a9fd6f69..d3b0f3e3 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index d662f889..1b8befd1 100644 +index 5e62f101..cf26fce7 100644 --- a/source/lex.tex +++ b/source/lex.tex -@@ -333,43 +333,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 \\ @@ -4616,7 +4441,7 @@ index d662f889..1b8befd1 100644 \end{floattable} \pnum -@@ -608,7 +608,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 @@ -4625,7 +4450,7 @@ index d662f889..1b8befd1 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 -@@ -616,7 +616,7 @@ is applied 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} @@ -4634,7 +4459,7 @@ index d662f889..1b8befd1 100644 \end{ncbnf} \item Otherwise, if the next three characters are \tcode{<::} and the subsequent character -@@ -751,15 +751,15 @@ depending on the implementation. +@@ -755,15 +755,15 @@ depending on the implementation. \begin{bnf} \nontermdef{pp-number}\br digit\br @@ -4658,7 +4483,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \pnum -@@ -1172,19 +1172,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 @@ -4681,7 +4506,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \begin{bnf} -@@ -1215,14 +1215,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 @@ -4700,7 +4525,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \begin{bnf} -@@ -1237,17 +1237,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 @@ -4721,7 +4546,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \begin{bnf} -@@ -1286,7 +1286,7 @@ when determining the value. +@@ -1303,7 +1303,7 @@ when determining the value. \pnum The \grammarterm{hexadecimal-digit}s @@ -4730,7 +4555,7 @@ index d662f889..1b8befd1 100644 have decimal values ten through fifteen. \begin{example} The number twelve can be written \tcode{12}, \tcode{014}, -@@ -1330,7 +1330,7 @@ none & +@@ -1347,7 +1347,7 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4739,7 +4564,7 @@ index d662f889..1b8befd1 100644 \tcode{unsigned int} & \tcode{unsigned int}\\ & -@@ -1339,7 +1339,7 @@ none & +@@ -1356,7 +1356,7 @@ none & & \tcode{unsigned long long int} & \tcode{unsigned long long int}\\\hline @@ -4748,7 +4573,7 @@ index d662f889..1b8befd1 100644 \tcode{long int} & \tcode{long int}\\ & -@@ -1351,22 +1351,22 @@ none & +@@ -1368,22 +1368,22 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4776,7 +4601,7 @@ index d662f889..1b8befd1 100644 & \\\hline \tcode{z} or \tcode{Z} & -@@ -1414,12 +1414,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 @@ -4791,7 +4616,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \begin{bnf} -@@ -1449,12 +1449,12 @@ 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 @@ -4806,7 +4631,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \begin{bnf} -@@ -1470,21 +1470,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1487,21 +1487,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{octal-escape-sequence}\br @@ -4835,7 +4660,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \begin{bnf} -@@ -1667,42 +1667,42 @@ is supported for compatibility with \CppXIV{} and C. +@@ -1684,42 +1684,42 @@ is supported for compatibility with \CppXIV{} and C. \begin{bnf} \nontermdef{fractional-constant}\br @@ -4889,7 +4714,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \pnum -@@ -1788,7 +1788,7 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1814,7 +1814,7 @@ std::float32_t z = 1e1000000000f32; // either greatest finite value or positive \begin{bnf} \nontermdef{string-literal}\br \opt{encoding-prefix} plain-string-literal\br @@ -4898,7 +4723,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \begin{bnf} -@@ -1816,7 +1816,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 @@ -4907,7 +4732,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \begin{bnf} -@@ -1902,7 +1902,7 @@ UTF-32 & +@@ -1928,7 +1928,7 @@ UTF-32 & \pnum \indextext{literal!string!raw}% @@ -4917,10 +4742,10 @@ index d662f889..1b8befd1 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 ce39bdde..cc24c1c9 100644 +index b4d55717..62226224 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -2198,7 +2198,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. @@ -4929,7 +4754,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -2790,9 +2790,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. @@ -4941,7 +4766,7 @@ index ce39bdde..cc24c1c9 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 -@@ -2983,9 +2983,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. @@ -4953,7 +4778,7 @@ index ce39bdde..cc24c1c9 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 -@@ -3182,9 +3182,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. @@ -4965,7 +4790,7 @@ index ce39bdde..cc24c1c9 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}. -@@ -3345,9 +3345,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. @@ -4977,7 +4802,7 @@ index ce39bdde..cc24c1c9 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}. -@@ -3452,9 +3452,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. @@ -4989,7 +4814,7 @@ index ce39bdde..cc24c1c9 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}. -@@ -3567,9 +3567,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. @@ -5001,7 +4826,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4220,9 +4220,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. @@ -5013,7 +4838,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4534,9 +4534,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. @@ -5025,7 +4850,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4878,9 +4878,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. @@ -5037,7 +4862,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -5261,9 +5261,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. @@ -5049,7 +4874,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -5644,9 +5644,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. @@ -5061,7 +4886,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -6324,9 +6324,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. @@ -5073,7 +4898,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -6788,9 +6788,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. @@ -5085,7 +4910,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -10483,23 +10483,23 @@ according to the following syntax: +@@ -10486,23 +10486,23 @@ according to the following syntax: \begin{ncbnf} \fmtnontermdef{literal-char}\br @@ -5114,7 +4939,7 @@ index ce39bdde..cc24c1c9 100644 \end{ncbnf} The productions -@@ -10572,11 +10572,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, @@ -5128,7 +4953,7 @@ index ce39bdde..cc24c1c9 100644 conversion specifier appears in the \fmtgrammarterm{chrono-format-spec}, an exception of type \tcode{format_error} is thrown, -@@ -10592,7 +10592,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'' @@ -5137,7 +4962,7 @@ index ce39bdde..cc24c1c9 100644 then a specialization of \tcode{duration} is interpreted as the time of day elapsed since midnight. -@@ -10604,57 +10604,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 @@ -5213,7 +5038,7 @@ index ce39bdde..cc24c1c9 100644 \\ \rowsep \tcode{\%g} & The last two decimal digits of the calendar year -@@ -10665,158 +10665,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 @@ -5397,7 +5222,8 @@ index ce39bdde..cc24c1c9 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 @@ -5406,6 +5232,11 @@ index ce39bdde..cc24c1c9 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} & @@ -5443,7 +5274,7 @@ index ce39bdde..cc24c1c9 100644 \\ \end{LongTable} -@@ -10864,9 +10864,9 @@ template +@@ -10873,9 +10873,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5455,7 +5286,7 @@ index ce39bdde..cc24c1c9 100644 an offset of \tcode{0min} is formatted. \end{itemdescr} -@@ -10879,9 +10879,9 @@ template +@@ -10888,9 +10888,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5467,7 +5298,7 @@ index ce39bdde..cc24c1c9 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, -@@ -10898,9 +10898,9 @@ template +@@ -10907,9 +10907,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5479,7 +5310,7 @@ index ce39bdde..cc24c1c9 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 -@@ -10919,9 +10919,9 @@ template +@@ -10928,9 +10928,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5491,7 +5322,7 @@ index ce39bdde..cc24c1c9 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 -@@ -10940,9 +10940,9 @@ template +@@ -10949,9 +10949,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5503,7 +5334,7 @@ index ce39bdde..cc24c1c9 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted -@@ -10960,7 +10960,7 @@ template +@@ -10969,7 +10969,7 @@ template \begin{itemdescr} \pnum \remarks @@ -5512,7 +5343,7 @@ index ce39bdde..cc24c1c9 100644 an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -11001,18 +11001,18 @@ passed to \tcode{formatter::format}. +@@ -11010,18 +11010,18 @@ passed to \tcode{formatter::format}. \pnum \remarks If the \fmtgrammarterm{chrono-specs} is omitted, @@ -5536,7 +5367,7 @@ index ce39bdde..cc24c1c9 100644 and \tcode{f.offset_sec} is a null pointer value, then an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -11216,8 +11216,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. @@ -5547,7 +5378,7 @@ index ce39bdde..cc24c1c9 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 -@@ -11235,7 +11235,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'' @@ -5556,7 +5387,7 @@ index ce39bdde..cc24c1c9 100644 then a specialization of \tcode{duration} is parsed as the time of day elapsed since midnight. -@@ -11255,251 +11255,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 @@ -5866,7 +5697,8 @@ index ce39bdde..cc24c1c9 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}), @@ -5883,6 +5715,11 @@ index ce39bdde..cc24c1c9 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} & @@ -5922,7 +5759,7 @@ index ce39bdde..cc24c1c9 100644 The time zone abbreviation or name. A single word is parsed. This word can only contain characters -@@ -11507,8 +11507,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 @@ -5937,7 +5774,7 @@ index ce39bdde..cc24c1c9 100644 2.43.0 -From d35ea058dc773ca110bc437d50e1a11c36b65758 Mon Sep 17 00:00:00 2001 +From 71c3023d731d3f13978d8fbbefc7050405191d2f Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. @@ -5951,7 +5788,7 @@ Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. source/containers.tex | 11 ----------- source/declarations.tex | 14 -------------- source/exceptions.tex | 3 --- - source/expressions.tex | 25 ------------------------- + source/expressions.tex | 24 ------------------------ source/future.tex | 8 -------- source/iostreams.tex | 15 --------------- source/iterators.tex | 8 -------- @@ -5969,13 +5806,13 @@ Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. source/threads.tex | 17 ----------------- source/time.tex | 19 ------------------- source/utilities.tex | 7 ------- - 26 files changed, 268 deletions(-) + 26 files changed, 267 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index c313c941..f914092e 100644 +index 3074bc3a..fad5f7c8 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -8716,7 +8716,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: @@ -5983,7 +5820,7 @@ index c313c941..f914092e 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)} -@@ -9768,7 +9767,6 @@ Let $N = \tcode{last - first}$: +@@ -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} @@ -5991,7 +5828,7 @@ index c313c941..f914092e 100644 \end{itemdescr} \indexlibraryglobal{stable_partition}% -@@ -10916,7 +10914,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: @@ -5999,7 +5836,7 @@ index c313c941..f914092e 100644 \begin{itemize} \item With \tcode{$N$ = b - a}, for all $i$, $0 < i < N$, -@@ -13580,7 +13577,6 @@ template +@@ -13573,7 +13570,6 @@ template \pnum Some algorithms in this subclause are constrained with the following exposition-only concepts: @@ -6008,10 +5845,10 @@ index c313c941..f914092e 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index 818f9001..29b5e6e4 100644 +index c6a2b6c0..d03e2989 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -294,7 +294,6 @@ int X::y = 1; // defines \tcode{X::y} +@@ -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} X anX; // defines \tcode{anX} @@ -6019,7 +5856,7 @@ index 818f9001..29b5e6e4 100644 \end{codeblock} whereas these are just declarations: \begin{codeblock} -@@ -832,7 +831,6 @@ compute equivalent values\iref{expr.eq}. +@@ -850,7 +849,6 @@ compute equivalent values\iref{expr.eq}. \pnum For the purposes of the preceding requirements: @@ -6027,7 +5864,7 @@ index 818f9001..29b5e6e4 100644 \begin{itemize} \item If \tcode{D} is a class with an implicitly-declared constructor\iref{class.default.ctor,class.copy.ctor}, -@@ -6170,7 +6168,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: @@ -6036,10 +5873,10 @@ index 818f9001..29b5e6e4 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 7883ea0a..a7391709 100644 +index 76ea152b..62849329 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -1626,7 +1626,6 @@ for each non-static data member of +@@ -1641,7 +1641,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} @@ -6047,7 +5884,7 @@ index 7883ea0a..a7391709 100644 \indextext{constructor!move!non-trivial}% otherwise the copy/move constructor is \defnx{non-trivial}{constructor!copy!nontrivial}. -@@ -3244,7 +3243,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat +@@ -3265,7 +3264,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: @@ -6055,7 +5892,7 @@ index 7883ea0a..a7391709 100644 \begin{codeblock} u.m.~M(); new (&u.n) N; -@@ -3423,7 +3421,6 @@ A local class cannot have static data members\iref{class.static.data}. +@@ -3447,7 +3445,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: @@ -6063,7 +5900,7 @@ index 7883ea0a..a7391709 100644 \begin{bnf} \nontermdef{base-clause}\br \terminal{:} base-specifier-list -@@ -5402,7 +5399,6 @@ initializers for direct and virtual base class subobjects and +@@ -5426,7 +5423,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 @@ -6071,7 +5908,7 @@ index 7883ea0a..a7391709 100644 \begin{bnf} \nontermdef{ctor-initializer}\br \terminal{:} mem-initializer-list -@@ -5873,7 +5869,6 @@ public: +@@ -5897,7 +5893,6 @@ public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; \end{codeblock} @@ -6079,7 +5916,7 @@ index 7883ea0a..a7391709 100644 \end{example} \rSec2[class.inhctor.init]{Initialization by inherited constructor}% -@@ -6529,7 +6524,6 @@ any non-static data member of \tcode{C} is of reference type or +@@ -6553,7 +6548,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 @@ -6087,7 +5924,7 @@ index 7883ea0a..a7391709 100644 \begin{itemize} \item \tcode{a} or \tcode{b} is of class or enumeration type and -@@ -6650,7 +6644,6 @@ The \defnadj{synthesized}{three-way comparison} +@@ -6674,7 +6668,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: @@ -6095,7 +5932,7 @@ index 7883ea0a..a7391709 100644 \begin{itemize} \item If \tcode{a <=> b} is usable\iref{class.compare.default} and -@@ -6750,7 +6743,6 @@ The \defn{common comparison type} \tcode{U} +@@ -6774,7 +6767,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: @@ -6104,10 +5941,10 @@ index 7883ea0a..a7391709 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 60706217..24533a2c 100644 +index cdca4c22..74cce624 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -2592,7 +2592,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}: @@ -6115,7 +5952,7 @@ index 60706217..24533a2c 100644 \begin{itemize} \item \tcode{insert(iter, val)} for \tcode{vector}, \tcode{deque}, \tcode{list}, \tcode{set}, \tcode{multiset}, \tcode{map}, \tcode{multimap} -@@ -2664,7 +2663,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: @@ -6123,7 +5960,7 @@ index 60706217..24533a2c 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}; -@@ -3785,7 +3783,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: @@ -6131,7 +5968,7 @@ index 60706217..24533a2c 100644 \begin{itemize} \item \tcode{strchr} \item \tcode{strpbrk} -@@ -3799,7 +3796,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: @@ -6139,7 +5976,7 @@ index 60706217..24533a2c 100644 \begin{itemize} \item \tcode{wcschr} \item \tcode{wcspbrk} -@@ -3824,7 +3820,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: @@ -6277,7 +6114,7 @@ index 42828a4b..3e64abc8 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index d64183f9..8e93903a 100644 +index 65081f46..1c6cb497 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6327,7 +6164,7 @@ index d64183f9..8e93903a 100644 \begin{codeblock} template using @\placeholdernc{iter-value-type}@ = iterator_traits::value_type; // \expos -@@ -9343,7 +9337,6 @@ If \tcode{size() < sz}, +@@ -9367,7 +9361,6 @@ If \tcode{size() < sz}, appends \tcode{sz - size()} default-inserted elements to the sequence. If \tcode{sz <= size()}, equivalent to: @@ -6335,7 +6172,7 @@ index d64183f9..8e93903a 100644 \begin{codeblock} list::iterator it = begin(); advance(it, sz); -@@ -20310,7 +20303,6 @@ For each of +@@ -20331,7 +20324,6 @@ For each of \tcode{stack}, the library provides the following constexpr-enabled formatter specialization where \tcode{\placeholder{adaptor-type}} is the name of the template: @@ -6343,7 +6180,7 @@ index d64183f9..8e93903a 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -24566,7 +24558,6 @@ typename A::offset_policy +@@ -24570,7 +24562,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6351,7 +6188,7 @@ index d64183f9..8e93903a 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -25922,7 +25913,6 @@ for the $k^\text{th}$ extent of \tcode{src}. +@@ -26015,7 +26006,6 @@ for the $k^\text{th}$ extent of \tcode{src}. \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: @@ -6359,7 +6196,7 @@ index d64183f9..8e93903a 100644 \begin{itemize} \item \tcode{SubExtents::rank()} equals -@@ -25934,7 +25924,6 @@ the type of \tcode{slices...[$k$]} is not a collapsing slice type, +@@ -26027,7 +26017,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$]}: @@ -6368,10 +6205,10 @@ index d64183f9..8e93903a 100644 \item \tcode{Extents::static_extent($k$)} diff --git a/source/declarations.tex b/source/declarations.tex -index cc6330bc..247f80dc 100644 +index 00cff00a..135ca134 100644 --- a/source/declarations.tex +++ b/source/declarations.tex -@@ -1584,7 +1584,6 @@ a partial specialization\iref{temp.spec.partial}, +@@ -1593,7 +1593,6 @@ a partial specialization\iref{temp.spec.partial}, an explicit instantiation\iref{temp.explicit}, or it has one of the following forms: @@ -6379,7 +6216,7 @@ index cc6330bc..247f80dc 100644 \begin{ncsimplebnf} class-key \opt{attribute-specifier-seq} identifier \terminal{;}\br class-key \opt{attribute-specifier-seq} simple-template-id \terminal{;} -@@ -2487,7 +2486,6 @@ the \grammarterm{declarator} declares a function. +@@ -2498,7 +2497,6 @@ the \grammarterm{declarator} declares a function. \pnum Declarators have the syntax @@ -6387,7 +6224,7 @@ index cc6330bc..247f80dc 100644 \begin{bnf} \nontermdef{declarator}\br ptr-declarator\br -@@ -4393,7 +4391,6 @@ In the following code, +@@ -4404,7 +4402,6 @@ In the following code, \tcode{g} will be called with the value \tcode{f(2)}: @@ -6395,7 +6232,7 @@ index cc6330bc..247f80dc 100644 \begin{codeblock} int a = 1; int f(int); -@@ -5063,7 +5060,6 @@ To +@@ -5074,7 +5071,6 @@ To an object of type \tcode{T} means: @@ -6403,7 +6240,7 @@ index cc6330bc..247f80dc 100644 \begin{itemize} \item If -@@ -5273,7 +5269,6 @@ is sequenced before those associated with +@@ -5284,7 +5280,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: @@ -6411,7 +6248,7 @@ index cc6330bc..247f80dc 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -6191,7 +6186,6 @@ a program that necessitates such a binding is ill-formed. +@@ -6202,7 +6197,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} @@ -6419,7 +6256,7 @@ index cc6330bc..247f80dc 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6659,7 +6653,6 @@ int j { 1 }; // initialize to 1 +@@ -6670,7 +6664,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -6427,15 +6264,15 @@ index cc6330bc..247f80dc 100644 \end{itemize} \pnum -@@ -7745,7 +7738,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, +@@ -7756,7 +7749,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} -@@ -7877,7 +7869,6 @@ struct S { +@@ -7888,7 +7880,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6443,7 +6280,7 @@ index cc6330bc..247f80dc 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7974,7 +7965,6 @@ If the underlying +@@ -7984,7 +7975,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6451,7 +6288,7 @@ index cc6330bc..247f80dc 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8433,7 +8423,6 @@ void h() { +@@ -8442,7 +8432,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} according to the following grammar: @@ -6459,7 +6296,7 @@ index cc6330bc..247f80dc 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8607,7 +8596,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8616,7 +8605,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, @@ -6467,7 +6304,7 @@ index cc6330bc..247f80dc 100644 \begin{codeblock} namespace A { class X { }; -@@ -9170,7 +9158,6 @@ otherwise identical. +@@ -9179,7 +9167,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6475,7 +6312,7 @@ index cc6330bc..247f80dc 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -10040,7 +10027,6 @@ may be applied to a function or a lambda call operator or +@@ -10056,7 +10043,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: @@ -6484,7 +6321,7 @@ index cc6330bc..247f80dc 100644 \terminal{(} unevaluated-string \terminal{)} \end{ncbnf} diff --git a/source/exceptions.tex b/source/exceptions.tex -index d3b0f3e3..8f91c70e 100644 +index 76071483..3a2e459d 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -89,7 +89,6 @@ void f() { @@ -6509,7 +6346,7 @@ index d3b0f3e3..8f91c70e 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index cea81800..b61c8bbd 100644 +index 388f5d39..2804e820 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -467,7 +467,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -6560,7 +6397,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item If \tcode{T1} and \tcode{T2} are the same type, \tcode{C} is that type. -@@ -2811,7 +2805,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} +@@ -2812,7 +2806,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: @@ -6568,7 +6405,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item An \grammarterm{id-expression} that names a local entity -@@ -3421,7 +3414,6 @@ The \grammarterm{expression} is an unevaluated operand. +@@ -3423,7 +3416,6 @@ The \grammarterm{expression} is an unevaluated operand. Substitution of template arguments (if any) and verification of semantic properties proceed in the following order: @@ -6576,7 +6413,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -3433,7 +3425,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. +@@ -3435,7 +3427,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. \item If the \grammarterm{return-type-requirement} is present, then: @@ -6584,7 +6421,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -4524,7 +4515,6 @@ referred to by \tcode{T}. +@@ -4540,7 +4531,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: @@ -6592,7 +6429,7 @@ index cea81800..b61c8bbd 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 -@@ -5038,7 +5028,6 @@ constness. +@@ -5054,7 +5044,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: @@ -6600,7 +6437,7 @@ index cea81800..b61c8bbd 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 -@@ -5473,7 +5462,6 @@ is called a \term{suspension context} of the function. +@@ -5489,7 +5478,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: @@ -6608,7 +6445,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item \placeholder{p} is an lvalue naming the promise -@@ -5854,7 +5842,6 @@ and +@@ -5872,7 +5860,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}: @@ -6616,7 +6453,7 @@ index cea81800..b61c8bbd 100644 \begin{codeblock} T x @\textrm{\placeholder{init}}@ ; \end{codeblock} -@@ -6214,7 +6201,6 @@ the alignment argument is removed from the argument list; +@@ -6232,7 +6219,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; @@ -6624,7 +6461,7 @@ index cea81800..b61c8bbd 100644 \end{itemize} and then overload resolution is performed again. -@@ -6292,7 +6278,6 @@ necessarily be the same as that of the block if the object is an array. +@@ -6310,7 +6296,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: @@ -6632,15 +6469,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item If the \grammarterm{new-initializer} is omitted, the object is default-initialized\iref{dcl.init}. -@@ -6381,7 +6366,6 @@ struct S { - S* p = new (0) S; // error: non-placement deallocation function matches - // placement allocation function - \end{codeblock} -- - \end{example} - - \pnum -@@ -6501,7 +6485,6 @@ of their constructor; see~\ref{class.base.init}). +@@ -6589,7 +6574,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: @@ -6648,7 +6477,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item If the allocation call for the \grammarterm{new-expression} for the object to -@@ -7346,7 +7329,6 @@ or one operand has integral type and +@@ -7434,7 +7418,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: @@ -6656,7 +6485,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, -@@ -7501,7 +7483,6 @@ is considered to be equivalent to a pointer to a hypothetical array element +@@ -7589,7 +7572,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: @@ -6664,7 +6493,7 @@ index cea81800..b61c8bbd 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 -@@ -7514,7 +7495,6 @@ neither member is a subobject of zero size +@@ -7602,7 +7584,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. @@ -6672,7 +6501,7 @@ index cea81800..b61c8bbd 100644 \end{itemize} \pnum -@@ -7576,7 +7556,6 @@ If at least one of the converted operands is a pointer, +@@ -7664,7 +7645,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: @@ -6680,7 +6509,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item If one pointer represents the address of a complete object, and another -@@ -7606,7 +7585,6 @@ qualification conversions\iref{conv.qual} +@@ -7694,7 +7674,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: @@ -6688,7 +6517,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item If two pointers to members are both the null member pointer value, they compare -@@ -7892,7 +7870,6 @@ Attempts are made to form an implicit conversion sequence +@@ -7980,7 +7959,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: @@ -6696,7 +6525,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item If \tcode{E2} is an lvalue, the target type is ``lvalue reference to \tcode{T2}'', -@@ -7971,7 +7948,6 @@ subclause. +@@ -8059,7 +8037,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: @@ -6704,7 +6533,7 @@ index cea81800..b61c8bbd 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. -@@ -8001,7 +7977,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. +@@ -8089,7 +8066,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}. @@ -6713,7 +6542,7 @@ index cea81800..b61c8bbd 100644 \rSec2[expr.yield]{Yielding a value}% diff --git a/source/future.tex b/source/future.tex -index c72d59ea..a740fd47 100644 +index 88603947..24498cbb 100644 --- a/source/future.tex +++ b/source/future.tex @@ -283,7 +283,6 @@ shown in the above synopsis. @@ -6781,7 +6610,7 @@ index c72d59ea..a740fd47 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index 8bc8a19a..5651a156 100644 +index 4cf63702..a8f84575 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -2105,14 +2105,12 @@ does nothing. @@ -6895,7 +6724,7 @@ index 8bc8a19a..5651a156 100644 \begin{enumerate} \item If the path is empty, stop. \item Replace each slash character in the \grammarterm{root-name} with a \grammarterm{preferred-separator}. -@@ -17064,7 +17050,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: @@ -6904,7 +6733,7 @@ index 8bc8a19a..5651a156 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 909e4ed0..1ac297c8 100644 +index 46edb440..b083ad28 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -963,7 +963,6 @@ may be declared as \keyword{void}. @@ -6931,7 +6760,7 @@ index 909e4ed0..1ac297c8 100644 \begin{itemize} \item \tcode{iter_move(E)}, if \tcode{E} has class or enumeration type and -@@ -2807,7 +2804,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: @@ -6939,7 +6768,7 @@ index 909e4ed0..1ac297c8 100644 \begin{codeblock} template struct iterator_traits> { using iterator_category = bidirectional_iterator_tag; -@@ -2825,7 +2821,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: @@ -6947,7 +6776,7 @@ index 909e4ed0..1ac297c8 100644 \begin{codeblock} template inline void -@@ -3412,7 +3407,6 @@ As if by: +@@ -3416,7 +3411,6 @@ As if by: Iterator tmp = current; return *--tmp; \end{codeblock} @@ -6955,7 +6784,7 @@ index 909e4ed0..1ac297c8 100644 \end{itemdescr} \indexlibrarymember{operator->}{reverse_iterator}% -@@ -4795,7 +4789,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} @@ -6963,7 +6792,7 @@ index 909e4ed0..1ac297c8 100644 \end{example} \rSec3[move.iterator]{Class template \tcode{move_iterator}} -@@ -6514,7 +6507,6 @@ partial_sum(istream_iterator(cin), +@@ -6518,7 +6511,6 @@ partial_sum(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "@\textbackslash@n")); \end{codeblock} @@ -6972,7 +6801,7 @@ index 909e4ed0..1ac297c8 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 0b2c55f9..c463010f 100644 +index bc8ce8e8..7e1320d3 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. @@ -7023,7 +6852,7 @@ index 0b2c55f9..c463010f 100644 \begin{itemize} \item \constraints -@@ -616,7 +610,6 @@ values\iref{basic.fundamental}. +@@ -623,7 +617,6 @@ values\iref{basic.fundamental}. \pnum The enumerated type \tcode{\placeholder{enumerated}} can be written: @@ -7031,7 +6860,7 @@ index 0b2c55f9..c463010f 100644 \begin{codeblock} enum @\placeholder{enumerated}@ { @$\tcode{\placeholder{V}}_{0}$@, @$\tcode{\placeholder{V}}_{1}$@, @$\tcode{\placeholder{V}}_{2}$@, @$\tcode{\placeholder{V}}_{3}$@, @$\ldots$@ }; -@@ -649,7 +642,6 @@ or as a +@@ -656,7 +649,6 @@ or as a \pnum The bitmask type \tcode{\placeholder{bitmask}} can be written: @@ -7039,7 +6868,7 @@ index 0b2c55f9..c463010f 100644 \begin{codeblock} // For exposition only. // \tcode{int_type} is an integral type capable of representing all values of the bitmask type. -@@ -726,7 +718,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: @@ -7047,7 +6876,7 @@ index 0b2c55f9..c463010f 100644 \begin{itemize} \item Properties specified as \defn{locale-specific} -@@ -972,7 +963,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: @@ -7055,7 +6884,7 @@ index 0b2c55f9..c463010f 100644 \begin{codeblock} streambuf* sb; // \expos \end{codeblock} -@@ -1937,7 +1927,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if +@@ -1944,7 +1934,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: @@ -7063,7 +6892,7 @@ index 0b2c55f9..c463010f 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}. -@@ -2943,7 +2932,6 @@ for that type can fail by throwing an object of type +@@ -2950,7 +2939,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}: @@ -7071,7 +6900,7 @@ index 0b2c55f9..c463010f 100644 \begin{codeblock} template struct SimpleAllocator { -@@ -3429,13 +3417,11 @@ the description of function semantics apply +@@ -3444,13 +3432,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. @@ -7085,7 +6914,7 @@ index 0b2c55f9..c463010f 100644 \begin{itemize} \item \tcode{terminate_handler} -@@ -3456,7 +3442,6 @@ Exception handling. +@@ -3471,7 +3457,6 @@ Exception handling. \pnum A \Cpp{} program can get a pointer to the current handler function by calling the following functions: @@ -7093,7 +6922,7 @@ index 0b2c55f9..c463010f 100644 \begin{itemize} \item \indexlibraryglobal{get_new_handler}% -@@ -3482,7 +3467,6 @@ on the implementation. +@@ -3497,7 +3482,6 @@ on the implementation. \pnum In particular, the behavior is undefined in the following cases: @@ -7101,7 +6930,7 @@ index 0b2c55f9..c463010f 100644 \begin{itemize} \item For replacement functions\iref{replacement.functions}, if the installed replacement function does not -@@ -3767,7 +3751,6 @@ functions an implementation shall provide corresponding definitions. +@@ -3782,7 +3766,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: @@ -7120,10 +6949,10 @@ index 877f21f3..7fc0a416 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index a7f16411..17fb5e8d 100644 +index be9812fa..fb901823 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1445,7 +1445,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: @@ -7131,7 +6960,7 @@ index a7f16411..17fb5e8d 100644 \begin{codeblock} class @\exposid{pair-constructor}@ { using @\exposid{pair-type}@ = remove_cv_t; // \expos -@@ -3580,7 +3579,6 @@ template constexpr 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: @@ -7140,18 +6969,18 @@ index a7f16411..17fb5e8d 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index c76fa23e..1fa9a9f2 100644 +index bfebda45..287b0cef 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -1939,7 +1939,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(); -@@ -2447,7 +2446,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 declared or not present as follows: @@ -7160,7 +6989,7 @@ index c76fa23e..1fa9a9f2 100644 \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 214757e4..bce0a4ae 100644 +index 0fef1e5d..c9be3735 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); @@ -7179,7 +7008,7 @@ index 214757e4..bce0a4ae 100644 \begin{codeblock} basic_ostringstream s; s.flags(o.flags()); -@@ -4277,7 +4275,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)$: @@ -7187,7 +7016,7 @@ index 214757e4..bce0a4ae 100644 \begin{itemize} \item By way of initialization, -@@ -8358,7 +8355,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}. @@ -7195,7 +7024,7 @@ index 214757e4..bce0a4ae 100644 \end{itemdescr} \rSec3[valarray.special]{Specialized algorithms} -@@ -8374,7 +8370,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} @@ -7203,7 +7032,7 @@ index 214757e4..bce0a4ae 100644 \rSec2[class.slice]{Class \tcode{slice}} \rSec3[class.slice.overview]{Overview} -@@ -8794,7 +8789,6 @@ namespace std { +@@ -8792,7 +8787,6 @@ namespace std { This template is a helper template used by the \tcode{gslice} subscript operator @@ -7211,7 +7040,7 @@ index 214757e4..bce0a4ae 100644 \indexlibraryglobal{gslice_array}% \indexlibraryglobal{valarray}% \begin{itemdecl} -@@ -8920,7 +8914,6 @@ namespace std { +@@ -8918,7 +8912,6 @@ namespace std { \pnum This template is a helper template used by the mask subscript operator: @@ -7219,7 +7048,7 @@ index 214757e4..bce0a4ae 100644 \indexlibrarymember{operator[]}{mask_array}% \begin{itemdecl} mask_array valarray::operator[](const valarray&); -@@ -9037,7 +9030,6 @@ namespace std { +@@ -9035,7 +9028,6 @@ namespace std { \pnum This template is a helper template used by the indirect subscript operator @@ -7228,7 +7057,7 @@ index 214757e4..bce0a4ae 100644 \begin{itemdecl} indirect_array valarray::operator[](const valarray&); diff --git a/source/overloading.tex b/source/overloading.tex -index 9533e291..9eadc766 100644 +index d3250f2d..c5328c3c 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -103,7 +103,6 @@ the list of arguments in its own unique way. @@ -7255,7 +7084,7 @@ index 9533e291..9eadc766 100644 \begin{codeblock} struct A { }; void operator + (A, A); -@@ -1080,7 +1077,6 @@ Assuming that +@@ -1081,7 +1078,6 @@ Assuming that \tcode{T} a class type, the candidate functions are selected as follows: @@ -7263,7 +7092,7 @@ index 9533e291..9eadc766 100644 \begin{itemize} \item The non-explicit constructors\iref{class.conv.ctor} of -@@ -1126,7 +1122,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: @@ -7271,7 +7100,7 @@ index 9533e291..9eadc766 100644 \begin{itemize} \item The permissible types for non-explicit conversion functions are -@@ -1198,7 +1193,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: @@ -7279,7 +7108,7 @@ index 9533e291..9eadc766 100644 \begin{itemize} \item If the initializer list is not empty or \tcode{T} has no default constructor, -@@ -1280,7 +1274,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: @@ -7287,7 +7116,7 @@ index 9533e291..9eadc766 100644 \begin{itemize} \item The \grammarterm{template-head}, if any, -@@ -2748,7 +2741,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: @@ -7295,7 +7124,7 @@ index 9533e291..9eadc766 100644 \begin{itemize} \item List-initialization sequence \tcode{L1} is a better conversion sequence than -@@ -2980,7 +2972,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} @@ -7303,7 +7132,7 @@ index 9533e291..9eadc766 100644 \end{itemize} \pnum -@@ -2989,7 +2980,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: @@ -7311,7 +7140,7 @@ index 9533e291..9eadc766 100644 \begin{itemize} \item A conversion that does not convert a pointer or a pointer to member -@@ -4146,7 +4136,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: @@ -7320,7 +7149,7 @@ index 9533e291..9eadc766 100644 const char* unsigned long long int diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 6624a7f2..62225b4c 100644 +index b3cf7fc7..cd5f8947 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -199,7 +199,6 @@ begins with the first character in the source file @@ -7331,7 +7160,7 @@ index 6624a7f2..62225b4c 100644 \begin{itemize} \item a \tcode{\#} preprocessing token, or -@@ -660,7 +659,6 @@ including within a preprocessing directive. +@@ -645,7 +644,6 @@ including within a preprocessing directive. \begin{example} This demonstrates a way to include a library \tcode{optional} facility only if it is available: @@ -7339,7 +7168,7 @@ index 6624a7f2..62225b4c 100644 \begin{codeblock} #if __has_include() # include -@@ -821,14 +819,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: @@ -7354,7 +7183,7 @@ index 6624a7f2..62225b4c 100644 \end{note} \pnum -@@ -836,7 +832,6 @@ achieves wider portability. For instance: +@@ -821,7 +817,6 @@ achieves wider portability. For instance: This illustrates macro-replaced \tcode{\#include} directives: @@ -7362,7 +7191,7 @@ index 6624a7f2..62225b4c 100644 \begin{codeblock} #if VERSION == 1 #define INCFILE "vers1.h" -@@ -1934,7 +1929,6 @@ is optional. +@@ -1975,7 +1970,6 @@ is optional. \pnum \begin{example} In the following fragment: @@ -7370,7 +7199,7 @@ index 6624a7f2..62225b4c 100644 \begin{codeblock} #define hash_hash # ## # #define mkstr(a) # a -@@ -1944,7 +1938,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: @@ -7378,7 +7207,7 @@ index 6624a7f2..62225b4c 100644 \begin{codeblock} join(x, y) in_between(x hash_hash y) -@@ -2181,7 +2174,6 @@ has no effect. +@@ -2221,7 +2214,6 @@ has no effect. \pnum The following macro names shall be defined by the implementation: @@ -7386,7 +7215,7 @@ index 6624a7f2..62225b4c 100644 \begin{description} \item -@@ -2413,7 +2405,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: @@ -7394,7 +7223,7 @@ index 6624a7f2..62225b4c 100644 \begin{description} \item \indextext{__stdc__@\mname{STDC}}% -@@ -2448,7 +2439,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 \tcode{1}, if and only if a program can have more than one \link{thread of execution}{intro.multithread}. @@ -7403,7 +7232,7 @@ index 6624a7f2..62225b4c 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 58f2ef0c..9fff6e28 100644 +index 75baf9b1..c339582a 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7470,7 +7299,7 @@ index 58f2ef0c..9fff6e28 100644 \begin{codeblock} template concept @\defexposconceptnc{simple-view}@ = // \expos -@@ -5889,7 +5881,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: @@ -7478,7 +7307,7 @@ index 58f2ef0c..9fff6e28 100644 \begin{itemize} \item If \tcode{T} is a specialization -@@ -5915,7 +5906,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: @@ -7486,7 +7315,7 @@ index 58f2ef0c..9fff6e28 100644 \begin{itemize} \item if \tcode{T} is a specialization of \tcode{span}, then \tcode{U} is \tcode{span}; -@@ -6377,7 +6367,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: @@ -7494,7 +7323,7 @@ index 58f2ef0c..9fff6e28 100644 \begin{itemize} \item If \tcode{T} is a specialization of -@@ -7458,7 +7447,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: @@ -7502,7 +7331,7 @@ index 58f2ef0c..9fff6e28 100644 \begin{itemize} \item Let \placeholder{OUTERC} denote -@@ -9758,7 +9746,6 @@ appears in the immediate context of a template instantiation. +@@ -9856,7 +9844,6 @@ appears in the immediate context of a template instantiation. \end{note} Otherwise, \tcode{views::counted(E, F)} is expression-equivalent to: @@ -7511,10 +7340,10 @@ index 58f2ef0c..9fff6e28 100644 \item If \tcode{T} models \libconcept{contiguous_iterator}, diff --git a/source/statements.tex b/source/statements.tex -index 852e314d..5510eb74 100644 +index 301d6304..65faf674 100644 --- a/source/statements.tex +++ b/source/statements.tex -@@ -727,7 +727,6 @@ exposition only; and +@@ -731,7 +731,6 @@ exposition only; and \item \exposid{begin-expr} and \exposid{end-expr} are determined as follows: @@ -7523,10 +7352,10 @@ index 852e314d..5510eb74 100644 \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are diff --git a/source/support.tex b/source/support.tex -index b0c75171..f7399362 100644 +index 0dd4cd06..90a3972a 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -2425,7 +2425,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 @@ -7534,7 +7363,7 @@ index b0c75171..f7399362 100644 \begin{itemize} \item Executes a loop: -@@ -2904,7 +2903,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: @@ -7542,7 +7371,7 @@ index b0c75171..f7399362 100644 \begin{codeblock} void* place = operator new(sizeof(Something)); Something* p = new (place) Something(); -@@ -4813,7 +4811,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: @@ -7550,7 +7379,7 @@ index b0c75171..f7399362 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 -@@ -5767,7 +5764,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: @@ -7559,10 +7388,10 @@ index b0c75171..f7399362 100644 using promise_type = R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index 3e0fd2ed..2ebe5fe3 100644 +index 5b4f6ad6..8ac74188 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -256,7 +256,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: @@ -7570,7 +7399,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{bnf} \nontermdef{template-parameter}\br type-parameter\br -@@ -1635,7 +1634,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): @@ -7578,7 +7407,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item Each of the two function templates has the same template parameters -@@ -2032,7 +2030,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: @@ -7586,7 +7415,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{bnf} \nontermdef{constraint-expression}\br logical-or-expression -@@ -2048,7 +2045,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: @@ -7594,7 +7423,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item If there are no introduced \grammarterm{constraint-expression}{s}, the declaration has no associated constraints. -@@ -2838,7 +2834,6 @@ public: +@@ -2842,7 +2838,6 @@ public: declares three member functions of a class template. The subscript function can be defined like this: @@ -7602,7 +7431,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{codeblock} template T& Array::operator[](int i) { if (i<0 || sz<=i) error("Array: range error"); -@@ -3230,7 +3225,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: @@ -7610,7 +7439,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item In a function parameter pack\iref{dcl.fct}; the pattern is the \grammarterm{parameter-declaration} without the ellipsis. -@@ -3836,7 +3830,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: @@ -7618,7 +7447,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item The type of a template parameter corresponding to a specialized constant template -@@ -3850,7 +3843,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} @@ -7626,7 +7455,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \end{example} \item The partial specialization shall be more specialized than the primary -@@ -3976,7 +3968,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}: @@ -7634,7 +7463,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item Each of the two -@@ -4128,7 +4119,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: @@ -7642,7 +7471,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{codeblock} template class Array { }; template void sort(Array&); -@@ -4183,7 +4173,6 @@ void h(int* p) { +@@ -4187,7 +4177,6 @@ void h(int* p) { } \end{codeblock} \end{minipage} @@ -7650,7 +7479,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \end{example} \pnum -@@ -4369,7 +4358,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: @@ -7658,7 +7487,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{codeblock} // guaranteed to be the same template void f(A, A); -@@ -4460,7 +4448,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$: @@ -7666,7 +7495,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item The type $X(M)$ is ``rvalue reference to \cv{}~$A$'' -@@ -4718,7 +4705,6 @@ template class TT> +@@ -4722,7 +4709,6 @@ template class TT> void g(TT>); g(v); // OK, \tcode{TT} = \tcode{vector} \end{codeblock} @@ -7674,7 +7503,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \end{example} \pnum -@@ -5584,7 +5570,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 @@ -7682,7 +7511,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item it is a \grammarterm{conversion-function-id} -@@ -5833,7 +5818,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: @@ -7690,7 +7519,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br simple-type-specifier braced-init-list\br -@@ -5851,7 +5835,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): @@ -7698,7 +7527,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{ncsimplebnf} literal\br \keyword{sizeof} unary-expression\br -@@ -5962,7 +5945,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: @@ -7706,7 +7535,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{ncsimplebnf} \keyword{sizeof} unary-expression\br \keyword{sizeof} \terminal{(} type-id \terminal{)}\br -@@ -5990,7 +5972,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: @@ -7714,7 +7543,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br typename-specifier \terminal{(} \opt{expression-list} \terminal{)}\br -@@ -6005,7 +5986,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: @@ -7722,7 +7551,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -7013,7 +6993,6 @@ template. +@@ -7018,7 +6998,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -7730,7 +7559,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{bnf} \nontermdef{explicit-instantiation}\br \opt{\keyword{extern}} \keyword{template} declaration -@@ -7488,7 +7467,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}: @@ -7738,7 +7567,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{codeblock} template<> X Q::x; // declaration template<> X Q::x (); // error: declares a function -@@ -7747,7 +7725,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: @@ -7746,7 +7575,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{codeblock} template int f(T); // \#1 int f(int); // \#2 -@@ -8329,7 +8306,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: @@ -7754,7 +7583,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item If -@@ -8424,7 +8400,6 @@ the type +@@ -8449,7 +8425,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -7762,7 +7591,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item If the original -@@ -8614,7 +8589,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: @@ -7770,7 +7599,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item If -@@ -8660,7 +8634,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: @@ -7778,7 +7607,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item If the original \tcode{A} is a reference type, -@@ -8705,7 +8678,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: @@ -7786,7 +7615,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item In the context of a function call, the types used are those function parameter types -@@ -8733,7 +8705,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: @@ -7794,7 +7623,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item If -@@ -8939,7 +8910,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: @@ -7802,7 +7631,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item A function type includes the types of each of the function parameters, -@@ -8981,7 +8951,6 @@ need not have the same form. +@@ -9004,7 +8974,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -7810,7 +7639,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -9076,7 +9045,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: @@ -7818,7 +7647,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{codeblock} template void f(T x, T y) { @\commentellip@ } struct A { @\commentellip@ }; -@@ -9093,7 +9061,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: @@ -7826,7 +7655,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -9110,7 +9077,6 @@ void r() { +@@ -9133,7 +9100,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -7834,7 +7663,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -9129,7 +9095,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: @@ -7842,7 +7671,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -9140,7 +9105,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: @@ -7851,10 +7680,10 @@ index 3e0fd2ed..2ebe5fe3 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 9d7efb72..976fa0b3 100644 +index 363ff13c..0e8242c0 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -7343,7 +7343,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: @@ -7862,7 +7691,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -7386,7 +7385,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: @@ -7870,7 +7699,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -7432,7 +7430,6 @@ Nothing. +@@ -7454,7 +7452,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -7878,7 +7707,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -7587,7 +7584,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: @@ -7886,7 +7715,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -7629,7 +7625,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: @@ -7894,7 +7723,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -7816,7 +7811,6 @@ shared lock. +@@ -7838,7 +7833,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -7902,7 +7731,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -7853,7 +7847,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: @@ -7910,7 +7739,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -7878,7 +7871,6 @@ Nothing. +@@ -7900,7 +7893,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -7918,7 +7747,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -7981,7 +7973,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: @@ -7926,7 +7755,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -8026,7 +8017,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: @@ -7934,7 +7763,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -10167,7 +10157,6 @@ template +@@ -10199,7 +10189,6 @@ template \begin{itemdescr} \pnum \effects @@ -7942,7 +7771,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -11558,7 +11547,6 @@ shared state as \tcode{*this}. +@@ -11589,7 +11578,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -7950,7 +7779,7 @@ index 9d7efb72..976fa0b3 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}. -@@ -11621,7 +11609,6 @@ already has a stored value or exception. +@@ -11652,7 +11640,6 @@ already has a stored value or exception. \pnum \errors @@ -7958,7 +7787,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -11961,7 +11948,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 @@ -7966,7 +7795,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12305,7 +12291,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 @@ -7974,7 +7803,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12340,7 +12325,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -12371,7 +12356,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -7982,7 +7811,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12396,7 +12380,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): @@ -7991,10 +7820,10 @@ index 9d7efb72..976fa0b3 100644 \item If \tcode{launch::async} is set in \tcode{policy}, calls diff --git a/source/time.tex b/source/time.tex -index cc24c1c9..2d6f9c27 100644 +index 62226224..6b4a0b79 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -2072,7 +2072,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: @@ -8002,7 +7831,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{itemize} \item If \tcode{Period::type} is \tcode{atto}, -@@ -2950,7 +2949,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: @@ -8010,7 +7839,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{outputblock} 2015-06-30 23:59:59.500 UTC 2015-06-30 23:59:59.750 UTC -@@ -3156,7 +3154,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: @@ -8018,7 +7847,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{outputblock} 2000-01-01 00:00:00 UTC == 2000-01-01 00:00:32 TAI \end{outputblock} -@@ -3319,7 +3316,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: @@ -8026,7 +7855,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{outputblock} 2000-01-01 00:00:00 UTC == 2000-01-01 00:00:13 GPS \end{outputblock} -@@ -3388,7 +3384,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: @@ -8034,7 +7863,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{codeblock} template static sys_time<@\seebelow@> -@@ -3397,9 +3392,7 @@ template +@@ -3400,9 +3395,7 @@ template static file_time<@\seebelow@> from_sys(const sys_time&); \end{codeblock} @@ -8044,7 +7873,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{codeblock} template static utc_time<@\seebelow@> -@@ -3872,7 +3865,6 @@ template +@@ -3875,7 +3868,6 @@ template \constraints At least one of the following clock time conversion expressions is well-formed: @@ -8052,7 +7881,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{itemize} \item \begin{codeblock} -@@ -7918,7 +7910,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: @@ -8060,7 +7889,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{codeblock} @\tcode{\placeholder{year}}@/@\tcode{\placeholder{month}}@/@\tcode{\placeholder{day}}@ @\tcode{\placeholder{month}}@/@\tcode{\placeholder{day}}@/@\tcode{\placeholder{year}}@ -@@ -7926,7 +7917,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: @@ -8068,7 +7897,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{codeblock} last @\tcode{\placeholder{weekday}}@[@\tcode{\placeholder{i}}@] -@@ -7939,7 +7929,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: @@ -8076,7 +7905,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{codeblock} year_month ym = 2015y/April; month_day md1 = April/4; -@@ -9131,7 +9120,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: @@ -8084,7 +7913,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{codeblock} ostringstream os; os << tp << " is in a gap between\n" -@@ -9161,7 +9149,6 @@ int main() { +@@ -9164,7 +9152,6 @@ int main() { \end{codeblock} Produces the output: @@ -8092,7 +7921,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{outputblock} 2016-03-13 02:30:00 is in a gap between 2016-03-13 02:00:00 EST and -@@ -9206,7 +9193,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: @@ -8100,7 +7929,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{codeblock} ostringstream os; os << tp << " is ambiguous. It could be\n" -@@ -9234,7 +9220,6 @@ int main() { +@@ -9237,7 +9223,6 @@ int main() { \end{codeblock} Produces the output: @@ -8108,7 +7937,7 @@ index cc24c1c9..2d6f9c27 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 -@@ -9288,7 +9273,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: @@ -8116,7 +7945,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{codeblock} offset = local_time - sys_time \end{codeblock} -@@ -9593,7 +9577,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: @@ -8124,7 +7953,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{codeblock} namespace std::chrono { template<> struct zoned_traits { -@@ -10169,7 +10152,6 @@ for (auto& l : get_tzdb().leap_seconds) +@@ -10172,7 +10155,6 @@ for (auto& l : get_tzdb().leap_seconds) \end{codeblock} Produces the output: @@ -8132,7 +7961,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{outputblock} 1972-07-01 00:00:00: 1s 1973-01-01 00:00:00: 1s -@@ -10468,7 +10450,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: @@ -8141,10 +7970,10 @@ index cc24c1c9..2d6f9c27 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 6011601f..530bb023 100644 +index f8e08fe3..d463a05a 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -282,7 +282,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: @@ -8152,7 +7981,7 @@ index 6011601f..530bb023 100644 \begin{codeblock} is_nothrow_move_constructible_v && is_nothrow_move_assignable_v \end{codeblock} -@@ -2237,7 +2236,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: @@ -8160,7 +7989,7 @@ index 6011601f..530bb023 100644 \begin{codeblock} is_nothrow_move_assignable_v<@$\mathtt{T}_i$@> \end{codeblock} -@@ -3183,7 +3181,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: @@ -8168,7 +7997,7 @@ index 6011601f..530bb023 100644 \begin{codeblock} noexcept(x.swap(y)) \end{codeblock} -@@ -10930,7 +10927,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: @@ -8176,7 +8005,7 @@ index 6011601f..530bb023 100644 \begin{itemize} \item If \tcode{I < pos}, the new value is zero; -@@ -10955,7 +10951,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: @@ -8184,7 +8013,7 @@ index 6011601f..530bb023 100644 \begin{itemize} \item If \tcode{pos >= N - I}, the new value is zero; -@@ -11684,7 +11679,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: @@ -8192,7 +8021,7 @@ index 6011601f..530bb023 100644 \begin{codeblock} transform(a.begin(), a.end(), b.begin(), a.begin(), plus()); \end{codeblock} -@@ -15163,7 +15157,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: @@ -8204,7 +8033,7 @@ index 6011601f..530bb023 100644 2.43.0 -From 20cfd6993f796d0067e998824e9a4dfbd6ab80f3 Mon Sep 17 00:00:00 2001 +From 32af6cd9ff8d0f9c4684f2488f2aa83fbeca83e4 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 Subject: [PATCH 06/10] Use monospace font for code in figures. @@ -8351,7 +8180,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From 9e5be3d459ac25cb6550b7beab91eb9aa1c12062 Mon Sep 17 00:00:00 2001 +From 0d26f8fa398395e59e8b8b392bc2b37b822b2f33 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 Subject: [PATCH 07/10] [uaxid] Mark code that's not to be highlighted. @@ -8379,7 +8208,7 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From cd3b9b294e8247f729d9d263dd6df7f14d6c982a Mon Sep 17 00:00:00 2001 +From 1d2defde13540045bf1eed78e553fedcf059a025 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. @@ -8396,14 +8225,14 @@ Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. source/meta.tex | 268 ++++++++++++++++++++--------------------- source/numerics.tex | 34 +++--- source/strings.tex | 10 +- - source/support.tex | 14 +-- + source/support.tex | 4 +- source/threads.tex | 110 ++++++++--------- source/time.tex | 66 +++++----- source/utilities.tex | 136 ++++++++++----------- - 15 files changed, 481 insertions(+), 489 deletions(-) + 15 files changed, 476 insertions(+), 484 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index f914092e..16604a18 100644 +index fad5f7c8..600c9685 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -8450,7 +8279,7 @@ index f914092e..16604a18 100644 if it is required to be a mutable iterator, or model \libconcept{random_access_iterator}\iref{iterator.concept.random.access} otherwise. \end{itemize} -@@ -4626,10 +4626,10 @@ template +@@ -4619,10 +4619,10 @@ template \pnum \expects \tcode{Function} meets @@ -8463,7 +8292,7 @@ index f914092e..16604a18 100644 \end{note} \pnum -@@ -4666,7 +4666,7 @@ template +@@ -4659,7 +4659,7 @@ template \begin{itemdescr} \pnum \expects @@ -8472,7 +8301,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -4800,10 +4800,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}. @@ -8485,7 +8314,7 @@ index f914092e..16604a18 100644 \end{note} \pnum -@@ -4840,7 +4840,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}. @@ -8494,7 +8323,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -5688,7 +5688,7 @@ If +@@ -5681,7 +5681,7 @@ If \item the types of \tcode{first1}, \tcode{last1}, \tcode{first2}, and \tcode{last2} meet the @@ -8503,7 +8332,7 @@ index f914092e..16604a18 100644 and \tcode{last1 - first1 != last2 - first2} for the overloads in namespace \tcode{std}; \item -@@ -6032,7 +6032,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} +@@ -6025,7 +6025,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} \pnum \remarks @@ -8512,7 +8341,7 @@ index f914092e..16604a18 100644 \end{itemdescr} \rSec2[alg.starts.with]{Starts with} -@@ -7616,7 +7616,7 @@ Let $E(\tcode{i})$ be +@@ -7598,7 +7598,7 @@ Let $E(\tcode{i})$ be \expects For the algorithms in namespace \tcode{std}, the type of \tcode{*first} @@ -8521,7 +8350,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -7867,7 +7867,7 @@ let $E(\tcode{i})$ 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 @@ -8530,7 +8359,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -7998,10 +7998,10 @@ Let: +@@ -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 @@ -8543,7 +8372,7 @@ index f914092e..16604a18 100644 Otherwise, \tcode{T} meets both the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and \oldconcept{CopyAssignable} requirements. -@@ -8080,7 +8080,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8062,7 +8062,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8552,7 +8381,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -8215,10 +8215,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterat +@@ -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 @@ -8566,7 +8395,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -8438,13 +8438,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 @@ -8583,7 +8412,7 @@ index f914092e..16604a18 100644 unless \tcode{Pop\-ulat\-ion\-Iter\-ator} models \libconcept{forward_iterator}\iref{iterator.concept.forward}. \item -@@ -8512,7 +8512,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 @@ -8592,7 +8421,7 @@ index f914092e..16604a18 100644 \item The type \tcode{remove_reference_t} meets the uniform random bit generator\iref{rand.req.urng} requirements. -@@ -8573,7 +8573,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -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}, @@ -8601,7 +8430,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -8637,10 +8637,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -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}, @@ -8615,7 +8444,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -8819,10 +8819,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 @@ -8629,7 +8458,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -8887,10 +8887,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 @@ -8643,7 +8472,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -8961,10 +8961,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 @@ -8657,7 +8486,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -9108,10 +9108,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 @@ -8671,7 +8500,7 @@ index f914092e..16604a18 100644 \pnum For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and -@@ -9346,10 +9346,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 @@ -8685,7 +8514,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -9731,7 +9731,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 @@ -8694,7 +8523,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -9758,7 +9758,7 @@ Let $N = \tcode{last - first}$: +@@ -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 @@ -8703,7 +8532,7 @@ index f914092e..16604a18 100644 for the overloads in namespace \tcode{std} or models \libconcept{bidirectional_iterator} for the overloads in namespace \tcode{ranges}, -@@ -9811,10 +9811,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 @@ -8717,7 +8546,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -10211,10 +10211,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 @@ -8731,7 +8560,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -10966,10 +10966,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 @@ -8745,7 +8574,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -11019,10 +11019,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 @@ -8759,7 +8588,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -11075,10 +11075,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 @@ -8773,7 +8602,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -11128,10 +11128,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 @@ -8787,7 +8616,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -11318,7 +11318,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8807,7 +8636,7 @@ index f914092e..16604a18 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11401,7 +11401,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8827,7 +8656,7 @@ index f914092e..16604a18 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11486,7 +11486,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8847,7 +8676,7 @@ index f914092e..16604a18 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11755,7 +11755,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} @@ -8856,7 +8685,7 @@ index f914092e..16604a18 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11958,7 +11958,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 @@ -8865,7 +8694,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -12017,7 +12017,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 @@ -8874,7 +8703,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -12336,8 +12336,8 @@ template +@@ -12329,8 +12329,8 @@ template \pnum \expects \tcode{T} meets @@ -8885,7 +8714,7 @@ index f914092e..16604a18 100644 In the range \crange{first}{last}, \tcode{binary_op} neither modifies elements nor invalidates iterators or subranges. -@@ -12459,7 +12459,7 @@ are convertible to \tcode{T}. +@@ -12452,7 +12452,7 @@ are convertible to \tcode{T}. \expects \begin{itemize} \item @@ -8894,7 +8723,7 @@ index f914092e..16604a18 100644 \item \tcode{binary_op} neither invalidates iterators or subranges, nor modifies elements in the range \crange{first}{last}. -@@ -12503,8 +12503,8 @@ template}. +@@ -13191,7 +13191,7 @@ that denotes an object of type \tcode{minus<>}. \begin{itemize} \item For the overloads with no \tcode{ExecutionPolicy}, @@ -8997,10 +8826,10 @@ index 3e64abc8..9efb5afa 100644 invocation of the destructor does not actually throw. \end{note} diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index 8b010321..0d4dff5b 100644 +index 9a7aba83..04178bdb 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 @@ -9012,7 +8841,7 @@ index 8b010321..0d4dff5b 100644 } \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 @@ -9024,7 +8853,7 @@ index 8b010321..0d4dff5b 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}% @@ -9033,7 +8862,7 @@ index 8b010321..0d4dff5b 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; }; @@ -9044,7 +8873,7 @@ index 8b010321..0d4dff5b 100644 } \end{codeblock} -@@ -1090,7 +1088,7 @@ template +@@ -1093,7 +1091,7 @@ template \begin{itemdescr} \pnum \constraints @@ -9053,7 +8882,7 @@ index 8b010321..0d4dff5b 100644 \pnum \effects -@@ -1123,7 +1121,7 @@ template +@@ -1126,7 +1124,7 @@ template \begin{itemdescr} \pnum \constraints @@ -9063,7 +8892,7 @@ index 8b010321..0d4dff5b 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 4455a1c9..000fe37d 100644 +index 067536ac..9a2154a7 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9102,7 +8931,7 @@ index 4455a1c9..000fe37d 100644 \\ \end{floattable} diff --git a/source/future.tex b/source/future.tex -index a740fd47..2f15e38b 100644 +index 24498cbb..99bb6113 100644 --- a/source/future.tex +++ b/source/future.tex @@ -359,7 +359,7 @@ template struct is_pod; @@ -9151,7 +8980,7 @@ index a740fd47..2f15e38b 100644 \begin{itemize} \item for the first specialization, \tcode{volatile VA::type}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index 5651a156..ebbfbcba 100644 +index a8f84575..f444a705 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -1684,10 +1684,10 @@ An \tcode{fpos} type specifies file position information. @@ -9213,7 +9042,7 @@ index 5651a156..ebbfbcba 100644 \rSec2[fs.filesystem.syn]{Header \tcode{} synopsis} -@@ -14085,7 +14085,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()}. @@ -9222,7 +9051,7 @@ index 5651a156..ebbfbcba 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 -@@ -16590,7 +16590,7 @@ namespace std::filesystem { +@@ -16591,7 +16591,7 @@ namespace std::filesystem { \pnum \tcode{directory_iterator} meets the @@ -9232,10 +9061,10 @@ index 5651a156..ebbfbcba 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 c463010f..8d09833e 100644 +index 7e1320d3..b4c67f66 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex -@@ -1867,7 +1867,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1874,7 +1874,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9244,7 +9073,7 @@ index c463010f..8d09833e 100644 {p{1in}p{4.15in}} \topline \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep -@@ -1894,7 +1894,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1901,7 +1901,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9253,7 +9082,7 @@ index c463010f..8d09833e 100644 {p{1in}p{1in}p{1in}p{1.9in}} \topline \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Return value} & \hdstyle{Post-condition} \\ \capsep -@@ -1908,7 +1908,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1915,7 +1915,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} @@ -9262,7 +9091,7 @@ index c463010f..8d09833e 100644 \end{tailnote} } \\ \end{oldconcepttable} -@@ -1987,7 +1987,7 @@ void value_swap(T&& t, U&& u) { +@@ -1994,7 +1994,7 @@ void value_swap(T&& t, U&& u) { // for rvalues and lvalues } @@ -9271,7 +9100,7 @@ index c463010f..8d09833e 100644 template void lv_swap(T& t1, T& t2) { using std::swap; -@@ -2024,9 +2024,9 @@ int main() { +@@ -2031,9 +2031,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} @@ -9284,7 +9113,7 @@ index c463010f..8d09833e 100644 \item the expressions shown in \tref{cpp17.nullablepointer} are valid and have the indicated semantics, and -@@ -2102,8 +2102,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. +@@ -2109,8 +2109,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}, @@ -9295,7 +9124,7 @@ index c463010f..8d09833e 100644 \item the expressions shown in \tref{cpp17.hash} are valid and have the indicated semantics. \end{itemize} -@@ -2787,7 +2787,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2794,7 +2794,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 @@ -9304,7 +9133,7 @@ index c463010f..8d09833e 100644 the copy operation shall not throw exceptions. \pnum -@@ -2809,7 +2809,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2816,7 +2816,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 @@ -9313,7 +9142,7 @@ index c463010f..8d09833e 100644 the move operation shall not throw exceptions. \pnum -@@ -2831,7 +2831,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2838,7 +2838,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, @@ -9322,7 +9151,7 @@ index c463010f..8d09833e 100644 the \tcode{swap} operation shall not throw exceptions. \pnum -@@ -2861,7 +2861,7 @@ Default: \tcode{is_empty::type} +@@ -2868,7 +2868,7 @@ Default: \tcode{is_empty::type} \pnum An allocator type \tcode{X} shall meet the @@ -9331,7 +9160,7 @@ index c463010f..8d09833e 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}). -@@ -2869,7 +2869,7 @@ No constructor, +@@ -2876,7 +2876,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 @@ -9341,10 +9170,10 @@ index c463010f..8d09833e 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index 17fb5e8d..b7efaa69 100644 +index fb901823..2dea2cc5 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1147,7 +1147,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 @@ -9353,7 +9182,7 @@ index 17fb5e8d..b7efaa69 100644 \rSec2[allocator.uses]{\tcode{uses_allocator}} -@@ -1162,7 +1162,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 @@ -9362,7 +9191,7 @@ index 17fb5e8d..b7efaa69 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 -@@ -2112,8 +2112,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} @@ -9373,7 +9202,7 @@ index 17fb5e8d..b7efaa69 100644 The template parameter \tcode{T} of \tcode{unique_ptr} may be an incomplete type. \pnum -@@ -2300,7 +2300,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 @@ -9382,7 +9211,7 @@ index 17fb5e8d..b7efaa69 100644 \pnum If the \grammarterm{qualified-id} \tcode{remove_reference_t::pointer} is valid and denotes a -@@ -2308,7 +2308,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 @@ -9391,7 +9220,7 @@ index 17fb5e8d..b7efaa69 100644 \pnum \begin{example} -@@ -2334,7 +2334,7 @@ constexpr unique_ptr(nullptr_t) noexcept; +@@ -2370,7 +2370,7 @@ constexpr unique_ptr(nullptr_t) noexcept; \pnum \expects @@ -9400,7 +9229,7 @@ index 17fb5e8d..b7efaa69 100644 and that construction does not throw an exception. \pnum -@@ -2361,7 +2361,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 @@ -9409,7 +9238,7 @@ index 17fb5e8d..b7efaa69 100644 and that construction does not throw an exception. \pnum -@@ -2390,10 +2390,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, @@ -9422,7 +9251,7 @@ index 17fb5e8d..b7efaa69 100644 such construction does not exit via an exception. \pnum -@@ -2418,8 +2418,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; @@ -9433,7 +9262,7 @@ index 17fb5e8d..b7efaa69 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 -@@ -2440,7 +2440,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, @@ -9442,7 +9271,7 @@ index 17fb5e8d..b7efaa69 100644 requirements (\tref{cpp17.moveconstructible}). Construction of the deleter from an rvalue of type \tcode{D} does not -@@ -2549,10 +2549,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 @@ -9455,7 +9284,7 @@ index 17fb5e8d..b7efaa69 100644 requirements and assignment of the deleter from an lvalue of type \tcode{D} does not throw an exception. -@@ -3450,8 +3450,8 @@ namespace std { +@@ -3490,8 +3490,8 @@ namespace std { \end{codeblock} \pnum @@ -9466,7 +9295,7 @@ index 17fb5e8d..b7efaa69 100644 containers. Specializations of \tcode{shared_ptr} shall be contextually convertible to \tcode{bool}, allowing their use in boolean expressions and declarations in conditions. -@@ -3596,7 +3596,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 @@ -9475,7 +9304,7 @@ index 17fb5e8d..b7efaa69 100644 \pnum \effects -@@ -4116,7 +4116,7 @@ template +@@ -4156,7 +4156,7 @@ template \pnum \expects \tcode{A} meets @@ -9484,7 +9313,7 @@ index 17fb5e8d..b7efaa69 100644 \pnum \effects -@@ -4772,8 +4772,8 @@ namespace std { +@@ -4812,8 +4812,8 @@ namespace std { \end{codeblock} \pnum @@ -9495,7 +9324,7 @@ index 17fb5e8d..b7efaa69 100644 containers. The template parameter \tcode{T} of \tcode{weak_ptr} may be an incomplete type. -@@ -5352,7 +5352,7 @@ namespace std { +@@ -5392,7 +5392,7 @@ namespace std { \end{codeblock} \pnum @@ -9504,7 +9333,7 @@ index 17fb5e8d..b7efaa69 100644 If \tcode{Smart} is a specialization of \tcode{shared_ptr} and \tcode{sizeof...(Args) == 0}, the program is ill-formed. -@@ -5592,7 +5592,7 @@ namespace std { +@@ -5632,7 +5632,7 @@ namespace std { \end{codeblock} \pnum @@ -9514,7 +9343,7 @@ index 17fb5e8d..b7efaa69 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index 1fa9a9f2..925356e2 100644 +index 287b0cef..64dc0929 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -136,12 +136,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -9548,7 +9377,7 @@ index 1fa9a9f2..925356e2 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 -@@ -344,17 +344,17 @@ namespace std { +@@ -328,17 +328,17 @@ namespace std { template struct add_cv; template @@ -9572,7 +9401,7 @@ index 1fa9a9f2..925356e2 100644 // \ref{meta.trans.ref}, reference modifications template struct remove_reference; -@@ -362,38 +362,38 @@ namespace std { +@@ -346,38 +346,38 @@ namespace std { template struct add_rvalue_reference; template @@ -9620,7 +9449,7 @@ index 1fa9a9f2..925356e2 100644 // \ref{meta.trans.other}, other transformations template struct type_identity; -@@ -412,29 +412,29 @@ namespace std { +@@ -396,29 +396,29 @@ namespace std { template struct unwrap_ref_decay; template @@ -9662,7 +9491,7 @@ index 1fa9a9f2..925356e2 100644 template using @\libglobal{void_t}@ = void; -@@ -445,185 +445,185 @@ namespace std { +@@ -429,185 +429,185 @@ namespace std { // \ref{meta.unary.cat}, primary type categories template @@ -9762,8 +9591,8 @@ index 1fa9a9f2..925356e2 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_consteval_only_v}@ = is_consteval_only::value; -+ constexpr bool @\libglobal{is_consteval_only_v}@ = @\libglobalref{is_consteval_only}@::value; +- 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 @@ -9921,7 +9750,7 @@ index 1fa9a9f2..925356e2 100644 template constexpr bool @\libglobal{is_nothrow_invocable_r_v}@ = is_nothrow_invocable_r::value; template -@@ -633,11 +633,11 @@ namespace std { +@@ -617,11 +617,11 @@ namespace std { // \ref{meta.logical}, logical operator traits template @@ -9936,7 +9765,7 @@ index 1fa9a9f2..925356e2 100644 // \ref{meta.member}, member relationships template -@@ -936,7 +936,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 @@ -9945,7 +9774,7 @@ index 1fa9a9f2..925356e2 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is \tcode{true}, otherwise \tcode{false_type}. -@@ -966,17 +966,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 @@ -9966,7 +9795,7 @@ index 1fa9a9f2..925356e2 100644 \tcode{T} is an integral type\iref{basic.fundamental} & \\ \rowsep \indexlibraryglobal{is_floating_point}% \tcode{template}\br -@@ -1191,9 +1188,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 @@ -9977,7 +9806,7 @@ index 1fa9a9f2..925356e2 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 -@@ -1210,16 +1206,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 @@ -9996,7 +9825,7 @@ index 1fa9a9f2..925356e2 100644 \tcode{T} is an array type of known bound\iref{dcl.array} & \\ \rowsep -@@ -1713,7 +1707,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 @@ -10005,7 +9834,7 @@ index 1fa9a9f2..925356e2 100644 base characteristic of \tcode{integral_constant}. \pnum -@@ -1749,7 +1743,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 @@ -10014,7 +9843,7 @@ index 1fa9a9f2..925356e2 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is true, otherwise \tcode{false_type}. -@@ -1770,7 +1764,7 @@ Let \tcode{\placeholdernc{ELEMS-OF}(T)} be the parameter pack +@@ -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 @@ -10023,7 +9852,7 @@ index 1fa9a9f2..925356e2 100644 \tcode{T} and \tcode{U} name the same type with the same cv-qualifications & \\ \rowsep \indexlibraryglobal{is_base_of}% -@@ -1971,7 +1965,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 @@ -10032,7 +9861,7 @@ index 1fa9a9f2..925356e2 100644 \rSec3[meta.trans.cv]{Const-volatile modifications} -@@ -2258,16 +2252,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 @@ -10054,7 +9883,7 @@ index 1fa9a9f2..925356e2 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} -@@ -2373,7 +2367,7 @@ argument passing. +@@ -2120,7 +2114,7 @@ argument passing. \tcode{template} \tcode{struct \libglobal{unwrap_reference};} & If \tcode{T} is @@ -10063,7 +9892,7 @@ index 1fa9a9f2..925356e2 100644 the member typedef \tcode{type} of \tcode{unwrap_reference} denotes \tcode{X\&}, otherwise \tcode{type} denotes \tcode{T}. \\ \rowsep -@@ -2381,7 +2375,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} @@ -10072,7 +9901,7 @@ index 1fa9a9f2..925356e2 100644 \end{libreqtab2a} \pnum -@@ -2399,7 +2393,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 @@ -10081,7 +9910,7 @@ index 1fa9a9f2..925356e2 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 -@@ -2424,15 +2418,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 @@ -10100,7 +9929,7 @@ index 1fa9a9f2..925356e2 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 -@@ -2731,7 +2725,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} @@ -10110,7 +9939,7 @@ index 1fa9a9f2..925356e2 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index bce0a4ae..10fdf6e7 100644 +index c9be3735..9ce34899 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 @@ -10128,7 +9957,7 @@ index bce0a4ae..10fdf6e7 100644 requirements\iref{utility.arg.requirements}. \begin{footnote} In other words, value types. -@@ -2025,8 +2025,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 @@ -10139,7 +9968,7 @@ index bce0a4ae..10fdf6e7 100644 These operations shall each be of complexity no worse than \bigoh{\text{size of state}}. -@@ -2454,8 +2454,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 @@ -10150,7 +9979,7 @@ index bce0a4ae..10fdf6e7 100644 \pnum The sequence of numbers -@@ -2486,10 +2486,10 @@ for convenience of exposition only. +@@ -2484,10 +2484,10 @@ for convenience of exposition only. \pnum \tcode{P} shall meet the @@ -10164,7 +9993,7 @@ index bce0a4ae..10fdf6e7 100644 \pnum For each of the constructors of \tcode{D} -@@ -4233,7 +4233,7 @@ template +@@ -4231,7 +4231,7 @@ template \pnum \expects \tcode{InputIterator} meets the @@ -10173,7 +10002,7 @@ index bce0a4ae..10fdf6e7 100644 \pnum \effects -@@ -4260,7 +4260,7 @@ template +@@ -4258,7 +4258,7 @@ template \pnum \expects \tcode{RandomAccessIterator} meets the @@ -10182,7 +10011,7 @@ index bce0a4ae..10fdf6e7 100644 and the requirements of a mutable iterator. \pnum -@@ -4373,7 +4373,7 @@ template +@@ -4371,7 +4371,7 @@ template \pnum \expects \tcode{OutputIterator} meets the @@ -10191,7 +10020,7 @@ index bce0a4ae..10fdf6e7 100644 \pnum \effects -@@ -6368,7 +6368,7 @@ double>} is \tcode{true}. +@@ -6366,7 +6366,7 @@ double>} is \tcode{true}. \pnum \expects \tcode{InputIterator} meets the @@ -10200,7 +10029,7 @@ index bce0a4ae..10fdf6e7 100644 If \tcode{firstW == lastW}, let $n = 1$ and $w_0 = 1$. Otherwise, -@@ -6566,7 +6566,7 @@ are \tcode{true}. +@@ -6564,7 +6564,7 @@ are \tcode{true}. \expects \tcode{InputIteratorB} and \tcode{InputIteratorW} each meet the @@ -10209,7 +10038,7 @@ index bce0a4ae..10fdf6e7 100644 If \tcode{firstB == lastB} or \tcode{++firstB == lastB}, let $n = 1$, -@@ -6801,7 +6801,7 @@ are \tcode{true}. +@@ -6799,7 +6799,7 @@ are \tcode{true}. \expects \tcode{InputIteratorB} and \tcode{InputIteratorW} each meet the @@ -10219,7 +10048,7 @@ index bce0a4ae..10fdf6e7 100644 or \tcode{++firstB == lastB}, let $n = 1$, diff --git a/source/strings.tex b/source/strings.tex -index 749c23d9..8aeb51c9 100644 +index e9c20ec8..9f0d3f9c 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -238,10 +238,10 @@ using state_type = @\seebelow@; @@ -10247,27 +10076,10 @@ index 749c23d9..8aeb51c9 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 f7399362..7e61389d 100644 +index 90a3972a..5d4fbbf8 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -3624,11 +3624,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} -@@ -4090,7 +4090,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 @@ -10276,7 +10088,7 @@ index f7399362..7e61389d 100644 \pnum Two non-null values of type \tcode{exception_ptr} are equivalent and compare equal if and -@@ -4317,7 +4317,7 @@ Let \tcode{U} be \tcode{decay_t}. +@@ -4326,7 +4326,7 @@ Let \tcode{U} be \tcode{decay_t}. \pnum \expects @@ -10286,7 +10098,7 @@ index f7399362..7e61389d 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index 976fa0b3..6a73b71a 100644 +index 0e8242c0..98143cb4 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10339,7 +10151,7 @@ index 976fa0b3..6a73b71a 100644 +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 a - specialization of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes a value + specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes a value @@ -397,7 +397,7 @@ Nothing. \pnum @@ -10349,7 +10161,7 @@ index 976fa0b3..6a73b71a 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}, -@@ -4480,7 +4480,7 @@ namespace std { +@@ -4498,7 +4498,7 @@ namespace std { \indexlibraryglobal{atomic}% \pnum The template argument for \tcode{T} shall meet the @@ -10358,7 +10170,7 @@ index 976fa0b3..6a73b71a 100644 The program is ill-formed if any of \begin{itemize} \item \tcode{is_trivially_copyable_v}, -@@ -7304,11 +7304,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} @@ -10372,16 +10184,16 @@ index 976fa0b3..6a73b71a 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. -@@ -7577,7 +7577,7 @@ specialization of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} d +@@ -7599,7 +7599,7 @@ specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} den object of a - specialization of \link{\tcode{time_point}}{time.point}. + 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} -@@ -7789,7 +7789,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} @@ -10390,25 +10202,25 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.shared}. \end{note} -@@ -7966,7 +7966,7 @@ meet the requirements set out below. In this description, +@@ -7988,7 +7988,7 @@ meet the requirements set out below. In this description, \tcode{abs_time} denotes an object of a specialization of - \link{\tcode{time_point}}{time.point}. + \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} -@@ -8176,7 +8176,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}% -@@ -8255,12 +8255,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} @@ -10423,9 +10235,9 @@ index 976fa0b3..6a73b71a 100644 and there is no member \tcode{mutex_type}. \end{itemize} -@@ -8375,17 +8375,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} @@ -10447,7 +10259,7 @@ index 976fa0b3..6a73b71a 100644 \end{note} \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} -@@ -8435,7 +8435,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 @@ -10456,7 +10268,7 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8477,7 +8477,7 @@ template +@@ -8499,7 +8499,7 @@ template \pnum \expects The supplied \tcode{Mutex} type meets the @@ -10465,7 +10277,7 @@ index 976fa0b3..6a73b71a 100644 \pnum \effects -@@ -8499,7 +8499,7 @@ template +@@ -8521,7 +8521,7 @@ template \begin{itemdescr} \pnum \expects @@ -10474,7 +10286,7 @@ index 976fa0b3..6a73b71a 100644 \pnum \effects -@@ -8586,7 +8586,7 @@ bool try_lock(); +@@ -8608,7 +8608,7 @@ bool try_lock(); \begin{itemdescr} \pnum \expects @@ -10483,7 +10295,7 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8625,7 +8625,7 @@ template +@@ -8647,7 +8647,7 @@ template \begin{itemdescr} \pnum \expects @@ -10492,7 +10304,7 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.timed}. \pnum -@@ -8664,7 +8664,7 @@ template +@@ -8686,7 +8686,7 @@ template \begin{itemdescr} \pnum \expects @@ -10501,9 +10313,9 @@ index 976fa0b3..6a73b71a 100644 \pnum \effects -@@ -8857,16 +8857,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} @@ -10522,7 +10334,7 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -8951,7 +8951,7 @@ template +@@ -8973,7 +8973,7 @@ template \begin{itemdescr} \pnum \expects @@ -10531,7 +10343,7 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8975,7 +8975,7 @@ template +@@ -8997,7 +8997,7 @@ template \begin{itemdescr} \pnum \expects @@ -10540,7 +10352,7 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9100,7 +9100,7 @@ template +@@ -9122,7 +9122,7 @@ template \begin{itemdescr} \pnum \expects @@ -10549,7 +10361,7 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9140,7 +9140,7 @@ template +@@ -9162,7 +9162,7 @@ template \begin{itemdescr} \pnum \expects @@ -10558,7 +10370,7 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9279,7 +9279,7 @@ template int try_lock(L1&, L2&, L3&...); +@@ -9301,7 +9301,7 @@ template int try_lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10567,7 +10379,7 @@ index 976fa0b3..6a73b71a 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9308,7 +9308,7 @@ template void lock(L1&, L2&, L3&...); +@@ -9330,7 +9330,7 @@ template void lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10576,7 +10388,7 @@ index 976fa0b3..6a73b71a 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9977,7 +9977,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} @@ -10585,7 +10397,7 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.basic}. \begin{note} All of the standard -@@ -10915,24 +10915,24 @@ execute atomically. +@@ -10946,24 +10946,24 @@ execute atomically. \pnum \tcode{CompletionFunction} shall meet the @@ -10602,7 +10414,7 @@ index 976fa0b3..6a73b71a 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, @@ -10616,7 +10428,7 @@ index 976fa0b3..6a73b71a 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -11427,7 +11427,7 @@ namespace std { +@@ -11458,7 +11458,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10625,7 +10437,7 @@ index 976fa0b3..6a73b71a 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -11759,7 +11759,7 @@ namespace std { +@@ -11790,7 +11790,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10634,7 +10446,7 @@ index 976fa0b3..6a73b71a 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -12065,7 +12065,7 @@ namespace std { +@@ -12096,7 +12096,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10643,7 +10455,7 @@ index 976fa0b3..6a73b71a 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -13003,7 +13003,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 @@ -10652,7 +10464,7 @@ index 976fa0b3..6a73b71a 100644 \pnum If \tcode{D} is trivially copyable, -@@ -13061,7 +13061,7 @@ namespace std { +@@ -13092,7 +13092,7 @@ namespace std { \pnum This class meets the requirements of @@ -10661,7 +10473,7 @@ index 976fa0b3..6a73b71a 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -13209,8 +13209,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -13240,8 +13240,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -10672,7 +10484,7 @@ index 976fa0b3..6a73b71a 100644 \pnum \effects -@@ -13402,7 +13402,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 @@ -10682,7 +10494,7 @@ index 976fa0b3..6a73b71a 100644 \pnum \tcode{T} may be an incomplete type. diff --git a/source/time.tex b/source/time.tex -index 2d6f9c27..5f3994d7 100644 +index 6b4a0b79..5e264ea3 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1033,13 +1033,13 @@ SI definition is a measure of the quality of implementation. @@ -10723,7 +10535,7 @@ index 2d6f9c27..5f3994d7 100644 unless it meets all of the following conditions: \begin{itemize} \item the \grammarterm{qualified-id}s -@@ -2630,7 +2630,7 @@ template +@@ -2633,7 +2633,7 @@ template \pnum The types defined in \ref{time.clock} meet the @@ -10732,7 +10544,7 @@ index 2d6f9c27..5f3994d7 100644 requirements\iref{time.clock.req} unless otherwise specified. -@@ -2848,7 +2848,7 @@ which is \tcode{10'957 * 86'400s + 22s}. \\ +@@ -2851,7 +2851,7 @@ which is \tcode{10'957 * 86'400s + 22s}. \\ \end{example} \pnum @@ -10741,7 +10553,7 @@ index 2d6f9c27..5f3994d7 100644 unless the implementation can guarantee that \tcode{utc_clock::now()} does not propagate an exception. \begin{note} -@@ -3067,7 +3067,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 @@ -10750,7 +10562,7 @@ index 2d6f9c27..5f3994d7 100644 unless the implementation can guarantee that \tcode{tai_clock::now()} does not propagate an exception. \begin{note} -@@ -3229,7 +3229,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 @@ -10759,7 +10571,7 @@ index 2d6f9c27..5f3994d7 100644 unless the implementation can guarantee that \tcode{gps_clock::now()} does not propagate an exception. \begin{note} -@@ -3366,7 +3366,7 @@ namespace std::chrono { +@@ -3369,7 +3369,7 @@ namespace std::chrono { \pnum \tcode{file_clock} is an alias for a type @@ -10768,7 +10580,7 @@ index 2d6f9c27..5f3994d7 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}. -@@ -3973,8 +3973,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. @@ -10779,7 +10591,7 @@ index 2d6f9c27..5f3994d7 100644 and participates in basic arithmetic with \tcode{days} objects, which represent a difference between two \tcode{day} objects. -@@ -4266,8 +4266,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. @@ -10790,7 +10602,7 @@ index 2d6f9c27..5f3994d7 100644 and participates in basic arithmetic with \tcode{months} objects, which represent a difference between two \tcode{month} objects. -@@ -4576,8 +4576,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. @@ -10801,7 +10613,7 @@ index 2d6f9c27..5f3994d7 100644 and participates in basic arithmetic with \tcode{years} objects, which represent a difference between two \tcode{year} objects. -@@ -4931,10 +4931,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. @@ -10814,7 +10626,7 @@ index 2d6f9c27..5f3994d7 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. -@@ -5514,8 +5514,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. @@ -10825,7 +10637,7 @@ index 2d6f9c27..5f3994d7 100644 \pnum \tcode{month_day} is a trivially copyable and standard-layout class type. -@@ -6015,8 +6015,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}. @@ -10836,7 +10648,7 @@ index 2d6f9c27..5f3994d7 100644 \pnum \tcode{year_month} is a trivially copyable and standard-layout class type. -@@ -6371,8 +6371,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} @@ -10847,7 +10659,7 @@ index 2d6f9c27..5f3994d7 100644 \pnum \tcode{year_month_day} is a trivially copyable and standard-layout class type. -@@ -6832,8 +6832,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} @@ -10858,7 +10670,7 @@ index 2d6f9c27..5f3994d7 100644 \pnum \tcode{year_month_day_last} is a trivially copyable and standard-layout class type. -@@ -7203,7 +7203,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} @@ -10867,7 +10679,7 @@ index 2d6f9c27..5f3994d7 100644 \pnum \tcode{year_month_weekday} is a trivially copyable and standard-layout class type. -@@ -7596,7 +7596,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} @@ -10876,7 +10688,7 @@ index 2d6f9c27..5f3994d7 100644 \pnum \tcode{year_month_weekday_last} is a trivially copyable and standard-layout class type. -@@ -8849,7 +8849,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 @@ -10885,7 +10697,7 @@ index 2d6f9c27..5f3994d7 100644 and has a value type of \tcode{tzdb}. \indexlibrarymember{front}{tzdb_list}% -@@ -11560,7 +11560,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 @@ -10895,10 +10707,10 @@ index 2d6f9c27..5f3994d7 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index 530bb023..f1e23f45 100644 +index d463a05a..a8521ec6 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -270,9 +270,9 @@ template +@@ -277,9 +277,9 @@ template Type \tcode{T} meets the @@ -10910,7 +10722,7 @@ index 530bb023..f1e23f45 100644 requirements. \pnum -@@ -2155,7 +2155,7 @@ template +@@ -2458,7 +2458,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -10919,7 +10731,7 @@ index 530bb023..f1e23f45 100644 \pnum \effects -@@ -2777,7 +2777,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 @@ -10928,7 +10740,7 @@ index 530bb023..f1e23f45 100644 base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -2818,7 +2818,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 @@ -10937,7 +10749,7 @@ index 530bb023..f1e23f45 100644 with a base characteristic of \begin{codeblock} integral_constant -@@ -2856,7 +2856,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 @@ -10946,7 +10758,7 @@ index 530bb023..f1e23f45 100644 with a member typedef \tcode{type} that names the type \tcode{const TE}. \pnum -@@ -3142,7 +3142,7 @@ template +@@ -3445,7 +3445,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -10955,7 +10767,7 @@ index 530bb023..f1e23f45 100644 \pnum \begin{note} -@@ -4038,7 +4038,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); +@@ -4341,7 +4341,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); \pnum \expects @@ -10964,7 +10776,7 @@ index 530bb023..f1e23f45 100644 \pnum \effects -@@ -4095,7 +4095,7 @@ using const_iterator = @\impdef@; +@@ -4398,7 +4398,7 @@ using const_iterator = @\impdef@; \pnum These types model \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, @@ -10973,7 +10785,7 @@ index 530bb023..f1e23f45 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 -@@ -5111,7 +5111,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} @@ -10982,7 +10794,7 @@ index 530bb023..f1e23f45 100644 \end{note} \pnum -@@ -5302,7 +5302,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} @@ -10991,7 +10803,7 @@ index 530bb023..f1e23f45 100644 \end{note} \pnum -@@ -5857,7 +5857,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 @@ -11000,7 +10812,7 @@ index 530bb023..f1e23f45 100644 \pnum A program that instantiates the definition of \tcode{variant} with -@@ -6539,7 +6539,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); +@@ -6857,7 +6857,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11009,7 +10821,7 @@ index 530bb023..f1e23f45 100644 \pnum \effects -@@ -6584,7 +6584,7 @@ template struct variant_size; +@@ -6902,7 +6902,7 @@ template struct variant_size; \begin{itemdescr} \pnum All specializations of \tcode{variant_size} meet the @@ -11018,7 +10830,7 @@ index 530bb023..f1e23f45 100644 with a base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -6597,7 +6597,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 @@ -11027,7 +10839,7 @@ index 530bb023..f1e23f45 100644 base characteristic of \tcode{integral_constant}. \end{itemdescr} -@@ -6617,7 +6617,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 @@ -11036,7 +10848,7 @@ index 530bb023..f1e23f45 100644 member typedef \tcode{type} that names the type \tcode{const VA::type}. \end{itemdescr} -@@ -7348,7 +7348,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 @@ -11045,7 +10857,7 @@ index 530bb023..f1e23f45 100644 \pnum \effects -@@ -7376,7 +7376,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7694,7 +7694,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11054,7 +10866,7 @@ index 530bb023..f1e23f45 100644 \pnum \effects -@@ -7409,7 +7409,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7727,7 +7727,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11063,7 +10875,7 @@ index 530bb023..f1e23f45 100644 \pnum \effects -@@ -7494,7 +7494,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7812,7 +7812,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11072,7 +10884,7 @@ index 530bb023..f1e23f45 100644 \pnum \effects -@@ -7529,7 +7529,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7847,7 +7847,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11081,7 +10893,7 @@ index 530bb023..f1e23f45 100644 \pnum \effects -@@ -7573,7 +7573,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7891,7 +7891,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11090,7 +10902,7 @@ index 530bb023..f1e23f45 100644 \pnum \effects -@@ -8279,9 +8279,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 @@ -11102,7 +10914,7 @@ index 530bb023..f1e23f45 100644 \rSec3[expected.object.cons]{Constructors} -@@ -9521,7 +9521,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} @@ -11111,7 +10923,7 @@ index 530bb023..f1e23f45 100644 \end{note} \pnum -@@ -9662,7 +9662,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 @@ -11120,7 +10932,7 @@ index 530bb023..f1e23f45 100644 \rSec3[expected.void.cons]{Constructors} -@@ -11785,8 +11785,8 @@ is ill-formed. +@@ -12163,8 +12163,8 @@ is ill-formed. \indextext{call wrapper}% \indextext{call wrapper!simple}% \indextext{call wrapper!forwarding}% @@ -11131,7 +10943,7 @@ index 530bb023..f1e23f45 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. -@@ -11826,7 +11826,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 @@ -11140,7 +10952,7 @@ index 530bb023..f1e23f45 100644 and whose copy constructor, move constructor, and assignment operators are constexpr functions that do not throw exceptions. -@@ -11929,7 +11929,7 @@ namespace std { +@@ -12307,7 +12307,7 @@ namespace std { \end{codeblock} \pnum @@ -11149,7 +10961,7 @@ index 530bb023..f1e23f45 100644 around a reference to an object or function of type \tcode{T}. \pnum -@@ -13383,7 +13383,7 @@ is \tcode{true}. +@@ -13761,7 +13761,7 @@ is \tcode{true}. \pnum \expects @@ -11158,7 +10970,7 @@ index 530bb023..f1e23f45 100644 \pnum \returns -@@ -13469,10 +13469,10 @@ is \tcode{true}. +@@ -13847,10 +13847,10 @@ is \tcode{true}. \pnum \expects @@ -11171,7 +10983,7 @@ index 530bb023..f1e23f45 100644 \pnum \returns -@@ -13538,7 +13538,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}, @@ -11180,7 +10992,7 @@ index 530bb023..f1e23f45 100644 \pnum \returns -@@ -13583,7 +13583,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 @@ -11189,7 +11001,7 @@ index 530bb023..f1e23f45 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}. -@@ -13619,7 +13619,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 @@ -11198,7 +11010,7 @@ index 530bb023..f1e23f45 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 -@@ -13669,7 +13669,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 @@ -11207,7 +11019,7 @@ index 530bb023..f1e23f45 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 -@@ -13705,8 +13705,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 @@ -11218,7 +11030,7 @@ index 530bb023..f1e23f45 100644 \end{note} \end{itemdescr} -@@ -13775,13 +13775,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 @@ -11235,7 +11047,7 @@ index 530bb023..f1e23f45 100644 but if so, their copy assignment operators are constexpr functions that do not throw exceptions. -@@ -14049,7 +14049,7 @@ Let \tcode{FD} be \tcode{decay_t}. +@@ -14430,7 +14430,7 @@ Let \tcode{FD} be \tcode{decay_t}. \pnum \expects @@ -11244,7 +11056,7 @@ index 530bb023..f1e23f45 100644 \pnum \ensures -@@ -14474,9 +14474,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14855,9 +14855,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11256,7 +11068,7 @@ index 530bb023..f1e23f45 100644 \pnum \ensures -@@ -14526,9 +14526,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14907,9 +14907,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11268,7 +11080,7 @@ index 530bb023..f1e23f45 100644 \pnum \ensures -@@ -14568,9 +14568,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14949,9 +14949,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11280,7 +11092,7 @@ index 530bb023..f1e23f45 100644 \pnum \ensures -@@ -14892,8 +14892,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -15273,8 +15273,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11291,7 +11103,7 @@ index 530bb023..f1e23f45 100644 \pnum \ensures -@@ -14948,8 +14948,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -15329,8 +15329,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11302,7 +11114,7 @@ index 530bb023..f1e23f45 100644 \pnum \ensures -@@ -14994,8 +14994,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -15375,8 +15375,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11313,7 +11125,7 @@ index 530bb023..f1e23f45 100644 \pnum \ensures -@@ -15512,7 +15512,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} @@ -11322,7 +11134,7 @@ index 530bb023..f1e23f45 100644 Template parameters named \begin{itemize} \item \tcode{ForwardIterator}, -@@ -15526,7 +15526,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}. @@ -11331,7 +11143,7 @@ index 530bb023..f1e23f45 100644 requirements (\tref{cpp17.hash}). \pnum -@@ -15635,9 +15635,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 @@ -11344,7 +11156,7 @@ index 530bb023..f1e23f45 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15736,8 +15736,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, +@@ -16161,8 +16161,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, \begin{itemdescr} \pnum \expects @@ -11355,7 +11167,7 @@ index 530bb023..f1e23f45 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15810,7 +15810,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} @@ -11364,7 +11176,7 @@ index 530bb023..f1e23f45 100644 disabled specializations do not. \end{note} Each header that declares the template \tcode{hash} -@@ -15837,17 +15837,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 @@ -11391,28 +11203,27 @@ index 530bb023..f1e23f45 100644 2.43.0 -From 572bce7fa3719c510e17c9b289ae342980d00227 Mon Sep 17 00:00:00 2001 +From c18b462efcc14f654e972f99364c504f4863117f Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 Subject: [PATCH 09/10] Remove awkward \linebreaks. --- source/algorithms.tex | 4 ++-- - source/containers.tex | 40 ++++++++++++++++++++-------------------- - source/exec.tex | 12 ++++++------ + 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 | 8 ++++---- - 9 files changed, 61 insertions(+), 61 deletions(-) + 8 files changed, 56 insertions(+), 56 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 16604a18..645754f2 100644 +index 600c9685..e289b9b5 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -7080,7 +7080,7 @@ Let: +@@ -7073,7 +7073,7 @@ Let: \tcode{invoke(op, invoke(proj, *(first1 + (i - result))))} for unary transforms defined in namespace \tcode{ranges}; \item @@ -11421,7 +11232,7 @@ index 16604a18..645754f2 100644 for binary transforms defined in namespace \tcode{ranges}. \end{itemize} \end{itemize} -@@ -14217,7 +14217,7 @@ namespace ranges { +@@ -14212,7 +14212,7 @@ namespace ranges { \pnum \constraints \tcode{is_unbounded_array_v} is \tcode{false}. @@ -11431,7 +11242,7 @@ index 16604a18..645754f2 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index 8e93903a..4d27d6ad 100644 +index 1c6cb497..ace39839 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1461,7 +1461,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11478,7 +11289,7 @@ index 8e93903a..4d27d6ad 100644 \pnum \returns -@@ -10706,7 +10706,7 @@ template +@@ -10742,7 +10742,7 @@ template \pnum The expression \tcode{\exposid{is-vector-bool-reference}} is \tcode{true} @@ -11487,7 +11298,7 @@ index 8e93903a..4d27d6ad 100644 for some type \tcode{Alloc} and \tcode{vector} is not a program-defined specialization. \end{itemdescr} -@@ -12103,7 +12103,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)), @@ -11496,7 +11307,7 @@ index 8e93903a..4d27d6ad 100644 If \tcode{equal_range(u.first) == r} is \tcode{false}, the behavior is undefined. Inserts \tcode{u} into \tcode{*this}. -@@ -17796,7 +17796,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} @@ -11505,7 +11316,7 @@ index 8e93903a..4d27d6ad 100644 if the map already contains an element whose key is equivalent to \tcode{t.first}, \tcode{*this} is unchanged. -@@ -18068,7 +18068,7 @@ template +@@ -18089,7 +18089,7 @@ template \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11514,7 +11325,7 @@ index 8e93903a..4d27d6ad 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18123,7 +18123,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}, @@ -11523,7 +11334,7 @@ index 8e93903a..4d27d6ad 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18753,14 +18753,14 @@ template +@@ -18774,14 +18774,14 @@ template \pnum \effects Equivalent to \tcode{flat_multimap(key_cont, mapped_cont)} and @@ -11576,7 +11387,7 @@ index 8e93903a..4d27d6ad 100644 would achieve this. \end{note} \end{itemdescr} -@@ -24091,13 +24091,13 @@ is representable as a value of type \tcode{index_type}. +@@ -24095,7 +24095,7 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -11585,14 +11396,7 @@ index 8e93903a..4d27d6ad 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 -@@ -24170,7 +24170,7 @@ template +@@ -24174,7 +24174,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11601,7 +11405,7 @@ index 8e93903a..4d27d6ad 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -24245,7 +24245,7 @@ is \tcode{true}. +@@ -24249,7 +24249,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11611,28 +11415,19 @@ index 8e93903a..4d27d6ad 100644 @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) diff --git a/source/exec.tex b/source/exec.tex -index 000fe37d..4a9cbe26 100644 +index 9a2154a7..81623295 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -3292,7 +3292,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 -@@ -3672,7 +3672,7 @@ except that \tcode{sndr} is evaluated only once. +@@ -3915,7 +3915,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. -@@ -3814,7 +3814,7 @@ Let the expression \exposid{then-cpo} be one of + then the expression \tcode{on.transform_sender(out_sndr, env)} is ill-formed. + +@@ -4020,7 +4020,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}, @@ -11641,16 +11436,7 @@ index 000fe37d..4a9cbe26 100644 \pnum Otherwise, -@@ -4115,7 +4115,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. -@@ -4756,7 +4756,7 @@ try { +@@ -4983,7 +4983,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -11659,20 +11445,20 @@ index 000fe37d..4a9cbe26 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -5787,7 +5787,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. +@@ -6153,7 +6153,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: diff --git a/source/memory.tex b/source/memory.tex -index b7efaa69..2974c94e 100644 +index 2dea2cc5..e1572fe6 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1245,7 +1245,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 @@ -11681,7 +11467,7 @@ index b7efaa69..2974c94e 100644 return \tcode{forward_as_tuple(std::forward(args)...)}. \item Otherwise, if \tcode{uses_allocator_v, Alloc>} is \tcode{true} and -@@ -4206,7 +4206,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 @@ -11690,7 +11476,7 @@ index b7efaa69..2974c94e 100644 \tcode{allocate_shared_for_overwrite}, it is initialized via the expression \tcode{::new(pv) U}, where \tcode{pv} has type \tcode{void*} and -@@ -5441,7 +5441,7 @@ if (p) { +@@ -5481,7 +5481,7 @@ if (p) { \end{codeblock} if the expression \tcode{s.reset(static_cast(p), std::forward(args)...)} @@ -11700,10 +11486,10 @@ index b7efaa69..2974c94e 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index 925356e2..f933e848 100644 +index 64dc0929..99eecfb1 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -2526,7 +2526,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 @@ -11712,30 +11498,8 @@ index 925356e2..f933e848 100644 then the member typedef \tcode{type} denotes \tcode{R}. \item Otherwise, if -diff --git a/source/numerics.tex b/source/numerics.tex -index 10fdf6e7..41deb6c1 100644 ---- a/source/numerics.tex -+++ b/source/numerics.tex -@@ -13822,7 +13822,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. - a specialization of \tcode{complex}. - 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 -@@ -14023,7 +14023,7 @@ template())}. --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 9fff6e28..3f999c75 100644 +index c339582a..b1943a7e 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -11756,7 +11520,7 @@ index 9fff6e28..3f999c75 100644 \tcode{make_from_tuple(std::move(bound_args))}. The behavior is undefined if \tcode{Bound} is not \tcode{unreachable_sentinel_t} and -@@ -5921,7 +5921,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), @@ -11765,7 +11529,7 @@ index 9fff6e28..3f999c75 100644 except that \tcode{E} is evaluated only once. \item -@@ -6402,7 +6402,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 @@ -11774,7 +11538,7 @@ index 9fff6e28..3f999c75 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. -@@ -7454,7 +7454,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 @@ -11783,7 +11547,7 @@ index 9fff6e28..3f999c75 100644 \item If \begin{codeblock} -@@ -7963,7 +7963,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 @@ -11792,7 +11556,7 @@ index 9fff6e28..3f999c75 100644 \end{itemdescr} \rSec3[range.lazy.split.outer]{Class template \tcode{lazy_split_view::\exposid{outer-iterator}}} -@@ -8274,7 +8274,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 @@ -11801,7 +11565,7 @@ index 9fff6e28..3f999c75 100644 \tcode{\libconcept{derived_from}}; \item otherwise, \tcode{iterator_traits>::iterator_category}. \end{itemize} -@@ -8494,7 +8494,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 @@ -11810,7 +11574,7 @@ index 9fff6e28..3f999c75 100644 \end{itemdescr} \indexlibrarymember{begin}{split_view} -@@ -9060,7 +9060,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. +@@ -9158,7 +9158,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. \item Otherwise, if \tcode{\exposconcept{all-forward}} is modeled, @@ -11819,7 +11583,7 @@ index 9fff6e28..3f999c75 100644 \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} -@@ -9086,14 +9086,14 @@ let \tcode{Cs} denote the pack of types +@@ -9184,14 +9184,14 @@ let \tcode{Cs} denote the pack of types \begin{itemize} \item If @@ -11837,7 +11601,7 @@ index 9fff6e28..3f999c75 100644 \item Otherwise, if \tcode{(\libconcept{derived_from} \&\& ...)} -@@ -9545,11 +9545,11 @@ Let +@@ -9643,11 +9643,11 @@ Let %FIXME This is hard to parse. If \tcode{$i_\tcode{x}$ > $i_\tcode{y}$}, let \tcode{$d_\tcode{y}$} be @@ -11852,7 +11616,7 @@ index 9fff6e28..3f999c75 100644 for every integer \tcode{$i$} in the range \range{$i_\tcode{y}$ + 1}{$i_\tcode{x}$} if there is any, and -@@ -9592,7 +9592,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul +@@ -9690,7 +9690,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 @@ -11861,7 +11625,7 @@ index 9fff6e28..3f999c75 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 -@@ -9749,7 +9749,7 @@ is expression-equivalent to: +@@ -9847,7 +9847,7 @@ is expression-equivalent to: \begin{itemize} \item If \tcode{T} models \libconcept{contiguous_iterator}, @@ -11870,7 +11634,7 @@ index 9fff6e28..3f999c75 100644 \item Otherwise, if \tcode{T} models \libconcept{random_access_iterator}, -@@ -13455,7 +13455,7 @@ is defined as follows: +@@ -13556,7 +13556,7 @@ is defined as follows: \item If \tcode{invoke_result_t<\exposid{maybe-const}\&, \exposid{REPEAT}(range_reference_t<\exposid{Base}>, N)...>} @@ -11879,7 +11643,7 @@ index 9fff6e28..3f999c75 100644 \tcode{iterator_category} denotes \tcode{input_iterator_tag}. \item Otherwise, let \tcode{C} denote the type -@@ -14566,7 +14566,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ +@@ -14667,7 +14667,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_})}, @@ -11889,10 +11653,10 @@ index 9fff6e28..3f999c75 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index 6a73b71a..d966dcbf 100644 +index 98143cb4..f00c8ecd 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -3480,7 +3480,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 @@ -11901,7 +11665,7 @@ index 6a73b71a..d966dcbf 100644 \pnum \effects -@@ -4773,7 +4773,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 @@ -11910,7 +11674,7 @@ index 6a73b71a..d966dcbf 100644 \pnum \effects -@@ -6284,7 +6284,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de +@@ -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 @@ -11919,7 +11683,7 @@ index 6a73b71a..d966dcbf 100644 \pnum \effects -@@ -6600,7 +6600,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire +@@ -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 @@ -11929,10 +11693,10 @@ index 6a73b71a..d966dcbf 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index f1e23f45..c980a039 100644 +index a8521ec6..6c5b1c0a 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -2078,7 +2078,7 @@ equals \tcode{tuple_size_v>}, +@@ -2381,7 +2381,7 @@ equals \tcode{tuple_size_v>}, \item \tcode{(is_constructible_v(std::forward(u)))> \&\& ...)} @@ -11941,7 +11705,7 @@ index f1e23f45..c980a039 100644 \tcode{true}, and \item -@@ -3096,7 +3096,7 @@ denotes a type. +@@ -3399,7 +3399,7 @@ denotes a type. \pnum \result The member \grammarterm{typedef-name} \tcode{type} denotes the type @@ -11950,7 +11714,7 @@ index f1e23f45..c980a039 100644 \end{itemdescr} \indexlibrarymember{common_type}{tuple}% -@@ -4103,7 +4103,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 @@ -11959,7 +11723,7 @@ index f1e23f45..c980a039 100644 \pnum Any operation that initializes or destroys the contained value of an optional object invalidates all iterators into that object. -@@ -9107,7 +9107,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 @@ -11972,7 +11736,7 @@ index f1e23f45..c980a039 100644 2.43.0 -From e3aff7dee9e37fa14bc6ac447bfa0dd135589ce3 Mon Sep 17 00:00:00 2001 +From 3ed0ca416602d5a04615520b7ba15ac52b872eec Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 25 Dec 2025 12:43:53 +0100 Subject: [PATCH 10/10] Use \literalterminal more. @@ -11982,10 +11746,10 @@ Subject: [PATCH 10/10] Use \literalterminal more. 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/source/lex.tex b/source/lex.tex -index 1b8befd1..809a61b2 100644 +index cf26fce7..e5a112a8 100644 --- a/source/lex.tex +++ b/source/lex.tex -@@ -446,7 +446,7 @@ for the respective Unicode encoding form. +@@ -449,7 +449,7 @@ for the respective Unicode encoding form. \begin{bnf} \nontermdef{named-universal-character}\br @@ -11994,7 +11758,7 @@ index 1b8befd1..809a61b2 100644 \end{bnf} \begin{bnf} -@@ -461,9 +461,9 @@ for the respective Unicode encoding form. +@@ -464,9 +464,9 @@ for the respective Unicode encoding form. \begin{bnf} \nontermdef{universal-character-name}\br @@ -12007,7 +11771,7 @@ index 1b8befd1..809a61b2 100644 named-universal-character \end{bnf} -@@ -1170,14 +1170,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1187,14 +1187,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{binary-literal}\br @@ -12025,7 +11789,7 @@ index 1b8befd1..809a61b2 100644 octal-literal \opt{\literalterminal{'}} octal-digit \end{bnf} -@@ -1194,22 +1194,22 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -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 diff --git a/lastbuild.sig b/lastbuild.sig index 0435edfefb..71dffdea72 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ htmlgen ec08ed9082b71d87ffc970becceff11c5f8438b2 -draft 5c8fc4311ab8ec82f789e9eadf4cf39f47beabf9 -4d7f727a3cef73dafed68af528bc04371326b1f9 htmlgen.patch +draft 1e747bf358e4546e9661c6bcee01a1dd71d2186f +dd8cc3cb92b400f1a882557061648f8156b9a6cc htmlgen.patch From 122a149bfeaadb4dc2d4bde3fdcd3c7bf375e316 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Tue, 21 Apr 2026 22:01:03 -0500 Subject: [PATCH 14/18] Update --- all.patch | 32 ++++++++++++++++++++++++++++++++ gen_html_std.sh | 2 +- gh-pages | 2 +- lastbuild.sig | 1 + 4 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 all.patch diff --git a/all.patch b/all.patch new file mode 100644 index 0000000000..48f6b322bc --- /dev/null +++ b/all.patch @@ -0,0 +1,32 @@ +From 19e05f38d286ea889af4e0ef2bd2095ebc953d95 Mon Sep 17 00:00:00 2001 +From: timsong-cpp +Date: Tue, 21 Apr 2026 21:51:27 -0500 +Subject: [PATCH] [meta.define.static] Move misplaced \end{codeblock} + +--- + source/meta.tex | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/source/meta.tex b/source/meta.tex +index bfebda45..0f5f5a68 100644 +--- a/source/meta.tex ++++ b/source/meta.tex +@@ -3297,6 +3297,7 @@ if (meta::is_array_type(meta::type_of(array))) { + } else { + return span(static_cast(nullptr), 0); + } ++\end{codeblock} + + \pnum + \remarks +@@ -3304,7 +3305,6 @@ The second template argument of the returned \tcode{span} type + is \tcode{static_cast(ranges::size(r))} + if \tcode{ranges::size(r)} is a constant expression, and + \tcode{dynamic_extent} otherwise. +-\end{codeblock} + \end{itemdescr} + + \indexlibraryglobal{define_static_object}% +-- +2.43.0 + diff --git a/gen_html_std.sh b/gen_html_std.sh index 2e18c5df43..f9ec3bef8d 100755 --- a/gen_html_std.sh +++ b/gen_html_std.sh @@ -70,7 +70,7 @@ 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 0726db91c8..dbef578333 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 0726db91c826d1ca39f90d991585882467de554c +Subproject commit dbef57833321af757e32d1e3e9909357a8a6627b diff --git a/lastbuild.sig b/lastbuild.sig index 71dffdea72..1b1adfeb6a 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,4 @@ htmlgen ec08ed9082b71d87ffc970becceff11c5f8438b2 draft 1e747bf358e4546e9661c6bcee01a1dd71d2186f +3f412befff9815972eb9f8b3fd8aca2324c7d58b all.patch dd8cc3cb92b400f1a882557061648f8156b9a6cc htmlgen.patch From cf7475b20e81854227f77e77a87efe93aa4733be Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Mon, 27 Apr 2026 00:19:48 -0500 Subject: [PATCH 15/18] Update --- all.patch | 70 +++++++++----- cxxdraft-htmlgen | 2 +- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 239 +++++++++++++++++++++++------------------------ lastbuild.sig | 8 +- 6 files changed, 169 insertions(+), 154 deletions(-) diff --git a/all.patch b/all.patch index 48f6b322bc..e53ce4a822 100644 --- a/all.patch +++ b/all.patch @@ -1,32 +1,56 @@ -From 19e05f38d286ea889af4e0ef2bd2095ebc953d95 Mon Sep 17 00:00:00 2001 +From 19e297bce01ae69c917d0b8bfb5f1f1491cc8804 Mon Sep 17 00:00:00 2001 From: timsong-cpp -Date: Tue, 21 Apr 2026 21:51:27 -0500 -Subject: [PATCH] [meta.define.static] Move misplaced \end{codeblock} +Date: Sun, 26 Apr 2026 23:50:34 -0500 +Subject: [PATCH 1/2] [exec.get.compl.sched] Remove spurious @ --- - source/meta.tex | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + source/exec.tex | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -diff --git a/source/meta.tex b/source/meta.tex -index bfebda45..0f5f5a68 100644 ---- a/source/meta.tex -+++ b/source/meta.tex -@@ -3297,6 +3297,7 @@ if (meta::is_array_type(meta::type_of(array))) { - } else { - return span(static_cast(nullptr), 0); - } -+\end{codeblock} +diff --git a/source/exec.tex b/source/exec.tex +index f4e308d8..3f55bde5 100644 +--- a/source/exec.tex ++++ b/source/exec.tex +@@ -1130,11 +1130,11 @@ if the type of \tcode{q} satisfies \libconcept{scheduler} and + \tcode{envs} is not an empty pack, + except that \tcode{envs...} is evaluated. + \item +-Otherwise, \tcode{get_completion_scheduler<@\exposid{completion-fn-tag}@>(q, envs...)} ++Otherwise, \tcode{get_completion_scheduler<\exposid{completion-fn-tag}>(q, envs...)} + is ill-formed. + \end{itemize} + \mandates +-If \tcode{get_completion_scheduler<@\exposid{completion-fn-tag}@>(q, envs...)} ++If \tcode{get_completion_scheduler<\exposid{completion-fn-tag}>(q, envs...)} + is well-formed, + its type satisfies \libconcept{scheduler}. - \pnum - \remarks -@@ -3304,7 +3305,6 @@ The second template argument of the returned \tcode{span} type - is \tcode{static_cast(ranges::size(r))} - if \tcode{ranges::size(r)} is a constant expression, and - \tcode{dynamic_extent} otherwise. --\end{codeblock} +-- +2.43.0 + + +From a26a612a93ae3780426fe142c956bbd6f3794ad0 Mon Sep 17 00:00:00 2001 +From: timsong-cpp +Date: Mon, 27 Apr 2026 00:13:14 -0500 +Subject: [PATCH 2/2] [exec.spawn.future] Add missing @ + +--- + source/exec.tex | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/source/exec.tex b/source/exec.tex +index 3f55bde5..61e8379b 100644 +--- a/source/exec.tex ++++ b/source/exec.tex +@@ -5763,7 +5763,7 @@ std::move(this->@\exposid{result}@).visit( + }, std::move(tuple)); + } + }); +-@\exposid{destroy}(); ++@\exposid{destroy}@(); + \end{codeblock} + \end{itemize} \end{itemdescr} - - \indexlibraryglobal{define_static_object}% -- 2.43.0 diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen index ec08ed9082..63bc5929dc 160000 --- a/cxxdraft-htmlgen +++ b/cxxdraft-htmlgen @@ -1 +1 @@ -Subproject commit ec08ed9082b71d87ffc970becceff11c5f8438b2 +Subproject commit 63bc5929dc4fa6bb7448390ecec586c8069516b7 diff --git a/draft b/draft index 1e747bf358..d7c02a0f5c 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 1e747bf358e4546e9661c6bcee01a1dd71d2186f +Subproject commit d7c02a0f5c21cd235a0ed3921a30b19d75771f2e diff --git a/gh-pages b/gh-pages index dbef578333..4f35cfa20f 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit dbef57833321af757e32d1e3e9909357a8a6627b +Subproject commit 4f35cfa20fbbc1d2a58d86ca2d03a74faaf92765 diff --git a/htmlgen.patch b/htmlgen.patch index 9b4a155f5d..1f4662d816 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From b60946b63be3c75c4fd6750a7c4776a6bbe6824b Mon Sep 17 00:00:00 2001 +From 0dac0f606043fceca51128dc97ceb1977321e2ed Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout @@ -10,7 +10,7 @@ Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index 43122c5e..09feaca9 100644 +index cf9f4d86..1e8fe13a 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -342,7 +342,7 @@ Given @@ -59,7 +59,7 @@ index 43122c5e..09feaca9 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index ea8b1848..fb8b4ea2 100644 +index ee17db06..a927ad91 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2939,7 +2939,7 @@ struct s2 { @@ -75,7 +75,7 @@ index ea8b1848..fb8b4ea2 100644 2.43.0 -From 1d3d72cbf6686216eb8474491baf4bcd08568eb0 Mon Sep 17 00:00:00 2001 +From 72339cc06b7b760642fc93a82de59d47af67650b Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 Subject: [PATCH 02/10] Use new link macros. @@ -96,7 +96,7 @@ Subject: [PATCH 02/10] Use new link macros. source/iostreams.tex | 74 +++++------ source/iterators.tex | 6 +- source/lex.tex | 6 +- - source/lib-intro.tex | 71 +++++------ + source/lib-intro.tex | 69 +++++------ source/limits.tex | 2 +- source/numerics.tex | 55 ++++----- source/overloading.tex | 64 +++++----- @@ -108,10 +108,10 @@ Subject: [PATCH 02/10] Use new link macros. source/threads.tex | 35 +++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 574 insertions(+), 586 deletions(-) + 27 files changed, 573 insertions(+), 585 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index af6c2c98..3074bc3a 100644 +index 2fcdf94a..ea4d7f5f 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -133,7 +133,7 @@ index af6c2c98..3074bc3a 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index 09feaca9..c6a2b6c0 100644 +index 1e8fe13a..34aebafa 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -180,7 +180,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -444,7 +444,7 @@ index 09feaca9..c6a2b6c0 100644 a \grammarterm{constant-expression}\iref{expr.const.core}, \item diff --git a/source/classes.tex b/source/classes.tex -index fbd7a165..76ea152b 100644 +index 78a504f0..8c2f3c53 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -188,10 +188,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: @@ -509,7 +509,7 @@ index fbd7a165..76ea152b 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}; -@@ -2238,7 +2238,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} @@ -518,7 +518,7 @@ index fbd7a165..76ea152b 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}. -@@ -6346,7 +6346,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; @@ -591,7 +591,7 @@ index d1e15a6e..42828a4b 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index 571b56d0..65081f46 100644 +index 43f506d2..394d0c38 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -6125,14 +6125,14 @@ namespace std { @@ -776,7 +776,7 @@ index 571b56d0..65081f46 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index 0e0c521e..00cff00a 100644 +index 3ab79575..d488264d 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -975,7 +975,7 @@ index 0e0c521e..00cff00a 100644 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 fc53cdb3..9a7aba83 100644 +index d842475b..eee2454e 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -508,13 +508,13 @@ the current state of \tcode{NDEBUG} each time that @@ -1144,7 +1144,7 @@ index 465c8197..b01c7719 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index fb8b4ea2..388f5d39 100644 +index a927ad91..168ff89d 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1905,7 +1905,7 @@ index fb8b4ea2..388f5d39 100644 \item diff --git a/source/future.tex b/source/future.tex -index a8772f66..88603947 100644 +index 72dbeabb..dc26444a 100644 --- a/source/future.tex +++ b/source/future.tex @@ -14,7 +14,7 @@ is defined as: @@ -2366,7 +2366,7 @@ index ed599d97..46edb440 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index ce8aa22a..5e62f101 100644 +index bfd55be5..5baaf9a1 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2390,7 +2390,7 @@ index ce8aa22a..5e62f101 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 9422f9ea..bc8ce8e8 100644 +index 24029adb..6c8b5dab 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2484,16 +2484,7 @@ index 9422f9ea..bc8ce8e8 100644 \rSec2[utility.requirements]{Requirements on types and expressions} -@@ -1828,7 +1828,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}} -@@ -1953,13 +1953,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 @@ -2510,7 +2501,7 @@ index 9422f9ea..bc8ce8e8 100644 \end{itemize} \begin{note} If \tcode{T} and \tcode{U} are both fundamental types or arrays of -@@ -2062,8 +2062,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 @@ -2522,7 +2513,7 @@ index 9422f9ea..bc8ce8e8 100644 had been evaluated in place of \tcode{p}. \pnum -@@ -2166,7 +2167,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 @@ -2531,7 +2522,7 @@ index 9422f9ea..bc8ce8e8 100644 allocators. \pnum -@@ -2992,7 +2993,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 @@ -2540,7 +2531,7 @@ index 9422f9ea..bc8ce8e8 100644 other than \tcode{value_type} are complete types. \end{itemize} -@@ -3003,11 +3004,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 @@ -2556,7 +2547,7 @@ index 9422f9ea..bc8ce8e8 100644 \rSec3[namespace.constraints]{Namespace use} -@@ -3418,7 +3419,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 @@ -2565,7 +2556,7 @@ index 9422f9ea..bc8ce8e8 100644 the behavior is undefined.% \indextext{source file}% \indextext{undefined} -@@ -3589,7 +3590,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 @@ -2574,7 +2565,7 @@ index 9422f9ea..bc8ce8e8 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. -@@ -3655,7 +3656,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 @@ -2583,7 +2574,7 @@ index 9422f9ea..bc8ce8e8 100644 shall include only their corresponding \Cpp{} standard library header, as described in~\ref{headers}. -@@ -3683,7 +3684,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 @@ -2592,7 +2583,7 @@ index 9422f9ea..bc8ce8e8 100644 \pnum A call to a non-member function signature -@@ -3711,7 +3712,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 @@ -2601,7 +2592,7 @@ index 9422f9ea..bc8ce8e8 100644 \effects \begin{codeblock} -@@ -3726,7 +3727,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 @@ -2610,7 +2601,7 @@ index 9422f9ea..bc8ce8e8 100644 \pnum For a non-virtual member function described in the \Cpp{} standard library, -@@ -3815,8 +3816,8 @@ the behavior is undefined unless otherwise specified. +@@ -3809,8 +3810,8 @@ the behavior is undefined unless otherwise specified. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -2621,7 +2612,7 @@ index 9422f9ea..bc8ce8e8 100644 Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. -@@ -3859,7 +3860,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 @@ -2630,7 +2621,7 @@ index 9422f9ea..bc8ce8e8 100644 \pnum \begin{note} -@@ -3974,7 +3975,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 @@ -2653,7 +2644,7 @@ index e0596a32..877f21f3 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index f127499a..0fef1e5d 100644 +index 36f4bc1b..bdf02769 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -3575,7 +3566,7 @@ index e86cf147..0dd4cd06 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 b5c2e933..5f70947b 100644 +index 36975546..0fde0978 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -716,7 +716,7 @@ struct A {}; @@ -3994,7 +3985,7 @@ index b5c2e933..5f70947b 100644 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 679b2960..363ff13c 100644 +index 3769ac1a..9176b33a 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4184,7 +4175,7 @@ index a29b08ed..b4d55717 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index a284b4f1..f8e08fe3 100644 +index 9cedb5cf..e6eba26a 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -120,15 +120,15 @@ namespace std { @@ -4273,7 +4264,7 @@ index a284b4f1..f8e08fe3 100644 2.43.0 -From 60cd2c71f1c5afd5823cd7cd854ff6631771cabb Mon Sep 17 00:00:00 2001 +From ddf04f017e95bc41342a578ece248e8c7f17b588 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove @@ -4298,7 +4289,7 @@ index aff85000..4cf63702 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index 5f70947b..5b4f6ad6 100644 +index 0fde0978..3d76fc07 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -2154,7 +2154,6 @@ so it does match \#2. @@ -4326,7 +4317,7 @@ index 5f70947b..5b4f6ad6 100644 2.43.0 -From b3979fdc7f9e5993e9c6d9c0d9247321fe537de1 Mon Sep 17 00:00:00 2001 +From 2d2da697a766ca9ad1dfa83d27bb4a5175d7b856 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code @@ -4357,7 +4348,7 @@ index b01c7719..76071483 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index 5e62f101..cf26fce7 100644 +index 5baaf9a1..2e1da4ca 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -336,43 +336,43 @@ the numerical value has no other meaning in this context. @@ -5774,7 +5765,7 @@ index b4d55717..62226224 100644 2.43.0 -From 71c3023d731d3f13978d8fbbefc7050405191d2f Mon Sep 17 00:00:00 2001 +From 2af5c65e7ae06d6691815f301b1280c73ef8c3c7 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. @@ -5809,7 +5800,7 @@ Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. 26 files changed, 267 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 3074bc3a..fad5f7c8 100644 +index ea4d7f5f..69602731 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -8698,7 +8698,6 @@ but stronger than those for a partial ordering. @@ -5845,7 +5836,7 @@ index 3074bc3a..fad5f7c8 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index c6a2b6c0..d03e2989 100644 +index 34aebafa..c2ab775e 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -312,7 +312,6 @@ int X::y = 1; // defines \tcode{X::y} @@ -5873,10 +5864,10 @@ index c6a2b6c0..d03e2989 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 76ea152b..62849329 100644 +index 8c2f3c53..fd067ac2 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -1641,7 +1641,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} @@ -5884,7 +5875,7 @@ index 76ea152b..62849329 100644 \indextext{constructor!move!non-trivial}% otherwise the copy/move constructor is \defnx{non-trivial}{constructor!copy!nontrivial}. -@@ -3265,7 +3264,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: @@ -5892,7 +5883,7 @@ index 76ea152b..62849329 100644 \begin{codeblock} u.m.~M(); new (&u.n) N; -@@ -3447,7 +3445,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: @@ -5900,7 +5891,7 @@ index 76ea152b..62849329 100644 \begin{bnf} \nontermdef{base-clause}\br \terminal{:} base-specifier-list -@@ -5426,7 +5423,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 @@ -5908,7 +5899,7 @@ index 76ea152b..62849329 100644 \begin{bnf} \nontermdef{ctor-initializer}\br \terminal{:} mem-initializer-list -@@ -5897,7 +5893,6 @@ public: +@@ -5895,7 +5891,6 @@ public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; \end{codeblock} @@ -5916,7 +5907,7 @@ index 76ea152b..62849329 100644 \end{example} \rSec2[class.inhctor.init]{Initialization by inherited constructor}% -@@ -6553,7 +6548,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 @@ -5924,7 +5915,7 @@ index 76ea152b..62849329 100644 \begin{itemize} \item \tcode{a} or \tcode{b} is of class or enumeration type and -@@ -6674,7 +6668,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: @@ -5932,7 +5923,7 @@ index 76ea152b..62849329 100644 \begin{itemize} \item If \tcode{a <=> b} is usable\iref{class.compare.default} and -@@ -6774,7 +6767,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: @@ -6114,7 +6105,7 @@ index 42828a4b..3e64abc8 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 65081f46..1c6cb497 100644 +index 394d0c38..1e0aedc6 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6205,7 +6196,7 @@ index 65081f46..1c6cb497 100644 \item \tcode{Extents::static_extent($k$)} diff --git a/source/declarations.tex b/source/declarations.tex -index 00cff00a..135ca134 100644 +index d488264d..f30652b2 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1593,7 +1593,6 @@ a partial specialization\iref{temp.spec.partial}, @@ -6346,7 +6337,7 @@ index 76071483..3a2e459d 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 388f5d39..2804e820 100644 +index 168ff89d..221b68d0 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -467,7 +467,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -6542,7 +6533,7 @@ index 388f5d39..2804e820 100644 \rSec2[expr.yield]{Yielding a value}% diff --git a/source/future.tex b/source/future.tex -index 88603947..24498cbb 100644 +index dc26444a..ac4ac504 100644 --- a/source/future.tex +++ b/source/future.tex @@ -283,7 +283,6 @@ shown in the above synopsis. @@ -6801,7 +6792,7 @@ index 46edb440..b083ad28 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index bc8ce8e8..7e1320d3 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. @@ -6884,7 +6875,7 @@ index bc8ce8e8..7e1320d3 100644 \begin{codeblock} streambuf* sb; // \expos \end{codeblock} -@@ -1944,7 +1934,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: @@ -6892,7 +6883,7 @@ index bc8ce8e8..7e1320d3 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}. -@@ -2950,7 +2939,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}: @@ -6900,7 +6891,7 @@ index bc8ce8e8..7e1320d3 100644 \begin{codeblock} template struct SimpleAllocator { -@@ -3444,13 +3432,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. @@ -6914,7 +6905,7 @@ index bc8ce8e8..7e1320d3 100644 \begin{itemize} \item \tcode{terminate_handler} -@@ -3471,7 +3457,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: @@ -6922,7 +6913,7 @@ index bc8ce8e8..7e1320d3 100644 \begin{itemize} \item \indexlibraryglobal{get_new_handler}% -@@ -3497,7 +3482,6 @@ on the implementation. +@@ -3491,7 +3476,6 @@ on the implementation. \pnum In particular, the behavior is undefined in the following cases: @@ -6930,7 +6921,7 @@ index bc8ce8e8..7e1320d3 100644 \begin{itemize} \item For replacement functions\iref{replacement.functions}, if the installed replacement function does not -@@ -3782,7 +3766,6 @@ functions an implementation shall provide corresponding definitions. +@@ -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: @@ -6969,7 +6960,7 @@ index be9812fa..fb901823 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index bfebda45..287b0cef 100644 +index 743d89ac..37e97efd 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -1684,7 +1684,6 @@ The predicate condition for a template specialization \tcode{is_convertible constexpr complex operator+(const complex& lhs); @@ -7232,7 +7223,7 @@ index b3cf7fc7..cd5f8947 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 75baf9b1..c339582a 100644 +index eb12aa77..31f45df2 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7331,7 +7322,7 @@ index 75baf9b1..c339582a 100644 \begin{itemize} \item Let \placeholder{OUTERC} denote -@@ -9856,7 +9844,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: @@ -7388,7 +7379,7 @@ index 0dd4cd06..90a3972a 100644 using promise_type = R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index 5b4f6ad6..8ac74188 100644 +index 3d76fc07..2efd0118 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -257,7 +257,6 @@ in some translation unit; no diagnostic is required. @@ -7680,7 +7671,7 @@ index 5b4f6ad6..8ac74188 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 363ff13c..0e8242c0 100644 +index 9176b33a..08c373e3 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -7365,7 +7365,6 @@ and visible to other threads. @@ -7970,7 +7961,7 @@ index 62226224..6b4a0b79 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 f8e08fe3..d463a05a 100644 +index e6eba26a..d2207210 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -289,7 +289,6 @@ Exchanges values stored in two locations. @@ -8033,7 +8024,7 @@ index f8e08fe3..d463a05a 100644 2.43.0 -From 32af6cd9ff8d0f9c4684f2488f2aa83fbeca83e4 Mon Sep 17 00:00:00 2001 +From c26d9343345641bdccdf9a8fae861c016ee3d51f Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 Subject: [PATCH 06/10] Use monospace font for code in figures. @@ -8180,7 +8171,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From 0d26f8fa398395e59e8b8b392bc2b37b822b2f33 Mon Sep 17 00:00:00 2001 +From 15f4cec4afd235e7e2ca44784f480df1665846fb Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 Subject: [PATCH 07/10] [uaxid] Mark code that's not to be highlighted. @@ -8208,7 +8199,7 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From 1d2defde13540045bf1eed78e553fedcf059a025 Mon Sep 17 00:00:00 2001 +From 393258f4241f4bde846b156b5c7b0b53b91711eb Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. @@ -8232,7 +8223,7 @@ Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. 15 files changed, 476 insertions(+), 484 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index fad5f7c8..600c9685 100644 +index 69602731..d4a49bde 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -8826,7 +8817,7 @@ index 3e64abc8..9efb5afa 100644 invocation of the destructor does not actually throw. \end{note} diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index 9a7aba83..04178bdb 100644 +index eee2454e..267f428b 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -761,9 +761,9 @@ namespace std { @@ -8836,7 +8827,7 @@ index 9a7aba83..04178bdb 100644 - 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} @@ -8892,7 +8883,7 @@ index 9a7aba83..04178bdb 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 067536ac..9a2154a7 100644 +index 61e8379b..766741df 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -8931,7 +8922,7 @@ index 067536ac..9a2154a7 100644 \\ \end{floattable} diff --git a/source/future.tex b/source/future.tex -index 24498cbb..99bb6113 100644 +index ac4ac504..dffbe172 100644 --- a/source/future.tex +++ b/source/future.tex @@ -359,7 +359,7 @@ template struct is_pod; @@ -9061,10 +9052,10 @@ index a8f84575..f444a705 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 7e1320d3..b4c67f66 100644 +index a8a934eb..db69d69a 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex -@@ -1874,7 +1874,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} @@ -9073,7 +9064,7 @@ index 7e1320d3..b4c67f66 100644 {p{1in}p{4.15in}} \topline \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep -@@ -1901,7 +1901,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} @@ -9082,7 +9073,7 @@ index 7e1320d3..b4c67f66 100644 {p{1in}p{1in}p{1in}p{1.9in}} \topline \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Return value} & \hdstyle{Post-condition} \\ \capsep -@@ -1915,7 +1915,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -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} @@ -9091,7 +9082,7 @@ index 7e1320d3..b4c67f66 100644 \end{tailnote} } \\ \end{oldconcepttable} -@@ -1994,7 +1994,7 @@ void value_swap(T&& t, U&& u) { +@@ -1988,7 +1988,7 @@ void value_swap(T&& t, U&& u) { // for rvalues and lvalues } @@ -9100,7 +9091,7 @@ index 7e1320d3..b4c67f66 100644 template void lv_swap(T& t1, T& t2) { using std::swap; -@@ -2031,9 +2031,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} @@ -9113,7 +9104,7 @@ index 7e1320d3..b4c67f66 100644 \item the expressions shown in \tref{cpp17.nullablepointer} are valid and have the indicated semantics, and -@@ -2109,8 +2109,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}, @@ -9124,7 +9115,7 @@ index 7e1320d3..b4c67f66 100644 \item the expressions shown in \tref{cpp17.hash} are valid and have the indicated semantics. \end{itemize} -@@ -2794,7 +2794,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 @@ -9133,7 +9124,7 @@ index 7e1320d3..b4c67f66 100644 the copy operation shall not throw exceptions. \pnum -@@ -2816,7 +2816,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 @@ -9142,7 +9133,7 @@ index 7e1320d3..b4c67f66 100644 the move operation shall not throw exceptions. \pnum -@@ -2838,7 +2838,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, @@ -9151,7 +9142,7 @@ index 7e1320d3..b4c67f66 100644 the \tcode{swap} operation shall not throw exceptions. \pnum -@@ -2868,7 +2868,7 @@ Default: \tcode{is_empty::type} +@@ -2862,7 +2862,7 @@ Default: \tcode{is_empty::type} \pnum An allocator type \tcode{X} shall meet the @@ -9160,7 +9151,7 @@ index 7e1320d3..b4c67f66 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}). -@@ -2876,7 +2876,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 @@ -9343,7 +9334,7 @@ index fb901823..2dea2cc5 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index 287b0cef..64dc0929 100644 +index 37e97efd..995ac6ef 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -136,12 +136,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -9939,7 +9930,7 @@ index 287b0cef..64dc0929 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index c9be3735..9ce34899 100644 +index 6f53e771..6e8821bc 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 @@ -10098,7 +10089,7 @@ index 90a3972a..5d4fbbf8 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index 0e8242c0..98143cb4 100644 +index 08c373e3..422752c7 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10707,7 +10698,7 @@ index 6b4a0b79..5e264ea3 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index d463a05a..a8521ec6 100644 +index d2207210..4182d9ba 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -277,9 +277,9 @@ template @@ -11203,7 +11194,7 @@ index d463a05a..a8521ec6 100644 2.43.0 -From c18b462efcc14f654e972f99364c504f4863117f Mon Sep 17 00:00:00 2001 +From 947155ac8d3784a042a416256a8980d540a5b02b Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 Subject: [PATCH 09/10] Remove awkward \linebreaks. @@ -11220,7 +11211,7 @@ Subject: [PATCH 09/10] Remove awkward \linebreaks. 8 files changed, 56 insertions(+), 56 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 600c9685..e289b9b5 100644 +index d4a49bde..999851e8 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -7073,7 +7073,7 @@ Let: @@ -11242,7 +11233,7 @@ index 600c9685..e289b9b5 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index 1c6cb497..ace39839 100644 +index 1e0aedc6..3ad3ae82 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1461,7 +1461,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11415,10 +11406,10 @@ index 1c6cb497..ace39839 100644 @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) diff --git a/source/exec.tex b/source/exec.tex -index 9a2154a7..81623295 100644 +index 766741df..9c053a01 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -3915,7 +3915,7 @@ otherwise, it is expression-equivalent to +@@ -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 @@ -11427,7 +11418,7 @@ index 9a2154a7..81623295 100644 If \tcode{\exposconcept{sender-for}} is \tcode{false}, then the expression \tcode{on.transform_sender(out_sndr, env)} is ill-formed. -@@ -4020,7 +4020,7 @@ Let the expression \exposid{then-cpo} be one of +@@ -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}, @@ -11436,7 +11427,7 @@ index 9a2154a7..81623295 100644 \pnum Otherwise, -@@ -4983,7 +4983,7 @@ try { +@@ -4980,7 +4980,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -11445,7 +11436,7 @@ index 9a2154a7..81623295 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -6153,7 +6153,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))}. @@ -11486,7 +11477,7 @@ index 2dea2cc5..e1572fe6 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index 64dc0929..99eecfb1 100644 +index 995ac6ef..ccf1ed9a 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -2273,7 +2273,7 @@ present as follows: @@ -11499,7 +11490,7 @@ index 64dc0929..99eecfb1 100644 \item Otherwise, if diff --git a/source/ranges.tex b/source/ranges.tex -index c339582a..b1943a7e 100644 +index 31f45df2..a92d85a4 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -11574,7 +11565,7 @@ index c339582a..b1943a7e 100644 \end{itemdescr} \indexlibrarymember{begin}{split_view} -@@ -9158,7 +9158,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, @@ -11583,7 +11574,7 @@ index c339582a..b1943a7e 100644 \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} -@@ -9184,14 +9184,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 @@ -11601,7 +11592,7 @@ index c339582a..b1943a7e 100644 \item Otherwise, if \tcode{(\libconcept{derived_from} \&\& ...)} -@@ -9643,11 +9643,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 @@ -11616,7 +11607,7 @@ index c339582a..b1943a7e 100644 for every integer \tcode{$i$} in the range \range{$i_\tcode{y}$ + 1}{$i_\tcode{x}$} if there is any, and -@@ -9690,7 +9690,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 @@ -11625,7 +11616,7 @@ index c339582a..b1943a7e 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 -@@ -9847,7 +9847,7 @@ is expression-equivalent to: +@@ -9846,7 +9846,7 @@ is expression-equivalent to: \begin{itemize} \item If \tcode{T} models \libconcept{contiguous_iterator}, @@ -11634,7 +11625,7 @@ index c339582a..b1943a7e 100644 \item Otherwise, if \tcode{T} models \libconcept{random_access_iterator}, -@@ -13556,7 +13556,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)...>} @@ -11643,7 +11634,7 @@ index c339582a..b1943a7e 100644 \tcode{iterator_category} denotes \tcode{input_iterator_tag}. \item Otherwise, let \tcode{C} denote the type -@@ -14667,7 +14667,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_})}, @@ -11653,7 +11644,7 @@ index c339582a..b1943a7e 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index 98143cb4..f00c8ecd 100644 +index 422752c7..6ad1377c 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -3492,7 +3492,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, @@ -11693,7 +11684,7 @@ index 98143cb4..f00c8ecd 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index a8521ec6..6c5b1c0a 100644 +index 4182d9ba..cb48e529 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -2381,7 +2381,7 @@ equals \tcode{tuple_size_v>}, @@ -11736,7 +11727,7 @@ index a8521ec6..6c5b1c0a 100644 2.43.0 -From 3ed0ca416602d5a04615520b7ba15ac52b872eec Mon Sep 17 00:00:00 2001 +From 6525e0d2b25950802af497a323be4a5086d20d2b Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 25 Dec 2025 12:43:53 +0100 Subject: [PATCH 10/10] Use \literalterminal more. @@ -11746,7 +11737,7 @@ Subject: [PATCH 10/10] Use \literalterminal more. 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/source/lex.tex b/source/lex.tex -index cf26fce7..e5a112a8 100644 +index 2e1da4ca..23ea54ce 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -449,7 +449,7 @@ for the respective Unicode encoding form. diff --git a/lastbuild.sig b/lastbuild.sig index 1b1adfeb6a..b294d65c2c 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,4 +1,4 @@ -htmlgen ec08ed9082b71d87ffc970becceff11c5f8438b2 -draft 1e747bf358e4546e9661c6bcee01a1dd71d2186f -3f412befff9815972eb9f8b3fd8aca2324c7d58b all.patch -dd8cc3cb92b400f1a882557061648f8156b9a6cc htmlgen.patch +htmlgen 63bc5929dc4fa6bb7448390ecec586c8069516b7 +draft d7c02a0f5c21cd235a0ed3921a30b19d75771f2e +3d59569741cf06af59fe3616010d0ee27e397fce all.patch +0b9675c5b0f6b6a329ba2b39b29f2a8fc8c40cec htmlgen.patch From 105d929ee9faf5c9d84427ee38bca50afe7e8fe7 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Mon, 4 May 2026 08:10:28 -0500 Subject: [PATCH 16/18] Update --- all.patch | 56 ---------------- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 175 ++++++++++++++++++-------------------------------- lastbuild.sig | 5 +- 5 files changed, 65 insertions(+), 175 deletions(-) delete mode 100644 all.patch diff --git a/all.patch b/all.patch deleted file mode 100644 index e53ce4a822..0000000000 --- a/all.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 19e297bce01ae69c917d0b8bfb5f1f1491cc8804 Mon Sep 17 00:00:00 2001 -From: timsong-cpp -Date: Sun, 26 Apr 2026 23:50:34 -0500 -Subject: [PATCH 1/2] [exec.get.compl.sched] Remove spurious @ - ---- - source/exec.tex | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/source/exec.tex b/source/exec.tex -index f4e308d8..3f55bde5 100644 ---- a/source/exec.tex -+++ b/source/exec.tex -@@ -1130,11 +1130,11 @@ if the type of \tcode{q} satisfies \libconcept{scheduler} and - \tcode{envs} is not an empty pack, - except that \tcode{envs...} is evaluated. - \item --Otherwise, \tcode{get_completion_scheduler<@\exposid{completion-fn-tag}@>(q, envs...)} -+Otherwise, \tcode{get_completion_scheduler<\exposid{completion-fn-tag}>(q, envs...)} - is ill-formed. - \end{itemize} - \mandates --If \tcode{get_completion_scheduler<@\exposid{completion-fn-tag}@>(q, envs...)} -+If \tcode{get_completion_scheduler<\exposid{completion-fn-tag}>(q, envs...)} - is well-formed, - its type satisfies \libconcept{scheduler}. - --- -2.43.0 - - -From a26a612a93ae3780426fe142c956bbd6f3794ad0 Mon Sep 17 00:00:00 2001 -From: timsong-cpp -Date: Mon, 27 Apr 2026 00:13:14 -0500 -Subject: [PATCH 2/2] [exec.spawn.future] Add missing @ - ---- - source/exec.tex | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/source/exec.tex b/source/exec.tex -index 3f55bde5..61e8379b 100644 ---- a/source/exec.tex -+++ b/source/exec.tex -@@ -5763,7 +5763,7 @@ std::move(this->@\exposid{result}@).visit( - }, std::move(tuple)); - } - }); --@\exposid{destroy}(); -+@\exposid{destroy}@(); - \end{codeblock} - \end{itemize} - \end{itemdescr} --- -2.43.0 - diff --git a/draft b/draft index d7c02a0f5c..9b656eb698 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit d7c02a0f5c21cd235a0ed3921a30b19d75771f2e +Subproject commit 9b656eb6984f5b2726abb6a49d88f64ffdbe57be diff --git a/gh-pages b/gh-pages index 4f35cfa20f..f285dd653a 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 4f35cfa20fbbc1d2a58d86ca2d03a74faaf92765 +Subproject commit f285dd653af2c78abe95dbadddc053850bb26639 diff --git a/htmlgen.patch b/htmlgen.patch index 1f4662d816..9da76b14f6 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,8 +1,8 @@ -From 0dac0f606043fceca51128dc97ceb1977321e2ed Mon Sep 17 00:00:00 2001 +From 7d72a757ffd2029d45c947619c9ed8dc1338ed9b Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 -Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout - on smaller (e.g. half-screen) window sizes. +Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on + smaller (e.g. half-screen) window sizes. --- source/basic.tex | 26 +++++++++++++------------- @@ -10,7 +10,7 @@ Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index cf9f4d86..1e8fe13a 100644 +index 3285447e..d20703a0 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -342,7 +342,7 @@ Given @@ -75,10 +75,10 @@ index ee17db06..a927ad91 100644 2.43.0 -From 72339cc06b7b760642fc93a82de59d47af67650b Mon Sep 17 00:00:00 2001 +From 6d3fa8f7c0411bca74eec2b707b39224af0925d0 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 -Subject: [PATCH 02/10] Use new link macros. +Subject: [PATCH 2/9] Use new link macros. --- source/algorithms.tex | 4 +- @@ -111,7 +111,7 @@ Subject: [PATCH 02/10] Use new link macros. 27 files changed, 573 insertions(+), 585 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 2fcdf94a..ea4d7f5f 100644 +index 8b2f530d..cd4ba8fb 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -133,7 +133,7 @@ index 2fcdf94a..ea4d7f5f 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index 1e8fe13a..34aebafa 100644 +index d20703a0..4b9c8b5b 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -180,7 +180,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -591,7 +591,7 @@ index d1e15a6e..42828a4b 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index 43f506d2..394d0c38 100644 +index 2aee316d..796a6263 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -6125,14 +6125,14 @@ namespace std { @@ -1004,7 +1004,7 @@ index d842475b..eee2454e 100644 \end{note} \indexlibraryglobal{system_error}% diff --git a/source/exceptions.tex b/source/exceptions.tex -index 465c8197..b01c7719 100644 +index df3b639d..abd4aef1 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -184,7 +184,7 @@ try : i(f(ii)), d(id) { @@ -2644,7 +2644,7 @@ index e0596a32..877f21f3 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index 36f4bc1b..bdf02769 100644 +index f5f24c88..b21d7146 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -3566,7 +3566,7 @@ index e86cf147..0dd4cd06 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 36975546..0fde0978 100644 +index 36975546..ea6af80c 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -716,7 +716,7 @@ struct A {}; @@ -3652,7 +3652,7 @@ index 36975546..0fde0978 100644 -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} @@ -3985,7 +3985,7 @@ index 36975546..0fde0978 100644 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 3769ac1a..9176b33a 100644 +index a0d0f855..d3c9e517 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4264,64 +4264,11 @@ index 9cedb5cf..e6eba26a 100644 2.43.0 -From ddf04f017e95bc41342a578ece248e8c7f17b588 Mon Sep 17 00:00:00 2001 -From: Eelis van der Weegen -Date: Tue, 1 Aug 2017 14:38:23 +0200 -Subject: [PATCH 03/10] 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 aff85000..4cf63702 100644 ---- a/source/iostreams.tex -+++ b/source/iostreams.tex -@@ -13922,7 +13922,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 0fde0978..3d76fc07 100644 ---- a/source/templates.tex -+++ b/source/templates.tex -@@ -2154,7 +2154,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 -@@ -2273,10 +2272,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 2d2da697a766ca9ad1dfa83d27bb4a5175d7b856 Mon Sep 17 00:00:00 2001 +From 9c824a2fa19e94d11ebc070a30c6ca6a4619699f Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 -Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code - and literal fragments. +Subject: [PATCH 3/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and + literal fragments. --- source/exceptions.tex | 4 +- @@ -4330,7 +4277,7 @@ Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code 3 files changed, 351 insertions(+), 351 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex -index b01c7719..76071483 100644 +index abd4aef1..ea065465 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -135,11 +135,11 @@ does not declare a variable. @@ -5765,10 +5712,10 @@ index b4d55717..62226224 100644 2.43.0 -From 2af5c65e7ae06d6691815f301b1280c73ef8c3c7 Mon Sep 17 00:00:00 2001 +From 76b77b9c9f9d71e1ef38aab0cd533fdaa2e262e0 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 -Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. +Subject: [PATCH 4/9] Remove more inappropriate paragraph breaks. --- source/algorithms.tex | 4 ---- @@ -5800,7 +5747,7 @@ Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. 26 files changed, 267 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index ea4d7f5f..69602731 100644 +index cd4ba8fb..6eaef6b7 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -8698,7 +8698,6 @@ but stronger than those for a partial ordering. @@ -5836,7 +5783,7 @@ index ea4d7f5f..69602731 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index 34aebafa..c2ab775e 100644 +index 4b9c8b5b..61d14b18 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -312,7 +312,6 @@ int X::y = 1; // defines \tcode{X::y} @@ -6105,7 +6052,7 @@ index 42828a4b..3e64abc8 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 394d0c38..1e0aedc6 100644 +index 796a6263..62d8c723 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6171,7 +6118,7 @@ index 394d0c38..1e0aedc6 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -24570,7 +24562,6 @@ typename A::offset_policy +@@ -24583,7 +24575,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6179,7 +6126,7 @@ index 394d0c38..1e0aedc6 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -26015,7 +26006,6 @@ for the $k^\text{th}$ extent of \tcode{src}. +@@ -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: @@ -6187,7 +6134,7 @@ index 394d0c38..1e0aedc6 100644 \begin{itemize} \item \tcode{SubExtents::rank()} equals -@@ -26027,7 +26017,6 @@ the type of \tcode{slices...[$k$]} is not a collapsing slice type, +@@ -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$]}: @@ -6312,7 +6259,7 @@ index d488264d..f30652b2 100644 \terminal{(} unevaluated-string \terminal{)} \end{ncbnf} diff --git a/source/exceptions.tex b/source/exceptions.tex -index 76071483..3a2e459d 100644 +index ea065465..869f7588 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -89,7 +89,6 @@ void f() { @@ -6601,7 +6548,7 @@ index dc26444a..ac4ac504 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index 4cf63702..a8f84575 100644 +index aff85000..4b7233de 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -2105,14 +2105,12 @@ does nothing. @@ -6710,7 +6657,7 @@ index 4cf63702..a8f84575 100644 @@ -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. @@ -6980,7 +6927,7 @@ index 743d89ac..37e97efd 100644 \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 bdf02769..6f53e771 100644 +index b21d7146..13c2330a 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); @@ -7223,7 +7170,7 @@ index b3cf7fc7..cd5f8947 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index eb12aa77..31f45df2 100644 +index 29b5ae53..912546d8 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7379,7 +7326,7 @@ index 0dd4cd06..90a3972a 100644 using promise_type = R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index 3d76fc07..2efd0118 100644 +index ea6af80c..23c257ac 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -257,7 +257,6 @@ in some translation unit; no diagnostic is required. @@ -7671,7 +7618,7 @@ index 3d76fc07..2efd0118 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 9176b33a..08c373e3 100644 +index d3c9e517..a7735840 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -7365,7 +7365,6 @@ and visible to other threads. @@ -8024,10 +7971,10 @@ index e6eba26a..d2207210 100644 2.43.0 -From c26d9343345641bdccdf9a8fae861c016ee3d51f Mon Sep 17 00:00:00 2001 +From cead0aff18113931a18f9db87b834c6f6f5365cd Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 -Subject: [PATCH 06/10] Use monospace font for code in figures. +Subject: [PATCH 5/9] Use monospace font for code in figures. --- source/assets/figdag.dot | 8 ++++---- @@ -8171,10 +8118,10 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From 15f4cec4afd235e7e2ca44784f480df1665846fb Mon Sep 17 00:00:00 2001 +From 751755a7c599e84c57bfdeb91b2a593fbe80b4db Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 -Subject: [PATCH 07/10] [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 ++-- @@ -8199,10 +8146,10 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From 393258f4241f4bde846b156b5c7b0b53b91711eb Mon Sep 17 00:00:00 2001 +From 4188ff9acbe46a32bb0707ae2217f99a9e2c78c2 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 -Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. +Subject: [PATCH 7/9] Use cxxdraft-htmlgen macros more. --- source/algorithms.tex | 180 +++++++++++++-------------- @@ -8223,7 +8170,7 @@ Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. 15 files changed, 476 insertions(+), 484 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 69602731..d4a49bde 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. @@ -8883,7 +8830,7 @@ index eee2454e..267f428b 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 61e8379b..766741df 100644 +index 4f7f72b0..4bf25bbd 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -8971,7 +8918,7 @@ index ac4ac504..dffbe172 100644 \begin{itemize} \item for the first specialization, \tcode{volatile VA::type}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index a8f84575..f444a705 100644 +index 4b7233de..8af4eea6 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -1684,10 +1684,10 @@ An \tcode{fpos} type specifies file position information. @@ -9930,7 +9877,7 @@ index 37e97efd..995ac6ef 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index 6f53e771..6e8821bc 100644 +index 13c2330a..cc6ba680 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 @@ -10089,7 +10036,7 @@ index 90a3972a..5d4fbbf8 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index 08c373e3..422752c7 100644 +index a7735840..db46040d 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -11194,10 +11141,10 @@ index d2207210..4182d9ba 100644 2.43.0 -From 947155ac8d3784a042a416256a8980d540a5b02b Mon Sep 17 00:00:00 2001 +From 7e4b50ef5f4d48cd5d4a40d84305a45dfba5a23d Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 -Subject: [PATCH 09/10] Remove awkward \linebreaks. +Subject: [PATCH 8/9] Remove awkward \linebreaks. --- source/algorithms.tex | 4 ++-- @@ -11211,7 +11158,7 @@ Subject: [PATCH 09/10] Remove awkward \linebreaks. 8 files changed, 56 insertions(+), 56 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index d4a49bde..999851e8 100644 +index b7fd050e..8cbeb8e6 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -7073,7 +7073,7 @@ Let: @@ -11233,7 +11180,7 @@ index d4a49bde..999851e8 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index 1e0aedc6..3ad3ae82 100644 +index 62d8c723..8c6f18c1 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1461,7 +1461,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11342,7 +11289,7 @@ index 1e0aedc6..3ad3ae82 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -23454,7 +23454,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 @@ -11351,7 +11298,7 @@ index 1e0aedc6..3ad3ae82 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}. -@@ -23533,7 +23533,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}, @@ -11360,7 +11307,7 @@ index 1e0aedc6..3ad3ae82 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(0))) -@@ -23608,7 +23608,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}, @@ -11369,7 +11316,7 @@ index 1e0aedc6..3ad3ae82 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(0))) -@@ -24008,7 +24008,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} @@ -11378,7 +11325,7 @@ index 1e0aedc6..3ad3ae82 100644 would achieve this. \end{note} \end{itemdescr} -@@ -24095,7 +24095,7 @@ 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 @@ -11387,7 +11334,7 @@ index 1e0aedc6..3ad3ae82 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}. -@@ -24174,7 +24174,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}, @@ -11396,7 +11343,7 @@ index 1e0aedc6..3ad3ae82 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -24249,7 +24249,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}, @@ -11406,7 +11353,7 @@ index 1e0aedc6..3ad3ae82 100644 @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) diff --git a/source/exec.tex b/source/exec.tex -index 766741df..9c053a01 100644 +index 4bf25bbd..98317a73 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -3914,7 +3914,7 @@ otherwise, it is expression-equivalent to @@ -11416,7 +11363,7 @@ index 766741df..9c053a01 100644 -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 expression \tcode{on.transform_sender(out_sndr, env)} is ill-formed. + 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}, @@ -11490,7 +11437,7 @@ index 995ac6ef..ccf1ed9a 100644 \item Otherwise, if diff --git a/source/ranges.tex b/source/ranges.tex -index 31f45df2..a92d85a4 100644 +index 912546d8..ec7898d1 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -11644,7 +11591,7 @@ index 31f45df2..a92d85a4 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index 422752c7..6ad1377c 100644 +index db46040d..53723351 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -3492,7 +3492,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, @@ -11727,10 +11674,10 @@ index 4182d9ba..cb48e529 100644 2.43.0 -From 6525e0d2b25950802af497a323be4a5086d20d2b Mon Sep 17 00:00:00 2001 +From bf5db43c8514610a4cccbb355049eb5ba3819046 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 25 Dec 2025 12:43:53 +0100 -Subject: [PATCH 10/10] Use \literalterminal more. +Subject: [PATCH 9/9] Use \literalterminal more. --- source/lex.tex | 22 +++++++++++----------- diff --git a/lastbuild.sig b/lastbuild.sig index b294d65c2c..8b1d05b8f2 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,4 +1,3 @@ htmlgen 63bc5929dc4fa6bb7448390ecec586c8069516b7 -draft d7c02a0f5c21cd235a0ed3921a30b19d75771f2e -3d59569741cf06af59fe3616010d0ee27e397fce all.patch -0b9675c5b0f6b6a329ba2b39b29f2a8fc8c40cec htmlgen.patch +draft 9b656eb6984f5b2726abb6a49d88f64ffdbe57be +e85cafa93444a46087d5141c83095da1cae4bca7 htmlgen.patch From 30d64dc66a2cd4b71e9343932fd48ef4f46273f5 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Mon, 4 May 2026 09:06:27 -0500 Subject: [PATCH 17/18] Update --- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 180 +++++++++++++++++++++++++------------------------- lastbuild.sig | 4 +- 4 files changed, 94 insertions(+), 94 deletions(-) diff --git a/draft b/draft index 9b656eb698..1fad6accf1 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 9b656eb6984f5b2726abb6a49d88f64ffdbe57be +Subproject commit 1fad6accf1aa93fb8803936ac2c2834340357bce diff --git a/gh-pages b/gh-pages index f285dd653a..51b40df41c 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit f285dd653af2c78abe95dbadddc053850bb26639 +Subproject commit 51b40df41cbd00a35ee626bee78acb568687e52b diff --git a/htmlgen.patch b/htmlgen.patch index 9da76b14f6..fae5a240e1 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From 7d72a757ffd2029d45c947619c9ed8dc1338ed9b Mon Sep 17 00:00:00 2001 +From c84e3f2ed2c298d39367f7a741a5d654d247c5af 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 @@ -59,10 +59,10 @@ index 3285447e..d20703a0 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index ee17db06..a927ad91 100644 +index 357ab782..924905e0 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -2939,7 +2939,7 @@ struct s2 { +@@ -2938,7 +2938,7 @@ struct s2 { } auto g() { return [] { @@ -75,7 +75,7 @@ index ee17db06..a927ad91 100644 2.43.0 -From 6d3fa8f7c0411bca74eec2b707b39224af0925d0 Mon Sep 17 00:00:00 2001 +From 390a70e372f44ad0db75c7f914d2e23ecaa9b003 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. @@ -1144,7 +1144,7 @@ index df3b639d..abd4aef1 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index a927ad91..168ff89d 100644 +index 924905e0..893ddf29 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1296,7 +1296,7 @@ index a927ad91..168ff89d 100644 Class members declared later are not visible. \begin{example} \begin{codeblock} -@@ -1385,8 +1385,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} @@ -1307,7 +1307,7 @@ index a927ad91..168ff89d 100644 \end{note} \pnum -@@ -1519,7 +1519,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 @@ -1316,7 +1316,7 @@ index a927ad91..168ff89d 100644 \end{example} \end{note} -@@ -2141,8 +2141,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} @@ -1327,7 +1327,7 @@ index a927ad91..168ff89d 100644 \end{note} \pnum -@@ -2476,7 +2476,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 @@ -1336,7 +1336,7 @@ index a927ad91..168ff89d 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 -@@ -2585,8 +2585,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, @@ -1347,7 +1347,7 @@ index a927ad91..168ff89d 100644 \begin{example} \begin{codeblock} auto Fwd = [](int (*fp)(int), auto a) { return fp(a); }; -@@ -2644,9 +2644,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 @@ -1360,7 +1360,7 @@ index a927ad91..168ff89d 100644 \rSec3[expr.prim.lambda.capture]{Captures}% -@@ -3216,7 +3216,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 @@ -1369,7 +1369,7 @@ index a927ad91..168ff89d 100644 or by checking properties of types and expressions. \begin{bnf} -@@ -3814,7 +3814,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 @@ -1378,7 +1378,7 @@ index a927ad91..168ff89d 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} -@@ -3827,8 +3827,8 @@ an object under construction or destruction. +@@ -3826,8 +3826,8 @@ an object under construction or destruction. \pnum \begin{note} @@ -1389,7 +1389,7 @@ index a927ad91..168ff89d 100644 the program is ill-formed. No function is implicitly declared by such a call. \end{note} -@@ -3895,7 +3895,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, @@ -1398,7 +1398,7 @@ index a927ad91..168ff89d 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) -@@ -4032,10 +4032,10 @@ pointer parameters. +@@ -4031,10 +4031,10 @@ pointer parameters. \pnum \indextext{declaration!ellipsis in function}% \indextext{parameter list!variable}% @@ -1412,7 +1412,7 @@ index a927ad91..168ff89d 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. -@@ -4053,8 +4053,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 @@ -1423,7 +1423,7 @@ index a927ad91..168ff89d 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}. -@@ -4069,16 +4069,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 @@ -1445,7 +1445,7 @@ index a927ad91..168ff89d 100644 \pnum A function call is an lvalue -@@ -4097,8 +4097,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}% @@ -1456,7 +1456,7 @@ index a927ad91..168ff89d 100644 by a parenthesized optional \grammarterm{expression-list} or by a \grammarterm{braced-init-list} (the initializer) -@@ -4109,7 +4109,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 @@ -1465,7 +1465,7 @@ index a927ad91..168ff89d 100644 for the remainder of this subclause. Otherwise, if the type contains a placeholder type, it is replaced by the type -@@ -4508,8 +4508,8 @@ void foo(D* dp) { +@@ -4507,8 +4507,8 @@ void foo(D* dp) { \end{example} \pnum @@ -1476,7 +1476,7 @@ index a927ad91..168ff89d 100644 \pnum If \tcode{v} is a null pointer value, the result is a null pointer value. -@@ -4560,9 +4560,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 @@ -1489,7 +1489,7 @@ index a927ad91..168ff89d 100644 \indextext{\idxcode{bad_cast}}% \indexlibraryglobal{bad_cast}% -@@ -4651,13 +4651,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. @@ -1507,7 +1507,7 @@ index a927ad91..168ff89d 100644 \pnum When \keyword{typeid} is applied to a \grammarterm{type-id}, the result -@@ -4751,7 +4751,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 @@ -1516,7 +1516,7 @@ index a927ad91..168ff89d 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 -@@ -4856,7 +4856,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}'', @@ -1526,7 +1526,7 @@ index a927ad91..168ff89d 100644 from \tcode{B}, if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. -@@ -4877,7 +4878,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 @@ -1535,7 +1535,7 @@ index a927ad91..168ff89d 100644 if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. \begin{note} -@@ -4888,7 +4889,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. @@ -1544,7 +1544,7 @@ index a927ad91..168ff89d 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 -@@ -4911,7 +4912,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} @@ -1553,7 +1553,7 @@ index a927ad91..168ff89d 100644 the result is a pointer to \placeholder{b}. Otherwise, the pointer value is unchanged by the conversion. \begin{example} -@@ -4934,8 +4935,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 @@ -1564,7 +1564,7 @@ index a927ad91..168ff89d 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}. -@@ -5100,10 +5101,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 @@ -1578,7 +1578,7 @@ index a927ad91..168ff89d 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 -@@ -5656,7 +5657,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, @@ -1587,7 +1587,7 @@ index a927ad91..168ff89d 100644 \grammarterm{type-id}. \indextext{type!incomplete}% The \keyword{sizeof} operator shall not be applied to an expression that -@@ -5713,7 +5714,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, @@ -1596,7 +1596,7 @@ index a927ad91..168ff89d 100644 is applied. \pnum -@@ -5858,7 +5859,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 @@ -1605,7 +1605,7 @@ index a927ad91..168ff89d 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 -@@ -5986,7 +5987,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 @@ -1614,7 +1614,7 @@ index a927ad91..168ff89d 100644 \item the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} -@@ -6012,7 +6013,7 @@ is the null pointer value of the required result type; +@@ -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 @@ -1623,7 +1623,7 @@ index a927ad91..168ff89d 100644 \end{itemize} \end{itemize} When the value of the \grammarterm{expression} is zero, the allocation -@@ -6070,8 +6071,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 @@ -1634,7 +1634,7 @@ index a927ad91..168ff89d 100644 is a non-array type, the allocation function's name is \indextext{\idxcode{operator new}}% \indextext{\idxcode{operator delete}}% -@@ -6182,7 +6183,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 @@ -1643,7 +1643,7 @@ index a927ad91..168ff89d 100644 is no greater than the size of the array being created. \begin{note} \indextext{allocation!alignment storage}% -@@ -6273,7 +6274,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 @@ -1652,7 +1652,7 @@ index a927ad91..168ff89d 100644 it indicates failure to allocate storage by throwing a \indextext{\idxcode{bad_alloc}}% \indexlibraryglobal{bad_alloc}% -@@ -6489,8 +6490,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}}% @@ -1663,7 +1663,7 @@ index a927ad91..168ff89d 100644 \grammarterm{new-expression}. \begin{bnf} -@@ -6593,8 +6594,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 @@ -1674,7 +1674,7 @@ index a927ad91..168ff89d 100644 allocation call of the \grammarterm{new-expression} shall be passed as the first argument to the deallocation function. -@@ -7179,8 +7180,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. @@ -1685,7 +1685,7 @@ index a927ad91..168ff89d 100644 \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -7209,7 +7210,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 @@ -1694,7 +1694,7 @@ index a927ad91..168ff89d 100644 operands and determine the type of the result. \pnum -@@ -7340,7 +7341,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 @@ -1703,7 +1703,7 @@ index a927ad91..168ff89d 100644 \begin{example} \begin{codeblock} int arr[5] = {1, 2, 3, 4, 5}; -@@ -7431,12 +7432,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, @@ -1718,7 +1718,7 @@ index a927ad91..168ff89d 100644 other than from an integral type to a floating-point type, the program is ill-formed. -@@ -7478,13 +7479,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 @@ -1734,7 +1734,7 @@ index a927ad91..168ff89d 100644 \end{note} In this case, \tcode{p <=> q} is of type \tcode{std::strong_ordering} and -@@ -7573,7 +7574,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 @@ -1743,7 +1743,7 @@ index a927ad91..168ff89d 100644 After conversions, the operands shall have the same type. \pnum -@@ -7658,10 +7659,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, @@ -1758,7 +1758,7 @@ index a927ad91..168ff89d 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -7678,7 +7679,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}% @@ -1768,7 +1768,7 @@ index a927ad91..168ff89d 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -7723,12 +7725,12 @@ bool b1 = (bx == cx); // unspecified +@@ -7722,12 +7724,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -1783,7 +1783,7 @@ index a927ad91..168ff89d 100644 indirection with a hypothetical object of the associated class type were performed, otherwise they compare unequal. \begin{example} -@@ -7968,7 +7970,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 @@ -1792,7 +1792,7 @@ index a927ad91..168ff89d 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 -@@ -8010,9 +8012,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 @@ -1805,7 +1805,7 @@ index a927ad91..168ff89d 100644 standard conversions. \end{itemize} \end{itemize} -@@ -8053,8 +8055,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 @@ -1816,7 +1816,7 @@ index a927ad91..168ff89d 100644 performed on the second and third operands. After those conversions, one of the following shall hold: -@@ -8063,16 +8065,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; @@ -1839,7 +1839,7 @@ index a927ad91..168ff89d 100644 pointer type. \item One or both of the second and third operands have pointer-to-member type; -@@ -8256,7 +8258,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 @@ -1848,7 +1848,7 @@ index a927ad91..168ff89d 100644 operand. \pnum -@@ -8270,7 +8272,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 @@ -1857,7 +1857,7 @@ index a927ad91..168ff89d 100644 \pnum The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} -@@ -8342,7 +8344,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 @@ -1866,7 +1866,7 @@ index a927ad91..168ff89d 100644 The left expression is sequenced before the right expression\iref{intro.execution}. \indextext{operator!side effects and comma}% -@@ -8493,7 +8495,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 @@ -1875,7 +1875,7 @@ index a927ad91..168ff89d 100644 it is applied to \begin{itemize} \item -@@ -8515,7 +8517,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 @@ -1884,7 +1884,7 @@ index a927ad91..168ff89d 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -8993,7 +8995,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}, @@ -1893,7 +1893,7 @@ index a927ad91..168ff89d 100644 \end{note} \pnum -@@ -9678,7 +9680,9 @@ A function or variable is +@@ -9677,7 +9679,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -4175,7 +4175,7 @@ index a29b08ed..b4d55717 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index 9cedb5cf..e6eba26a 100644 +index 402dbea6..af0ec065 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -120,15 +120,15 @@ namespace std { @@ -4264,7 +4264,7 @@ index 9cedb5cf..e6eba26a 100644 2.43.0 -From 9c824a2fa19e94d11ebc070a30c6ca6a4619699f Mon Sep 17 00:00:00 2001 +From 52d980a5a35f0616644bc3effefe0c6d8daf9a1c Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 Subject: [PATCH 3/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and @@ -5712,7 +5712,7 @@ index b4d55717..62226224 100644 2.43.0 -From 76b77b9c9f9d71e1ef38aab0cd533fdaa2e262e0 Mon Sep 17 00:00:00 2001 +From 8d26665b31b1ba860a63e2700db412dfbe02c0c9 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 Subject: [PATCH 4/9] Remove more inappropriate paragraph breaks. @@ -6284,7 +6284,7 @@ index ea065465..869f7588 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 168ff89d..221b68d0 100644 +index 893ddf29..3587d8b5 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -467,7 +467,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -6335,7 +6335,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item If \tcode{T1} and \tcode{T2} are the same type, \tcode{C} is that type. -@@ -2812,7 +2806,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: @@ -6343,7 +6343,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item An \grammarterm{id-expression} that names a local entity -@@ -3423,7 +3416,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: @@ -6351,7 +6351,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -3435,7 +3427,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: @@ -6359,7 +6359,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -4540,7 +4531,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: @@ -6367,7 +6367,7 @@ index 168ff89d..221b68d0 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 -@@ -5054,7 +5044,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: @@ -6375,7 +6375,7 @@ index 168ff89d..221b68d0 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 -@@ -5489,7 +5478,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: @@ -6383,7 +6383,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item \placeholder{p} is an lvalue naming the promise -@@ -5872,7 +5860,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}: @@ -6391,7 +6391,7 @@ index 168ff89d..221b68d0 100644 \begin{codeblock} T x @\textrm{\placeholder{init}}@ ; \end{codeblock} -@@ -6232,7 +6219,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; @@ -6399,7 +6399,7 @@ index 168ff89d..221b68d0 100644 \end{itemize} and then overload resolution is performed again. -@@ -6310,7 +6296,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: @@ -6407,7 +6407,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item If the \grammarterm{new-initializer} is omitted, the object is default-initialized\iref{dcl.init}. -@@ -6589,7 +6574,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: @@ -6415,7 +6415,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item If the allocation call for the \grammarterm{new-expression} for the object to -@@ -7434,7 +7418,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: @@ -6423,7 +6423,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, -@@ -7589,7 +7572,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: @@ -6431,7 +6431,7 @@ index 168ff89d..221b68d0 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 -@@ -7602,7 +7584,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. @@ -6439,7 +6439,7 @@ index 168ff89d..221b68d0 100644 \end{itemize} \pnum -@@ -7664,7 +7645,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: @@ -6447,7 +6447,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item If one pointer represents the address of a complete object, and another -@@ -7694,7 +7674,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: @@ -6455,7 +6455,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item If two pointers to members are both the null member pointer value, they compare -@@ -7980,7 +7959,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: @@ -6463,7 +6463,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item If \tcode{E2} is an lvalue, the target type is ``lvalue reference to \tcode{T2}'', -@@ -8059,7 +8037,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: @@ -6471,7 +6471,7 @@ index 168ff89d..221b68d0 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. -@@ -8089,7 +8066,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}. @@ -7908,7 +7908,7 @@ index 62226224..6b4a0b79 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 e6eba26a..d2207210 100644 +index af0ec065..c39c394b 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -289,7 +289,6 @@ Exchanges values stored in two locations. @@ -7971,7 +7971,7 @@ index e6eba26a..d2207210 100644 2.43.0 -From cead0aff18113931a18f9db87b834c6f6f5365cd Mon Sep 17 00:00:00 2001 +From bf467875ecd35410f444e79b97155cfb8c395b76 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 Subject: [PATCH 5/9] Use monospace font for code in figures. @@ -8118,7 +8118,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From 751755a7c599e84c57bfdeb91b2a593fbe80b4db Mon Sep 17 00:00:00 2001 +From 546cf5258e2d52629c3b8e6015d36e1ac8fcaeec Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 Subject: [PATCH 6/9] [uaxid] Mark code that's not to be highlighted. @@ -8146,7 +8146,7 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From 4188ff9acbe46a32bb0707ae2217f99a9e2c78c2 Mon Sep 17 00:00:00 2001 +From eb4a13aa7cd2cf0fd5cfb66b12e200b7ef6b1a24 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 Subject: [PATCH 7/9] Use cxxdraft-htmlgen macros more. @@ -10645,7 +10645,7 @@ index 6b4a0b79..5e264ea3 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index d2207210..4182d9ba 100644 +index c39c394b..ba05d89f 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -277,9 +277,9 @@ template @@ -11141,7 +11141,7 @@ index d2207210..4182d9ba 100644 2.43.0 -From 7e4b50ef5f4d48cd5d4a40d84305a45dfba5a23d Mon Sep 17 00:00:00 2001 +From 7f46bb5cd73f8d0aa7410bfc07c19029787f6d90 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 Subject: [PATCH 8/9] Remove awkward \linebreaks. @@ -11631,7 +11631,7 @@ index db46040d..53723351 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index 4182d9ba..cb48e529 100644 +index ba05d89f..c03201fa 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -2381,7 +2381,7 @@ equals \tcode{tuple_size_v>}, @@ -11674,7 +11674,7 @@ index 4182d9ba..cb48e529 100644 2.43.0 -From bf5db43c8514610a4cccbb355049eb5ba3819046 Mon Sep 17 00:00:00 2001 +From 7b7a1a758f9b27ba4976db4caa01e43821e1e699 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. diff --git a/lastbuild.sig b/lastbuild.sig index 8b1d05b8f2..bad5f12ef1 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ htmlgen 63bc5929dc4fa6bb7448390ecec586c8069516b7 -draft 9b656eb6984f5b2726abb6a49d88f64ffdbe57be -e85cafa93444a46087d5141c83095da1cae4bca7 htmlgen.patch +draft 1fad6accf1aa93fb8803936ac2c2834340357bce +3070135b818ce3bb22deafe0ec55bdcdf690ed6e htmlgen.patch From ce221e8e8cfe1e7c09d0e95bd4723498edd2155c Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Tue, 12 May 2026 12:32:35 -0500 Subject: [PATCH 18/18] Update --- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 132 +++++++++++++++++++++++++------------------------- lastbuild.sig | 4 +- 4 files changed, 70 insertions(+), 70 deletions(-) diff --git a/draft b/draft index 1fad6accf1..aaecb9378d 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 1fad6accf1aa93fb8803936ac2c2834340357bce +Subproject commit aaecb9378d0766482cbb46e6bbe605edfc0781aa diff --git a/gh-pages b/gh-pages index 51b40df41c..b1102cf744 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 51b40df41cbd00a35ee626bee78acb568687e52b +Subproject commit b1102cf744bbc95fd433320282abee6b58f55167 diff --git a/htmlgen.patch b/htmlgen.patch index fae5a240e1..be6fb53190 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From c84e3f2ed2c298d39367f7a741a5d654d247c5af 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,7 +10,7 @@ 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 3285447e..d20703a0 100644 +index 98705dfb..a22e5e30 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -342,7 +342,7 @@ Given @@ -59,7 +59,7 @@ index 3285447e..d20703a0 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 357ab782..924905e0 100644 +index eec3be90..0ea2a413 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2938,7 +2938,7 @@ struct s2 { @@ -75,7 +75,7 @@ index 357ab782..924905e0 100644 2.43.0 -From 390a70e372f44ad0db75c7f914d2e23ecaa9b003 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. @@ -133,7 +133,7 @@ index 8b2f530d..cd4ba8fb 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index d20703a0..4b9c8b5b 100644 +index a22e5e30..eab80b45 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -180,7 +180,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -432,7 +432,7 @@ index d20703a0..4b9c8b5b 100644 -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 @@ -6463,7 +6462,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope A \defn{full-expression} is @@ -591,7 +591,7 @@ index d1e15a6e..42828a4b 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index 2aee316d..796a6263 100644 +index a0095c26..0e937574 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -6125,14 +6125,14 @@ namespace std { @@ -776,7 +776,7 @@ index 2aee316d..796a6263 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index 3ab79575..d488264d 100644 +index 627360a2..cea5493a 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -788,7 +788,7 @@ index 3ab79575..d488264d 100644 \end{note} \pnum -@@ -814,10 +814,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 @@ -803,7 +803,7 @@ index 3ab79575..d488264d 100644 \end{note} \begin{example} \begin{codeblock} -@@ -1150,7 +1150,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} @@ -812,7 +812,7 @@ index 3ab79575..d488264d 100644 In the global module, a function defined within a class definition is implicitly inline\iref{class.mfct,class.friend}. \end{note} -@@ -1289,7 +1289,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 @@ -821,7 +821,7 @@ index 3ab79575..d488264d 100644 \end{note} \pnum -@@ -1733,8 +1733,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} @@ -831,7 +831,7 @@ index 3ab79575..d488264d 100644 \begin{example} \begin{codeblock} -@@ -1933,7 +1932,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 @@ -840,7 +840,7 @@ index 3ab79575..d488264d 100644 and if the type that replaces the placeholder type is not the same in each deduction, the program is ill-formed. -@@ -2075,7 +2074,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 @@ -849,7 +849,7 @@ index 3ab79575..d488264d 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. -@@ -2290,7 +2289,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} @@ -858,7 +858,7 @@ index 3ab79575..d488264d 100644 or as the \grammarterm{type-specifier} in the \grammarterm{parameter-declaration} of a \grammarterm{template-parameter}\iref{temp.param}. -@@ -4500,7 +4499,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 @@ -867,7 +867,7 @@ index 3ab79575..d488264d 100644 \end{codeblock} \end{example} A non-static member shall not be designated in a default argument unless -@@ -6225,15 +6224,15 @@ This requires a conversion +@@ -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 @@ -887,7 +887,7 @@ index 3ab79575..d488264d 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7746,7 +7745,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} @@ -896,7 +896,7 @@ index 3ab79575..d488264d 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. -@@ -7897,7 +7896,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}, @@ -905,7 +905,7 @@ index 3ab79575..d488264d 100644 \pnum \indextext{constant!enumeration}% -@@ -8062,7 +8061,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 @@ -914,7 +914,7 @@ index 3ab79575..d488264d 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8345,7 +8344,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 @@ -923,7 +923,7 @@ index 3ab79575..d488264d 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 -@@ -9178,7 +9177,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 @@ -932,7 +932,7 @@ index 3ab79575..d488264d 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9508,18 +9507,18 @@ 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 @@ -956,7 +956,7 @@ index 3ab79575..d488264d 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9637,7 +9636,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 @@ -965,7 +965,7 @@ index 3ab79575..d488264d 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9817,7 +9816,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} @@ -1144,7 +1144,7 @@ index df3b639d..abd4aef1 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index 924905e0..893ddf29 100644 +index 0ea2a413..24af225d 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1893,7 +1893,7 @@ index 924905e0..893ddf29 100644 \end{note} \pnum -@@ -9677,7 +9679,9 @@ A function or variable is +@@ -9680,7 +9682,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -2001,7 +2001,7 @@ index 3e24d06d..b5e513df 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 3320a770..aff85000 100644 +index 615ea941..ad9e3afe 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -558,7 +558,7 @@ is initialized, @@ -2644,7 +2644,7 @@ index e0596a32..877f21f3 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index f5f24c88..b21d7146 100644 +index 544aa428..f3299984 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -3985,7 +3985,7 @@ index 36975546..ea6af80c 100644 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 a0d0f855..d3c9e517 100644 +index 53bec754..7a2d110e 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4264,7 +4264,7 @@ index 402dbea6..af0ec065 100644 2.43.0 -From 52d980a5a35f0616644bc3effefe0c6d8daf9a1c 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 3/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and @@ -5712,7 +5712,7 @@ index b4d55717..62226224 100644 2.43.0 -From 8d26665b31b1ba860a63e2700db412dfbe02c0c9 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 4/9] Remove more inappropriate paragraph breaks. @@ -5783,7 +5783,7 @@ index cd4ba8fb..6eaef6b7 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index 4b9c8b5b..61d14b18 100644 +index eab80b45..db5f28a2 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -312,7 +312,6 @@ int X::y = 1; // defines \tcode{X::y} @@ -6052,7 +6052,7 @@ index 42828a4b..3e64abc8 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 796a6263..62d8c723 100644 +index 0e937574..0be602a1 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6143,10 +6143,10 @@ index 796a6263..62d8c723 100644 \item \tcode{Extents::static_extent($k$)} diff --git a/source/declarations.tex b/source/declarations.tex -index d488264d..f30652b2 100644 +index cea5493a..38e1f367 100644 --- a/source/declarations.tex +++ b/source/declarations.tex -@@ -1593,7 +1593,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: @@ -6154,7 +6154,7 @@ index d488264d..f30652b2 100644 \begin{ncsimplebnf} class-key \opt{attribute-specifier-seq} identifier \terminal{;}\br class-key \opt{attribute-specifier-seq} simple-template-id \terminal{;} -@@ -2498,7 +2497,6 @@ the \grammarterm{declarator} declares a function. +@@ -2499,7 +2498,6 @@ the \grammarterm{declarator} declares a function. \pnum Declarators have the syntax @@ -6162,7 +6162,7 @@ index d488264d..f30652b2 100644 \begin{bnf} \nontermdef{declarator}\br ptr-declarator\br -@@ -4404,7 +4402,6 @@ In the following code, +@@ -4405,7 +4403,6 @@ In the following code, \tcode{g} will be called with the value \tcode{f(2)}: @@ -6170,7 +6170,7 @@ index d488264d..f30652b2 100644 \begin{codeblock} int a = 1; int f(int); -@@ -5074,7 +5071,6 @@ To +@@ -5075,7 +5072,6 @@ To an object of type \tcode{T} means: @@ -6178,7 +6178,7 @@ index d488264d..f30652b2 100644 \begin{itemize} \item If -@@ -5284,7 +5280,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: @@ -6186,7 +6186,7 @@ index d488264d..f30652b2 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -6202,7 +6197,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} @@ -6194,7 +6194,7 @@ index d488264d..f30652b2 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6670,7 +6664,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} @@ -6202,7 +6202,7 @@ index d488264d..f30652b2 100644 \end{itemize} \pnum -@@ -7756,7 +7749,6 @@ as $\tcode{T}_i$ if the initializer is a prvalue, +@@ -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: @@ -6210,7 +6210,7 @@ index d488264d..f30652b2 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7888,7 +7880,6 @@ struct S { +@@ -7889,7 +7881,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6218,7 +6218,7 @@ index d488264d..f30652b2 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7984,7 +7975,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: @@ -6226,7 +6226,7 @@ index d488264d..f30652b2 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8442,7 +8432,6 @@ void h() { +@@ -8443,7 +8433,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} according to the following grammar: @@ -6234,7 +6234,7 @@ index d488264d..f30652b2 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8616,7 +8605,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, @@ -6242,7 +6242,7 @@ index d488264d..f30652b2 100644 \begin{codeblock} namespace A { class X { }; -@@ -9179,7 +9167,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}: @@ -6250,7 +6250,7 @@ index d488264d..f30652b2 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -10056,7 +10043,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: @@ -6284,7 +6284,7 @@ index ea065465..869f7588 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 893ddf29..3587d8b5 100644 +index 24af225d..b23928b0 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -467,7 +467,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -6548,7 +6548,7 @@ index dc26444a..ac4ac504 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index aff85000..4b7233de 100644 +index ad9e3afe..a046490d 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -2105,14 +2105,12 @@ does nothing. @@ -6907,7 +6907,7 @@ index be9812fa..fb901823 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index 743d89ac..37e97efd 100644 +index 7c1dbfb9..eda69180 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -1684,7 +1684,6 @@ The predicate condition for a template specialization \tcode{is_convertible constexpr complex operator+(const complex& lhs); @@ -7618,7 +7618,7 @@ index ea6af80c..23c257ac 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index d3c9e517..a7735840 100644 +index 7a2d110e..6b8778ac 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -7365,7 +7365,6 @@ and visible to other threads. @@ -7971,7 +7971,7 @@ index af0ec065..c39c394b 100644 2.43.0 -From bf467875ecd35410f444e79b97155cfb8c395b76 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 5/9] Use monospace font for code in figures. @@ -8118,7 +8118,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From 546cf5258e2d52629c3b8e6015d36e1ac8fcaeec 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 6/9] [uaxid] Mark code that's not to be highlighted. @@ -8146,7 +8146,7 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From eb4a13aa7cd2cf0fd5cfb66b12e200b7ef6b1a24 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 7/9] Use cxxdraft-htmlgen macros more. @@ -8918,7 +8918,7 @@ index ac4ac504..dffbe172 100644 \begin{itemize} \item for the first specialization, \tcode{volatile VA::type}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index 4b7233de..8af4eea6 100644 +index a046490d..11bf87e7 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -1684,10 +1684,10 @@ An \tcode{fpos} type specifies file position information. @@ -9281,7 +9281,7 @@ index fb901823..2dea2cc5 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index 37e97efd..995ac6ef 100644 +index eda69180..b61dc003 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -136,12 +136,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -9877,7 +9877,7 @@ index 37e97efd..995ac6ef 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index 13c2330a..cc6ba680 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 @@ -10036,7 +10036,7 @@ index 90a3972a..5d4fbbf8 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index a7735840..db46040d 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 @@ -11141,7 +11141,7 @@ index c39c394b..ba05d89f 100644 2.43.0 -From 7f46bb5cd73f8d0aa7410bfc07c19029787f6d90 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 8/9] Remove awkward \linebreaks. @@ -11180,7 +11180,7 @@ index b7fd050e..8cbeb8e6 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index 62d8c723..8c6f18c1 100644 +index 0be602a1..1bdcf098 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1461,7 +1461,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11424,7 +11424,7 @@ index 2dea2cc5..e1572fe6 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index 995ac6ef..ccf1ed9a 100644 +index b61dc003..57e3b12b 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -2273,7 +2273,7 @@ present as follows: @@ -11591,7 +11591,7 @@ index 912546d8..ec7898d1 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index db46040d..53723351 100644 +index 693a8b4c..9a4c2a31 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -3492,7 +3492,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, @@ -11674,7 +11674,7 @@ index ba05d89f..c03201fa 100644 2.43.0 -From 7b7a1a758f9b27ba4976db4caa01e43821e1e699 Mon Sep 17 00:00:00 2001 +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. diff --git a/lastbuild.sig b/lastbuild.sig index bad5f12ef1..588a0930d8 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ htmlgen 63bc5929dc4fa6bb7448390ecec586c8069516b7 -draft 1fad6accf1aa93fb8803936ac2c2834340357bce -3070135b818ce3bb22deafe0ec55bdcdf690ed6e htmlgen.patch +draft aaecb9378d0766482cbb46e6bbe605edfc0781aa +68db5a559863267bad23f556fdf4d2c907b772f3 htmlgen.patch