diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen
index eee5307c45..63bc5929dc 160000
--- a/cxxdraft-htmlgen
+++ b/cxxdraft-htmlgen
@@ -1 +1 @@
-Subproject commit eee5307c45c04761ef5c27956cbed742e08e5fb4
+Subproject commit 63bc5929dc4fa6bb7448390ecec586c8069516b7
diff --git a/draft b/draft
index ac78ae76c5..aaecb9378d 160000
--- a/draft
+++ b/draft
@@ -1 +1 @@
-Subproject commit ac78ae76c579883a32a9eb5b00346150a41e8e47
+Subproject commit aaecb9378d0766482cbb46e6bbe605edfc0781aa
diff --git a/gen_html_std.sh b/gen_html_std.sh
index e4d5de4a88..f9ec3bef8d 100755
--- a/gen_html_std.sh
+++ b/gen_html_std.sh
@@ -1,4 +1,4 @@
-#! /bin/sh -e
+#! /bin/bash -e
# check if we need to rebuild
cd cxxdraft-htmlgen
@@ -47,28 +47,30 @@ cp std.pdf std_orig.pdf
# create the "annex-f" file that maps stable names to section numbers
+shopt -s extglob
# Memoir 3.8 changed the content of the .aux files so as to require a different incantation
-if grep -q TitleReference *.aux
+if grep -q TitleReference !(back).aux
then
# Memoir < 3.8
- grep -h '^\\newlabel{' *.aux \
+ grep -h '^\\newlabel{' !(back).aux \
| sed 's/\\newlabel{\([^}]*\)}.*TitleReference {\([^}]*\)}.*/\1 \2/' \
| sed 's/\\newlabel{\([^}]*\)}{{\(Clause\|Annex\) \([^}]*\)}.*/\1 \3/' \
| sed 's/\\newlabel{\(eq:[^}]*\)}{{\([^}]*\)}.*/\1 \2/' \
| grep -v '^\\' \
| sort > annex-f
else
- grep -h '^\\newlabel{' *.aux \
+ grep -h '^\\newlabel{' !(back).aux \
| sed 's/^\\newlabel{\([^}]*\)}{{\([^}]*\)}.*/\1 \2/' \
| grep -v '^\\' \
| sed 's/\(Clause\|Annex\) //' \
| sort > annex-f
fi
+shopt -u extglob
if [ -f ../../htmlgen.patch ]
then
-git apply -3 ../../htmlgen.patch
+git apply ../../htmlgen.patch
fi
# Build the HTML
diff --git a/gh-pages b/gh-pages
index df7adc3717..b1102cf744 160000
--- a/gh-pages
+++ b/gh-pages
@@ -1 +1 @@
-Subproject commit df7adc371752eab2b4d197727a7fe5e65c8787f1
+Subproject commit b1102cf744bbc95fd433320282abee6b58f55167
diff --git a/htmlgen.patch b/htmlgen.patch
index 7b86ae2bdc..be6fb53190 100644
--- a/htmlgen.patch
+++ b/htmlgen.patch
@@ -1,4 +1,4 @@
-From 087b7b86b346f3a15a16a3c7efdbb44f38a208a4 Mon Sep 17 00:00:00 2001
+From cfef94fb6232496a51582eb9fc9eea8987e68449 Mon Sep 17 00:00:00 2001
From: Eelis van der Weegen
Date: Mon, 23 Jan 2017 06:58:26 +0100
Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on
@@ -10,10 +10,10 @@ Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/source/basic.tex b/source/basic.tex
-index 81781294..cc2fab73 100644
+index 98705dfb..a22e5e30 100644
--- a/source/basic.tex
+++ b/source/basic.tex
-@@ -296,7 +296,7 @@ Given
+@@ -342,7 +342,7 @@ Given
#include
struct C {
@@ -22,7 +22,7 @@ index 81781294..cc2fab73 100644
};
int main() {
-@@ -2549,23 +2549,23 @@ namespace AB {
+@@ -2652,23 +2652,23 @@ namespace AB {
void h()
{
@@ -59,10 +59,10 @@ index 81781294..cc2fab73 100644
\end{codeblock}
\end{example}
diff --git a/source/expressions.tex b/source/expressions.tex
-index ebc26464..c6ff9d4a 100644
+index eec3be90..0ea2a413 100644
--- a/source/expressions.tex
+++ b/source/expressions.tex
-@@ -2846,7 +2846,7 @@ struct s2 {
+@@ -2938,7 +2938,7 @@ struct s2 {
}
auto g() {
return [] {
@@ -75,43 +75,43 @@ index ebc26464..c6ff9d4a 100644
2.43.0
-From eadd0f8aa92e9ad7489c01c436b187171a2cd451 Mon Sep 17 00:00:00 2001
+From 2879897dfe61d7e64d62f61275844d48b7fa15ac Mon Sep 17 00:00:00 2001
From: Eelis van der Weegen
Date: Wed, 1 Feb 2017 03:24:29 +0100
Subject: [PATCH 2/9] Use new link macros.
---
source/algorithms.tex | 4 +-
- source/basic.tex | 99 +++++++-------
- source/classes.tex | 24 ++--
+ source/basic.tex | 93 +++++++-------
+ source/classes.tex | 22 ++--
source/compatibility.tex | 4 +-
source/concepts.tex | 12 +-
- source/containers.tex | 50 ++++----
- source/declarations.tex | 69 +++++-----
+ source/containers.tex | 48 ++++----
+ source/declarations.tex | 57 +++++----
source/diagnostics.tex | 6 +-
- source/exceptions.tex | 36 +++---
- source/expressions.tex | 270 ++++++++++++++++++++-------------------
+ source/exceptions.tex | 34 +++---
+ source/expressions.tex | 258 ++++++++++++++++++++-------------------
source/future.tex | 10 +-
- source/intro.tex | 14 +-
+ source/intro.tex | 19 +--
source/iostreams.tex | 74 +++++------
- source/iterators.tex | 8 +-
- source/lex.tex | 10 +-
- source/lib-intro.tex | 73 +++++------
+ source/iterators.tex | 6 +-
+ source/lex.tex | 6 +-
+ source/lib-intro.tex | 69 +++++------
source/limits.tex | 2 +-
- source/numerics.tex | 60 ++++-----
+ source/numerics.tex | 55 ++++-----
source/overloading.tex | 64 +++++-----
- source/preprocessor.tex | 14 +-
+ source/preprocessor.tex | 12 +-
source/statements.tex | 30 ++---
source/strings.tex | 8 +-
- source/support.tex | 90 ++++++-------
- source/templates.tex | 124 +++++++++---------
- source/threads.tex | 45 ++++---
+ source/support.tex | 86 ++++++-------
+ source/templates.tex | 114 ++++++++---------
+ source/threads.tex | 35 +++---
source/time.tex | 10 +-
source/utilities.tex | 20 +--
- 27 files changed, 610 insertions(+), 620 deletions(-)
+ 27 files changed, 573 insertions(+), 585 deletions(-)
diff --git a/source/algorithms.tex b/source/algorithms.tex
-index 3790bb78..84d18c8b 100644
+index 8b2f530d..cd4ba8fb 100644
--- a/source/algorithms.tex
+++ b/source/algorithms.tex
@@ -5,7 +5,7 @@
@@ -123,7 +123,7 @@ index 3790bb78..84d18c8b 100644
\pnum
The following subclauses describe components for
-@@ -8111,7 +8111,7 @@ In either case, twice as many projections as comparisons.
+@@ -10225,7 +10225,7 @@ In either case, twice as many projections as comparisons.
\pnum
\remarks
@@ -133,10 +133,10 @@ index 3790bb78..84d18c8b 100644
\begin{itemdecl}
diff --git a/source/basic.tex b/source/basic.tex
-index cc2fab73..ed278134 100644
+index a22e5e30..eab80b45 100644
--- a/source/basic.tex
+++ b/source/basic.tex
-@@ -139,7 +139,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}.
+@@ -180,7 +180,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}.
\indextext{linkage}%
A name used in more than one translation unit can potentially
refer to the same entity in these translation units depending on the
@@ -145,7 +145,7 @@ index cc2fab73..ed278134 100644
translation unit.
\rSec1[basic.def]{Declarations and definitions}
-@@ -162,7 +162,7 @@ A declaration may also have effects including:
+@@ -205,7 +205,7 @@ A declaration can also have effects including:
\item a static assertion\iref{dcl.pre},
\item controlling template instantiation\iref{temp.explicit},
\item guiding template argument deduction for constructors\iref{temp.deduct.guide},
@@ -153,17 +153,8 @@ index cc2fab73..ed278134 100644
+\item use of \link{attributes}{dcl.attr}, and
\item nothing (in the case of an \grammarterm{empty-declaration}).
\end{itemize}
-
-@@ -246,7 +246,7 @@ that defines a function, a class, a variable, or a static data member,
- \item it is
- an explicit instantiation declaration\iref{temp.explicit}, or
- \item it is
--an explicit specialization\iref{temp.expl.spec} whose
-+an \link{explicit specialization}{temp.expl.spec} whose
- \grammarterm{declaration} is not a definition.
- \end{itemize}
- A declaration is said to be a \defn{definition} of each entity that it defines.
-@@ -288,7 +288,7 @@ In some circumstances, \Cpp{} implementations implicitly define the
+ \end{note}
+@@ -334,7 +334,7 @@ In some circumstances, \Cpp{} implementations implicitly define the
default constructor\iref{class.default.ctor},
copy constructor, move constructor\iref{class.copy.ctor},
copy assignment operator, move assignment operator\iref{class.copy.assign},
@@ -172,16 +163,16 @@ index cc2fab73..ed278134 100644
\end{note}
\begin{example}
Given
-@@ -372,7 +372,7 @@ defined as follows:
- \item If $E$ is an
- \grammarterm{id-expression}\iref{expr.prim.id}, the set
+@@ -419,7 +419,7 @@ defined as follows:
+ an \grammarterm{id-expression}\iref{expr.prim.id} or
+ a \grammarterm{splice-expression}\iref{expr.prim.splice}, the set
contains only $E$.
-\item If $E$ is a subscripting operation\iref{expr.sub} with
+\item If $E$ is a \link{subscripting}{expr.sub} operation with
an array operand, the set contains the potential results of that operand.
\item If $E$ is a class member access
expression\iref{expr.ref} of the form
-@@ -382,16 +382,15 @@ the set contains the potential results of $E_1$.
+@@ -430,16 +430,15 @@ the set contains the potential results of $E_1$.
\item If $E$ is a class member access expression
naming a static data member,
the set contains the \grammarterm{id-expression} designating the data member.
@@ -202,7 +193,7 @@ index cc2fab73..ed278134 100644
contains the potential results of the right operand.
\item Otherwise, the set is empty.
\end{itemize}
-@@ -542,8 +541,8 @@ implicitly-defined
+@@ -601,8 +600,8 @@ implicitly-defined
copy assignment or move assignment function for another class as specified
in~\ref{class.copy.assign}.
A constructor for a class is odr-used as specified
@@ -213,7 +204,7 @@ index cc2fab73..ed278134 100644
\pnum
A local entity\iref{basic.pre}
-@@ -615,7 +614,7 @@ void h() {
+@@ -674,7 +673,7 @@ void h() {
\pnum
Every program shall contain at least one definition of every
function or variable that is odr-used in that program
@@ -222,7 +213,7 @@ index cc2fab73..ed278134 100644
The definition can appear explicitly in the program, it can be found in
the standard or a user-defined library, or (when appropriate) it is
implicitly defined (see~\ref{class.default.ctor}, \ref{class.copy.ctor},
-@@ -663,9 +662,9 @@ The rules for declarations and expressions
+@@ -722,9 +721,9 @@ The rules for declarations and expressions
describe in which contexts complete class types are required. A class
type \tcode{T} must be complete if
\begin{itemize}
@@ -235,7 +226,7 @@ index cc2fab73..ed278134 100644
\item \tcode{T} is used as the allocated type or array element type in a
\grammarterm{new-expression}\iref{expr.new}, or
\item an lvalue-to-rvalue conversion is applied to
-@@ -685,7 +684,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or
+@@ -744,7 +743,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or
\keyword{sizeof} operator\iref{expr.sizeof} is applied to an operand of
type \tcode{T}, or
\item a function with a return type or argument type of type \tcode{T}
@@ -244,25 +235,7 @@ index cc2fab73..ed278134 100644
\item a class with a base class of type \tcode{T} is
defined\iref{class.derived}, or
\item an lvalue of type \tcode{T} is assigned to\iref{expr.assign}, or
-@@ -731,7 +730,7 @@ template specializations\iref{temp.spec.partial.match}, except that a name can r
- a non-volatile const object with internal or no linkage if the object
- \begin{itemize}
- \item has the same literal type in all definitions of \tcode{D},
--\item is initialized with a constant expression\iref{expr.const},
-+\item is initialized with a \link{constant expression}{expr.const},
- \item is not odr-used in any definition of \tcode{D}, and
- \item has the same value in all definitions of \tcode{D},
- \end{itemize}
-@@ -2745,7 +2744,7 @@ only namespace names are considered.%
- \pnum
- \indextext{program}%
- \indextext{linking}%
--A \defn{program} consists of one or more translation units\iref{lex.separate}
-+A \defn{program} consists of one or more \deflinkx{translation units}{translation unit}{lex.separate}
- linked together. A translation unit consists
- of a sequence of declarations.
-
-@@ -2778,7 +2777,7 @@ are attached to the same module.
+@@ -2945,7 +2944,7 @@ are attached to the same module.
\indextext{linkage!\idxcode{inline} and}%
\indextext{\idxcode{inline}!linkage of}%
The name of an entity
@@ -271,7 +244,7 @@ index cc2fab73..ed278134 100644
has internal linkage if it is the name of
\begin{itemize}
\item
-@@ -2819,7 +2818,7 @@ typedef declaration in which the class has the typedef name for linkage
+@@ -2986,7 +2985,7 @@ typedef declaration in which the class has the typedef name for linkage
purposes\iref{dcl.typedef}; or
\item
\indextext{enumeration!linkage of}%
@@ -280,7 +253,7 @@ index cc2fab73..ed278134 100644
in a typedef declaration in which the enumeration has the typedef name
for linkage purposes\iref{dcl.typedef}; or
\item an unnamed enumeration
-@@ -2895,7 +2894,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage.
+@@ -3062,7 +3061,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage.
\pnum
\indextext{linkage!no}%
Names not covered by these rules have no linkage. Moreover, except as
@@ -289,7 +262,7 @@ index cc2fab73..ed278134 100644
linkage.
\pnum
-@@ -3217,8 +3216,8 @@ features of the language, such as references and virtual functions, might
+@@ -3421,8 +3420,8 @@ features of the language, such as references and virtual functions, might
involve additional memory locations that are not accessible to programs but are
managed by the implementation.
\end{note}
@@ -300,7 +273,7 @@ index cc2fab73..ed278134 100644
locations without interfering with each other.
\pnum
-@@ -3262,15 +3261,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but
+@@ -3466,15 +3465,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but
The constructs in a \Cpp{} program create, destroy, refer to, access, and
manipulate objects.
An \defn{object} is created
@@ -319,7 +292,7 @@ index cc2fab73..ed278134 100644
and
in its period of destruction\iref{class.cdtor}.
\begin{note}
-@@ -3400,7 +3399,7 @@ A \defn{potentially-overlapping subobject} is either:
+@@ -3608,7 +3607,7 @@ A \defn{potentially-overlapping subobject} is either:
\begin{itemize}
\item a base class subobject, or
\item a non-static data member
@@ -328,7 +301,7 @@ index cc2fab73..ed278134 100644
\end{itemize}
\pnum
-@@ -3421,7 +3420,7 @@ Otherwise, the circumstances under which the object has zero size
+@@ -3629,7 +3628,7 @@ Otherwise, the circumstances under which the object has zero size
are \impldef{which non-standard-layout objects
containing no data are considered empty}.
\indextext{most derived object!bit-field}%
@@ -337,7 +310,7 @@ index cc2fab73..ed278134 100644
an object with nonzero size
shall occupy one or more bytes of storage,
including every byte that is occupied in full or in part
-@@ -3986,16 +3985,16 @@ the result of the evaluation is the value so produced but is not erroneous:
+@@ -4269,16 +4268,16 @@ the result of the evaluation is that erroneous value:
is produced by the evaluation of:
\begin{itemize}
\item
@@ -357,7 +330,7 @@ index cc2fab73..ed278134 100644
\end{itemize}
then the result of the operation is an indeterminate value or
that erroneous value, respectively.
-@@ -4186,8 +4185,8 @@ specified in~\ref{class.copy.elision}.
+@@ -4469,8 +4468,8 @@ specified in~\ref{class.copy.elision}.
\indextext{storage duration!dynamic|(}
\pnum
@@ -368,7 +341,7 @@ index cc2fab73..ed278134 100644
\indextext{\idxcode{new}}%
\grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using
\indextext{\idxcode{delete}}%
-@@ -4351,9 +4350,9 @@ that would match a handler\iref{except.handle} of type
+@@ -4634,9 +4633,9 @@ that would match a handler\iref{except.handle} of type
\tcode{std::bad_alloc}\iref{bad.alloc}.
\pnum
@@ -381,7 +354,7 @@ index cc2fab73..ed278134 100644
a coroutine state\iref{dcl.fct.def.coroutine},
or called indirectly through calls to the
functions in the \Cpp{} standard library.
-@@ -4848,9 +4847,9 @@ shall be destroyed before
+@@ -5161,9 +5160,9 @@ shall be destroyed before
impose requirements on implementations regarding the representation
of types.
There are two kinds of types: fundamental types and compound types.
@@ -394,16 +367,16 @@ index cc2fab73..ed278134 100644
\end{note}
\pnum
-@@ -5024,7 +5023,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types,
+@@ -5337,7 +5336,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types,
pointer types, pointer-to-member types\iref{basic.compound},
- \tcode{std::nullptr_t},
+ \tcode{std::meta::\brk{}info}, \tcode{std::nullptr_t},
and
-cv-qualified\iref{basic.type.qualifier} versions of these
+\link{cv-qualified}{basic.type.qualifier} versions of these
types are collectively called
\defnadjx{scalar}{types}{type}.
\label{term.trivially.copyable.type}%
-@@ -5057,7 +5056,7 @@ A type is a \defnadj{literal}{type} if it is:
+@@ -5362,7 +5361,7 @@ A type is a \defnadj{literal}{type} if it is:
\item a scalar type; or
\item a reference type; or
\item an array of literal type; or
@@ -412,7 +385,7 @@ index cc2fab73..ed278134 100644
has all of the following properties:
\begin{itemize}
\item it has a constexpr destructor\iref{dcl.constexpr},
-@@ -5091,8 +5090,8 @@ will be usable in a constant expression.
+@@ -5396,8 +5395,8 @@ will be usable in a constant expression.
Two types \cvqual{cv1} \tcode{T1} and \cvqual{cv2} \tcode{T2} are
\defnadjx{layout-compatible}{types}{type}
if \tcode{T1} and \tcode{T2} are the same type,
@@ -421,9 +394,9 @@ index cc2fab73..ed278134 100644
+\deflinkx{layout-compatible enumerations}{layout-compatible!enumeration}{dcl.enum}, or
+\deflinkx{layout-compatible standard-layout class types}{layout-compatible!class}{class.mem}.
- \rSec2[basic.fundamental]{Fundamental types}
-
-@@ -5540,7 +5539,7 @@ ordinary pointers to objects or functions.
+ \pnum
+ A type is \defn{consteval-only} if it is
+@@ -5971,7 +5970,7 @@ ordinary pointers to objects or functions.
which identify members of a given
type within objects of a given class, \ref{dcl.mptr}.
Pointers to data members and pointers to member functions are collectively
@@ -432,7 +405,7 @@ index cc2fab73..ed278134 100644
\end{itemize}
\pnum
-@@ -5618,7 +5617,7 @@ layout-compatible types shall
+@@ -6049,7 +6048,7 @@ layout-compatible types shall
have the same value representation and alignment
requirements\iref{basic.align}.
\begin{note}
@@ -441,7 +414,7 @@ index cc2fab73..ed278134 100644
representation, but their range of valid values is restricted by the extended
alignment requirement.
\end{note}
-@@ -5933,8 +5932,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}.
+@@ -6386,8 +6385,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}.
\indextext{program execution|(}
\pnum
@@ -452,29 +425,29 @@ index cc2fab73..ed278134 100644
block. Such an object exists and retains its last-stored value during
the execution of the block and while the block is suspended (by a call
of a function, suspension of a coroutine\iref{expr.await}, or receipt of a signal).
-@@ -5979,7 +5978,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda},
+@@ -6432,7 +6431,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda},
the initialization of the entities captured by copy and
the constituent expressions of the \grammarterm{initializer} of the \grammarterm{init-capture}{s},
\item
-if $E$ is a function call\iref{expr.call} or implicitly invokes a function,
+if $E$ is a \link{function call}{expr.call} or implicitly invokes a function,
the constituent expressions of each default argument\iref{dcl.fct.default}
- used in the call, or
+ used in the call, and
\item
-@@ -6010,7 +6009,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope
+@@ -6463,7 +6462,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope
A \defn{full-expression} is
\begin{itemize}
\item
-an unevaluated operand\iref{expr.context},
+an \deflink{unevaluated operand}{expr.context},
\item
- a \grammarterm{constant-expression}\iref{expr.const},
+ a \grammarterm{constant-expression}\iref{expr.const.core},
\item
diff --git a/source/classes.tex b/source/classes.tex
-index f0d9a262..170c2eb3 100644
+index 78a504f0..8c2f3c53 100644
--- a/source/classes.tex
+++ b/source/classes.tex
-@@ -274,10 +274,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it:
+@@ -188,10 +188,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it:
\item has no non-static data members of type non-standard-layout class
(or array of such types) or reference,
@@ -488,7 +461,7 @@ index f0d9a262..170c2eb3 100644
for all non-static data members,
\item has no non-standard-layout base classes,
-@@ -658,7 +658,7 @@ if it is
+@@ -574,7 +574,7 @@ if it is
\end{itemize}
For any other \grammarterm{member-declaration},
each declared entity
@@ -497,7 +470,7 @@ index f0d9a262..170c2eb3 100644
is a member of the class,
and each such \grammarterm{member-declaration}
shall either
-@@ -673,7 +673,7 @@ Nested types are classes\iref{class.name,class.nest} and
+@@ -593,7 +593,7 @@ Nested types are classes\iref{class.name,class.nest} and
enumerations\iref{dcl.enum} declared in the class and arbitrary types
declared as members by use of a typedef declaration\iref{dcl.typedef}
or \grammarterm{alias-declaration}.
@@ -506,16 +479,7 @@ index f0d9a262..170c2eb3 100644
are members of the class.
\pnum
-@@ -688,7 +688,7 @@ Any other data member or member function is a \defnadj{non-static}{member}
- \defnadj{non-static}{member function}\iref{class.mfct.non.static}, respectively).
- \begin{note}
- A non-static data member of non-reference
--type is a member subobject of a class object\iref{intro.object}.
-+type is a \deflink{member subobject}{intro.object} of a class object.
- \end{note}
-
- \pnum
-@@ -808,9 +808,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali
+@@ -739,9 +739,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali
The
\grammarterm{member-declarator-list} can be omitted only after a
\grammarterm{class-specifier} or an \grammarterm{enum-specifier} or in a
@@ -527,7 +491,7 @@ index f0d9a262..170c2eb3 100644
that is not a friend declaration.
\pnum
-@@ -913,7 +913,7 @@ unscoped enumeration type; and
+@@ -844,7 +844,7 @@ unscoped enumeration type; and
\pnum
In addition, if class \tcode{T} has a user-declared
@@ -536,7 +500,7 @@ index f0d9a262..170c2eb3 100644
\tcode{T} shall have a name different from \tcode{T}.
\pnum
-@@ -963,7 +963,7 @@ non-static data members (in any order) have layout-compatible
+@@ -894,7 +894,7 @@ non-static data members (in any order) have layout-compatible
types\iref{term.layout.compatible.type}.
\pnum
@@ -545,7 +509,7 @@ index f0d9a262..170c2eb3 100644
of struct type \tcode{T1}, it is permitted to read a non-static
data member \tcode{m} of another union member of struct type \tcode{T2}
provided \tcode{m} is part of the common initial sequence of \tcode{T1} and \tcode{T2};
-@@ -2257,7 +2257,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation
+@@ -2236,7 +2236,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation
An array of class type contains several subobjects for each of which
the destructor is invoked.
\end{note}
@@ -554,7 +518,7 @@ index f0d9a262..170c2eb3 100644
if it is invoked or as specified in~\ref{expr.new},
\ref{stmt.return}, \ref{dcl.init.aggr},
\ref{class.base.init}, and~\ref{except.throw}.
-@@ -6342,7 +6342,7 @@ associated with a \grammarterm{try-block} (if there is one),
+@@ -6344,7 +6344,7 @@ associated with a \grammarterm{try-block} (if there is one),
the copy-initialization of the exception object can be omitted by
constructing $o$ directly into the exception object;
@@ -564,10 +528,10 @@ index f0d9a262..170c2eb3 100644
corresponding parameter if the meaning of the program will be unchanged except for
the execution of a constructor and destructor for the parameter copy object;
diff --git a/source/compatibility.tex b/source/compatibility.tex
-index 87878a30..3a4119ed 100644
+index e3512400..cdca4c22 100644
--- a/source/compatibility.tex
+++ b/source/compatibility.tex
-@@ -1950,8 +1950,8 @@ deallocation functions\iref{expr.new}.
+@@ -1981,8 +1981,8 @@ deallocation functions\iref{expr.new}.
A conditional expression with a throw expression as its second or third
operand keeps the type and value category of the other operand.
\rationale
@@ -579,7 +543,7 @@ index 87878a30..3a4119ed 100644
lvalue-to-rvalue conversion, were considered gratuitous and surprising.
\effect
diff --git a/source/concepts.tex b/source/concepts.tex
-index 4d848e8f..6bd0435e 100644
+index d1e15a6e..42828a4b 100644
--- a/source/concepts.tex
+++ b/source/concepts.tex
@@ -300,7 +300,7 @@ classifications, and fundamental type properties.
@@ -627,10 +591,10 @@ index 4d848e8f..6bd0435e 100644
\rSec2[concept.default.init]{Concept \cname{default_initializable}}
diff --git a/source/containers.tex b/source/containers.tex
-index d7032dfd..9c719111 100644
+index a0095c26..0e937574 100644
--- a/source/containers.tex
+++ b/source/containers.tex
-@@ -6116,14 +6116,14 @@ namespace std {
+@@ -6125,14 +6125,14 @@ namespace std {
\indextext{\idxcode{array}!contiguous storage}%
The header \libheader{array} defines a class template for storing fixed-size
sequences of objects.
@@ -647,7 +611,7 @@ index d7032dfd..9c719111 100644
list-initialized with up
to \tcode{N} elements whose types are convertible to \tcode{T}.
-@@ -6134,8 +6134,8 @@ of a container\iref{container.reqmts} and
+@@ -6143,8 +6143,8 @@ of a container\iref{container.reqmts} and
of a reversible container\iref{container.rev.reqmts},
except that a default
constructed \tcode{array} object is not empty if $\tcode{N} > 0$.
@@ -658,7 +622,7 @@ index d7032dfd..9c719111 100644
Descriptions are provided here
only for operations on \tcode{array} that are not described in
one of these tables and
-@@ -6145,13 +6145,13 @@ for operations where there is additional semantic information.
+@@ -6154,7 +6154,7 @@ for operations where there is additional semantic information.
\tcode{array} is a structural type\iref{term.structural.type} if
\tcode{T} is a structural type.
Two values \tcode{a1} and \tcode{a2} of type \tcode{array}
@@ -667,14 +631,7 @@ index d7032dfd..9c719111 100644
each pair of corresponding elements in \tcode{a1} and \tcode{a2}
are template-argument-equivalent.
- \pnum
- The types \tcode{iterator} and \tcode{const_iterator} meet
--the constexpr iterator requirements\iref{iterator.requirements.general}.
-+the \deflinkx{constexpr iterator}{iterator!constexpr}{iterator.requirements.general} requirements.
-
- \indexlibraryglobal{array}%
- \indexlibrarymember{array}{begin}%
-@@ -6474,7 +6474,7 @@ namespace std {
+@@ -6479,7 +6479,7 @@ namespace std {
A
\indexlibraryglobal{deque}%
\tcode{deque}
@@ -683,7 +640,7 @@ index d7032dfd..9c719111 100644
In addition, it supports constant time insert and erase operations at the beginning or the end;
insert and erase in the middle take linear time.
That is, a deque is especially optimized for pushing and popping elements at the beginning and end.
-@@ -7138,7 +7138,7 @@ namespace std {
+@@ -7144,7 +7144,7 @@ namespace std {
\pnum
An incomplete type \tcode{T} may be used when instantiating \tcode{forward_list}
if the allocator meets the
@@ -692,7 +649,7 @@ index d7032dfd..9c719111 100644
\tcode{T} shall be complete before any member of the resulting specialization
of \tcode{forward_list} is referenced.
-@@ -7722,7 +7722,7 @@ predicate.
+@@ -7728,7 +7728,7 @@ predicate.
\pnum
\remarks
@@ -701,7 +658,7 @@ index d7032dfd..9c719111 100644
\end{itemdescr}
\indexlibrarymember{unique}{forward_list}%
-@@ -7827,7 +7827,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end(
+@@ -7833,7 +7833,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end(
\pnum
\remarks
@@ -710,7 +667,7 @@ index d7032dfd..9c719111 100644
\end{itemdescr}
\indexlibrarymember{reverse}{forward_list}%
-@@ -9027,7 +9027,7 @@ A
+@@ -9069,7 +9069,7 @@ A
is a sequence container that supports
bidirectional iterators and allows constant time insert and erase
operations anywhere within the sequence, with storage management handled
@@ -719,7 +676,7 @@ index d7032dfd..9c719111 100644
fast random access to list elements is not supported, but many
algorithms only need sequential access anyway.
-@@ -9203,7 +9203,7 @@ namespace std {
+@@ -9245,7 +9245,7 @@ namespace std {
\pnum
An incomplete type \tcode{T} may be used when instantiating \tcode{list}
if the allocator meets the
@@ -728,7 +685,7 @@ index d7032dfd..9c719111 100644
\tcode{T} shall be complete before any member of the resulting specialization
of \tcode{list} is referenced.
-@@ -9616,7 +9616,7 @@ applications of the corresponding predicate.
+@@ -9658,7 +9658,7 @@ applications of the corresponding predicate.
\pnum
\remarks
@@ -737,7 +694,7 @@ index d7032dfd..9c719111 100644
\end{itemdescr}
\indexlibrarymember{unique}{list}%
-@@ -9739,7 +9739,7 @@ comparisons, where $N$ is \tcode{size()}.
+@@ -9781,7 +9781,7 @@ comparisons, where $N$ is \tcode{size()}.
\pnum
\remarks
@@ -746,7 +703,7 @@ index d7032dfd..9c719111 100644
\end{itemdescr}
\rSec3[list.erasure]{Erasure}
-@@ -9847,7 +9847,7 @@ of an allocator-aware container\iref{container.alloc.reqmts},
+@@ -9889,7 +9889,7 @@ of an allocator-aware container\iref{container.alloc.reqmts},
of a sequence container, including most of the optional sequence container
requirements\iref{sequence.reqmts},
and, for an element type other than \tcode{bool},
@@ -755,7 +712,7 @@ index d7032dfd..9c719111 100644
The exceptions are the
\tcode{push_front}, \tcode{prepend_range}, \tcode{pop_front}, and \tcode{emplace_front} member functions, which are not
provided. Descriptions are provided here only for operations on \tcode{vector}
-@@ -9985,7 +9985,7 @@ namespace std {
+@@ -10027,7 +10027,7 @@ namespace std {
\pnum
An incomplete type \tcode{T} may be used when instantiating \tcode{vector}
if the allocator meets the
@@ -764,8 +721,8 @@ index d7032dfd..9c719111 100644
\tcode{T} shall be complete before any member of the resulting specialization
of \tcode{vector} is referenced.
-@@ -10578,7 +10578,7 @@ Unless described below, all operations have the same requirements and
- semantics as the primary \tcode{vector} template, except that operations
+@@ -10623,7 +10623,7 @@ Unless described below, all operations have the same requirements and
+ semantics as the \tcode{vector} primary template, except that operations
dealing with the \tcode{bool} value type map to bit values in the
container storage and
-\tcode{allocator_traits::construct}\iref{allocator.traits.members}
@@ -773,7 +730,7 @@ index d7032dfd..9c719111 100644
is not used to construct these values.
\pnum
-@@ -15653,9 +15653,9 @@ and
+@@ -15761,9 +15761,9 @@ and
can be used to instantiate
\tcode{queue}.
In particular,
@@ -785,7 +742,7 @@ index d7032dfd..9c719111 100644
can be used.
\begin{codeblock}
-@@ -16010,15 +16010,15 @@ and
+@@ -16118,15 +16118,15 @@ and
can be used to instantiate
\tcode{priority_queue}.
In particular,
@@ -804,7 +761,7 @@ index d7032dfd..9c719111 100644
\begin{codeblock}
namespace std {
-@@ -16563,10 +16563,10 @@ and
+@@ -16674,10 +16674,10 @@ and
can be used to instantiate
\tcode{stack}.
In particular,
@@ -819,10 +776,10 @@ index d7032dfd..9c719111 100644
\rSec3[stack.defn]{Definition}
diff --git a/source/declarations.tex b/source/declarations.tex
-index 2e575bbb..1af3ee51 100644
+index 627360a2..cea5493a 100644
--- a/source/declarations.tex
+++ b/source/declarations.tex
-@@ -513,7 +513,7 @@ in explicit specializations and explicit instantiations, respectively.
+@@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively.
\begin{note}
A variable declared without a \grammarterm{storage-class-specifier}
at block scope or declared as a function parameter
@@ -831,7 +788,7 @@ index 2e575bbb..1af3ee51 100644
\end{note}
\pnum
-@@ -783,10 +783,10 @@ an alias template or a type template template parameter.
+@@ -815,10 +815,10 @@ an alias template or a type template template parameter.
A \grammarterm{simple-template-id} that names a class template specialization
is a \grammarterm{class-name}\iref{class.name}.
If a \grammarterm{typedef-name} is used to identify the subject of an
@@ -846,7 +803,7 @@ index 2e575bbb..1af3ee51 100644
\end{note}
\begin{example}
\begin{codeblock}
-@@ -1127,7 +1127,7 @@ If an inline function or variable that is attached to a named module
+@@ -1151,7 +1151,7 @@ If an inline function or variable that is attached to a named module
is declared in a definition domain,
it shall be defined in that domain.
\begin{note}
@@ -855,7 +812,7 @@ index 2e575bbb..1af3ee51 100644
In the global module, a function defined within a class definition
is implicitly inline\iref{class.mfct,class.friend}.
\end{note}
-@@ -1272,7 +1272,7 @@ the object referenced is a non-const object and can be modified through
+@@ -1290,7 +1290,7 @@ the object referenced is a non-const object and can be modified through
some other access path.
\begin{note}
Cv-qualifiers are supported by the type system so that they cannot be
@@ -864,7 +821,7 @@ index 2e575bbb..1af3ee51 100644
\end{note}
\pnum
-@@ -1693,8 +1693,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$;
+@@ -1734,8 +1734,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$;
\item otherwise, \tcode{decltype($E$)} is the type of $E$.
\end{itemize}
@@ -874,7 +831,7 @@ index 2e575bbb..1af3ee51 100644
\begin{example}
\begin{codeblock}
-@@ -1890,7 +1889,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed.
+@@ -1934,7 +1933,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed.
If the \grammarterm{init-declarator-list} contains more than one
\grammarterm{init-declarator}, they shall all form declarations of
variables. The type of each declared variable is determined
@@ -883,7 +840,7 @@ index 2e575bbb..1af3ee51 100644
and if the type that replaces the placeholder type is not the
same in each deduction, the program is ill-formed.
-@@ -2032,7 +2031,7 @@ A function declared with a return type that uses a placeholder type shall not
+@@ -2076,7 +2075,7 @@ A function declared with a return type that uses a placeholder type shall not
be a coroutine\iref{dcl.fct.def.coroutine}.
\pnum
@@ -892,16 +849,7 @@ index 2e575bbb..1af3ee51 100644
instantiation of an entity declared using a placeholder type, but it also does
not prevent that entity from being instantiated as needed to determine its
type.
-@@ -2144,7 +2143,7 @@ Obtain \tcode{P} from
- a new invented type template parameter \tcode{U} or,
- if the initialization is copy-list-initialization, with
- \tcode{std::initializer_list}. Deduce a value for \tcode{U} using the rules
--of template argument deduction from a function call\iref{temp.deduct.call},
-+of \link{template argument deduction from a function call}{temp.deduct.call},
- where \tcode{P} is a
- function template parameter type and
- the corresponding argument is $E$.
-@@ -2243,7 +2242,7 @@ in the \grammarterm{type-specifier-seq}
+@@ -2291,7 +2290,7 @@ in the \grammarterm{type-specifier-seq}
in the \grammarterm{new-type-id} or \grammarterm{type-id}
of a \grammarterm{new-expression}\iref{expr.new},
as the \grammarterm{simple-type-specifier}
@@ -910,7 +858,7 @@ index 2e575bbb..1af3ee51 100644
or
as the \grammarterm{type-specifier} in the \grammarterm{parameter-declaration}
of a \grammarterm{template-parameter}\iref{temp.param}.
-@@ -4390,7 +4389,7 @@ int a;
+@@ -4501,7 +4500,7 @@ int a;
int f(int a, int b = a); // error: parameter \tcode{a} used as default argument
typedef int I;
int g(float I, int b = I(2)); // error: parameter \tcode{I} found
@@ -918,8 +866,8 @@ index 2e575bbb..1af3ee51 100644
+int h(int a, int b = sizeof(a)); // OK, \deflink{unevaluated operand}{expr.context}
\end{codeblock}
\end{example}
- A non-static member shall not appear in a default argument unless it appears as
-@@ -6087,15 +6086,15 @@ This requires a conversion
+ A non-static member shall not be designated in a default argument unless
+@@ -6226,15 +6225,15 @@ This requires a conversion
function\iref{class.conv.fct} returning a reference type.
\end{footnote}
(this conversion is selected by enumerating the applicable conversion
@@ -939,7 +887,7 @@ index 2e575bbb..1af3ee51 100644
conversions are not needed, and therefore are suppressed, when such
direct bindings to lvalues are done.
\end{note}
-@@ -7601,7 +7600,7 @@ the initializer is
+@@ -7747,7 +7746,7 @@ the initializer is
where \tcode{get} undergoes argument-dependent lookup\iref{basic.lookup.argdep}.
In either case, \tcode{get} is interpreted as a \grammarterm{template-id}.
\begin{note}
@@ -948,7 +896,7 @@ index 2e575bbb..1af3ee51 100644
\end{note}
In either case, \exposid{e} is an lvalue if the type of the entity \exposid{e}
is an lvalue reference and an xvalue otherwise.
-@@ -7752,7 +7751,7 @@ is not looked up and is introduced by
+@@ -7898,7 +7897,7 @@ is not looked up and is introduced by
the \grammarterm{enum-specifier} or \grammarterm{opaque-enum-declaration}.
If the \grammarterm{enum-head-name} of an \grammarterm{opaque-enum-declaration} contains
a \grammarterm{nested-name-specifier},
@@ -957,31 +905,7 @@ index 2e575bbb..1af3ee51 100644
\pnum
\indextext{constant!enumeration}%
-@@ -7834,8 +7833,9 @@ If the underlying type is fixed, the type of each enumerator
- prior to the closing brace is the underlying
- type
- and the \grammarterm{constant-expression} in the \grammarterm{enumerator-definition}
--shall be a converted constant expression of the underlying
--type\iref{expr.const}.
-+shall be a
-+\deflinkx{converted constant expression}{expression!converted constant}{expr.const}
-+of the underlying type.
- If the underlying
- type is not fixed,
- the type of each enumerator prior to the closing brace is determined as
-@@ -7844,8 +7844,9 @@ follows:
- \begin{itemize}
- \item If an
- initializer is specified for an enumerator, the
--\grammarterm{constant-expression} shall be an integral constant
--expression\iref{expr.const}. If the expression has
-+\grammarterm{constant-expression} shall be an
-+\deflinkx{integral constant expression}{expression!integral constant}{expr.const}.
-+If the expression has
- unscoped enumeration type, the enumerator has the underlying type of that
- enumeration type, otherwise it has the same type as the expression.
-
-@@ -7917,7 +7918,7 @@ if they have the same underlying type.
+@@ -8063,7 +8062,7 @@ if they have the same underlying type.
\pnum
The value of an enumerator or an object of an unscoped enumeration type is
@@ -990,7 +914,7 @@ index 2e575bbb..1af3ee51 100644
\begin{example}
\begin{codeblock}
enum color { red, yellow, green=20, blue };
-@@ -8196,7 +8197,7 @@ appertains to the namespace being defined or extended.
+@@ -8346,7 +8345,7 @@ appertains to the namespace being defined or extended.
Members of an inline namespace can be used in most respects as though they were members
of the innermost enclosing namespace. Specifically, the inline namespace and its enclosing
namespace are both added to the set of associated namespaces used in
@@ -999,7 +923,7 @@ index 2e575bbb..1af3ee51 100644
and a \grammarterm{using-directive}\iref{namespace.udir} that names the inline
namespace is implicitly inserted into the enclosing namespace as for an unnamed
namespace\iref{namespace.unnamed}. Furthermore, each
-@@ -9000,7 +9001,7 @@ different language linkages are distinct types even if they are
+@@ -9179,7 +9178,7 @@ different language linkages are distinct types even if they are
otherwise identical.
\pnum
@@ -1008,14 +932,16 @@ index 2e575bbb..1af3ee51 100644
be achieved using a \grammarterm{linkage-specification}:
\indextext{\idxgram{linkage-specification}}%
-@@ -9317,16 +9318,16 @@ For each individual attribute, the form of the
+@@ -9509,18 +9508,18 @@ For each individual attribute, the form of the
\pnum
In an \grammarterm{attribute-list}, an ellipsis may appear only if that
\grammarterm{attribute}'s specification permits it. An \grammarterm{attribute} followed
-by an ellipsis is a pack expansion\iref{temp.variadic}.
+by an ellipsis is a \deflink{pack expansion}{temp.variadic}.
- An \grammarterm{attribute-specifier} that contains no \grammarterm{attribute}{s} has no
- effect. The order in which the \grammarterm{attribute-token}{s} appear in an
+ An \grammarterm{attribute-specifier} that contains
+ an \grammarterm{attribute-list} with no \grammarterm{attribute}s
+ has no effect.
+ The order in which the \grammarterm{attribute-token}{s} appear in an
\grammarterm{attribute-list} is not significant. If a
-keyword\iref{lex.key}
-or an alternative token\iref{lex.digraph} that satisfies the syntactic requirements
@@ -1030,7 +956,7 @@ index 2e575bbb..1af3ee51 100644
\grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional
requirements on the \grammarterm{attribute-argument-clause} (if any).
-@@ -9433,7 +9434,7 @@ declaration, the program is ill-formed.
+@@ -9638,7 +9637,7 @@ declaration, the program is ill-formed.
\pnum
An \grammarterm{alignment-specifier} of the form
\tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same
@@ -1039,20 +965,20 @@ index 2e575bbb..1af3ee51 100644
\pnum
The alignment requirement of an entity is the strictest nonzero alignment
-@@ -9613,7 +9614,7 @@ unless the implementation can issue such diagnostic messages.
+@@ -9818,7 +9817,7 @@ unless the implementation can issue such diagnostic messages.
\pnum
The \grammarterm{attribute-token} \tcode{fallthrough}
-may be applied to a null statement\iref{stmt.expr};
+may be applied to a \deflinkx{null statement}{statement!null}{stmt.expr};
- \indextext{statement!fallthrough}
- such a statement is a fallthrough statement.
+ such a statement is a \defnadj{fallthrough}{statement}.
No \grammarterm{attribute-argument-clause} shall be present.
+ A fallthrough statement may only appear within
diff --git a/source/diagnostics.tex b/source/diagnostics.tex
-index 3c4b0c98..b4b70046 100644
+index d842475b..eee2454e 100644
--- a/source/diagnostics.tex
+++ b/source/diagnostics.tex
-@@ -505,13 +505,13 @@ the current state of \tcode{NDEBUG} each time that
+@@ -508,13 +508,13 @@ the current state of \tcode{NDEBUG} each time that
\pnum
An expression \tcode{assert(E)}
@@ -1068,7 +994,7 @@ index 3c4b0c98..b4b70046 100644
is a constant subexpression that evaluates to the value \tcode{true}.
\end{itemize}
-@@ -1526,7 +1526,7 @@ application program interfaces.
+@@ -1529,7 +1529,7 @@ application program interfaces.
\pnum
\begin{note}
If an error represents an out-of-memory condition, implementations are
@@ -1078,7 +1004,7 @@ index 3c4b0c98..b4b70046 100644
\end{note}
\indexlibraryglobal{system_error}%
diff --git a/source/exceptions.tex b/source/exceptions.tex
-index 79684e4c..12cfcb8d 100644
+index df3b639d..abd4aef1 100644
--- a/source/exceptions.tex
+++ b/source/exceptions.tex
@@ -184,7 +184,7 @@ try : i(f(ii)), d(id) {
@@ -1141,10 +1067,10 @@ index 79684e4c..12cfcb8d 100644
\item%
-a standard pointer conversion\iref{conv.ptr} not involving conversions
+a standard \link{pointer conversion}{conv.ptr} not involving conversions
- to pointers to private or protected or ambiguous classes
+ to pointers to private or protected or ambiguous classes,
\item%
--a function pointer conversion\iref{conv.fctptr}
-+a \link{function pointer conversion}{conv.fctptr}
+-a function pointer conversion\iref{conv.fctptr},
++a \link{function pointer conversion}{conv.fctptr},
\item%
-a qualification conversion\iref{conv.qual}, or
+a \link{qualification conversion}{conv.qual}, or
@@ -1160,7 +1086,7 @@ index 79684e4c..12cfcb8d 100644
Exceptions thrown in destructors of objects with thread storage duration or in constructors of objects associated with non-block variables with thread storage duration are not caught by a
\grammarterm{function-try-block}
on the initial function of the thread.
-@@ -766,7 +766,7 @@ otherwise it has a
+@@ -769,7 +769,7 @@ otherwise it has a
The exception specification is either defined implicitly,
or defined explicitly
by using a \grammarterm{noexcept-specifier}
@@ -1169,7 +1095,7 @@ index 79684e4c..12cfcb8d 100644
\begin{bnf}
\nontermdef{noexcept-specifier}\br
-@@ -806,7 +806,7 @@ in which cases the exception specification
+@@ -809,7 +809,7 @@ in which cases the exception specification
is as specified below
and no other declaration for that function
shall have a \grammarterm{noexcept-specifier}.
@@ -1178,7 +1104,7 @@ index 79684e4c..12cfcb8d 100644
a \grammarterm{noexcept-specifier} may be specified,
but is not required.
If a \grammarterm{noexcept-specifier} is specified
-@@ -855,7 +855,7 @@ An expression $E$ is
+@@ -858,7 +858,7 @@ An expression $E$ is
\defnx{potentially-throwing}{potentially-throwing!expression} if
\begin{itemize}
\item
@@ -1187,16 +1113,7 @@ index 79684e4c..12cfcb8d 100644
whose \grammarterm{postfix-expression}
has a function type,
or a pointer-to-function type,
-@@ -883,7 +883,7 @@ applied to a pointer to a
- polymorphic class type\iref{expr.typeid},
- or
- \item
--any of the immediate subexpressions\iref{intro.execution}
-+any of the \deflinkx{immediate subexpressions}{immediate subexpression}{intro.execution}
- of $E$ is potentially-throwing.
- \end{itemize}
-
-@@ -936,7 +936,7 @@ the invocation of any assignment operator
+@@ -939,7 +939,7 @@ the invocation of any assignment operator
in the implicit definition is potentially-throwing.
\pnum
@@ -1205,7 +1122,7 @@ index 79684e4c..12cfcb8d 100644
with no explicit \grammarterm{noexcept-specifier}
has a non-throwing exception specification.
-@@ -1051,9 +1051,9 @@ via an exception, or
+@@ -1053,9 +1053,9 @@ via an exception, or
\item%
when the exception handling mechanism cannot find a handler for a thrown exception\iref{except.handle}, or
@@ -1217,7 +1134,7 @@ index 79684e4c..12cfcb8d 100644
including when a contract-violation handler
invoked from an evaluation of
a function contract assertion\iref{basic.contract.eval} associated with the function
-@@ -1061,7 +1061,7 @@ exits via an exception,
+@@ -1063,7 +1063,7 @@ exits via an exception,
or
\item%
@@ -1227,7 +1144,7 @@ index 79684e4c..12cfcb8d 100644
\item%
diff --git a/source/expressions.tex b/source/expressions.tex
-index c6ff9d4a..13e2526b 100644
+index 0ea2a413..24af225d 100644
--- a/source/expressions.tex
+++ b/source/expressions.tex
@@ -33,14 +33,14 @@ effects.
@@ -1249,7 +1166,7 @@ index c6ff9d4a..13e2526b 100644
\end{note}
\pnum
-@@ -212,7 +212,7 @@ xvalues; rvalue references to functions are treated as lvalues whether named or
+@@ -216,7 +216,7 @@ xvalues; rvalue references to functions are treated as lvalues whether named or
\begin{example}
\begin{codeblock}
struct A {
@@ -1258,7 +1175,7 @@ index c6ff9d4a..13e2526b 100644
};
A&& operator+(A, A);
A&& f();
-@@ -268,7 +268,7 @@ Unless otherwise specified\iref{expr.reinterpret.cast, expr.const.cast},
+@@ -272,7 +272,7 @@ Unless otherwise specified\iref{expr.reinterpret.cast, expr.const.cast},
whenever a prvalue
that is not the result of the lvalue-to-rvalue conversion\iref{conv.lval}
appears as an operand of an operator,
@@ -1267,7 +1184,7 @@ index c6ff9d4a..13e2526b 100644
applied to convert the expression to an xvalue.
\pnum
-@@ -450,31 +450,31 @@ An unevaluated operand is not evaluated.
+@@ -455,31 +455,31 @@ An unevaluated operand is not evaluated.
In an unevaluated operand, a non-static class member can be
named\iref{expr.prim.id} and naming of objects or functions does not, by
itself, require that a definition be provided\iref{basic.def.odr}.
@@ -1293,26 +1210,24 @@ index c6ff9d4a..13e2526b 100644
- \grammarterm{expression} is one of these expressions,
+\grammarterm{expression} is one of these expressions,
\item \grammarterm{id-expression}\iref{expr.prim.id},
+ \item \grammarterm{splice-expression}\iref{expr.prim.splice},
-\item subscripting\iref{expr.sub},
-\item class member access\iref{expr.ref},
-\item indirection\iref{expr.unary.op},
-\item pointer-to-member operation\iref{expr.mptr.oper},
-\item conditional expression\iref{expr.cond} where both the second and the
-- third operands are one of these expressions, or
--\item comma expression\iref{expr.comma} where the right operand is one of
-- these expressions.
+\item \link{subscripting}{expr.sub},
+\item \link{class member access}{expr.ref},
+\item \deflink{indirection}{expr.unary.op},
+\item \link{pointer-to-member operation}{expr.mptr.oper},
+\item \link{conditional expression}{expr.cond} where both the second and the
-+ third operands are one of these expressions, or
+ third operands are one of these expressions, or
+-\item comma expression\iref{expr.comma} where the right operand is one of
+\item \link{comma expression}{expr.comma} where the right operand is one of
-+ these expressions.
+ these expressions.
\end{itemize}
- \begin{note}
-@@ -612,7 +612,7 @@ descriptions of those operators and contexts.
+@@ -618,7 +618,7 @@ descriptions of those operators and contexts.
\pnum
\indextext{conversion!lvalue-to-rvalue}%
\indextext{type!incomplete}%
@@ -1321,7 +1236,7 @@ index c6ff9d4a..13e2526b 100644
can be converted to
a prvalue.
\begin{footnote}
-@@ -637,18 +637,18 @@ is applied to an expression $E$, and either
+@@ -643,18 +643,18 @@ is applied to an expression $E$, and either
\begin{itemize}
\item $E$ is not potentially evaluated, or
\item the evaluation of $E$ results in the evaluation of a member
@@ -1346,7 +1261,7 @@ index c6ff9d4a..13e2526b 100644
}
auto g = f();
int m = g(false); // undefined behavior: access of \tcode{x.n} outside its lifetime
-@@ -820,11 +820,11 @@ allowed), a program could inadvertently modify a const object
+@@ -826,11 +826,11 @@ allowed), a program could inadvertently modify a const object
(as it is done on line \#2). For example,
\begin{codeblock}
int main() {
@@ -1363,7 +1278,7 @@ index c6ff9d4a..13e2526b 100644
}
\end{codeblock}
\end{note}
-@@ -1081,7 +1081,7 @@ the derived class object.
+@@ -1088,7 +1088,7 @@ the derived class object.
\indextext{conversion!pointer-to-member}%
\indextext{null member pointer conversion|see{conversion, null member pointer}}%
\indextext{constant!null pointer}%
@@ -1372,7 +1287,7 @@ index c6ff9d4a..13e2526b 100644
pointer-to-member
type; the result is the \defnx{null member pointer value}{value!null member pointer}
of that type and is distinguishable from any pointer to member not
-@@ -1309,7 +1309,7 @@ occur until the complete declarator is known.
+@@ -1317,7 +1317,7 @@ occur until the complete declarator is known.
\begin{note}
In a \grammarterm{trailing-return-type},
the class being defined is not required to be complete
@@ -1381,7 +1296,7 @@ index c6ff9d4a..13e2526b 100644
Class members declared later are not visible.
\begin{example}
\begin{codeblock}
-@@ -1377,8 +1377,8 @@ meaning, except as otherwise indicated.
+@@ -1384,8 +1384,8 @@ meaning, except as otherwise indicated.
An \grammarterm{id-expression} is a restricted form of a
\grammarterm{primary-expression}.
\begin{note}
@@ -1392,7 +1307,7 @@ index c6ff9d4a..13e2526b 100644
\end{note}
\pnum
-@@ -1501,7 +1501,7 @@ In each case, the constraints of \tcode{f} are not satisfied.
+@@ -1518,7 +1518,7 @@ In each case, the constraints of \tcode{f} are not satisfied.
In the declaration of \tcode{p2},
those constraints need to be satisfied
even though
@@ -1401,7 +1316,7 @@ index c6ff9d4a..13e2526b 100644
\end{example}
\end{note}
-@@ -2056,8 +2056,8 @@ void abssort(float* x, unsigned N) {
+@@ -2140,8 +2140,8 @@ void abssort(float* x, unsigned N) {
A \grammarterm{lambda-expression} is a prvalue
whose result object is called the \defn{closure object}.
\begin{note}
@@ -1412,7 +1327,7 @@ index c6ff9d4a..13e2526b 100644
\end{note}
\pnum
-@@ -2386,7 +2386,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no
+@@ -2475,7 +2475,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no
and no explicit object parameter\iref{dcl.fct}
whose constraints (if any) are satisfied
has a conversion function to pointer to
@@ -1421,7 +1336,7 @@ index c6ff9d4a..13e2526b 100644
the same parameter and return types as the closure type's function call operator.
The conversion is to ``pointer to \keyword{noexcept} function''
if the function call operator
-@@ -2495,8 +2495,8 @@ GL_int(3); // OK, same as \tcode{GL(3)}
+@@ -2584,8 +2584,8 @@ GL_int(3); // OK, same as \tcode{GL(3)}
\pnum
The conversion function or conversion function template is public,
@@ -1432,7 +1347,7 @@ index c6ff9d4a..13e2526b 100644
\begin{example}
\begin{codeblock}
auto Fwd = [](int (*fp)(int), auto a) { return fp(a); };
-@@ -2552,9 +2552,9 @@ implicitly-declared destructor\iref{class.dtor}.
+@@ -2643,9 +2643,9 @@ implicitly-declared destructor\iref{class.dtor}.
\pnum
A member of a closure type shall not be
@@ -1445,7 +1360,7 @@ index c6ff9d4a..13e2526b 100644
\rSec3[expr.prim.lambda.capture]{Captures}%
-@@ -3122,7 +3122,7 @@ A fold expression is a pack expansion.
+@@ -3215,7 +3215,7 @@ A fold expression is a pack expansion.
\pnum
A \grammarterm{requires-expression} provides a concise way to express
requirements on template arguments
@@ -1454,7 +1369,7 @@ index c6ff9d4a..13e2526b 100644
or by checking properties of types and expressions.
\begin{bnf}
-@@ -3551,7 +3551,7 @@ or a prvalue of function pointer type.
+@@ -3813,7 +3813,7 @@ or a prvalue of function pointer type.
If the selected
function is non-virtual, or if the \grammarterm{id-expression} in the class
member access expression is a \grammarterm{qualified-id}, that function is
@@ -1463,18 +1378,18 @@ index c6ff9d4a..13e2526b 100644
of the object expression is called; such a call is referred to as a
\defnx{virtual function call}{function!virtual function call}.
\begin{note}
-@@ -3564,8 +3564,8 @@ an object under construction or destruction.
+@@ -3826,8 +3826,8 @@ an object under construction or destruction.
\pnum
\begin{note}
--If a function or member function name is used, and name
+-If a function name is used, and name
-lookup\iref{basic.lookup} does not find a declaration of that name,
-+If a function or member function name is used, and \link{name
++If a function name is used, and \link{name
+lookup}{basic.lookup} does not find a declaration of that name,
the program is ill-formed. No function is implicitly declared by such a
call.
\end{note}
-@@ -3632,7 +3632,7 @@ function,
+@@ -3894,7 +3894,7 @@ function,
the object expression of the class member access shall be a glvalue and
the implicit object parameter of the function\iref{over.match.funcs}
is initialized with that glvalue,
@@ -1483,7 +1398,7 @@ index c6ff9d4a..13e2526b 100644
\begin{note}
There is no access or ambiguity checking on this conversion; the access
checking and disambiguation are done as part of the (possibly implicit)
-@@ -3769,10 +3769,10 @@ pointer parameters.
+@@ -4031,10 +4031,10 @@ pointer parameters.
\pnum
\indextext{declaration!ellipsis in function}%
\indextext{parameter list!variable}%
@@ -1497,7 +1412,7 @@ index c6ff9d4a..13e2526b 100644
\begin{note}
This implies that, except where the ellipsis (\tcode{...}) or a function
parameter pack is used, a parameter is available for each argument.
-@@ -3790,8 +3790,8 @@ thus each such argument has a corresponding parameter when a function template
+@@ -4052,8 +4052,8 @@ thus each such argument has a corresponding parameter when a function template
specialization is actually called.
\end{note}
The
@@ -1508,7 +1423,7 @@ index c6ff9d4a..13e2526b 100644
performed on the argument expression.
An argument that has type \cv{}~\tcode{std::nullptr_t} is converted
to type \tcode{\keyword{void}*}\iref{conv.ptr}.
-@@ -3806,16 +3806,16 @@ an eligible non-trivial move constructor, or
+@@ -4068,16 +4068,16 @@ an eligible non-trivial move constructor, or
a non-trivial destructor\iref{class.dtor},
with no corresponding parameter, is conditionally-supported with
\impldef{passing argument of class type through ellipsis} semantics. If the argument has
@@ -1530,7 +1445,7 @@ index c6ff9d4a..13e2526b 100644
\pnum
A function call is an lvalue
-@@ -3834,8 +3834,8 @@ except as specified in \ref{dcl.type.decltype}.
+@@ -4096,8 +4096,8 @@ except as specified in \ref{dcl.type.decltype}.
\indextext{type conversion, explicit|see{casting}}%
\indextext{conversion explicit type|see{casting}}%
\indextext{casting}%
@@ -1541,7 +1456,7 @@ index c6ff9d4a..13e2526b 100644
by a parenthesized optional \grammarterm{expression-list} or
by a \grammarterm{braced-init-list}
(the initializer)
-@@ -3846,7 +3846,7 @@ If the type is a placeholder
+@@ -4108,7 +4108,7 @@ If the type is a placeholder
for a deduced class type,
it is replaced by the return type
of the function selected by overload resolution
@@ -1550,7 +1465,7 @@ index c6ff9d4a..13e2526b 100644
for the remainder of this subclause.
Otherwise, if the type contains a placeholder type,
it is replaced by the type
-@@ -4183,8 +4183,8 @@ void foo(D* dp) {
+@@ -4507,8 +4507,8 @@ void foo(D* dp) {
\end{example}
\pnum
@@ -1561,7 +1476,7 @@ index c6ff9d4a..13e2526b 100644
\pnum
If \tcode{v} is a null pointer value, the result is a null pointer value.
-@@ -4235,9 +4235,9 @@ runtime check \term{fails}.
+@@ -4559,9 +4559,9 @@ runtime check \term{fails}.
\pnum
The value of a failed cast to pointer type is the null pointer value of
@@ -1574,7 +1489,7 @@ index c6ff9d4a..13e2526b 100644
\indextext{\idxcode{bad_cast}}%
\indexlibraryglobal{bad_cast}%
-@@ -4326,13 +4326,13 @@ glvalue refers.
+@@ -4650,13 +4650,13 @@ glvalue refers.
When \keyword{typeid} is applied to an expression other than a glvalue of
a polymorphic class type, the result refers to a \tcode{std::type_info}
object representing the static type of the expression.
@@ -1592,7 +1507,7 @@ index c6ff9d4a..13e2526b 100644
\pnum
When \keyword{typeid} is applied to a \grammarterm{type-id}, the result
-@@ -4427,7 +4427,7 @@ of type \tcode{T1} can be cast to type ``rvalue
+@@ -4750,7 +4750,7 @@ of type \tcode{T1} can be cast to type ``rvalue
reference to \tcode{T2}'' if \tcode{T2} is reference-compatible with
\tcode{T1}\iref{dcl.init.ref}. If the value is not a bit-field,
the result refers to the object or the specified base class subobject
@@ -1601,7 +1516,7 @@ index c6ff9d4a..13e2526b 100644
is applied to the bit-field and the resulting prvalue is used as the
operand of the \keyword{static_cast} for the remainder of this subclause.
If \tcode{T2} is an inaccessible\iref{class.access} or
-@@ -4557,7 +4557,8 @@ Otherwise, the behavior is undefined.
+@@ -4855,7 +4855,8 @@ Otherwise, the behavior is undefined.
A prvalue of type ``pointer to \cvqual{cv1} \tcode{B}'', where \tcode{B}
is a class type, can be converted to a prvalue of type ``pointer to
\cvqual{cv2} \tcode{D}'',
@@ -1611,7 +1526,7 @@ index c6ff9d4a..13e2526b 100644
from \tcode{B},
if \cvqual{cv2} is the same cv-qualification as,
or greater cv-qualification than, \cvqual{cv1}.
-@@ -4578,7 +4579,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1}
+@@ -4876,7 +4877,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1}
\tcode{T}'' can be converted to a prvalue of type ``pointer to member of
\tcode{B} of type \cvqual{cv2} \tcode{T}'', where
\tcode{D} is a complete class type and
@@ -1620,7 +1535,7 @@ index c6ff9d4a..13e2526b 100644
if \cvqual{cv2} is the same cv-qualification
as, or greater cv-qualification than, \cvqual{cv1}.
\begin{note}
-@@ -4589,7 +4590,7 @@ If no valid standard conversion
+@@ -4887,7 +4888,7 @@ If no valid standard conversion
from ``pointer to member of \tcode{B} of type \tcode{T}''
to ``pointer to member of \tcode{D} of type \tcode{T}''
exists\iref{conv.mem}, the program is ill-formed.
@@ -1629,7 +1544,7 @@ index c6ff9d4a..13e2526b 100644
member pointer value of the destination type. If class \tcode{B}
contains the original member, or is a base class of the class
containing the original member, the resulting pointer to member points
-@@ -4612,7 +4613,7 @@ If the original pointer value represents the address
+@@ -4910,7 +4911,7 @@ If the original pointer value represents the address
then the resulting pointer value\iref{basic.compound} is unspecified.
Otherwise, if the original pointer value points to an object \placeholder{a},
and there is an object \placeholder{b} of type similar to \tcode{T}
@@ -1638,7 +1553,7 @@ index c6ff9d4a..13e2526b 100644
the result is a pointer to \placeholder{b}.
Otherwise, the pointer value is unchanged by the conversion.
\begin{example}
-@@ -4638,8 +4639,8 @@ result of converting the expression \tcode{v} to type \tcode{T}.
+@@ -4933,8 +4934,8 @@ result of converting the expression \tcode{v} to type \tcode{T}.
If \tcode{T} is an lvalue reference type or an rvalue reference to function type, the result is an lvalue;
if \tcode{T} is an rvalue reference to object type, the result is an xvalue;
otherwise, the result is a prvalue and the
@@ -1649,7 +1564,7 @@ index c6ff9d4a..13e2526b 100644
performed on the expression \tcode{v}. Conversions that can be performed explicitly
using \keyword{reinterpret_cast} are listed below. No other conversion can
be performed explicitly using \keyword{reinterpret_cast}.
-@@ -4808,10 +4809,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type
+@@ -5099,10 +5100,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type
lvalue;
if \tcode{T} is an rvalue reference to object type, the result is an xvalue;
otherwise, the result is a prvalue and the
@@ -1663,7 +1578,7 @@ index c6ff9d4a..13e2526b 100644
performed on \tcode{v}, other than as specified below.
Conversions that can be performed explicitly using
\keyword{const_cast} are listed below. No other conversion shall be
-@@ -5348,7 +5349,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside
+@@ -5655,7 +5656,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside
The \keyword{sizeof} operator yields the number of bytes
occupied by a non-potentially-overlapping object of the type
of its operand. The operand is either an expression,
@@ -1672,7 +1587,7 @@ index c6ff9d4a..13e2526b 100644
\grammarterm{type-id}.
\indextext{type!incomplete}%
The \keyword{sizeof} operator shall not be applied to an expression that
-@@ -5403,7 +5404,7 @@ array-to-pointer\iref{conv.array}, and
+@@ -5712,7 +5713,7 @@ array-to-pointer\iref{conv.array}, and
function-to-pointer\iref{conv.func} standard conversions are not
applied to the operand of \keyword{sizeof}.
If the operand is a prvalue,
@@ -1681,7 +1596,7 @@ index c6ff9d4a..13e2526b 100644
is applied.
\pnum
-@@ -5548,7 +5549,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type.
+@@ -5857,7 +5858,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type.
\end{bnf}
\pnum
@@ -1690,7 +1605,7 @@ index c6ff9d4a..13e2526b 100644
a placeholder for a deduced class type\iref{dcl.type.class.deduct}
appears in the
\grammarterm{type-specifier-seq} of a \grammarterm{new-type-id} or
-@@ -5676,7 +5677,7 @@ is less than zero;
+@@ -5985,7 +5986,7 @@ is less than zero;
\item
its value is such that the size of the allocated object would exceed the
@@ -1698,8 +1613,8 @@ index c6ff9d4a..13e2526b 100644
+\impldef{maximum size of an allocated object} \link{limit}{implimits}; or
\item
- the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} and the
-@@ -5701,7 +5702,7 @@ is the null pointer value of the required result type;
+ the \grammarterm{new-initializer} is a \grammarterm{braced-init-list}
+@@ -6011,7 +6012,7 @@ is the null pointer value of the required result type;
\item
otherwise, the \grammarterm{new-expression} terminates by throwing an
exception of a type that would match a handler\iref{except.handle} of type
@@ -1708,7 +1623,7 @@ index c6ff9d4a..13e2526b 100644
\end{itemize}
\end{itemize}
When the value of the \grammarterm{expression} is zero, the allocation
-@@ -5752,8 +5753,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} (
+@@ -6069,8 +6070,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} (
A \grammarterm{new-expression} may obtain storage for the object by calling an
allocation function\iref{basic.stc.dynamic.allocation}. If
the \grammarterm{new-expression} terminates by throwing an exception, it
@@ -1719,7 +1634,7 @@ index c6ff9d4a..13e2526b 100644
is a non-array type, the allocation function's name is
\indextext{\idxcode{operator new}}%
\indextext{\idxcode{operator delete}}%
-@@ -5864,7 +5865,7 @@ the difference between the
+@@ -6181,7 +6182,7 @@ the difference between the
result of the \grammarterm{new-expression} and the address returned by the
allocation function shall be an integral multiple of the
strictest fundamental
@@ -1728,7 +1643,7 @@ index c6ff9d4a..13e2526b 100644
is no greater than the size of the array being created.
\begin{note}
\indextext{allocation!alignment storage}%
-@@ -5955,7 +5956,7 @@ invocation of \keyword{new} to another.
+@@ -6272,7 +6273,7 @@ invocation of \keyword{new} to another.
\pnum
\begin{note}
Unless an allocation function has a non-throwing
@@ -1737,7 +1652,7 @@ index c6ff9d4a..13e2526b 100644
it indicates failure to allocate storage by throwing a
\indextext{\idxcode{bad_alloc}}%
\indexlibraryglobal{bad_alloc}%
-@@ -6101,8 +6102,8 @@ to both the allocation and deallocation functions.
+@@ -6488,8 +6489,8 @@ to both the allocation and deallocation functions.
\pnum
\indextext{expression!\idxcode{delete}}%
\indextext{\idxcode{delete}}%
@@ -1748,7 +1663,7 @@ index c6ff9d4a..13e2526b 100644
\grammarterm{new-expression}.
\begin{bnf}
-@@ -6205,8 +6206,8 @@ null pointer value, then:
+@@ -6592,8 +6593,8 @@ null pointer value, then:
\item
If the allocation call for the \grammarterm{new-expression} for the object to
be deleted was not omitted and the allocation was not extended\iref{expr.new}, the
@@ -1759,7 +1674,7 @@ index c6ff9d4a..13e2526b 100644
allocation call of the \grammarterm{new-expression} shall be passed as the
first argument to the deallocation function.
-@@ -6565,8 +6566,8 @@ The result of a \tcode{.*} expression
+@@ -7178,8 +7179,8 @@ The result of a \tcode{.*} expression
whose second operand is a pointer to a data member is an lvalue if the first
operand is an lvalue and an xvalue otherwise. The result of a \tcode{.*} expression whose
second operand is a pointer to a member function is a prvalue.
@@ -1770,7 +1685,7 @@ index c6ff9d4a..13e2526b 100644
\rSec2[expr.mul]{Multiplicative operators}%
\indextext{expression!multiplicative operators}%
-@@ -6595,7 +6596,7 @@ left-to-right.
+@@ -7208,7 +7209,7 @@ left-to-right.
\pnum
The operands of \tcode{*} and \tcode{/} shall have arithmetic or unscoped
enumeration type; the operands of \tcode{\%} shall have integral or unscoped
@@ -1779,7 +1694,7 @@ index c6ff9d4a..13e2526b 100644
operands and determine the type of the result.
\pnum
-@@ -6731,7 +6732,7 @@ the behavior is undefined\iref{expr.pre}.
+@@ -7339,7 +7340,7 @@ the behavior is undefined\iref{expr.pre}.
\pnum
For addition or subtraction, if the expressions \tcode{P} or \tcode{Q} have
type ``pointer to \cv{}~\tcode{T}'', where \tcode{T} and the array element type
@@ -1788,7 +1703,7 @@ index c6ff9d4a..13e2526b 100644
\begin{example}
\begin{codeblock}
int arr[5] = {1, 2, 3, 4, 5};
-@@ -6822,12 +6823,12 @@ and the other is not, the program is ill-formed.
+@@ -7430,12 +7431,12 @@ and the other is not, the program is ill-formed.
If both operands have arithmetic types,
or one operand has integral type and
the other operand has unscoped enumeration type,
@@ -1803,7 +1718,7 @@ index c6ff9d4a..13e2526b 100644
other than from an integral type to a floating-point type,
the program is ill-formed.
-@@ -6869,13 +6870,13 @@ the other operand is of object pointer or array type,
+@@ -7477,13 +7478,13 @@ the other operand is of object pointer or array type,
array-to-pointer conversions\iref{conv.array},
pointer conversions\iref{conv.ptr},
and
@@ -1819,7 +1734,7 @@ index c6ff9d4a..13e2526b 100644
\end{note}
In this case,
\tcode{p <=> q} is of type \tcode{std::strong_ordering} and
-@@ -6964,7 +6965,7 @@ pointer conversions\iref{conv.ptr},
+@@ -7572,7 +7573,7 @@ pointer conversions\iref{conv.ptr},
function pointer conversions\iref{conv.fctptr}, and
qualification conversions\iref{conv.qual}
are performed to bring
@@ -1828,7 +1743,7 @@ index c6ff9d4a..13e2526b 100644
After conversions, the operands shall have the same type.
\pnum
-@@ -7049,10 +7050,10 @@ same type after the specified conversions have been applied.
+@@ -7657,10 +7658,10 @@ same type after the specified conversions have been applied.
\indextext{comparison!pointer}%
\indextext{comparison!pointer to function}%
If at least one of the converted operands is a pointer,
@@ -1843,7 +1758,7 @@ index c6ff9d4a..13e2526b 100644
Comparing pointers is defined as follows:
\begin{itemize}
-@@ -7069,7 +7070,8 @@ the result of the comparison is unspecified.
+@@ -7677,7 +7678,8 @@ the result of the comparison is unspecified.
\item
Otherwise, if the pointers are both null, both point to the same
\indextext{address}%
@@ -1853,7 +1768,7 @@ index c6ff9d4a..13e2526b 100644
they compare equal.
\item
Otherwise, the pointers compare unequal.
-@@ -7114,12 +7116,12 @@ bool b1 = (bx == cx); // unspecified
+@@ -7722,12 +7724,12 @@ bool b1 = (bx == cx); // unspecified
\end{example}
\item
@@ -1868,7 +1783,7 @@ index c6ff9d4a..13e2526b 100644
indirection with a hypothetical object of the associated
class type were performed, otherwise they compare unequal.
\begin{example}
-@@ -7345,7 +7347,7 @@ Otherwise, if the second and third operand have different types and
+@@ -7967,7 +7969,7 @@ Otherwise, if the second and third operand have different types and
either has (possibly cv-qualified) class type, or if both
are glvalues of the same value category and the same type except for
cv-qualification, an attempt is made to
@@ -1877,7 +1792,7 @@ index c6ff9d4a..13e2526b 100644
each of those operands to the type of the other.
\begin{note}
Properties such as access, whether an operand is a bit-field, or whether
-@@ -7387,9 +7389,9 @@ denotes the cv-qualifiers of \tcode{T1};
+@@ -8009,9 +8011,9 @@ denotes the cv-qualifiers of \tcode{T1};
\item otherwise, the target type is the type that \tcode{E2} would have
after applying the
@@ -1890,7 +1805,7 @@ index c6ff9d4a..13e2526b 100644
standard conversions.
\end{itemize}
\end{itemize}
-@@ -7430,8 +7432,8 @@ are used in place of the original operands for the remainder of this
+@@ -8052,8 +8054,8 @@ are used in place of the original operands for the remainder of this
subclause.
\pnum
@@ -1901,7 +1816,7 @@ index c6ff9d4a..13e2526b 100644
performed on the second and third operands. After those conversions, one
of the following shall hold:
-@@ -7440,16 +7442,16 @@ of the following shall hold:
+@@ -8062,16 +8064,16 @@ of the following shall hold:
that type and the result is copy-initialized using the selected operand.
\item The second and third operands have arithmetic or enumeration type;
@@ -1924,7 +1839,7 @@ index c6ff9d4a..13e2526b 100644
pointer type.
\item One or both of the second and third operands have pointer-to-member type;
-@@ -7633,7 +7635,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}.
+@@ -8255,7 +8257,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}.
\pnum
\indextext{assignment!conversion by}%
If the right operand is an expression, it is implicitly
@@ -1933,7 +1848,7 @@ index c6ff9d4a..13e2526b 100644
operand.
\pnum
-@@ -7647,7 +7649,7 @@ resulting value of the bit-field is
+@@ -8269,7 +8271,7 @@ resulting value of the bit-field is
An assignment whose left operand is of
a volatile-qualified type is deprecated\iref{depr.volatile.type}
unless the (possibly parenthesized) assignment is a discarded-value expression or
@@ -1942,7 +1857,7 @@ index c6ff9d4a..13e2526b 100644
\pnum
The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2}
-@@ -7719,7 +7721,7 @@ The comma operator groups left-to-right.
+@@ -8341,7 +8343,7 @@ The comma operator groups left-to-right.
A pair of expressions separated by a comma is evaluated left-to-right;
the left expression is
@@ -1951,28 +1866,7 @@ index c6ff9d4a..13e2526b 100644
The left expression is sequenced before
the right expression\iref{intro.execution}.
\indextext{operator!side effects and comma}%
-@@ -7753,7 +7755,7 @@ Certain contexts require expressions that satisfy additional
- requirements as detailed in this subclause; other contexts have different
- semantics depending on whether or not an expression satisfies these requirements.
- Expressions that satisfy these requirements,
--assuming that copy elision\iref{class.copy.elision} is not performed,
-+assuming that \link{copy elision}{class.copy.elision} is not performed,
- are called
- \indexdefn{expression!constant}%
- \defnx{constant expressions}{constant expression}.
-@@ -7936,9 +7938,9 @@ a temporary object of non-volatile const-qualified literal type
- whose lifetime is extended\iref{class.temporary}
- to that of a variable that is usable in constant expressions at $P$,
- \item
--a template parameter object\iref{temp.param},
-+a \link{template parameter}{temp.param} object,
- \item
--a string literal object\iref{lex.string},
-+a \link{string literal}{lex.string} object,
- \item
- a non-mutable subobject of any of the above, or
- \item
-@@ -8029,7 +8031,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}.
+@@ -8492,7 +8494,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}.
\end{footnote}
\item
@@ -1981,7 +1875,7 @@ index c6ff9d4a..13e2526b 100644
it is applied to
\begin{itemize}
\item
-@@ -8051,7 +8053,7 @@ that refers to a non-active member of a union or a subobject thereof;
+@@ -8514,7 +8516,7 @@ that refers to a non-active member of a union or a subobject thereof;
\item
an lvalue-to-rvalue conversion that is applied to
@@ -1990,7 +1884,7 @@ index c6ff9d4a..13e2526b 100644
\item
an invocation of an implicitly-defined copy/move constructor or
-@@ -8418,7 +8420,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte
+@@ -8992,7 +8994,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte
Such expressions can be
used as bit-field lengths\iref{class.bit}, as enumerator
initializers if the underlying type is not fixed\iref{dcl.enum},
@@ -1999,16 +1893,7 @@ index c6ff9d4a..13e2526b 100644
\end{note}
\pnum
-@@ -8739,7 +8741,7 @@ if it is:
- a manifestly constant-evaluated expression,
-
- \item
--a potentially-evaluated expression\iref{basic.def.odr},
-+a \deflinkx{potentially-evaluated}{potentially evaluated}{basic.def.odr} expression,
-
- \item
- an immediate subexpression of a \grammarterm{braced-init-list},
-@@ -8766,7 +8768,9 @@ A function or variable is
+@@ -9680,7 +9682,9 @@ A function or variable is
if it is:
\begin{itemize}
\item
@@ -2020,7 +1905,7 @@ index c6ff9d4a..13e2526b 100644
\item
diff --git a/source/future.tex b/source/future.tex
-index 50edea0b..49c04f21 100644
+index 72dbeabb..dc26444a 100644
--- a/source/future.tex
+++ b/source/future.tex
@@ -14,7 +14,7 @@ is defined as:
@@ -2047,7 +1932,7 @@ index 50edea0b..49c04f21 100644
as defaulted is deprecated if the class has
a user-declared copy constructor or
a user-declared destructor.
-@@ -528,7 +528,7 @@ template struct tuple_size;
+@@ -543,7 +543,7 @@ template struct tuple_size;
\pnum
Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}.
If the expression \tcode{TS::value} is well-formed
@@ -2057,10 +1942,10 @@ index 50edea0b..49c04f21 100644
the \oldconcept{TransformationTrait} requirements with a base characteristic of
\tcode{integral_constant}.
diff --git a/source/intro.tex b/source/intro.tex
-index e0ded4cf..736966eb 100644
+index 3e24d06d..b5e513df 100644
--- a/source/intro.tex
+++ b/source/intro.tex
-@@ -94,8 +94,8 @@ Reads of scalar objects are described in \ref{conv.lval} and
+@@ -97,8 +97,8 @@ Reads of scalar objects are described in \ref{conv.lval} and
modifications of scalar objects are described in
\ref{expr.assign}, \ref{expr.post.incr}, and \ref{expr.pre.incr}.
Attempts to read or modify an object of class type
@@ -2071,21 +1956,24 @@ index e0ded4cf..736966eb 100644
such invocations do not themselves constitute accesses,
although they may involve accesses of scalar subobjects.
\end{defnote}
-@@ -243,11 +243,11 @@ implementation's output messages
+@@ -246,11 +246,12 @@ implementation's output messages
glvalue refers
\begin{example}
-If a pointer\iref{dcl.ptr} \tcode{p} whose type is ``pointer to
+If a \link{pointer}{dcl.ptr} \tcode{p} whose type is ``pointer to
class \tcode{B}'' is pointing to a base class subobject
- of class \tcode{B}, whose most derived object is of class \tcode{D}, derived
- from \tcode{B}\iref{class.derived}, the dynamic type of the
+-of class \tcode{B}, whose most derived object is of class \tcode{D}, derived
+-from \tcode{B}\iref{class.derived}, the dynamic type of the
-expression \tcode{*p} is ``\tcode{D}''. References\iref{dcl.ref} are
++of class \tcode{B}, whose most derived object is of class \tcode{D},
++\link{derived}{class.derived}
++from \tcode{B}, the dynamic type of the
+expression \tcode{*p} is ``\tcode{D}''. \link{References}{dcl.ref} are
treated similarly.
\end{example}
-@@ -315,7 +315,7 @@ handler functions (see \ref{support}).
+@@ -318,7 +319,7 @@ handler functions (see \ref{support}).
\indexdefn{program!ill-formed}%
\definition{ill-formed program}{defns.ill.formed}
@@ -2094,7 +1982,7 @@ index e0ded4cf..736966eb 100644
\indexdefn{behavior!implementation-defined}%
\definition{implementation-defined behavior}{defns.impl.defined}
-@@ -811,7 +811,7 @@ resulting in a contract violation.
+@@ -819,7 +820,7 @@ resulting in a contract violation.
\indextext{conformance requirements!classes}%
\indextext{conformance requirements!class templates}%
For classes and class templates, the library Clauses specify partial
@@ -2103,7 +1991,7 @@ index e0ded4cf..736966eb 100644
specified, but each implementation shall supply them to complete the
definitions according to the description in the library Clauses.
-@@ -828,7 +828,7 @@ the appropriate standard library named header unit\iref{using.headers}.
+@@ -836,7 +837,7 @@ the appropriate standard library named header unit\iref{using.headers}.
\pnum
The templates, classes, functions, and objects in the library have
@@ -2113,10 +2001,10 @@ index e0ded4cf..736966eb 100644
translation units to form a complete \Cpp{} program\iref{lex.phases}.%
\indextext{conformance requirements!library|)}
diff --git a/source/iostreams.tex b/source/iostreams.tex
-index 3f925b2b..f89a4754 100644
+index 615ea941..ad9e3afe 100644
--- a/source/iostreams.tex
+++ b/source/iostreams.tex
-@@ -561,7 +561,7 @@ is initialized,
+@@ -558,7 +558,7 @@ is initialized,
returns
\tcode{\&cout}.
Its state is otherwise the same as required for
@@ -2125,7 +2013,7 @@ index 3f925b2b..f89a4754 100644
\end{itemdescr}
\indexlibraryglobal{cout}%
-@@ -594,7 +594,7 @@ is initialized,
+@@ -591,7 +591,7 @@ is initialized,
\tcode{cerr.flags() \& unitbuf}
is nonzero and \tcode{cerr.tie()} returns \tcode{\&cout}.
Its state is otherwise the same as required for
@@ -2134,7 +2022,7 @@ index 3f925b2b..f89a4754 100644
\end{itemdescr}
\indexlibraryglobal{clog}%
-@@ -631,7 +631,7 @@ is initialized,
+@@ -628,7 +628,7 @@ is initialized,
returns
\tcode{\&wcout}.
Its state is otherwise the same as required for
@@ -2143,7 +2031,7 @@ index 3f925b2b..f89a4754 100644
\end{itemdescr}
\indexlibraryglobal{wcout}%
-@@ -664,7 +664,7 @@ is initialized,
+@@ -661,7 +661,7 @@ is initialized,
\tcode{wcerr.flags() \& unitbuf}
is nonzero and \tcode{wcerr.tie()} returns \tcode{\&wcout}.
Its state is otherwise the same as required for
@@ -2152,7 +2040,7 @@ index 3f925b2b..f89a4754 100644
\end{itemdescr}
\indexlibraryglobal{wclog}%
-@@ -1384,7 +1384,7 @@ operate independently of the standard C streams.
+@@ -1381,7 +1381,7 @@ operate independently of the standard C streams.
\pnum
\returns
\tcode{true}
@@ -2161,7 +2049,7 @@ index 3f925b2b..f89a4754 100644
was synchronized and otherwise returns
\tcode{false}.
The first time it is called,
-@@ -1443,8 +1443,8 @@ static int xalloc();
+@@ -1440,8 +1440,8 @@ static int xalloc();
\pnum
\remarks
@@ -2172,7 +2060,7 @@ index 3f925b2b..f89a4754 100644
\end{itemdescr}
\indexlibrarymember{iword}{ios_base}%
-@@ -2031,12 +2031,12 @@ locale imbue(const locale& loc);
+@@ -2028,12 +2028,12 @@ locale imbue(const locale& loc);
\pnum
\effects
Calls
@@ -2187,7 +2075,7 @@ index 3f925b2b..f89a4754 100644
\pnum
\returns
-@@ -3289,7 +3289,7 @@ streamsize in_avail();
+@@ -3286,7 +3286,7 @@ streamsize in_avail();
If a read position is available, returns
\tcode{egptr() - gptr()}.
Otherwise returns
@@ -2196,16 +2084,16 @@ index 3f925b2b..f89a4754 100644
\end{itemdescr}
\indexlibrarymember{snextc}{basic_streambuf}%
-@@ -4314,7 +4314,7 @@ namespace std {
+@@ -4311,7 +4311,7 @@ namespace std {
template>
class basic_istream : virtual public basic_ios {
public:
- // types (inherited from \tcode{basic_ios}\iref{ios})
+ // types (inherited from \link{\tcode{basic_ios}}{ios})
using char_type = charT;
- using int_type = typename traits::int_type;
- using pos_type = typename traits::pos_type;
-@@ -4720,7 +4720,7 @@ basic_istream& operator>>(void*& val);
+ using int_type = traits::int_type;
+ using pos_type = traits::pos_type;
+@@ -4718,7 +4718,7 @@ basic_istream& operator>>(void*& val);
\pnum
As in the case of the inserters, these extractors depend on the
locale's
@@ -2214,7 +2102,7 @@ index 3f925b2b..f89a4754 100644
stream data.
These extractors behave as formatted input functions (as described in~\ref{istream.formatted.reqmts}). After a \tcode{sentry} object is constructed, the
conversion occurs as if performed by the following code fragment,
-@@ -5007,7 +5007,7 @@ basic_istream& operator>>(basic_streambuf* sb);
+@@ -5005,7 +5005,7 @@ basic_istream& operator>>(basic_streambuf* sb);
\begin{itemdescr}
\pnum
\effects
@@ -2223,7 +2111,7 @@ index 3f925b2b..f89a4754 100644
If \tcode{sb} is null, calls
\tcode{setstate(fail\-bit)},
which may throw
-@@ -5402,7 +5402,7 @@ characters and discards them.
+@@ -5400,7 +5400,7 @@ characters and discards them.
Characters are extracted until any of the following occurs:
\begin{itemize}
\item
@@ -2232,7 +2120,7 @@ index 3f925b2b..f89a4754 100644
and
\tcode{n} characters have been extracted so far;
\item
-@@ -5738,12 +5738,12 @@ template
+@@ -5751,12 +5751,12 @@ template
\begin{itemdescr}
\pnum
\effects
@@ -2247,7 +2135,7 @@ index 3f925b2b..f89a4754 100644
If
\tcode{ws}
stops extracting characters because there are no more available it sets
-@@ -5768,7 +5768,7 @@ template
+@@ -5781,7 +5781,7 @@ template
\pnum
\constraints
The expression \tcode{is >> std::forward(x)} is well-formed
@@ -2256,7 +2144,7 @@ index 3f925b2b..f89a4754 100644
\tcode{Istream} is publicly and unambiguously derived from \tcode{ios_base}.
\pnum
-@@ -5836,7 +5836,7 @@ explicit basic_iostream(basic_streambuf* sb);
+@@ -5849,7 +5849,7 @@ explicit basic_iostream(basic_streambuf* sb);
Initializes the base class subobjects with
\tcode{basic_istream(sb)}\iref{istream}
and
@@ -2265,16 +2153,16 @@ index 3f925b2b..f89a4754 100644
\pnum
\ensures
-@@ -5922,7 +5922,7 @@ namespace std {
+@@ -5935,7 +5935,7 @@ namespace std {
template>
class basic_ostream : virtual public basic_ios {
public:
- // types (inherited from \tcode{basic_ios}\iref{ios})
+ // types (inherited from \link{\tcode{basic_ios}}{ios})
using char_type = charT;
- using int_type = typename traits::int_type;
- using pos_type = typename traits::pos_type;
-@@ -6691,7 +6691,7 @@ return *this << s;
+ using int_type = traits::int_type;
+ using pos_type = traits::pos_type;
+@@ -6705,7 +6705,7 @@ return *this << s;
\end{codeblock}
where \tcode{s} is an
\impldef{NTCTS in \tcode{basic_ostream\& op\-er\-ator<<(nullptr_t)}}
@@ -2283,7 +2171,7 @@ index 3f925b2b..f89a4754 100644
\end{itemdescr}
\rSec4[ostream.inserters.character]{Character inserter function templates}
-@@ -6715,7 +6715,7 @@ template
+@@ -6729,7 +6729,7 @@ template
\begin{itemdescr}
\pnum
\effects
@@ -2292,7 +2180,7 @@ index 3f925b2b..f89a4754 100644
of \tcode{out}. Constructs a character sequence \tcode{seq}.
If \tcode{c} has type
\tcode{char}
-@@ -7468,7 +7468,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}.
+@@ -7482,7 +7482,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}.
\pnum
\effects
The expression \tcode{in >> get_money(mon, intl)} described below
@@ -2301,7 +2189,7 @@ index 3f925b2b..f89a4754 100644
\pnum
\returns
-@@ -7513,7 +7513,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}.
+@@ -7527,7 +7527,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}.
An object of unspecified type such that if
\tcode{out} is an object of type \tcode{basic_ostream}
then the expression \tcode{out << put_money(mon, intl)} behaves as a
@@ -2310,7 +2198,7 @@ index 3f925b2b..f89a4754 100644
\tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as:
\begin{codeblock}
-@@ -7637,7 +7637,7 @@ of \tcode{basic_ostream} with member type \tcode{char_type} the same as
+@@ -7651,7 +7651,7 @@ of \tcode{basic_ostream} with member type \tcode{char_type} the same as
\tcode{charT} and with member type \tcode{traits_type}, which in the second and third
forms is the same as \tcode{traits}, then the expression
\tcode{out << quoted(s, delim, escape)}
@@ -2319,7 +2207,7 @@ index 3f925b2b..f89a4754 100644
of \tcode{out}. This forms a character sequence \tcode{seq}, initially
consisting of the following elements:
\begin{itemize}
-@@ -14118,7 +14118,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}.
+@@ -14130,7 +14130,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}.
\pnum
\begin{note}
@@ -2328,7 +2216,7 @@ index 3f925b2b..f89a4754 100644
for how the value types above and their encodings convert to
\tcode{path::value_type} and its encoding.
\end{note}
-@@ -14718,7 +14718,7 @@ by \ref{fs.path.cvt}.
+@@ -14742,7 +14742,7 @@ and print functions\iref{print.fun}.
\pnum
Generic format observer functions return strings formatted according to the
@@ -2337,7 +2225,7 @@ index 3f925b2b..f89a4754 100644
A single slash (\tcode{'/'}) character is used as
the \grammarterm{directory-separator}.
-@@ -15261,11 +15261,11 @@ If normalization\iref{fs.path.generic} is needed
+@@ -15298,11 +15298,11 @@ If normalization\iref{fs.path.generic} is needed
\indexlibrarymember{path}{iterator}%
\pnum
Path iterators iterate over the elements of the pathname
@@ -2351,7 +2239,7 @@ index 3f925b2b..f89a4754 100644
except that,
for dereferenceable iterators \tcode{a} and \tcode{b}
of type \tcode{path::iterator}
-@@ -16622,7 +16622,7 @@ If a file is removed from or added to a directory after the
+@@ -16659,7 +16659,7 @@ If a file is removed from or added to a directory after the
construction of a \tcode{directory_iterator} for the directory, it is
unspecified whether or not subsequently incrementing the iterator will ever
result in an iterator referencing the removed or added directory entry. See
@@ -2360,7 +2248,7 @@ index 3f925b2b..f89a4754 100644
\end{note}
\rSec3[fs.dir.itr.members]{Members}
-@@ -16714,7 +16714,7 @@ directory_iterator& increment(error_code& ec);
+@@ -16751,7 +16751,7 @@ directory_iterator& increment(error_code& ec);
\pnum
\effects
As specified for the prefix increment operation of
@@ -2369,7 +2257,7 @@ index 3f925b2b..f89a4754 100644
\pnum
\returns
-@@ -17026,7 +17026,7 @@ recursive_directory_iterator& increment(error_code& ec);
+@@ -17063,7 +17063,7 @@ recursive_directory_iterator& increment(error_code& ec);
\pnum
\effects
As specified for the prefix increment operation of
@@ -2378,7 +2266,7 @@ index 3f925b2b..f89a4754 100644
except that:
\begin{itemize}
-@@ -17617,7 +17617,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin
+@@ -17654,7 +17654,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin
\begin{itemdescr}
\pnum
\effects
@@ -2387,7 +2275,7 @@ index 3f925b2b..f89a4754 100644
\pnum
\ensures
-@@ -17693,7 +17693,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink,
+@@ -17730,7 +17730,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink,
\begin{itemdescr}
\pnum
\effects
@@ -2396,7 +2284,7 @@ index 3f925b2b..f89a4754 100644
\pnum
\ensures
-@@ -17726,7 +17726,7 @@ path filesystem::current_path(error_code& ec);
+@@ -17763,7 +17763,7 @@ path filesystem::current_path(error_code& ec);
\returns
The absolute path of the current working directory,
whose pathname in the native format is
@@ -2405,7 +2293,7 @@ index 3f925b2b..f89a4754 100644
The signature with argument \tcode{ec} returns \tcode{path()} if an
error occurs.
-@@ -17757,7 +17757,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept;
+@@ -17794,7 +17794,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept;
\begin{itemdescr}
\pnum
\effects
@@ -2414,7 +2302,7 @@ index 3f925b2b..f89a4754 100644
\pnum
\ensures
-@@ -17868,7 +17868,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}.
+@@ -17905,7 +17905,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}.
\item
If \tcode{is_regular_file(p)}, the size in bytes of the file
\tcode{p} resolves to, determined as if by the value of the POSIX \tcode{stat}
@@ -2423,7 +2311,7 @@ index 3f925b2b..f89a4754 100644
\item
Otherwise, the result is \impldef{result of \tcode{filesystem::file_size}}.
\end{itemize}
-@@ -18250,7 +18250,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time,
+@@ -18287,7 +18287,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time,
\pnum
\effects
Sets the time of last data modification of the file
@@ -2433,19 +2321,10 @@ index 3f925b2b..f89a4754 100644
\pnum
\throws
diff --git a/source/iterators.tex b/source/iterators.tex
-index e073c001..6078fec7 100644
+index ed599d97..46edb440 100644
--- a/source/iterators.tex
+++ b/source/iterators.tex
-@@ -729,7 +729,7 @@ is undefined.
-
- \pnum
- \indextext{iterator!constexpr}%
--Iterators meet the \defn{constexpr iterator} requirements
-+Iterators meet the \defnadjx{constexpr}{iterators}{iterator} requirements
- if all operations provided to meet iterator category requirements
- are constexpr functions.
- \begin{note}
-@@ -6849,7 +6849,7 @@ ostream_iterator& operator++(int);
+@@ -6872,7 +6872,7 @@ ostream_iterator& operator++(int);
The
class template
\tcode{istreambuf_iterator}
@@ -2454,7 +2333,7 @@ index e073c001..6078fec7 100644
reads successive
\textit{characters}
from the streambuf for which it was constructed.
-@@ -6974,7 +6974,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept;
+@@ -6997,7 +6997,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept;
Initializes \tcode{sbuf_} with \keyword{nullptr}.
\end{itemdescr}
@@ -2462,7 +2341,7 @@ index e073c001..6078fec7 100644
\indexlibraryctor{istreambuf_iterator}%
\begin{itemdecl}
istreambuf_iterator(istream_type& s) noexcept;
-@@ -6986,7 +6985,6 @@ istreambuf_iterator(istream_type& s) noexcept;
+@@ -7009,7 +7008,6 @@ istreambuf_iterator(istream_type& s) noexcept;
Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}.
\end{itemdescr}
@@ -2470,7 +2349,7 @@ index e073c001..6078fec7 100644
\indexlibraryctor{istreambuf_iterator}%
\begin{itemdecl}
istreambuf_iterator(streambuf_type* s) noexcept;
-@@ -6998,7 +6996,6 @@ istreambuf_iterator(streambuf_type* s) noexcept;
+@@ -7021,7 +7019,6 @@ istreambuf_iterator(streambuf_type* s) noexcept;
Initializes \tcode{sbuf_} with \tcode{s}.
\end{itemdescr}
@@ -2478,7 +2357,7 @@ index e073c001..6078fec7 100644
\indexlibraryctor{istreambuf_iterator}%
\begin{itemdecl}
istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept;
-@@ -7149,7 +7146,6 @@ is not a null pointer.
+@@ -7172,7 +7169,6 @@ is not a null pointer.
Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}.
\end{itemdescr}
@@ -2487,7 +2366,7 @@ index e073c001..6078fec7 100644
\begin{itemdecl}
ostreambuf_iterator(streambuf_type* s) noexcept;
diff --git a/source/lex.tex b/source/lex.tex
-index 6cf011e4..aa909af0 100644
+index bfd55be5..5baaf9a1 100644
--- a/source/lex.tex
+++ b/source/lex.tex
@@ -29,8 +29,8 @@
@@ -2501,18 +2380,7 @@ index 6cf011e4..aa909af0 100644
directive \tcode{\#include}, less any source lines skipped by any of the
conditional inclusion\iref{cpp.cond} preprocessing directives,
as modified by the implementation-defined behavior of any
-@@ -50,8 +50,8 @@ example)
- calls to functions whose identifiers have external or module linkage,
- manipulation of objects whose identifiers have external or module linkage, or
- manipulation of data files. Translation units can be separately
--translated and then later linked to produce an executable
--program\iref{basic.link}.
-+translated and then later \link{linked}{basic.link} to produce an executable
-+program.
- \end{note}
- \indextext{compilation!separate|)}
-
-@@ -2243,7 +2243,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@)
+@@ -2315,7 +2315,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@)
\pnum
If \placeholder{L} is a \grammarterm{user-defined-character-literal}, let \placeholder{ch} be the
literal without its \grammarterm{ud-suffix}.
@@ -2522,7 +2390,7 @@ index 6cf011e4..aa909af0 100644
literal \placeholder{L} is treated as a call
of the form
diff --git a/source/lib-intro.tex b/source/lib-intro.tex
-index ea7a21b7..10076632 100644
+index 24029adb..6c8b5dab 100644
--- a/source/lib-intro.tex
+++ b/source/lib-intro.tex
@@ -101,7 +101,7 @@ including formatting, internationalization support and
@@ -2534,7 +2402,7 @@ index ea7a21b7..10076632 100644
numeric algorithms and complex number components that extend support for numeric processing.
The
\tcode{valarray}
-@@ -518,8 +518,8 @@ of other standards\iref{intro.refs}.
+@@ -521,8 +521,8 @@ of other standards\iref{intro.refs}.
Subclause \ref{conventions} describes several editorial conventions used to describe the contents
of the \Cpp{} standard library.
These conventions are for describing
@@ -2545,7 +2413,7 @@ index ea7a21b7..10076632 100644
\rSec3[expos.only.entity]{Exposition-only entities, etc.}
-@@ -641,7 +641,7 @@ and \ref{depr} are
+@@ -651,7 +651,7 @@ and \ref{depr} are
Each bitmask type can be implemented as an
enumerated type that overloads certain operators, as an integer type,
or as a
@@ -2554,7 +2422,7 @@ index ea7a21b7..10076632 100644
\indextext{type!enumerated}%
\pnum
-@@ -767,7 +767,7 @@ locale.
+@@ -777,7 +777,7 @@ locale.
\item
A
\defn{character sequence}
@@ -2563,7 +2431,7 @@ index ea7a21b7..10076632 100644
can be declared as
\tcode{\placeholdernc{T\;A}[\placeholder{N}]},
where \tcode{\placeholder{T}} is any of the types
-@@ -948,7 +948,7 @@ signatures, or for virtual destructors that can be generated by default.
+@@ -968,7 +968,7 @@ signatures, or for virtual destructors that can be generated by default.
\pnum
\ref{\firstlibchapter} through \ref{\lastlibchapter} and
\ref{depr} do not specify the representation of classes, and intentionally
@@ -2572,7 +2440,7 @@ index ea7a21b7..10076632 100644
define static or non-static class members, or both, as needed to implement the
semantics of the member functions specified in \ref{\firstlibchapter}
through \ref{\lastlibchapter} and \ref{depr}.
-@@ -1360,10 +1360,10 @@ std::vector vi; // OK
+@@ -1380,10 +1380,10 @@ std::vector vi; // OK
Except as noted in \ref{library} through \ref{\lastlibchapter}
and \ref{depr}, the contents of each header \tcode{c\placeholder{name}} is
the same as that of the corresponding header \tcode{\placeholder{name}.h} as
@@ -2585,7 +2453,7 @@ index ea7a21b7..10076632 100644
It is unspecified whether these names (including any overloads added in
\ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr})
are first declared within the global namespace scope
-@@ -1680,8 +1680,8 @@ a hosted implementation.
+@@ -1701,8 +1701,8 @@ a hosted implementation.
\pnum
Subclause \ref{using} describes how a \Cpp{} program gains access to the facilities of the
\Cpp{} standard library. \ref{using.headers} describes effects during translation
@@ -2596,7 +2464,7 @@ index ea7a21b7..10076632 100644
\rSec3[using.headers]{Headers}
-@@ -1724,7 +1724,7 @@ declared in that header. No diagnostic is required.
+@@ -1745,7 +1745,7 @@ declared in that header. No diagnostic is required.
\rSec3[using.linkage]{Linkage}
\pnum
@@ -2605,7 +2473,7 @@ index ea7a21b7..10076632 100644
Unless otherwise specified, objects and functions have the default
\tcode{extern "C++"}
linkage\iref{dcl.link}.
-@@ -1758,8 +1758,8 @@ the program prior to program startup.
+@@ -1779,8 +1779,8 @@ the program prior to program startup.
\indextext{startup!program}%
\pnum
See also
@@ -2616,16 +2484,7 @@ index ea7a21b7..10076632 100644
\rSec2[utility.requirements]{Requirements on types and expressions}
-@@ -1807,7 +1807,7 @@ rvalue of type \tcode{const T}.
- In general, a default constructor is not required. Certain container class
- member function signatures specify \tcode{T()} as a default argument.
- \tcode{T()} shall be a well-defined expression\iref{dcl.init} if one of those
--signatures is called using the default argument\iref{dcl.fct.default}.
-+signatures is called using the \link{default argument}{dcl.fct.default}.
-
- \begin{oldconcepttable}{EqualityComparable}{}{cpp17.equalitycomparable}
- {x{1in}x{1in}p{3in}}
-@@ -1933,13 +1933,13 @@ evaluated in the context described below, and
+@@ -1947,13 +1947,13 @@ evaluated in the context described below, and
\pnum
The context in which \tcode{swap(t, u)} and \tcode{swap(u, t)} are evaluated shall
@@ -2642,7 +2501,7 @@ index ea7a21b7..10076632 100644
\end{itemize}
\begin{note}
If \tcode{T} and \tcode{U} are both fundamental types or arrays of
-@@ -2042,8 +2042,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in
+@@ -2056,8 +2056,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in
\end{note}
\pnum
@@ -2654,7 +2513,7 @@ index ea7a21b7..10076632 100644
had been evaluated in place of \tcode{p}.
\pnum
-@@ -2146,7 +2147,7 @@ as the memory allocation and deallocation primitives for it. All of the
+@@ -2160,7 +2161,7 @@ as the memory allocation and deallocation primitives for it. All of the
string types\iref{strings},
containers\iref{containers} (except \tcode{array} and \tcode{inplace_vector}),
string buffers and string streams\iref{input.output}, and
@@ -2663,7 +2522,7 @@ index ea7a21b7..10076632 100644
allocators.
\pnum
-@@ -2970,7 +2971,7 @@ If \tcode{X} is an allocator class for type \tcode{T},
+@@ -2986,7 +2987,7 @@ If \tcode{X} is an allocator class for type \tcode{T},
whether or not \tcode{T} is a complete type:
\begin{itemize}
\item \tcode{X} is a complete type, and
@@ -2672,7 +2531,7 @@ index ea7a21b7..10076632 100644
other than \tcode{value_type} are complete types.
\end{itemize}
-@@ -2981,11 +2982,11 @@ whether or not \tcode{T} is a complete type:
+@@ -2997,11 +2998,11 @@ whether or not \tcode{T} is a complete type:
\pnum
Subclause \ref{constraints} describes restrictions on \Cpp{} programs that use the facilities of
the \Cpp{} standard library. The following subclauses specify constraints on the
@@ -2688,7 +2547,7 @@ index ea7a21b7..10076632 100644
\rSec3[namespace.constraints]{Namespace use}
-@@ -3378,7 +3379,7 @@ are reserved for use by \Cpp{} implementations.
+@@ -3412,7 +3413,7 @@ are reserved for use by \Cpp{} implementations.
If a file with a name
equivalent to the derived file name for one of the \Cpp{} standard library headers
is not provided as part of the implementation, and a file with that name
@@ -2697,7 +2556,7 @@ index ea7a21b7..10076632 100644
the behavior is undefined.%
\indextext{source file}%
\indextext{undefined}
-@@ -3549,7 +3550,7 @@ specified as being shareable without data races or the user supplies a locking m
+@@ -3583,7 +3584,7 @@ specified as being shareable without data races or the user supplies a locking m
\pnum
If an object of a standard library type is accessed, and
@@ -2706,7 +2565,7 @@ index ea7a21b7..10076632 100644
does not happen before the access, or
the access does not happen before the end of the object's lifetime,
the behavior is undefined unless otherwise specified.
-@@ -3615,7 +3616,7 @@ Every such entity shall be defined such that any header that defines it may be
+@@ -3649,7 +3650,7 @@ Every such entity shall be defined such that any header that defines it may be
included after any other header that also defines it\iref{basic.def.odr}.
\pnum
@@ -2715,7 +2574,7 @@ index ea7a21b7..10076632 100644
shall include only their corresponding \Cpp{} standard library header,
as described in~\ref{headers}.
-@@ -3643,7 +3644,7 @@ explicitly stated otherwise.
+@@ -3677,7 +3678,7 @@ explicitly stated otherwise.
It is unspecified whether any
non-member
functions in the \Cpp{} standard library are defined as
@@ -2724,7 +2583,7 @@ index ea7a21b7..10076632 100644
\pnum
A call to a non-member function signature
-@@ -3671,7 +3672,7 @@ The phrase ``unless otherwise specified'' applies to cases such as
+@@ -3705,7 +3706,7 @@ The phrase ``unless otherwise specified'' applies to cases such as
the swappable with requirements\iref{swappable.requirements}.
The exception for overloaded operators allows argument-dependent lookup
in cases like that of
@@ -2733,7 +2592,7 @@ index ea7a21b7..10076632 100644
\effects
\begin{codeblock}
-@@ -3686,7 +3687,7 @@ return *this;
+@@ -3720,7 +3721,7 @@ return *this;
\pnum
It is unspecified whether any member functions in the \Cpp{} standard library are defined as
@@ -2742,7 +2601,7 @@ index ea7a21b7..10076632 100644
\pnum
For a non-virtual member function described in the \Cpp{} standard library,
-@@ -3765,8 +3766,8 @@ library may be recursively reentered.
+@@ -3809,8 +3810,8 @@ the behavior is undefined unless otherwise specified.
\rSec3[res.on.data.races]{Data race avoidance}
\pnum
@@ -2753,7 +2612,7 @@ index ea7a21b7..10076632 100644
Every standard library function shall meet each requirement unless otherwise specified.
Implementations may prevent data races in cases other than those specified below.
-@@ -3809,7 +3810,7 @@ not visible to users and are protected against data races.
+@@ -3853,7 +3854,7 @@ not visible to users and are protected against data races.
\pnum
Unless otherwise specified, \Cpp{} standard library functions shall perform all operations
solely within the current thread if those operations have effects that are
@@ -2762,7 +2621,7 @@ index ea7a21b7..10076632 100644
\pnum
\begin{note}
-@@ -3938,7 +3939,7 @@ potentially-throwing exception specification} exceptions.
+@@ -3968,7 +3969,7 @@ potentially-throwing exception specification} exceptions.
\begin{footnote}
In particular, they
can report a failure to allocate storage by throwing an exception of type
@@ -2771,17 +2630,8 @@ index ea7a21b7..10076632 100644
or a class derived from
\tcode{bad_alloc}\iref{bad.alloc}.
\end{footnote}
-@@ -3966,7 +3967,7 @@ assertions\iref{basic.contract,structure.specifications}.
-
- \pnum
- Certain functions in the \Cpp{} standard library report errors via a
--\tcode{error_code}\iref{syserr.errcode.overview} object. That object's
-+\link{\tcode{error_code}}{syserr.errcode.overview} object. That object's
- \tcode{category()} member shall return \tcode{system_category()} for
- errors originating from the operating system, or a reference to an
- \impldef{\tcode{error_category} for errors originating outside the
diff --git a/source/limits.tex b/source/limits.tex
-index bdc1f3de..efd4eb00 100644
+index e0596a32..877f21f3 100644
--- a/source/limits.tex
+++ b/source/limits.tex
@@ -120,7 +120,7 @@ during template argument deduction\iref{temp.deduct} [1\,024].
@@ -2794,10 +2644,10 @@ index bdc1f3de..efd4eb00 100644
Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256].
diff --git a/source/numerics.tex b/source/numerics.tex
-index 529ed109..9402c55b 100644
+index 544aa428..f3299984 100644
--- a/source/numerics.tex
+++ b/source/numerics.tex
-@@ -156,8 +156,8 @@ floating-point evaluation in constant expressions.
+@@ -157,8 +157,8 @@ floating-point evaluation in constant expressions.
\rSec2[cfenv.thread]{Threads}
\pnum
@@ -2808,32 +2658,28 @@ index 529ed109..9402c55b 100644
environment is the state of the floating-point environment of the thread that constructs
the corresponding \tcode{thread} object\iref{thread.thread.class}
or \tcode{jthread} object\iref{thread.jthread.class}
-@@ -1565,21 +1565,21 @@ the effect of instantiating a template:
- is undefined unless the corresponding template argument
- is cv-unqualified and
- meets the requirements
+@@ -1571,17 +1571,17 @@ on an instantiated template $T$:
+ A template argument corresponding to a template parameter
+ named \tcode{Sseq}
+ shall meet the requirements
- of seed sequence\iref{rand.req.seedseq}.
+ of \link{seed sequence}{rand.req.seedseq}.
\item
- that has a template type parameter
+ A template argument corresponding to a template parameter
named \tcode{URBG}
- is undefined unless the corresponding template argument
- is cv-unqualified and
- meets the requirements
+ shall meet the requirements
- of uniform random bit generator\iref{rand.req.urng}.
+ of \link{uniform random bit generator}{rand.req.urng}.
\item
- that has a template type parameter
+ A template argument corresponding to a template parameter
named \tcode{Engine}
- is undefined unless the corresponding template argument
- is cv-unqualified and
- meets the requirements
+ shall meet the requirements
- of random number engine\iref{rand.req.eng}.
+ of \link{random number engine}{rand.req.eng}.
\item
- that has a template type parameter
+ If a template argument corresponding to a template parameter
named \tcode{RealType}
-@@ -1703,7 +1703,7 @@ In \tref{rand.req.seedseq} and throughout this subclause:
+@@ -1702,7 +1702,7 @@ In \tref{rand.req.seedseq} and throughout this subclause:
\endhead
\tcode{S::result_type}
& \tcode{T}
@@ -2842,7 +2688,7 @@ index 529ed109..9402c55b 100644
of at least 32 bits.
&
\\ \rowsep
-@@ -1868,7 +1868,7 @@ An engine's state may be established via
+@@ -1867,7 +1867,7 @@ An engine's state may be established via
\pnum
A class \tcode{E}
that meets the requirements
@@ -2851,7 +2697,7 @@ index 529ed109..9402c55b 100644
also meets the requirements
of a \term{random number engine}
if the expressions shown
-@@ -1889,7 +1889,7 @@ In \tref{rand.req.eng} and throughout this subclause:
+@@ -1888,7 +1888,7 @@ In \tref{rand.req.eng} and throughout this subclause:
\tcode{s} is a value of \tcode{T};
\item
\tcode{q} is an lvalue
@@ -2860,7 +2706,7 @@ index 529ed109..9402c55b 100644
\item
\tcode{z} is a value
of type \tcode{unsigned long long};
-@@ -2323,7 +2323,7 @@ In \tref{rand.req.dist} and throughout this subclause,
+@@ -2322,7 +2322,7 @@ In \tref{rand.req.dist} and throughout this subclause,
\item
\tcode{g}, \tcode{g1}, and \tcode{g2} are lvalues of a type
meeting the requirements
@@ -2869,7 +2715,7 @@ index 529ed109..9402c55b 100644
\item
\tcode{os} is an lvalue of the type of some class template specialization
\tcode{basic_ostream};
-@@ -2355,7 +2355,7 @@ according to \ref{strings} and \ref{input.output}.
+@@ -2354,7 +2354,7 @@ according to \ref{strings} and \ref{input.output}.
\endhead
\tcode{D::result_type}
& \tcode{T}
@@ -2878,7 +2724,7 @@ index 529ed109..9402c55b 100644
&
\\ \rowsep
\tcode{D::param_type}
-@@ -2597,7 +2597,7 @@ reference to the type of \tcode{is}.
+@@ -2596,7 +2596,7 @@ reference to the type of \tcode{is}.
Each type instantiated
from a class template specified in \ref{rand.eng}
meets the requirements
@@ -2887,7 +2733,7 @@ index 529ed109..9402c55b 100644
\pnum
Except where specified otherwise,
-@@ -3395,7 +3395,7 @@ The counter is the value $Z$ introduced at the beginning of this subclause.
+@@ -3394,7 +3394,7 @@ The counter is the value $Z$ introduced at the beginning of this subclause.
Each type instantiated
from a class template specified in \ref{rand.adapt}
meets the requirements
@@ -2896,7 +2742,7 @@ index 529ed109..9402c55b 100644
\pnum
Except where specified otherwise,
-@@ -4489,7 +4489,7 @@ than the output when computing $S$.
+@@ -4488,7 +4488,7 @@ than the output when computing $S$.
Each type instantiated
from a class template specified in \ref{rand.dist}
meets the requirements
@@ -2905,7 +2751,7 @@ index 529ed109..9402c55b 100644
\pnum
Descriptions are provided in \ref{rand.dist}
-@@ -5343,6 +5343,7 @@ p(x\,|\,\alpha,\beta) =
+@@ -5342,6 +5342,7 @@ p(x\,|\,\alpha,\beta) =
\indexlibraryglobal{gamma_distribution}%
\indexlibrarymember{result_type}{gamma_distribution}%
@@ -2913,7 +2759,7 @@ index 529ed109..9402c55b 100644
\begin{codeblock}
namespace std {
template
-@@ -5386,7 +5387,6 @@ namespace std {
+@@ -5385,7 +5386,6 @@ namespace std {
}
\end{codeblock}
@@ -2921,7 +2767,7 @@ index 529ed109..9402c55b 100644
\indexlibraryctor{gamma_distribution}%
\begin{itemdecl}
explicit gamma_distribution(RealType alpha, RealType beta = 1.0);
-@@ -5493,7 +5493,7 @@ namespace std {
+@@ -5492,7 +5492,7 @@ namespace std {
\indexlibraryctor{weibull_distribution}%
\begin{itemdecl}
explicit weibull_distribution(RealType a, RealType b = 1.0);
@@ -2930,7 +2776,7 @@ index 529ed109..9402c55b 100644
\begin{itemdescr}
\pnum
-@@ -5603,7 +5603,6 @@ namespace std {
+@@ -5602,7 +5602,6 @@ namespace std {
}
\end{codeblock}
@@ -2938,7 +2784,7 @@ index 529ed109..9402c55b 100644
\indexlibraryctor{extreme_value_distribution}%
\begin{itemdecl}
explicit extreme_value_distribution(RealType a, RealType b = 1.0);
-@@ -5727,7 +5726,6 @@ namespace std {
+@@ -5726,7 +5725,6 @@ namespace std {
}
\end{codeblock}
@@ -2946,7 +2792,7 @@ index 529ed109..9402c55b 100644
\indexlibraryctor{normal_distribution}%
\begin{itemdecl}
explicit normal_distribution(RealType mean, RealType stddev = 1.0);
-@@ -5931,7 +5929,6 @@ namespace std {
+@@ -5930,7 +5928,6 @@ namespace std {
}
\end{codeblock}
@@ -2954,7 +2800,7 @@ index 529ed109..9402c55b 100644
\indexlibraryctor{chi_squared_distribution}%
\begin{itemdecl}
explicit chi_squared_distribution(RealType n);
-@@ -6125,7 +6122,6 @@ namespace std {
+@@ -6124,7 +6121,6 @@ namespace std {
}
\end{codeblock}
@@ -2962,7 +2808,7 @@ index 529ed109..9402c55b 100644
\indexlibraryctor{fisher_f_distribution}%
\begin{itemdecl}
explicit fisher_f_distribution(RealType m, RealType n = 1);
-@@ -6228,7 +6224,6 @@ namespace std {
+@@ -6227,7 +6223,6 @@ namespace std {
}
\end{codeblock}
@@ -2970,7 +2816,7 @@ index 529ed109..9402c55b 100644
\indexlibraryctor{student_t_distribution}%
\begin{itemdecl}
explicit student_t_distribution(RealType n);
-@@ -6344,7 +6339,7 @@ namespace std {
+@@ -6343,7 +6338,7 @@ namespace std {
}
\end{codeblock}
@@ -2979,19 +2825,7 @@ index 529ed109..9402c55b 100644
\begin{itemdecl}
discrete_distribution();
\end{itemdecl}
-@@ -7174,8 +7169,9 @@ additional functions and operators as follows:
- \begin{itemize}
- \item
- for every function taking a
--\tcode{const valarray\&} other than \tcode{begin} and
--\tcode{end}\iref{valarray.range},
-+\tcode{const valarray\&} other than
-+\libmemberrefx{begin}{begin}{valarray} and
-+\libmemberrefx{end}{end}{valarray},
- identical functions taking the replacement types shall be added;
- \item
- for every function taking two
-@@ -7200,7 +7196,7 @@ objects.
+@@ -7194,7 +7189,7 @@ objects.
\pnum
These library functions are permitted to throw a
@@ -3000,7 +2834,7 @@ index 529ed109..9402c55b 100644
to carry out the operation.
Note that the exception is not mandated.
-@@ -7360,7 +7356,7 @@ explicit valarray(size_t n);
+@@ -7362,7 +7357,7 @@ explicit valarray(size_t n);
\pnum
\effects
Constructs a \tcode{valarray} that has length \tcode{n}.
@@ -3009,7 +2843,7 @@ index 529ed109..9402c55b 100644
\end{itemdescr}
\indexlibraryctor{valarray}%
-@@ -7620,7 +7616,7 @@ and other techniques to generate efficient
+@@ -7622,7 +7617,7 @@ and other techniques to generate efficient
\pnum
The reference returned by the subscript operator for an array shall
be valid until the member function
@@ -3018,7 +2852,7 @@ index 529ed109..9402c55b 100644
that array ends, whichever happens first.
\end{itemdescr}
-@@ -8046,7 +8042,7 @@ places, with zero fill.
+@@ -8048,7 +8043,7 @@ places, with zero fill.
\pnum
\begin{example}
If the argument has the value $-2$,
@@ -3027,7 +2861,7 @@ index 529ed109..9402c55b 100644
of the first element of \tcode{*this}; etc.
\end{example}
\end{itemdescr}
-@@ -9171,7 +9167,7 @@ parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}.
+@@ -9173,7 +9168,7 @@ parameter \tcode{T} and its \tcode{reference} type is \tcode{const T\&}.
\pnum
The iterators returned by \tcode{begin} and \tcode{end} for an array
are guaranteed to be valid until the member function
@@ -3036,9 +2870,9 @@ index 529ed109..9402c55b 100644
array or until the lifetime of that array ends, whichever happens
first.
-@@ -9788,12 +9784,12 @@ namespace std {
- The contents and meaning of the header \libheader{cmath}
- are the same as the C standard library header \libheader{math.h},
+@@ -9814,12 +9809,12 @@ The contents and meaning of the header \libheader{cmath}
+ are a subset of the C standard library header \libheader{math.h} and
+ only the declarations shown in the synopsis above are present,
with the addition of
-a three-dimensional hypotenuse function\iref{c.math.hypot3},
-a linear interpolation function\iref{c.math.lerp}, and
@@ -3052,7 +2886,7 @@ index 529ed109..9402c55b 100644
\end{note}
\pnum
-@@ -9857,7 +9853,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively.
+@@ -9883,7 +9878,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively.
If \tcode{abs} is called with an argument of type \tcode{X}
for which \tcode{is_unsigned_v} is \tcode{true} and
if \tcode{X} cannot be converted to \tcode{int}
@@ -3062,10 +2896,10 @@ index 529ed109..9402c55b 100644
Allowing arguments that can be promoted to \tcode{int}
provides compatibility with C.
diff --git a/source/overloading.tex b/source/overloading.tex
-index 5343a015..db9317ec 100644
+index 52883f84..d3250f2d 100644
--- a/source/overloading.tex
+++ b/source/overloading.tex
-@@ -69,7 +69,7 @@ Overload resolution selects the function to call in seven distinct
+@@ -74,7 +74,7 @@ Overload resolution selects the function to call in seven distinct
contexts within the language:
\begin{itemize}
\item
@@ -3074,7 +2908,7 @@ index 5343a015..db9317ec 100644
\item
invocation of a function call operator, a pointer-to-function
conversion function, a reference-to-pointer-to-function conversion
-@@ -83,14 +83,14 @@ invocation of a constructor for default- or direct-initialization\iref{dcl.init}
+@@ -88,14 +88,14 @@ invocation of a constructor for default- or direct-initialization\iref{dcl.init}
of a class object\iref{over.match.ctor};
\item
invocation of a user-defined conversion for
@@ -3091,7 +2925,7 @@ index 5343a015..db9317ec 100644
\end{itemize}
Each of these contexts defines the set of candidate functions and
-@@ -108,7 +108,7 @@ conditions) is selected to form a set of
+@@ -113,7 +113,7 @@ conditions) is selected to form a set of
viable functions\iref{over.match.viable}.
\item
Then the best viable function is selected based on the
@@ -3100,7 +2934,7 @@ index 5343a015..db9317ec 100644
match each argument to the corresponding parameter of each
viable function.
\end{itemize}
-@@ -119,7 +119,7 @@ resolution succeeds and produces it as the result.
+@@ -124,7 +124,7 @@ resolution succeeds and produces it as the result.
Otherwise
overload resolution fails and the invocation is ill-formed.
When overload resolution succeeds,
@@ -3109,7 +2943,7 @@ index 5343a015..db9317ec 100644
in which it is used,
the program is ill-formed.
-@@ -233,7 +233,7 @@ as long as in all other respects the argument can be
+@@ -238,7 +238,7 @@ as long as in all other respects the argument can be
converted to the type of the implicit object parameter.
\begin{note}
The fact that such an argument is an rvalue does not
@@ -3118,7 +2952,7 @@ index 5343a015..db9317ec 100644
\end{note}
\pnum
-@@ -356,7 +356,7 @@ B b3 = C(); // calls \#4
+@@ -361,7 +361,7 @@ B b3 = C(); // calls \#4
\indextext{overloading!resolution!function call syntax|(}
\pnum
@@ -3127,7 +2961,7 @@ index 5343a015..db9317ec 100644
\begin{ncsimplebnf}
postfix-expression \terminal{(} \opt{expression-list} \terminal{)}
\end{ncsimplebnf}
-@@ -938,7 +938,7 @@ in each case using the selected rewritten \tcode{\keyword{operator}==} candidate
+@@ -958,7 +958,7 @@ in each case using the selected rewritten \tcode{\keyword{operator}==} candidate
If a built-in candidate is selected by overload resolution, the
operands of class type are converted to the types of the corresponding parameters
of the selected operation function, except that the second standard conversion
@@ -3136,7 +2970,7 @@ index 5343a015..db9317ec 100644
Then the operator is treated as the corresponding
built-in operator and interpreted according to \ref{expr.compound}.
\begin{example}
-@@ -1021,10 +1021,10 @@ void B::f() {
+@@ -1041,10 +1041,10 @@ void B::f() {
\indextext{overloading!resolution!initialization}
\pnum
@@ -3149,7 +2983,7 @@ index 5343a015..db9317ec 100644
overload resolution selects the constructor.
For direct-initialization or default-initialization
(including default-initialization in the context of copy-list-initialization),
-@@ -1715,7 +1715,7 @@ Third, for
+@@ -1836,7 +1836,7 @@ Third, for
\tcode{F}
to be a viable function, there shall exist for each
argument an
@@ -3158,7 +2992,7 @@ index 5343a015..db9317ec 100644
converts that argument to the corresponding parameter of
\tcode{F}.
If the parameter has reference type, the implicit conversion sequence
-@@ -1779,8 +1779,8 @@ float x = a; // ambiguous: both possibilities require conversions,
+@@ -1900,8 +1900,8 @@ float x = a; // ambiguous: both possibilities require conversions,
\end{example}
or, if not that,
@@ -3169,7 +3003,7 @@ index 5343a015..db9317ec 100644
return type of $\tcode{F}_1$ is the same kind of reference (lvalue or rvalue)
as the reference being initialized, and the return type of $\tcode{F}_2$ is not
\begin{example}
-@@ -1910,7 +1910,7 @@ $\tcode{F}_1$ is generated from a
+@@ -2031,7 +2031,7 @@ $\tcode{F}_1$ is generated from a
and $\tcode{F}_2$ is not, or, if not that,
\item
@@ -3178,7 +3012,7 @@ index 5343a015..db9317ec 100644
and $\tcode{F}_2$ is not, or, if not that,
\item
-@@ -2055,7 +2055,7 @@ parameter.
+@@ -2157,7 +2157,7 @@ parameter.
\begin{note}
Other properties, such as the lifetime, storage duration, linkage,
alignment, accessibility of the argument, whether the argument is a bit-field,
@@ -3187,7 +3021,7 @@ index 5343a015..db9317ec 100644
So, although an implicit
conversion sequence can be defined for a given argument-parameter
pair, the conversion from the argument to the parameter might still
-@@ -2068,11 +2068,11 @@ well-formed implicit conversion
+@@ -2170,11 +2170,11 @@ well-formed implicit conversion
sequence is one of the following forms:
\begin{itemize}
\item
@@ -3202,7 +3036,7 @@ index 5343a015..db9317ec 100644
\end{itemize}
\pnum
-@@ -2253,10 +2253,10 @@ Each conversion in \tref{over.ics.scs}
+@@ -2352,10 +2352,10 @@ Each conversion in \tref{over.ics.scs}
also has an associated rank (Exact
Match, Promotion, or Conversion).
These are used
@@ -3216,7 +3050,7 @@ index 5343a015..db9317ec 100644
If any of those has Conversion rank, the
sequence has Conversion rank; otherwise, if any of those has Promotion rank,
the sequence has Promotion rank; otherwise, the sequence has Exact
-@@ -2293,7 +2293,7 @@ by a constructor\iref{class.conv.ctor}, the initial standard
+@@ -2392,7 +2392,7 @@ by a constructor\iref{class.conv.ctor}, the initial standard
conversion sequence converts the source type to the type of the
first parameter of that constructor.
If the user-defined
@@ -3225,7 +3059,7 @@ index 5343a015..db9317ec 100644
initial standard conversion sequence
converts the source type to the type of the
object parameter of that conversion function.
-@@ -2429,7 +2429,7 @@ the prohibition on binding a non-\keyword{const} lvalue reference to a bit-field
+@@ -2528,7 +2528,7 @@ the prohibition on binding a non-\keyword{const} lvalue reference to a bit-field
\rSec4[over.ics.list]{List-initialization sequence}
\pnum
@@ -3234,7 +3068,7 @@ index 5343a015..db9317ec 100644
expression and special rules apply for converting it to a parameter type.
\pnum
-@@ -2671,13 +2671,13 @@ When comparing the basic forms of implicit conversion sequences
+@@ -2770,13 +2770,13 @@ When comparing the basic forms of implicit conversion sequences
(as defined in~\ref{over.best.ics})
\begin{itemize}
\item
@@ -3252,7 +3086,7 @@ index 5343a015..db9317ec 100644
\end{itemize}
\pnum
-@@ -3123,7 +3123,7 @@ the left side of an assignment\iref{expr.assign},
+@@ -3203,7 +3203,7 @@ the left side of an assignment\iref{expr.assign},
\item
a parameter of a function\iref{expr.call},
\item
@@ -3261,7 +3095,7 @@ index 5343a015..db9317ec 100644
\item
the return value of a function, operator function, or conversion\iref{stmt.return},
\item
-@@ -3323,8 +3323,8 @@ The operators
+@@ -3403,8 +3403,8 @@ The operators
and
\tcode{[]}
are formed from more than one token.
@@ -3272,7 +3106,7 @@ index 5343a015..db9317ec 100644
\end{note}
\indextext{operator!subscripting}%
\indextext{operator!function call}%
-@@ -3420,7 +3420,7 @@ this is not required by operator functions.
+@@ -3500,7 +3500,7 @@ this is not required by operator functions.
\pnum
\indextext{argument!overloaded operator and default}%
@@ -3281,7 +3115,7 @@ index 5343a015..db9317ec 100644
except where explicitly stated below.
Operator
functions cannot have more or fewer parameters than the
-@@ -3756,7 +3756,7 @@ to not be included in the set of candidate functions.
+@@ -3845,7 +3845,7 @@ to not be included in the set of candidate functions.
In this subclause, the term
\defn{promoted integral type}
is used to refer to those cv-unqualified integral types which are preserved by
@@ -3291,18 +3125,9 @@ index 5343a015..db9317ec 100644
and
\tcode{long}
diff --git a/source/preprocessor.tex b/source/preprocessor.tex
-index ee7959ab..885db47e 100644
+index 0bfb7f19..b3cf7fc7 100644
--- a/source/preprocessor.tex
+++ b/source/preprocessor.tex
-@@ -504,7 +504,7 @@ shall not appear in any context not mentioned in this subclause.
- Each preprocessing token that remains (in the list of preprocessing tokens that
- will become the controlling expression)
- after all macro replacements have occurred
--shall be in the lexical form of a token\iref{lex.token}.
-+shall be in the lexical form of a \link{token}{lex.token}.
-
- \pnum
- Preprocessing directives of the forms
@@ -551,8 +551,8 @@ are replaced with the \grammarterm{pp-number}
\tcode{0},
and then each preprocessing token is converted into a token.
@@ -3325,7 +3150,7 @@ index ee7959ab..885db47e 100644
\end{note}
This includes interpreting \grammarterm{character-literal}s
according to the rules in \ref{lex.ccon}.
-@@ -2041,7 +2041,7 @@ of the current source line is
+@@ -2126,7 +2126,7 @@ of the current source line is
the line number of the current physical source line,
i.e., it is one greater than
the number of new-line characters read or introduced
@@ -3334,20 +3159,20 @@ index ee7959ab..885db47e 100644
while processing the source file to the current preprocessing token.
\pnum
-@@ -2399,7 +2399,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}.
+@@ -2489,7 +2489,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}.
\indextext{__stdcpp_threads__@\mname{STDCPP_THREADS}}%
\mname{STDCPP_THREADS}\\
- Defined, and has the value integer literal 1, if and only if a program
+ Defined, and has the value integer literal \tcode{1}, if and only if a program
-can have more than one thread of execution\iref{intro.multithread}.
+can have more than one \link{thread of execution}{intro.multithread}.
\end{description}
diff --git a/source/statements.tex b/source/statements.tex
-index ba75c744..9782eab7 100644
+index fa6944b1..301d6304 100644
--- a/source/statements.tex
+++ b/source/statements.tex
-@@ -198,7 +198,7 @@ Expression statements have the form
+@@ -224,7 +224,7 @@ Expression statements have the form
\end{bnf}
The expression is
@@ -3356,7 +3181,7 @@ index ba75c744..9782eab7 100644
All
\indextext{side effects}%
side effects from an expression statement
-@@ -427,10 +427,10 @@ the value of the condition is the value of the \grammarterm{expression};
+@@ -452,10 +452,10 @@ the value of the condition is the value of the \grammarterm{expression};
otherwise, it is the value of the decision variable.
The value of the condition shall be of integral type, enumeration type, or class
type. If of class type, the
@@ -3370,16 +3195,16 @@ index ba75c744..9782eab7 100644
to the promoted type.
Any
statement within the \keyword{switch} statement can be labeled with one or
-@@ -440,7 +440,7 @@ more case labels as follows:
+@@ -465,7 +465,7 @@ more case labels as follows:
\keyword{case} constant-expression \terminal{:}
\end{ncbnf}
where the \grammarterm{constant-expression} shall be
--a converted constant expression\iref{expr.const} of the
-+a converted \link{constant expression}{expr.const} of the
+-a converted constant expression\iref{expr.const.const} of the
++a converted \link{constant expression}{expr.const.const} of the
adjusted type of the switch condition. No two of the case constants in
the same switch shall have the same value after conversion.
-@@ -539,7 +539,7 @@ An \grammarterm{init-statement} ends with a semicolon.
+@@ -551,7 +551,7 @@ An \grammarterm{init-statement} ends with a semicolon.
\pnum
\indextext{scope!\idxgram{iteration-statement}}%
The substatement in an \grammarterm{iteration-statement} implicitly defines
@@ -3388,7 +3213,7 @@ index ba75c744..9782eab7 100644
through the loop.
If the substatement in an \grammarterm{iteration-statement} is
a single statement and not a \grammarterm{compound-statement},
-@@ -638,7 +638,7 @@ fails.
+@@ -650,7 +650,7 @@ fails.
\indextext{statement!\idxcode{do}}
\pnum
@@ -3397,7 +3222,7 @@ index ba75c744..9782eab7 100644
if that conversion is ill-formed, the program is ill-formed.
\pnum
-@@ -807,8 +807,8 @@ Jump statements unconditionally transfer control.
+@@ -1028,8 +1028,8 @@ Jump statements unconditionally transfer control.
\indextext{local variable!destruction of}%
\indextext{scope!destructor and exit from}%
\begin{note}
@@ -3408,7 +3233,7 @@ index ba75c744..9782eab7 100644
in the reverse order of their construction\iref{stmt.dcl}.
For temporaries, see~\ref{class.temporary}.
However, the program can be terminated (by calling
-@@ -908,7 +908,7 @@ in a function that has a return type other than \cv{}~\keyword{void};
+@@ -1098,7 +1098,7 @@ in a function that has a return type other than \cv{}~\keyword{void};
the \tcode{return} statement initializes the
returned reference or prvalue result object
of the (explicit or implicit) function call
@@ -3417,7 +3242,7 @@ index ba75c744..9782eab7 100644
\begin{note}
A constructor or destructor does not have a return type.
\end{note}
-@@ -1041,7 +1041,7 @@ results in undefined behavior.
+@@ -1235,7 +1235,7 @@ results in undefined behavior.
The \tcode{goto} statement unconditionally transfers control to the
statement labeled by the identifier. The identifier shall be a
\indextext{label}%
@@ -3426,7 +3251,7 @@ index ba75c744..9782eab7 100644
\rSec1[stmt.contract.assert]{Assertion statement}
-@@ -1152,8 +1152,8 @@ lx:
+@@ -1347,8 +1347,8 @@ lx:
\indextext{initialization!local \tcode{static}}%
\indextext{initialization!local \tcode{thread_local}}%
Dynamic initialization of a block variable with
@@ -3437,7 +3262,7 @@ index ba75c744..9782eab7 100644
the first time control passes through its declaration; such a variable is
considered initialized upon the completion of its initialization. If the
initialization exits by throwing an exception, the initialization is not
-@@ -1196,8 +1196,8 @@ will be destroyed if and only if it was constructed.
+@@ -1391,8 +1391,8 @@ will be destroyed if and only if it was constructed.
\pnum
There is an ambiguity in the grammar involving
\grammarterm{expression-statement}{s} and \grammarterm{declaration}{s}: An
@@ -3449,10 +3274,10 @@ index ba75c744..9782eab7 100644
\grammarterm{declarator} starts with a \tcode{(}. In those cases the
\grammarterm{statement} is considered a \grammarterm{declaration},
diff --git a/source/strings.tex b/source/strings.tex
-index 0245aaae..6f584dff 100644
+index b8619c9b..e9c20ec8 100644
--- a/source/strings.tex
+++ b/source/strings.tex
-@@ -5505,13 +5505,13 @@ The contents and meaning of the header \libheaderdef{cstring}
+@@ -5537,13 +5537,13 @@ The contents and meaning of the header \libheaderdef{cstring}
are the same as the C standard library header \libheader{string.h}.
\pnum
@@ -3469,7 +3294,7 @@ index 0245aaae..6f584dff 100644
Each of these functions implicitly creates objects\iref{intro.object}
in the destination region of storage
immediately prior to copying the sequence of characters to the destination.
-@@ -5523,7 +5523,7 @@ otherwise the value of the first parameter.
+@@ -5555,7 +5555,7 @@ otherwise the value of the first parameter.
The functions
\tcode{strchr}, \tcode{strpbrk}, \tcode{strrchr}, \tcode{strstr}, and \tcode{memchr},
have different signatures in this document,
@@ -3477,9 +3302,9 @@ index 0245aaae..6f584dff 100644
+but they have the same behavior as in the \link{C standard library}{library.c}.
\end{note}
- \xrefc{7.24}
+ \xrefc{7.26}
diff --git a/source/support.tex b/source/support.tex
-index 95d674aa..ff85b31b 100644
+index e86cf147..0dd4cd06 100644
--- a/source/support.tex
+++ b/source/support.tex
@@ -45,22 +45,15 @@ as summarized in \tref{support.summary}.
@@ -3521,7 +3346,7 @@ index 95d674aa..ff85b31b 100644
\end{codeblock}
\pnum
-@@ -101,11 +94,6 @@ and as noted in
+@@ -102,11 +95,6 @@ and as noted in
\rSec2[cstdlib.syn]{Header \tcode{} synopsis}
\indexheader{cstdlib}%
@@ -3533,7 +3358,7 @@ index 95d674aa..ff85b31b 100644
\indexlibraryglobal{_Exit}%
\indexlibraryglobal{abort}%
\indexlibraryglobal{abs}%
-@@ -122,7 +110,6 @@ and as noted in
+@@ -123,7 +111,6 @@ and as noted in
\indexlibraryglobal{div_t}%
\indexlibraryglobal{exit}%
\indexlibraryglobal{free}%
@@ -3541,7 +3366,7 @@ index 95d674aa..ff85b31b 100644
\indexlibraryglobal{labs}%
\indexlibraryglobal{ldiv}%
\indexlibraryglobal{ldiv_t}%
-@@ -157,11 +144,11 @@ namespace std {
+@@ -158,11 +145,11 @@ namespace std {
using lldiv_t = @\seebelow@; // freestanding
}
@@ -3558,7 +3383,7 @@ index 95d674aa..ff85b31b 100644
namespace std {
// Exposition-only function type aliases
-@@ -180,7 +167,7 @@ namespace std {
+@@ -181,7 +168,7 @@ namespace std {
[[noreturn]] void _Exit(int status) noexcept; // freestanding
[[noreturn]] void quick_exit(int status) noexcept; // freestanding
@@ -3567,7 +3392,7 @@ index 95d674aa..ff85b31b 100644
int system(const char* string);
// \ref{c.malloc}, C library memory allocation
-@@ -253,7 +240,7 @@ and except as noted in
+@@ -265,7 +252,7 @@ and except as noted in
\ref{c.math.abs}.
\begin{note}
Several functions have additional overloads in this document,
@@ -3575,8 +3400,8 @@ index 95d674aa..ff85b31b 100644
+but they have the same behavior as in the \link{C standard library}{library.c}.
\end{note}
- \xrefc{7.22}
-@@ -307,8 +294,8 @@ is required to work as specified even if unary
+ \xrefc{7.24}
+@@ -319,8 +306,8 @@ is required to work as specified even if unary
is overloaded for any of the types involved.
\end{footnote}
The expression \tcode{offsetof(\placeholder{type}, \placeholder{member-designator})}
@@ -3587,7 +3412,7 @@ index 95d674aa..ff85b31b 100644
dependent. The result of applying the \tcode{offsetof} macro to
a static data member or a function member is undefined.
No operation invoked by the \tcode{offsetof} macro shall throw an exception and
-@@ -1068,7 +1055,7 @@ the specialization on the unqualified type \tcode{T}.
+@@ -1118,7 +1105,7 @@ the specialization on the unqualified type \tcode{T}.
\pnum
Non-arithmetic standard types, such as
@@ -3596,7 +3421,7 @@ index 95d674aa..ff85b31b 100644
\rSec3[numeric.limits.members]{\tcode{numeric_limits} members}
-@@ -2132,7 +2119,7 @@ The program is terminated without executing destructors for objects with automat
+@@ -2122,7 +2109,7 @@ The program is terminated without executing destructors for objects with automat
thread, or static storage duration and without calling functions passed to
\tcode{atexit()}\iref{basic.start.term}.
\indextext{signal-safe!\idxcode{_Exit}}%
@@ -3605,7 +3430,7 @@ index 95d674aa..ff85b31b 100644
\end{itemdescr}
\indexlibraryglobal{abort}%
-@@ -2152,7 +2139,7 @@ automatic, thread, or static storage
+@@ -2142,7 +2129,7 @@ automatic, thread, or static storage
duration and without calling functions passed to
\tcode{atexit()}\iref{basic.start.term}.
\indextext{signal-safe!\idxcode{abort}}%
@@ -3614,7 +3439,7 @@ index 95d674aa..ff85b31b 100644
\end{itemdescr}
\indexlibraryglobal{atexit}%
-@@ -2169,7 +2156,8 @@ The
+@@ -2159,7 +2146,8 @@ The
functions register the function pointed to by \tcode{f}
to be called without arguments at normal program termination.
It is unspecified whether a call to \tcode{atexit()} that does not
@@ -3624,7 +3449,7 @@ index 95d674aa..ff85b31b 100644
\begin{note}
The \tcode{atexit()} functions do not introduce a data
race\iref{res.on.data.races}.
-@@ -2263,7 +2251,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept;
+@@ -2253,7 +2241,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept;
The \tcode{at_quick_exit()} functions register the function pointed to by \tcode{f}
to be called without arguments when \tcode{quick_exit} is called.
It is unspecified whether a call to \tcode{at_quick_exit()} that does not
@@ -3634,7 +3459,7 @@ index 95d674aa..ff85b31b 100644
\begin{note}
The
\tcode{at_quick_exit()} functions do not introduce a
-@@ -2315,7 +2304,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s
+@@ -2305,7 +2294,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s
\pnum
\remarks
\indextext{signal-safe!\idxcode{quick_exit}}%
@@ -3643,7 +3468,7 @@ index 95d674aa..ff85b31b 100644
when the functions registered with \tcode{at_quick_exit} are.
\end{itemdescr}
-@@ -2442,7 +2431,7 @@ void* operator new(std::size_t size, std::align_val_t alignment);
+@@ -2432,7 +2421,7 @@ void* operator new(std::size_t size, std::align_val_t alignment);
\pnum
\effects
The
@@ -3652,7 +3477,7 @@ index 95d674aa..ff85b31b 100644
called by a
\grammarterm{new-expression}\iref{expr.new}
to allocate
-@@ -2478,7 +2467,7 @@ a null pointer value, throws
+@@ -2468,7 +2457,7 @@ a null pointer value, throws
\tcode{bad_alloc}.
\item
Otherwise, the function calls the current
@@ -3661,7 +3486,7 @@ index 95d674aa..ff85b31b 100644
If the called function returns, the loop repeats.
\item
The loop terminates when an attempt to allocate the requested storage is
-@@ -2700,7 +2689,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment);
+@@ -2690,7 +2679,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment);
\pnum
\effects
The
@@ -3670,7 +3495,7 @@ index 95d674aa..ff85b31b 100644
called by the array form of a
\grammarterm{new-expression}\iref{expr.new}
to allocate
-@@ -3013,8 +3002,8 @@ versions of \tcode{operator delete}, the C standard library function
+@@ -3003,8 +2992,8 @@ versions of \tcode{operator delete}, the C standard library function
introduce a data race\iref{res.on.data.races}.
Calls to these functions that allocate or deallocate a particular unit
of storage shall occur in a single total order, and each such deallocation call
@@ -3681,18 +3506,7 @@ index 95d674aa..ff85b31b 100644
\rSec2[alloc.errors]{Storage allocation errors}
-@@ -3168,8 +3157,8 @@ template constexpr T* launder(T* p) noexcept;
- \pnum
- \expects
- \tcode{p} represents the address \placeholder{A} of a byte in memory.
--An object \placeholder{X} that is within its lifetime\iref{basic.life}
--and whose type is similar\iref{conv.qual} to \tcode{T}
-+An object \placeholder{X} that is within its \deflink{lifetime}{basic.life}
-+and whose type is \deflinkx{similar}{similar types}{conv.qual} to \tcode{T}
- is located at the address \placeholder{A}.
- All bytes of storage that would be
- reachable through\iref{basic.compound} the result
-@@ -3382,7 +3371,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}.
+@@ -3375,7 +3364,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}.
\pnum
\remarks
@@ -3702,7 +3516,7 @@ index 95d674aa..ff85b31b 100644
suitable for conversion and display as a
\tcode{wstring}\iref{string.classes,locale.codecvt}.
\end{itemdescr}
-@@ -3956,7 +3946,8 @@ the ordinary literal encoding\iref{lex.ccon}.
+@@ -3946,7 +3936,8 @@ the ordinary literal encoding\iref{lex.ccon}.
\pnum
\remarks
@@ -3712,7 +3526,7 @@ index 95d674aa..ff85b31b 100644
suitable for conversion and display as a
\tcode{wstring}\iref{string.classes,locale.codecvt}.
The return value remains valid until the exception object from which
-@@ -4107,7 +4098,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread.
+@@ -4097,7 +4088,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread.
\remarks
When \tcode{uncaught_exceptions() > 0},
throwing an exception can result in a call of the function
@@ -3721,7 +3535,7 @@ index 95d674aa..ff85b31b 100644
\end{itemdescr}
\rSec2[propagation]{Exception propagation}
-@@ -4169,8 +4160,9 @@ constexpr exception_ptr current_exception() noexcept;
+@@ -4161,8 +4152,9 @@ exception_ptr current_exception() noexcept;
\begin{itemdescr}
\pnum
\returns
@@ -3733,7 +3547,7 @@ index 95d674aa..ff85b31b 100644
handled exception, or a null \tcode{exception_ptr} object if no exception is being
handled. The referenced object shall remain valid at least as long as there is an
\tcode{exception_ptr} object that refers to it.
-@@ -4755,7 +4747,7 @@ template constexpr const E* end(initializer_list il) noexcept;
+@@ -4748,7 +4740,7 @@ constexpr bool empty() const noexcept;
\pnum
The header \libheaderdef{compare} specifies types, objects, and functions
for use primarily in connection with
@@ -3742,7 +3556,7 @@ index 95d674aa..ff85b31b 100644
\indexlibraryglobal{is_eq}%
\indexlibraryglobal{is_neq}%
-@@ -6296,7 +6288,7 @@ environment.
+@@ -6342,7 +6334,7 @@ environment.
\end{note}
\pnum
@@ -3752,10 +3566,10 @@ index 95d674aa..ff85b31b 100644
calls to the \tcode{setlocale} function or with calls to functions that are
affected by the current C locale. The implementation shall behave as if no
diff --git a/source/templates.tex b/source/templates.tex
-index bf283e46..00d8fae6 100644
+index 36975546..ea6af80c 100644
--- a/source/templates.tex
+++ b/source/templates.tex
-@@ -681,7 +681,7 @@ struct A {};
+@@ -716,7 +716,7 @@ struct A {};
\rSec1[temp.names]{Names of template specializations}
\pnum
@@ -3764,7 +3578,7 @@ index bf283e46..00d8fae6 100644
\grammarterm{template-id}:
\begin{bnf}
-@@ -973,8 +973,8 @@ specified in a
+@@ -1055,8 +1055,8 @@ in a \grammarterm{splice-specialization-specifier}
shall match the type and form specified for the corresponding
parameter declared by the template in its
\grammarterm{template-parameter-list}.
@@ -3775,16 +3589,16 @@ index bf283e46..00d8fae6 100644
\grammarterm{template-argument}{s}.
\begin{example}
\begin{codeblock}
-@@ -1137,7 +1137,7 @@ the program is ill-formed.
- \pnum
- When a \grammarterm{simple-template-id} does not name a function,
+@@ -1247,7 +1247,7 @@ When a \grammarterm{simple-template-id} or
+ \grammarterm{splice-specialization-specifier}
+ does not designate a function,
a default \grammarterm{template-argument} is
-implicitly instantiated\iref{temp.inst}
+\link{implicitly instantiated}{temp.inst}
when the value of that default argument is needed.
\begin{example}
\begin{codeblock}
-@@ -1149,7 +1149,7 @@ The default argument for \tcode{U} is instantiated to form the type \tcode{S 1} is not satisfied;
the second operand is not checked for satisfaction.
\end{example}
-@@ -1703,9 +1703,9 @@ in the declaration of a constrained entity (and, therefore, can involve the
+@@ -1816,9 +1816,9 @@ in the declaration of a constrained entity (and, therefore, can involve the
unsubstituted template parameters of the constrained entity),
called the \defn{parameter mapping}\iref{temp.constr.decl}.
\begin{note}
-Atomic constraints are formed by constraint normalization\iref{temp.constr.normal}.
-\tcode{E} is never a logical \logop{and} expression\iref{expr.log.and}
-nor a logical \logop{or} expression\iref{expr.log.or}.
-+Atomic constraints are formed by \deflinkx{constraint normalization}{constraint!normalization}{temp.constr.normal}.
++Atomic constraints are formed by \link{constraint normalization}{temp.constr.normal}.
+\tcode{E} is never a \link{logical \logop{and} expression}{expr.log.and}
+nor a \link{logical \logop{or} expression}{expr.log.or}.
\end{note}
\pnum
-@@ -1782,7 +1782,7 @@ first substituted into its expression.
+@@ -1895,7 +1895,7 @@ first substituted into its expression.
If substitution results in an invalid type or expression
in the immediate context of the atomic constraint\iref{temp.deduct.general},
the constraint is not satisfied.
@@ -3853,7 +3667,7 @@ index bf283e46..00d8fae6 100644
is performed if necessary,
and \tcode{E} shall be a constant expression of type \tcode{bool}.
The constraint is satisfied if and only if evaluation of \tcode{E}
-@@ -1945,11 +1945,11 @@ A declaration's \defn{associated constraints} are defined as follows:
+@@ -2057,11 +2057,11 @@ A declaration's \defn{associated constraints} are defined as follows:
the declaration has no associated constraints.
\item Otherwise, if there is a single introduced \grammarterm{constraint-expression},
@@ -3868,7 +3682,7 @@ index bf283e46..00d8fae6 100644
following order:
\begin{itemize}
\item
-@@ -2046,7 +2046,7 @@ so it does match \#2.
+@@ -2158,7 +2158,7 @@ so it does match \#2.
\pnum
The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is
@@ -3877,7 +3691,7 @@ index bf283e46..00d8fae6 100644
%
\begin{itemize}
\item
-@@ -2055,7 +2055,7 @@ the normal form of \tcode{E}.
+@@ -2167,7 +2167,7 @@ the normal form of \tcode{E}.
\item
The normal form of an expression \tcode{E1 || E2} is
@@ -3886,7 +3700,7 @@ index bf283e46..00d8fae6 100644
the normal forms of \tcode{E1} and \tcode{E2}.
\item
-@@ -2303,7 +2303,7 @@ the constraint of $A$ subsumes that of $B$.
+@@ -2415,7 +2415,7 @@ the constraint of $A$ subsumes that of $B$.
\end{itemize}
%
\begin{example}
@@ -3895,7 +3709,7 @@ index bf283e46..00d8fae6 100644
%
The constraint $A \land B$ subsumes $A$, but $A$ does not subsume $A \land B$.
%
-@@ -2519,7 +2519,7 @@ declares \tcode{y} and \tcode{z} to be of the same type.
+@@ -2637,7 +2637,7 @@ declares \tcode{y} and \tcode{z} to be of the same type.
\end{example}
\pnum
@@ -3904,18 +3718,7 @@ index bf283e46..00d8fae6 100644
\tcode{decltype($e$)}
denotes a unique dependent type. Two such \grammarterm{decltype-specifier}{s}
refer to the same type only if their \grammarterm{expression}{s} are
-@@ -2589,8 +2589,8 @@ default arguments,
- \grammarterm{requires-clause}{s},
- or
- \grammarterm{noexcept-specifier}{s}.
--For the purpose of instantiation, the substatements of a constexpr if
--statement\iref{stmt.if} are considered definitions.
-+For the purpose of instantiation, the substatements of a
-+\deflink{constexpr if}{stmt.if} statement are considered definitions.
-
- \pnum
- Because an \grammarterm{alias-declaration} cannot declare a
-@@ -2944,7 +2944,7 @@ void S::g(U) { } // error: no matching function in \tcode{S}
+@@ -3064,7 +3064,7 @@ void S::g(U) { } // error: no matching function in \tcode{S}
\pnum
A local class of non-closure type shall not have member templates.
@@ -3924,7 +3727,7 @@ index bf283e46..00d8fae6 100644
apply to member template names.
A destructor shall not be a member
template.
-@@ -3164,7 +3164,7 @@ the \grammarterm{alignment-specifier} without the ellipsis.
+@@ -3291,7 +3291,7 @@ the \grammarterm{alignment-specifier} without the ellipsis.
\item In a \grammarterm{capture-list}\iref{expr.prim.lambda.capture}; the pattern is
the \grammarterm{capture} without the ellipsis.
@@ -3933,7 +3736,7 @@ index bf283e46..00d8fae6 100644
\grammarterm{identifier}.
\item In a \grammarterm{pack-index-expression};
-@@ -3787,9 +3787,9 @@ primary template.
+@@ -3914,9 +3914,9 @@ primary template.
\pnum
A partial specialization matches a given actual template argument
list if the template arguments of the partial specialization can be
@@ -3946,7 +3749,7 @@ index bf283e46..00d8fae6 100644
\begin{example}
\begin{codeblock}
template class A { }; // \#1
-@@ -3851,14 +3851,14 @@ of the primary template.
+@@ -3978,14 +3978,14 @@ of the primary template.
For two partial specializations,
the first is \defn{more specialized} than the second if, given the following
rewrite to two function templates, the first function template is more
@@ -3964,7 +3767,7 @@ index bf283e46..00d8fae6 100644
as the corresponding partial specialization.
\item
Each function template
-@@ -4064,8 +4064,8 @@ void h(int* p) {
+@@ -4191,8 +4191,8 @@ void h(int* p) {
\end{example}
\pnum
@@ -3975,7 +3778,7 @@ index bf283e46..00d8fae6 100644
\pnum
The signature of a function template
-@@ -4116,7 +4116,7 @@ For example, a template type parameter can be used in the
+@@ -4243,7 +4243,7 @@ For example, a template type parameter can be used in the
Two expressions involving template parameters are considered
\defnx{equivalent}{equivalent!expressions}
if two function definitions containing the expressions would satisfy
@@ -3984,9 +3787,9 @@ index bf283e46..00d8fae6 100644
to name the template parameters may differ as long as a token used to
name a template parameter in one expression is replaced by another token
that names the same template parameter in the other expression.
-@@ -4286,8 +4286,8 @@ function template
+@@ -4413,8 +4413,8 @@ function template
specialization
- is selected to match a placement operator new\iref{basic.stc.dynamic.deallocation,expr.new};
+ is selected to match a placement allocation function\iref{basic.stc.dynamic.deallocation,expr.new};
\item
-when a friend function declaration\iref{temp.friend}, an
-explicit instantiation\iref{temp.explicit} or an explicit specialization\iref{temp.expl.spec} refers to
@@ -3995,7 +3798,7 @@ index bf283e46..00d8fae6 100644
a function template specialization.
\end{itemize}
-@@ -4669,7 +4669,7 @@ A \grammarterm{concept-definition}
+@@ -4807,7 +4807,7 @@ A \grammarterm{concept-definition}
shall inhabit a namespace scope\iref{basic.scope.namespace}.
\pnum
@@ -4004,16 +3807,7 @@ index bf283e46..00d8fae6 100644
\pnum
A concept is not instantiated\iref{temp.spec}.
-@@ -4980,7 +4980,7 @@ was a pack expansion and the corresponding pack is empty, or
- \item an instantiation uses a default argument or default template argument
- that had not been defined at the point at which the template was defined, or
-
--\item constant expression evaluation\iref{expr.const} within the template
-+\item \link{constant expression evaluation}{expr.const} within the template
- instantiation uses
- \begin{itemize}
- \item the value of a const object of integral or unscoped enumeration type or
-@@ -5233,7 +5233,7 @@ any of the expressions
+@@ -5387,7 +5387,7 @@ any of the expressions
or \grammarterm{braced-init-list}{s}
in the
\grammarterm{expression-list}
@@ -4022,7 +3816,7 @@ index bf283e46..00d8fae6 100644
\item
the \grammarterm{unqualified-id}
is a \grammarterm{template-id} in which any of the template arguments depends
-@@ -5293,7 +5293,7 @@ if it is
+@@ -5447,7 +5447,7 @@ if it is
\item
in the definition of a class template, a nested class of a class template,
a member of a class template, or a member of a nested class of a class template,
@@ -4031,34 +3825,25 @@ index bf283e46..00d8fae6 100644
\item
in the definition of a primary class template
or a member of a primary class template, the name of the
-@@ -5572,7 +5572,7 @@ used without a \grammarterm{template-argument-list}.
+@@ -5728,7 +5728,7 @@ used without a \grammarterm{template-argument-list}.
\end{footnote}
- \item a \grammarterm{pack-index-specifier}, or
+ \item a \grammarterm{pack-index-specifier},
\item denoted by \tcode{decltype(}\grammarterm{expression}{}\tcode{)},
--where \grammarterm{expression} is type-dependent\iref{temp.dep.expr}.
-+where \grammarterm{expression} is \link{type-dependent}{temp.dep.expr}.
- \end{itemize}
-
- \pnum
-@@ -5711,7 +5711,7 @@ see~\ref{support.types}.
+-where \grammarterm{expression} is type-dependent\iref{temp.dep.expr}, or
++where \grammarterm{expression} is \link{type-dependent}{temp.dep.expr}, or
+ \item denoted by a \grammarterm{splice-type-specifier} in which either
+ the \grammarterm{splice-specifier} or
+ \grammarterm{splice-specialization-specifier}
+@@ -5880,7 +5880,7 @@ see~\ref{support.types}.
\end{note}
\pnum
-A class member access expression\iref{expr.ref} is
+A \link{class member access expression}{expr.ref} is
type-dependent if
- the terminal name of its \grammarterm{id-expression}, if any, is dependent or
- the expression refers to a member of the current instantiation and
-@@ -5846,7 +5846,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the
- instantiation is value-dependent.
- An expression of the form \tcode{\&}\grammarterm{cast-expression}
- is also value-dependent if evaluating \grammarterm{cast-expression}
--as a core constant expression\iref{expr.const} succeeds and
-+as a \deflinkx{core constant expression}{expression!core constant}{expr.const} succeeds and
- the result of the evaluation refers to a templated entity
- that is an object with static or thread storage duration or a member function.
-
-@@ -5970,7 +5970,7 @@ within a translation unit.
+ \begin{itemize}
+ \item
+@@ -6260,7 +6260,7 @@ within a translation unit.
A specialization for any template may have points of instantiation in multiple
translation units.
If two different points of instantiation give a template specialization
@@ -4066,8 +3851,8 @@ index bf283e46..00d8fae6 100644
+different meanings according to the \link{one-definition rule}{basic.def.odr},
the program is ill-formed, no diagnostic required.
- \rSec3[temp.dep.candidate]{Candidate functions}
-@@ -6275,7 +6275,7 @@ of type
+ \pnum
+@@ -6571,7 +6571,7 @@ of type
\pnum
If a function declaration acquired its function type through
@@ -4076,16 +3861,7 @@ index bf283e46..00d8fae6 100644
a function declarator, the program is ill-formed.
\begin{example}
\begin{codeblock}
-@@ -6356,7 +6356,7 @@ X ch; // error: incomplete type \tcode{X}
- \end{example}
- \begin{note}
- Within a template declaration,
--a local class\iref{class.local} or enumeration and the members of
-+a \link{local class}{class.local} or enumeration and the members of
- a local class are never considered to be entities that can be separately
- instantiated (this includes their default arguments,
- \grammarterm{noexcept-specifier}{s}, and non-static data member
-@@ -6534,7 +6534,7 @@ void x() {
+@@ -6808,7 +6808,7 @@ void x() {
\end{example}
\pnum
@@ -4094,7 +3870,7 @@ index bf283e46..00d8fae6 100644
can be determined without instantiating a class template definition,
it is unspecified whether that instantiation actually takes place.
\begin{example}
-@@ -6871,7 +6871,7 @@ If an entity is the subject of both an explicit instantiation declaration
+@@ -7165,7 +7165,7 @@ If an entity is the subject of both an explicit instantiation declaration
and an explicit instantiation definition in the same translation unit, the
definition shall follow the declaration. An entity that is the subject of an
explicit instantiation declaration and that is also used
@@ -4103,7 +3879,7 @@ index bf283e46..00d8fae6 100644
in the translation unit
shall be the subject of an explicit instantiation definition somewhere in the
program; otherwise the program is ill-formed, no diagnostic required.
-@@ -7935,7 +7935,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}.
+@@ -8250,7 +8250,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}.
In the following example,
assuming a \tcode{signed char}
cannot represent the value 1000,
@@ -4112,7 +3888,7 @@ index bf283e46..00d8fae6 100644
would be required
to convert the \grammarterm{template-argument}
of type \tcode{int} to \tcode{signed char},
-@@ -8044,8 +8044,8 @@ is not a reference type:
+@@ -8359,8 +8359,8 @@ is not a reference type:
\item
If
\tcode{A}
@@ -4123,7 +3899,7 @@ index bf283e46..00d8fae6 100644
\tcode{A}
for type deduction;
otherwise,
-@@ -8053,7 +8053,7 @@ otherwise,
+@@ -8368,7 +8368,7 @@ otherwise,
If
\tcode{A}
is a function type, the pointer type produced by the
@@ -4132,7 +3908,7 @@ index bf283e46..00d8fae6 100644
of
\tcode{A}
for type
-@@ -8149,8 +8149,8 @@ The transformed \tcode{A}
+@@ -8464,8 +8464,8 @@ The transformed \tcode{A}
can be another pointer or pointer-to-member type that can be converted
to the deduced
\tcode{A}
@@ -4143,7 +3919,7 @@ index bf283e46..00d8fae6 100644
\item
If
-@@ -8281,7 +8281,7 @@ void test() {
+@@ -8598,7 +8598,7 @@ void test() {
\pnum
Template arguments can be deduced from the type specified when taking
@@ -4152,7 +3928,7 @@ index bf283e46..00d8fae6 100644
If there is a target,
the function template's function type and the target type
are used as the types of
-@@ -8328,7 +8328,7 @@ is not a reference type:
+@@ -8645,7 +8645,7 @@ is not a reference type:
If
\tcode{P}
is an array type, the pointer type produced by the
@@ -4161,7 +3937,7 @@ index bf283e46..00d8fae6 100644
\tcode{P}
for type
deduction; otherwise,
-@@ -8336,7 +8336,7 @@ deduction; otherwise,
+@@ -8653,7 +8653,7 @@ deduction; otherwise,
If
\tcode{P}
is a function type, the pointer type produced by the
@@ -4170,7 +3946,7 @@ index bf283e46..00d8fae6 100644
\tcode{P}
for
type deduction; otherwise,
-@@ -8427,7 +8427,7 @@ after a function has been selected.
+@@ -8744,7 +8744,7 @@ after a function has been selected.
In the context of a call to a conversion function, the return types of
the conversion function templates are used.
\item
@@ -4179,7 +3955,7 @@ index bf283e46..00d8fae6 100644
type is used.
\end{itemize}
-@@ -8939,7 +8939,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the
+@@ -9258,7 +9258,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the
template argument list of \tcode{A}. Each comparison deduces
template arguments for subsequent positions in the template parameter
packs expanded by $\texttt{P}_i$.
@@ -4188,7 +3964,7 @@ index bf283e46..00d8fae6 100644
originally a pack expansion:
\begin{itemize}
\item if \tcode{P} does not contain a template argument corresponding to
-@@ -9002,7 +9002,7 @@ each remaining parameter type in the parameter-type-list
+@@ -9321,7 +9321,7 @@ each remaining parameter type in the parameter-type-list
of \tcode{A}. Each comparison deduces template arguments for
subsequent positions in the template parameter packs expanded by the
function parameter pack.
@@ -4197,7 +3973,7 @@ index bf283e46..00d8fae6 100644
originally a function parameter pack:
\begin{itemize}
\item if \tcode{P} does not contain a function parameter type corresponding to
-@@ -9296,8 +9296,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod
+@@ -9659,8 +9659,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod
In a declaration whose \grammarterm{declarator-id} refers to a specialization
of a function template, template argument deduction is performed to identify
the specialization to which the declaration refers. Specifically, this is done
@@ -4206,10 +3982,10 @@ index bf283e46..00d8fae6 100644
+for \link{explicit instantiations}{temp.explicit}, \link{explicit specializations}{temp.expl.spec},
+and certain \link{friend declarations}{temp.friend}. This is also done to
determine whether a deallocation function template specialization matches a placement
- \tcode{operator new}\iref{basic.stc.dynamic.deallocation,expr.new}.
+ allocation function\iref{basic.stc.dynamic.deallocation,expr.new}.
In all these cases, \tcode{P} is the type of the function template being considered
diff --git a/source/threads.tex b/source/threads.tex
-index 1b3e2577..8a388c9f 100644
+index 53bec754..7a2d110e 100644
--- a/source/threads.tex
+++ b/source/threads.tex
@@ -5,7 +5,7 @@
@@ -4221,18 +3997,7 @@ index 1b3e2577..8a388c9f 100644
and values
between threads, as summarized in \tref{thread.summary}.
-@@ -294,8 +294,8 @@ exception is thrown then a lock shall not have been acquired for the current exe
- A type \tcode{L} meets the \defnoldconcept{TimedLockable} requirements if it meets the \oldconcept{Lockable}
- requirements and the following expressions are well-formed and have the specified semantics
- (\tcode{m} denotes a value of type \tcode{L}, \tcode{rel_time} denotes a value of an
--instantiation of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes a value
--of an instantiation of \tcode{time_point}\iref{time.point}).
-+instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes a value
-+of an instantiation of \link{\tcode{time_point}}{time.point}).
-
- \begin{itemdecl}
- m.try_lock_for(rel_time)
-@@ -6577,7 +6577,7 @@ namespace std {
+@@ -7309,7 +7309,7 @@ namespace std {
\pnum
A mutex object facilitates protection against data races and allows safe synchronization of
@@ -4241,8 +4006,8 @@ index 1b3e2577..8a388c9f 100644
An execution agent \term{owns} a mutex from the time it successfully calls one of the
lock functions until it calls unlock. Mutexes can be either recursive or non-recursive, and can
grant simultaneous ownership to one or many execution agents. Both
-@@ -6621,7 +6621,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on
- a single mutex appears to occur in a single total order.
+@@ -7353,7 +7353,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on
+ a single mutex appear to occur in a single total order.
\begin{note}
This
-can be viewed as the modification order\iref{intro.multithread} of the
@@ -4250,7 +4015,7 @@ index 1b3e2577..8a388c9f 100644
mutex.
\end{note}
\begin{note}
-@@ -6701,7 +6701,7 @@ in the absence of contending mutex acquisitions.
+@@ -7433,7 +7433,7 @@ in the absence of contending mutex acquisitions.
\pnum
\sync
If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations
@@ -4259,7 +4024,7 @@ index 1b3e2577..8a388c9f 100644
\begin{note}
Since \tcode{lock()} does not synchronize with a failed subsequent
\tcode{try_lock()}, the visibility rules are weak enough that little would be
-@@ -6737,7 +6737,7 @@ Releases the calling thread's ownership of the mutex.
+@@ -7469,7 +7469,7 @@ Releases the calling thread's ownership of the mutex.
\pnum
\sync
@@ -4268,19 +4033,7 @@ index 1b3e2577..8a388c9f 100644
lock operations that obtain ownership on the same object.
\pnum
-@@ -6866,9 +6866,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex},
- meet the requirements set out below.
- In this description, \tcode{m} denotes an object of a mutex type,
- \tcode{rel_time} denotes an object of an
--instantiation of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes an
-+instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes an
- object of an
--instantiation of \tcode{time_point}\iref{time.point}.
-+instantiation of \link{\tcode{time_point}}{time.point}.
- \begin{note}
- The timed mutex types meet the \oldconcept{TimedLockable}
- requirements\iref{thread.req.lockable.timed}.
-@@ -7158,7 +7158,7 @@ Releases a shared lock on the mutex held by the calling thread.
+@@ -7890,7 +7890,7 @@ Releases a shared lock on the mutex held by the calling thread.
\pnum
\sync
@@ -4289,34 +4042,25 @@ index 1b3e2577..8a388c9f 100644
\tcode{lock()} operations that obtain ownership on the same object.
\pnum
-@@ -7262,7 +7262,7 @@ meet the requirements set out below. In this description,
- \tcode{rel_time} denotes an object of an instantiation of
- \tcode{duration}\iref{time.duration}, and
- \tcode{abs_time} denotes an object of an instantiation of
--\tcode{time_point}\iref{time.point}.
-+\link{\tcode{time_point}}{time.point}.
- \begin{note}
- The shared timed mutex types meet the \oldconcept{SharedTimedLockable}
- requirements\iref{thread.req.lockable.shared.timed}.
-@@ -7473,7 +7473,7 @@ namespace std {
+@@ -8205,7 +8205,7 @@ namespace std {
\pnum
An object of type \tcode{lock_guard} controls the ownership of a lockable object
within a scope. A \tcode{lock_guard} object maintains ownership of a lockable
-object throughout the \tcode{lock_guard} object's lifetime\iref{basic.life}.
+object throughout the \tcode{lock_guard} object's \deflink{lifetime}{basic.life}.
The behavior of a program is undefined if the lockable object referenced by
- \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard}
+ \exposid{pm} does not exist for the entire lifetime of the \tcode{lock_guard}
object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable}
-@@ -7546,7 +7546,7 @@ namespace std {
+@@ -8278,7 +8278,7 @@ namespace std {
\pnum
An object of type \tcode{scoped_lock} controls the ownership of lockable objects
within a scope. A \tcode{scoped_lock} object maintains ownership of lockable
-objects throughout the \tcode{scoped_lock} object's lifetime\iref{basic.life}.
+objects throughout the \tcode{scoped_lock} object's \deflink{lifetime}{basic.life}.
The behavior of a program is undefined if the lockable objects referenced by
- \tcode{pm} do not exist for the entire lifetime of the \tcode{scoped_lock}
+ \exposid{pm} do not exist for the entire lifetime of the \tcode{scoped_lock}
object.
-@@ -8703,7 +8703,7 @@ earlier returning execution.
+@@ -9435,7 +9435,7 @@ earlier returning execution.
\pnum
\sync
For any given \tcode{once_flag}: all active executions occur in a total
@@ -4325,7 +4069,7 @@ index 1b3e2577..8a388c9f 100644
the start of the next one in this total order; and the returning execution
synchronizes with the return from all passive executions.
-@@ -10669,22 +10669,21 @@ the state object.
+@@ -11410,22 +11410,21 @@ the state object.
\pnum
Calls to functions that successfully set the stored result of a shared
@@ -4352,7 +4096,7 @@ index 1b3e2577..8a388c9f 100644
\begin{note}
This explicitly specifies that the result of the shared state is
visible in the objects that reference this state in the sense of data race
-@@ -11020,8 +11019,8 @@ The class template \tcode{future} defines a type for asynchronous return objects
+@@ -11744,8 +11743,8 @@ The class template \tcode{future} defines a type for asynchronous return objects
do not share their shared state with other asynchronous return objects.
A default-constructed \tcode{future} object has no
shared state. A \tcode{future} object with shared state can be created by
@@ -4363,7 +4107,7 @@ index 1b3e2577..8a388c9f 100644
the original asynchronous provider. The result (value or exception) of
a \tcode{future} object
can be
-@@ -11331,7 +11330,7 @@ object has no shared state. A \tcode{shared_future} object with
+@@ -12055,7 +12054,7 @@ object has no shared state. A \tcode{shared_future} object with
shared state can
be created
by conversion from a \tcode{future} object and shares its shared state with the
@@ -4372,7 +4116,7 @@ index 1b3e2577..8a388c9f 100644
The result (value or exception) of a \tcode{shared_future} object
can be set by
calling a respective function on an
-@@ -11780,7 +11779,7 @@ block until the associated thread has completed, as if joined, or else time
+@@ -12504,7 +12503,7 @@ block until the associated thread has completed, as if joined, or else time
out\iref{thread.thread.member};
\item
the associated thread completion
@@ -4382,10 +4126,10 @@ index 1b3e2577..8a388c9f 100644
the first function
that successfully detects the ready status of the shared state or
diff --git a/source/time.tex b/source/time.tex
-index f547e5ef..6c988685 100644
+index a29b08ed..b4d55717 100644
--- a/source/time.tex
+++ b/source/time.tex
-@@ -1222,7 +1222,7 @@ unless it meets all of the following conditions:
+@@ -1216,7 +1216,7 @@ unless it meets all of the following conditions:
are valid and each denotes a type\iref{temp.deduct},
\item the expression
\tcode{T::is_steady}
@@ -4394,7 +4138,7 @@ index f547e5ef..6c988685 100644
\item the expression
\tcode{T::now()}
is well-formed when treated as an unevaluated operand.
-@@ -11084,7 +11084,7 @@ The expression
+@@ -11098,7 +11098,7 @@ The expression
\begin{codeblock}
from_stream(declval&>(), @$F$@, tp)
\end{codeblock}
@@ -4403,7 +4147,7 @@ index f547e5ef..6c988685 100644
\pnum
\returns
-@@ -11117,7 +11117,7 @@ The expression
+@@ -11131,7 +11131,7 @@ The expression
\begin{codeblock}
from_stream(declval&>(), @$F$@, tp, addressof(abbrev))
\end{codeblock}
@@ -4412,7 +4156,7 @@ index f547e5ef..6c988685 100644
\pnum
\returns
-@@ -11154,7 +11154,7 @@ from_stream(declval&>(),
+@@ -11168,7 +11168,7 @@ from_stream(declval&>(),
declval*>(),
&offset)
\end{codeblock}
@@ -4421,7 +4165,7 @@ index f547e5ef..6c988685 100644
\pnum
\returns
-@@ -11194,7 +11194,7 @@ The expression
+@@ -11208,7 +11208,7 @@ The expression
from_stream(declval&>(),
@$F$@, tp, addressof(abbrev), &offset)
\end{codeblock}
@@ -4431,10 +4175,10 @@ index f547e5ef..6c988685 100644
\pnum
\returns
diff --git a/source/utilities.tex b/source/utilities.tex
-index d3385267..d72eebe4 100644
+index 402dbea6..af0ec065 100644
--- a/source/utilities.tex
+++ b/source/utilities.tex
-@@ -104,15 +104,15 @@ namespace std {
+@@ -120,15 +120,15 @@ namespace std {
template
struct integer_sequence;
template
@@ -4451,9 +4195,9 @@ index d3385267..d72eebe4 100644
- using index_sequence_for = make_index_sequence;
+ using @\libglobal{index_sequence_for}@ = make_index_sequence;
- // \ref{pairs}, class template \tcode{pair}
- template
-@@ -333,7 +333,7 @@ of forwarding functions.
+ // \ref{intseq.binding}, structured binding support
+ template struct tuple_size;
+@@ -352,7 +352,7 @@ of forwarding functions.
\indextext{signal-safe!\idxcode{forward}}%
\indextext{signal-safe!\idxcode{move}}%
\indextext{signal-safe!\idxcode{move_if_noexcept}}%
@@ -4462,7 +4206,7 @@ index d3385267..d72eebe4 100644
\indexlibraryglobal{forward}%
\indextext{\idxcode{forward}}%
-@@ -508,7 +508,7 @@ template constexpr add_const_t& as_const(T& t) noexcept;
+@@ -527,7 +527,7 @@ template constexpr add_const_t& as_const(T& t) noexcept;
\pnum
The library provides the function template \tcode{declval} to simplify the definition of
@@ -4471,7 +4215,7 @@ index d3385267..d72eebe4 100644
\indexlibraryglobal{declval}%
\begin{itemdecl}
-@@ -1499,7 +1499,7 @@ inline constexpr piecewise_construct_t piecewise_construct{};
+@@ -1814,7 +1814,7 @@ inline constexpr piecewise_construct_t piecewise_construct{};
The \keyword{struct} \tcode{piecewise_construct_t} is an empty class type
used as a unique type to disambiguate constructor and function overloading. Specifically,
\tcode{pair} has a constructor with \tcode{piecewise_construct_t} as the
@@ -4480,7 +4224,7 @@ index d3385267..d72eebe4 100644
for piecewise construction of the elements of the \tcode{pair} object.
\rSec1[tuple]{Tuples}
-@@ -2144,7 +2144,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}.
+@@ -2464,7 +2464,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}.
\pnum
\effects
Equivalent to the preceding constructors except that each element is constructed with
@@ -4489,7 +4233,7 @@ index d3385267..d72eebe4 100644
\end{itemdescr}
\rSec3[tuple.assign]{Assignment}
-@@ -2810,7 +2810,7 @@ template struct tuple_size;
+@@ -3122,7 +3122,7 @@ template struct tuple_size;
\pnum
Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}.
If the expression \tcode{TS::value} is well-formed
@@ -4498,7 +4242,7 @@ index d3385267..d72eebe4 100644
each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts}
with a base characteristic of
\begin{codeblock}
-@@ -6354,6 +6354,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self);
+@@ -7356,6 +7356,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self);
\rSec2[variant.monostate]{Class \tcode{monostate}}%
\indexlibraryglobal{monostate}%
@@ -4506,7 +4250,7 @@ index d3385267..d72eebe4 100644
\begin{itemdecl}
struct monostate{};
\end{itemdecl}
-@@ -6522,7 +6523,8 @@ namespace std {
+@@ -7527,7 +7528,8 @@ namespace std {
\end{codeblock}
\pnum
@@ -4520,73 +4264,20 @@ index d3385267..d72eebe4 100644
2.43.0
-From 6a179860206436f600f5af84ec4b9005e34e09eb Mon Sep 17 00:00:00 2001
-From: Eelis van der Weegen
-Date: Tue, 1 Aug 2017 14:38:23 +0200
-Subject: [PATCH 3/9] Fix dubious \defnx that has see{} in it, and remove range
- index entry with the same key.
-
----
- source/iostreams.tex | 2 +-
- source/templates.tex | 4 ++--
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/source/iostreams.tex b/source/iostreams.tex
-index f89a4754..ee7b1fc6 100644
---- a/source/iostreams.tex
-+++ b/source/iostreams.tex
-@@ -13911,7 +13911,7 @@ without an intervening \grammarterm{root-directory} element.
-
- \pnum
- \indextext{path!normalization|(}%
--\defnx{Normalization}{normalization!path|see{path, normalization}} of a generic format pathname means:
-+\defnx{Normalization}{normalization!path} of a generic format pathname means:
-
- \begin{enumerate}
- \item If the path is empty, stop.
-diff --git a/source/templates.tex b/source/templates.tex
-index 00d8fae6..cb2c8a8e 100644
---- a/source/templates.tex
-+++ b/source/templates.tex
-@@ -2042,7 +2042,6 @@ so it does match \#2.
- \end{example}
-
- \rSec2[temp.constr.normal]{Constraint normalization}
--\indextext{constraint!normalization|(}%
-
- \pnum
- The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is
-@@ -2161,10 +2160,11 @@ whose parameter mapping is the identity mapping.
- \end{itemize}
-
- \pnum
-+\indextext{normalization|see{constraint, normalization}}%
- The process of obtaining the normal form of a
- \grammarterm{constraint-expression}
- is called
--\defnx{normalization}{normalization!constraint|see{constraint, normalization}}.
-+\defnx{normalization}{constraint!normalization}.
- \begin{note}
- Normalization of \grammarterm{constraint-expression}{s}
- is performed
---
-2.43.0
-
-
-From 7fdc0e78d979cade12db47da3ae52290fbc3f8a2 Mon Sep 17 00:00:00 2001
+From 41e5a2d3fa6d05b949f0ca91e997d6a792e762e1 Mon Sep 17 00:00:00 2001
From: Eelis van der Weegen
Date: Sun, 11 Nov 2018 02:48:33 +0100
-Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and
+Subject: [PATCH 3/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and
literal fragments.
---
source/exceptions.tex | 4 +-
- source/lex.tex | 176 +++++++-------
+ source/lex.tex | 180 +++++++--------
source/time.tex | 518 +++++++++++++++++++++---------------------
- 3 files changed, 349 insertions(+), 349 deletions(-)
+ 3 files changed, 351 insertions(+), 351 deletions(-)
diff --git a/source/exceptions.tex b/source/exceptions.tex
-index 12cfcb8d..190e0ac6 100644
+index abd4aef1..ea065465 100644
--- a/source/exceptions.tex
+++ b/source/exceptions.tex
@@ -135,11 +135,11 @@ does not declare a variable.
@@ -4604,10 +4295,10 @@ index 12cfcb8d..190e0ac6 100644
\pnum
diff --git a/source/lex.tex b/source/lex.tex
-index aa909af0..fbd79538 100644
+index 5baaf9a1..2e1da4ca 100644
--- a/source/lex.tex
+++ b/source/lex.tex
-@@ -293,43 +293,43 @@ the numerical value has no other meaning in this context.
+@@ -336,43 +336,43 @@ the numerical value has no other meaning in this context.
\ucode{000c} & \uname{form feed} & \\
\ucode{0020} & \uname{space} & \\
\ucode{000a} & \uname{line feed} & new-line \\
@@ -4688,7 +4379,7 @@ index aa909af0..fbd79538 100644
\end{floattable}
\pnum
-@@ -569,7 +569,7 @@ given character:
+@@ -612,7 +612,7 @@ given character:
\item
\indextext{literal!string!raw}%
If the next character begins a sequence of characters that could be the prefix
@@ -4697,7 +4388,7 @@ index aa909af0..fbd79538 100644
token shall be a raw string literal. Between the initial and final
double quote characters of the raw string, any transformations performed in phase
2 (line splicing) are reverted; this reversion
-@@ -577,7 +577,7 @@ shall apply before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting
+@@ -620,7 +620,7 @@ is applied before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting
parenthesis is identified. The raw string literal is defined as the shortest sequence
of characters that matches the raw-string pattern
\begin{ncbnf}
@@ -4706,7 +4397,7 @@ index aa909af0..fbd79538 100644
\end{ncbnf}
\item Otherwise, if the next three characters are \tcode{<::} and the subsequent character
-@@ -695,15 +695,15 @@ depending on the implementation.
+@@ -755,15 +755,15 @@ depending on the implementation.
\begin{bnf}
\nontermdef{pp-number}\br
digit\br
@@ -4730,7 +4421,7 @@ index aa909af0..fbd79538 100644
\end{bnf}
\pnum
-@@ -1130,19 +1130,19 @@ a literal has a type and a value category\iref{expr.prim.literal}.
+@@ -1189,19 +1189,19 @@ a literal has a type and a value category\iref{expr.prim.literal}.
\nontermdef{binary-literal}\br
\terminal{0b} binary-digit\br
\terminal{0B} binary-digit\br
@@ -4753,7 +4444,7 @@ index aa909af0..fbd79538 100644
\end{bnf}
\begin{bnf}
-@@ -1173,14 +1173,14 @@ a literal has a type and a value category\iref{expr.prim.literal}.
+@@ -1232,14 +1232,14 @@ a literal has a type and a value category\iref{expr.prim.literal}.
\begin{bnf}
\nontermdef{hexadecimal-digit-sequence}\br
hexadecimal-digit\br
@@ -4772,7 +4463,7 @@ index aa909af0..fbd79538 100644
\end{bnf}
\begin{bnf}
-@@ -1195,17 +1195,17 @@ a literal has a type and a value category\iref{expr.prim.literal}.
+@@ -1254,17 +1254,17 @@ a literal has a type and a value category\iref{expr.prim.literal}.
\begin{bnf}
\nontermdef{unsigned-suffix} \textnormal{one of}\br
@@ -4793,7 +4484,7 @@ index aa909af0..fbd79538 100644
\end{bnf}
\begin{bnf}
-@@ -1244,7 +1244,7 @@ when determining the value.
+@@ -1303,7 +1303,7 @@ when determining the value.
\pnum
The \grammarterm{hexadecimal-digit}s
@@ -4802,7 +4493,7 @@ index aa909af0..fbd79538 100644
have decimal values ten through fifteen.
\begin{example}
The number twelve can be written \tcode{12}, \tcode{014},
-@@ -1288,7 +1288,7 @@ none &
+@@ -1347,7 +1347,7 @@ none &
&
&
\tcode{unsigned long long int}\\\hline
@@ -4811,7 +4502,7 @@ index aa909af0..fbd79538 100644
\tcode{unsigned int} &
\tcode{unsigned int}\\
&
-@@ -1297,7 +1297,7 @@ none &
+@@ -1356,7 +1356,7 @@ none &
&
\tcode{unsigned long long int} &
\tcode{unsigned long long int}\\\hline
@@ -4820,7 +4511,7 @@ index aa909af0..fbd79538 100644
\tcode{long int} &
\tcode{long int}\\
&
-@@ -1309,22 +1309,22 @@ none &
+@@ -1368,22 +1368,22 @@ none &
&
&
\tcode{unsigned long long int}\\\hline
@@ -4848,7 +4539,7 @@ index aa909af0..fbd79538 100644
&
\\\hline
\tcode{z} or \tcode{Z} &
-@@ -1372,12 +1372,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}.
+@@ -1431,12 +1431,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}.
\indextext{literal!character}%
\begin{bnf}
\nontermdef{character-literal}\br
@@ -4863,7 +4554,22 @@ index aa909af0..fbd79538 100644
\end{bnf}
\begin{bnf}
-@@ -1428,16 +1428,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}.
+@@ -1466,12 +1466,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}.
+
+ \begin{bnf}
+ \nontermdef{simple-escape-sequence}\br
+- \terminal{\textbackslash} simple-escape-sequence-char
++ \literalterminal{\textbackslash} simple-escape-sequence-char
+ \end{bnf}
+
+ \begin{bnf}
+ \nontermdef{simple-escape-sequence-char} \textnormal{one of}\br
+- \terminal{' " ? \textbackslash{} a b f n r t v}
++ \literalterminal{' " ? \textbackslash{} a b f n r t v}
+ \end{bnf}
+
+ \begin{bnf}
+@@ -1487,21 +1487,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}.
\begin{bnf}
\nontermdef{octal-escape-sequence}\br
@@ -4886,7 +4592,13 @@ index aa909af0..fbd79538 100644
\end{bnf}
\begin{bnf}
-@@ -1625,42 +1625,42 @@ is supported for compatibility with \CppXIV{} and C.
+ \nontermdef{conditional-escape-sequence}\br
+- \terminal{\textbackslash} conditional-escape-sequence-char
++ \literalterminal{\textbackslash} conditional-escape-sequence-char
+ \end{bnf}
+
+ \begin{bnf}
+@@ -1684,42 +1684,42 @@ is supported for compatibility with \CppXIV{} and C.
\begin{bnf}
\nontermdef{fractional-constant}\br
@@ -4940,18 +4652,16 @@ index aa909af0..fbd79538 100644
\end{bnf}
\pnum
-@@ -1745,8 +1745,8 @@ chosen in an \impldef{choice of larger or smaller value of
- \indextext{literal!string}%
+@@ -1814,7 +1814,7 @@ std::float32_t z = 1e1000000000f32; // either greatest finite value or positive
\begin{bnf}
\nontermdef{string-literal}\br
-- \opt{encoding-prefix} \terminal{"} \opt{s-char-sequence} \terminal{"}\br
+ \opt{encoding-prefix} plain-string-literal\br
- \opt{encoding-prefix} \terminal{R} raw-string
-+ \opt{encoding-prefix} \literalterminal{"} \opt{s-char-sequence} \literalterminal{"}\br
+ \opt{encoding-prefix} \literalterminal{R} raw-string
\end{bnf}
\begin{bnf}
-@@ -1769,7 +1769,7 @@ chosen in an \impldef{choice of larger or smaller value of
+@@ -1842,7 +1842,7 @@ std::float32_t z = 1e1000000000f32; // either greatest finite value or positive
\begin{bnf}
\nontermdef{raw-string}\br
@@ -4960,7 +4670,7 @@ index aa909af0..fbd79538 100644
\end{bnf}
\begin{bnf}
-@@ -1856,7 +1856,7 @@ UTF-32 &
+@@ -1928,7 +1928,7 @@ UTF-32 &
\pnum
\indextext{literal!string!raw}%
@@ -4970,10 +4680,10 @@ index aa909af0..fbd79538 100644
in the prefix is a \defn{raw string literal}. The
\grammarterm{d-char-sequence} serves as a delimiter. The terminating
diff --git a/source/time.tex b/source/time.tex
-index 6c988685..bdbef27b 100644
+index b4d55717..62226224 100644
--- a/source/time.tex
+++ b/source/time.tex
-@@ -2200,7 +2200,7 @@ If the parse fails to decode a valid duration,
+@@ -2201,7 +2201,7 @@ If the parse fails to decode a valid duration,
\tcode{is.setstate(ios_base::failbit)} is called and \tcode{d} is not modified.
If \tcode{\%Z} is used and successfully parsed,
that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null.
@@ -4982,7 +4692,7 @@ index 6c988685..bdbef27b 100644
that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null.
\pnum
-@@ -2792,9 +2792,9 @@ as specified in \ref{time.parse}.
+@@ -2793,9 +2793,9 @@ as specified in \ref{time.parse}.
If the parse fails to decode a valid date,
\tcode{is.setstate(ios_base::failbit)} is called and
\tcode{tp} is not modified.
@@ -4994,7 +4704,7 @@ index 6c988685..bdbef27b 100644
that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null.
Additionally, the parsed offset will be subtracted
from the successfully parsed timestamp
-@@ -2985,9 +2985,9 @@ as specified in \ref{time.parse}.
+@@ -2986,9 +2986,9 @@ as specified in \ref{time.parse}.
If the parse fails to decode a valid date,
\tcode{is.setstate(ios_base::failbit)} is called and
\tcode{tp} is not modified.
@@ -5006,7 +4716,7 @@ index 6c988685..bdbef27b 100644
that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null.
Additionally, the parsed offset will be subtracted from
the successfully parsed timestamp
-@@ -3184,9 +3184,9 @@ as specified in \ref{time.parse}.
+@@ -3185,9 +3185,9 @@ as specified in \ref{time.parse}.
If the parse fails to decode a valid date,
\tcode{is.setstate(ios_base::failbit)} is called and
\tcode{tp} is not modified.
@@ -5018,7 +4728,7 @@ index 6c988685..bdbef27b 100644
that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null.
Additionally, the parsed offset will be subtracted from
the successfully parsed timestamp prior to assigning that difference to \tcode{tp}.
-@@ -3347,9 +3347,9 @@ as specified in \ref{time.parse}.
+@@ -3348,9 +3348,9 @@ as specified in \ref{time.parse}.
If the parse fails to decode a valid date,
\tcode{is.setstate(ios_base::failbit)} is called and
\tcode{tp} is not modified.
@@ -5030,7 +4740,7 @@ index 6c988685..bdbef27b 100644
that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null.
Additionally, the parsed offset will be subtracted from
the successfully parsed timestamp prior to assigning that difference to \tcode{tp}.
-@@ -3454,9 +3454,9 @@ as specified in \ref{time.parse}.
+@@ -3455,9 +3455,9 @@ as specified in \ref{time.parse}.
If the parse fails to decode a valid date,
\tcode{is.setstate(ios_base::failbit)} is called and
\tcode{tp} is not modified.
@@ -5042,7 +4752,7 @@ index 6c988685..bdbef27b 100644
that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null.
Additionally, the parsed offset will be subtracted from
the successfully parsed timestamp prior to assigning that difference to \tcode{tp}.
-@@ -3565,9 +3565,9 @@ as specified in \ref{time.parse}.
+@@ -3570,9 +3570,9 @@ as specified in \ref{time.parse}.
If the parse fails to decode a valid date,
\tcode{is.setstate(ios_base::failbit)} is called and
\tcode{tp} is not modified.
@@ -5054,7 +4764,7 @@ index 6c988685..bdbef27b 100644
that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null.
\pnum
-@@ -4218,9 +4218,9 @@ as specified in \ref{time.parse}.
+@@ -4223,9 +4223,9 @@ as specified in \ref{time.parse}.
If the parse fails to decode a valid day,
\tcode{is.setstate(ios_base::failbit)} is called and
\tcode{d} is not modified.
@@ -5066,7 +4776,7 @@ index 6c988685..bdbef27b 100644
that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null.
\pnum
-@@ -4532,9 +4532,9 @@ as specified in \ref{time.parse}.
+@@ -4537,9 +4537,9 @@ as specified in \ref{time.parse}.
If the parse fails to decode a valid month,
\tcode{is.setstate(ios_base::failbit)} is called and
\tcode{m} is not modified.
@@ -5078,7 +4788,7 @@ index 6c988685..bdbef27b 100644
that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null.
\pnum
-@@ -4876,9 +4876,9 @@ as specified in \ref{time.parse}.
+@@ -4881,9 +4881,9 @@ as specified in \ref{time.parse}.
If the parse fails to decode a valid year,
\tcode{is.setstate(ios_base::failbit)} is called and
\tcode{y} is not modified.
@@ -5090,7 +4800,7 @@ index 6c988685..bdbef27b 100644
that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null.
\pnum
-@@ -5259,9 +5259,9 @@ as specified in \ref{time.parse}.
+@@ -5264,9 +5264,9 @@ as specified in \ref{time.parse}.
If the parse fails to decode a valid weekday,
\tcode{is.setstate(ios_base::failbit)} is called and
\tcode{wd} is not modified.
@@ -5102,7 +4812,7 @@ index 6c988685..bdbef27b 100644
that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null.
\pnum
-@@ -5642,9 +5642,9 @@ as specified in \ref{time.parse}.
+@@ -5647,9 +5647,9 @@ as specified in \ref{time.parse}.
If the parse fails to decode a valid \tcode{month_day},
\tcode{is.setstate(ios_base::failbit)} is called and
\tcode{md} is not modified.
@@ -5114,7 +4824,7 @@ index 6c988685..bdbef27b 100644
that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null.
\pnum
-@@ -6322,9 +6322,9 @@ as specified in \ref{time.parse}.
+@@ -6327,9 +6327,9 @@ as specified in \ref{time.parse}.
If the parse fails to decode a valid \tcode{year_month},
\tcode{is.setstate(ios_base::failbit)} is called and
\tcode{ym} is not modified.
@@ -5126,7 +4836,7 @@ index 6c988685..bdbef27b 100644
that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null.
\pnum
-@@ -6786,9 +6786,9 @@ as specified in \ref{time.parse}.
+@@ -6791,9 +6791,9 @@ as specified in \ref{time.parse}.
If the parse fails to decode a valid \tcode{year_month_day},
\tcode{is.setstate(ios_base::failbit)} is called and
\tcode{ymd} is not modified.
@@ -5138,7 +4848,7 @@ index 6c988685..bdbef27b 100644
that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null.
\pnum
-@@ -10478,23 +10478,23 @@ according to the following syntax:
+@@ -10486,23 +10486,23 @@ according to the following syntax:
\begin{ncbnf}
\fmtnontermdef{literal-char}\br
@@ -5167,7 +4877,7 @@ index 6c988685..bdbef27b 100644
\end{ncbnf}
The productions
-@@ -10567,11 +10567,11 @@ the result of formatting a chrono type
+@@ -10575,11 +10575,11 @@ the result of formatting a chrono type
does not contain time zone abbreviation
and time zone offset information.
If the information is available,
@@ -5181,7 +4891,7 @@ index 6c988685..bdbef27b 100644
conversion specifier appears in
the \fmtgrammarterm{chrono-format-spec},
an exception of type \tcode{format_error} is thrown,
-@@ -10587,7 +10587,7 @@ A \tcode{duration} does not contain enough information
+@@ -10595,7 +10595,7 @@ A \tcode{duration} does not contain enough information
to format as a \tcode{weekday}.
\end{example}
However, if a flag refers to a ``time of day''
@@ -5190,7 +4900,7 @@ index 6c988685..bdbef27b 100644
then a specialization of \tcode{duration} is interpreted as
the time of day elapsed since midnight.
-@@ -10599,57 +10599,57 @@ the time of day elapsed since midnight.
+@@ -10607,57 +10607,57 @@ the time of day elapsed since midnight.
\hline
\lhdr{Specifier} & \rhdr{Replacement} \\ \capsep
\endhead
@@ -5266,7 +4976,7 @@ index 6c988685..bdbef27b 100644
\\ \rowsep
\tcode{\%g} &
The last two decimal digits of the calendar year
-@@ -10660,158 +10660,158 @@ If the result is a single digit it is prefixed by \tcode{0}.
+@@ -10668,164 +10668,164 @@ If the result is a single digit it is prefixed by \tcode{0}.
The calendar year as a decimal number,
as specified in ISO 8601-1:2019 for the week calendar.
If the result is less than four digits
@@ -5450,7 +5160,8 @@ index 6c988685..bdbef27b 100644
\\ \rowsep
-\tcode{\%y} &
+\noncxxtcode{\%y} &
- The last two decimal digits of the year.
+ The last two decimal digits of the year,
+ regardless of the sign of the year.
-If the result is a single digit, it is prefixed by \tcode{0}.
-The modified command \tcode{\%Oy} produces the locale's alternative representation.
-The modified command \tcode{\%Ey} produces the locale's alternative representation
@@ -5459,6 +5170,11 @@ index 6c988685..bdbef27b 100644
+The modified command \noncxxtcode{\%Oy} produces the locale's alternative representation.
+The modified command \noncxxtcode{\%Ey} produces the locale's alternative representation
+of offset from \noncxxtcode{\%EC} (year only).
+ \begin{tailexample}
+ \begin{codeblock}
+ cout << format("{:%C %y}", -1976y); // prints \tcode{-20 76}
+ \end{codeblock}
+ \end{tailexample}
\\ \rowsep
-\tcode{\%Y} &
+\noncxxtcode{\%Y} &
@@ -5496,7 +5212,7 @@ index 6c988685..bdbef27b 100644
\\
\end{LongTable}
-@@ -10859,9 +10859,9 @@ template
+@@ -10873,9 +10873,9 @@ template
\begin{itemdescr}
\pnum
\remarks
@@ -5508,7 +5224,7 @@ index 6c988685..bdbef27b 100644
an offset of \tcode{0min} is formatted.
\end{itemdescr}
-@@ -10874,9 +10874,9 @@ template
+@@ -10888,9 +10888,9 @@ template
\begin{itemdescr}
\pnum
\remarks
@@ -5520,7 +5236,7 @@ index 6c988685..bdbef27b 100644
an offset of \tcode{0min} is formatted.
If the argument represents a time during a positive leap second insertion,
and if a seconds field is formatted,
-@@ -10893,9 +10893,9 @@ template
+@@ -10907,9 +10907,9 @@ template
\begin{itemdescr}
\pnum
\remarks
@@ -5532,7 +5248,7 @@ index 6c988685..bdbef27b 100644
an offset of \tcode{0min} is formatted.
The date and time formatted are equivalent to
those formatted by a \tcode{sys_time} initialized with
-@@ -10914,9 +10914,9 @@ template
+@@ -10928,9 +10928,9 @@ template
\begin{itemdescr}
\pnum
\remarks
@@ -5544,7 +5260,7 @@ index 6c988685..bdbef27b 100644
an offset of \tcode{0min} is formatted.
The date and time formatted are equivalent to
those formatted by a \tcode{sys_time} initialized with
-@@ -10935,9 +10935,9 @@ template
+@@ -10949,9 +10949,9 @@ template
\begin{itemdescr}
\pnum
\remarks
@@ -5556,7 +5272,7 @@ index 6c988685..bdbef27b 100644
an offset of \tcode{0min} is formatted.
The date and time formatted are equivalent to
those formatted
-@@ -10955,7 +10955,7 @@ template
+@@ -10969,7 +10969,7 @@ template
\begin{itemdescr}
\pnum
\remarks
@@ -5565,7 +5281,7 @@ index 6c988685..bdbef27b 100644
an exception of type \tcode{format_error} is thrown.
\end{itemdescr}
-@@ -10996,18 +10996,18 @@ passed to \tcode{formatter::format}.
+@@ -11010,18 +11010,18 @@ passed to \tcode{formatter::format}.
\pnum
\remarks
If the \fmtgrammarterm{chrono-specs} is omitted,
@@ -5589,7 +5305,7 @@ index 6c988685..bdbef27b 100644
and \tcode{f.offset_sec} is a null pointer value,
then an exception of type \tcode{format_error} is thrown.
\end{itemdescr}
-@@ -11211,8 +11211,8 @@ except that they have an unspecified effect
+@@ -11225,8 +11225,8 @@ except that they have an unspecified effect
on the value returned by subsequent calls to \tcode{basic_istream<>::gcount()}.
Each overload takes a format string containing ordinary characters
and flags which have special meaning.
@@ -5600,7 +5316,7 @@ index 6c988685..bdbef27b 100644
During parsing each flag interprets characters as parts of date and time types
according to~\tref{time.parse.spec}.
Some flags can be modified by a width parameter
-@@ -11230,7 +11230,7 @@ the information that the format flag refers to,
+@@ -11244,7 +11244,7 @@ the information that the format flag refers to,
A \tcode{duration} cannot represent a \tcode{weekday}.
\end{example}
However, if a flag refers to a ``time of day''
@@ -5609,7 +5325,7 @@ index 6c988685..bdbef27b 100644
then a specialization of \tcode{duration} is parsed as
the time of day elapsed since midnight.
-@@ -11250,251 +11250,251 @@ is called on the \tcode{basic_istream}.
+@@ -11264,229 +11264,229 @@ is called on the \tcode{basic_istream}.
\hline
\lhdr{Flag} & \rhdr{Parsed value} \\ \capsep
\endhead
@@ -5919,7 +5635,8 @@ index 6c988685..bdbef27b 100644
\\ \rowsep
-\tcode{\%y} &
+\noncxxtcode{\%y} &
- The last two decimal digits of the year.
+ The last two decimal digits of the year,
+ regardless of the sign of the year.
If the century is not otherwise specified
-(e.g., with \tcode{\%C}),
+(e.g., with \noncxxtcode{\%C}),
@@ -5936,6 +5653,11 @@ index 6c988685..bdbef27b 100644
-The modified commands \tcode{\%Ey} and \tcode{\%Oy} interpret
+The modified commands \noncxxtcode{\%Ey} and \noncxxtcode{\%Oy} interpret
the locale's alternative representation.
+ \begin{tailexample}
+ \begin{codeblock}
+@@ -11495,27 +11495,27 @@ istringstream{"-20 76"} >> parse("%3C %y", y); // \tcode{y == -1976y} is \tcode
+ \end{codeblock}
+ \end{tailexample}
\\ \rowsep
-\tcode{\%Y} &
+\noncxxtcode{\%Y} &
@@ -5975,7 +5697,7 @@ index 6c988685..bdbef27b 100644
The time zone abbreviation or name.
A single word is parsed.
This word can only contain characters
-@@ -11502,8 +11502,8 @@ from the basic character set\iref{lex.charset}
+@@ -11523,8 +11523,8 @@ from the basic character set\iref{lex.charset}
that are alphanumeric, or one of
\tcode{'_'}, \tcode{'/'}, \tcode{'-'}, or \tcode{'+'}.
\\ \rowsep
@@ -5990,10 +5712,10 @@ index 6c988685..bdbef27b 100644
2.43.0
-From fd2502ad8ac71c2486a37945c222a60c4a2d6333 Mon Sep 17 00:00:00 2001
+From 53d23fcadc9df8c3555b3e41d6dcfcd5f9ef2057 Mon Sep 17 00:00:00 2001
From: Eelis van der Weegen
Date: Sun, 31 May 2020 23:23:45 +0200
-Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks.
+Subject: [PATCH 4/9] Remove more inappropriate paragraph breaks.
---
source/algorithms.tex | 4 ----
@@ -6001,14 +5723,13 @@ Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks.
source/classes.tex | 8 --------
source/compatibility.tex | 5 -----
source/concepts.tex | 16 ----------------
- source/containers.tex | 15 ---------------
+ source/containers.tex | 11 -----------
source/declarations.tex | 14 --------------
- source/exceptions.tex | 5 -----
- source/expressions.tex | 26 --------------------------
+ source/exceptions.tex | 3 ---
+ source/expressions.tex | 24 ------------------------
source/future.tex | 8 --------
source/iostreams.tex | 15 ---------------
source/iterators.tex | 8 --------
- source/lex.tex | 1 -
source/lib-intro.tex | 17 -----------------
source/limits.tex | 1 -
source/memory.tex | 2 --
@@ -6017,19 +5738,19 @@ Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks.
source/overloading.tex | 11 -----------
source/preprocessor.tex | 10 ----------
source/ranges.tex | 13 -------------
- source/statements.tex | 3 ---
+ source/statements.tex | 1 -
source/support.tex | 4 ----
source/templates.tex | 36 ------------------------------------
source/threads.tex | 17 -----------------
source/time.tex | 19 -------------------
source/utilities.tex | 7 -------
- 27 files changed, 278 deletions(-)
+ 26 files changed, 267 deletions(-)
diff --git a/source/algorithms.tex b/source/algorithms.tex
-index 84d18c8b..71678537 100644
+index cd4ba8fb..6eaef6b7 100644
--- a/source/algorithms.tex
+++ b/source/algorithms.tex
-@@ -6833,7 +6833,6 @@ but stronger than those for a partial ordering.
+@@ -8698,7 +8698,6 @@ but stronger than those for a partial ordering.
If we define \tcode{equiv(a, b)} as \tcode{!comp(a, b) \&\& !comp(b, a)},
then the requirements are that \tcode{comp} and \tcode{equiv}
both be transitive relations:
@@ -6037,15 +5758,15 @@ index 84d18c8b..71678537 100644
\begin{itemize}
\item \tcode{comp(a, b) \&\& comp(b, c)} implies \tcode{comp(a, c)}
\item \tcode{equiv(a, b) \&\& equiv(b, c)} implies \tcode{equiv(a, c)}
-@@ -7756,7 +7755,6 @@ Let $N = \tcode{last - first}$:
- For the overload with an \tcode{ExecutionPolicy},
+@@ -9750,7 +9749,6 @@ Let $N = \tcode{last - first}$:
+ For the parallel algorithm overloads,
\bigoh{N \log N} swaps and \bigoh{N} applications of the predicate.
\end{itemize}
-
\end{itemdescr}
\indexlibraryglobal{stable_partition}%
-@@ -8598,7 +8596,6 @@ A random access range \range{a}{b} is a
+@@ -10909,7 +10907,6 @@ A random access range \range{a}{b} is a
{heap with respect to comp and proj@heap with respect to \tcode{comp} and \tcode{proj}}
for a comparator and projection \tcode{comp} and \tcode{proj}
if its elements are organized such that:
@@ -6053,7 +5774,7 @@ index 84d18c8b..71678537 100644
\begin{itemize}
\item
With \tcode{$N$ = b - a}, for all $i$, $0 < i < N$,
-@@ -11175,7 +11172,6 @@ template
+@@ -13573,7 +13570,6 @@ template
\pnum
Some algorithms in this subclause are constrained with the following
exposition-only concepts:
@@ -6062,18 +5783,18 @@ index 84d18c8b..71678537 100644
template
concept @\defexposconcept{nothrow-input-iterator}@ = // \expos
diff --git a/source/basic.tex b/source/basic.tex
-index ed278134..728170cc 100644
+index eab80b45..db5f28a2 100644
--- a/source/basic.tex
+++ b/source/basic.tex
-@@ -267,7 +267,6 @@ enum { up, down }; // defines \tcode{up} and \tcode{down}
+@@ -312,7 +312,6 @@ int X::y = 1; // defines \tcode{X::y}
+ enum { up, down }; // defines \tcode{up} and \tcode{down}
namespace N { int d; } // defines \tcode{N} and \tcode{N::d}
- namespace N1 = N; // defines \tcode{N1}
X anX; // defines \tcode{anX}
-
\end{codeblock}
whereas these are just declarations:
\begin{codeblock}
-@@ -776,7 +775,6 @@ is subject to the requirements described in this paragraph (recursively).
+@@ -850,7 +849,6 @@ compute equivalent values\iref{expr.eq}.
\pnum
For the purposes of the preceding requirements:
@@ -6081,7 +5802,7 @@ index ed278134..728170cc 100644
\begin{itemize}
\item If \tcode{D} is a class with an implicitly-declared
constructor\iref{class.default.ctor,class.copy.ctor},
-@@ -5814,7 +5812,6 @@ has the top-level cv-qualifier \keyword{volatile}.
+@@ -6267,7 +6265,6 @@ has the top-level cv-qualifier \keyword{volatile}.
\pnum
Every integer type has an \term{integer conversion rank} defined as follows:
@@ -6090,10 +5811,10 @@ index ed278134..728170cc 100644
\item No two signed integer types other than \keyword{char} and \tcode{\keyword{signed}
\keyword{char}} (if \keyword{char} is signed) have the same rank, even if they have
diff --git a/source/classes.tex b/source/classes.tex
-index 170c2eb3..dc2b7d0f 100644
+index 8c2f3c53..fd067ac2 100644
--- a/source/classes.tex
+++ b/source/classes.tex
-@@ -1663,7 +1663,6 @@ for each non-static data member of
+@@ -1640,7 +1640,6 @@ for each non-static data member of
that is of class type (or array thereof),
the constructor selected to copy/move that member is trivial;
\end{itemize}
@@ -6101,7 +5822,7 @@ index 170c2eb3..dc2b7d0f 100644
\indextext{constructor!move!non-trivial}%
otherwise the copy/move constructor is
\defnx{non-trivial}{constructor!copy!nontrivial}.
-@@ -3285,7 +3284,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat
+@@ -3263,7 +3262,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat
destructor and \tcode{N} has a non-trivial constructor (for instance, if they declare or inherit
virtual functions), the active member of \tcode{u} can be safely switched from \tcode{m} to
\tcode{n} using the destructor and placement \grammarterm{new-expression} as follows:
@@ -6109,7 +5830,7 @@ index 170c2eb3..dc2b7d0f 100644
\begin{codeblock}
u.m.~M();
new (&u.n) N;
-@@ -3463,7 +3461,6 @@ A local class cannot have static data members\iref{class.static.data}.
+@@ -3445,7 +3443,6 @@ A local class cannot have static data members\iref{class.static.data}.
\indextext{multiple inheritance}%
A list of base classes can be specified in a class definition using
the notation:
@@ -6117,7 +5838,7 @@ index 170c2eb3..dc2b7d0f 100644
\begin{bnf}
\nontermdef{base-clause}\br
\terminal{:} base-specifier-list
-@@ -5422,7 +5419,6 @@ initializers for direct and virtual base class subobjects and
+@@ -5424,7 +5421,6 @@ initializers for direct and virtual base class subobjects and
non-static data members can be specified by a
\grammarterm{ctor-initializer},
which has the form
@@ -6125,7 +5846,7 @@ index 170c2eb3..dc2b7d0f 100644
\begin{bnf}
\nontermdef{ctor-initializer}\br
\terminal{:} mem-initializer-list
-@@ -5893,7 +5889,6 @@ public:
+@@ -5895,7 +5891,6 @@ public:
X(const Mixins&... mixins) : Mixins(mixins)... { }
};
\end{codeblock}
@@ -6133,7 +5854,7 @@ index 170c2eb3..dc2b7d0f 100644
\end{example}
\rSec2[class.inhctor.init]{Initialization by inherited constructor}%
-@@ -6549,7 +6544,6 @@ any non-static data member of \tcode{C} is of reference type or
+@@ -6551,7 +6546,6 @@ any non-static data member of \tcode{C} is of reference type or
A binary operator expression \tcode{a @ b} is
\defnx{usable}{usable!binary operator expression}
if either
@@ -6141,7 +5862,7 @@ index 170c2eb3..dc2b7d0f 100644
\begin{itemize}
\item
\tcode{a} or \tcode{b} is of class or enumeration type and
-@@ -6670,7 +6664,6 @@ The \defnadj{synthesized}{three-way comparison}
+@@ -6672,7 +6666,6 @@ The \defnadj{synthesized}{three-way comparison}
of type \tcode{R}\iref{cmp.categories}
of glvalues \tcode{a} and \tcode{b} of the same type
is defined as follows:
@@ -6149,7 +5870,7 @@ index 170c2eb3..dc2b7d0f 100644
\begin{itemize}
\item
If \tcode{a <=> b} is usable\iref{class.compare.default} and
-@@ -6770,7 +6763,6 @@ The \defn{common comparison type} \tcode{U}
+@@ -6772,7 +6765,6 @@ The \defn{common comparison type} \tcode{U}
of a possibly-empty list of $n$ comparison category types
$\tcode{T}_0$, $\tcode{T}_1$, $\dotsc$, $\tcode{T}_{n-1}$
is defined as follows:
@@ -6158,10 +5879,10 @@ index 170c2eb3..dc2b7d0f 100644
\item
If at least one $\tcode{T}_i$ is \tcode{std::partial_ordering},
diff --git a/source/compatibility.tex b/source/compatibility.tex
-index 3a4119ed..543204a0 100644
+index cdca4c22..74cce624 100644
--- a/source/compatibility.tex
+++ b/source/compatibility.tex
-@@ -2552,7 +2552,6 @@ Overspecification.
+@@ -2583,7 +2583,6 @@ Overspecification.
\effect
The signatures of the following member functions changed from taking an
\tcode{iterator} to taking a \tcode{const_iterator}:
@@ -6169,7 +5890,7 @@ index 3a4119ed..543204a0 100644
\begin{itemize}
\item \tcode{insert(iter, val)} for \tcode{vector}, \tcode{deque}, \tcode{list},
\tcode{set}, \tcode{multiset}, \tcode{map}, \tcode{multimap}
-@@ -2624,7 +2623,6 @@ Clarify intentions, avoid workarounds.
+@@ -2655,7 +2654,6 @@ Clarify intentions, avoid workarounds.
Valid \CppIII{} code that relies on implicit boolean conversions will fail to
compile with this revision of \Cpp{}. Such conversions occur in the
following conditions:
@@ -6177,7 +5898,7 @@ index 3a4119ed..543204a0 100644
\begin{itemize}
\item passing a value to a function that takes an argument of type \tcode{bool};
\item using \tcode{operator==} to compare to \tcode{false} or \tcode{true};
-@@ -3727,7 +3725,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in
+@@ -3773,7 +3771,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in
\pnum
Header \libheaderref{cstring}:
The following functions have different declarations:
@@ -6185,7 +5906,7 @@ index 3a4119ed..543204a0 100644
\begin{itemize}
\item \tcode{strchr}
\item \tcode{strpbrk}
-@@ -3741,7 +3738,6 @@ Subclause \ref{cstring.syn} describes the changes.
+@@ -3787,7 +3784,6 @@ Subclause \ref{cstring.syn} describes the changes.
\pnum
Header \libheaderref{cwchar}:
The following functions have different declarations:
@@ -6193,7 +5914,7 @@ index 3a4119ed..543204a0 100644
\begin{itemize}
\item \tcode{wcschr}
\item \tcode{wcspbrk}
-@@ -3766,7 +3762,6 @@ in addition to the names declared in
+@@ -3812,7 +3808,6 @@ in addition to the names declared in
\pnum
Header \libheaderref{cstdlib}:
The following functions have different behavior:
@@ -6202,7 +5923,7 @@ index 3a4119ed..543204a0 100644
\item \tcode{atexit}
\item \tcode{exit}
diff --git a/source/concepts.tex b/source/concepts.tex
-index 6bd0435e..0bfd8612 100644
+index 42828a4b..3e64abc8 100644
--- a/source/concepts.tex
+++ b/source/concepts.tex
@@ -150,7 +150,6 @@ already specifies exactly such an expression explicitly.
@@ -6331,10 +6052,10 @@ index 6bd0435e..0bfd8612 100644
\item
\tcode{comp(a, b) \&\& comp(b, c)}
diff --git a/source/containers.tex b/source/containers.tex
-index 9c719111..b1b1b3fb 100644
+index 0e937574..0be602a1 100644
--- a/source/containers.tex
+++ b/source/containers.tex
-@@ -685,7 +685,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req.
+@@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req.
\ref{vector.modifiers})
all container types defined in this Clause meet
the following additional requirements:
@@ -6342,7 +6063,7 @@ index 9c719111..b1b1b3fb 100644
\begin{itemize}
\item
If an exception is thrown by an
-@@ -748,7 +747,6 @@ as input iterators.
+@@ -751,7 +750,6 @@ as input iterators.
Likewise, the extent to which an implementation determines that a type cannot be
an allocator is unspecified, except that as a minimum a type \tcode{A} shall not qualify
as an allocator unless it meets both of the following conditions:
@@ -6350,7 +6071,7 @@ index 9c719111..b1b1b3fb 100644
\begin{itemize}
\item The \grammarterm{qualified-id} \tcode{A::value_type}
is valid and denotes a type\iref{temp.deduct}.
-@@ -978,7 +976,6 @@ is not allocator-aware or is a specialization of \tcode{basic_string},
+@@ -982,7 +980,6 @@ is not allocator-aware or is a specialization of \tcode{basic_string},
the terms below are defined as if \tcode{A} were
\tcode{allocator} --- no allocator object needs to be created
and user specializations of \tcode{allocator} are not instantiated:
@@ -6358,7 +6079,7 @@ index 9c719111..b1b1b3fb 100644
\begin{itemize}
\item
\tcode{T} is \defnx{\oldconcept{DefaultInsertable} into \tcode{X}}
-@@ -4036,14 +4033,12 @@ such that distance from
+@@ -4045,14 +4042,12 @@ such that distance from
to
\tcode{j}
is positive, the following condition holds:
@@ -6373,15 +6094,15 @@ index 9c719111..b1b1b3fb 100644
\begin{codeblock}
value_comp(*i, *j) != false
\end{codeblock}
-@@ -6055,7 +6050,6 @@ define class templates that meet the requirements for sequence containers.
+@@ -6064,7 +6059,6 @@ define class templates that meet the requirements for sequence containers.
\pnum
The following exposition-only alias template may appear in deduction guides for sequence containers:
-
\begin{codeblock}
template
- using @\placeholdernc{iter-value-type}@ = typename iterator_traits::value_type; // \expos
-@@ -9325,7 +9319,6 @@ If \tcode{size() < sz},
+ using @\placeholdernc{iter-value-type}@ = iterator_traits::value_type; // \expos
+@@ -9367,7 +9361,6 @@ If \tcode{size() < sz},
appends \tcode{sz - size()} default-inserted elements to the
sequence.
If \tcode{sz <= size()}, equivalent to:
@@ -6389,29 +6110,15 @@ index 9c719111..b1b1b3fb 100644
\begin{codeblock}
list::iterator it = begin();
advance(it, sz);
-@@ -10614,13 +10607,11 @@ static constexpr void swap(reference x, reference y) noexcept;
- \pnum
- \effects
- Exchanges the contents of \tcode{x} and \tcode{y} as if by:
--
- \begin{codeblock}
- bool b = x;
- x = y;
- y = b;
- \end{codeblock}
--
- \end{itemdescr}
-
- \begin{itemdecl}
-@@ -20114,7 +20105,6 @@ For each of
+@@ -20331,7 +20324,6 @@ For each of
\tcode{stack},
- the library provides the following formatter specialization
+ the library provides the following constexpr-enabled formatter specialization
where \tcode{\placeholder{adaptor-type}} is the name of the template:
-
\indexlibraryglobal{formatter}%
\begin{codeblock}
namespace std {
-@@ -24298,7 +24288,6 @@ typename A::offset_policy
+@@ -24583,7 +24575,6 @@ typename A::offset_policy
\pnum
\result
A type \tcode{OP} such that:
@@ -6419,43 +6126,27 @@ index 9c719111..b1b1b3fb 100644
\begin{itemize}
\item
\tcode{OP} meets the accessor policy requirements,
-@@ -25197,7 +25186,6 @@ the \tcode{SliceSpecifier} arguments.
- \pnum
- For each function defined in \ref{mdspan.sub} that
- takes a parameter pack named \tcode{slices} as an argument:
--
- \begin{itemize}
- \item let \tcode{index_type} be
- \begin{itemize}
-@@ -25461,7 +25449,6 @@ $\le \tcode{src.extent($k$)}$
+@@ -26028,7 +26019,6 @@ for the $k^\text{th}$ extent of \tcode{src}.
\pnum
Let \tcode{SubExtents} be a specialization of \tcode{extents} such that:
-
\begin{itemize}
\item
- %FIXME: I think we want the count here, "number" is ambiguous.
-@@ -25472,7 +25459,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and
- for each rank index $k$ of \tcode{Extents} such that
- \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true},
- \tcode{SubExt\-ents::static_extent(\placeholder{map-rank}[$k$])} equals:
+ \tcode{SubExtents::rank()} equals
+@@ -26040,7 +26030,6 @@ the type of \tcode{slices...[$k$]} is not a collapsing slice type,
+ \tcode{SubExt\-ents::static_extent(\placeholder{MAP_RANK}(slices, $k$))}
+ equals the following, where $\Sigma_k$
+ denotes the type of \tcode{slices...[$k$]}:
-
\begin{itemize}
\item
\tcode{Extents::static_extent($k$)}
-@@ -25512,7 +25498,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that
- for each $k$
- for which \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true},
- \tcode{ext.extent(\placeholder{map-rank}[$k$])} equals:
--
- \begin{itemize}
- \item
- \tcode{$s_k$.extent == 0 ? 0 : 1 + (\exposid{de-ice}($s_k$.extent) - 1) / \exposid{de-ice}($s_k$.stride)}
diff --git a/source/declarations.tex b/source/declarations.tex
-index 1af3ee51..b27354dd 100644
+index cea5493a..38e1f367 100644
--- a/source/declarations.tex
+++ b/source/declarations.tex
-@@ -1557,7 +1557,6 @@ a partial specialization\iref{temp.spec.partial},
+@@ -1594,7 +1594,6 @@ a partial specialization\iref{temp.spec.partial},
an explicit
instantiation\iref{temp.explicit}, or it has one of the following
forms:
@@ -6463,7 +6154,7 @@ index 1af3ee51..b27354dd 100644
\begin{ncsimplebnf}
class-key \opt{attribute-specifier-seq} identifier \terminal{;}\br
class-key \opt{attribute-specifier-seq} simple-template-id \terminal{;}
-@@ -2396,7 +2395,6 @@ the \grammarterm{declarator} declares a function.
+@@ -2499,7 +2498,6 @@ the \grammarterm{declarator} declares a function.
\pnum
Declarators have the syntax
@@ -6471,7 +6162,7 @@ index 1af3ee51..b27354dd 100644
\begin{bnf}
\nontermdef{declarator}\br
ptr-declarator\br
-@@ -4294,7 +4292,6 @@ In the following code,
+@@ -4405,7 +4403,6 @@ In the following code,
\tcode{g}
will be called with the value
\tcode{f(2)}:
@@ -6479,7 +6170,7 @@ index 1af3ee51..b27354dd 100644
\begin{codeblock}
int a = 1;
int f(int);
-@@ -4953,7 +4950,6 @@ To
+@@ -5075,7 +5072,6 @@ To
an object of type
\tcode{T}
means:
@@ -6487,7 +6178,7 @@ index 1af3ee51..b27354dd 100644
\begin{itemize}
\item
If
-@@ -5152,7 +5148,6 @@ is sequenced before those associated with
+@@ -5285,7 +5281,6 @@ is sequenced before those associated with
the initialization of the $j^\text{th}$ element.
\item
Otherwise, if the destination type is a class type:
@@ -6495,7 +6186,7 @@ index 1af3ee51..b27354dd 100644
\begin{itemize}
\item
If the initializer expression is a prvalue
-@@ -6064,7 +6059,6 @@ a program that necessitates such a binding is ill-formed.
+@@ -6203,7 +6198,6 @@ a program that necessitates such a binding is ill-formed.
A reference to type ``\cvqual{cv1} \tcode{T1}'' is initialized by
an expression of type ``\cvqual{cv2} \tcode{T2}'' as follows:%
\indextext{binding!reference}
@@ -6503,7 +6194,7 @@ index 1af3ee51..b27354dd 100644
\begin{itemize}
\item
If the reference is an lvalue reference and the initializer expression
-@@ -6531,7 +6525,6 @@ int j { 1 }; // initialize to 1
+@@ -6671,7 +6665,6 @@ int j { 1 }; // initialize to 1
int k { }; // initialize to 0
\end{codeblock}
\end{example}
@@ -6511,15 +6202,15 @@ index 1af3ee51..b27354dd 100644
\end{itemize}
\pnum
-@@ -7611,7 +7604,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&},
- where $\tcode{U}_i$ is an lvalue reference if
- the initializer is an lvalue and an rvalue reference otherwise,
+@@ -7757,7 +7750,6 @@ as $\tcode{T}_i$ if the initializer is a prvalue,
+ as ``lvalue reference to $\tcode{T}_i$'' if the initializer is an lvalue, or
+ as ``rvalue reference to $\tcode{T}_i$'' otherwise,
variables are introduced with unique names $\tcode{r}_i$ as follows:
-
\begin{ncbnf}
\placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;}
\end{ncbnf}
-@@ -7743,7 +7735,6 @@ struct S {
+@@ -7889,7 +7881,6 @@ struct S {
enum E : int {}; // error: redeclaration of enumeration
};
\end{codeblock}
@@ -6527,7 +6218,7 @@ index 1af3ee51..b27354dd 100644
\end{example}
\end{note}
The \grammarterm{identifier} in an \grammarterm{enum-head-name}
-@@ -7840,7 +7831,6 @@ If the underlying
+@@ -7985,7 +7976,6 @@ If the underlying
type is not fixed,
the type of each enumerator prior to the closing brace is determined as
follows:
@@ -6535,15 +6226,15 @@ index 1af3ee51..b27354dd 100644
\begin{itemize}
\item If an
initializer is specified for an enumerator, the
-@@ -8295,7 +8285,6 @@ void h() {
+@@ -8443,7 +8433,6 @@ void h() {
\pnum
- A \grammarterm{namespace-alias-definition} declares an alternate name for a
- namespace according to the following grammar:
+ A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias}
+ according to the following grammar:
-
\begin{bnf}
\nontermdef{namespace-alias}\br
identifier
-@@ -8450,7 +8439,6 @@ not declare functions or function templates, the use of the name is ill-formed\i
+@@ -8617,7 +8606,6 @@ not declare functions or function templates, the use of the name is ill-formed\i
In particular, the name of a variable, function or enumerator does not
hide the name of a class or enumeration declared in a different
namespace. For example,
@@ -6551,7 +6242,7 @@ index 1af3ee51..b27354dd 100644
\begin{codeblock}
namespace A {
class X { };
-@@ -9003,7 +8991,6 @@ otherwise identical.
+@@ -9180,7 +9168,6 @@ otherwise identical.
\pnum
\link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can
be achieved using a \grammarterm{linkage-specification}:
@@ -6559,7 +6250,7 @@ index 1af3ee51..b27354dd 100644
\indextext{\idxgram{linkage-specification}}%
\indextext{specification!linkage!\idxcode{extern}}%
%
-@@ -9852,7 +9839,6 @@ may be applied to a function or a lambda call operator or
+@@ -10057,7 +10044,6 @@ may be applied to a function or a lambda call operator or
to the declaration of a class or enumeration.
An \grammarterm{attribute-argument-clause} may be present
and, if present, shall have the form:
@@ -6568,7 +6259,7 @@ index 1af3ee51..b27354dd 100644
\terminal{(} unevaluated-string \terminal{)}
\end{ncbnf}
diff --git a/source/exceptions.tex b/source/exceptions.tex
-index 190e0ac6..cb9faf71 100644
+index ea065465..869f7588 100644
--- a/source/exceptions.tex
+++ b/source/exceptions.tex
@@ -89,7 +89,6 @@ void f() {
@@ -6579,8 +6270,8 @@ index 190e0ac6..cb9faf71 100644
\end{codeblock}
\end{example}
\indextext{\idxcode{goto}!and try block}%
-@@ -561,12 +560,10 @@ to pointers to private or protected or ambiguous classes
- a \link{function pointer conversion}{conv.fctptr}
+@@ -561,12 +560,10 @@ to pointers to private or protected or ambiguous classes,
+ a \link{function pointer conversion}{conv.fctptr},
\item%
a \link{qualification conversion}{conv.qual}, or
-
@@ -6592,21 +6283,11 @@ index 190e0ac6..cb9faf71 100644
\end{itemize}
\begin{note}
-@@ -1127,9 +1124,7 @@ when \tcode{unhandled_stopped} is called on
- a \tcode{with_awaitable_senders} object\iref{exec.with.awaitable.senders}
- whose continuation is not a handle to a coroutine
- whose promise type has an \tcode{unhandled_stopped} member function.
--
- \end{itemize}
--
- \end{note}
-
- \pnum
diff --git a/source/expressions.tex b/source/expressions.tex
-index 13e2526b..61ca8c1d 100644
+index 24af225d..b23928b0 100644
--- a/source/expressions.tex
+++ b/source/expressions.tex
-@@ -462,7 +462,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied
+@@ -467,7 +467,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied
if and only if
the expression is a glvalue of volatile-qualified type and it is one of the
following:
@@ -6614,7 +6295,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item \tcode{(} \grammarterm{expression} \tcode{)}, where
\grammarterm{expression} is one of these expressions,
-@@ -505,7 +504,6 @@ Standard conversions are implicit conversions with built-in meaning.
+@@ -511,7 +510,6 @@ Standard conversions are implicit conversions with built-in meaning.
\ref{conv} enumerates the full set of such conversions. A
\defnx{standard conversion sequence}{conversion sequence!standard} is a sequence of standard
conversions in the following order:
@@ -6622,7 +6303,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item Zero or one conversion from the following set: lvalue-to-rvalue
conversion, array-to-pointer conversion, and function-to-pointer
-@@ -533,7 +531,6 @@ a required destination type and value category.
+@@ -539,7 +537,6 @@ a required destination type and value category.
\begin{note}
Expressions with a given type will be implicitly converted to other
types in several contexts:
@@ -6630,7 +6311,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item When used as operands of operators. The operator's requirements
for its operands dictate the destination type\iref{expr.compound}.
-@@ -659,7 +656,6 @@ int n = g(true); // OK, does not access \tcode{y.n}
+@@ -665,7 +662,6 @@ int n = g(true); // OK, does not access \tcode{y.n}
\pnum
The result of the conversion is determined according to the
following rules:
@@ -6638,7 +6319,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item If \tcode{T} is \cv{}~\tcode{std::nullptr_t}, the result is a
-@@ -1169,7 +1165,6 @@ type cause conversions and yield result types in a similar way. The
+@@ -1176,7 +1172,6 @@ type cause conversions and yield result types in a similar way. The
purpose is to yield a common type, which is also the type of the result.
This pattern is called the \defnx{usual arithmetic conversions}{conversion!usual arithmetic},
which are defined as follows:
@@ -6646,7 +6327,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item The lvalue-to-rvalue conversion\iref{conv.lval}
is applied to each operand and
-@@ -1212,7 +1207,6 @@ As a consequence, operands of type \keyword{bool}, \keyword{char8_t}, \keyword{c
+@@ -1219,7 +1214,6 @@ As a consequence, operands of type \keyword{bool}, \keyword{char8_t}, \keyword{c
to some integral type.
\end{footnote}
Then the following rules are applied to determine \tcode{C}:
@@ -6654,7 +6335,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item If \tcode{T1} and \tcode{T2} are the same type, \tcode{C} is that type.
-@@ -2719,7 +2713,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int}
+@@ -2811,7 +2805,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int}
\pnum
For the purposes of lambda capture,
an expression potentially references local entities as follows:
@@ -6662,7 +6343,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item
An \grammarterm{id-expression} that names a local entity
-@@ -3324,7 +3317,6 @@ The \grammarterm{expression} is an unevaluated operand.
+@@ -3422,7 +3415,6 @@ The \grammarterm{expression} is an unevaluated operand.
Substitution
of template arguments (if any) and verification of
semantic properties proceed in the following order:
@@ -6670,7 +6351,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item
Substitution of template arguments (if any)
-@@ -3336,7 +3328,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}.
+@@ -3434,7 +3426,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}.
\item
If the \grammarterm{return-type-requirement} is present, then:
@@ -6678,15 +6359,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item
Substitution of template arguments (if any)
-@@ -4002,7 +3993,6 @@ the reference is bound,
- otherwise \tcode{E1.E2} designates the object or function to which
- the corresponding reference member of \tcode{E1} is bound.
- Otherwise, one of the following rules applies.
--
- \begin{itemize}
- \item If \tcode{E2} is a static data member and the type of \tcode{E2}
- is \tcode{T}, then \tcode{E1.E2} is an lvalue; the expression designates
-@@ -4215,7 +4205,6 @@ referred to by \tcode{T}.
+@@ -4539,7 +4530,6 @@ referred to by \tcode{T}.
\pnum
Let \tcode{C} be the class type to which \tcode{T} points or refers. The runtime
check logically executes as follows:
@@ -6694,7 +6367,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item If, in the most derived object pointed (referred) to by \tcode{v},
\tcode{v} points (refers) to a public base class subobject of a
-@@ -4762,7 +4751,6 @@ constness.
+@@ -5053,7 +5043,6 @@ constness.
The null member pointer value\iref{conv.mem} is converted to the
null member pointer value of the destination type. The result of this
conversion is unspecified, except in the following cases:
@@ -6702,7 +6375,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item Converting a prvalue of type ``pointer to member function'' to a
different pointer-to-member-function type and back to its original type
-@@ -5181,7 +5169,6 @@ is called a \term{suspension context} of the function.
+@@ -5488,7 +5477,6 @@ is called a \term{suspension context} of the function.
\pnum
Evaluation of an \grammarterm{await-expression} involves the following
auxiliary types, expressions, and objects:
@@ -6710,7 +6383,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item
\placeholder{p} is an lvalue naming the promise
-@@ -5562,7 +5549,6 @@ and
+@@ -5871,7 +5859,6 @@ and
the \grammarterm{new-expression}, then the allocated type is the type
deduced for the variable \tcode{x} in the invented
declaration\iref{dcl.spec.auto}:
@@ -6718,7 +6391,7 @@ index 13e2526b..61ca8c1d 100644
\begin{codeblock}
T x @\textrm{\placeholder{init}}@ ;
\end{codeblock}
-@@ -5914,7 +5900,6 @@ the alignment argument is removed from the argument list;
+@@ -6231,7 +6218,6 @@ the alignment argument is removed from the argument list;
otherwise, an argument that
is the type's alignment and has type \tcode{std::align_val_t}
is added into the argument list immediately after the first argument;
@@ -6726,7 +6399,7 @@ index 13e2526b..61ca8c1d 100644
\end{itemize}
and then overload resolution is performed again.
-@@ -5992,7 +5977,6 @@ necessarily be the same as that of the block if the object is an array.
+@@ -6309,7 +6295,6 @@ necessarily be the same as that of the block if the object is an array.
\indextext{\idxcode{new}!default constructor and}%
A \grammarterm{new-expression} that creates an object of type \tcode{T}
initializes that object as follows:
@@ -6734,15 +6407,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item If the \grammarterm{new-initializer} is omitted, the object is
default-initialized\iref{dcl.init}.
-@@ -6081,7 +6065,6 @@ struct S {
- S* p = new (0) S; // error: non-placement deallocation function matches
- // placement allocation function
- \end{codeblock}
--
- \end{example}
-
- \pnum
-@@ -6201,7 +6184,6 @@ of their constructor; see~\ref{class.base.init}).
+@@ -6588,7 +6573,6 @@ of their constructor; see~\ref{class.base.init}).
\pnum
If the value of the operand of the \grammarterm{delete-expression} is not a
null pointer value, then:
@@ -6750,7 +6415,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item
If the allocation call for the \grammarterm{new-expression} for the object to
-@@ -6825,7 +6807,6 @@ or one operand has integral type and
+@@ -7433,7 +7417,6 @@ or one operand has integral type and
the other operand has unscoped enumeration type,
the \link{usual arithmetic conversions}{expr.arith.conv} are applied to the operands.
Then:
@@ -6758,7 +6423,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item
If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required,
-@@ -6980,7 +6961,6 @@ is considered to be equivalent to a pointer to a hypothetical array element
+@@ -7588,7 +7571,6 @@ is considered to be equivalent to a pointer to a hypothetical array element
$n$ for this purpose.
\end{footnote}
is defined in terms of a partial order consistent with the following rules:
@@ -6766,7 +6431,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item If two pointers point to different elements of the same array, or to
subobjects thereof, the pointer to the element with the higher subscript
-@@ -6993,7 +6973,6 @@ neither member is a subobject of zero size
+@@ -7601,7 +7583,6 @@ neither member is a subobject of zero size
and their class is not a union.
\item Otherwise, neither pointer is required to compare greater than the other.
@@ -6774,7 +6439,7 @@ index 13e2526b..61ca8c1d 100644
\end{itemize}
\pnum
-@@ -7055,7 +7034,6 @@ If at least one of the converted operands is a pointer,
+@@ -7663,7 +7644,6 @@ If at least one of the converted operands is a pointer,
\link{qualification conversions}{conv.qual}
are performed on both operands to bring them to their \deflink{composite pointer type}{expr.type}.
Comparing pointers is defined as follows:
@@ -6782,7 +6447,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item
If one pointer represents the address of a complete object, and another
-@@ -7085,7 +7063,6 @@ qualification conversions\iref{conv.qual}
+@@ -7693,7 +7673,6 @@ qualification conversions\iref{conv.qual}
are performed on both operands to bring them to
their composite pointer type\iref{expr.type}.
Comparing pointers to members is defined as follows:
@@ -6790,7 +6455,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item
If two pointers to members are both the null member pointer value, they compare
-@@ -7357,7 +7334,6 @@ Attempts are made to form an implicit conversion sequence
+@@ -7979,7 +7958,6 @@ Attempts are made to form an implicit conversion sequence
from an operand expression \tcode{E1} of type \tcode{T1}
to a target type related to the type \tcode{T2}
of the operand expression \tcode{E2} as follows:
@@ -6798,7 +6463,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item If \tcode{E2} is an lvalue, the target type is
``lvalue reference to \tcode{T2}'',
-@@ -7436,7 +7412,6 @@ subclause.
+@@ -8058,7 +8036,6 @@ subclause.
and \link{function-to-pointer}{conv.func} standard conversions are
performed on the second and third operands. After those conversions, one
of the following shall hold:
@@ -6806,7 +6471,7 @@ index 13e2526b..61ca8c1d 100644
\begin{itemize}
\item The second and third operands have the same type; the result is of
that type and the result is copy-initialized using the selected operand.
-@@ -7466,7 +7441,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type.
+@@ -8088,7 +8065,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type.
Both the second and third operands have type \tcode{std::nullptr_t} or one has
that type and the other is a null pointer constant. The result is of type
\tcode{std::nullptr_t}.
@@ -6815,10 +6480,10 @@ index 13e2526b..61ca8c1d 100644
\rSec2[expr.yield]{Yielding a value}%
diff --git a/source/future.tex b/source/future.tex
-index 49c04f21..ddaaf96d 100644
+index dc26444a..ac4ac504 100644
--- a/source/future.tex
+++ b/source/future.tex
-@@ -268,7 +268,6 @@ shown in the above synopsis.
+@@ -283,7 +283,6 @@ shown in the above synopsis.
\pnum
The header \libheaderrefx{type_traits}{meta.type.synop}
has the following addition:
@@ -6826,7 +6491,7 @@ index 49c04f21..ddaaf96d 100644
\begin{codeblock}
namespace std {
template struct is_trivial;
-@@ -508,7 +507,6 @@ template bool operator>=(const T& x, const T& y);
+@@ -523,7 +522,6 @@ template bool operator>=(const T& x, const T& y);
\pnum
The header \libheaderref{tuple} has the following additions:
@@ -6834,7 +6499,7 @@ index 49c04f21..ddaaf96d 100644
\begin{codeblock}
namespace std {
template struct tuple_size;
-@@ -578,7 +576,6 @@ are included.
+@@ -593,7 +591,6 @@ are included.
\pnum
The header \libheaderref{variant} has the following additions:
@@ -6842,7 +6507,7 @@ index 49c04f21..ddaaf96d 100644
\begin{codeblock}
namespace std {
template struct variant_size;
-@@ -625,7 +622,6 @@ with a member typedef \tcode{type} that names the following type:
+@@ -671,7 +668,6 @@ y = b;
\pnum
The header \libheaderrefx{iterator}{iterator.synopsis} has the following addition:
@@ -6850,7 +6515,7 @@ index 49c04f21..ddaaf96d 100644
\indexlibraryglobal{iterator}%
\begin{codeblock}
namespace std {
-@@ -659,7 +655,6 @@ only to callers of that class.
+@@ -705,7 +701,6 @@ only to callers of that class.
If a \Cpp{} program wants to define a bidirectional iterator for some data
structure containing \tcode{double} and such that it works on a large memory
model of the implementation, it can do so with:
@@ -6858,7 +6523,7 @@ index 49c04f21..ddaaf96d 100644
\begin{codeblock}
class MyIterator :
public iterator {
-@@ -673,7 +668,6 @@ class MyIterator :
+@@ -719,7 +714,6 @@ class MyIterator :
\pnum
The following member is declared in addition to those members
specified in \ref{move.iter.elem}:
@@ -6866,7 +6531,7 @@ index 49c04f21..ddaaf96d 100644
\begin{codeblock}
namespace std {
template
-@@ -766,7 +760,6 @@ Equivalent to: \tcode{return visit(std::forward(vis), arg.value);}
+@@ -829,7 +823,6 @@ are not required to avoid data races\iref{res.on.data.races}.
\pnum
The header \libheaderrefx{filesystem}{fs.filesystem.syn} has the following additions:
@@ -6874,7 +6539,7 @@ index 49c04f21..ddaaf96d 100644
\indexlibraryglobal{u8path}%
\begin{itemdecl}
template
-@@ -847,7 +840,6 @@ as it is consistent with \tcode{path}'s handling of other encodings.
+@@ -949,7 +942,6 @@ std::string generic_string() const;
\pnum
The header \libheaderrefx{atomic}{atomics.syn} has the following additions.
@@ -6883,10 +6548,10 @@ index 49c04f21..ddaaf96d 100644
namespace std {
template
diff --git a/source/iostreams.tex b/source/iostreams.tex
-index ee7b1fc6..f01c8ec2 100644
+index ad9e3afe..a046490d 100644
--- a/source/iostreams.tex
+++ b/source/iostreams.tex
-@@ -2108,14 +2108,12 @@ does nothing.
+@@ -2105,14 +2105,12 @@ does nothing.
Otherwise assigns to the member objects of
\tcode{*this}
the corresponding member objects of \tcode{rhs} as follows:
@@ -6901,7 +6566,7 @@ index ee7b1fc6..f01c8ec2 100644
\begin{itemize}
\item \tcode{rdstate()}, \tcode{rdbuf()}, and \tcode{exceptions()} are left unchanged;
-@@ -7211,7 +7209,6 @@ clears \tcode{ios_base::skipws} in the format flags stored in the
+@@ -7225,7 +7223,6 @@ clears \tcode{ios_base::skipws} in the format flags stored in the
format flags stored in the \tcode{basic_ostream} object
\tcode{cout} (the same as \tcode{cout << noshowbase}).
\end{footnote}
@@ -6909,7 +6574,7 @@ index ee7b1fc6..f01c8ec2 100644
\begin{codeblock}
void f(ios_base& str, ios_base::fmtflags mask) {
// reset specified flags
-@@ -7250,7 +7247,6 @@ then the expression
+@@ -7264,7 +7261,6 @@ then the expression
behaves as if it called
\tcode{f(in, mask)}, where the function \tcode{f} is defined as:
\indexlibrarymember{fmtflags}{ios_base}%
@@ -6917,7 +6582,7 @@ index ee7b1fc6..f01c8ec2 100644
\begin{codeblock}
void f(ios_base& str, ios_base::fmtflags mask) {
// set specified flags
-@@ -7296,7 +7292,6 @@ then the expression
+@@ -7310,7 +7306,6 @@ then the expression
\tcode{in >> setbase(base)}
behaves as if it called
\tcode{f(in, base)}, where the function \tcode{f} is defined as:
@@ -6925,7 +6590,7 @@ index ee7b1fc6..f01c8ec2 100644
\begin{codeblock}
void f(ios_base& str, int base) {
// set \tcode{basefield}
-@@ -7339,7 +7334,6 @@ then the expression
+@@ -7353,7 +7348,6 @@ then the expression
\tcode{out << setfill(c)}
behaves as if it called
\tcode{f(out, c)}, where the function \tcode{f} is defined as:
@@ -6933,7 +6598,7 @@ index ee7b1fc6..f01c8ec2 100644
\begin{codeblock}
template
void f(basic_ios& str, charT c) {
-@@ -7380,7 +7374,6 @@ then the expression
+@@ -7394,7 +7388,6 @@ then the expression
\tcode{in >> setprecision(n)}
behaves as if it called
\tcode{f(in, n)}, where the function \tcode{f} is defined as:
@@ -6941,7 +6606,7 @@ index ee7b1fc6..f01c8ec2 100644
\begin{codeblock}
void f(ios_base& str, int n) {
// set precision
-@@ -7426,7 +7419,6 @@ then the expression
+@@ -7440,7 +7433,6 @@ then the expression
\tcode{in >> setw(n)}
behaves as if it called
\tcode{f(in, n)}, where the function \tcode{f} is defined as:
@@ -6949,7 +6614,7 @@ index ee7b1fc6..f01c8ec2 100644
\begin{codeblock}
void f(ios_base& str, int n) {
// set width
-@@ -7476,7 +7468,6 @@ An object of unspecified type such that if
+@@ -7490,7 +7482,6 @@ An object of unspecified type such that if
\tcode{in} is an object of type \tcode{basic_istream}
then the expression \tcode{in >> get_money(mon, intl)} behaves as if it called
\tcode{f(in, mon, intl)}, where the function \tcode{f} is defined as:
@@ -6957,7 +6622,7 @@ index ee7b1fc6..f01c8ec2 100644
\begin{codeblock}
template
void f(basic_ios& str, moneyT& mon, bool intl) {
-@@ -7515,7 +7506,6 @@ An object of unspecified type such that if
+@@ -7529,7 +7520,6 @@ An object of unspecified type such that if
then the expression \tcode{out << put_money(mon, intl)} behaves as a
\link{formatted output function}{ostream.formatted.reqmts} that calls
\tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as:
@@ -6965,7 +6630,7 @@ index ee7b1fc6..f01c8ec2 100644
\begin{codeblock}
template
void f(basic_ios& str, const moneyT& mon, bool intl) {
-@@ -7551,7 +7541,6 @@ An object of unspecified type such that if \tcode{in} is an object of type
+@@ -7565,7 +7555,6 @@ An object of unspecified type such that if \tcode{in} is an object of type
\tcode{basic_istream} then the expression \tcode{in >> get_time(tmb,
fmt)} behaves as if it called \tcode{f(in, tmb, fmt)}, where the function \tcode{f} is
defined as:
@@ -6973,7 +6638,7 @@ index ee7b1fc6..f01c8ec2 100644
\begin{codeblock}
template
void f(basic_ios& str, tm* tmb, const charT* fmt) {
-@@ -7590,7 +7579,6 @@ An object of unspecified type such that if \tcode{out} is an object of
+@@ -7604,7 +7593,6 @@ An object of unspecified type such that if \tcode{out} is an object of
type \tcode{basic_ostream} then the expression
\tcode{out << put_time(tmb, fmt)} behaves as if it called \tcode{f(out, tmb, fmt)},
where the function \tcode{f} is defined as:
@@ -6981,23 +6646,23 @@ index ee7b1fc6..f01c8ec2 100644
\begin{codeblock}
template
void f(basic_ios& str, const tm* tmb, const charT* fmt) {
-@@ -11426,7 +11414,6 @@ with the specialization that a sequence of characters is read from the input
+@@ -11432,7 +11420,6 @@ with the specialization that a sequence of characters is read from the input
sequence as if by reading from the associated file
into an internal buffer (\tcode{extern_buf})
and then as if by doing:
-
\begin{codeblock}
- char extern_buf[XSIZE];
- char* extern_end;
-@@ -13912,7 +13899,6 @@ without an intervening \grammarterm{root-directory} element.
+ char extern_buf[XSIZE];
+ const char* extern_end;
+@@ -13923,7 +13910,6 @@ without an intervening \grammarterm{root-directory} element.
\pnum
\indextext{path!normalization|(}%
- \defnx{Normalization}{normalization!path} of a generic format pathname means:
+ \defnx{Normalization}{normalization!path|see{path, normalization}} of a generic format pathname means:
-
\begin{enumerate}
\item If the path is empty, stop.
\item Replace each slash character in the \grammarterm{root-name} with a \grammarterm{preferred-separator}.
-@@ -17028,7 +17014,6 @@ recursive_directory_iterator& increment(error_code& ec);
+@@ -17065,7 +17051,6 @@ recursive_directory_iterator& increment(error_code& ec);
As specified for the prefix increment operation of
\link{Input iterators}{input.iterators},
except that:
@@ -7006,10 +6671,10 @@ index ee7b1fc6..f01c8ec2 100644
\item If there are no more entries at the current depth, then if \tcode{depth() != 0}
iteration over the parent directory resumes; otherwise \tcode{*this = recursive_directory_iterator()}.
diff --git a/source/iterators.tex b/source/iterators.tex
-index 6078fec7..d022554d 100644
+index 46edb440..b083ad28 100644
--- a/source/iterators.tex
+++ b/source/iterators.tex
-@@ -948,7 +948,6 @@ may be defined as \keyword{void}.
+@@ -963,7 +963,6 @@ may be declared as \keyword{void}.
\pnum
The definitions in this subclause make use of the following
exposition-only concepts:
@@ -7017,7 +6682,7 @@ index 6078fec7..d022554d 100644
\begin{codeblock}
template
concept @\defexposconcept{cpp17-iterator}@ =
-@@ -1006,7 +1005,6 @@ concept @\defexposconcept{cpp17-random-access-iterator}@ =
+@@ -1021,7 +1020,6 @@ concept @\defexposconcept{cpp17-random-access-iterator}@ =
\pnum
The members of a specialization \tcode{iterator_traits} generated from the
\tcode{iterator_traits} primary template are computed as follows:
@@ -7025,7 +6690,7 @@ index 6078fec7..d022554d 100644
\begin{itemize}
\item
If \tcode{I} has valid\iref{temp.deduct} member
-@@ -1155,7 +1153,6 @@ The name \tcode{ranges::iter_move} denotes
+@@ -1168,7 +1166,6 @@ The name \tcode{ranges::iter_move} denotes
a customization point object\iref{customization.point.object}.
The expression \tcode{ranges::\-iter_move(E)} for a subexpression \tcode{E} is
expression-equivalent to:
@@ -7033,7 +6698,7 @@ index 6078fec7..d022554d 100644
\begin{itemize}
\item \tcode{iter_move(E)}, if
\tcode{E} has class or enumeration type and
-@@ -2795,7 +2792,6 @@ namespace std {
+@@ -2811,7 +2808,6 @@ namespace std {
A program-defined iterator \tcode{BinaryTreeIterator}
can be included into the bidirectional iterator category by
specializing the \tcode{iterator_traits} template:
@@ -7041,7 +6706,7 @@ index 6078fec7..d022554d 100644
\begin{codeblock}
template struct iterator_traits> {
using iterator_category = bidirectional_iterator_tag;
-@@ -2813,7 +2809,6 @@ If
+@@ -2829,7 +2825,6 @@ If
\tcode{evolve()}
is well-defined for bidirectional iterators, but can be implemented more
efficiently for random access iterators, then the implementation is as follows:
@@ -7049,7 +6714,7 @@ index 6078fec7..d022554d 100644
\begin{codeblock}
template
inline void
-@@ -3394,7 +3389,6 @@ As if by:
+@@ -3416,7 +3411,6 @@ As if by:
Iterator tmp = current;
return *--tmp;
\end{codeblock}
@@ -7057,7 +6722,7 @@ index 6078fec7..d022554d 100644
\end{itemdescr}
\indexlibrarymember{operator->}{reverse_iterator}%
-@@ -4776,7 +4770,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1
+@@ -4799,7 +4793,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1
vector v2(make_move_iterator(s.begin()),
make_move_iterator(s.end())); // moves strings into \tcode{v2}
\end{codeblock}
@@ -7065,7 +6730,7 @@ index 6078fec7..d022554d 100644
\end{example}
\rSec3[move.iterator]{Class template \tcode{move_iterator}}
-@@ -6495,7 +6488,6 @@ partial_sum(istream_iterator(cin),
+@@ -6518,7 +6511,6 @@ partial_sum(istream_iterator(cin),
istream_iterator(),
ostream_iterator(cout, "@\textbackslash@n"));
\end{codeblock}
@@ -7073,20 +6738,8 @@ index 6078fec7..d022554d 100644
reads a file containing floating-point numbers from
\tcode{cin},
and prints the partial sums onto
-diff --git a/source/lex.tex b/source/lex.tex
-index fbd79538..d09869b8 100644
---- a/source/lex.tex
-+++ b/source/lex.tex
-@@ -597,7 +597,6 @@ after the \tcode{include} or \tcode{import} preprocessing token in a
-
- \item
- within a \grammarterm{has-include-expression}.
--
- \end{itemize}
- \end{itemize}
-
diff --git a/source/lib-intro.tex b/source/lib-intro.tex
-index 10076632..6effcd33 100644
+index 6c8b5dab..a8a934eb 100644
--- a/source/lib-intro.tex
+++ b/source/lib-intro.tex
@@ -196,7 +196,6 @@ save space, items that do not apply to a Clause are omitted.
@@ -7137,7 +6790,7 @@ index 10076632..6effcd33 100644
\begin{itemize}
\item
\constraints
-@@ -613,7 +607,6 @@ values\iref{basic.fundamental}.
+@@ -623,7 +617,6 @@ values\iref{basic.fundamental}.
\pnum
The enumerated type \tcode{\placeholder{enumerated}} can be written:
@@ -7145,7 +6798,7 @@ index 10076632..6effcd33 100644
\begin{codeblock}
enum @\placeholder{enumerated}@ { @$\tcode{\placeholder{V}}_{0}$@, @$\tcode{\placeholder{V}}_{1}$@, @$\tcode{\placeholder{V}}_{2}$@, @$\tcode{\placeholder{V}}_{3}$@, @$\ldots$@ };
-@@ -646,7 +639,6 @@ or as a
+@@ -656,7 +649,6 @@ or as a
\pnum
The bitmask type \tcode{\placeholder{bitmask}} can be written:
@@ -7153,7 +6806,7 @@ index 10076632..6effcd33 100644
\begin{codeblock}
// For exposition only.
// \tcode{int_type} is an integral type capable of representing all values of the bitmask type.
-@@ -723,7 +715,6 @@ The value \textit{Y} \defnx{is set}{bitmask!value!is set} in the object
+@@ -733,7 +725,6 @@ The value \textit{Y} \defnx{is set}{bitmask!value!is set} in the object
The C standard library makes widespread use
\indextext{library!C standard}%
of characters and character sequences that follow a few uniform conventions:
@@ -7161,7 +6814,7 @@ index 10076632..6effcd33 100644
\begin{itemize}
\item
Properties specified as \defn{locale-specific}
-@@ -959,7 +950,6 @@ some subclauses provide representative declarations, and semantic requirements,
+@@ -979,7 +970,6 @@ some subclauses provide representative declarations, and semantic requirements,
private members of classes that meet the external specifications of the classes.
The declarations for such members are
followed by a comment that ends with \expos, as in:
@@ -7169,7 +6822,7 @@ index 10076632..6effcd33 100644
\begin{codeblock}
streambuf* sb; // \expos
\end{codeblock}
-@@ -1924,7 +1914,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if
+@@ -1938,7 +1928,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if
evaluated in the context described below, and
\item these expressions have the following effects:
@@ -7177,7 +6830,7 @@ index 10076632..6effcd33 100644
\begin{itemize}
\item the object referred to by \tcode{t} has the value originally held by \tcode{u} and
\item the object referred to by \tcode{u} has the value originally held by \tcode{t}.
-@@ -2930,7 +2919,6 @@ for that type can fail by throwing an object of type
+@@ -2944,7 +2933,6 @@ for that type can fail by throwing an object of type
\begin{example}
The following is an allocator class template supporting the minimal
interface that meets the requirements of \ref{allocator.requirements.general}:
@@ -7185,7 +6838,7 @@ index 10076632..6effcd33 100644
\begin{codeblock}
template
struct SimpleAllocator {
-@@ -3404,13 +3392,11 @@ the description of function semantics apply
+@@ -3438,13 +3426,11 @@ the description of function semantics apply
to both the default version defined by the \Cpp{} standard library and
the replacement function defined by the program.
@@ -7199,7 +6852,7 @@ index 10076632..6effcd33 100644
\begin{itemize}
\item
\tcode{terminate_handler}
-@@ -3431,7 +3417,6 @@ Exception handling.
+@@ -3465,7 +3451,6 @@ Exception handling.
\pnum
A \Cpp{} program can get a pointer to the current handler function by calling the following
functions:
@@ -7207,7 +6860,7 @@ index 10076632..6effcd33 100644
\begin{itemize}
\item
\indexlibraryglobal{get_new_handler}%
-@@ -3457,7 +3442,6 @@ on the implementation.
+@@ -3491,7 +3476,6 @@ on the implementation.
\pnum
In particular, the behavior is undefined in the following cases:
@@ -7215,7 +6868,7 @@ index 10076632..6effcd33 100644
\begin{itemize}
\item
For replacement functions\iref{replacement.functions}, if the installed replacement function does not
-@@ -3742,7 +3726,6 @@ functions or constructors an implementation shall provide corresponding definiti
+@@ -3776,7 +3760,6 @@ functions an implementation shall provide corresponding definitions.
\indextext{stable algorithm}%
When the requirements for an algorithm state that it is ``stable'' without further elaboration,
it means:
@@ -7224,7 +6877,7 @@ index 10076632..6effcd33 100644
\item For the sort algorithms the relative order of equivalent
elements is preserved.
diff --git a/source/limits.tex b/source/limits.tex
-index efd4eb00..12180661 100644
+index 877f21f3..7fc0a416 100644
--- a/source/limits.tex
+++ b/source/limits.tex
@@ -123,5 +123,4 @@ Handlers per try block\iref{except.handle} [256].
@@ -7234,10 +6887,10 @@ index efd4eb00..12180661 100644
-
\end{itemize}
diff --git a/source/memory.tex b/source/memory.tex
-index d4451b02..add15a22 100644
+index be9812fa..fb901823 100644
--- a/source/memory.tex
+++ b/source/memory.tex
-@@ -1455,7 +1455,6 @@ when considered as an unevaluated operand.
+@@ -1481,7 +1481,6 @@ when considered as an unevaluated operand.
\pnum
Let \exposid{pair-constructor} be an exposition-only class defined as follows:
@@ -7245,7 +6898,7 @@ index d4451b02..add15a22 100644
\begin{codeblock}
class @\exposid{pair-constructor}@ {
using @\exposid{pair-type}@ = remove_cv_t; // \expos
-@@ -3565,7 +3564,6 @@ template shared_ptr(nullptr_t p, D d, A a);
+@@ -3620,7 +3619,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a);
\tcode{is_move_constructible_v} is \tcode{true}, and
\tcode{d(p)} is a well-formed expression.
For the first two overloads:
@@ -7254,30 +6907,30 @@ index d4451b02..add15a22 100644
\item
If \tcode{T} is an array type, then either
diff --git a/source/meta.tex b/source/meta.tex
-index 9484e79a..cd75eee5 100644
+index 7c1dbfb9..eda69180 100644
--- a/source/meta.tex
+++ b/source/meta.tex
-@@ -1623,7 +1623,6 @@ is_base_of_v // \tcode{false}
- The predicate condition for a template specialization \tcode{is_convertible}
- shall be satisfied if and only if the return expression in the following code would be
+@@ -1684,7 +1684,6 @@ The predicate condition for a template specialization \tcode{is_convertible();
-@@ -2105,7 +2104,6 @@ If any of the types computed above is ill-formed, then
+@@ -2194,7 +2193,6 @@ If any of the types computed above is ill-formed, then
\pnum
For the \tcode{common_type} trait applied to a template parameter pack \tcode{T} of types,
- the member \tcode{type} shall be either defined or not present as follows:
+ the member \tcode{type} shall be either declared or not present as follows:
-
\begin{itemize}
\item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}.
diff --git a/source/numerics.tex b/source/numerics.tex
-index 9402c55b..c37ff4f3 100644
+index f3299984..a0370273 100644
--- a/source/numerics.tex
+++ b/source/numerics.tex
-@@ -605,7 +605,6 @@ template constexpr complex operator+(const complex& lhs);
+@@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs);
\pnum
\returns
\tcode{complex(lhs)}.
@@ -7285,7 +6938,7 @@ index 9402c55b..c37ff4f3 100644
\end{itemdescr}
\begin{itemdecl}
-@@ -744,7 +743,6 @@ template
+@@ -745,7 +744,6 @@ template
\effects
Inserts the complex number \tcode{x}
onto the stream \tcode{o} as if it were implemented as follows:
@@ -7293,7 +6946,7 @@ index 9402c55b..c37ff4f3 100644
\begin{codeblock}
basic_ostringstream s;
s.flags(o.flags());
-@@ -4276,7 +4274,6 @@ template
+@@ -4275,7 +4273,6 @@ template
each operation is to be carried out modulo $2^{32}$,
each indexing operator applied to \tcode{begin} is to be taken modulo $n$,
and $T(x)$ is defined as $x \xor (x \rightshift 27)$:
@@ -7301,7 +6954,7 @@ index 9402c55b..c37ff4f3 100644
\begin{itemize}
\item
By way of initialization,
-@@ -8355,7 +8352,6 @@ A unique function with the indicated name can be applied (unqualified)
+@@ -8356,7 +8353,6 @@ A unique function with the indicated name can be applied (unqualified)
to an operand of type \tcode{T}.
This function returns a value of type \tcode{T}
or which can be unambiguously implicitly converted to type \tcode{T}.
@@ -7309,7 +6962,7 @@ index 9402c55b..c37ff4f3 100644
\end{itemdescr}
\rSec3[valarray.special]{Specialized algorithms}
-@@ -8371,7 +8367,6 @@ template void swap(valarray& x, valarray& y) noexcept;
+@@ -8372,7 +8368,6 @@ template void swap(valarray& x, valarray& y) noexcept;
Equivalent to \tcode{x.swap(y)}.
\end{itemdescr}
@@ -7317,7 +6970,7 @@ index 9402c55b..c37ff4f3 100644
\rSec2[class.slice]{Class \tcode{slice}}
\rSec3[class.slice.overview]{Overview}
-@@ -8791,7 +8786,6 @@ namespace std {
+@@ -8792,7 +8787,6 @@ namespace std {
This template is a helper template used by the
\tcode{gslice}
subscript operator
@@ -7325,7 +6978,7 @@ index 9402c55b..c37ff4f3 100644
\indexlibraryglobal{gslice_array}%
\indexlibraryglobal{valarray}%
\begin{itemdecl}
-@@ -8917,7 +8911,6 @@ namespace std {
+@@ -8918,7 +8912,6 @@ namespace std {
\pnum
This template is a helper template used by the mask subscript operator:
@@ -7333,7 +6986,7 @@ index 9402c55b..c37ff4f3 100644
\indexlibrarymember{operator[]}{mask_array}%
\begin{itemdecl}
mask_array valarray::operator[](const valarray&);
-@@ -9034,7 +9027,6 @@ namespace std {
+@@ -9035,7 +9028,6 @@ namespace std {
\pnum
This template is a helper template used by the indirect subscript operator
@@ -7342,10 +6995,10 @@ index 9402c55b..c37ff4f3 100644
\begin{itemdecl}
indirect_array valarray::operator[](const valarray&);
diff --git a/source/overloading.tex b/source/overloading.tex
-index db9317ec..d6a68599 100644
+index d3250f2d..c5328c3c 100644
--- a/source/overloading.tex
+++ b/source/overloading.tex
-@@ -98,7 +98,6 @@ the list of arguments in its own unique way.
+@@ -103,7 +103,6 @@ the list of arguments in its own unique way.
But, once the
candidate functions and argument lists have been identified, the
selection of the best function is the same in all cases:
@@ -7353,7 +7006,7 @@ index db9317ec..d6a68599 100644
\begin{itemize}
\item
First, a subset of the candidate functions (those that have
-@@ -391,7 +390,6 @@ Such a
+@@ -396,7 +395,6 @@ Such a
\grammarterm{postfix-expression},
perhaps nested arbitrarily deep in
parentheses, has one of the following forms:
@@ -7361,7 +7014,7 @@ index db9317ec..d6a68599 100644
\begin{ncbnf}
postfix-expression:\br
postfix-expression \terminal{.} id-expression\br
-@@ -998,7 +996,6 @@ The lookup rules for operators in expressions are different than
+@@ -1018,7 +1016,6 @@ The lookup rules for operators in expressions are different than
the lookup
rules for operator function names in a function call, as shown in the following
example:
@@ -7369,7 +7022,7 @@ index db9317ec..d6a68599 100644
\begin{codeblock}
struct A { };
void operator + (A, A);
-@@ -1060,7 +1057,6 @@ Assuming that
+@@ -1081,7 +1078,6 @@ Assuming that
\tcode{T}
a class type,
the candidate functions are selected as follows:
@@ -7377,7 +7030,7 @@ index db9317ec..d6a68599 100644
\begin{itemize}
\item
The non-explicit constructors\iref{class.conv.ctor} of
-@@ -1106,7 +1102,6 @@ conversion function to be invoked.
+@@ -1127,7 +1123,6 @@ conversion function to be invoked.
Assuming that ``\cv{} \tcode{T}'' is the
type of the object being initialized,
the candidate functions are selected as follows:
@@ -7385,7 +7038,7 @@ index db9317ec..d6a68599 100644
\begin{itemize}
\item
The permissible types for non-explicit conversion functions are
-@@ -1178,7 +1173,6 @@ list-initialized such that \ref{dcl.init.list} specifies that overload resolutio
+@@ -1199,7 +1194,6 @@ list-initialized such that \ref{dcl.init.list} specifies that overload resolutio
is performed according to the rules in this subclause
or when forming a list-initialization sequence according to \ref{over.ics.list},
overload resolution selects the constructor in two phases:
@@ -7393,7 +7046,7 @@ index db9317ec..d6a68599 100644
\begin{itemize}
\item
If the initializer list is not empty or \tcode{T} has no default constructor,
-@@ -1259,7 +1253,6 @@ called the \defn{copy deduction candidate}.
+@@ -1281,7 +1275,6 @@ called the \defn{copy deduction candidate}.
For each \grammarterm{deduction-guide},
a function or function template
with the following properties:
@@ -7401,7 +7054,7 @@ index db9317ec..d6a68599 100644
\begin{itemize}
\item
The \grammarterm{template-head}, if any,
-@@ -2684,7 +2677,6 @@ sequence}{over.ics.ellipsis}.
+@@ -2783,7 +2776,6 @@ sequence}{over.ics.ellipsis}.
Two implicit conversion sequences of the same form are
indistinguishable conversion sequences unless one of the
following rules applies:
@@ -7409,7 +7062,7 @@ index db9317ec..d6a68599 100644
\begin{itemize}
\item
List-initialization sequence \tcode{L1} is a better conversion sequence than
-@@ -2916,7 +2908,6 @@ int i = f(a); // calls \tcode{f(int)}, because \tcode{short} $
+@@ -3015,7 +3007,6 @@ int i = f(a); // calls \tcode{f(int)}, because \tcode{short} $
// better than \tcode{short} $\to$ \tcode{float}.
\end{codeblock}
\end{example}
@@ -7417,7 +7070,7 @@ index db9317ec..d6a68599 100644
\end{itemize}
\pnum
-@@ -2925,7 +2916,6 @@ better conversion than a Promotion, which is a better conversion than
+@@ -3024,7 +3015,6 @@ better conversion than a Promotion, which is a better conversion than
a Conversion.
Two conversion sequences with the same rank are indistinguishable unless
one of the following rules applies:
@@ -7425,7 +7078,7 @@ index db9317ec..d6a68599 100644
\begin{itemize}
\item
A conversion that does not convert a pointer or a pointer to member
-@@ -4092,7 +4082,6 @@ is a \defnx{literal operator template}{literal!operator!template}.
+@@ -4182,7 +4172,6 @@ is a \defnx{literal operator template}{literal!operator!template}.
\pnum
The declaration of a literal operator shall have a
\grammarterm{parameter-declaration-clause} equivalent to one of the following:
@@ -7434,10 +7087,10 @@ index db9317ec..d6a68599 100644
const char*
unsigned long long int
diff --git a/source/preprocessor.tex b/source/preprocessor.tex
-index 885db47e..2d3e5cb6 100644
+index b3cf7fc7..cd5f8947 100644
--- a/source/preprocessor.tex
+++ b/source/preprocessor.tex
-@@ -183,7 +183,6 @@ begins with the first character in the source file
+@@ -199,7 +199,6 @@ begins with the first character in the source file
(optionally after whitespace containing no new-line characters) or
follows whitespace containing at least one new-line character,
and is
@@ -7453,7 +7106,7 @@ index 885db47e..2d3e5cb6 100644
\begin{codeblock}
#if __has_include()
# include
-@@ -804,14 +802,12 @@ However, using the \tcode{< >} form for headers provided
+@@ -806,14 +804,12 @@ However, using the \tcode{< >} form for headers provided
with the implementation and the \tcode{" "} form for sources
outside the control of the implementation
achieves wider portability. For instance:
@@ -7468,7 +7121,7 @@ index 885db47e..2d3e5cb6 100644
\end{note}
\pnum
-@@ -819,7 +815,6 @@ achieves wider portability. For instance:
+@@ -821,7 +817,6 @@ achieves wider portability. For instance:
This illustrates macro-replaced
\tcode{\#include}
directives:
@@ -7476,7 +7129,7 @@ index 885db47e..2d3e5cb6 100644
\begin{codeblock}
#if VERSION == 1
#define INCFILE "vers1.h"
-@@ -1895,7 +1890,6 @@ is optional.
+@@ -1975,7 +1970,6 @@ is optional.
\pnum
\begin{example}
In the following fragment:
@@ -7484,7 +7137,7 @@ index 885db47e..2d3e5cb6 100644
\begin{codeblock}
#define hash_hash # ## #
#define mkstr(a) # a
-@@ -1905,7 +1899,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";}
+@@ -1985,7 +1979,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";}
\end{codeblock}
The expansion produces, at various stages:
@@ -7492,7 +7145,7 @@ index 885db47e..2d3e5cb6 100644
\begin{codeblock}
join(x, y)
in_between(x hash_hash y)
-@@ -2135,7 +2128,6 @@ has no effect.
+@@ -2221,7 +2214,6 @@ has no effect.
\pnum
The following macro names shall be defined by the implementation:
@@ -7500,7 +7153,7 @@ index 885db47e..2d3e5cb6 100644
\begin{description}
\item
-@@ -2365,7 +2357,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali
+@@ -2455,7 +2447,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali
\pnum
The following macro names are conditionally defined by the implementation:
@@ -7508,19 +7161,19 @@ index 885db47e..2d3e5cb6 100644
\begin{description}
\item
\indextext{__stdc__@\mname{STDC}}%
-@@ -2400,7 +2391,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}.
+@@ -2490,7 +2481,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}.
\mname{STDCPP_THREADS}\\
- Defined, and has the value integer literal 1, if and only if a program
+ Defined, and has the value integer literal \tcode{1}, if and only if a program
can have more than one \link{thread of execution}{intro.multithread}.
-
\end{description}
\pnum
diff --git a/source/ranges.tex b/source/ranges.tex
-index c16eba7f..24fc04eb 100644
+index 29b5ae53..912546d8 100644
--- a/source/ranges.tex
+++ b/source/ranges.tex
-@@ -651,7 +651,6 @@ object\iref{customization.point.object}.
+@@ -657,7 +657,6 @@ object\iref{customization.point.object}.
Given a subexpression \tcode{E} with type \tcode{T},
let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}.
Then:
@@ -7528,7 +7181,7 @@ index c16eba7f..24fc04eb 100644
\begin{itemize}
\item
If \tcode{E} is an rvalue and
-@@ -712,7 +711,6 @@ object\iref{customization.point.object}.
+@@ -718,7 +717,6 @@ object\iref{customization.point.object}.
Given a subexpression \tcode{E} with type \tcode{T},
let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}.
Then:
@@ -7536,7 +7189,7 @@ index c16eba7f..24fc04eb 100644
\begin{itemize}
\item
If \tcode{E} is an rvalue and
-@@ -838,7 +836,6 @@ object\iref{customization.point.object}.
+@@ -844,7 +842,6 @@ object\iref{customization.point.object}.
Given a subexpression \tcode{E} with type \tcode{T},
let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}.
Then:
@@ -7544,7 +7197,7 @@ index c16eba7f..24fc04eb 100644
\begin{itemize}
\item
If \tcode{E} is an rvalue and
-@@ -902,7 +899,6 @@ object\iref{customization.point.object}.
+@@ -908,7 +905,6 @@ object\iref{customization.point.object}.
Given a subexpression \tcode{E} with type \tcode{T},
let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}.
Then:
@@ -7552,7 +7205,7 @@ index c16eba7f..24fc04eb 100644
\begin{itemize}
\item
If \tcode{E} is an rvalue and
-@@ -1027,7 +1023,6 @@ object\iref{customization.point.object}.
+@@ -1033,7 +1029,6 @@ object\iref{customization.point.object}.
Given a subexpression \tcode{E} with type \tcode{T},
let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}.
Then:
@@ -7560,7 +7213,7 @@ index c16eba7f..24fc04eb 100644
\begin{itemize}
\item
If \tcode{T} is an array of unknown bound\iref{term.array.type},
-@@ -1157,7 +1152,6 @@ object\iref{customization.point.object}.
+@@ -1163,7 +1158,6 @@ object\iref{customization.point.object}.
Given a subexpression \tcode{E} with type \tcode{T},
let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}.
Then:
@@ -7568,7 +7221,7 @@ index c16eba7f..24fc04eb 100644
\begin{itemize}
\item
If \tcode{T} is an array of unknown bound\iref{term.array.type},
-@@ -1208,7 +1202,6 @@ object\iref{customization.point.object}.
+@@ -1214,7 +1208,6 @@ object\iref{customization.point.object}.
Given a subexpression \tcode{E} with type \tcode{T},
let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}.
Then:
@@ -7576,7 +7229,7 @@ index c16eba7f..24fc04eb 100644
\begin{itemize}
\item
If \tcode{E} is an rvalue and
-@@ -1734,7 +1727,6 @@ manipulating ranges.
+@@ -1755,7 +1748,6 @@ manipulating ranges.
\pnum
Many of the types in \ref{range.utility} are specified in terms of
the following exposition-only concepts:
@@ -7584,7 +7237,7 @@ index c16eba7f..24fc04eb 100644
\begin{codeblock}
template
concept @\defexposconceptnc{simple-view}@ = // \expos
-@@ -5852,7 +5844,6 @@ If \tcode{decltype((F))} does not model
+@@ -5962,7 +5954,6 @@ If \tcode{decltype((F))} does not model
\tcode{views::take(E, F)} is ill-formed.
Otherwise, the expression \tcode{views::take(E, F)}
is expression-equivalent to:
@@ -7592,7 +7245,7 @@ index c16eba7f..24fc04eb 100644
\begin{itemize}
\item
If \tcode{T} is a specialization
-@@ -5873,7 +5864,6 @@ then
+@@ -5988,7 +5979,6 @@ then
ranges::be\-gin(E) + std::min(ranges::distance(E), F))},
except that \tcode{E} is evaluated only once,
where \tcode{U} is a type determined as follows:
@@ -7600,7 +7253,7 @@ index c16eba7f..24fc04eb 100644
\begin{itemize}
\item if \tcode{T} is a specialization of \tcode{span},
then \tcode{U} is \tcode{span};
-@@ -6335,7 +6325,6 @@ If \tcode{decltype((F))} does not model
+@@ -6450,7 +6440,6 @@ If \tcode{decltype((F))} does not model
\tcode{views::drop(E, F)} is ill-formed.
Otherwise, the expression \tcode{views::drop(E, F)}
is expression-equivalent to:
@@ -7608,7 +7261,7 @@ index c16eba7f..24fc04eb 100644
\begin{itemize}
\item
If \tcode{T} is a specialization of
-@@ -7409,7 +7398,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and
+@@ -7531,7 +7520,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and
\exposid{Base} and \exposid{InnerBase} each model \libconcept{forward_range}.
In that case,
\tcode{\exposid{iterator}::iterator_category} is defined as follows:
@@ -7616,7 +7269,7 @@ index c16eba7f..24fc04eb 100644
\begin{itemize}
\item
Let \placeholder{OUTERC} denote
-@@ -9697,7 +9685,6 @@ appears in the immediate context of a template instantiation.
+@@ -9855,7 +9843,6 @@ appears in the immediate context of a template instantiation.
\end{note}
Otherwise, \tcode{views::counted(E, F)}
is expression-equivalent to:
@@ -7625,10 +7278,10 @@ index c16eba7f..24fc04eb 100644
\item
If \tcode{T} models \libconcept{contiguous_iterator},
diff --git a/source/statements.tex b/source/statements.tex
-index 9782eab7..62f29828 100644
+index 301d6304..65faf674 100644
--- a/source/statements.tex
+++ b/source/statements.tex
-@@ -719,7 +719,6 @@ exposition only; and
+@@ -731,7 +731,6 @@ exposition only; and
\item
\exposid{begin-expr} and \exposid{end-expr} are determined as follows:
@@ -7636,27 +7289,11 @@ index 9782eab7..62f29828 100644
\begin{itemize}
\item if the type of \exposid{range} is a reference to an
array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are
-@@ -850,7 +849,6 @@ The \keyword{continue} statement
- causes control to pass to the loop-continuation portion of the
- smallest such enclosing statement, that is, to the end
- of the loop. More precisely, in each of the statements
--
- \begin{minipage}{.30\hsize}
- \begin{codeblock}
- while (foo) {
-@@ -881,7 +879,6 @@ for (;;) {
- }
- \end{codeblock}
- \end{minipage}
--
- a \keyword{continue} not contained in an enclosed iteration statement is
- equivalent to \tcode{goto} \exposid{contin}.
-
diff --git a/source/support.tex b/source/support.tex
-index ff85b31b..b67bffbb 100644
+index 0dd4cd06..90a3972a 100644
--- a/source/support.tex
+++ b/source/support.tex
-@@ -2450,7 +2450,6 @@ This requirement is binding on any replacement versions of these functions.
+@@ -2440,7 +2440,6 @@ This requirement is binding on any replacement versions of these functions.
\pnum
\default
@@ -7664,7 +7301,7 @@ index ff85b31b..b67bffbb 100644
\begin{itemize}
\item
Executes a loop:
-@@ -2929,7 +2928,6 @@ Intentionally performs no other action.
+@@ -2919,7 +2918,6 @@ Intentionally performs no other action.
\pnum
\begin{example}
This can be useful for constructing an object at a known address:
@@ -7672,7 +7309,7 @@ index ff85b31b..b67bffbb 100644
\begin{codeblock}
void* place = operator new(sizeof(Something));
Something* p = new (place) Something();
-@@ -4821,7 +4819,6 @@ are collectively termed the \defn{comparison category types}.
+@@ -4822,7 +4820,6 @@ are collectively termed the \defn{comparison category types}.
Each is specified in terms of an exposition-only data member named \tcode{value}
whose value typically corresponds to that of an enumerator
from one of the following exposition-only enumerations:
@@ -7680,19 +7317,19 @@ index ff85b31b..b67bffbb 100644
\begin{codeblock}
enum class @\placeholdernc{ord}@ { @\placeholdernc{equal}@ = 0, @\placeholdernc{equivalent}@ = @\placeholdernc{equal}@, @\placeholdernc{less}@ = -1, @\placeholdernc{greater}@ = 1 }; // \expos
enum class @\placeholdernc{ncmp}@ { @\placeholdernc{unordered}@ = -127 }; // \expos
-@@ -5731,7 +5728,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and
+@@ -5780,7 +5777,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and
denotes a type\iref{temp.deduct},
then \tcode{coroutine_traits} has the following publicly
accessible member:
-
\begin{codeblock}
- using promise_type = typename R::promise_type;
+ using promise_type = R::promise_type;
\end{codeblock}
diff --git a/source/templates.tex b/source/templates.tex
-index cb2c8a8e..a4582e22 100644
+index ea6af80c..23c257ac 100644
--- a/source/templates.tex
+++ b/source/templates.tex
-@@ -233,7 +233,6 @@ in some translation unit; no diagnostic is required.
+@@ -257,7 +257,6 @@ in some translation unit; no diagnostic is required.
The syntax for
\grammarterm{template-parameter}{s}
is:
@@ -7700,7 +7337,7 @@ index cb2c8a8e..a4582e22 100644
\begin{bnf}
\nontermdef{template-parameter}\br
type-parameter\br
-@@ -1525,7 +1524,6 @@ for function templates}{temp.func.order}.
+@@ -1638,7 +1637,6 @@ for function templates}{temp.func.order}.
Given an invented class template \tcode{X}
with the \grammarterm{template-head} of \tcode{A} (including default arguments
and \grammarterm{requires-clause}, if any):
@@ -7708,7 +7345,7 @@ index cb2c8a8e..a4582e22 100644
\begin{itemize}
\item
Each of the two function templates has the same template parameters
-@@ -1923,7 +1921,6 @@ or templated function declaration\iref{dcl.fct}
+@@ -2035,7 +2033,6 @@ or templated function declaration\iref{dcl.fct}
can be constrained by the use of a \grammarterm{requires-clause}.
This allows the specification of constraints for that declaration as
an expression:
@@ -7716,7 +7353,7 @@ index cb2c8a8e..a4582e22 100644
\begin{bnf}
\nontermdef{constraint-expression}\br
logical-or-expression
-@@ -1939,7 +1936,6 @@ that are used to constrain the declaration.
+@@ -2051,7 +2048,6 @@ that are used to constrain the declaration.
\pnum
\indextext{constraint!associated|see{associated constraints}}%
A declaration's \defn{associated constraints} are defined as follows:
@@ -7724,7 +7361,7 @@ index cb2c8a8e..a4582e22 100644
\begin{itemize}
\item If there are no introduced \grammarterm{constraint-expression}{s},
the declaration has no associated constraints.
-@@ -2722,7 +2718,6 @@ public:
+@@ -2842,7 +2838,6 @@ public:
declares three member functions of a class template.
The subscript function can be defined like this:
@@ -7732,7 +7369,7 @@ index cb2c8a8e..a4582e22 100644
\begin{codeblock}
template T& Array::operator[](int i) {
if (i<0 || sz<=i) error("Array: range error");
-@@ -3111,7 +3106,6 @@ produces zero or more instantiations of the pattern in a list (described below).
+@@ -3234,7 +3229,6 @@ produces zero or more instantiations of the pattern in a list (described below).
The form of the pattern
depends on the context in which the expansion occurs. Pack
expansions can occur in the following contexts:
@@ -7740,7 +7377,7 @@ index cb2c8a8e..a4582e22 100644
\begin{itemize}
\item In a function parameter pack\iref{dcl.fct}; the pattern is the
\grammarterm{parameter-declaration} without the ellipsis.
-@@ -3713,7 +3707,6 @@ All other constant template arguments are specialized.
+@@ -3840,7 +3834,6 @@ All other constant template arguments are specialized.
\pnum
Within the argument list of a partial specialization,
the following restrictions apply:
@@ -7748,7 +7385,7 @@ index cb2c8a8e..a4582e22 100644
\begin{itemize}
\item
The type of a template parameter corresponding to a specialized constant template
-@@ -3727,7 +3720,6 @@ template< int X, int (*array_ptr)[X] > class A {};
+@@ -3854,7 +3847,6 @@ template< int X, int (*array_ptr)[X] > class A {};
int array[5];
template< int X > class A { }; // error
\end{codeblock}
@@ -7756,7 +7393,7 @@ index cb2c8a8e..a4582e22 100644
\end{example}
\item
The partial specialization shall be more specialized than the primary
-@@ -3853,7 +3845,6 @@ the first is \defn{more specialized} than the second if, given the following
+@@ -3980,7 +3972,6 @@ the first is \defn{more specialized} than the second if, given the following
rewrite to two function templates, the first function template is more
specialized than the second according to the \link{ordering rules for function
templates}{temp.func.order}:
@@ -7764,7 +7401,7 @@ index cb2c8a8e..a4582e22 100644
\begin{itemize}
\item
Each of the two
-@@ -4005,7 +3996,6 @@ A::B abci; // uses \#1
+@@ -4132,7 +4123,6 @@ A::B abci; // uses \#1
A function template defines an unbounded set of related functions.
\begin{example}
A family of sort functions can be declared like this:
@@ -7772,7 +7409,7 @@ index cb2c8a8e..a4582e22 100644
\begin{codeblock}
template class Array { };
template void sort(Array&);
-@@ -4060,7 +4050,6 @@ void h(int* p) {
+@@ -4187,7 +4177,6 @@ void h(int* p) {
}
\end{codeblock}
\end{minipage}
@@ -7780,7 +7417,7 @@ index cb2c8a8e..a4582e22 100644
\end{example}
\pnum
-@@ -4246,7 +4235,6 @@ to guarantee that functionally equivalent declarations will be treated
+@@ -4373,7 +4362,6 @@ to guarantee that functionally equivalent declarations will be treated
as distinct.
For example, the last two declarations are functionally
equivalent and would cause a program to be ill-formed:
@@ -7788,7 +7425,7 @@ index cb2c8a8e..a4582e22 100644
\begin{codeblock}
// guaranteed to be the same
template void f(A, A);
-@@ -4339,7 +4327,6 @@ then the order of the function parameters in its transformed template
+@@ -4464,7 +4452,6 @@ then the order of the function parameters in its transformed template
is reversed.
For a function template $M$ with cv-qualifiers \cv{}
that is a member of a class $A$:
@@ -7796,7 +7433,7 @@ index cb2c8a8e..a4582e22 100644
\begin{itemize}
\item
The type $X(M)$ is ``rvalue reference to \cv{}~$A$''
-@@ -4584,7 +4571,6 @@ template class TT>
+@@ -4722,7 +4709,6 @@ template class TT>
void g(TT>);
g(v); // OK, \tcode{TT} = \tcode{vector}
\end{codeblock}
@@ -7804,7 +7441,7 @@ index cb2c8a8e..a4582e22 100644
\end{example}
\pnum
-@@ -5434,7 +5420,6 @@ of a class that is the current instantiation.
+@@ -5588,7 +5574,6 @@ of a class that is the current instantiation.
\pnum
A qualified name\iref{basic.lookup.qual} is dependent if
@@ -7812,7 +7449,7 @@ index cb2c8a8e..a4582e22 100644
\begin{itemize}
\item
it is a \grammarterm{conversion-function-id}
-@@ -5671,7 +5656,6 @@ specified by the
+@@ -5839,7 +5824,6 @@ specified by the
or
\grammarterm{new-type-id}
is dependent, even if any subexpression is type-dependent:
@@ -7820,7 +7457,7 @@ index cb2c8a8e..a4582e22 100644
\begin{ncsimplebnf}
simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br
simple-type-specifier braced-init-list\br
-@@ -5689,7 +5673,6 @@ typename-specifier braced-init-list\br
+@@ -5857,7 +5841,6 @@ typename-specifier braced-init-list\br
\pnum
Expressions of the following forms are never type-dependent (because the type
of the expression cannot be dependent):
@@ -7828,7 +7465,7 @@ index cb2c8a8e..a4582e22 100644
\begin{ncsimplebnf}
literal\br
\keyword{sizeof} unary-expression\br
-@@ -5784,7 +5767,6 @@ Expressions of the following form are value-dependent if the
+@@ -5968,7 +5951,6 @@ Expressions of the following form are value-dependent if the
is type-dependent or the
\grammarterm{type-id}
is dependent:
@@ -7836,7 +7473,7 @@ index cb2c8a8e..a4582e22 100644
\begin{ncsimplebnf}
\keyword{sizeof} unary-expression\br
\keyword{sizeof} \terminal{(} type-id \terminal{)}\br
-@@ -5812,7 +5794,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list}
+@@ -5996,7 +5978,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list}
is value-dependent or
any \grammarterm{assignment-expression} in the \grammarterm{braced-init-list}
is value-dependent:
@@ -7844,7 +7481,7 @@ index cb2c8a8e..a4582e22 100644
\begin{ncsimplebnf}
simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br
typename-specifier \terminal{(} \opt{expression-list} \terminal{)}\br
-@@ -5827,7 +5808,6 @@ typename-specifier braced-init-list\br
+@@ -6011,7 +5992,6 @@ typename-specifier braced-init-list\br
\pnum
Expressions of the following form are value-dependent:
@@ -7852,7 +7489,7 @@ index cb2c8a8e..a4582e22 100644
\begin{ncsimplebnf}
\keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br
fold-expression
-@@ -6724,7 +6704,6 @@ template.
+@@ -7018,7 +6998,6 @@ template.
\pnum
The syntax for explicit instantiation is:
@@ -7860,7 +7497,7 @@ index cb2c8a8e..a4582e22 100644
\begin{bnf}
\nontermdef{explicit-instantiation}\br
\opt{\keyword{extern}} \keyword{template} declaration
-@@ -7199,7 +7178,6 @@ otherwise, it is a declaration.
+@@ -7493,7 +7472,6 @@ otherwise, it is a declaration.
The definition of a static data member of a template
for which default-initialization is desired
can use functional cast notation\iref{expr.type.conv}:
@@ -7868,7 +7505,7 @@ index cb2c8a8e..a4582e22 100644
\begin{codeblock}
template<> X Q::x; // declaration
template<> X Q::x (); // error: declares a function
-@@ -7458,7 +7436,6 @@ An empty template argument list can be used to indicate that a given
+@@ -7752,7 +7730,6 @@ An empty template argument list can be used to indicate that a given
use refers to a specialization of a function template even when a
non-template function\iref{dcl.fct} is visible that would otherwise be used.
For example:
@@ -7876,7 +7513,7 @@ index cb2c8a8e..a4582e22 100644
\begin{codeblock}
template int f(T); // \#1
int f(int); // \#2
-@@ -8039,7 +8016,6 @@ void h(int x, float& y) {
+@@ -8354,7 +8331,6 @@ void h(int x, float& y) {
If
\tcode{P}
is not a reference type:
@@ -7884,7 +7521,7 @@ index cb2c8a8e..a4582e22 100644
\begin{itemize}
\item
If
-@@ -8134,7 +8110,6 @@ the type
+@@ -8449,7 +8425,6 @@ the type
is transformed as described above).
However, there are
three cases that allow a difference:
@@ -7892,7 +7529,7 @@ index cb2c8a8e..a4582e22 100644
\begin{itemize}
\item
If the original
-@@ -8322,7 +8297,6 @@ of \tcode{P} for type deduction and for any further references to or transformat
+@@ -8639,7 +8614,6 @@ of \tcode{P} for type deduction and for any further references to or transformat
If
\tcode{A}
is not a reference type:
@@ -7900,7 +7537,7 @@ index cb2c8a8e..a4582e22 100644
\begin{itemize}
\item
If
-@@ -8368,7 +8342,6 @@ values that will make the deduced
+@@ -8685,7 +8659,6 @@ values that will make the deduced
identical to
\tcode{A}.
However, certain attributes of \tcode{A} may be ignored:
@@ -7908,7 +7545,7 @@ index cb2c8a8e..a4582e22 100644
\begin{itemize}
\item
If the original \tcode{A} is a reference type,
-@@ -8413,7 +8386,6 @@ the argument template and template-1 as the parameter template.
+@@ -8730,7 +8703,6 @@ the argument template and template-1 as the parameter template.
\pnum
The types used to determine the ordering depend on the context in which
the partial ordering is done:
@@ -7916,7 +7553,7 @@ index cb2c8a8e..a4582e22 100644
\begin{itemize}
\item
In the context of a function call, the types used are those function parameter types
-@@ -8441,7 +8413,6 @@ and
+@@ -8758,7 +8730,6 @@ and
\pnum
Before the partial ordering is done, certain transformations are performed
on the types used for partial ordering:
@@ -7924,7 +7561,7 @@ index cb2c8a8e..a4582e22 100644
\begin{itemize}
\item
If
-@@ -8647,7 +8618,6 @@ A given type
+@@ -8962,7 +8933,6 @@ A given type
\tcode{P}
can be composed from a number of other
types, templates, and constant template argument values:
@@ -7932,7 +7569,7 @@ index cb2c8a8e..a4582e22 100644
\begin{itemize}
\item
A function type includes the types of each of the function parameters,
-@@ -8689,7 +8659,6 @@ need not have the same form.
+@@ -9004,7 +8974,6 @@ need not have the same form.
\pnum
The non-deduced contexts are:
@@ -7940,7 +7577,7 @@ index cb2c8a8e..a4582e22 100644
\indextext{context!non-deduced}%
\begin{itemize}
\item
-@@ -8780,7 +8749,6 @@ is deduced.
+@@ -9099,7 +9068,6 @@ is deduced.
\begin{example}
Here is an example in which different parameter/argument pairs produce
inconsistent template argument deductions:
@@ -7948,7 +7585,7 @@ index cb2c8a8e..a4582e22 100644
\begin{codeblock}
template void f(T x, T y) { @\commentellip@ }
struct A { @\commentellip@ };
-@@ -8797,7 +8765,6 @@ Here is an example where two template arguments are deduced from a
+@@ -9116,7 +9084,6 @@ Here is an example where two template arguments are deduced from a
single function parameter/argument pair.
This can lead to conflicts
that cause type deduction to fail:
@@ -7956,7 +7593,7 @@ index cb2c8a8e..a4582e22 100644
\begin{codeblock}
template void f(T (*)(T, U, U));
-@@ -8814,7 +8781,6 @@ void r() {
+@@ -9133,7 +9100,6 @@ void r() {
Here is an example where the exception specification of a function type
is deduced:
@@ -7964,7 +7601,7 @@ index cb2c8a8e..a4582e22 100644
\begin{codeblock}
template void f1(void (*)() noexcept(E));
template struct A { };
-@@ -8833,7 +8799,6 @@ void h() {
+@@ -9152,7 +9118,6 @@ void h() {
Here is an example where a qualification conversion applies between the
argument type on the function call and the deduced template argument type:
@@ -7972,7 +7609,7 @@ index cb2c8a8e..a4582e22 100644
\begin{codeblock}
template void f(const T*) { }
int* p;
-@@ -8844,7 +8809,6 @@ void s() {
+@@ -9163,7 +9128,6 @@ void s() {
Here is an example where the template argument is used to instantiate
a derived class type of the corresponding function parameter type:
@@ -7981,10 +7618,10 @@ index cb2c8a8e..a4582e22 100644
template struct B { };
template struct D : public B {};
diff --git a/source/threads.tex b/source/threads.tex
-index 8a388c9f..8c1b16d3 100644
+index 7a2d110e..6b8778ac 100644
--- a/source/threads.tex
+++ b/source/threads.tex
-@@ -6633,7 +6633,6 @@ and visible to other threads.
+@@ -7365,7 +7365,6 @@ and visible to other threads.
\pnum
The expression \tcode{m.lock()} is well-formed and has the following semantics:
@@ -7992,7 +7629,7 @@ index 8a388c9f..8c1b16d3 100644
\begin{itemdescr}
\pnum
\expects
-@@ -6676,7 +6675,6 @@ that a deadlock would occur.
+@@ -7408,7 +7407,6 @@ that a deadlock would occur.
\pnum
The expression \tcode{m.try_lock()} is well-formed and has the following semantics:
@@ -8000,7 +7637,7 @@ index 8a388c9f..8c1b16d3 100644
\begin{itemdescr}
\pnum
\expects
-@@ -6722,7 +6720,6 @@ Nothing.
+@@ -7454,7 +7452,6 @@ Nothing.
\pnum
The expression \tcode{m.unlock()} is well-formed and has the following semantics:
@@ -8008,7 +7645,7 @@ index 8a388c9f..8c1b16d3 100644
\begin{itemdescr}
\pnum
\expects
-@@ -6877,7 +6874,6 @@ requirements\iref{thread.req.lockable.timed}.
+@@ -7609,7 +7606,6 @@ requirements\iref{thread.req.lockable.timed}.
\pnum
The expression \tcode{m.try_lock_for(rel_time)} is well-formed
and has the following semantics:
@@ -8016,7 +7653,7 @@ index 8a388c9f..8c1b16d3 100644
\begin{itemdescr}
\pnum
\expects
-@@ -6919,7 +6915,6 @@ Timeout-related exceptions\iref{thread.req.timing}.
+@@ -7651,7 +7647,6 @@ Timeout-related exceptions\iref{thread.req.timing}.
\pnum
The expression \tcode{m.try_lock_until(abs_time)} is well-formed
and has the following semantics:
@@ -8024,7 +7661,7 @@ index 8a388c9f..8c1b16d3 100644
\begin{itemdescr}
\pnum
\expects
-@@ -7106,7 +7101,6 @@ shared lock.
+@@ -7838,7 +7833,6 @@ shared lock.
\pnum
The expression \tcode{m.lock_shared()} is well-formed and has the
following semantics:
@@ -8032,7 +7669,7 @@ index 8a388c9f..8c1b16d3 100644
\begin{itemdescr}
\pnum
\expects
-@@ -7143,7 +7137,6 @@ The calling thread has a shared lock on the mutex.
+@@ -7875,7 +7869,6 @@ The calling thread has a shared lock on the mutex.
\pnum
The expression \tcode{m.unlock_shared()} is well-formed and has the following semantics:
@@ -8040,7 +7677,7 @@ index 8a388c9f..8c1b16d3 100644
\begin{itemdescr}
\pnum
\expects
-@@ -7168,7 +7161,6 @@ Nothing.
+@@ -7900,7 +7893,6 @@ Nothing.
\pnum
The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics:
@@ -8048,7 +7685,7 @@ index 8a388c9f..8c1b16d3 100644
\begin{itemdescr}
\pnum
\expects
-@@ -7271,7 +7263,6 @@ requirements\iref{thread.req.lockable.shared.timed}.
+@@ -8003,7 +7995,6 @@ requirements\iref{thread.req.lockable.shared.timed}.
\pnum
The expression \tcode{m.try_lock_shared_for(rel_time)} is well-formed and
has the following semantics:
@@ -8056,7 +7693,7 @@ index 8a388c9f..8c1b16d3 100644
\begin{itemdescr}
\pnum
\expects
-@@ -7316,7 +7307,6 @@ Timeout-related exceptions\iref{thread.req.timing}.
+@@ -8048,7 +8039,6 @@ Timeout-related exceptions\iref{thread.req.timing}.
\pnum
The expression \tcode{m.try_lock_shared_until(abs_time)} is well-formed
and has the following semantics:
@@ -8064,7 +7701,7 @@ index 8a388c9f..8c1b16d3 100644
\begin{itemdescr}
\pnum
\expects
-@@ -9454,7 +9444,6 @@ template
+@@ -10199,7 +10189,6 @@ template
\begin{itemdescr}
\pnum
\effects
@@ -8072,7 +7709,7 @@ index 8a388c9f..8c1b16d3 100644
\begin{itemize}
\item
\indextext{block (execution)}%
-@@ -10865,7 +10854,6 @@ shared state as \tcode{*this}.
+@@ -11589,7 +11578,6 @@ shared state as \tcode{*this}.
\pnum
\errors
@@ -8080,7 +7717,7 @@ index 8a388c9f..8c1b16d3 100644
\begin{itemize}
\item \tcode{future_already_retrieved} if \tcode{get_future} has already been called on
a \tcode{promise} with the same shared state as \tcode{*this}.
-@@ -10928,7 +10916,6 @@ already has a stored value or exception.
+@@ -11652,7 +11640,6 @@ already has a stored value or exception.
\pnum
\errors
@@ -8088,7 +7725,7 @@ index 8a388c9f..8c1b16d3 100644
\begin{itemize}
\item \tcode{promise_already_satisfied} if its shared state
already has a stored value or exception.
-@@ -11268,7 +11255,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e
+@@ -11992,7 +11979,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e
\pnum
\returns
@@ -8096,7 +7733,7 @@ index 8a388c9f..8c1b16d3 100644
\begin{itemize}
\item \tcode{future_status::deferred} if the shared state contains a deferred
function.
-@@ -11612,7 +11598,6 @@ the relative timeout\iref{thread.req.timing} specified by
+@@ -12336,7 +12322,6 @@ the relative timeout\iref{thread.req.timing} specified by
\pnum
\returns
@@ -8104,7 +7741,7 @@ index 8a388c9f..8c1b16d3 100644
\begin{itemize}
\item \tcode{future_status::deferred} if the shared state contains a deferred
function.
-@@ -11647,7 +11632,6 @@ absolute timeout\iref{thread.req.timing} specified by
+@@ -12371,7 +12356,6 @@ absolute timeout\iref{thread.req.timing} specified by
\pnum
\returns
@@ -8112,7 +7749,7 @@ index 8a388c9f..8c1b16d3 100644
\begin{itemize}
\item \tcode{future_status::deferred} if the shared state contains a deferred
function.
-@@ -11703,7 +11687,6 @@ The further behavior
+@@ -12427,7 +12411,6 @@ The further behavior
of the second function depends on the \tcode{policy} argument as follows (if
more than one of these conditions applies, the implementation may choose any of
the corresponding policies):
@@ -8121,10 +7758,10 @@ index 8a388c9f..8c1b16d3 100644
\item
If \tcode{launch::async} is set in \tcode{policy}, calls
diff --git a/source/time.tex b/source/time.tex
-index bdbef27b..39598098 100644
+index 62226224..6b4a0b79 100644
--- a/source/time.tex
+++ b/source/time.tex
-@@ -2074,7 +2074,6 @@ return os << s.str();
+@@ -2075,7 +2075,6 @@ return os << s.str();
\end{codeblock}
where \tcode{\placeholder{units-suffix}}
depends on the type \tcode{Period::type} as follows:
@@ -8132,7 +7769,7 @@ index bdbef27b..39598098 100644
\begin{itemize}
\item
If \tcode{Period::type} is \tcode{atto},
-@@ -2952,7 +2951,6 @@ for (auto i = 0; i < 8; ++i, u += 250ms)
+@@ -2953,7 +2952,6 @@ for (auto i = 0; i < 8; ++i, u += 250ms)
\end{codeblock}
Produces this output:
@@ -8140,7 +7777,7 @@ index bdbef27b..39598098 100644
\begin{outputblock}
2015-06-30 23:59:59.500 UTC
2015-06-30 23:59:59.750 UTC
-@@ -3158,7 +3156,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, tt);
+@@ -3159,7 +3157,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, tt);
\end{codeblock}
Produces this output:
@@ -8148,7 +7785,7 @@ index bdbef27b..39598098 100644
\begin{outputblock}
2000-01-01 00:00:00 UTC == 2000-01-01 00:00:32 TAI
\end{outputblock}
-@@ -3321,7 +3318,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, gt);
+@@ -3322,7 +3319,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, gt);
\end{codeblock}
Produces this output:
@@ -8156,7 +7793,7 @@ index bdbef27b..39598098 100644
\begin{outputblock}
2000-01-01 00:00:00 UTC == 2000-01-01 00:00:13 GPS
\end{outputblock}
-@@ -3390,7 +3386,6 @@ such as \tcode{std::file\-sys\-tem}.
+@@ -3391,7 +3387,6 @@ such as \tcode{std::file\-sys\-tem}.
\pnum
The type denoted by \tcode{file_clock} provides
precisely one of the following two sets of static member functions:
@@ -8164,7 +7801,7 @@ index bdbef27b..39598098 100644
\begin{codeblock}
template
static sys_time<@\seebelow@>
-@@ -3399,9 +3394,7 @@ template
+@@ -3400,9 +3395,7 @@ template
static file_time<@\seebelow@>
from_sys(const sys_time&);
\end{codeblock}
@@ -8174,7 +7811,7 @@ index bdbef27b..39598098 100644
\begin{codeblock}
template
static utc_time<@\seebelow@>
-@@ -3870,7 +3863,6 @@ template
+@@ -3875,7 +3868,6 @@ template
\constraints
At least one of the following clock time conversion expressions
is well-formed:
@@ -8182,7 +7819,7 @@ index bdbef27b..39598098 100644
\begin{itemize}
\item
\begin{codeblock}
-@@ -7916,7 +7908,6 @@ a conventional syntax for the creation of civil calendar dates.
+@@ -7921,7 +7913,6 @@ a conventional syntax for the creation of civil calendar dates.
\pnum
\begin{note}
The year, month, and day are accepted in any of the following 3 orders:
@@ -8190,7 +7827,7 @@ index bdbef27b..39598098 100644
\begin{codeblock}
@\tcode{\placeholder{year}}@/@\tcode{\placeholder{month}}@/@\tcode{\placeholder{day}}@
@\tcode{\placeholder{month}}@/@\tcode{\placeholder{day}}@/@\tcode{\placeholder{year}}@
-@@ -7924,7 +7915,6 @@ The year, month, and day are accepted in any of the following 3 orders:
+@@ -7929,7 +7920,6 @@ The year, month, and day are accepted in any of the following 3 orders:
\end{codeblock}
Anywhere a \tcode{\placeholder{day}} is needed, any of the following can also be specified:
@@ -8198,7 +7835,7 @@ index bdbef27b..39598098 100644
\begin{codeblock}
last
@\tcode{\placeholder{weekday}}@[@\tcode{\placeholder{i}}@]
-@@ -7937,7 +7927,6 @@ last
+@@ -7942,7 +7932,6 @@ last
Partial-date types such as \tcode{year_month} and \tcode{month_day}
can be created by not applying the second division operator
for any of the three orders. For example:
@@ -8206,7 +7843,7 @@ index bdbef27b..39598098 100644
\begin{codeblock}
year_month ym = 2015y/April;
month_day md1 = April/4;
-@@ -9126,7 +9115,6 @@ template
+@@ -9134,7 +9123,6 @@ template
Initializes the base class with a sequence of \tcode{char}
equivalent to that produced by \tcode{os.str()}
initialized as shown below:
@@ -8214,7 +7851,7 @@ index bdbef27b..39598098 100644
\begin{codeblock}
ostringstream os;
os << tp << " is in a gap between\n"
-@@ -9156,7 +9144,6 @@ int main() {
+@@ -9164,7 +9152,6 @@ int main() {
\end{codeblock}
Produces the output:
@@ -8222,7 +7859,7 @@ index bdbef27b..39598098 100644
\begin{outputblock}
2016-03-13 02:30:00 is in a gap between
2016-03-13 02:00:00 EST and
-@@ -9201,7 +9188,6 @@ template
+@@ -9209,7 +9196,6 @@ template
Initializes the base class with a sequence of \tcode{char}
equivalent to that produced by \tcode{os.str()}
initialized as shown below:
@@ -8230,7 +7867,7 @@ index bdbef27b..39598098 100644
\begin{codeblock}
ostringstream os;
os << tp << " is ambiguous. It could be\n"
-@@ -9229,7 +9215,6 @@ int main() {
+@@ -9237,7 +9223,6 @@ int main() {
\end{codeblock}
Produces the output:
@@ -8238,7 +7875,7 @@ index bdbef27b..39598098 100644
\begin{outputblock}
2016-11-06 01:30:00 is ambiguous. It could be
2016-11-06 01:30:00 EDT == 2016-11-06 05:30:00 UTC or
-@@ -9283,7 +9268,6 @@ The \tcode{offset} data member indicates
+@@ -9291,7 +9276,6 @@ The \tcode{offset} data member indicates
the UTC offset in effect
for the associated \tcode{time_zone} and \tcode{time_point}.
The relationship between \tcode{local_time} and \tcode{sys_time} is:
@@ -8246,7 +7883,7 @@ index bdbef27b..39598098 100644
\begin{codeblock}
offset = local_time - sys_time
\end{codeblock}
-@@ -9588,7 +9572,6 @@ the behavior of \tcode{zoned_time}
+@@ -9596,7 +9580,6 @@ the behavior of \tcode{zoned_time}
for the \tcode{zoned_time} default constructor,
and constructors taking \tcode{string_view}.
A specialization for \tcode{const time_zone*} is provided by the implementation:
@@ -8254,7 +7891,7 @@ index bdbef27b..39598098 100644
\begin{codeblock}
namespace std::chrono {
template<> struct zoned_traits {
-@@ -10164,7 +10147,6 @@ for (auto& l : get_tzdb().leap_seconds)
+@@ -10172,7 +10155,6 @@ for (auto& l : get_tzdb().leap_seconds)
\end{codeblock}
Produces the output:
@@ -8262,7 +7899,7 @@ index bdbef27b..39598098 100644
\begin{outputblock}
1972-07-01 00:00:00: 1s
1973-01-01 00:00:00: 1s
-@@ -10463,7 +10445,6 @@ The \tcode{parse} member functions of these formatters
+@@ -10471,7 +10453,6 @@ The \tcode{parse} member functions of these formatters
interpret the format specification
as a \fmtgrammarterm{chrono-format-spec}
according to the following syntax:
@@ -8271,10 +7908,10 @@ index bdbef27b..39598098 100644
\fmtnontermdef{chrono-format-spec}\br
\opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs}
diff --git a/source/utilities.tex b/source/utilities.tex
-index d72eebe4..171c1b2f 100644
+index af0ec065..c39c394b 100644
--- a/source/utilities.tex
+++ b/source/utilities.tex
-@@ -270,7 +270,6 @@ Exchanges values stored in two locations.
+@@ -289,7 +289,6 @@ Exchanges values stored in two locations.
\pnum
\remarks
The exception specification is equivalent to:
@@ -8282,7 +7919,7 @@ index d72eebe4..171c1b2f 100644
\begin{codeblock}
is_nothrow_move_constructible_v && is_nothrow_move_assignable_v
\end{codeblock}
-@@ -2220,7 +2219,6 @@ For all $i$, assigns \tcode{std::forward<$\tcode{T}_i$>(get<$i$>(u))} to
+@@ -2540,7 +2539,6 @@ For all $i$, assigns \tcode{std::forward<$\tcode{T}_i$>(get<$i$>(u))} to
\remarks
The exception specification is equivalent to the logical \logop{and} of the
following expressions:
@@ -8290,7 +7927,7 @@ index d72eebe4..171c1b2f 100644
\begin{codeblock}
is_nothrow_move_assignable_v<@$\mathtt{T}_i$@>
\end{codeblock}
-@@ -3166,7 +3164,6 @@ As if by \tcode{x.swap(y)}.
+@@ -3486,7 +3484,6 @@ As if by \tcode{x.swap(y)}.
\pnum
\remarks
The exception specification is equivalent to:
@@ -8298,7 +7935,7 @@ index d72eebe4..171c1b2f 100644
\begin{codeblock}
noexcept(x.swap(y))
\end{codeblock}
-@@ -10142,7 +10139,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept;
+@@ -11307,7 +11304,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept;
Replaces each bit at position \tcode{I} in
\tcode{*this}
with a value determined as follows:
@@ -8306,7 +7943,7 @@ index d72eebe4..171c1b2f 100644
\begin{itemize}
\item
If \tcode{I < pos}, the new value is zero;
-@@ -10167,7 +10163,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept;
+@@ -11332,7 +11328,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept;
Replaces each bit at position \tcode{I} in
\tcode{*this}
with a value determined as follows:
@@ -8314,7 +7951,7 @@ index d72eebe4..171c1b2f 100644
\begin{itemize}
\item
If \tcode{pos >= N - I}, the new value is zero;
-@@ -10893,7 +10888,6 @@ namespace std {
+@@ -12061,7 +12056,6 @@ namespace std {
If a \Cpp{} program wants to have a by-element addition of two vectors \tcode{a}
and \tcode{b} containing \tcode{double} and put the result into \tcode{a},
it can do:
@@ -8322,7 +7959,7 @@ index d72eebe4..171c1b2f 100644
\begin{codeblock}
transform(a.begin(), a.end(), b.begin(), a.begin(), plus());
\end{codeblock}
-@@ -14373,7 +14367,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept;
+@@ -15544,7 +15538,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept;
The header provides partial specializations of \tcode{function_ref}
for each combination of the possible replacements of
the placeholders \cv{} and \placeholder{noex} where:
@@ -8334,10 +7971,10 @@ index d72eebe4..171c1b2f 100644
2.43.0
-From 28f9650c9f22d94dd88610aec105f0d73e5fd8e1 Mon Sep 17 00:00:00 2001
+From 60545dee60f2abfb85a8ab5fd8e069a06de25ed8 Mon Sep 17 00:00:00 2001
From: Eelis van der Weegen
Date: Thu, 17 Sep 2020 10:17:47 +0200
-Subject: [PATCH 6/9] Use monospace font for code in figures.
+Subject: [PATCH 5/9] Use monospace font for code in figures.
---
source/assets/figdag.dot | 8 ++++----
@@ -8481,17 +8118,17 @@ index b3c04d48..1ab8e364 100644
2.43.0
-From ce6fc20d159a2a02d68ce6dbeaf186db5697c2d5 Mon Sep 17 00:00:00 2001
+From cc7685c521be604401667ec9815e3e955fe5ad09 Mon Sep 17 00:00:00 2001
From: Eelis van der Weegen
Date: Wed, 23 Jun 2021 20:54:27 +0200
-Subject: [PATCH 7/9] [uaxid] Mark code that's not to be highlighted.
+Subject: [PATCH 6/9] [uaxid] Mark code that's not to be highlighted.
---
source/uax31.tex | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/source/uax31.tex b/source/uax31.tex
-index 641ab63b..db586c1f 100644
+index 79f0f7d0..80b2d666 100644
--- a/source/uax31.tex
+++ b/source/uax31.tex
@@ -33,8 +33,8 @@ where \tcode{} has the XID_Start property,
@@ -8509,31 +8146,31 @@ index 641ab63b..db586c1f 100644
2.43.0
-From 3c4fcf9e927ba196d3104396ecea1c36e30469b3 Mon Sep 17 00:00:00 2001
+From abbb3bbd075250a722a3ed158747251af8d03697 Mon Sep 17 00:00:00 2001
From: Eelis van der Weegen
Date: Sun, 28 Jul 2024 10:22:07 +0200
-Subject: [PATCH 8/9] Use cxxdraft-htmlgen macros more.
+Subject: [PATCH 7/9] Use cxxdraft-htmlgen macros more.
---
- source/algorithms.tex | 194 +++++++++++++-------------
+ source/algorithms.tex | 180 +++++++++++++--------------
source/concepts.tex | 4 +-
source/diagnostics.tex | 18 ++-
source/exec.tex | 18 +--
source/future.tex | 10 +-
- source/iostreams.tex | 28 ++--
- source/lib-intro.tex | 28 ++--
- source/memory.tex | 46 +++---
- source/meta.tex | 310 ++++++++++++++++++++---------------------
- source/numerics.tex | 38 ++---
+ source/iostreams.tex | 28 ++---
+ source/lib-intro.tex | 28 ++---
+ source/memory.tex | 46 +++----
+ source/meta.tex | 268 ++++++++++++++++++++---------------------
+ source/numerics.tex | 34 +++---
source/strings.tex | 10 +-
- source/support.tex | 14 +-
- source/threads.tex | 112 +++++++--------
- source/time.tex | 66 ++++-----
- source/utilities.tex | 138 +++++++++---------
- 15 files changed, 513 insertions(+), 521 deletions(-)
+ source/support.tex | 4 +-
+ source/threads.tex | 110 ++++++++---------
+ source/time.tex | 66 +++++-----
+ source/utilities.tex | 136 ++++++++++-----------
+ 15 files changed, 476 insertions(+), 484 deletions(-)
diff --git a/source/algorithms.tex b/source/algorithms.tex
-index 71678537..9b6f07ea 100644
+index 6eaef6b7..b7fd050e 100644
--- a/source/algorithms.tex
+++ b/source/algorithms.tex
@@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements.
@@ -8580,7 +8217,7 @@ index 71678537..9b6f07ea 100644
if it is required to be a mutable iterator, or model
\libconcept{random_access_iterator}\iref{iterator.concept.random.access} otherwise.
\end{itemize}
-@@ -3611,10 +3611,10 @@ template
+@@ -4619,10 +4619,10 @@ template
\pnum
\expects
\tcode{Function} meets
@@ -8593,7 +8230,7 @@ index 71678537..9b6f07ea 100644
\end{note}
\pnum
-@@ -3651,7 +3651,7 @@ template
+@@ -4659,7 +4659,7 @@ template
\begin{itemdescr}
\pnum
\expects
@@ -8602,7 +8239,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -3737,10 +3737,10 @@ to an integral type\iref{conv.integral,class.conv}.
+@@ -4793,10 +4793,10 @@ to an integral type\iref{conv.integral,class.conv}.
\pnum
\expects
\tcode{n >= 0} is \tcode{true}.
@@ -8615,7 +8252,7 @@ index 71678537..9b6f07ea 100644
\end{note}
\pnum
-@@ -3777,7 +3777,7 @@ to an integral type\iref{conv.integral,class.conv}.
+@@ -4833,7 +4833,7 @@ to an integral type\iref{conv.integral,class.conv}.
\pnum
\expects
\tcode{n >= 0} is \tcode{true}.
@@ -8624,7 +8261,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -4443,7 +4443,7 @@ If
+@@ -5681,7 +5681,7 @@ If
\item
the types of \tcode{first1}, \tcode{last1}, \tcode{first2}, and \tcode{last2}
meet the
@@ -8633,7 +8270,7 @@ index 71678537..9b6f07ea 100644
and \tcode{last1 - first1 != last2 - first2}
for the overloads in namespace \tcode{std};
\item
-@@ -4767,7 +4767,7 @@ Equivalent to: \tcode{return searcher(first, last).first;}
+@@ -6025,7 +6025,7 @@ Equivalent to: \tcode{return searcher(first, last).first;}
\pnum
\remarks
@@ -8642,16 +8279,7 @@ index 71678537..9b6f07ea 100644
\end{itemdescr}
\rSec2[alg.starts.with]{Starts with}
-@@ -5182,7 +5182,7 @@ do not overlap.
- For the overload with an \tcode{ExecutionPolicy},
- there might be a performance cost
- if \tcode{iterator_traits::value_type}
--is not \oldconcept{\-Move\-Constructible} (\tref{cpp17.moveconstructible}).
-+is not \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}).
- \end{note}
-
- \pnum
-@@ -5993,7 +5993,7 @@ Let $E$ be
+@@ -7598,7 +7598,7 @@ Let $E(\tcode{i})$ be
\expects
For the algorithms in namespace \tcode{std},
the type of \tcode{*first}
@@ -8660,16 +8288,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -6103,7 +6103,7 @@ do not overlap.
- For the overloads with an \tcode{ExecutionPolicy},
- there might be a performance cost
- if \tcode{iterator_traits::value_type} does not meet
--the \oldconcept{\-Move\-Constructible} (\tref{cpp17.moveconstructible}) requirements.
-+the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements.
- \end{note}
-
- \pnum
-@@ -6176,7 +6176,7 @@ let $E$ be
+@@ -7849,7 +7849,7 @@ let $E(\tcode{i})$ be
For the overloads in namespace \tcode{std},
\tcode{pred} is an equivalence relation and
the type of \tcode{*first} meets
@@ -8678,7 +8297,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -6279,18 +6279,18 @@ let $E$ be
+@@ -7980,10 +7980,10 @@ Let:
\libconcept{forward_iterator}\iref{iterator.concept.forward},
then there are no additional requirements for \tcode{T}.
Otherwise, if \tcode{OutputIterator} meets
@@ -8689,20 +8308,9 @@ index 71678537..9b6f07ea 100644
- the \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements.
+ the \oldconceptref{CopyAssignable} (\tref{cpp17.copyassignable}) requirements.
Otherwise, \tcode{T} meets both
-- the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and
-- \oldconcept{CopyAssignable} requirements.
-+ the \oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}) and
-+ \oldconceptref{CopyAssignable} requirements.
- \begin{note}
- For the overloads with an \tcode{ExecutionPolicy},
- there might be a performance cost
- if the value type of \tcode{ForwardIterator1} does not meet both the
-- \oldconcept{CopyConstructible} and \oldconcept{CopyAssignable} requirements.
-+ \oldconceptref{CopyConstructible} and \oldconceptref{CopyAssignable} requirements.
- \end{note}
- \end{itemize}
- \end{itemize}
-@@ -6338,7 +6338,7 @@ template<@\libconcept{bidirectional_range}@ R>
+ the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and
+ \oldconcept{CopyAssignable} requirements.
+@@ -8062,7 +8062,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces
\expects
For the overloads in namespace \tcode{std},
\tcode{BidirectionalIterator} meets
@@ -8711,7 +8319,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -6430,10 +6430,10 @@ template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S>
+@@ -8197,10 +8197,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterat
\range{first}{middle} and \range{middle}{last} are valid ranges.
For the overloads in namespace \tcode{std},
\tcode{ForwardIterator} meets
@@ -8725,7 +8333,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -6574,13 +6574,13 @@ For the overload in namespace \tcode{std}:
+@@ -8420,13 +8420,13 @@ For the overload in namespace \tcode{std}:
\begin{itemize}
\item
\tcode{PopulationIterator} meets
@@ -8742,7 +8350,7 @@ index 71678537..9b6f07ea 100644
unless \tcode{Pop\-ulat\-ion\-Iter\-ator}
models \libconcept{forward_iterator}\iref{iterator.concept.forward}.
\item
-@@ -6648,7 +6648,7 @@ For the overload in namespace \tcode{std}:
+@@ -8494,7 +8494,7 @@ For the overload in namespace \tcode{std}:
\begin{itemize}
\item
\tcode{RandomAccessIterator} meets
@@ -8751,7 +8359,7 @@ index 71678537..9b6f07ea 100644
\item
The type \tcode{remove_reference_t} meets
the uniform random bit generator\iref{rand.req.urng} requirements.
-@@ -6700,7 +6700,7 @@ template<@\libconcept{forward_range}@ R>
+@@ -8555,7 +8555,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces
\expects
\tcode{n >= 0} is \tcode{true}.
For the overloads in namespace \tcode{std},
@@ -8760,7 +8368,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -6754,10 +6754,10 @@ template<@\libconcept{forward_range}@ R>
+@@ -8619,10 +8619,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces
\expects
\tcode{n >= 0} is \tcode{true}.
For the overloads in namespace \tcode{std},
@@ -8774,16 +8382,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -6771,7 +6771,7 @@ from \tcode{i = (last - first) - n - 1} and proceeding to \tcode{i = 0} if
- \item
- for the overload in namespace \tcode{std}
- without an \tcode{ExecutionPolicy} template parameter,
--\tcode{Forward\-Iterator} meets the \oldconcept{BidirectionalIterator} requirements,
-+\tcode{Forward\-Iterator} meets the \oldconceptref{BidirectionalIterator} requirements,
- \item
- for the overloads in namespace \tcode{ranges},
- \tcode{I} models \libconcept{bidirectional_iterator}.
-@@ -6927,10 +6927,10 @@ for the overloads with no parameters by those names.
+@@ -8801,10 +8801,10 @@ for the overloads with no parameters by those names.
\expects
For the overloads in namespace \tcode{std},
\tcode{RandomAccessIterator} meets
@@ -8797,7 +8396,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -6985,10 +6985,10 @@ for the overloads with no parameters by those names.
+@@ -8869,10 +8869,10 @@ for the overloads with no parameters by those names.
\expects
For the overloads in namespace \tcode{std},
\tcode{RandomAccessIterator} meets
@@ -8811,7 +8410,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -7055,10 +7055,10 @@ for the overloads with no parameters by those names.
+@@ -8943,10 +8943,10 @@ for the overloads with no parameters by those names.
\range{first}{middle} and \range{middle}{last} are valid ranges.
For the overloads in namespace \tcode{std},
\tcode{RandomAccessIterator} meets
@@ -8825,7 +8424,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -7163,10 +7163,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}.
+@@ -9090,10 +9090,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}.
\expects
For the overloads in namespace \tcode{std},
\tcode{RandomAccessIterator} meets
@@ -8839,7 +8438,7 @@ index 71678537..9b6f07ea 100644
\pnum
For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and
-@@ -7368,10 +7368,10 @@ for the overloads with no parameters by those names.
+@@ -9328,10 +9328,10 @@ for the overloads with no parameters by those names.
\range{first}{nth} and \range{nth}{last} are valid ranges.
For the overloads in namespace \tcode{std},
\tcode{RandomAccessIterator} meets
@@ -8853,7 +8452,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -7719,7 +7719,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}.
+@@ -9713,7 +9713,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}.
\expects
For the overloads in namespace \tcode{std},
\tcode{ForwardIterator} meets
@@ -8862,8 +8461,8 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -7746,7 +7746,7 @@ Let $N = \tcode{last - first}$:
- For the overload with no \tcode{ExecutionPolicy},
+@@ -9740,7 +9740,7 @@ Let $N = \tcode{last - first}$:
+ For the non-parallel algorithm overloads,
exactly $N$ applications of the predicate and projection.
At most $N / 2$ swaps if the type of \tcode{first} meets
- the \oldconcept{BidirectionalIterator} requirements
@@ -8871,7 +8470,7 @@ index 71678537..9b6f07ea 100644
for the overloads in namespace \tcode{std} or
models \libconcept{bidirectional_iterator}
for the overloads in namespace \tcode{ranges},
-@@ -7788,10 +7788,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}.
+@@ -9793,10 +9793,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}.
\expects
For the overloads in namespace \tcode{std},
\tcode{BidirectionalIterator} meets
@@ -8885,16 +8484,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -7874,7 +7874,7 @@ The input range and output ranges do not overlap.
- \begin{note}
- For the overload with an \tcode{ExecutionPolicy},
- there might be a performance cost if \tcode{first}'s value type
--does not meet the \oldconcept{CopyConstructible} requirements.
-+does not meet the \oldconceptref{CopyConstructible} requirements.
- \end{note}
-
- \pnum
-@@ -8079,10 +8079,10 @@ for the overloads with no parameters by those names.
+@@ -10193,10 +10193,10 @@ for the overloads with no parameters by those names.
sorted with respect to \tcode{comp} and \tcode{proj}.
For the overloads in namespace \tcode{std},
\tcode{BidirectionalIterator} meets
@@ -8908,7 +8498,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -8648,10 +8648,10 @@ The range \range{first}{last - 1}
+@@ -10959,10 +10959,10 @@ The range \range{first}{last - 1}
is a valid heap with respect to \tcode{comp} and \tcode{proj}.
For the overloads in namespace \tcode{std},
\tcode{RandomAccessIterator} meets
@@ -8922,7 +8512,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -8701,10 +8701,10 @@ The range \range{first}{last}
+@@ -11012,10 +11012,10 @@ The range \range{first}{last}
is a valid non-empty heap with respect to \tcode{comp} and \tcode{proj}.
For the overloads in namespace \tcode{std},
\tcode{RandomAccessIterator} meets
@@ -8936,7 +8526,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -8757,10 +8757,10 @@ for the overloads with no parameters by those names.
+@@ -11068,10 +11068,10 @@ for the overloads with no parameters by those names.
\expects
For the overloads in namespace \tcode{std},
\tcode{RandomAccessIterator} meets
@@ -8950,7 +8540,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -8810,10 +8810,10 @@ The range \range{first}{last} is
+@@ -11121,10 +11121,10 @@ The range \range{first}{last} is
a valid heap with respect to \tcode{comp} and \tcode{proj}.
For the overloads in namespace \tcode{std},
\tcode{RandomAccessIterator} meets
@@ -8964,7 +8554,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -8972,7 +8972,7 @@ template 0}.
For the overloads in namespace \tcode{std},
@@ -8984,7 +8574,7 @@ index 71678537..9b6f07ea 100644
requirements (\tref{cpp17.lessthancomparable}).
\pnum
-@@ -9050,7 +9050,7 @@ template 0}.
For the overloads in namespace \tcode{std},
@@ -9004,7 +8594,7 @@ index 71678537..9b6f07ea 100644
requirements (\tref{cpp17.lessthancomparable}).
\pnum
-@@ -9130,7 +9130,7 @@ template 0}.
For the overloads in namespace \tcode{std},
@@ -9024,7 +8614,7 @@ index 71678537..9b6f07ea 100644
requirements (\tref{cpp17.lessthancomparable}).
\pnum
-@@ -9364,7 +9364,7 @@ for the overloads with no parameter \tcode{proj}.
+@@ -11748,7 +11748,7 @@ for the overloads with no parameter \tcode{proj}.
\expects
\tcode{bool(invoke(comp, invoke(proj, hi), invoke(proj, lo)))} is \tcode{false}.
For the first form, type \tcode{T}
@@ -9033,7 +8623,7 @@ index 71678537..9b6f07ea 100644
requirements (\tref{cpp17.lessthancomparable}).
\pnum
-@@ -9553,7 +9553,7 @@ for overloads with no parameters by those names.
+@@ -11951,7 +11951,7 @@ for overloads with no parameters by those names.
\expects
For the overloads in namespace \tcode{std},
\tcode{BidirectionalIterator} meets
@@ -9042,7 +8632,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -9612,7 +9612,7 @@ for overloads with no parameters by those names.
+@@ -12010,7 +12010,7 @@ for overloads with no parameters by those names.
\expects
For the overloads in namespace \tcode{std},
\tcode{BidirectionalIterator} meets
@@ -9051,7 +8641,7 @@ index 71678537..9b6f07ea 100644
\pnum
\effects
-@@ -9931,8 +9931,8 @@ template
+@@ -12329,8 +12329,8 @@ template
\pnum
\expects
\tcode{T} meets
@@ -9062,7 +8652,7 @@ index 71678537..9b6f07ea 100644
In the range \crange{first}{last},
\tcode{binary_op} neither modifies elements
nor invalidates iterators or subranges.
-@@ -10054,7 +10054,7 @@ are convertible to \tcode{T}.
+@@ -12452,7 +12452,7 @@ are convertible to \tcode{T}.
\expects
\begin{itemize}
\item
@@ -9071,7 +8661,7 @@ index 71678537..9b6f07ea 100644
\item
\tcode{binary_op} neither invalidates iterators or subranges,
nor modifies elements in the range \crange{first}{last}.
-@@ -10098,8 +10098,8 @@ template}.
+@@ -13191,7 +13191,7 @@ that denotes an object of type \tcode{minus<>}.
\begin{itemize}
\item
For the overloads with no \tcode{ExecutionPolicy},
@@ -9152,7 +8742,7 @@ index 71678537..9b6f07ea 100644
\item
For all overloads, in the ranges \crange{first}{last}
diff --git a/source/concepts.tex b/source/concepts.tex
-index 0bfd8612..b166e3a9 100644
+index 3e64abc8..9efb5afa 100644
--- a/source/concepts.tex
+++ b/source/concepts.tex
@@ -495,7 +495,7 @@ template
@@ -9174,22 +8764,22 @@ index 0bfd8612..b166e3a9 100644
invocation of the destructor does not actually throw.
\end{note}
diff --git a/source/diagnostics.tex b/source/diagnostics.tex
-index b4b70046..b734f13a 100644
+index eee2454e..267f428b 100644
--- a/source/diagnostics.tex
+++ b/source/diagnostics.tex
-@@ -758,9 +758,9 @@ namespace std {
+@@ -761,9 +761,9 @@ namespace std {
// \ref{syserr}, system error support
template
- constexpr bool @\libglobal{is_error_code_enum_v}@ = is_error_code_enum::value;
+ constexpr bool @\libglobal{is_error_code_enum_v}@ = @\libglobalref{is_error_code_enum}@::value;
template
-- constexpr bool is_error_condition_enum_v = is_error_condition_enum::value;
+- constexpr bool @\libglobal{is_error_condition_enum_v}@ = is_error_condition_enum::value;
+ constexpr bool @\libglobal{is_error_condition_enum_v}@ = @\libglobalref{is_error_condition_enum}@::value;
}
\end{codeblock}
-@@ -771,9 +771,9 @@ Whether or not the \libheader{system_error} implementation
+@@ -774,9 +774,9 @@ Whether or not the \libheader{system_error} implementation
exposes the \libheader{cerrno} macros is unspecified.
\pnum
@@ -9201,7 +8791,7 @@ index b4b70046..b734f13a 100644
conversions, respectively.
\rSec2[syserr.errcat]{Class \tcode{error_category}}
-@@ -798,8 +798,6 @@ even for objects holding the same value.
+@@ -801,8 +801,6 @@ even for objects holding the same value.
\indexlibraryglobal{error_category}%
\indexlibraryctor{error_category}%
\indexlibrarydtor{error_category}%
@@ -9210,7 +8800,7 @@ index b4b70046..b734f13a 100644
\begin{codeblock}
namespace std {
class error_category {
-@@ -818,8 +816,8 @@ namespace std {
+@@ -821,8 +819,8 @@ namespace std {
strong_ordering operator<=>(const error_category& rhs) const noexcept;
};
@@ -9221,7 +8811,7 @@ index b4b70046..b734f13a 100644
}
\end{codeblock}
-@@ -1090,7 +1088,7 @@ template
+@@ -1093,7 +1091,7 @@ template
\begin{itemdescr}
\pnum
\constraints
@@ -9230,7 +8820,7 @@ index b4b70046..b734f13a 100644
\pnum
\effects
-@@ -1123,7 +1121,7 @@ template
+@@ -1126,7 +1124,7 @@ template