From 823f74ccb1f2fc68f6fca572b5e7fbc1b9774384 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Mon, 27 Oct 2025 23:57:14 +1100 Subject: [PATCH] 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