From ebb08a5f408298e6defb63941bd195d8eff752f5 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Mon, 16 Oct 2017 17:43:47 -0700 Subject: [PATCH 001/168] Update configuration for building drafts after n4700. --- source/config.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/config.tex b/source/config.tex index 7da85d6d87..ea44d4bed0 100644 --- a/source/config.tex +++ b/source/config.tex @@ -1,8 +1,8 @@ %!TEX root = std.tex %%-------------------------------------------------- %% Version numbers -\newcommand{\docno}{N4700} -\newcommand{\prevdocno}{N4687} +\newcommand{\docno}{Dxxxx} +\newcommand{\prevdocno}{N4700} \newcommand{\cppver}{201703L} %% Release date From 4ba4e9c2c04b7680ac2a56b65c241ec10c427c3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Mon, 23 Oct 2017 00:42:27 +0100 Subject: [PATCH 002/168] [travis] Make overfull hboxes a presubmit error. (#1780) Also delete the "manual" check since "complete" subsumes "manual". --- .travis.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 59d220bed8..47c6184ec9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,10 +3,9 @@ # env: - - BUILD_TYPE=latexmk # build using latexmk + - BUILD_TYPE=latexmk # build using latexmk, also check for overfull hboxes - BUILD_TYPE=make # build using Makefile - - BUILD_TYPE=manual # build manually - - BUILD_TYPE=complete # build manually and regenerate figures, grammer, and cross-references + - BUILD_TYPE=complete # build manually and regenerate figures, grammar, and cross-references - BUILD_TYPE=check-whitespace # check for whitespace at the ends of lines script: @@ -14,6 +13,7 @@ script: - pushd source - if [ "$BUILD_TYPE" = "latexmk" ]; then latexmk -pdf std; + ! grep -Fe "Overfull \\hbox" std.log; fi - if [ "$BUILD_TYPE" = "make" ]; then make -j2; @@ -22,8 +22,6 @@ script: for FIGURE in *.dot; do dot -o$(basename $FIGURE .dot).pdf -Tpdf $FIGURE; done; - fi - - if [ "$BUILD_TYPE" = "manual" -o "$BUILD_TYPE" = "complete" ]; then pdflatex std; pdflatex std; pdflatex std; From ea4b17a448b46671488b96812629d92c0c9c61be Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Fri, 27 Oct 2017 00:53:45 +0200 Subject: [PATCH 003/168] [expr.prim.lambda.capture] Move discusssion of capture-by-reference of references to after the introduction of 'capture by reference'. Fixes #1785. --- source/expressions.tex | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/source/expressions.tex b/source/expressions.tex index cd84a99873..2b46d85b21 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -1310,14 +1310,6 @@ transformed into a pointer to the corresponding unnamed data member of the closure type, cast\iref{expr.cast} to the type of \tcode{this}. \begin{note} The cast ensures that the transformed expression is a prvalue. \end{note} -An \grammarterm{id-expression} within -the \grammarterm{compound-statement} of a \grammarterm{lambda-expression} -that is an odr-use of a reference captured by reference -refers to the entity to which the captured reference is bound and -not to the captured reference. -\begin{note} The validity of such captures is determined by -the lifetime of the object to which the reference refers, -not by the lifetime of the reference itself. \end{note} \begin{example} \begin{codeblock} void f(const int*); @@ -1329,12 +1321,6 @@ // the corresponding member of the closure type }; } -auto h(int &r) { - return [&] { - ++r; // Valid after \tcode{h} returns if the lifetime of the - // object to which \tcode{r} is bound has not ended - }; -} \end{codeblock} \end{example} @@ -1352,6 +1338,26 @@ \end{example} A bit-field or a member of an anonymous union shall not be captured by reference. +\pnum +An \grammarterm{id-expression} within +the \grammarterm{compound-statement} of a \grammarterm{lambda-expression} +that is an odr-use of a reference captured by reference +refers to the entity to which the captured reference is bound and +not to the captured reference. +\begin{note} The validity of such captures is determined by +the lifetime of the object to which the reference refers, +not by the lifetime of the reference itself. \end{note} +\begin{example} +\begin{codeblock} +auto h(int &r) { + return [&] { + ++r; // Valid after \tcode{h} returns if the lifetime of the + // object to which \tcode{r} is bound has not ended + }; +} +\end{codeblock} +\end{example} + \pnum If a \grammarterm{lambda-expression} \tcode{m2} captures an entity and that entity is captured by an immediately enclosing \grammarterm{lambda-expression} From f0b892320c609974270ccd415ecef081529e664f Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Thu, 2 Nov 2017 03:19:54 +0100 Subject: [PATCH 004/168] [array.size] Remove full member declaration from itemdecl. (#1790) --- source/containers.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/containers.tex b/source/containers.tex index b1c6112978..aea2219805 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -3262,7 +3262,7 @@ \indexlibrarymember{array}{size}% \begin{itemdecl} -template constexpr size_type array::size() const noexcept; +constexpr size_type size() const noexcept; \end{itemdecl} \begin{itemdescr} From b174bd63680803b18f1ebce4d743b13c257cd3bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Thu, 2 Nov 2017 18:54:45 +0000 Subject: [PATCH 005/168] [defns.referenceable] Remove duplicate 'an' --- source/lib-intro.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/lib-intro.tex b/source/lib-intro.tex index 669f2e2990..00a8cdb9dd 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -293,7 +293,7 @@ \definition{referenceable type}{defns.referenceable} \indexdefn{type!referenceable}% type that is either an -an object type, a function type that does not have cv-qualifiers or a +object type, a function type that does not have cv-qualifiers or a \grammarterm{ref-qualifier}, or a reference type \begin{defnote} From 5b49084941c8870b7ac39466c807fcbb9fcb35ac Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Fri, 27 Oct 2017 00:42:27 +0200 Subject: [PATCH 006/168] [implimits] Add cross-references to the definition of the respective feature Fixes #1496. --- source/limits.tex | 90 +++++++++++++++++++++++------------------------ 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/source/limits.tex b/source/limits.tex index 37d35bd06d..641094677d 100644 --- a/source/limits.tex +++ b/source/limits.tex @@ -19,114 +19,114 @@ However, these quantities are only guidelines and do not determine compliance. \begin{itemize} \item% -Nesting levels of compound statements, -iteration control structures, -and selection control structures [256]. +Nesting levels of compound statements\iref{stmt.block}, +iteration control structures\iref{stmt.iter}, +and selection control structures\iref{stmt.select} [256]. \item% -Nesting levels of conditional inclusion [256]. +Nesting levels of conditional inclusion\iref{cpp.cond} [256]. \item% -Pointer, array, and function declarators +Pointer\iref{dcl.ptr}, array\iref{dcl.array}, and function\iref{dcl.fct} declarators (in any combination) modifying a class, arithmetic, or incomplete type in a declaration [256]. \item% -Nesting levels of parenthesized expressions within a full-expression [256]. +Nesting levels of parenthesized expressions\iref{expr.prim.paren} within a full-expression [256]. \item% Number of -characters in an internal identifier -or macro name [1\,024]. +characters in an internal identifier\iref{lex.name} +or macro name\iref{cpp.replace} [1\,024]. \item% Number of -characters in an external identifier [1\,024]. +characters in an external identifier (\ref{lex.name}, \ref{basic.link}) [1\,024]. \item% -External identifiers in one translation unit [65\,536]. +External identifiers\iref{basic.link} in one translation unit [65\,536]. \item% -Identifiers with block scope declared in one block [1\,024]. +Identifiers with block scope declared in one block\iref{basic.scope.block} [1\,024]. \item% -Structured bindings introduced in one declaration [256]. +Structured bindings\iref{dcl.struct.bind} introduced in one declaration [256]. \item% -Macro identifiers simultaneously defined in one +Macro identifiers\iref{cpp.replace} simultaneously defined in one translation unit [65\,536]. \item% -Parameters in one function definition [256]. +Parameters in one function definition\iref{dcl.fct.def.general} [256]. \item% -Arguments in one function call [256]. +Arguments in one function call\iref{expr.call} [256]. \item% -Parameters in one macro definition [256]. +Parameters in one macro definition\iref{cpp.replace} [256]. \item% -Arguments in one macro invocation [256]. +Arguments in one macro invocation\iref{cpp.replace} [256]. \item% -Characters in one logical source line [65\,536]. +Characters in one logical source line\iref{lex.phases} [65\,536]. \item% -Characters in a string literal -(after concatenation) [65\,536]. +Characters in a string literal\iref{lex.string} +(after concatenation\iref{lex.phases}) [65\,536]. \item% -Size of an object [262\,144]. +Size of an object\iref{intro.object} [262\,144]. \item% Nesting levels for \tcode{\#include} -files [256]. +files\iref{cpp.include} [256]. \item% Case labels for a \tcode{switch} -statement (excluding those for any nested +statement\iref{stmt.switch} (excluding those for any nested \tcode{switch} statements) [16\,384]. \item% -Data members in a single class [16\,384]. +Data members in a single class\iref{class.mem} [16\,384]. \item% -Lambda-captures in one \grammarterm{lambda-expression} [256]. +Lambda-captures in one \grammarterm{lambda-expression}\iref{expr.prim.lambda.capture} [256]. \item% -Enumeration constants in a single enumeration [4\,096]. +Enumeration constants in a single enumeration\iref{dcl.enum} [4\,096]. \item% -Levels of nested class definitions +Levels of nested class definitions\iref{class.nest} in a single \grammarterm{member-specification} [256]. \item% Functions registered by -\tcode{atexit()} [32]. +\tcode{atexit()}\iref{support.start.term} [32]. \item% Functions registered by -\tcode{at_quick_exit()} [32]. +\tcode{at_quick_exit()}\iref{support.start.term} [32]. \item% -Direct and indirect base classes [16\,384]. +Direct and indirect base classes\iref{class.derived} [16\,384]. \item% -Direct base classes for a single class [1\,024]. +Direct base classes for a single class\iref{class.derived} [1\,024]. \item% -Members declared in a single class [4\,096]. +Members declared in a single class\iref{class.mem} [4\,096]. \item% Final overriding virtual functions in a class, -accessible or not [16\,384]. +accessible or not\iref{class.virtual} [16\,384]. \item% -Direct and indirect virtual bases of a class [1\,024]. +Direct and indirect virtual bases of a class\iref{class.mi} [1\,024]. \item% -Static members of a class [1\,024]. +Static members of a class\iref{class.static} [1\,024]. \item% -Friend declarations in a class [4\,096]. +Friend declarations in a class\iref{class.friend} [4\,096]. \item% -Access control declarations in a class [4\,096]. +Access control declarations in a class\iref{class.access.spec} [4\,096]. \item% -Member initializers in a constructor definition [6\,144]. +Member initializers in a constructor definition\iref{class.base.init} [6\,144]. \item% -\grammarterm{initializer-clause}{s} in one \grammarterm{braced-init-list} [16\,384]. +\grammarterm{initializer-clause}{s} in one \grammarterm{braced-init-list}\iref{dcl.init} [16\,384]. \item% -Scope qualifications of one identifier [256]. +Scope qualifications of one identifier\iref{expr.prim.id.qual} [256]. \item% Nested external specifications [1\,024]. \item% -Recursive constexpr function invocations [512]. +Recursive constexpr function invocations\iref{dcl.constexpr} [512]. \item% -Full-expressions evaluated within a core constant expression [1\,048\,576]. +Full-expressions evaluated within a core constant expression\iref{expr.const} [1\,048\,576]. \item% -Template arguments in a template declaration [1\,024]. +Template arguments in a template declaration\iref{temp.param} [1\,024]. \item% -Recursively nested template instantiations, including substitution +Recursively nested template instantiations\iref{temp.inst}, including substitution during template argument deduction\iref{temp.deduct} [1\,024]. \item% -Handlers per try block [256]. +Handlers per try block\iref{except.handle} [256]. \item% Number of placeholders\iref{func.bind.place} [10]. From b4acb0ca022f5b4e8a535a164c845ab87e312a1f Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Tue, 7 Nov 2017 08:56:03 -0800 Subject: [PATCH 007/168] [basic.def] Fix typo "braced-enclosed". --- source/basic.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/basic.tex b/source/basic.tex index 47346e411d..a8ff6ba700 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -113,7 +113,7 @@ the \indextext{declaration!\idxcode{extern}}% \tcode{extern} specifier\iref{dcl.stc} or a -\grammarterm{linkage-specification}\footnote{Appearing inside the braced-enclosed +\grammarterm{linkage-specification}\footnote{Appearing inside the brace-enclosed \grammarterm{declaration-seq} in a \grammarterm{linkage-specification} does not affect whether a declaration is a definition.}\iref{dcl.link} and neither an \grammarterm{initializer} nor a From 6ca5523589f8eb8d2843fe34386382a34064f41d Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Tue, 7 Nov 2017 23:24:36 +0000 Subject: [PATCH 008/168] [fstream], [fs.class.directory_entry] qualify filesystem::path consistently --- source/iostreams.tex | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex index f084a61eab..29c08cff69 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -9677,7 +9677,7 @@ const char* s, ios_base::openmode mode = ios_base::in | ios_base::out); explicit basic_fstream( - const std::filesystem::path::value_type* s, + const filesystem::path::value_type* s, ios_base::openmode mode = ios_base::in|ios_base::out); // wide systems only; see \ref{fstream.syn} explicit basic_fstream( const string& s, @@ -9700,7 +9700,7 @@ const char* s, ios_base::openmode mode = ios_base::in | ios_base::out); void open( - const std::filesystem::path::value_type* s, + const filesystem::path::value_type* s, ios_base::openmode mode = ios_base::in|ios_base::out); // wide systems only; see \ref{fstream.syn} void open( const string& s, @@ -12675,8 +12675,8 @@ directory_entry() noexcept = default; directory_entry(const directory_entry&) = default; directory_entry(directory_entry&&) noexcept = default; - explicit directory_entry(const path& p); - directory_entry(const path& p, error_code& ec); + explicit directory_entry(const filesystem::path& p); + directory_entry(const filesystem::path& p, error_code& ec); ~directory_entry(); // assignments: @@ -12684,16 +12684,16 @@ directory_entry& operator=(directory_entry&&) noexcept = default; // \ref{fs.dir.entry.mods}, modifiers - void assign(const path& p); - void assign(const path& p, error_code& ec); - void replace_filename(const path& p); - void replace_filename(const path& p, error_code& ec); + void assign(const filesystem::path& p); + void assign(const filesystem::path& p, error_code& ec); + void replace_filename(const filesystem::path& p); + void replace_filename(const filesystem::path& p, error_code& ec); void refresh(); void refresh(error_code& ec) noexcept; // \ref{fs.dir.entry.obs}, observers - const path& path() const noexcept; - operator const path&() const noexcept; + const filesystem::path& path() const noexcept; + operator const filesystem::path&() const noexcept; bool exists() const; bool exists(error_code& ec) const noexcept; bool is_block_file() const; @@ -12731,7 +12731,7 @@ bool operator>=(const directory_entry& rhs) const noexcept; private: - path pathobject; // \expos + filesystem::path pathobject; // \expos friend class directory_iterator; // \expos }; } @@ -12796,8 +12796,8 @@ \indexlibrary{\idxcode{directory_entry}!constructor}% \begin{itemdecl} -explicit directory_entry(const path& p); -directory_entry(const path& p, error_code& ec); +explicit directory_entry(const filesystem::path& p); +directory_entry(const filesystem::path& p, error_code& ec); \end{itemdecl} \begin{itemdescr} @@ -12807,7 +12807,7 @@ \pnum \postconditions \tcode{path() == p} if no error occurs, -otherwise \tcode{path() == std::filesystem::path()}. +otherwise \tcode{path() == filesystem::path()}. \pnum \throws As specified in~\ref{fs.err.report}. @@ -12817,8 +12817,8 @@ \indexlibrarymember{assign}{directory_entry}% \begin{itemdecl} -void assign(const path& p); -void assign(const path& p, error_code& ec); +void assign(const filesystem::path& p); +void assign(const filesystem::path& p, error_code& ec); \end{itemdecl} \begin{itemdescr} @@ -12833,8 +12833,8 @@ \indexlibrarymember{replace_filename}{directory_entry}% \begin{itemdecl} -void replace_filename(const path& p); -void replace_filename(const path& p, error_code& ec); +void replace_filename(const filesystem::path& p); +void replace_filename(const filesystem::path& p, error_code& ec); \end{itemdecl} \begin{itemdescr} @@ -12878,10 +12878,10 @@ \tcode{std::filesystem} namespace. \indexlibrarymember{path}{directory_entry}% -\indexlibrarymember{operator const path\&}{directory_entry}% +\indexlibrarymember{operator const filesystem::path\&}{directory_entry}% \begin{itemdecl} -const path& path() const noexcept; -operator const path&() const noexcept; +const filesystem::path& path() const noexcept; +operator const filesystem::path&() const noexcept; \end{itemdecl} \begin{itemdescr} From ee8aa525e65ada1f1949ebc9eb006af8b29f7e85 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Wed, 8 Nov 2017 00:13:27 +0000 Subject: [PATCH 009/168] [basic.ios.members], [streambuf.virt.put], [cmplx.over] replace enumerated lists with itemized --- source/iostreams.tex | 16 ++++++++-------- source/numerics.tex | 8 ++++---- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex index 29c08cff69..3be1a3b0a5 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -2054,11 +2054,11 @@ \tcode{*this} the corresponding member objects of \tcode{rhs} as follows: -\begin{enumerate} +\begin{itemize} \item calls each registered callback pair \tcode{(fn, index)} as \tcode{(*fn)(erase_event, *this, index)}; -\item assigns to the member objects of \tcode{*this} the corresponding member objects of +\item then, assigns to the member objects of \tcode{*this} the corresponding member objects of \tcode{rhs}, except that \begin{itemize} @@ -2075,12 +2075,12 @@ objects; \end{itemize} -\item calls each callback pair that was copied from \tcode{rhs} as +\item then, calls each callback pair that was copied from \tcode{rhs} as \tcode{(*fn)(copyfmt_event, *this, index)}; -\item calls \tcode{exceptions(rhs.exceptions())}. +\item then, calls \tcode{exceptions(rhs.exceptions())}. -\end{enumerate} +\end{itemize} \pnum \begin{note} @@ -3964,10 +3964,10 @@ \requires Every overriding definition of this virtual function shall obey the following constraints: -\begin{enumerate} +\begin{itemize} \item The effect of consuming a character on the associated output sequence is -specified\footnote{That is, for each class derived from an instance of +specified.\footnote{That is, for each class derived from an instance of \tcode{basic_streambuf} in this Clause~(\ref{stringbuf}, \ref{filebuf}), @@ -4006,7 +4006,7 @@ and \tcode{pptr()} according to the above rules. -\end{enumerate} +\end{itemize} \pnum \returns diff --git a/source/numerics.tex b/source/numerics.tex index 7cc2e2aec5..3f54619e7f 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -1289,21 +1289,21 @@ \indextext{overloads!floating-point}% The additional overloads shall be sufficient to ensure: -\begin{enumerate} +\begin{itemize} \item If the argument has type \tcode{long double}, then it is effectively cast to \tcode{complex}. \item Otherwise, if the argument has type \tcode{double} or an integer type, then it is effectively cast to \tcode{complex<\brk{}double>}. \item Otherwise, if the argument has type \tcode{float}, then it is effectively cast to \tcode{complex}. -\end{enumerate} +\end{itemize} \pnum \indexlibrary{\idxcode{pow}}% Function template \tcode{pow} shall have additional overloads sufficient to ensure, for a call with at least one argument of type \tcode{complex}: -\begin{enumerate} +\begin{itemize} \item If either argument has type \tcode{complex} or type \tcode{long double}, then both arguments are effectively cast to @@ -1313,7 +1313,7 @@ \tcode{complex}. \item Otherwise, if either argument has type \tcode{complex} or \tcode{float}, then both arguments are effectively cast to \tcode{complex}. -\end{enumerate} +\end{itemize} \rSec2[complex.literals]{Suffixes for complex number literals} From 7a7d123584613a90cc64dbfb4b848807c3f085c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johel=20Ernesto=20Guerrero=20Pe=C3=B1a?= Date: Wed, 8 Nov 2017 01:50:47 -0400 Subject: [PATCH 010/168] [any.class] Revert dot to comma typo from bdff8687c (#1795) --- source/utilities.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/utilities.tex b/source/utilities.tex index d6107533ef..abd8b0fce7 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -5159,7 +5159,7 @@ \pnum An object of class \tcode{any} stores an instance of any type that satisfies the constructor requirements or it has no value, and this is referred to as the \defn{state} of the class \tcode{any} object. -The stored instance is called the \defnx{contained value}{contained value!\idxcode{any}}, +The stored instance is called the \defnx{contained value}{contained value!\idxcode{any}}. Two states are equivalent if either they both have no value, or both have a value and the contained values are equivalent. \pnum From a667ca39a93cd62e133e4eff388e772988219dd3 Mon Sep 17 00:00:00 2001 From: Arthur O'Dwyer Date: Wed, 8 Nov 2017 22:47:18 -0800 Subject: [PATCH 011/168] [tuple.cnstr] Add missing \tcode (#1796) --- source/utilities.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/utilities.tex b/source/utilities.tex index abd8b0fce7..fba153127a 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -1254,7 +1254,7 @@ constexpr functions. \pnum -The destructor of tuple shall be a trivial destructor if +The destructor of \tcode{tuple} shall be a trivial destructor if \tcode{(is_trivially_destructible_v \&\& ...)} is \tcode{true}. From 24bfe67b857bc6634ffc796324999373352d6d72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Wed, 8 Nov 2017 23:50:33 -0700 Subject: [PATCH 012/168] [meta.endian] Clarify wording regarding size of scalar types --- source/utilities.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/utilities.tex b/source/utilities.tex index fba153127a..1655b925ce 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -16883,7 +16883,7 @@ \begin{itemdescr} \pnum -If all scalar types have size \tcode{1}, then all of \tcode{endian::little}, +If all scalar types have size 1 byte, then all of \tcode{endian::little}, \tcode{endian::big}, and \tcode{endian::native} have the same value. Otherwise, \tcode{endian::little} is not equal to \tcode{endian::big}. If all scalar types are big-endian, \tcode{endian::native} is From 4f77c89e7635c8a9f361a0757c7765bcefeacd5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Thu, 9 Nov 2017 17:33:33 -0700 Subject: [PATCH 013/168] [over.built] Improve placeholder phrasing --- source/overloading.tex | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/overloading.tex b/source/overloading.tex index b8e349ac8f..05ff8bb5f0 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -3737,8 +3737,9 @@ \end{codeblock} \pnum -For every pointer to member type \tcode{\placeholder{T}} or type \tcode{std::nullptr_t} there -exist candidate operator functions of the form +For every \tcode{\placeholder{T}}, where \tcode{\placeholder{T}} +is a pointer to member type or \tcode{std::nullptr_t}, +there exist candidate operator functions of the form \begin{codeblock} bool operator==(@\placeholder{T}@, @\placeholder{T}@); From 4cdcf2a71e0e42dd18b40a7ee013125c068a7d21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Fri, 10 Nov 2017 10:04:20 -0700 Subject: [PATCH 014/168] [cover-reg] Fix box to fit page margins --- source/cover-reg.tex | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/source/cover-reg.tex b/source/cover-reg.tex index ff05bfb99c..783ee68ce5 100644 --- a/source/cover-reg.tex +++ b/source/cover-reg.tex @@ -2,6 +2,11 @@ %%-------------------------------------------------- %% Title page for the C++ Standard +\setlength{\fboxsep}{1em} +\newlength{\copyboxwidth} +\setlength{\copyboxwidth}{\textwidth} +\addtolength{\copyboxwidth}{-2\fboxsep} +\addtolength{\copyboxwidth}{-2\fboxrule} \thispagestyle{empty} {\raisebox{.35ex}{\smaller\copyright}}\,ISO 2017 --- All rights reserved @@ -28,23 +33,22 @@ \vfill -\begin{tabular}{|p{\hsize}|} -\hline +\fbox{% +\begin{minipage}{\copyboxwidth} +\vspace{1ex} \begin{center} \textbf{Warning} \end{center} - \vspace{2ex} This document is not an ISO International Standard. It is distributed for review and comment. It is subject to change without notice and may -not be referred to as an International Standard.\\\\ +not be referred to as an International Standard.\\[1em] Recipients of this draft are invited to submit, with their comments, notification of any relevant patent rights of which they are aware -and to provide supporting documentation.\\\\ -\hline -\end{tabular} +and to provide supporting documentation.\\ +\end{minipage}} \vfill \noindent @@ -55,11 +59,6 @@ \thispagestyle{cpppage} -\setlength{\fboxsep}{1em} -\newlength{\copyboxwidth} -\setlength{\copyboxwidth}{\textwidth} -\addtolength{\copyboxwidth}{-2\fboxsep} -\addtolength{\copyboxwidth}{-2\fboxrule} \fbox{% \begin{minipage}{\copyboxwidth} \vspace{1ex} From 301a71e35c49fafe2188736aff2631f36c81dd47 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Fri, 10 Nov 2017 23:55:37 -0800 Subject: [PATCH 015/168] [basic.lookup.argdep] Correct xref to point to the normative invisible friend rule. --- source/basic.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index a8ff6ba700..7d85be2591 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -1573,10 +1573,10 @@ \item Any \grammarterm{using-directive}{s} in the associated namespace are ignored. -\item Any namespace-scope friend functions or friend function templates +\item Any namespace-scope friend functions or friend function templates\iref{class.friend} declared in associated classes are visible within their respective namespaces even if they are not visible during an ordinary -lookup\iref{class.friend}. +lookup\iref{namespace.memdef}. \item All names except those of (possibly overloaded) functions and function templates are ignored. From 982a456f176ca00409c6e514af932051dce2485f Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Sat, 11 Nov 2017 05:06:58 +0100 Subject: [PATCH 016/168] [intro], [basic] Rearrange subclauses Fixes #1539. --- source/basic.tex | 3185 +++++++++++++++++++++++++++++--------------- source/intro.tex | 1189 +---------------- source/special.tex | 2 +- 3 files changed, 2192 insertions(+), 2184 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index 7d85be2591..ef74174e1d 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -2433,428 +2433,546 @@ \grammarterm{linkage-specification}\iref{dcl.link}. \end{note}% \indextext{linkage|)} -\rSec1[basic.start]{Start and termination} +\rSec1[basic.memobj]{Memory and objects} -\rSec2[basic.start.main]{\tcode{main} function} -\indextext{\idxcode{main} function|(} +\rSec2[intro.memory]{Memory model} \pnum -\indextext{program!start|(}% -A program shall contain a global function called \tcode{main}. -Executing a program starts a main thread of execution~(\ref{intro.multithread}, \ref{thread.threads}) -in which the \tcode{main} function is invoked, -and in which variables of static storage duration -might be initialized\iref{basic.start.static} and destroyed\iref{basic.start.term}. -It is \impldef{defining \tcode{main} in freestanding environment} -whether a program in a freestanding environment is required to define a \tcode{main} -function. \begin{note} In a freestanding environment, start-up and termination is -\impldef{start-up and termination in freestanding environment}; start-up contains the -execution of constructors for objects of namespace scope with static storage duration; -termination contains the execution of destructors for objects with static storage -duration. \end{note} +\indextext{memory model|(}% +The fundamental storage unit in the \Cpp memory model is the +\defn{byte}. +A byte is at least large enough to contain any member of the basic +\indextext{character set!basic execution}% +execution character set\iref{lex.charset} +and the eight-bit code units of the Unicode UTF-8 encoding form +and is composed of a contiguous sequence of +bits,\footnote{The number of bits in a byte is reported by the macro +\tcode{CHAR_BIT} in the header \tcode{}.} +the number of which is \impldef{bits in a byte}. The least +significant bit is called the \defn{low-order bit}; the most +significant bit is called the \defn{high-order bit}. The memory +available to a \Cpp program consists of one or more sequences of +contiguous bytes. Every byte has a unique address. \pnum -An implementation shall not predefine the \tcode{main} function. This -function shall not be overloaded. Its type shall have \Cpp language linkage -and it shall have a declared return type of type -\tcode{int}, but otherwise its type is \impldef{parameters to \tcode{main}}. -\indextext{\idxcode{main} function!implementation-defined parameters to}% -An implementation shall allow both -\begin{itemize} -\item a function of \tcode{()} returning \tcode{int} and -\item a function of \tcode{(int}, pointer to pointer to \tcode{char)} returning \tcode{int} -\end{itemize} - -\indextext{\idxcode{argc}}% -\indextext{\idxcode{argv}}% -as the type of \tcode{main}\iref{dcl.fct}. -\indextext{\idxcode{main} function!parameters to}% -\indextext{environment!program}% -In the latter form, for purposes of exposition, the first function -parameter is called \tcode{argc} and the second function parameter is -called \tcode{argv}, where \tcode{argc} shall be the number of -arguments passed to the program from the environment in which the -program is run. If -\tcode{argc} is nonzero these arguments shall be supplied in -\tcode{argv[0]} through \tcode{argv[argc-1]} as pointers to the initial -characters of null-terminated multibyte strings (\ntmbs{}s)\iref{multibyte.strings} -and \tcode{argv[0]} shall be the pointer to -the initial character of a \ntmbs that represents the name used to -invoke the program or \tcode{""}. The value of \tcode{argc} shall be -non-negative. The value of \tcode{argv[argc]} shall be 0. \begin{note} It -is recommended that any further (optional) parameters be added after -\tcode{argv}. \end{note} +\begin{note} The representation of types is described +in~\ref{basic.types}. \end{note} \pnum -The function \tcode{main} shall not be used within -a program. -\indextext{\idxcode{main} function!implementation-defined linkage of}% -The linkage\iref{basic.link} of \tcode{main} is -\impldef{linkage of \tcode{main}}. A program that defines \tcode{main} as -deleted or that declares \tcode{main} to be -\tcode{inline}, \tcode{static}, or \tcode{constexpr} is ill-formed. -The \tcode{main} function shall not be declared with a -\grammarterm{linkage-specification}\iref{dcl.link}. A program that -declares a variable \tcode{main} at global scope or that declares the name -\tcode{main} with C language linkage (in any namespace) is ill-formed. -The name \tcode{main} is -not otherwise reserved. \begin{example} Member functions, classes, and -enumerations can be called \tcode{main}, as can entities in other -namespaces. \end{example} +A \defn{memory location} is either an object of scalar type or a maximal +sequence of adjacent bit-fields all having nonzero width. \begin{note} Various +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} Two or more threads of +execution\iref{intro.multithread} can access separate memory +locations without interfering with each other. \pnum -\indextext{\idxcode{exit}}% -\indexlibrary{\idxcode{exit}}% -\indextext{termination!program}% -Terminating the program -without leaving the current block (e.g., by calling the function -\tcode{std::exit(int)}\iref{support.start.term}) does not destroy any -objects with automatic storage duration\iref{class.dtor}. If -\tcode{std::exit} is called to end a program during the destruction of -an object with static or thread storage duration, the program has undefined -behavior. +\begin{note} Thus a bit-field and an adjacent non-bit-field are in separate memory +locations, and therefore can be concurrently updated by two threads of execution +without interference. The same applies to two bit-fields, if one is declared +inside a nested struct declaration and the other is not, or if the two are +separated by a zero-length bit-field declaration, or if they are separated by a +non-bit-field declaration. It is not safe to concurrently update two bit-fields +in the same struct if all fields between them are also bit-fields of nonzero +width. \end{note} \pnum -\indextext{termination!program}% -\indextext{\idxcode{main} function!return from}% -A return statement in \tcode{main} has the effect of leaving the main -function (destroying any objects with automatic storage duration) and -calling \tcode{std::exit} with the return value as the argument. -If control flows off the end of -the \grammarterm{compound-statement} of \tcode{main}, -the effect is equivalent to a \tcode{return} with operand \tcode{0} -(see also \ref{except.handle}). -\indextext{\idxcode{main} function|)} +\begin{example} A structure declared as -\rSec2[basic.start.static]{Static initialization} +\begin{codeblock} +struct { + char a; + int b:5, + c:11, + :0, + d:8; + struct {int ee:8;} e; +} +\end{codeblock} -\pnum -\indextext{initialization}% -\indextext{initialization!static and thread}% -Variables with static storage duration -are initialized as a consequence of program initiation. Variables with -thread storage duration are initialized as a consequence of thread execution. -Within each of these phases of initiation, initialization occurs as follows. +contains four separate memory locations: The member \tcode{a} and bit-fields +\tcode{d} and \tcode{e.ee} are each separate memory locations, and can be +modified concurrently without interfering with each other. The bit-fields +\tcode{b} and \tcode{c} together constitute the fourth memory location. The +bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but +\tcode{b} and \tcode{a}, for example, can be. \end{example}% +\indextext{memory model|)} -\pnum -\indextext{initialization!static object@\tcode{static} object}% -\indextext{initialization!constant}% -A \defn{constant initializer} for a variable or temporary object \tcode{o} -is an initializer whose full-expression is a -constant expression, except that if \tcode{o} is an object, -such an initializer may also invoke constexpr constructors -for \tcode{o} and its subobjects even if those objects are of non-literal class -types. \begin{note} Such a class may have a non-trivial destructor. \end{note} -\defnx{Constant initialization}{constant initialization} is performed -if a variable or temporary object with static or thread storage duration -is initialized by a constant initializer for the entity. -\indextext{initialization!runtime}% -If constant initialization is not performed, a variable with static -storage duration\iref{basic.stc.static} or thread storage -duration\iref{basic.stc.thread} is zero-initialized\iref{dcl.init}. -Together, zero-initialization and constant initialization are called -\indextext{initialization!dynamic}% -\defn{static initialization}; -all other initialization is \defn{dynamic initialization}. -All static initialization strongly happens before\iref{intro.races} -any dynamic initialization. -\begin{note} The dynamic initialization of non-local variables is described -in~\ref{basic.start.dynamic}; that of local static variables is described -in~\ref{stmt.dcl}. \end{note} +\rSec2[intro.object]{Object model} \pnum -An implementation is permitted to perform the initialization of a -variable with static or thread storage duration as a static -initialization even if such initialization is not required to be done -statically, provided that +\indextext{object model|(}% +The constructs in a \Cpp program create, destroy, refer to, access, and +manipulate objects. +An \defn{object} is created +by a definition\iref{basic.def}, +by a \grammarterm{new-expression}\iref{expr.new}, +when implicitly changing the active member of a union\iref{class.union}, +or +when a temporary object is created~(\ref{conv.rval}, \ref{class.temporary}). +An object occupies a region of storage +in its period of construction\iref{class.cdtor}, +throughout its lifetime\iref{basic.life}, +and +in its period of destruction\iref{class.cdtor}. +\begin{note} A function is not an object, regardless of whether or not it +occupies storage in the way that objects do. \end{note} +The properties of an +object are determined when the object is created. An object can have a +name\iref{basic}. An object has a storage +duration\iref{basic.stc} which influences its +lifetime\iref{basic.life}. An object has a +type\iref{basic.types}. +Some objects are +polymorphic\iref{class.virtual}; the implementation +generates information associated with each such object that makes it +possible to determine that object's type during program execution. For +other objects, the interpretation of the values found therein is +determined by the type of the \grammarterm{expression}{s}\iref{expr} +used to access them. + +\pnum +\indextext{subobject}% +Objects can contain other objects, called \defnx{subobjects}{subobject}. +A subobject can be +a \defn{member subobject}\iref{class.mem}, a \defn{base class subobject}\iref{class.derived}, +or an array element. +\indextext{object!complete}% +An object that is not a subobject of any other object is called a \defn{complete +object}. +If an object is created +in storage associated with a member subobject or array element \placeholder{e} +(which may or may not be within its lifetime), +the created object +is a subobject of \placeholder{e}'s containing object if: \begin{itemize} \item -the dynamic version of the initialization does not change the -value of any other object of static or thread storage duration -prior to its initialization, and - +the lifetime of \placeholder{e}'s containing object has begun and not ended, and \item -the static version of the initialization produces the same value -in the initialized variable as would be produced by the dynamic -initialization if all variables not required to be initialized statically -were initialized dynamically. +the storage for the new object exactly overlays the storage location associated with \placeholder{e}, and +\item +the new object is of the same type as \placeholder{e} (ignoring cv-qualification). \end{itemize} \begin{note} -As a consequence, if the initialization of an object \tcode{obj1} refers to an -object \tcode{obj2} of namespace scope potentially requiring dynamic initialization and defined -later in the same translation unit, it is unspecified whether the value of \tcode{obj2} used -will be the value of the fully initialized \tcode{obj2} (because \tcode{obj2} was statically -initialized) or will be the value of \tcode{obj2} merely zero-initialized. For example, +If the subobject contains a reference member or a \tcode{const} subobject, +the name of the original subobject cannot be used to access the new object\iref{basic.life}. +\end{note} +\begin{example} \begin{codeblock} -inline double fd() { return 1.0; } -extern double d1; -double d2 = d1; // unspecified: - // may be statically initialized to \tcode{0.0} or - // dynamically initialized to \tcode{0.0} if \tcode{d1} is - // dynamically initialized, or \tcode{1.0} otherwise -double d1 = fd(); // may be initialized statically or dynamically to \tcode{1.0} +struct X { const int n; }; +union U { X x; float f; }; +void tong() { + U u = {{ 1 }}; + u.f = 5.f; // OK, creates new subobject of \tcode{u}\iref{class.union} + X *p = new (&u.x) X {2}; // OK, creates new subobject of \tcode{u} + assert(p->n == 2); // OK + assert(*std::launder(&u.x.n) == 2); // OK + assert(u.x.n == 2); // undefined behavior, \tcode{u.x} does not name new subobject +} \end{codeblock} -\end{note} - -\rSec2[basic.start.dynamic]{Dynamic initialization of non-local variables} - -\pnum -\indextext{initialization!dynamic non-local}% -\indextext{start!program}% -\indextext{initialization!order of}% -Dynamic initialization of a non-local variable with static storage duration is -unordered if the variable is an implicitly or explicitly instantiated -specialization, is partially-ordered if the variable -is an inline variable that is not an implicitly or explicitly instantiated -specialization, and otherwise is ordered. -\begin{note} An explicitly specialized non-inline static data member or -variable template specialization has ordered initialization.\end{note} +\end{example} \pnum -Dynamic initialization of non-local variables \tcode{V} and \tcode{W} -with static storage duration are ordered as follows: +\indextext{object!providing storage for}% +If a complete object is created\iref{expr.new} +in storage associated with another object \placeholder{e} +of type ``array of $N$ \tcode{unsigned char}'' or +of type ``array of $N$ \tcode{std::byte}''\iref{cstddef.syn}, +that array \defn{provides storage} +for the created object if: \begin{itemize} \item -If \tcode{V} and \tcode{W} have -ordered initialization and \tcode{V} is defined before \tcode{W} within -a single translation unit, the initialization of \tcode{V} is sequenced -before the initialization of \tcode{W}. - +the lifetime of \placeholder{e} has begun and not ended, and \item -If \tcode{V} has partially-ordered initialization, \tcode{W} does not have -unordered initialization, and \tcode{V} is defined before \tcode{W} in -every translation unit in which \tcode{W} is defined, then +the storage for the new object fits entirely within \placeholder{e}, and +\item +there is no smaller array object that satisfies these constraints. +\end{itemize} +\begin{note} +If that portion of the array +previously provided storage for another object, +the lifetime of that object ends +because its storage was reused\iref{basic.life}. +\end{note} +\begin{example} +\begin{codeblock} +template +struct AlignedUnion { + alignas(T...) unsigned char data[max(sizeof(T)...)]; +}; +int f() { + AlignedUnion au; + int *p = new (au.data) int; // OK, \tcode{au.data} provides storage + char *c = new (au.data) char(); // OK, ends lifetime of \tcode{*p} + char *d = new (au.data + 1) char(); + return *c + *d; // OK +} + +struct A { unsigned char a[32]; }; +struct B { unsigned char b[16]; }; +A a; +B *b = new (a.a + 8) B; // \tcode{a.a} provides storage for \tcode{*b} +int *p = new (b->b + 4) int; // \tcode{b->b} provides storage for \tcode{*p} + // \tcode{a.a} does not provide storage for \tcode{*p} (directly), + // but \tcode{*p} is nested within \tcode{a} (see below) +\end{codeblock} +\end{example} + +\pnum +\indextext{object!nested within}% +An object \placeholder{a} is \defn{nested within} another object \placeholder{b} if: \begin{itemize} \item -if the program starts a thread\iref{intro.multithread} -other than the main thread\iref{basic.start.main}, -the initialization of \tcode{V} -strongly happens before -the initialization of \tcode{W}; +\placeholder{a} is a subobject of \placeholder{b}, or \item -otherwise, -the initialization of \tcode{V} -is sequenced before -the initialization of \tcode{W}. +\placeholder{b} provides storage for \placeholder{a}, or +\item +there exists an object \placeholder{c} +where \placeholder{a} is nested within \placeholder{c}, +and \placeholder{c} is nested within \placeholder{b}. \end{itemize} +\pnum +For every object \tcode{x}, there is some object called the +\defn{complete object of} \tcode{x}, determined as follows: +\begin{itemize} \item -Otherwise, if the program starts a thread -other than the main thread -before either \tcode{V} or \tcode{W} is initialized, -it is unspecified in which threads -the initializations of \tcode{V} and \tcode{W} occur; -the initializations are unsequenced if they occur in the same thread. +If \tcode{x} is a complete object, then the complete object +of \tcode{x} is itself. \item -Otherwise, the initializations of \tcode{V} and \tcode{W} are indeterminately sequenced. +Otherwise, the complete object of \tcode{x} is the complete object +of the (unique) object that contains \tcode{x}. \end{itemize} -\begin{note} -This definition permits initialization of a sequence of -ordered variables concurrently with another sequence. -\end{note} \pnum -\indextext{non-initialization odr-use|see{odr-use, non-initialization}}% -A \defnx{non-initialization odr-use}{odr-use!non-initialization} -is an odr-use\iref{basic.def.odr} not caused directly or indirectly by -the initialization of a non-local static or thread storage duration variable. +If a complete object, a data member\iref{class.mem}, or an array element is of +class type, its type is considered the \defn{most derived +class}, to distinguish it from the class type of any base class subobject; +an object of a most derived class type or of a non-class type is called a +\defn{most derived object}. \pnum -\indextext{evaluation!unspecified order of}% -It is \impldef{dynamic initialization of static variables before \tcode{main}} -whether the dynamic initialization of a -non-local non-inline variable with static storage duration -is sequenced before the first statement of \tcode{main} or is deferred. -If it is deferred, it strongly happens before -any non-initialization odr-use -of any non-inline function or non-inline variable -defined in the same translation unit as the variable to be initialized.% -\footnote{A non-local variable with static storage duration -having initialization -with side effects is initialized in this case, -even if it is not itself odr-used~(\ref{basic.def.odr}, \ref{basic.stc.static}).} -It is \impldef{threads and program points at which deferred dynamic initialization is performed} -in which threads and at which points in the program such deferred dynamic initialization occurs. -\begin{note} -Such points should be chosen in a way that allows the programmer to avoid deadlocks. -\end{note} +\indextext{most derived object!bit-field}% +Unless it is a bit-field\iref{class.bit}, a most derived object shall have a +nonzero size and shall occupy one or more bytes of storage. Base class +subobjects may have zero size. An object of trivially copyable or +standard-layout type\iref{basic.types} shall occupy contiguous bytes of +storage. + +\pnum +\indextext{most derived object!bit-field}% +\indextext{most derived object!zero size subobject}% +Unless an object is a bit-field or a base class subobject of zero size, the +address of that object is the address of the first byte it occupies. +Two objects \placeholder{a} and \placeholder{b} +with overlapping lifetimes +that are not bit-fields +may have the same address +if one is nested within the other, +or +if at least one is a base class subobject of zero size +and they are of different types; +otherwise, they have distinct addresses.\footnote{Under the ``as-if'' rule an +implementation is allowed to store two objects at the same machine address or +not store an object at all if the program cannot observe the +difference\iref{intro.execution}.} + \begin{example} \begin{codeblock} -// - File 1 - -#include "a.h" -#include "b.h" -B b; -A::A(){ - b.Use(); -} +static const char test1 = 'x'; +static const char test2 = 'x'; +const bool b = &test1 != &test2; // always \tcode{true} +\end{codeblock} +\end{example} -// - File 2 - -#include "a.h" -A a; +\pnum +\begin{note} +\Cpp provides a variety of fundamental types and several ways of composing +new types from existing types\iref{basic.types}. +\end{note}% +\indextext{object model|)} -// - File 3 - -#include "a.h" -#include "b.h" -extern A a; -extern B b; - -int main() { - a.Use(); - b.Use(); -} -\end{codeblock} - -It is \impldef{dynamic initialization of static variables before \tcode{main}} -whether either \tcode{a} or \tcode{b} is -initialized before \tcode{main} is entered or whether the -initializations are delayed until \tcode{a} is first odr-used in -\tcode{main}. In particular, if \tcode{a} is initialized before -\tcode{main} is entered, it is not guaranteed that \tcode{b} will be -initialized before it is odr-used by the initialization of \tcode{a}, that -is, before \tcode{A::A} is called. If, however, \tcode{a} is initialized -at some point after the first statement of \tcode{main}, \tcode{b} will -be initialized prior to its use in \tcode{A::A}. \end{example} - -\pnum -It is \impldef{dynamic initialization of static inline variables before \tcode{main}} -whether the dynamic initialization of a -non-local inline variable with static storage duration -is sequenced before the first statement of \tcode{main} or is deferred. -If it is deferred, it strongly happens before -any non-initialization odr-use -of that variable. -It is \impldef{threads and program points at which deferred dynamic initialization is performed} -in which threads and at which points in the program such deferred dynamic initialization occurs. +\rSec2[basic.life]{Object lifetime} \pnum -It is \impldef{dynamic initialization of thread-local variables before entry} -whether the dynamic initialization of a -non-local non-inline variable with thread storage duration -is sequenced before the first statement of the initial function of a thread or is deferred. -If it is deferred, -the initialization associated with the entity for thread \placeholder{t} -is sequenced before the first non-initialization odr-use by \placeholder{t} -of any non-inline variable with thread storage duration -defined in the same translation unit as the variable to be initialized. -It is \impldef{threads and program points at which deferred dynamic initialization is performed} -in which threads and at which points in the program such deferred dynamic initialization occurs. +\indextext{object lifetime|(}% +The \defn{lifetime} of an object or reference is a runtime property of the +object or reference. +An object is said to have \defnx{non-vacuous initialization}{initialization!non-vacuous} if it is of a class or +aggregate type and it or one of its subobjects is initialized by a constructor +other than a trivial default constructor. \begin{note} Initialization by a +trivial copy/move constructor is non-vacuous initialization. \end{note} +The lifetime of an object of type \tcode{T} begins when: +\begin{itemize} +\item storage with the proper alignment and size for type \tcode{T} is +obtained, and +\item if the object has non-vacuous initialization, its initialization is complete, +\end{itemize} +except that if the object is a union member or subobject thereof, +its lifetime only begins if that union member is the +initialized member in the union~(\ref{dcl.init.aggr}, \ref{class.base.init}), +or as described in \ref{class.union}. +The lifetime of an object \placeholder{o} of type \tcode{T} ends when: +\begin{itemize} +\item if \tcode{T} is a class type with a non-trivial +destructor\iref{class.dtor}, the destructor call starts, or +\item the storage which the object occupies is released, +or is reused by an object that is not nested within \placeholder{o}\iref{intro.object}. +\end{itemize} \pnum -If the initialization of a non-local variable with static or thread storage duration -exits via -an exception, \tcode{std::terminate} is called\iref{except.terminate}.% -\indextext{program!start|)} - -\rSec2[basic.start.term]{Termination} +The lifetime of a reference begins when its initialization is complete. +The lifetime of a reference ends as if it were a scalar object. \pnum -\indextext{program!termination|(}% -\indextext{object!destructor static}% -\indextext{\idxcode{main} function!return from}% -Destructors\iref{class.dtor} for initialized objects -(that is, objects whose lifetime\iref{basic.life} has begun) -with static storage duration, -and functions registered with \tcode{std::atexit}, -are called as part of a call to -\indextext{\idxcode{exit}}% -\indexlibrary{\idxcode{exit}}% -\tcode{std::exit}\iref{support.start.term}. -The call to \tcode{std::exit} is sequenced before -the invocations of the destructors and the registered functions. -\begin{note} -Returning from \tcode{main} invokes \tcode{std::exit}\iref{basic.start.main}. -\end{note} +\begin{note} \ref{class.base.init} +describes the lifetime of base and member subobjects. \end{note} \pnum -Destructors for initialized objects with thread storage duration within a given thread -are called as a result of returning from the initial function of that thread and as a -result of that thread calling \tcode{std::exit}. -The completions of the destructors for all initialized objects with thread storage -duration within that thread strongly happen before the initiation of the destructors of -any object with static storage duration. +The properties ascribed to objects and references throughout this document +apply for a given object or reference only during its lifetime. \begin{note} +In particular, before the lifetime of an object starts and after its +lifetime ends there are significant restrictions on the use of the +object, as described below, in~\ref{class.base.init} and +in~\ref{class.cdtor}. Also, the behavior of an object under construction +and destruction might not be the same as the behavior of an object whose +lifetime has started and not ended. \ref{class.base.init} +and~\ref{class.cdtor} describe the behavior of objects during the +construction and destruction phases. \end{note} \pnum -If the completion of the constructor or dynamic initialization of an object with static -storage duration strongly happens before that of another, the completion of the destructor -of the second is sequenced before the initiation of the destructor of the first. -If the completion of the constructor or dynamic initialization of an object with thread -storage duration is sequenced before that of another, the completion of the destructor -of the second is sequenced before the initiation of the destructor of the first. -If an object is -initialized statically, the object is destroyed in the same order as if -the object was dynamically initialized. For an object of array or class -type, all subobjects of that object are destroyed before any block-scope -object with static storage duration initialized during the construction -of the subobjects is destroyed. -If the destruction of an object with static or thread storage duration -exits via an exception, -\tcode{std::terminate} is called\iref{except.terminate}. +A program may end the lifetime of any object by reusing the storage +which the object occupies or by explicitly calling the destructor for an +object of a class type with a non-trivial destructor. For an object of a +class type with a non-trivial destructor, the program is not required to +call the destructor explicitly before the storage which the object +occupies is reused or released; however, if there is no explicit call to +the destructor or if a \grammarterm{delete-expression}\iref{expr.delete} +is not used to release the storage, the destructor shall not be +implicitly called and any program that depends on the side effects +produced by the destructor has undefined behavior. \pnum -If a function contains a block-scope object of static or thread storage duration that has been -destroyed and the function is called during the destruction of an object with static or -thread storage duration, the program has undefined behavior if the flow of control -passes through the definition of the previously destroyed block-scope object. Likewise, the -behavior is undefined if the block-scope object is used indirectly (i.e., through a -pointer) after its destruction. +Before the lifetime of an object has started but after the storage which +the object will occupy has been allocated\footnote{For example, before the +construction of a global object of +non-POD class type\iref{class.cdtor}.} +or, after the lifetime of an object has ended and before the storage +which the object occupied is reused or released, any pointer that represents the address of +the storage location where the object will be or was located may be +used but only in limited ways. +For an object under construction or destruction, see~\ref{class.cdtor}. +Otherwise, such +a pointer refers to allocated +storage\iref{basic.stc.dynamic.deallocation}, and using the pointer as +if the pointer were of type \tcode{void*}, is +well-defined. Indirection through such a pointer is permitted but the resulting lvalue may only be used in +limited ways, as described below. The +program has undefined behavior if: +\begin{itemize} +\item + the object will be or was of a class type with a non-trivial destructor + and the pointer is used as the operand of a \grammarterm{delete-expression}, +\item + the pointer is used to access a non-static data member or call a + non-static member function of the object, or +\item + the pointer is implicitly converted\iref{conv.ptr} to a pointer + to a virtual base class, or +\item + the pointer is used as the operand of a + \tcode{static_cast}\iref{expr.static.cast}, except when the conversion + is to pointer to \cv{}~\tcode{void}, or to pointer to \cv{}~\tcode{void} + and subsequently to pointer to + \cv{}~\tcode{char}, + \cv{}~\tcode{unsigned char}, or + \cv{}~\tcode{std::byte}\iref{cstddef.syn}, or +\item + the pointer is used as the operand of a + \tcode{dynamic_cast}\iref{expr.dynamic.cast}. +\end{itemize} +\begin{example} +\begin{codeblock} +#include -\pnum -\indextext{\idxcode{atexit}}% -\indexlibrary{\idxcode{atexit}}% -If the completion of the initialization of an object with static storage -duration strongly happens before a call to \tcode{std::atexit}~(see -\tcode{}, \ref{support.start.term}), the call to the function passed to -\tcode{std::atexit} is sequenced before the call to the destructor for the object. If a -call to \tcode{std::atexit} strongly happens before the completion of the initialization of -an object with static storage duration, the call to the destructor for the -object is sequenced before the call to the function passed to \tcode{std::atexit}. If a -call to \tcode{std::atexit} strongly happens before another call to \tcode{std::atexit}, the -call to the function passed to the second \tcode{std::atexit} call is sequenced before -the call to the function passed to the first \tcode{std::atexit} call. +struct B { + virtual void f(); + void mutate(); + virtual ~B(); +}; -\pnum -If there is a use of a standard library object or function not permitted within signal -handlers\iref{support.runtime} that does not happen before\iref{intro.multithread} -completion of destruction of objects with static storage duration and execution of -\tcode{std::atexit} registered functions\iref{support.start.term}, the program has -undefined behavior. \begin{note} If there is a use of an object with static storage -duration that does not happen before the object's destruction, the program has undefined -behavior. Terminating every thread before a call to \tcode{std::exit} or the exit from -\tcode{main} is sufficient, but not necessary, to satisfy these requirements. These -requirements permit thread managers as static-storage-duration objects. \end{note} +struct D1 : B { void f(); }; +struct D2 : B { void f(); }; -\pnum -\indextext{\idxcode{abort}}% -\indexlibrary{\idxcode{abort}}% -\indextext{termination!program}% -Calling the function \tcode{std::abort()} declared in -\indextext{\idxhdr{cstdlib}}% -\tcode{} terminates the program without executing any destructors -and without calling -the functions passed to \tcode{std::atexit()} or \tcode{std::at_quick_exit()}.% -\indextext{program!termination|)} +void B::mutate() { + new (this) D2; // reuses storage --- ends the lifetime of \tcode{*this} + f(); // undefined behavior + ... = this; // OK, \tcode{this} points to valid memory +} -\rSec1[basic.stc]{Storage duration} +void g() { + void* p = std::malloc(sizeof(D1) + sizeof(D2)); + B* pb = new (p) D1; + pb->mutate(); + *pb; // OK: \tcode{pb} points to valid memory + void* q = pb; // OK: \tcode{pb} points to valid memory + pb->f(); // undefined behavior, lifetime of \tcode{*pb} has ended +} +\end{codeblock} +\end{example} \pnum -\indextext{storage duration|(}% -The \defn{storage duration} is the property of an object that defines the minimum -potential lifetime of the storage containing the object. The storage -duration is determined by the construct used to create the object and is -one of the following: - +Similarly, before the lifetime of an object has started but after the +storage which the object will occupy has been allocated or, after the +lifetime of an object has ended and before the storage which the object +occupied is reused or released, any glvalue that refers to the original +object may be used but only in limited ways. +For an object under construction or destruction, see~\ref{class.cdtor}. +Otherwise, such +a glvalue refers to +allocated storage\iref{basic.stc.dynamic.deallocation}, and using the +properties of the glvalue that do not depend on its value is +well-defined. The program has undefined behavior if: \begin{itemize} -\item static storage duration -\item thread storage duration -\item automatic storage duration -\item dynamic storage duration +\item the glvalue is used to access the object, or +\item the glvalue is used to call a non-static member function of the object, or +\item the glvalue is bound to a reference to a virtual base class\iref{dcl.init.ref}, or +\item the glvalue is used as the operand of a +\tcode{dynamic_cast}\iref{expr.dynamic.cast} or as the operand of +\tcode{typeid}. \end{itemize} \pnum -\indextext{storage duration!static}% -\indextext{storage duration!thread}% -\indextext{storage duration!automatic}% +If, after the lifetime of an object has ended and before the storage +which the object occupied is reused or released, a new object is created +at the storage location which the original object occupied, a pointer +that pointed to the original object, a reference that referred to the +original object, or the name of the original object will automatically +refer to the new object and, once the lifetime of the new object has +started, can be used to manipulate the new object, if: +\begin{itemize} +\item the storage for the new object exactly overlays the storage +location which the original object occupied, and + +\item the new object is of the same type as the original object +(ignoring the top-level cv-qualifiers), and + +\item the type of the original object is not const-qualified, and, if a +class type, does not contain any non-static data member whose type is +const-qualified or a reference type, and + +\item the original object was a most derived object\iref{intro.object} +of type \tcode{T} and the new object is a most derived object of type +\tcode{T} (that is, they are not base class subobjects). +\end{itemize} +\begin{example} +\begin{codeblock} +struct C { + int i; + void f(); + const C& operator=( const C& ); +}; + +const C& C::operator=( const C& other) { + if ( this != &other ) { + this->~C(); // lifetime of \tcode{*this} ends + new (this) C(other); // new object of type \tcode{C} created + f(); // well-defined + } + return *this; +} + +C c1; +C c2; +c1 = c2; // well-defined +c1.f(); // well-defined; \tcode{c1} refers to a new object of type \tcode{C} +\end{codeblock} +\end{example} +\begin{note} +If these conditions are not met, +a pointer to the new object can be obtained from +a pointer that represents the address of its storage +by calling \tcode{std::launder}\iref{support.dynamic}. +\end{note} + +\pnum +If a program ends the lifetime of an object of type \tcode{T} with +static\iref{basic.stc.static}, thread\iref{basic.stc.thread}, +or automatic\iref{basic.stc.auto} +storage duration and if \tcode{T} has a non-trivial destructor,\footnote{That +is, an object for which a destructor will be called +implicitly---upon exit from the block for an object with +automatic storage duration, upon exit from the thread for an object with +thread storage duration, or upon exit from the program for an object +with static storage duration.} +the program must ensure that an object of the original type occupies +that same storage location when the implicit destructor call takes +place; otherwise the behavior of the program is undefined. This is true +even if the block is exited with an exception. \begin{example} + +\begin{codeblock} +class T { }; +struct B { + ~B(); +}; + +void h() { + B b; + new (&b) T; +} // undefined behavior at block exit +\end{codeblock} +\end{example} + +\pnum +Creating a new object within the storage that a \tcode{const} complete +object with static, thread, or automatic storage duration occupies, +or within the storage that such a \tcode{const} object used to occupy before +its lifetime ended, results in undefined behavior. +\begin{example} +\begin{codeblock} +struct B { + B(); + ~B(); +}; + +const B b; + +void h() { + b.~B(); + new (const_cast(&b)) const B; // undefined behavior +} +\end{codeblock} +\end{example} + +\pnum +In this section, ``before'' and ``after'' refer to the ``happens before'' +relation\iref{intro.multithread}. \begin{note} Therefore, undefined behavior results +if an object that is being constructed in one thread is referenced from another +thread without adequate synchronization. \end{note}% +\indextext{object lifetime|)} + +\rSec2[basic.stc]{Storage duration} + +\pnum +\indextext{storage duration|(}% +The \defn{storage duration} is the property of an object that defines the minimum +potential lifetime of the storage containing the object. The storage +duration is determined by the construct used to create the object and is +one of the following: + +\begin{itemize} +\item static storage duration +\item thread storage duration +\item automatic storage duration +\item dynamic storage duration +\end{itemize} + +\pnum +\indextext{storage duration!static}% +\indextext{storage duration!thread}% +\indextext{storage duration!automatic}% \indextext{storage duration!dynamic}% Static, thread, and automatic storage durations are associated with objects introduced by declarations\iref{basic.def} and implicitly created by @@ -2879,7 +2997,7 @@ copying an invalid pointer value causes a system-generated runtime fault.} -\rSec2[basic.stc.static]{Static storage duration} +\rSec3[basic.stc.static]{Static storage duration} \pnum \indextext{storage duration!static}% @@ -2907,7 +3025,7 @@ The keyword \tcode{static} applied to a class data member in a class definition gives the data member static storage duration. -\rSec2[basic.stc.thread]{Thread storage duration} +\rSec3[basic.stc.thread]{Thread storage duration} \pnum \indextext{storage duration!thread}% @@ -2921,7 +3039,7 @@ A variable with thread storage duration shall be initialized before its first odr-use\iref{basic.def.odr} and, if constructed, shall be destroyed on thread exit. -\rSec2[basic.stc.auto]{Automatic storage duration} +\rSec3[basic.stc.auto]{Automatic storage duration} \pnum \indextext{storage duration!automatic}% @@ -2943,7 +3061,7 @@ unused, except that a class object or its copy/move may be eliminated as specified in~\ref{class.copy}. -\rSec2[basic.stc.dynamic]{Dynamic storage duration}% +\rSec3[basic.stc.dynamic]{Dynamic storage duration}% \indextext{storage duration!dynamic|(} \pnum @@ -3016,7 +3134,7 @@ semantics specified in~\ref{basic.stc.dynamic.allocation} and~\ref{basic.stc.dynamic.deallocation}. -\rSec3[basic.stc.dynamic.allocation]{Allocation functions} +\rSec4[basic.stc.dynamic.allocation]{Allocation functions} \pnum \indextext{function!allocation}% @@ -3090,7 +3208,7 @@ exception object\iref{except.throw}. \end{note} -\rSec3[basic.stc.dynamic.deallocation]{Deallocation functions} +\rSec4[basic.stc.dynamic.deallocation]{Deallocation functions} \pnum \indextext{function!deallocation}% @@ -3145,7 +3263,7 @@ deallocation function shall deallocate the storage referenced by the pointer, ending the duration of the region of storage. -\rSec3[basic.stc.dynamic.safety]{Safely-derived pointers} +\rSec4[basic.stc.dynamic.safety]{Safely-derived pointers} \pnum \indextext{pointer!safely-derived|(}% @@ -3235,7 +3353,7 @@ \indextext{pointer!safely-derived|)}% \indextext{storage duration!dynamic|)} -\rSec2[basic.stc.inherit]{Duration of subobjects} +\rSec3[basic.stc.inherit]{Duration of subobjects} \pnum \indextext{storage duration!class member}% @@ -3243,264 +3361,93 @@ is that of their complete object\iref{intro.object}. \indextext{storage duration|)}% -\rSec1[basic.life]{Object lifetime} +\rSec2[basic.align]{Alignment} \pnum -\indextext{object lifetime|(}% -The \defn{lifetime} of an object or reference is a runtime property of the -object or reference. -An object is said to have \defnx{non-vacuous initialization}{initialization!non-vacuous} if it is of a class or -aggregate type and it or one of its subobjects is initialized by a constructor -other than a trivial default constructor. \begin{note} Initialization by a -trivial copy/move constructor is non-vacuous initialization. \end{note} -The lifetime of an object of type \tcode{T} begins when: -\begin{itemize} -\item storage with the proper alignment and size for type \tcode{T} is -obtained, and -\item if the object has non-vacuous initialization, its initialization is complete, -\end{itemize} -except that if the object is a union member or subobject thereof, -its lifetime only begins if that union member is the -initialized member in the union~(\ref{dcl.init.aggr}, \ref{class.base.init}), -or as described in \ref{class.union}. -The lifetime of an object \placeholder{o} of type \tcode{T} ends when: -\begin{itemize} -\item if \tcode{T} is a class type with a non-trivial -destructor\iref{class.dtor}, the destructor call starts, or -\item the storage which the object occupies is released, -or is reused by an object that is not nested within \placeholder{o}\iref{intro.object}. -\end{itemize} +Object types have \defnx{alignment requirements}{alignment requirement!implementation-defined}~(\ref{basic.fundamental}, \ref{basic.compound}) +which place restrictions on the addresses at which an object of that type +may be allocated. An \defn{alignment} is an \impldef{alignment} +integer value representing the number of bytes between successive addresses +at which a given object can be allocated. An object type imposes an alignment +requirement on every object of that type; stricter alignment can be requested +using the alignment specifier\iref{dcl.align}. \pnum -The lifetime of a reference begins when its initialization is complete. -The lifetime of a reference ends as if it were a scalar object. +\indextext{alignment!fundamental}% +A \defn{fundamental alignment} is represented by an alignment +less than or equal to the greatest alignment supported by the implementation in +all contexts, which is equal to +\tcode{alignof(std::max_align_t)}\iref{support.types}. +The alignment required for a type might be different when it is used as the type +of a complete object and when it is used as the type of a subobject. \begin{example} +\begin{codeblock} +struct B { long double d; }; +struct D : virtual B { char c; }; +\end{codeblock} + +When \tcode{D} is the type of a complete object, it will have a subobject of +type \tcode{B}, so it must be aligned appropriately for a \tcode{long double}. +If \tcode{D} appears as a subobject of another object that also has \tcode{B} +as a virtual base class, the \tcode{B} subobject might be part of a different +subobject, reducing the alignment requirements on the \tcode{D} subobject. +\end{example} The result of the \tcode{alignof} operator reflects the alignment +requirement of the type in the complete-object case. \pnum -\begin{note} \ref{class.base.init} -describes the lifetime of base and member subobjects. \end{note} +\indextext{alignment!extended}% +\indextext{alignment!new-extended}% +\indextext{over-aligned type|see{type, over-aligned}}% +An \defn{extended alignment} is represented by an alignment +greater than \tcode{alignof(std::max_align_t)}. It is \impldef{support for extended alignments} +whether any extended alignments are supported and the contexts in which they are +supported\iref{dcl.align}. A type having an extended alignment +requirement is an \defnx{over-aligned type}{type!over-aligned}. \begin{note} +Every over-aligned type is or contains a class type +to which extended alignment applies (possibly through a non-static data member). +\end{note} +A \defn{new-extended alignment} is represented by +an alignment greater than \mname{STDCPP_DEFAULT_NEW_ALIGNMENT}\iref{cpp.predefined}. \pnum -The properties ascribed to objects and references throughout this document -apply for a given object or reference only during its lifetime. \begin{note} -In particular, before the lifetime of an object starts and after its -lifetime ends there are significant restrictions on the use of the -object, as described below, in~\ref{class.base.init} and -in~\ref{class.cdtor}. Also, the behavior of an object under construction -and destruction might not be the same as the behavior of an object whose -lifetime has started and not ended. \ref{class.base.init} -and~\ref{class.cdtor} describe the behavior of objects during the -construction and destruction phases. \end{note} +Alignments are represented as values of the type \tcode{std::size_t}. +Valid alignments include only those values returned by an \tcode{alignof} +expression for the fundamental types plus an additional \impldef{alignment additional +values} +set of values, which may be empty. +Every alignment value shall be a non-negative integral power of two. \pnum -A program may end the lifetime of any object by reusing the storage -which the object occupies or by explicitly calling the destructor for an -object of a class type with a non-trivial destructor. For an object of a -class type with a non-trivial destructor, the program is not required to -call the destructor explicitly before the storage which the object -occupies is reused or released; however, if there is no explicit call to -the destructor or if a \grammarterm{delete-expression}\iref{expr.delete} -is not used to release the storage, the destructor shall not be -implicitly called and any program that depends on the side effects -produced by the destructor has undefined behavior. +Alignments have an order from \defnx{weaker}{alignment!weaker} to +\defnx{stronger}{alignment!stronger} or \defnx{stricter}{alignment!stricter} alignments. Stricter +alignments have larger alignment values. An address that satisfies an alignment +requirement also satisfies any weaker valid alignment requirement. \pnum -Before the lifetime of an object has started but after the storage which -the object will occupy has been allocated\footnote{For example, before the -construction of a global object of -non-POD class type\iref{class.cdtor}.} -or, after the lifetime of an object has ended and before the storage -which the object occupied is reused or released, any pointer that represents the address of -the storage location where the object will be or was located may be -used but only in limited ways. -For an object under construction or destruction, see~\ref{class.cdtor}. -Otherwise, such -a pointer refers to allocated -storage\iref{basic.stc.dynamic.deallocation}, and using the pointer as -if the pointer were of type \tcode{void*}, is -well-defined. Indirection through such a pointer is permitted but the resulting lvalue may only be used in -limited ways, as described below. The -program has undefined behavior if: +The alignment requirement of a complete type can be queried using an +\tcode{alignof} expression\iref{expr.alignof}. Furthermore, +the narrow character types\iref{basic.fundamental} shall have the weakest +alignment requirement. +\begin{note} This enables the narrow character types to be used as the +underlying type for an aligned memory area\iref{dcl.align}.\end{note} + +\pnum +Comparing alignments is meaningful and provides the obvious results: + \begin{itemize} -\item - the object will be or was of a class type with a non-trivial destructor - and the pointer is used as the operand of a \grammarterm{delete-expression}, -\item - the pointer is used to access a non-static data member or call a - non-static member function of the object, or -\item - the pointer is implicitly converted\iref{conv.ptr} to a pointer - to a virtual base class, or -\item - the pointer is used as the operand of a - \tcode{static_cast}\iref{expr.static.cast}, except when the conversion - is to pointer to \cv{}~\tcode{void}, or to pointer to \cv{}~\tcode{void} - and subsequently to pointer to - \cv{}~\tcode{char}, - \cv{}~\tcode{unsigned char}, or - \cv{}~\tcode{std::byte}\iref{cstddef.syn}, or -\item - the pointer is used as the operand of a - \tcode{dynamic_cast}\iref{expr.dynamic.cast}. -\end{itemize} -\begin{example} -\begin{codeblock} -#include - -struct B { - virtual void f(); - void mutate(); - virtual ~B(); -}; - -struct D1 : B { void f(); }; -struct D2 : B { void f(); }; - -void B::mutate() { - new (this) D2; // reuses storage --- ends the lifetime of \tcode{*this} - f(); // undefined behavior - ... = this; // OK, \tcode{this} points to valid memory -} - -void g() { - void* p = std::malloc(sizeof(D1) + sizeof(D2)); - B* pb = new (p) D1; - pb->mutate(); - *pb; // OK: \tcode{pb} points to valid memory - void* q = pb; // OK: \tcode{pb} points to valid memory - pb->f(); // undefined behavior, lifetime of \tcode{*pb} has ended -} -\end{codeblock} -\end{example} - -\pnum -Similarly, before the lifetime of an object has started but after the -storage which the object will occupy has been allocated or, after the -lifetime of an object has ended and before the storage which the object -occupied is reused or released, any glvalue that refers to the original -object may be used but only in limited ways. -For an object under construction or destruction, see~\ref{class.cdtor}. -Otherwise, such -a glvalue refers to -allocated storage\iref{basic.stc.dynamic.deallocation}, and using the -properties of the glvalue that do not depend on its value is -well-defined. The program has undefined behavior if: -\begin{itemize} -\item the glvalue is used to access the object, or -\item the glvalue is used to call a non-static member function of the object, or -\item the glvalue is bound to a reference to a virtual base class\iref{dcl.init.ref}, or -\item the glvalue is used as the operand of a -\tcode{dynamic_cast}\iref{expr.dynamic.cast} or as the operand of -\tcode{typeid}. +\item Two alignments are equal when their numeric values are equal. +\item Two alignments are different when their numeric values are not equal. +\item When an alignment is larger than another it represents a stricter alignment. \end{itemize} \pnum -If, after the lifetime of an object has ended and before the storage -which the object occupied is reused or released, a new object is created -at the storage location which the original object occupied, a pointer -that pointed to the original object, a reference that referred to the -original object, or the name of the original object will automatically -refer to the new object and, once the lifetime of the new object has -started, can be used to manipulate the new object, if: -\begin{itemize} -\item the storage for the new object exactly overlays the storage -location which the original object occupied, and - -\item the new object is of the same type as the original object -(ignoring the top-level cv-qualifiers), and - -\item the type of the original object is not const-qualified, and, if a -class type, does not contain any non-static data member whose type is -const-qualified or a reference type, and - -\item the original object was a most derived object\iref{intro.object} -of type \tcode{T} and the new object is a most derived object of type -\tcode{T} (that is, they are not base class subobjects). -\end{itemize} -\begin{example} -\begin{codeblock} -struct C { - int i; - void f(); - const C& operator=( const C& ); -}; - -const C& C::operator=( const C& other) { - if ( this != &other ) { - this->~C(); // lifetime of \tcode{*this} ends - new (this) C(other); // new object of type \tcode{C} created - f(); // well-defined - } - return *this; -} - -C c1; -C c2; -c1 = c2; // well-defined -c1.f(); // well-defined; \tcode{c1} refers to a new object of type \tcode{C} -\end{codeblock} -\end{example} -\begin{note} -If these conditions are not met, -a pointer to the new object can be obtained from -a pointer that represents the address of its storage -by calling \tcode{std::launder}\iref{support.dynamic}. +\begin{note} The runtime pointer alignment function\iref{ptr.align} +can be used to obtain an aligned pointer within a buffer; the aligned-storage templates +in the library\iref{meta.trans.other} can be used to obtain aligned storage. \end{note} \pnum -If a program ends the lifetime of an object of type \tcode{T} with -static\iref{basic.stc.static}, thread\iref{basic.stc.thread}, -or automatic\iref{basic.stc.auto} -storage duration and if \tcode{T} has a non-trivial destructor,\footnote{That -is, an object for which a destructor will be called -implicitly---upon exit from the block for an object with -automatic storage duration, upon exit from the thread for an object with -thread storage duration, or upon exit from the program for an object -with static storage duration.} -the program must ensure that an object of the original type occupies -that same storage location when the implicit destructor call takes -place; otherwise the behavior of the program is undefined. This is true -even if the block is exited with an exception. \begin{example} - -\begin{codeblock} -class T { }; -struct B { - ~B(); -}; - -void h() { - B b; - new (&b) T; -} // undefined behavior at block exit -\end{codeblock} -\end{example} - -\pnum -Creating a new object within the storage that a \tcode{const} complete -object with static, thread, or automatic storage duration occupies, -or within the storage that such a \tcode{const} object used to occupy before -its lifetime ended, results in undefined behavior. -\begin{example} -\begin{codeblock} -struct B { - B(); - ~B(); -}; - -const B b; - -void h() { - b.~B(); - new (const_cast(&b)) const B; // undefined behavior -} -\end{codeblock} -\end{example} - -\pnum -In this section, ``before'' and ``after'' refer to the ``happens before'' -relation\iref{intro.multithread}. \begin{note} Therefore, undefined behavior results -if an object that is being constructed in one thread is referenced from another -thread without adequate synchronization. \end{note}% -\indextext{object lifetime|)} +If a request for a specific extended alignment in a specific context is not +supported by an implementation, the program is ill-formed. \rSec1[basic.types]{Types}% \indextext{type|(} @@ -3857,573 +3804,1719 @@ respectively, in \tcode{}, called the underlying types. \pnum -\indextext{Boolean type}% -Values of type \tcode{bool} are either \tcode{true} or -\tcode{false}.\footnote{Using a \tcode{bool} value in ways described by this document -as ``undefined'', such as by examining the value of an -uninitialized automatic object, might cause it to behave as if it is -neither \tcode{true} nor \tcode{false}.} -\begin{note} There are no \tcode{signed}, \tcode{unsigned}, \tcode{short}, -or \tcode{long bool} types or values. \end{note} Values of type -\tcode{bool} participate in integral promotions\iref{conv.prom}. +\indextext{Boolean type}% +Values of type \tcode{bool} are either \tcode{true} or +\tcode{false}.\footnote{Using a \tcode{bool} value in ways described by this document +as ``undefined'', such as by examining the value of an +uninitialized automatic object, might cause it to behave as if it is +neither \tcode{true} nor \tcode{false}.} +\begin{note} There are no \tcode{signed}, \tcode{unsigned}, \tcode{short}, +or \tcode{long bool} types or values. \end{note} Values of type +\tcode{bool} participate in integral promotions\iref{conv.prom}. + +\pnum +Types \tcode{bool}, \tcode{char}, \tcode{char16_t}, \tcode{char32_t}, +\tcode{wchar_t}, and the signed and unsigned integer types are +collectively called +\defnx{integral}{integral type} types.\footnote{Therefore, enumerations\iref{dcl.enum} are not integral; however, +enumerations can be promoted to integral types as specified +in~\ref{conv.prom}.} +A synonym for integral type is +\indextext{signed integer representation!ones' complement}% +\indextext{signed integer representation!two's complement}% +\indextext{signed integer representation!signed magnitude}% +\defn{integer type}. The representations of integral types shall +define values by use of a pure binary numeration system.\footnote{A positional +representation for integers that uses the binary digits 0 +and 1, in which the values represented by successive bits are additive, +begin with 1, and are multiplied by successive integral power of 2, +except perhaps for the bit with the highest position. (Adapted from the +\doccite{American National Dictionary for Information Processing Systems}.)} +\begin{example} This document permits two's complement, +ones' complement and signed magnitude representations for integral types. +\end{example} + +\pnum +There are three \defnx{floating-point}{floating-point type} types: +\indextext{type!\idxcode{float}}% +\tcode{float}, +\indextext{type!\idxcode{double}}% +\tcode{double}, +and +\indextext{type!\idxcode{long double}}% +\tcode{long double}. The type \tcode{double} provides at least as much +precision as \tcode{float}, and the type \tcode{long double} provides at +least as much precision as \tcode{double}. The set of values of the type +\tcode{float} is a subset of the set of values of the type +\tcode{double}; the set of values of the type \tcode{double} is a subset +of the set of values of the type \tcode{long double}. The value +representation of floating-point types is \impldef{value representation of +floating-point types}. +\indextext{floating-point type!implementation-defined}% +\begin{note} +This document imposes no requirements on the accuracy of +floating-point operations; see also~\ref{support.limits}. +\end{note} +Integral and floating types are collectively +called \defnx{arithmetic}{type!arithmetic} types. +\indextext{\idxcode{numeric_limits}!specializations for arithmetic types}% +Specializations of the standard library template +\tcode{std::numeric_limits}\iref{support.limits} shall specify the +maximum and minimum values of each arithmetic type for an +implementation. + +\pnum +\indextext{type!\idxcode{void}}% +A type \cv{}~\tcode{void} +is an incomplete type that cannot be completed; such a type has +an empty set of values. It is used as the return +type for functions that do not return a value. Any expression can be +explicitly converted to type \cv{}~\tcode{void}\iref{expr.cast}. +An expression of type \cv{}~\tcode{void} shall +be used only as an expression statement\iref{stmt.expr}, as an operand +of a comma expression\iref{expr.comma}, as a second or third operand +of \tcode{?:}\iref{expr.cond}, as the operand of +\tcode{typeid}, \tcode{noexcept}, or \tcode{decltype}, as +the expression in a return statement\iref{stmt.return} for a function +with the return type \cv{}~\tcode{void}, or as the operand of an explicit conversion +to type \cv{}~\tcode{void}. + +\pnum +A value of type \tcode{std::nullptr_t} is a null pointer +constant\iref{conv.ptr}. Such values participate in the pointer and the +pointer to member conversions~(\ref{conv.ptr}, \ref{conv.mem}). +\tcode{sizeof(std::nullptr_t)} shall be equal to \tcode{sizeof(void*)}. + +\pnum +\begin{note} +Even if the implementation defines two or more basic types to have the +same value representation, they are nevertheless different types. +\end{note} + +\rSec2[basic.compound]{Compound types} + +\pnum +\indextext{type!compound}% +Compound types can be constructed in the following ways: +\begin{itemize} +\item \defnx{arrays}{type!array} of objects of a given type, \ref{dcl.array}; + +\item \defnx{functions}{type!function}, which have parameters of given types and return +\tcode{void} or references or objects of a given type, \ref{dcl.fct}; + +\item \defnx{pointers}{type!pointer} to \cv{}~\tcode{void} or objects or functions (including +static members of classes) of a given type, \ref{dcl.ptr}; + +\item % +\indextext{reference!lvalue}% +\indextext{reference!rvalue}% +\defnx{references}{reference} to objects or functions of a given +type, \ref{dcl.ref}. There are two types of references: +\begin{itemize} +\item \defn{lvalue reference} +\item \defn{rvalue reference} +\end{itemize} + +\item +\defnx{classes}{class} containing a sequence of objects of various types\iref{class}, +a set of types, enumerations and functions for +manipulating these objects\iref{class.mfct}, and a set of restrictions +on the access to these entities\iref{class.access}; + +\item +\defnx{unions}{\idxcode{union}}, which are classes capable of containing objects of +different types at different times, \ref{class.union}; + +\item +\defnx{enumerations}{\idxcode{enum}}, which comprise a set of named constant values. +Each distinct enumeration constitutes a different +\defnx{enumerated type}{type!enumerated}, \ref{dcl.enum}; + +\item \indextext{member pointer to|see{pointer to member}}% +\defnx{pointers to non-static class members}{pointer to member},% +\footnote{Static class members are objects or functions, and pointers to them are +ordinary pointers to objects or functions.} +which identify members of a given +type within objects of a given class, \ref{dcl.mptr}. +\end{itemize} + +\pnum +These methods of constructing types can be applied recursively; +restrictions are mentioned in~\ref{dcl.ptr}, \ref{dcl.array}, +\ref{dcl.fct}, and~\ref{dcl.ref}. Constructing a type such that the number of +bytes in its object representation exceeds the maximum value representable in +the type \tcode{std::size_t}\iref{support.types} is ill-formed. + +\pnum +\indextext{terminology!pointer}% +The type of a pointer to \cv{}~\tcode{void} or a pointer to an object type is +called an \defn{object pointer type}. \begin{note} A pointer to \tcode{void} +does not have a pointer-to-object type, however, because \tcode{void} is not +an object type. \end{note} The type of a pointer that can designate a function +is called a \defn{function pointer type}. +A pointer to objects of type \tcode{T} is referred to as a ``pointer to +\tcode{T}''. \begin{example} A pointer to an object of type \tcode{int} is +referred to as ``pointer to \tcode{int}'' and a pointer to an object of +class \tcode{X} is called a ``pointer to \tcode{X}''. \end{example} +Except for pointers to static members, text referring to ``pointers'' +does not apply to pointers to members. Pointers to incomplete types are +allowed although there are restrictions on what can be done with +them\iref{basic.align}. +\indextext{address}% +Every value of pointer type is one of the following: +\begin{itemize} +\item +a \defn{pointer to} an object or function (the pointer is said to \defn{point} to the object or function), or +\item +a \defn{pointer past the end of} an object\iref{expr.add}, or +\item +the \defn{null pointer value}\iref{conv.ptr} for that type, or +\item +an \defn{invalid pointer value}. +\end{itemize} +A value of a +pointer type +that is a pointer to or past the end of an object +\defn{represents the address} of +the first byte in memory\iref{intro.memory} occupied by the object% +\footnote{For an object that is not within its lifetime, +this is the first byte in memory that it will occupy or used to occupy.} +or the first byte in memory +after the end of the storage occupied by the object, +respectively. +\begin{note} +A pointer past the end of an object\iref{expr.add} +is not considered to point to an unrelated object +of the object's type +that might be located at that address. +A pointer value becomes invalid +when the storage it denotes +reaches the end of its storage duration; +see \ref{basic.stc}. +\end{note} +For purposes of pointer arithmetic\iref{expr.add} +and comparison~(\ref{expr.rel}, \ref{expr.eq}), +a pointer past the end of the last element of +an array \tcode{x} of $n$ elements +is considered to be equivalent to +a pointer to a hypothetical element \tcode{x[$n$]}. +The value representation of +pointer types is \impldef{value representation of pointer types}. Pointers to +layout-compatible types shall +have the same value representation and alignment +requirements\iref{basic.align}. +\begin{note} Pointers to over-aligned types\iref{basic.align} have no special +representation, but their range of valid values is restricted by the extended +alignment requirement.\end{note} + +\pnum +Two objects \placeholder{a} and \placeholder{b} are \defn{pointer-interconvertible} if: +\begin{itemize} +\item +they are the same object, or +\item +one is a union object and +the other is a non-static data member of that object\iref{class.union}, or +\item +one is a standard-layout class object and +the other is the first non-static data member of that object, or, +if the object has no non-static data members, +the first base class subobject of that object\iref{class.mem}, or +\item +there exists an object \placeholder{c} such that +\placeholder{a} and \placeholder{c} are pointer-interconvertible, and +\placeholder{c} and \placeholder{b} are pointer-interconvertible. +\end{itemize} +If two objects are pointer-interconvertible, +then they have the same address, +and it is possible to obtain a pointer to one +from a pointer to the other +via a \tcode{reinterpret_cast}\iref{expr.reinterpret.cast}. +\begin{note} +An array object and its first element are not pointer-interconvertible, +even though they have the same address. +\end{note} + +\pnum +\indextext{pointer|seealso{\tcode{void*}}}% +\indextext{\idxcode{void*}!type}% +A pointer to \cv-qualified\iref{basic.type.qualifier} or \cv-unqualified +\tcode{void} +can be used to point to objects of +unknown type. Such a pointer shall be able to hold any object pointer. +An object of type \cv{}~\tcode{void*} +shall have the same representation and alignment +requirements as \cv{}~\tcode{char*}. + +\rSec2[basic.type.qualifier]{CV-qualifiers} + +\pnum +\indextext{cv-qualifier}% +\indextext{\idxcode{const}}% +\indextext{\idxcode{volatile}}% +A type mentioned in~\ref{basic.fundamental} and~\ref{basic.compound} is +a \defnx{cv-unqualified type}{type!cv-unqualified}. Each type which is a +cv-unqualified complete or incomplete object type or is +\tcode{void}\iref{basic.types} has three corresponding cv-qualified +versions of its type: a \defn{const-qualified} version, a +\defn{volatile-qualified} version, and a +\defn{const-volatile-qualified} version. The +type of an object\iref{intro.object} includes the \grammarterm{cv-qualifier}{s} +specified in the \grammarterm{decl-specifier-seq}\iref{dcl.spec}, +\grammarterm{declarator}\iref{dcl.decl}, +\grammarterm{type-id}\iref{dcl.name}, or +\grammarterm{new-type-id}\iref{expr.new} when the object is created. +\begin{itemize} +\item A \defnx{const object}{object!const} is an object of type \tcode{const T} or a + non-mutable subobject of such an object. + +\item A \defnx{volatile object}{object!volatile} is an object of type + \tcode{volatile T}, a subobject of such an object, or a mutable + subobject of a const volatile object. + +\item A \defnx{const volatile object}{object!const volatile} is an object of type + \tcode{const volatile T}, a non-mutable subobject of such an object, + a const subobject of a volatile object, or a non-mutable volatile + subobject of a const object. +\end{itemize} +The cv-qualified or +cv-unqualified versions of a type +are distinct types; however, they shall have the same representation and +alignment requirements\iref{basic.align}.\footnote{The same representation +and alignment requirements are meant to imply +interchangeability as arguments to functions, return values from +functions, and non-static data members of unions.} + +\pnum +\indextext{array!\idxcode{const}}% +A compound type\iref{basic.compound} is not cv-qualified by the +cv-qualifiers (if any) of the types from which it is compounded. Any +cv-qualifiers applied to an array type +affect the array element type\iref{dcl.array}. + +\pnum +See~\ref{dcl.fct} and~\ref{class.this} regarding function +types that have \grammarterm{cv-qualifier}{s}. + +\pnum +There is a partial ordering on cv-qualifiers, so that a type can be +said to be \defn{more cv-qualified} than another. +Table~\ref{tab:relations.on.const.and.volatile} shows the relations that +constitute this ordering. + +\begin{floattable}{Relations on \tcode{const} and \tcode{volatile}}{tab:relations.on.const.and.volatile} +{ccc} +\topline +\cvqual{no cv-qualifier} &<& \tcode{const} \\ +\cvqual{no cv-qualifier} &<& \tcode{volatile} \\ +\cvqual{no cv-qualifier} &<& \tcode{const volatile} \\ +\tcode{const} &<& \tcode{const volatile} \\ +\tcode{volatile} &<& \tcode{const volatile} \\ +\end{floattable} + +\pnum +In this document, the notation \cv{} (or +\cvqual{cv1}, \cvqual{cv2}, etc.), used in the description of types, +represents an arbitrary set of cv-qualifiers, i.e., one of +\{\tcode{const}\}, \{\tcode{volatile}\}, \{\tcode{const}, +\tcode{volatile}\}, or the empty set. +For a type \cv{}~\tcode{T}, the \defnx{top-level cv-qualifiers}{cv-qualifier!top-level} +of that type are those denoted by \cv. +\begin{example} +The type corresponding to the \grammarterm{type-id} +\tcode{const int\&} +has no top-level cv-qualifiers. +The type corresponding to the \grammarterm{type-id} +\tcode{volatile int * const} +has the top-level cv-qualifier \tcode{const}. +For a class type \tcode{C}, +the type corresponding to the \grammarterm{type-id} +\tcode{void (C::* volatile)(int) const} +has the top-level cv-qualifier \tcode{volatile}. +\end{example} + +\pnum +Cv-qualifiers applied to an array +type attach to the underlying element type, so the notation +``\cv{}~\tcode{T}'', where \tcode{T} is an array type, refers to +an array whose elements are so-qualified. An array type whose elements +are cv-qualified is also considered to have the same cv-qualifications +as its elements. +\begin{example} +\begin{codeblock} +typedef char CA[5]; +typedef const char CC; +CC arr1[5] = { 0 }; +const CA arr2 = { 0 }; +\end{codeblock} +The type of both \tcode{arr1} and \tcode{arr2} is ``array of 5 +\tcode{const char}'', and the array type is considered to be +const-qualified. +\end{example}% +\indextext{type|)} + +\rSec1[basic.lval]{Lvalues and rvalues} +\pnum +Expressions are categorized according to the taxonomy in Figure~\ref{fig:categories}. + +\begin{importgraphic} +{Expression category taxonomy} +{fig:categories} +{valuecategories.pdf} +\end{importgraphic} + +\begin{itemize} +\item A \defn{glvalue} is an expression whose evaluation determines the identity of an object, bit-field, or function. +\item A \defn{prvalue} is an expression whose evaluation initializes an object or a bit-field, +or computes the value of the operand of an operator, +as specified by the context in which it appears. +\item An \defn{xvalue} is a glvalue that denotes an object or bit-field whose resources can be reused (usually because it is near the end of its lifetime). +\begin{example} +Certain kinds of expressions involving rvalue references\iref{dcl.ref} yield xvalues, +such as a call to a function whose return type is an rvalue reference +or a cast to an rvalue reference type. +\end{example} +\item An \defn{lvalue} is a glvalue that is not an xvalue. +\item An \defn{rvalue} is a prvalue or an xvalue. +\end{itemize} +\begin{note} +Historically, lvalues and rvalues were so-called +because they could appear on the left- and right-hand side of an assignment +(although this is no longer generally true); +glvalues are ``generalized'' lvalues, +prvalues are ``pure'' rvalues, +and xvalues are ``eXpiring'' lvalues. +Despite their names, these terms classify expressions, not values. +\end{note} +Every expression belongs to exactly one of the fundamental classifications in this +taxonomy: lvalue, xvalue, or prvalue. This property of an expression is called +its \defn{value category}. \begin{note} The discussion of each built-in operator in +\ref{expr} indicates the category of the value it yields and the value categories +of the operands it expects. For example, the built-in assignment operators expect that +the left operand is an lvalue and that the right operand is a prvalue and yield an +lvalue as the result. User-defined operators are functions, and the categories of +values they expect and yield are determined by their parameter and return types. \end{note} + +\pnum +The \defnx{result}{result!prvalue} of a prvalue +is the value that the expression stores into its context. +A prvalue whose result is the value \placeholder{V} +is sometimes said to have or name the value \placeholder{V}. +The \defn{result object} of a prvalue +is the object initialized by the prvalue; +a prvalue +that is used to compute the value of an operand of an operator or +that has type \cv{}~\tcode{void} +has no result object. +\begin{note} +Except when the prvalue is the operand of a \grammarterm{decltype-specifier}, +a prvalue of class or array type always has a result object. +For a discarded prvalue, a temporary object is materialized; see \ref{expr}. +\end{note} +The \defnx{result}{result!glvalue} of a glvalue is the entity denoted by the expression. \pnum -Types \tcode{bool}, \tcode{char}, \tcode{char16_t}, \tcode{char32_t}, -\tcode{wchar_t}, and the signed and unsigned integer types are -collectively called -\defnx{integral}{integral type} types.\footnote{Therefore, enumerations\iref{dcl.enum} are not integral; however, -enumerations can be promoted to integral types as specified -in~\ref{conv.prom}.} -A synonym for integral type is -\indextext{signed integer representation!ones' complement}% -\indextext{signed integer representation!two's complement}% -\indextext{signed integer representation!signed magnitude}% -\defn{integer type}. The representations of integral types shall -define values by use of a pure binary numeration system.\footnote{A positional -representation for integers that uses the binary digits 0 -and 1, in which the values represented by successive bits are additive, -begin with 1, and are multiplied by successive integral power of 2, -except perhaps for the bit with the highest position. (Adapted from the -\doccite{American National Dictionary for Information Processing Systems}.)} -\begin{example} This document permits two's complement, -ones' complement and signed magnitude representations for integral types. -\end{example} +\begin{note} +Whenever a glvalue appears in a context where a prvalue is expected, the glvalue is converted +to a prvalue; see~\ref{conv.lval}, \ref{conv.array}, +and~\ref{conv.func}. +An attempt to bind an rvalue reference to an lvalue is not such a context; see~\ref{dcl.init.ref}. +\end{note} +\begin{note} +There are no prvalue bit-fields; if a bit-field is converted to a +prvalue\iref{conv.lval}, a prvalue of the type of the bit-field is +created, which might then be promoted\iref{conv.prom}. +\end{note} \pnum -There are three \defnx{floating-point}{floating-point type} types: -\indextext{type!\idxcode{float}}% -\tcode{float}, -\indextext{type!\idxcode{double}}% -\tcode{double}, -and -\indextext{type!\idxcode{long double}}% -\tcode{long double}. The type \tcode{double} provides at least as much -precision as \tcode{float}, and the type \tcode{long double} provides at -least as much precision as \tcode{double}. The set of values of the type -\tcode{float} is a subset of the set of values of the type -\tcode{double}; the set of values of the type \tcode{double} is a subset -of the set of values of the type \tcode{long double}. The value -representation of floating-point types is \impldef{value representation of -floating-point types}. -\indextext{floating-point type!implementation-defined}% \begin{note} -This document imposes no requirements on the accuracy of -floating-point operations; see also~\ref{support.limits}. +Whenever a prvalue appears in a context where a glvalue is expected, +the prvalue is converted to an xvalue; see~\ref{conv.rval}. \end{note} -Integral and floating types are collectively -called \defnx{arithmetic}{type!arithmetic} types. -\indextext{\idxcode{numeric_limits}!specializations for arithmetic types}% -Specializations of the standard library template -\tcode{std::numeric_limits}\iref{support.limits} shall specify the -maximum and minimum values of each arithmetic type for an -implementation. \pnum -\indextext{type!\idxcode{void}}% -A type \cv{}~\tcode{void} -is an incomplete type that cannot be completed; such a type has -an empty set of values. It is used as the return -type for functions that do not return a value. Any expression can be -explicitly converted to type \cv{}~\tcode{void}\iref{expr.cast}. -An expression of type \cv{}~\tcode{void} shall -be used only as an expression statement\iref{stmt.expr}, as an operand -of a comma expression\iref{expr.comma}, as a second or third operand -of \tcode{?:}\iref{expr.cond}, as the operand of -\tcode{typeid}, \tcode{noexcept}, or \tcode{decltype}, as -the expression in a return statement\iref{stmt.return} for a function -with the return type \cv{}~\tcode{void}, or as the operand of an explicit conversion -to type \cv{}~\tcode{void}. +The discussion of reference initialization in~\ref{dcl.init.ref} and of +temporaries in~\ref{class.temporary} indicates the behavior of lvalues +and rvalues in other significant contexts. \pnum -A value of type \tcode{std::nullptr_t} is a null pointer -constant\iref{conv.ptr}. Such values participate in the pointer and the -pointer to member conversions~(\ref{conv.ptr}, \ref{conv.mem}). -\tcode{sizeof(std::nullptr_t)} shall be equal to \tcode{sizeof(void*)}. +Unless otherwise indicated\iref{expr.call}, +a prvalue shall always have complete type or the \tcode{void} type. +A glvalue shall not have type \cv{}~\tcode{void}. +\begin{note} +A glvalue may have complete or incomplete non-\tcode{void} type. +Class and array prvalues can have cv-qualified types; other prvalues +always have cv-unqualified types. See \ref{expr}. +\end{note} \pnum +An lvalue is \defn{modifiable} unless its type is const-qualified +or is a function type. \begin{note} -Even if the implementation defines two or more basic types to have the -same value representation, they are nevertheless different types. +A program that attempts +to modify an object through a nonmodifiable lvalue expression or through an rvalue expression +is ill-formed~(\ref{expr.ass}, \ref{expr.post.incr}, \ref{expr.pre.incr}). \end{note} -\rSec2[basic.compound]{Compound types} - \pnum -\indextext{type!compound}% -Compound types can be constructed in the following ways: +If a program attempts to access the stored value of an object through a glvalue +of other than one of the following types the behavior is +undefined:\footnote{The intent of this list is to specify those circumstances in which an +object may or may not be aliased.} \begin{itemize} -\item \defnx{arrays}{type!array} of objects of a given type, \ref{dcl.array}; +\item the dynamic type of the object, -\item \defnx{functions}{type!function}, which have parameters of given types and return -\tcode{void} or references or objects of a given type, \ref{dcl.fct}; +\item a cv-qualified version of the dynamic type of the object, -\item \defnx{pointers}{type!pointer} to \cv{}~\tcode{void} or objects or functions (including -static members of classes) of a given type, \ref{dcl.ptr}; +\item a type similar (as defined in~\ref{conv.qual}) to the dynamic type +of the object, -\item % -\indextext{reference!lvalue}% -\indextext{reference!rvalue}% -\defnx{references}{reference} to objects or functions of a given -type, \ref{dcl.ref}. There are two types of references: -\begin{itemize} -\item \defn{lvalue reference} -\item \defn{rvalue reference} +\item a type that is the signed or unsigned type corresponding to the +dynamic type of the object, + +\item a type that is the signed or unsigned type corresponding to a +cv-qualified version of the dynamic type of the object, + +\item an aggregate or union type that includes one of the aforementioned types among its +elements or non-static data members (including, recursively, an element or non-static data member of a +subaggregate or contained union), + +\item a type that is a (possibly cv-qualified) base class type of the dynamic type of +the object, + +\item a \tcode{char}, \tcode{unsigned char}, or \tcode{std::byte} type. \end{itemize} +\rSec1[basic.exec]{Program execution} + +\rSec2[intro.execution]{Sequential execution} + +\pnum +An instance of each object with automatic storage +duration\iref{basic.stc.auto} is associated with each entry into its +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 or receipt of a signal). + +\pnum +A \defn{constituent expression} is defined as follows: +\begin{itemize} \item -\defnx{classes}{class} containing a sequence of objects of various types\iref{class}, -a set of types, enumerations and functions for -manipulating these objects\iref{class.mfct}, and a set of restrictions -on the access to these entities\iref{class.access}; +The constituent expression of an expression is that expression. +\item +The constituent expressions of a \grammarterm{braced-init-list} or +of a (possibly parenthesized) \grammarterm{expression-list} +are the constituent expressions of the elements of the respective list. +\item +The constituent expressions of a \grammarterm{brace-or-equal-initializer} +of the form \tcode{=}~\grammarterm{initializer-clause} +are the constituent expressions of the \grammarterm{initializer-clause}. +\end{itemize} +\begin{example} +\begin{codeblock} +struct A { int x; }; +struct B { int y; struct A a; }; +B b = { 5, { 1+1 } }; +\end{codeblock} +The constituent expressions of the \grammarterm{initializer} +used for the initialization of \tcode{b} are \tcode{5} and \tcode{1+1}. +\end{example} +\pnum +The \defnx{immediate subexpressions}{immediate subexpression} of an expression \tcode{e} are +\begin{itemize} \item -\defnx{unions}{\idxcode{union}}, which are classes capable of containing objects of -different types at different times, \ref{class.union}; +the constituent expressions of \tcode{e}'s operands\iref{expr}, +\item +any function call that \tcode{e} implicitly invokes, +\item +if \tcode{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 \tcode{e} is a function call\iref{expr.call} or implicitly invokes a function, +the constituent expressions of each default argument\iref{dcl.fct.default} +used in the call, or +\item +if \tcode{e} creates an aggregate object\iref{dcl.init.aggr}, +the constituent expressions of each default member initializer\iref{class.mem} +used in the initialization. +\end{itemize} + +\pnum +A \defn{subexpression} of an expression \tcode{e} is +an immediate subexpression of \tcode{e} or +a subexpression of an immediate subexpression of \tcode{e}. +\begin{note} +Expressions appearing in the \grammarterm{compound-statement} of a \grammarterm{lambda-expression} +are not subexpressions of the \grammarterm{lambda-expression}. +\end{note} +\pnum +A \defn{full-expression} is +\begin{itemize} \item -\defnx{enumerations}{\idxcode{enum}}, which comprise a set of named constant values. -Each distinct enumeration constitutes a different -\defnx{enumerated type}{type!enumerated}, \ref{dcl.enum}; +an unevaluated operand\iref{expr}, +\item +a \grammarterm{constant-expression}\iref{expr.const}, +\item +an \grammarterm{init-declarator}\iref{dcl.decl} or +a \grammarterm{mem-initializer}\iref{class.base.init}, +including the constituent expressions of the initializer, +\item +an invocation of a destructor generated at the end of the lifetime +of an object other than a temporary object\iref{class.temporary}, or +\item +an expression that is not a subexpression of another expression and +that is not otherwise part of a full-expression. +\end{itemize} +If a language construct is defined to produce an implicit call of a function, +a use of the language construct is considered to be an expression +for the purposes of this definition. +Conversions applied to the result of an expression in order to satisfy the requirements +of the language construct in which the expression appears +are also considered to be part of the full-expression. +For an initializer, performing the initialization of the entity +(including evaluating default member initializers of an aggregate) +is also considered part of the full-expression. +\begin{example} +\begin{codeblock} +struct S { + S(int i): I(i) { } // full-expression is initialization of \tcode{I} + int& v() { return I; } + ~S() noexcept(false) { } +private: + int I; +}; -\item \indextext{member pointer to|see{pointer to member}}% -\defnx{pointers to non-static class members}{pointer to member},% -\footnote{Static class members are objects or functions, and pointers to them are -ordinary pointers to objects or functions.} -which identify members of a given -type within objects of a given class, \ref{dcl.mptr}. +S s1(1); // full-expression is call of \tcode{S::S(int)} +void f() { + S s2 = 2; // full-expression is call of \tcode{S::S(int)} + if (S(3).v()) // full-expression includes lvalue-to-rvalue and + // \tcode{int} to \tcode{bool} conversions, performed before + // temporary is deleted at end of full-expression + { } + bool b = noexcept(S()); // exception specification of destructor of \tcode{S} + // considered for \tcode{noexcept} + // full-expression is destruction of \tcode{s2} at end of block +} +struct B { + B(S = S(0)); +}; +B b[2] = { B(), B() }; // full-expression is the entire initialization + // including the destruction of temporaries +\end{codeblock} +\end{example} + +\pnum +\begin{note} The evaluation of a full-expression can include the +evaluation of subexpressions that are not lexically part of the +full-expression. For example, subexpressions involved in evaluating +default arguments\iref{dcl.fct.default} are considered to +be created in the expression that calls the function, not the expression +that defines the default argument. \end{note} + +\pnum +\indextext{value computation|(}% +Reading an object designated by a \tcode{volatile} +glvalue\iref{basic.lval}, modifying an object, calling a library I/O +function, or calling a function that does any of those operations are +all +\defn{side effects}, which are changes in the state of the execution +environment. \defnx{Evaluation}{evaluation} of an expression (or a +subexpression) in general includes both value computations (including +determining the identity of an object for glvalue evaluation and fetching +a value previously assigned to an object for prvalue evaluation) and +initiation of side effects. When a call to a library I/O function +returns or an access through a volatile glvalue is evaluated the side +effect is considered complete, even though some external actions implied +by the call (such as the I/O itself) or by the \tcode{volatile} access +may not have completed yet. + +\pnum +\defnx{Sequenced before}{sequenced before} is an asymmetric, transitive, pair-wise relation between +evaluations executed by a single thread\iref{intro.multithread}, which induces +a partial order among those evaluations. Given any two evaluations \placeholder{A} and +\placeholder{B}, if \placeholder{A} is sequenced before \placeholder{B} +(or, equivalently, \placeholder{B} is \defn{sequenced after} \placeholder{A}), +then the execution of +\placeholder{A} shall precede the execution of \placeholder{B}. If \placeholder{A} is not sequenced +before \placeholder{B} and \placeholder{B} is not sequenced before \placeholder{A}, then \placeholder{A} and +\placeholder{B} are \defn{unsequenced}. \begin{note} The execution of unsequenced +evaluations can overlap. \end{note} Evaluations \placeholder{A} and \placeholder{B} are +\defn{indeterminately sequenced} when either \placeholder{A} is sequenced before +\placeholder{B} or \placeholder{B} is sequenced before \placeholder{A}, but it is unspecified which. +\begin{note} Indeterminately sequenced evaluations cannot overlap, but either +could be executed first. \end{note} +An expression \placeholder{X} +is said to be sequenced before +an expression \placeholder{Y} if +every value computation and every side effect +associated with the expression \placeholder{X} +is sequenced before +every value computation and every side effect +associated with the expression \placeholder{Y}. + +\pnum +Every +\indextext{value computation}% +value computation and +\indextext{side effects}% +side effect associated with a full-expression is +sequenced before every value computation and side effect associated with the +next full-expression to be evaluated.\footnote{As specified +in~\ref{class.temporary}, after a full-expression is evaluated, a sequence of +zero or more invocations of destructor functions for temporary objects takes +place, usually in reverse order of the construction of each temporary object.} + +\pnum +\indextext{evaluation!unspecified order of}% +Except where noted, evaluations of operands of individual operators and +of subexpressions of individual expressions are unsequenced. \begin{note} +In an expression that is evaluated more than once during the execution +of a program, unsequenced and indeterminately sequenced evaluations of +its subexpressions need not be performed consistently in different +evaluations. \end{note} The value computations of the operands of an +operator are sequenced before the value computation of the result of the +operator. If a +\indextext{side effects}% +side effect on a memory location\iref{intro.memory} is unsequenced +relative to either another side effect on the same memory location or +a value computation using the value of any object in the same memory location, +and they are not potentially concurrent\iref{intro.multithread}, +the behavior is undefined. +\begin{note} +The next section imposes similar, but more complex restrictions on +potentially concurrent computations. +\end{note} + +\begin{example} + +\begin{codeblock} +void g(int i) { + i = 7, i++, i++; // \tcode{i} becomes \tcode{9} + + i = i++ + 1; // the value of \tcode{i} is incremented + i = i++ + i; // the behavior is undefined + i = i + 1; // the value of \tcode{i} is incremented +} +\end{codeblock} +\end{example} + +\pnum +When calling a function (whether or not the function is inline), every +\indextext{value computation}% +value computation and +\indextext{side effects}% +side effect associated with any argument +expression, or with the postfix expression designating the called +function, is sequenced before execution of every expression or statement +in the body of the called function. +For each function invocation \placeholder{F}, +for every evaluation \placeholder{A} that occurs within \placeholder{F} and +every evaluation \placeholder{B} that does not occur within \placeholder{F} but +is evaluated on the same thread and as part of the same signal handler (if any), +either \placeholder{A} is sequenced before \placeholder{B} or +\placeholder{B} is sequenced before \placeholder{A}.\footnote{In other words, +function executions do not interleave with each other.} +\begin{note} +If \placeholder{A} and \placeholder{B} would not otherwise be sequenced then they are +indeterminately sequenced. +\end{note} +Several contexts in \Cpp cause evaluation of a function call, even +though no corresponding function call syntax appears in the translation +unit. +\begin{example} +Evaluation of a \grammarterm{new-expression} invokes one or more allocation +and constructor functions; see~\ref{expr.new}. For another example, +invocation of a conversion function\iref{class.conv.fct} can arise in +contexts in which no function call syntax appears. +\end{example} +The sequencing constraints on the execution of the called function (as +described above) are features of the function calls as evaluated, +whatever the syntax of the expression that calls the function might be.% +\indextext{value computation|)}% + +\indextext{behavior!on receipt of signal}% +\indextext{signal}% +\pnum +If a signal handler is executed as a result of a call to the \tcode{std::raise} +function, then the execution of the handler is sequenced after the invocation +of the \tcode{std::raise} function and before its return. +\begin{note} When a signal is received for another reason, the execution of the +signal handler is usually unsequenced with respect to the rest of the program. +\end{note} +\indextext{program execution|)} + +\rSec2[intro.multithread]{Multi-threaded executions and data races} + +\pnum +\indextext{threads!multiple|(}% +\indextext{operation!atomic|(}% +A \defn{thread of execution} (also known as a \defn{thread}) is a single flow of +control within a program, including the initial invocation of a specific +top-level function, and recursively including every function invocation +subsequently executed by the thread. \begin{note} When one thread creates another, +the initial call to the top-level function of the new thread is executed by the +new thread, not by the creating thread. \end{note} Every thread in a program can +potentially access every object and function in a program.\footnote{An object +with automatic or thread storage duration\iref{basic.stc} is associated with +one specific thread, and can be accessed by a different thread only indirectly +through a pointer or reference\iref{basic.compound}.} Under a hosted +implementation, a \Cpp program can have more than one thread running +concurrently. The execution of each thread proceeds as defined by the remainder +of this document. The execution of the entire program consists of an execution +of all of its threads. \begin{note} Usually the execution can be viewed as an +interleaving of all its threads. However, some kinds of atomic operations, for +example, allow executions inconsistent with a simple interleaving, as described +below. \end{note} Under a freestanding implementation, it is \impldef{number of +threads in a program under a freestanding implementation} whether a program can +have more than one thread of execution. + +\pnum +For a signal handler that is not executed as a result of a call to the +\tcode{std::raise} function, it is unspecified which thread of execution +contains the signal handler invocation. + +\rSec3[intro.races]{Data races} + +\pnum +The value of an object visible to a thread \placeholder{T} at a particular point is the +initial value of the object, a value assigned to the object by \placeholder{T}, or a +value assigned to the object by another thread, according to the rules below. +\begin{note} In some cases, there may instead be undefined behavior. Much of this +section is motivated by the desire to support atomic operations with explicit +and detailed visibility constraints. However, it also implicitly supports a +simpler view for more restricted programs. \end{note} + +\pnum +Two expression evaluations \defn{conflict} if one of them modifies a memory +location\iref{intro.memory} and the other one reads or modifies the same +memory location. + +\pnum +The library defines a number of atomic operations\iref{atomics} and +operations on mutexes\iref{thread} that are specially identified as +synchronization operations. These operations play a special role in making +assignments in one thread visible to another. A synchronization operation on one +or more memory locations is either a consume operation, an acquire operation, a +release operation, or both an acquire and release operation. A synchronization +operation without an associated memory location is a fence and can be either an +acquire fence, a release fence, or both an acquire and release fence. In +addition, there are relaxed atomic operations, which are not synchronization +operations, and atomic read-modify-write operations, which have special +characteristics. \begin{note} For example, a call that acquires a mutex will +perform an acquire operation on the locations comprising the mutex. +Correspondingly, a call that releases the same mutex will perform a release +operation on those same locations. Informally, performing a release operation on +\placeholder{A} forces prior +\indextext{side effects}% +side effects on other memory locations to become visible +to other threads that later perform a consume or an acquire operation on +\placeholder{A}. ``Relaxed'' atomic operations are not synchronization operations even +though, like synchronization operations, they cannot contribute to data races. +\end{note} + +\pnum +All modifications to a particular atomic object \placeholder{M} occur in some +particular total order, called the \defn{modification order} of \placeholder{M}. +\begin{note} There is a separate order for each +atomic object. There is no requirement that these can be combined into a single +total order for all objects. In general this will be impossible since different +threads may observe modifications to different objects in inconsistent orders. +\end{note} + +\pnum +A \defn{release sequence} headed by a release operation \placeholder{A} on an atomic object +\placeholder{M} is a maximal contiguous sub-sequence of +\indextext{side effects}% +side effects in the +modification order of \placeholder{M}, where the first operation is \tcode{A}, and +every subsequent operation + +\begin{itemize} +\item is performed by the same thread that performed \tcode{A}, or +\item is an atomic read-modify-write operation. \end{itemize} \pnum -These methods of constructing types can be applied recursively; -restrictions are mentioned in~\ref{dcl.ptr}, \ref{dcl.array}, -\ref{dcl.fct}, and~\ref{dcl.ref}. Constructing a type such that the number of -bytes in its object representation exceeds the maximum value representable in -the type \tcode{std::size_t}\iref{support.types} is ill-formed. +Certain library calls \defn{synchronize with} other library calls performed by +another thread. For example, an atomic store-release synchronizes with a +load-acquire that takes its value from the store\iref{atomics.order}. +\begin{note} Except in the specified cases, reading a later value does not +necessarily ensure visibility as described below. Such a requirement would +sometimes interfere with efficient implementation. \end{note} \begin{note} The +specifications of the synchronization operations define when one reads the value +written by another. For atomic objects, the definition is clear. All operations +on a given mutex occur in a single total order. Each mutex acquisition ``reads +the value written'' by the last mutex release. \end{note} \pnum -\indextext{terminology!pointer}% -The type of a pointer to \cv{}~\tcode{void} or a pointer to an object type is -called an \defn{object pointer type}. \begin{note} A pointer to \tcode{void} -does not have a pointer-to-object type, however, because \tcode{void} is not -an object type. \end{note} The type of a pointer that can designate a function -is called a \defn{function pointer type}. -A pointer to objects of type \tcode{T} is referred to as a ``pointer to -\tcode{T}''. \begin{example} A pointer to an object of type \tcode{int} is -referred to as ``pointer to \tcode{int}'' and a pointer to an object of -class \tcode{X} is called a ``pointer to \tcode{X}''. \end{example} -Except for pointers to static members, text referring to ``pointers'' -does not apply to pointers to members. Pointers to incomplete types are -allowed although there are restrictions on what can be done with -them\iref{basic.align}. -\indextext{address}% -Every value of pointer type is one of the following: +An evaluation \placeholder{A} \defn{carries a dependency} to an evaluation \placeholder{B} if + \begin{itemize} \item -a \defn{pointer to} an object or function (the pointer is said to \defn{point} to the object or function), or +the value of \placeholder{A} is used as an operand of \placeholder{B}, unless: +\begin{itemize} \item -a \defn{pointer past the end of} an object\iref{expr.add}, or +\placeholder{B} is an invocation of any specialization of +\tcode{std::kill_dependency}\iref{atomics.order}, or \item -the \defn{null pointer value}\iref{conv.ptr} for that type, or +\placeholder{A} is the left operand of a built-in logical AND (\tcode{\&\&}, +see~\ref{expr.log.and}) or logical OR (\tcode{||}, see~\ref{expr.log.or}) +operator, or \item -an \defn{invalid pointer value}. +\placeholder{A} is the left operand of a conditional (\tcode{?:}, see~\ref{expr.cond}) +operator, or +\item +\placeholder{A} is the left operand of the built-in comma (\tcode{,}) +operator\iref{expr.comma}; \end{itemize} or +\item +\placeholder{A} writes a scalar object or bit-field \placeholder{M}, \placeholder{B} reads the value +written by \placeholder{A} from \placeholder{M}, and \placeholder{A} is sequenced before \placeholder{B}, or +\item +for some evaluation \placeholder{X}, \placeholder{A} carries a dependency to \placeholder{X}, and +\placeholder{X} carries a dependency to \placeholder{B}. \end{itemize} -A value of a -pointer type -that is a pointer to or past the end of an object -\defn{represents the address} of -the first byte in memory\iref{intro.memory} occupied by the object% -\footnote{For an object that is not within its lifetime, -this is the first byte in memory that it will occupy or used to occupy.} -or the first byte in memory -after the end of the storage occupied by the object, -respectively. -\begin{note} -A pointer past the end of an object\iref{expr.add} -is not considered to point to an unrelated object -of the object's type -that might be located at that address. -A pointer value becomes invalid -when the storage it denotes -reaches the end of its storage duration; -see \ref{basic.stc}. -\end{note} -For purposes of pointer arithmetic\iref{expr.add} -and comparison~(\ref{expr.rel}, \ref{expr.eq}), -a pointer past the end of the last element of -an array \tcode{x} of $n$ elements -is considered to be equivalent to -a pointer to a hypothetical element \tcode{x[$n$]}. -The value representation of -pointer types is \impldef{value representation of pointer types}. Pointers to -layout-compatible types shall -have the same value representation and alignment -requirements\iref{basic.align}. -\begin{note} Pointers to over-aligned types\iref{basic.align} have no special -representation, but their range of valid values is restricted by the extended -alignment requirement.\end{note} +\begin{note} ``Carries a dependency to'' is a subset of ``is sequenced before'', +and is similarly strictly intra-thread. \end{note} \pnum -Two objects \placeholder{a} and \placeholder{b} are \defn{pointer-interconvertible} if: +An evaluation \placeholder{A} is \defn{dependency-ordered before} an evaluation +\placeholder{B} if \begin{itemize} \item -they are the same object, or +\placeholder{A} performs a release operation on an atomic object \placeholder{M}, and, in +another thread, \placeholder{B} performs a consume operation on \placeholder{M} and reads a +value written by any +\indextext{side effects}% +side effect in the release sequence headed by \placeholder{A}, or + \item -one is a union object and -the other is a non-static data member of that object\iref{class.union}, or +for some evaluation \placeholder{X}, \placeholder{A} is dependency-ordered before \placeholder{X} and +\placeholder{X} carries a dependency to \placeholder{B}. + +\end{itemize} +\begin{note} The relation ``is dependency-ordered before'' is analogous to +``synchronizes with'', but uses release/consume in place of release/acquire. +\end{note} + +\pnum +An evaluation \placeholder{A} \defn{inter-thread happens before} an evaluation \placeholder{B} +if +\begin{itemize} \item -one is a standard-layout class object and -the other is the first non-static data member of that object, or, -if the object has no non-static data members, -the first base class subobject of that object\iref{class.mem}, or + \placeholder{A} synchronizes with \placeholder{B}, or \item -there exists an object \placeholder{c} such that -\placeholder{a} and \placeholder{c} are pointer-interconvertible, and -\placeholder{c} and \placeholder{b} are pointer-interconvertible. + \placeholder{A} is dependency-ordered before \placeholder{B}, or +\item + for some evaluation \placeholder{X} + \begin{itemize} + \item + \placeholder{A} synchronizes with \placeholder{X} and \placeholder{X} + is sequenced before \placeholder{B}, or + \item + \placeholder{A} is sequenced before \placeholder{X} and \placeholder{X} + inter-thread happens before \placeholder{B}, or + \item + \placeholder{A} inter-thread happens before \placeholder{X} and \placeholder{X} + inter-thread happens before \placeholder{B}. + \end{itemize} +\end{itemize} +\begin{note} The ``inter-thread happens before'' relation describes arbitrary +concatenations of ``sequenced before'', ``synchronizes with'' and +``dependency-ordered before'' relationships, with two exceptions. The first +exception is that a concatenation is not permitted to end with +``dependency-ordered before'' followed by ``sequenced before''. The reason for +this limitation is that a consume operation participating in a +``dependency-ordered before'' relationship provides ordering only with respect +to operations to which this consume operation actually carries a dependency. The +reason that this limitation applies only to the end of such a concatenation is +that any subsequent release operation will provide the required ordering for a +prior consume operation. The second exception is that a concatenation is not +permitted to consist entirely of ``sequenced before''. The reasons for this +limitation are (1) to permit ``inter-thread happens before'' to be transitively +closed and (2) the ``happens before'' relation, defined below, provides for +relationships consisting entirely of ``sequenced before''. \end{note} + +\pnum +An evaluation \placeholder{A} \defn{happens before} an evaluation \placeholder{B} +(or, equivalently, \placeholder{B} \defn{happens after} \placeholder{A}) if: +\begin{itemize} +\item \placeholder{A} is sequenced before \placeholder{B}, or +\item \placeholder{A} inter-thread happens before \placeholder{B}. +\end{itemize} +The implementation shall ensure that no program execution demonstrates a cycle +in the ``happens before'' relation. \begin{note} This cycle would otherwise be +possible only through the use of consume operations. \end{note} + +\pnum +An evaluation \placeholder{A} \defn{strongly happens before} an evaluation \placeholder{B} +if either +\begin{itemize} +\item \placeholder{A} is sequenced before \placeholder{B}, or +\item \placeholder{A} synchronizes with \placeholder{B}, or +\item \placeholder{A} strongly happens before \placeholder{X} and \placeholder{X} strongly happens before \placeholder{B}. \end{itemize} -If two objects are pointer-interconvertible, -then they have the same address, -and it is possible to obtain a pointer to one -from a pointer to the other -via a \tcode{reinterpret_cast}\iref{expr.reinterpret.cast}. \begin{note} -An array object and its first element are not pointer-interconvertible, -even though they have the same address. +In the absence of consume operations, +the happens before and strongly happens before relations are identical. +Strongly happens before essentially excludes consume operations. \end{note} \pnum -\indextext{pointer|seealso{\tcode{void*}}}% -\indextext{\idxcode{void*}!type}% -A pointer to \cv-qualified\iref{basic.type.qualifier} or \cv-unqualified -\tcode{void} -can be used to point to objects of -unknown type. Such a pointer shall be able to hold any object pointer. -An object of type \cv{}~\tcode{void*} -shall have the same representation and alignment -requirements as \cv{}~\tcode{char*}. +A \defnx{visible side effect}{side effects!visible} \placeholder{A} on a scalar object or bit-field \placeholder{M} +with respect to a value computation \placeholder{B} of \placeholder{M} satisfies the +conditions: +\begin{itemize} +\item \placeholder{A} happens before \placeholder{B} and +\item there is no other +\indextext{side effects}% +side effect \placeholder{X} to \placeholder{M} such that \placeholder{A} +happens before \placeholder{X} and \placeholder{X} happens before \placeholder{B}. +\end{itemize} -\rSec2[basic.type.qualifier]{CV-qualifiers} +The value of a non-atomic scalar object or bit-field \placeholder{M}, as determined by +evaluation \placeholder{B}, shall be the value stored by the +\indextext{side effects!visible}% +visible side effect +\placeholder{A}. \begin{note} If there is ambiguity about which side effect to a +non-atomic object or bit-field is visible, then the behavior is either +unspecified or undefined. \end{note} \begin{note} This states that operations on +ordinary objects are not visibly reordered. This is not actually detectable +without data races, but it is necessary to ensure that data races, as defined +below, and with suitable restrictions on the use of atomics, correspond to data +races in a simple interleaved (sequentially consistent) execution. \end{note} + +\pnum +The value of an +atomic object \placeholder{M}, as determined by evaluation \placeholder{B}, shall be the value +stored by some +side effect \placeholder{A} that modifies \placeholder{M}, where \placeholder{B} does not happen +before \placeholder{A}. +\begin{note} +The set of such side effects is also restricted by the rest of the rules +described here, and in particular, by the coherence requirements below. +\end{note} \pnum -\indextext{cv-qualifier}% -\indextext{\idxcode{const}}% -\indextext{\idxcode{volatile}}% -A type mentioned in~\ref{basic.fundamental} and~\ref{basic.compound} is -a \defnx{cv-unqualified type}{type!cv-unqualified}. Each type which is a -cv-unqualified complete or incomplete object type or is -\tcode{void}\iref{basic.types} has three corresponding cv-qualified -versions of its type: a \defn{const-qualified} version, a -\defn{volatile-qualified} version, and a -\defn{const-volatile-qualified} version. The -type of an object\iref{intro.object} includes the \grammarterm{cv-qualifier}{s} -specified in the \grammarterm{decl-specifier-seq}\iref{dcl.spec}, -\grammarterm{declarator}\iref{dcl.decl}, -\grammarterm{type-id}\iref{dcl.name}, or -\grammarterm{new-type-id}\iref{expr.new} when the object is created. -\begin{itemize} -\item A \defnx{const object}{object!const} is an object of type \tcode{const T} or a - non-mutable subobject of such an object. +\indextext{coherence!write-write}% +If an operation \placeholder{A} that modifies an atomic object \placeholder{M} happens before +an operation \placeholder{B} that modifies \placeholder{M}, then \placeholder{A} shall be earlier +than \placeholder{B} in the modification order of \placeholder{M}. \begin{note} This requirement +is known as write-write coherence. \end{note} -\item A \defnx{volatile object}{object!volatile} is an object of type - \tcode{volatile T}, a subobject of such an object, or a mutable - subobject of a const volatile object. +\pnum +\indextext{coherence!read-read}% +If a +\indextext{value computation}% +value computation \placeholder{A} of an atomic object \placeholder{M} happens before a +value computation \placeholder{B} of \placeholder{M}, and \placeholder{A} takes its value from a side +effect \placeholder{X} on \placeholder{M}, then the value computed by \placeholder{B} shall either be +the value stored by \placeholder{X} or the value stored by a +\indextext{side effects}% +side effect \placeholder{Y} on +\placeholder{M}, where \placeholder{Y} follows \placeholder{X} in the modification order of \placeholder{M}. +\begin{note} This requirement is known as read-read coherence. \end{note} + +\pnum +\indextext{coherence!read-write}% +If a +\indextext{value computation}% +value computation \placeholder{A} of an atomic object \placeholder{M} happens before an +operation \placeholder{B} that modifies \placeholder{M}, then \placeholder{A} shall take its value from a side +effect \placeholder{X} on \placeholder{M}, where \placeholder{X} precedes \placeholder{B} in the +modification order of \placeholder{M}. \begin{note} This requirement is known as +read-write coherence. \end{note} -\item A \defnx{const volatile object}{object!const volatile} is an object of type - \tcode{const volatile T}, a non-mutable subobject of such an object, - a const subobject of a volatile object, or a non-mutable volatile - subobject of a const object. -\end{itemize} -The cv-qualified or -cv-unqualified versions of a type -are distinct types; however, they shall have the same representation and -alignment requirements\iref{basic.align}.\footnote{The same representation -and alignment requirements are meant to imply -interchangeability as arguments to functions, return values from -functions, and non-static data members of unions.} +\pnum +\indextext{coherence!write-read}% +If a +\indextext{side effects}% +side effect \placeholder{X} on an atomic object \placeholder{M} happens before a value +computation \placeholder{B} of \placeholder{M}, then the evaluation \placeholder{B} shall take its +value from \placeholder{X} or from a +\indextext{side effects}% +side effect \placeholder{Y} that follows \placeholder{X} in the +modification order of \placeholder{M}. \begin{note} This requirement is known as +write-read coherence. \end{note} + +\pnum +\begin{note} The four preceding coherence requirements effectively disallow +compiler reordering of atomic operations to a single object, even if both +operations are relaxed loads. This effectively makes the cache coherence +guarantee provided by most hardware available to \Cpp atomic operations. +\end{note} \pnum -\indextext{array!\idxcode{const}}% -A compound type\iref{basic.compound} is not cv-qualified by the -cv-qualifiers (if any) of the types from which it is compounded. Any -cv-qualifiers applied to an array type -affect the array element type\iref{dcl.array}. +\begin{note} The value observed by a load of an atomic depends on the ``happens +before'' relation, which depends on the values observed by loads of atomics. +The intended reading is that there must exist an +association of atomic loads with modifications they observe that, together with +suitably chosen modification orders and the ``happens before'' relation derived +as described above, satisfy the resulting constraints as imposed here. \end{note} \pnum -See~\ref{dcl.fct} and~\ref{class.this} regarding function -types that have \grammarterm{cv-qualifier}{s}. +Two actions are \defn{potentially concurrent} if +\begin{itemize} +\item they are performed by different threads, or +\item they are unsequenced, at least one is performed by a signal handler, and +they are not both performed by the same signal handler invocation. +\end{itemize} +The execution of a program contains a \defn{data race} if it contains two +potentially concurrent conflicting actions, at least one of which is not atomic, +and neither happens before the other, +except for the special case for signal handlers described below. +Any such data race results in undefined +behavior. \begin{note} It can be shown that programs that correctly use mutexes +and \tcode{memory_order_seq_cst} operations to prevent all data races and use no +other synchronization operations behave as if the operations executed by their +constituent threads were simply interleaved, with each +\indextext{value computation}% +value computation of an +object being taken from the last +\indextext{side effects}% +side effect on that object in that +interleaving. This is normally referred to as ``sequential consistency''. +However, this applies only to data-race-free programs, and data-race-free +programs cannot observe most program transformations that do not change +single-threaded program semantics. In fact, most single-threaded program +transformations continue to be allowed, since any program that behaves +differently as a result must perform an undefined operation. \end{note} + +\pnum +Two accesses to the same object of type \tcode{volatile std::sig_atomic_t} do not +result in a data race if both occur in the same thread, even if one or more +occurs in a signal handler. For each signal handler invocation, evaluations +performed by the thread invoking a signal handler can be divided into two +groups \placeholder{A} and \placeholder{B}, such that no evaluations in +\placeholder{B} happen before evaluations in \placeholder{A}, and the +evaluations of such \tcode{volatile std::sig_atomic_t} objects take values as though +all evaluations in \placeholder{A} happened before the execution of the signal +handler and the execution of the signal handler happened before all evaluations +in \placeholder{B}. + +\pnum +\begin{note} Compiler transformations that introduce assignments to a potentially +shared memory location that would not be modified by the abstract machine are +generally precluded by this document, since such an assignment might overwrite +another assignment by a different thread in cases in which an abstract machine +execution would not have encountered a data race. This includes implementations +of data member assignment that overwrite adjacent members in separate memory +locations. Reordering of atomic loads in cases in which the atomics in question +may alias is also generally precluded, since this may violate the coherence +rules. \end{note} + +\pnum +\begin{note} Transformations that introduce a speculative read of a potentially +shared memory location may not preserve the semantics of the \Cpp program as +defined in this document, since they potentially introduce a data race. However, +they are typically valid in the context of an optimizing compiler that targets a +specific machine with well-defined semantics for data races. They would be +invalid for a hypothetical machine that is not tolerant of races or provides +hardware race detection. \end{note} + +\rSec3[intro.progress]{Forward progress} + +\pnum +The implementation may assume that any thread will eventually do one of the +following: +\begin{itemize} +\item terminate, +\item make a call to a library I/O function, +\item perform an access through a volatile glvalue, or +\item perform a synchronization operation or an atomic operation. +\end{itemize} +\begin{note} This is intended to allow compiler transformations such as removal of +empty loops, even when termination cannot be proven. \end{note} \pnum -There is a partial ordering on cv-qualifiers, so that a type can be -said to be \defn{more cv-qualified} than another. -Table~\ref{tab:relations.on.const.and.volatile} shows the relations that -constitute this ordering. +Executions of atomic functions +that are either defined to be lock-free\iref{atomics.flag} +or indicated as lock-free\iref{atomics.lockfree} +are \defnx{lock-free executions}{lock-free execution}. +\begin{itemize} +\item + If there is only one thread that is not blocked\iref{defns.block} + in a standard library function, + a lock-free execution in that thread shall complete. + \begin{note} + Concurrently executing threads + may prevent progress of a lock-free execution. + For example, + this situation can occur + with load-locked store-conditional implementations. + This property is sometimes termed obstruction-free. + \end{note} +\item + When one or more lock-free executions run concurrently, + at least one should complete. + \begin{note} + It is difficult for some implementations + to provide absolute guarantees to this effect, + since repeated and particularly inopportune interference + from other threads + may prevent forward progress, + e.g., + by repeatedly stealing a cache line + for unrelated purposes + between load-locked and store-conditional instructions. + Implementations should ensure + that such effects cannot indefinitely delay progress + under expected operating conditions, + and that such anomalies + can therefore safely be ignored by programmers. + Outside this document, + this property is sometimes termed lock-free. + \end{note} +\end{itemize} -\begin{floattable}{Relations on \tcode{const} and \tcode{volatile}}{tab:relations.on.const.and.volatile} -{ccc} -\topline -\cvqual{no cv-qualifier} &<& \tcode{const} \\ -\cvqual{no cv-qualifier} &<& \tcode{volatile} \\ -\cvqual{no cv-qualifier} &<& \tcode{const volatile} \\ -\tcode{const} &<& \tcode{const volatile} \\ -\tcode{volatile} &<& \tcode{const volatile} \\ -\end{floattable} +\pnum +During the execution of a thread of execution, each of the following is termed +an \defn{execution step}: +\begin{itemize} +\item termination of the thread of execution, +\item performing an access through a volatile glvalue, or +\item completion of a call to a library I/O function, a + synchronization operation, or an atomic operation. +\end{itemize} \pnum -In this document, the notation \cv{} (or -\cvqual{cv1}, \cvqual{cv2}, etc.), used in the description of types, -represents an arbitrary set of cv-qualifiers, i.e., one of -\{\tcode{const}\}, \{\tcode{volatile}\}, \{\tcode{const}, -\tcode{volatile}\}, or the empty set. -For a type \cv{}~\tcode{T}, the \defnx{top-level cv-qualifiers}{cv-qualifier!top-level} -of that type are those denoted by \cv. +An invocation of a standard library function that blocks\iref{defns.block} +is considered to continuously execute execution steps while waiting for the +condition that it blocks on to be satisfied. \begin{example} -The type corresponding to the \grammarterm{type-id} -\tcode{const int\&} -has no top-level cv-qualifiers. -The type corresponding to the \grammarterm{type-id} -\tcode{volatile int * const} -has the top-level cv-qualifier \tcode{const}. -For a class type \tcode{C}, -the type corresponding to the \grammarterm{type-id} -\tcode{void (C::* volatile)(int) const} -has the top-level cv-qualifier \tcode{volatile}. +A library I/O function that blocks until the I/O operation is complete can +be considered to continuously check whether the operation is complete. Each +such check might consist of one or more execution steps, for example using +observable behavior of the abstract machine. \end{example} \pnum -Cv-qualifiers applied to an array -type attach to the underlying element type, so the notation -``\cv{}~\tcode{T}'', where \tcode{T} is an array type, refers to -an array whose elements are so-qualified. An array type whose elements -are cv-qualified is also considered to have the same cv-qualifications -as its elements. -\begin{example} -\begin{codeblock} -typedef char CA[5]; -typedef const char CC; -CC arr1[5] = { 0 }; -const CA arr2 = { 0 }; -\end{codeblock} -The type of both \tcode{arr1} and \tcode{arr2} is ``array of 5 -\tcode{const char}'', and the array type is considered to be -const-qualified. -\end{example}% -\indextext{type|)} +\begin{note} +Because of this and the preceding requirement regarding what threads of execution +have to perform eventually, it follows that no thread of execution can execute +forever without an execution step occurring. +\end{note} -\rSec1[basic.lval]{Lvalues and rvalues} \pnum -Expressions are categorized according to the taxonomy in Figure~\ref{fig:categories}. +A thread of execution \defnx{makes progress}{make progress!thread} +when an execution step occurs or a +lock-free execution does not complete because there are other concurrent threads +that are not blocked in a standard library function (see above). -\begin{importgraphic} -{Expression category taxonomy} -{fig:categories} -{valuecategories.pdf} -\end{importgraphic} +\pnum +\indextext{forward progress guarantees!concurrent}% +For a thread of execution providing \defn{concurrent forward progress guarantees}, +the implementation ensures that the thread will eventually make progress for as +long as it has not terminated. +\begin{note} +This is required regardless of whether or not other threads of executions (if any) +have been or are making progress. To eventually fulfill this requirement means that +this will happen in an unspecified but finite amount of time. +\end{note} -\begin{itemize} -\item A \defn{glvalue} is an expression whose evaluation determines the identity of an object, bit-field, or function. -\item A \defn{prvalue} is an expression whose evaluation initializes an object or a bit-field, -or computes the value of the operand of an operator, -as specified by the context in which it appears. -\item An \defn{xvalue} is a glvalue that denotes an object or bit-field whose resources can be reused (usually because it is near the end of its lifetime). -\begin{example} -Certain kinds of expressions involving rvalue references\iref{dcl.ref} yield xvalues, -such as a call to a function whose return type is an rvalue reference -or a cast to an rvalue reference type. -\end{example} -\item An \defn{lvalue} is a glvalue that is not an xvalue. -\item An \defn{rvalue} is a prvalue or an xvalue. -\end{itemize} +\pnum +It is \impldef{whether the thread that executes \tcode{main} and the threads created +by \tcode{std::thread} provide concurrent forward progress guarantees} whether the +implementation-created thread of execution that executes +\tcode{main}\iref{basic.start.main} and the threads of execution created by +\tcode{std::thread}\iref{thread.thread.class} provide concurrent forward progress +guarantees. +\begin{note} +General-purpose implementations should provide these guarantees. +\end{note} + +\pnum +\indextext{forward progress guarantees!parallel}% +For a thread of execution providing \defn{parallel forward progress guarantees}, +the implementation is not required to ensure that the thread will eventually make +progress if it has not yet executed any execution step; once this thread has +executed a step, it provides concurrent forward progress guarantees. + +\pnum +\begin{note} +This does not specify a requirement for when to start this thread of execution, +which will typically be specified by the entity that creates this thread of +execution. For example, a thread of execution that provides concurrent forward +progress guarantees and executes tasks from a set of tasks in an arbitrary order, +one after the other, satisfies the requirements of parallel forward progress for +these tasks. +\end{note} + +\pnum +\indextext{forward progress guarantees!weakly parallel}% +For a thread of execution providing \defn{weakly parallel forward progress +guarantees}, the implementation does not ensure that the thread will eventually +make progress. + +\pnum \begin{note} -Historically, lvalues and rvalues were so-called -because they could appear on the left- and right-hand side of an assignment -(although this is no longer generally true); -glvalues are ``generalized'' lvalues, -prvalues are ``pure'' rvalues, -and xvalues are ``eXpiring'' lvalues. -Despite their names, these terms classify expressions, not values. +Threads of execution providing weakly parallel forward progress guarantees cannot +be expected to make progress regardless of whether other threads make progress or +not; however, blocking with forward progress guarantee delegation, as defined below, +can be used to ensure that such threads of execution make progress eventually. \end{note} -Every expression belongs to exactly one of the fundamental classifications in this -taxonomy: lvalue, xvalue, or prvalue. This property of an expression is called -its \defn{value category}. \begin{note} The discussion of each built-in operator in -\ref{expr} indicates the category of the value it yields and the value categories -of the operands it expects. For example, the built-in assignment operators expect that -the left operand is an lvalue and that the right operand is a prvalue and yield an -lvalue as the result. User-defined operators are functions, and the categories of -values they expect and yield are determined by their parameter and return types. \end{note} \pnum -The \defnx{result}{result!prvalue} of a prvalue -is the value that the expression stores into its context. -A prvalue whose result is the value \placeholder{V} -is sometimes said to have or name the value \placeholder{V}. -The \defn{result object} of a prvalue -is the object initialized by the prvalue; -a prvalue -that is used to compute the value of an operand of an operator or -that has type \cv{}~\tcode{void} -has no result object. +Concurrent forward progress guarantees are stronger than parallel forward progress +guarantees, which in turn are stronger than weakly parallel forward progress +guarantees. \begin{note} -Except when the prvalue is the operand of a \grammarterm{decltype-specifier}, -a prvalue of class or array type always has a result object. -For a discarded prvalue, a temporary object is materialized; see \ref{expr}. +For example, some kinds of synchronization between threads of execution may only +make progress if the respective threads of execution provide parallel forward progress +guarantees, but will fail to make progress under weakly parallel guarantees. \end{note} -The \defnx{result}{result!glvalue} of a glvalue is the entity denoted by the expression. \pnum +\indextext{forward progress guarantees!delegation of}% +When a thread of execution \placeholder{P} is specified to \defn{block with forward +progress guarantee delegation} on the completion of a set \placeholder{S} of threads +of execution, then throughout the whole time of \placeholder{P} being blocked on +\placeholder{S}, the implementation shall ensure that the forward progress guarantees +provided by at least one thread of execution in \placeholder{S} is at least as strong +as \placeholder{P}'s forward progress guarantees. \begin{note} -Whenever a glvalue appears in a context where a prvalue is expected, the glvalue is converted -to a prvalue; see~\ref{conv.lval}, \ref{conv.array}, -and~\ref{conv.func}. -An attempt to bind an rvalue reference to an lvalue is not such a context; see~\ref{dcl.init.ref}. +It is unspecified which thread or threads of execution in \placeholder{S} are chosen +and for which number of execution steps. The strengthening is not permanent and +not necessarily in place for the rest of the lifetime of the affected thread of +execution. As long as \placeholder{P} is blocked, the implementation has to eventually +select and potentially strengthen a thread of execution in \placeholder{S}. \end{note} +Once a thread of execution in \placeholder{S} terminates, it is removed from \placeholder{S}. +Once \placeholder{S} is empty, \placeholder{P} is unblocked. + +\pnum \begin{note} -There are no prvalue bit-fields; if a bit-field is converted to a -prvalue\iref{conv.lval}, a prvalue of the type of the bit-field is -created, which might then be promoted\iref{conv.prom}. +A thread of execution \placeholder{B} thus can temporarily provide an effectively +stronger forward progress guarantee for a certain amount of time, due to a +second thread of execution \placeholder{A} being blocked on it with forward +progress guarantee delegation. In turn, if \placeholder{B} then blocks with +forward progress guarantee delegation on \placeholder{C}, this may also temporarily +provide a stronger forward progress guarantee to \placeholder{C}. \end{note} \pnum \begin{note} -Whenever a prvalue appears in a context where a glvalue is expected, -the prvalue is converted to an xvalue; see~\ref{conv.rval}. +If all threads of execution in \placeholder{S} finish executing (e.g., they terminate +and do not use blocking synchronization incorrectly), then \placeholder{P}'s execution +of the operation that blocks with forward progress guarantee delegation will not +result in \placeholder{P}'s progress guarantee being effectively weakened. \end{note} \pnum -The discussion of reference initialization in~\ref{dcl.init.ref} and of -temporaries in~\ref{class.temporary} indicates the behavior of lvalues -and rvalues in other significant contexts. +\begin{note} +This does not remove any constraints regarding blocking synchronization for +threads of execution providing parallel or weakly parallel forward progress +guarantees because the implementation is not required to strengthen a particular +thread of execution whose too-weak progress guarantee is preventing overall progress. +\end{note} \pnum -Unless otherwise indicated\iref{expr.call}, -a prvalue shall always have complete type or the \tcode{void} type. -A glvalue shall not have type \cv{}~\tcode{void}. +An implementation should ensure that the last value (in modification order) +assigned by an atomic or synchronization operation will become visible to all +other threads in a finite period of time.% +\indextext{operation!atomic|)}% +\indextext{threads!multiple|)} + +\rSec2[basic.start]{Start and termination} + +\rSec3[basic.start.main]{\tcode{main} function} +\indextext{\idxcode{main} function|(} + +\pnum +\indextext{program!start|(}% +A program shall contain a global function called \tcode{main}. +Executing a program starts a main thread of execution~(\ref{intro.multithread}, \ref{thread.threads}) +in which the \tcode{main} function is invoked, +and in which variables of static storage duration +might be initialized\iref{basic.start.static} and destroyed\iref{basic.start.term}. +It is \impldef{defining \tcode{main} in freestanding environment} +whether a program in a freestanding environment is required to define a \tcode{main} +function. \begin{note} In a freestanding environment, start-up and termination is +\impldef{start-up and termination in freestanding environment}; start-up contains the +execution of constructors for objects of namespace scope with static storage duration; +termination contains the execution of destructors for objects with static storage +duration. \end{note} + +\pnum +An implementation shall not predefine the \tcode{main} function. This +function shall not be overloaded. Its type shall have \Cpp language linkage +and it shall have a declared return type of type +\tcode{int}, but otherwise its type is \impldef{parameters to \tcode{main}}. +\indextext{\idxcode{main} function!implementation-defined parameters to}% +An implementation shall allow both +\begin{itemize} +\item a function of \tcode{()} returning \tcode{int} and +\item a function of \tcode{(int}, pointer to pointer to \tcode{char)} returning \tcode{int} +\end{itemize} + +\indextext{\idxcode{argc}}% +\indextext{\idxcode{argv}}% +as the type of \tcode{main}\iref{dcl.fct}. +\indextext{\idxcode{main} function!parameters to}% +\indextext{environment!program}% +In the latter form, for purposes of exposition, the first function +parameter is called \tcode{argc} and the second function parameter is +called \tcode{argv}, where \tcode{argc} shall be the number of +arguments passed to the program from the environment in which the +program is run. If +\tcode{argc} is nonzero these arguments shall be supplied in +\tcode{argv[0]} through \tcode{argv[argc-1]} as pointers to the initial +characters of null-terminated multibyte strings (\ntmbs{}s)\iref{multibyte.strings} +and \tcode{argv[0]} shall be the pointer to +the initial character of a \ntmbs that represents the name used to +invoke the program or \tcode{""}. The value of \tcode{argc} shall be +non-negative. The value of \tcode{argv[argc]} shall be 0. \begin{note} It +is recommended that any further (optional) parameters be added after +\tcode{argv}. \end{note} + +\pnum +The function \tcode{main} shall not be used within +a program. +\indextext{\idxcode{main} function!implementation-defined linkage of}% +The linkage\iref{basic.link} of \tcode{main} is +\impldef{linkage of \tcode{main}}. A program that defines \tcode{main} as +deleted or that declares \tcode{main} to be +\tcode{inline}, \tcode{static}, or \tcode{constexpr} is ill-formed. +The \tcode{main} function shall not be declared with a +\grammarterm{linkage-specification}\iref{dcl.link}. A program that +declares a variable \tcode{main} at global scope or that declares the name +\tcode{main} with C language linkage (in any namespace) is ill-formed. +The name \tcode{main} is +not otherwise reserved. \begin{example} Member functions, classes, and +enumerations can be called \tcode{main}, as can entities in other +namespaces. \end{example} + +\pnum +\indextext{\idxcode{exit}}% +\indexlibrary{\idxcode{exit}}% +\indextext{termination!program}% +Terminating the program +without leaving the current block (e.g., by calling the function +\tcode{std::exit(int)}\iref{support.start.term}) does not destroy any +objects with automatic storage duration\iref{class.dtor}. If +\tcode{std::exit} is called to end a program during the destruction of +an object with static or thread storage duration, the program has undefined +behavior. + +\pnum +\indextext{termination!program}% +\indextext{\idxcode{main} function!return from}% +A return statement in \tcode{main} has the effect of leaving the main +function (destroying any objects with automatic storage duration) and +calling \tcode{std::exit} with the return value as the argument. +If control flows off the end of +the \grammarterm{compound-statement} of \tcode{main}, +the effect is equivalent to a \tcode{return} with operand \tcode{0} +(see also \ref{except.handle}). +\indextext{\idxcode{main} function|)} + +\rSec3[basic.start.static]{Static initialization} + +\pnum +\indextext{initialization}% +\indextext{initialization!static and thread}% +Variables with static storage duration +are initialized as a consequence of program initiation. Variables with +thread storage duration are initialized as a consequence of thread execution. +Within each of these phases of initiation, initialization occurs as follows. + +\pnum +\indextext{initialization!static object@\tcode{static} object}% +\indextext{initialization!constant}% +A \defn{constant initializer} for a variable or temporary object \tcode{o} +is an initializer whose full-expression is a +constant expression, except that if \tcode{o} is an object, +such an initializer may also invoke constexpr constructors +for \tcode{o} and its subobjects even if those objects are of non-literal class +types. \begin{note} Such a class may have a non-trivial destructor. \end{note} +\defnx{Constant initialization}{constant initialization} is performed +if a variable or temporary object with static or thread storage duration +is initialized by a constant initializer for the entity. +\indextext{initialization!runtime}% +If constant initialization is not performed, a variable with static +storage duration\iref{basic.stc.static} or thread storage +duration\iref{basic.stc.thread} is zero-initialized\iref{dcl.init}. +Together, zero-initialization and constant initialization are called +\indextext{initialization!dynamic}% +\defn{static initialization}; +all other initialization is \defn{dynamic initialization}. +All static initialization strongly happens before\iref{intro.races} +any dynamic initialization. +\begin{note} The dynamic initialization of non-local variables is described +in~\ref{basic.start.dynamic}; that of local static variables is described +in~\ref{stmt.dcl}. \end{note} + +\pnum +An implementation is permitted to perform the initialization of a +variable with static or thread storage duration as a static +initialization even if such initialization is not required to be done +statically, provided that +\begin{itemize} +\item +the dynamic version of the initialization does not change the +value of any other object of static or thread storage duration +prior to its initialization, and + +\item +the static version of the initialization produces the same value +in the initialized variable as would be produced by the dynamic +initialization if all variables not required to be initialized statically +were initialized dynamically. +\end{itemize} \begin{note} -A glvalue may have complete or incomplete non-\tcode{void} type. -Class and array prvalues can have cv-qualified types; other prvalues -always have cv-unqualified types. See \ref{expr}. +As a consequence, if the initialization of an object \tcode{obj1} refers to an +object \tcode{obj2} of namespace scope potentially requiring dynamic initialization and defined +later in the same translation unit, it is unspecified whether the value of \tcode{obj2} used +will be the value of the fully initialized \tcode{obj2} (because \tcode{obj2} was statically +initialized) or will be the value of \tcode{obj2} merely zero-initialized. For example, +\begin{codeblock} +inline double fd() { return 1.0; } +extern double d1; +double d2 = d1; // unspecified: + // may be statically initialized to \tcode{0.0} or + // dynamically initialized to \tcode{0.0} if \tcode{d1} is + // dynamically initialized, or \tcode{1.0} otherwise +double d1 = fd(); // may be initialized statically or dynamically to \tcode{1.0} +\end{codeblock} \end{note} -\pnum -An lvalue is \defn{modifiable} unless its type is const-qualified -or is a function type. +\rSec3[basic.start.dynamic]{Dynamic initialization of non-local variables} + +\pnum +\indextext{initialization!dynamic non-local}% +\indextext{start!program}% +\indextext{initialization!order of}% +Dynamic initialization of a non-local variable with static storage duration is +unordered if the variable is an implicitly or explicitly instantiated +specialization, is partially-ordered if the variable +is an inline variable that is not an implicitly or explicitly instantiated +specialization, and otherwise is ordered. +\begin{note} An explicitly specialized non-inline static data member or +variable template specialization has ordered initialization.\end{note} + +\pnum +Dynamic initialization of non-local variables \tcode{V} and \tcode{W} +with static storage duration are ordered as follows: +\begin{itemize} +\item +If \tcode{V} and \tcode{W} have +ordered initialization and \tcode{V} is defined before \tcode{W} within +a single translation unit, the initialization of \tcode{V} is sequenced +before the initialization of \tcode{W}. + +\item +If \tcode{V} has partially-ordered initialization, \tcode{W} does not have +unordered initialization, and \tcode{V} is defined before \tcode{W} in +every translation unit in which \tcode{W} is defined, then +\begin{itemize} +\item +if the program starts a thread\iref{intro.multithread} +other than the main thread\iref{basic.start.main}, +the initialization of \tcode{V} +strongly happens before +the initialization of \tcode{W}; +\item +otherwise, +the initialization of \tcode{V} +is sequenced before +the initialization of \tcode{W}. +\end{itemize} + +\item +Otherwise, if the program starts a thread +other than the main thread +before either \tcode{V} or \tcode{W} is initialized, +it is unspecified in which threads +the initializations of \tcode{V} and \tcode{W} occur; +the initializations are unsequenced if they occur in the same thread. + +\item +Otherwise, the initializations of \tcode{V} and \tcode{W} are indeterminately sequenced. +\end{itemize} \begin{note} -A program that attempts -to modify an object through a nonmodifiable lvalue expression or through an rvalue expression -is ill-formed~(\ref{expr.ass}, \ref{expr.post.incr}, \ref{expr.pre.incr}). +This definition permits initialization of a sequence of +ordered variables concurrently with another sequence. \end{note} \pnum -If a program attempts to access the stored value of an object through a glvalue -of other than one of the following types the behavior is -undefined:\footnote{The intent of this list is to specify those circumstances in which an -object may or may not be aliased.} -\begin{itemize} -\item the dynamic type of the object, - -\item a cv-qualified version of the dynamic type of the object, - -\item a type similar (as defined in~\ref{conv.qual}) to the dynamic type -of the object, +\indextext{non-initialization odr-use|see{odr-use, non-initialization}}% +A \defnx{non-initialization odr-use}{odr-use!non-initialization} +is an odr-use\iref{basic.def.odr} not caused directly or indirectly by +the initialization of a non-local static or thread storage duration variable. -\item a type that is the signed or unsigned type corresponding to the -dynamic type of the object, +\pnum +\indextext{evaluation!unspecified order of}% +It is \impldef{dynamic initialization of static variables before \tcode{main}} +whether the dynamic initialization of a +non-local non-inline variable with static storage duration +is sequenced before the first statement of \tcode{main} or is deferred. +If it is deferred, it strongly happens before +any non-initialization odr-use +of any non-inline function or non-inline variable +defined in the same translation unit as the variable to be initialized.% +\footnote{A non-local variable with static storage duration +having initialization +with side effects is initialized in this case, +even if it is not itself odr-used~(\ref{basic.def.odr}, \ref{basic.stc.static}).} +It is \impldef{threads and program points at which deferred dynamic initialization is performed} +in which threads and at which points in the program such deferred dynamic initialization occurs. +\begin{note} +Such points should be chosen in a way that allows the programmer to avoid deadlocks. +\end{note} +\begin{example} +\begin{codeblock} +// - File 1 - +#include "a.h" +#include "b.h" +B b; +A::A(){ + b.Use(); +} -\item a type that is the signed or unsigned type corresponding to a -cv-qualified version of the dynamic type of the object, +// - File 2 - +#include "a.h" +A a; -\item an aggregate or union type that includes one of the aforementioned types among its -elements or non-static data members (including, recursively, an element or non-static data member of a -subaggregate or contained union), +// - File 3 - +#include "a.h" +#include "b.h" +extern A a; +extern B b; -\item a type that is a (possibly cv-qualified) base class type of the dynamic type of -the object, +int main() { + a.Use(); + b.Use(); +} +\end{codeblock} -\item a \tcode{char}, \tcode{unsigned char}, or \tcode{std::byte} type. -\end{itemize} +It is \impldef{dynamic initialization of static variables before \tcode{main}} +whether either \tcode{a} or \tcode{b} is +initialized before \tcode{main} is entered or whether the +initializations are delayed until \tcode{a} is first odr-used in +\tcode{main}. In particular, if \tcode{a} is initialized before +\tcode{main} is entered, it is not guaranteed that \tcode{b} will be +initialized before it is odr-used by the initialization of \tcode{a}, that +is, before \tcode{A::A} is called. If, however, \tcode{a} is initialized +at some point after the first statement of \tcode{main}, \tcode{b} will +be initialized prior to its use in \tcode{A::A}. \end{example} -\rSec1[basic.align]{Alignment} +\pnum +It is \impldef{dynamic initialization of static inline variables before \tcode{main}} +whether the dynamic initialization of a +non-local inline variable with static storage duration +is sequenced before the first statement of \tcode{main} or is deferred. +If it is deferred, it strongly happens before +any non-initialization odr-use +of that variable. +It is \impldef{threads and program points at which deferred dynamic initialization is performed} +in which threads and at which points in the program such deferred dynamic initialization occurs. \pnum -Object types have \defnx{alignment requirements}{alignment requirement!implementation-defined}~(\ref{basic.fundamental}, \ref{basic.compound}) -which place restrictions on the addresses at which an object of that type -may be allocated. An \defn{alignment} is an \impldef{alignment} -integer value representing the number of bytes between successive addresses -at which a given object can be allocated. An object type imposes an alignment -requirement on every object of that type; stricter alignment can be requested -using the alignment specifier\iref{dcl.align}. +It is \impldef{dynamic initialization of thread-local variables before entry} +whether the dynamic initialization of a +non-local non-inline variable with thread storage duration +is sequenced before the first statement of the initial function of a thread or is deferred. +If it is deferred, +the initialization associated with the entity for thread \placeholder{t} +is sequenced before the first non-initialization odr-use by \placeholder{t} +of any non-inline variable with thread storage duration +defined in the same translation unit as the variable to be initialized. +It is \impldef{threads and program points at which deferred dynamic initialization is performed} +in which threads and at which points in the program such deferred dynamic initialization occurs. \pnum -\indextext{alignment!fundamental}% -A \defn{fundamental alignment} is represented by an alignment -less than or equal to the greatest alignment supported by the implementation in -all contexts, which is equal to -\tcode{alignof(std::max_align_t)}\iref{support.types}. -The alignment required for a type might be different when it is used as the type -of a complete object and when it is used as the type of a subobject. \begin{example} -\begin{codeblock} -struct B { long double d; }; -struct D : virtual B { char c; }; -\end{codeblock} +If the initialization of a non-local variable with static or thread storage duration +exits via +an exception, \tcode{std::terminate} is called\iref{except.terminate}.% +\indextext{program!start|)} -When \tcode{D} is the type of a complete object, it will have a subobject of -type \tcode{B}, so it must be aligned appropriately for a \tcode{long double}. -If \tcode{D} appears as a subobject of another object that also has \tcode{B} -as a virtual base class, the \tcode{B} subobject might be part of a different -subobject, reducing the alignment requirements on the \tcode{D} subobject. -\end{example} The result of the \tcode{alignof} operator reflects the alignment -requirement of the type in the complete-object case. +\rSec3[basic.start.term]{Termination} \pnum -\indextext{alignment!extended}% -\indextext{alignment!new-extended}% -\indextext{over-aligned type|see{type, over-aligned}}% -An \defn{extended alignment} is represented by an alignment -greater than \tcode{alignof(std::max_align_t)}. It is \impldef{support for extended alignments} -whether any extended alignments are supported and the contexts in which they are -supported\iref{dcl.align}. A type having an extended alignment -requirement is an \defnx{over-aligned type}{type!over-aligned}. \begin{note} -Every over-aligned type is or contains a class type -to which extended alignment applies (possibly through a non-static data member). +\indextext{program!termination|(}% +\indextext{object!destructor static}% +\indextext{\idxcode{main} function!return from}% +Destructors\iref{class.dtor} for initialized objects +(that is, objects whose lifetime\iref{basic.life} has begun) +with static storage duration, +and functions registered with \tcode{std::atexit}, +are called as part of a call to +\indextext{\idxcode{exit}}% +\indexlibrary{\idxcode{exit}}% +\tcode{std::exit}\iref{support.start.term}. +The call to \tcode{std::exit} is sequenced before +the invocations of the destructors and the registered functions. +\begin{note} +Returning from \tcode{main} invokes \tcode{std::exit}\iref{basic.start.main}. \end{note} -A \defn{new-extended alignment} is represented by -an alignment greater than \mname{STDCPP_DEFAULT_NEW_ALIGNMENT}\iref{cpp.predefined}. \pnum -Alignments are represented as values of the type \tcode{std::size_t}. -Valid alignments include only those values returned by an \tcode{alignof} -expression for the fundamental types plus an additional \impldef{alignment additional -values} -set of values, which may be empty. -Every alignment value shall be a non-negative integral power of two. +Destructors for initialized objects with thread storage duration within a given thread +are called as a result of returning from the initial function of that thread and as a +result of that thread calling \tcode{std::exit}. +The completions of the destructors for all initialized objects with thread storage +duration within that thread strongly happen before the initiation of the destructors of +any object with static storage duration. \pnum -Alignments have an order from \defnx{weaker}{alignment!weaker} to -\defnx{stronger}{alignment!stronger} or \defnx{stricter}{alignment!stricter} alignments. Stricter -alignments have larger alignment values. An address that satisfies an alignment -requirement also satisfies any weaker valid alignment requirement. +If the completion of the constructor or dynamic initialization of an object with static +storage duration strongly happens before that of another, the completion of the destructor +of the second is sequenced before the initiation of the destructor of the first. +If the completion of the constructor or dynamic initialization of an object with thread +storage duration is sequenced before that of another, the completion of the destructor +of the second is sequenced before the initiation of the destructor of the first. +If an object is +initialized statically, the object is destroyed in the same order as if +the object was dynamically initialized. For an object of array or class +type, all subobjects of that object are destroyed before any block-scope +object with static storage duration initialized during the construction +of the subobjects is destroyed. +If the destruction of an object with static or thread storage duration +exits via an exception, +\tcode{std::terminate} is called\iref{except.terminate}. \pnum -The alignment requirement of a complete type can be queried using an -\tcode{alignof} expression\iref{expr.alignof}. Furthermore, -the narrow character types\iref{basic.fundamental} shall have the weakest -alignment requirement. -\begin{note} This enables the narrow character types to be used as the -underlying type for an aligned memory area\iref{dcl.align}.\end{note} +If a function contains a block-scope object of static or thread storage duration that has been +destroyed and the function is called during the destruction of an object with static or +thread storage duration, the program has undefined behavior if the flow of control +passes through the definition of the previously destroyed block-scope object. Likewise, the +behavior is undefined if the block-scope object is used indirectly (i.e., through a +pointer) after its destruction. \pnum -Comparing alignments is meaningful and provides the obvious results: - -\begin{itemize} -\item Two alignments are equal when their numeric values are equal. -\item Two alignments are different when their numeric values are not equal. -\item When an alignment is larger than another it represents a stricter alignment. -\end{itemize} +\indextext{\idxcode{atexit}}% +\indexlibrary{\idxcode{atexit}}% +If the completion of the initialization of an object with static storage +duration strongly happens before a call to \tcode{std::atexit}~(see +\tcode{}, \ref{support.start.term}), the call to the function passed to +\tcode{std::atexit} is sequenced before the call to the destructor for the object. If a +call to \tcode{std::atexit} strongly happens before the completion of the initialization of +an object with static storage duration, the call to the destructor for the +object is sequenced before the call to the function passed to \tcode{std::atexit}. If a +call to \tcode{std::atexit} strongly happens before another call to \tcode{std::atexit}, the +call to the function passed to the second \tcode{std::atexit} call is sequenced before +the call to the function passed to the first \tcode{std::atexit} call. \pnum -\begin{note} The runtime pointer alignment function\iref{ptr.align} -can be used to obtain an aligned pointer within a buffer; the aligned-storage templates -in the library\iref{meta.trans.other} can be used to obtain aligned storage. -\end{note} +If there is a use of a standard library object or function not permitted within signal +handlers\iref{support.runtime} that does not happen before\iref{intro.multithread} +completion of destruction of objects with static storage duration and execution of +\tcode{std::atexit} registered functions\iref{support.start.term}, the program has +undefined behavior. \begin{note} If there is a use of an object with static storage +duration that does not happen before the object's destruction, the program has undefined +behavior. Terminating every thread before a call to \tcode{std::exit} or the exit from +\tcode{main} is sufficient, but not necessary, to satisfy these requirements. These +requirements permit thread managers as static-storage-duration objects. \end{note} \pnum -If a request for a specific extended alignment in a specific context is not -supported by an implementation, the program is ill-formed. +\indextext{\idxcode{abort}}% +\indexlibrary{\idxcode{abort}}% +\indextext{termination!program}% +Calling the function \tcode{std::abort()} declared in +\indextext{\idxhdr{cstdlib}}% +\tcode{} terminates the program without executing any destructors +and without calling +the functions passed to \tcode{std::atexit()} or \tcode{std::at_quick_exit()}.% +\indextext{program!termination|)} diff --git a/source/intro.tex b/source/intro.tex index 977344538f..b497e4df48 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -443,336 +443,7 @@ \indextext{conformance requirements!general|)}% \indextext{conformance requirements|)}% -\rSec1[intro.structure]{Structure of this document} - -\pnum -\indextext{standard!structure of|(}% -\indextext{standard!structure of}% -\ref{lex} through \ref{cpp} describe the \Cpp programming -language. That description includes detailed syntactic specifications in -a form described in~\ref{syntax}. For convenience, \ref{gram} -repeats all such syntactic specifications. - -\pnum -\ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr} -(the \defn{library clauses}) describe the \Cpp standard library. -That description includes detailed descriptions of the -entities and macros -that constitute the library, in a form described in \ref{library}. - -\pnum -\ref{implimits} recommends lower bounds on the capacity of conforming -implementations. - -\pnum -\ref{diff} summarizes the evolution of \Cpp since its first -published description, and explains in detail the differences between -\Cpp and C\@. Certain features of \Cpp exist solely for compatibility -purposes; \ref{depr} describes those features. - -\pnum -Throughout this document, each example is introduced by -``\noteintro{Example}'' and terminated by ``\noteoutro{example}''. Each note is -introduced by ``\noteintro{Note}'' and terminated by ``\noteoutro{note}''. Examples -and notes may be nested.% -\indextext{standard!structure of|)} - -\rSec1[syntax]{Syntax notation} - -\pnum -\indextext{notation!syntax|(}% -In the syntax notation used in this document, syntactic -categories are indicated by \grammarterm{italic} type, and literal words -and characters in \tcode{constant} \tcode{width} type. Alternatives are -listed on separate lines except in a few cases where a long set of -alternatives is marked by the phrase ``one of''. If the text of an alternative is too long to fit on a line, the text is continued on subsequent lines indented from the first one. -An optional terminal or non-terminal symbol is indicated by the subscript -``\opt'', so - -\begin{ncbnf} -\terminal{\{} expression\opt{} \terminal{\}} -\end{ncbnf} - -indicates an optional expression enclosed in braces.% - -\pnum -Names for syntactic categories have generally been chosen according to -the following rules: -\begin{itemize} -\item \grammarterm{X-name} is a use of an identifier in a context that -determines its meaning (e.g., \grammarterm{class-name}, -\grammarterm{typedef-name}). -\item \grammarterm{X-id} is an identifier with no context-dependent meaning -(e.g., \grammarterm{qualified-id}). -\item \grammarterm{X-seq} is one or more \grammarterm{X}'s without intervening -delimiters (e.g., \grammarterm{declaration-seq} is a sequence of -declarations). -\item \grammarterm{X-list} is one or more \grammarterm{X}'s separated by -intervening commas (e.g., \grammarterm{identifier-list} is a sequence of -identifiers separated by commas). -\end{itemize}% -\indextext{notation!syntax|)} - -\rSec1[intro.memory]{The \Cpp memory model} - -\pnum -\indextext{memory model|(}% -The fundamental storage unit in the \Cpp memory model is the -\defn{byte}. -A byte is at least large enough to contain any member of the basic -\indextext{character set!basic execution}% -execution character set\iref{lex.charset} -and the eight-bit code units of the Unicode UTF-8 encoding form -and is composed of a contiguous sequence of -bits,\footnote{The number of bits in a byte is reported by the macro -\tcode{CHAR_BIT} in the header \tcode{}.} -the number of which is \impldef{bits in a byte}. The least -significant bit is called the \defn{low-order bit}; the most -significant bit is called the \defn{high-order bit}. The memory -available to a \Cpp program consists of one or more sequences of -contiguous bytes. Every byte has a unique address. - -\pnum -\begin{note} The representation of types is described -in~\ref{basic.types}. \end{note} - -\pnum -A \defn{memory location} is either an object of scalar type or a maximal -sequence of adjacent bit-fields all having nonzero width. \begin{note} Various -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} Two or more threads of -execution\iref{intro.multithread} can access separate memory -locations without interfering with each other. - -\pnum -\begin{note} Thus a bit-field and an adjacent non-bit-field are in separate memory -locations, and therefore can be concurrently updated by two threads of execution -without interference. The same applies to two bit-fields, if one is declared -inside a nested struct declaration and the other is not, or if the two are -separated by a zero-length bit-field declaration, or if they are separated by a -non-bit-field declaration. It is not safe to concurrently update two bit-fields -in the same struct if all fields between them are also bit-fields of nonzero -width. \end{note} - -\pnum -\begin{example} A structure declared as - -\begin{codeblock} -struct { - char a; - int b:5, - c:11, - :0, - d:8; - struct {int ee:8;} e; -} -\end{codeblock} - -contains four separate memory locations: The member \tcode{a} and bit-fields -\tcode{d} and \tcode{e.ee} are each separate memory locations, and can be -modified concurrently without interfering with each other. The bit-fields -\tcode{b} and \tcode{c} together constitute the fourth memory location. The -bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but -\tcode{b} and \tcode{a}, for example, can be. \end{example}% -\indextext{memory model|)} - -\rSec1[intro.object]{The \Cpp object model} - -\pnum -\indextext{object model|(}% -The constructs in a \Cpp program create, destroy, refer to, access, and -manipulate objects. -An \defn{object} is created -by a definition\iref{basic.def}, -by a \grammarterm{new-expression}\iref{expr.new}, -when implicitly changing the active member of a union\iref{class.union}, -or -when a temporary object is created~(\ref{conv.rval}, \ref{class.temporary}). -An object occupies a region of storage -in its period of construction\iref{class.cdtor}, -throughout its lifetime\iref{basic.life}, -and -in its period of destruction\iref{class.cdtor}. -\begin{note} A function is not an object, regardless of whether or not it -occupies storage in the way that objects do. \end{note} -The properties of an -object are determined when the object is created. An object can have a -name\iref{basic}. An object has a storage -duration\iref{basic.stc} which influences its -lifetime\iref{basic.life}. An object has a -type\iref{basic.types}. -Some objects are -polymorphic\iref{class.virtual}; the implementation -generates information associated with each such object that makes it -possible to determine that object's type during program execution. For -other objects, the interpretation of the values found therein is -determined by the type of the \grammarterm{expression}{s}\iref{expr} -used to access them. - -\pnum -\indextext{subobject}% -Objects can contain other objects, called \defnx{subobjects}{subobject}. -A subobject can be -a \defn{member subobject}\iref{class.mem}, a \defn{base class subobject}\iref{class.derived}, -or an array element. -\indextext{object!complete}% -An object that is not a subobject of any other object is called a \defn{complete -object}. -If an object is created -in storage associated with a member subobject or array element \placeholder{e} -(which may or may not be within its lifetime), -the created object -is a subobject of \placeholder{e}'s containing object if: -\begin{itemize} -\item -the lifetime of \placeholder{e}'s containing object has begun and not ended, and -\item -the storage for the new object exactly overlays the storage location associated with \placeholder{e}, and -\item -the new object is of the same type as \placeholder{e} (ignoring cv-qualification). -\end{itemize} -\begin{note} -If the subobject contains a reference member or a \tcode{const} subobject, -the name of the original subobject cannot be used to access the new object\iref{basic.life}. -\end{note} -\begin{example} -\begin{codeblock} -struct X { const int n; }; -union U { X x; float f; }; -void tong() { - U u = {{ 1 }}; - u.f = 5.f; // OK, creates new subobject of \tcode{u}\iref{class.union} - X *p = new (&u.x) X {2}; // OK, creates new subobject of \tcode{u} - assert(p->n == 2); // OK - assert(*std::launder(&u.x.n) == 2); // OK - assert(u.x.n == 2); // undefined behavior, \tcode{u.x} does not name new subobject -} -\end{codeblock} -\end{example} - -\pnum -\indextext{object!providing storage for}% -If a complete object is created\iref{expr.new} -in storage associated with another object \placeholder{e} -of type ``array of $N$ \tcode{unsigned char}'' or -of type ``array of $N$ \tcode{std::byte}''\iref{cstddef.syn}, -that array \defn{provides storage} -for the created object if: -\begin{itemize} -\item -the lifetime of \placeholder{e} has begun and not ended, and -\item -the storage for the new object fits entirely within \placeholder{e}, and -\item -there is no smaller array object that satisfies these constraints. -\end{itemize} -\begin{note} -If that portion of the array -previously provided storage for another object, -the lifetime of that object ends -because its storage was reused\iref{basic.life}. -\end{note} -\begin{example} -\begin{codeblock} -template -struct AlignedUnion { - alignas(T...) unsigned char data[max(sizeof(T)...)]; -}; -int f() { - AlignedUnion au; - int *p = new (au.data) int; // OK, \tcode{au.data} provides storage - char *c = new (au.data) char(); // OK, ends lifetime of \tcode{*p} - char *d = new (au.data + 1) char(); - return *c + *d; // OK -} - -struct A { unsigned char a[32]; }; -struct B { unsigned char b[16]; }; -A a; -B *b = new (a.a + 8) B; // \tcode{a.a} provides storage for \tcode{*b} -int *p = new (b->b + 4) int; // \tcode{b->b} provides storage for \tcode{*p} - // \tcode{a.a} does not provide storage for \tcode{*p} (directly), - // but \tcode{*p} is nested within \tcode{a} (see below) -\end{codeblock} -\end{example} - -\pnum -\indextext{object!nested within}% -An object \placeholder{a} is \defn{nested within} another object \placeholder{b} if: -\begin{itemize} -\item -\placeholder{a} is a subobject of \placeholder{b}, or -\item -\placeholder{b} provides storage for \placeholder{a}, or -\item -there exists an object \placeholder{c} -where \placeholder{a} is nested within \placeholder{c}, -and \placeholder{c} is nested within \placeholder{b}. -\end{itemize} - -\pnum -For every object \tcode{x}, there is some object called the -\defn{complete object of} \tcode{x}, determined as follows: -\begin{itemize} -\item -If \tcode{x} is a complete object, then the complete object -of \tcode{x} is itself. - -\item -Otherwise, the complete object of \tcode{x} is the complete object -of the (unique) object that contains \tcode{x}. -\end{itemize} - -\pnum -If a complete object, a data member\iref{class.mem}, or an array element is of -class type, its type is considered the \defn{most derived -class}, to distinguish it from the class type of any base class subobject; -an object of a most derived class type or of a non-class type is called a -\defn{most derived object}. - -\pnum -\indextext{most derived object!bit-field}% -Unless it is a bit-field\iref{class.bit}, a most derived object shall have a -nonzero size and shall occupy one or more bytes of storage. Base class -subobjects may have zero size. An object of trivially copyable or -standard-layout type\iref{basic.types} shall occupy contiguous bytes of -storage. - -\pnum -\indextext{most derived object!bit-field}% -\indextext{most derived object!zero size subobject}% -Unless an object is a bit-field or a base class subobject of zero size, the -address of that object is the address of the first byte it occupies. -Two objects \placeholder{a} and \placeholder{b} -with overlapping lifetimes -that are not bit-fields -may have the same address -if one is nested within the other, -or -if at least one is a base class subobject of zero size -and they are of different types; -otherwise, they have distinct addresses.\footnote{Under the ``as-if'' rule an -implementation is allowed to store two objects at the same machine address or -not store an object at all if the program cannot observe the -difference\iref{intro.execution}.} - -\begin{example} -\begin{codeblock} -static const char test1 = 'x'; -static const char test2 = 'x'; -const bool b = &test1 != &test2; // always \tcode{true} -\end{codeblock} -\end{example} - -\pnum -\begin{note} -\Cpp provides a variety of fundamental types and several ways of composing -new types from existing types\iref{basic.types}. -\end{note}% -\indextext{object model|)} - -\rSec1[intro.execution]{Program execution} +\rSec2[intro.abstract]{Abstract machine} \pnum \indextext{program execution|(}% @@ -840,13 +511,6 @@ (not even with regard to operations preceding the first undefined operation). -\pnum -An instance of each object with automatic storage -duration\iref{basic.stc.auto} is associated with each entry into its -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 or receipt of a signal). - \indextext{conformance requirements} \pnum The least requirements on a conforming implementation are: @@ -914,826 +578,77 @@ rewritten by the implementation in any of the above ways because the same result will occur. \end{note} -\pnum -A \defn{constituent expression} is defined as follows: -\begin{itemize} -\item -The constituent expression of an expression is that expression. -\item -The constituent expressions of a \grammarterm{braced-init-list} or -of a (possibly parenthesized) \grammarterm{expression-list} -are the constituent expressions of the elements of the respective list. -\item -The constituent expressions of a \grammarterm{brace-or-equal-initializer} -of the form \tcode{=}~\grammarterm{initializer-clause} -are the constituent expressions of the \grammarterm{initializer-clause}. -\end{itemize} -\begin{example} -\begin{codeblock} -struct A { int x; }; -struct B { int y; struct A a; }; -B b = { 5, { 1+1 } }; -\end{codeblock} -The constituent expressions of the \grammarterm{initializer} -used for the initialization of \tcode{b} are \tcode{5} and \tcode{1+1}. -\end{example} - -\pnum -The \defnx{immediate subexpressions}{immediate subexpression} of an expression \tcode{e} are -\begin{itemize} -\item -the constituent expressions of \tcode{e}'s operands\iref{expr}, -\item -any function call that \tcode{e} implicitly invokes, -\item -if \tcode{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 \tcode{e} is a function call\iref{expr.call} or implicitly invokes a function, -the constituent expressions of each default argument\iref{dcl.fct.default} -used in the call, or -\item -if \tcode{e} creates an aggregate object\iref{dcl.init.aggr}, -the constituent expressions of each default member initializer\iref{class.mem} -used in the initialization. -\end{itemize} - -\pnum -A \defn{subexpression} of an expression \tcode{e} is -an immediate subexpression of \tcode{e} or -a subexpression of an immediate subexpression of \tcode{e}. -\begin{note} -Expressions appearing in the \grammarterm{compound-statement} of a \grammarterm{lambda-expression} -are not subexpressions of the \grammarterm{lambda-expression}. -\end{note} - -\pnum -A \defn{full-expression} is -\begin{itemize} -\item -an unevaluated operand\iref{expr}, -\item -a \grammarterm{constant-expression}\iref{expr.const}, -\item -an \grammarterm{init-declarator}\iref{dcl.decl} or -a \grammarterm{mem-initializer}\iref{class.base.init}, -including the constituent expressions of the initializer, -\item -an invocation of a destructor generated at the end of the lifetime -of an object other than a temporary object\iref{class.temporary}, or -\item -an expression that is not a subexpression of another expression and -that is not otherwise part of a full-expression. -\end{itemize} -If a language construct is defined to produce an implicit call of a function, -a use of the language construct is considered to be an expression -for the purposes of this definition. -Conversions applied to the result of an expression in order to satisfy the requirements -of the language construct in which the expression appears -are also considered to be part of the full-expression. -For an initializer, performing the initialization of the entity -(including evaluating default member initializers of an aggregate) -is also considered part of the full-expression. -\begin{example} -\begin{codeblock} -struct S { - S(int i): I(i) { } // full-expression is initialization of \tcode{I} - int& v() { return I; } - ~S() noexcept(false) { } -private: - int I; -}; - -S s1(1); // full-expression is call of \tcode{S::S(int)} -void f() { - S s2 = 2; // full-expression is call of \tcode{S::S(int)} - if (S(3).v()) // full-expression includes lvalue-to-rvalue and - // \tcode{int} to \tcode{bool} conversions, performed before - // temporary is deleted at end of full-expression - { } - bool b = noexcept(S()); // exception specification of destructor of \tcode{S} - // considered for \tcode{noexcept} - // full-expression is destruction of \tcode{s2} at end of block -} -struct B { - B(S = S(0)); -}; -B b[2] = { B(), B() }; // full-expression is the entire initialization - // including the destruction of temporaries -\end{codeblock} -\end{example} - -\pnum -\begin{note} The evaluation of a full-expression can include the -evaluation of subexpressions that are not lexically part of the -full-expression. For example, subexpressions involved in evaluating -default arguments\iref{dcl.fct.default} are considered to -be created in the expression that calls the function, not the expression -that defines the default argument. \end{note} - -\pnum -\indextext{value computation|(}% -Reading an object designated by a \tcode{volatile} -glvalue\iref{basic.lval}, modifying an object, calling a library I/O -function, or calling a function that does any of those operations are -all -\defn{side effects}, which are changes in the state of the execution -environment. \defnx{Evaluation}{evaluation} of an expression (or a -subexpression) in general includes both value computations (including -determining the identity of an object for glvalue evaluation and fetching -a value previously assigned to an object for prvalue evaluation) and -initiation of side effects. When a call to a library I/O function -returns or an access through a volatile glvalue is evaluated the side -effect is considered complete, even though some external actions implied -by the call (such as the I/O itself) or by the \tcode{volatile} access -may not have completed yet. - -\pnum -\defnx{Sequenced before}{sequenced before} is an asymmetric, transitive, pair-wise relation between -evaluations executed by a single thread\iref{intro.multithread}, which induces -a partial order among those evaluations. Given any two evaluations \placeholder{A} and -\placeholder{B}, if \placeholder{A} is sequenced before \placeholder{B} -(or, equivalently, \placeholder{B} is \defn{sequenced after} \placeholder{A}), -then the execution of -\placeholder{A} shall precede the execution of \placeholder{B}. If \placeholder{A} is not sequenced -before \placeholder{B} and \placeholder{B} is not sequenced before \placeholder{A}, then \placeholder{A} and -\placeholder{B} are \defn{unsequenced}. \begin{note} The execution of unsequenced -evaluations can overlap. \end{note} Evaluations \placeholder{A} and \placeholder{B} are -\defn{indeterminately sequenced} when either \placeholder{A} is sequenced before -\placeholder{B} or \placeholder{B} is sequenced before \placeholder{A}, but it is unspecified which. -\begin{note} Indeterminately sequenced evaluations cannot overlap, but either -could be executed first. \end{note} -An expression \placeholder{X} -is said to be sequenced before -an expression \placeholder{Y} if -every value computation and every side effect -associated with the expression \placeholder{X} -is sequenced before -every value computation and every side effect -associated with the expression \placeholder{Y}. - -\pnum -Every -\indextext{value computation}% -value computation and -\indextext{side effects}% -side effect associated with a full-expression is -sequenced before every value computation and side effect associated with the -next full-expression to be evaluated.\footnote{As specified -in~\ref{class.temporary}, after a full-expression is evaluated, a sequence of -zero or more invocations of destructor functions for temporary objects takes -place, usually in reverse order of the construction of each temporary object.} - -\pnum -\indextext{evaluation!unspecified order of}% -Except where noted, evaluations of operands of individual operators and -of subexpressions of individual expressions are unsequenced. \begin{note} -In an expression that is evaluated more than once during the execution -of a program, unsequenced and indeterminately sequenced evaluations of -its subexpressions need not be performed consistently in different -evaluations. \end{note} The value computations of the operands of an -operator are sequenced before the value computation of the result of the -operator. If a -\indextext{side effects}% -side effect on a memory location\iref{intro.memory} is unsequenced -relative to either another side effect on the same memory location or -a value computation using the value of any object in the same memory location, -and they are not potentially concurrent\iref{intro.multithread}, -the behavior is undefined. -\begin{note} -The next section imposes similar, but more complex restrictions on -potentially concurrent computations. -\end{note} - -\begin{example} - -\begin{codeblock} -void g(int i) { - i = 7, i++, i++; // \tcode{i} becomes \tcode{9} - - i = i++ + 1; // the value of \tcode{i} is incremented - i = i++ + i; // the behavior is undefined - i = i + 1; // the value of \tcode{i} is incremented -} -\end{codeblock} -\end{example} - -\pnum -When calling a function (whether or not the function is inline), every -\indextext{value computation}% -value computation and -\indextext{side effects}% -side effect associated with any argument -expression, or with the postfix expression designating the called -function, is sequenced before execution of every expression or statement -in the body of the called function. -For each function invocation \placeholder{F}, -for every evaluation \placeholder{A} that occurs within \placeholder{F} and -every evaluation \placeholder{B} that does not occur within \placeholder{F} but -is evaluated on the same thread and as part of the same signal handler (if any), -either \placeholder{A} is sequenced before \placeholder{B} or -\placeholder{B} is sequenced before \placeholder{A}.\footnote{In other words, -function executions do not interleave with each other.} -\begin{note} -If \placeholder{A} and \placeholder{B} would not otherwise be sequenced then they are -indeterminately sequenced. -\end{note} -Several contexts in \Cpp cause evaluation of a function call, even -though no corresponding function call syntax appears in the translation -unit. -\begin{example} -Evaluation of a \grammarterm{new-expression} invokes one or more allocation -and constructor functions; see~\ref{expr.new}. For another example, -invocation of a conversion function\iref{class.conv.fct} can arise in -contexts in which no function call syntax appears. -\end{example} -The sequencing constraints on the execution of the called function (as -described above) are features of the function calls as evaluated, -whatever the syntax of the expression that calls the function might be.% -\indextext{value computation|)}% - -\indextext{behavior!on receipt of signal}% -\indextext{signal}% -\pnum -If a signal handler is executed as a result of a call to the \tcode{std::raise} -function, then the execution of the handler is sequenced after the invocation -of the \tcode{std::raise} function and before its return. -\begin{note} When a signal is received for another reason, the execution of the -signal handler is usually unsequenced with respect to the rest of the program. -\end{note} -\indextext{program execution|)} - -\rSec1[intro.multithread]{Multi-threaded executions and data races} - -\pnum -\indextext{threads!multiple|(}% -\indextext{operation!atomic|(}% -A \defn{thread of execution} (also known as a \defn{thread}) is a single flow of -control within a program, including the initial invocation of a specific -top-level function, and recursively including every function invocation -subsequently executed by the thread. \begin{note} When one thread creates another, -the initial call to the top-level function of the new thread is executed by the -new thread, not by the creating thread. \end{note} Every thread in a program can -potentially access every object and function in a program.\footnote{An object -with automatic or thread storage duration\iref{basic.stc} is associated with -one specific thread, and can be accessed by a different thread only indirectly -through a pointer or reference\iref{basic.compound}.} Under a hosted -implementation, a \Cpp program can have more than one thread running -concurrently. The execution of each thread proceeds as defined by the remainder -of this document. The execution of the entire program consists of an execution -of all of its threads. \begin{note} Usually the execution can be viewed as an -interleaving of all its threads. However, some kinds of atomic operations, for -example, allow executions inconsistent with a simple interleaving, as described -below. \end{note} Under a freestanding implementation, it is \impldef{number of -threads in a program under a freestanding implementation} whether a program can -have more than one thread of execution. - -\pnum -For a signal handler that is not executed as a result of a call to the -\tcode{std::raise} function, it is unspecified which thread of execution -contains the signal handler invocation. - -\rSec2[intro.races]{Data races} - -\pnum -The value of an object visible to a thread \placeholder{T} at a particular point is the -initial value of the object, a value assigned to the object by \placeholder{T}, or a -value assigned to the object by another thread, according to the rules below. -\begin{note} In some cases, there may instead be undefined behavior. Much of this -section is motivated by the desire to support atomic operations with explicit -and detailed visibility constraints. However, it also implicitly supports a -simpler view for more restricted programs. \end{note} - -\pnum -Two expression evaluations \defn{conflict} if one of them modifies a memory -location\iref{intro.memory} and the other one reads or modifies the same -memory location. - -\pnum -The library defines a number of atomic operations\iref{atomics} and -operations on mutexes\iref{thread} that are specially identified as -synchronization operations. These operations play a special role in making -assignments in one thread visible to another. A synchronization operation on one -or more memory locations is either a consume operation, an acquire operation, a -release operation, or both an acquire and release operation. A synchronization -operation without an associated memory location is a fence and can be either an -acquire fence, a release fence, or both an acquire and release fence. In -addition, there are relaxed atomic operations, which are not synchronization -operations, and atomic read-modify-write operations, which have special -characteristics. \begin{note} For example, a call that acquires a mutex will -perform an acquire operation on the locations comprising the mutex. -Correspondingly, a call that releases the same mutex will perform a release -operation on those same locations. Informally, performing a release operation on -\placeholder{A} forces prior -\indextext{side effects}% -side effects on other memory locations to become visible -to other threads that later perform a consume or an acquire operation on -\placeholder{A}. ``Relaxed'' atomic operations are not synchronization operations even -though, like synchronization operations, they cannot contribute to data races. -\end{note} - -\pnum -All modifications to a particular atomic object \placeholder{M} occur in some -particular total order, called the \defn{modification order} of \placeholder{M}. -\begin{note} There is a separate order for each -atomic object. There is no requirement that these can be combined into a single -total order for all objects. In general this will be impossible since different -threads may observe modifications to different objects in inconsistent orders. -\end{note} - -\pnum -A \defn{release sequence} headed by a release operation \placeholder{A} on an atomic object -\placeholder{M} is a maximal contiguous sub-sequence of -\indextext{side effects}% -side effects in the -modification order of \placeholder{M}, where the first operation is \tcode{A}, and -every subsequent operation - -\begin{itemize} -\item is performed by the same thread that performed \tcode{A}, or -\item is an atomic read-modify-write operation. -\end{itemize} - -\pnum -Certain library calls \defn{synchronize with} other library calls performed by -another thread. For example, an atomic store-release synchronizes with a -load-acquire that takes its value from the store\iref{atomics.order}. -\begin{note} Except in the specified cases, reading a later value does not -necessarily ensure visibility as described below. Such a requirement would -sometimes interfere with efficient implementation. \end{note} \begin{note} The -specifications of the synchronization operations define when one reads the value -written by another. For atomic objects, the definition is clear. All operations -on a given mutex occur in a single total order. Each mutex acquisition ``reads -the value written'' by the last mutex release. \end{note} - -\pnum -An evaluation \placeholder{A} \defn{carries a dependency} to an evaluation \placeholder{B} if - -\begin{itemize} -\item -the value of \placeholder{A} is used as an operand of \placeholder{B}, unless: -\begin{itemize} -\item -\placeholder{B} is an invocation of any specialization of -\tcode{std::kill_dependency}\iref{atomics.order}, or -\item -\placeholder{A} is the left operand of a built-in logical AND (\tcode{\&\&}, -see~\ref{expr.log.and}) or logical OR (\tcode{||}, see~\ref{expr.log.or}) -operator, or -\item -\placeholder{A} is the left operand of a conditional (\tcode{?:}, see~\ref{expr.cond}) -operator, or -\item -\placeholder{A} is the left operand of the built-in comma (\tcode{,}) -operator\iref{expr.comma}; \end{itemize} or -\item -\placeholder{A} writes a scalar object or bit-field \placeholder{M}, \placeholder{B} reads the value -written by \placeholder{A} from \placeholder{M}, and \placeholder{A} is sequenced before \placeholder{B}, or -\item -for some evaluation \placeholder{X}, \placeholder{A} carries a dependency to \placeholder{X}, and -\placeholder{X} carries a dependency to \placeholder{B}. -\end{itemize} -\begin{note} ``Carries a dependency to'' is a subset of ``is sequenced before'', -and is similarly strictly intra-thread. \end{note} - -\pnum -An evaluation \placeholder{A} is \defn{dependency-ordered before} an evaluation -\placeholder{B} if -\begin{itemize} -\item -\placeholder{A} performs a release operation on an atomic object \placeholder{M}, and, in -another thread, \placeholder{B} performs a consume operation on \placeholder{M} and reads a -value written by any -\indextext{side effects}% -side effect in the release sequence headed by \placeholder{A}, or - -\item -for some evaluation \placeholder{X}, \placeholder{A} is dependency-ordered before \placeholder{X} and -\placeholder{X} carries a dependency to \placeholder{B}. - -\end{itemize} -\begin{note} The relation ``is dependency-ordered before'' is analogous to -``synchronizes with'', but uses release/consume in place of release/acquire. -\end{note} - -\pnum -An evaluation \placeholder{A} \defn{inter-thread happens before} an evaluation \placeholder{B} -if -\begin{itemize} -\item - \placeholder{A} synchronizes with \placeholder{B}, or -\item - \placeholder{A} is dependency-ordered before \placeholder{B}, or -\item - for some evaluation \placeholder{X} - \begin{itemize} - \item - \placeholder{A} synchronizes with \placeholder{X} and \placeholder{X} - is sequenced before \placeholder{B}, or - \item - \placeholder{A} is sequenced before \placeholder{X} and \placeholder{X} - inter-thread happens before \placeholder{B}, or - \item - \placeholder{A} inter-thread happens before \placeholder{X} and \placeholder{X} - inter-thread happens before \placeholder{B}. - \end{itemize} -\end{itemize} -\begin{note} The ``inter-thread happens before'' relation describes arbitrary -concatenations of ``sequenced before'', ``synchronizes with'' and -``dependency-ordered before'' relationships, with two exceptions. The first -exception is that a concatenation is not permitted to end with -``dependency-ordered before'' followed by ``sequenced before''. The reason for -this limitation is that a consume operation participating in a -``dependency-ordered before'' relationship provides ordering only with respect -to operations to which this consume operation actually carries a dependency. The -reason that this limitation applies only to the end of such a concatenation is -that any subsequent release operation will provide the required ordering for a -prior consume operation. The second exception is that a concatenation is not -permitted to consist entirely of ``sequenced before''. The reasons for this -limitation are (1) to permit ``inter-thread happens before'' to be transitively -closed and (2) the ``happens before'' relation, defined below, provides for -relationships consisting entirely of ``sequenced before''. \end{note} - -\pnum -An evaluation \placeholder{A} \defn{happens before} an evaluation \placeholder{B} -(or, equivalently, \placeholder{B} \defn{happens after} \placeholder{A}) if: -\begin{itemize} -\item \placeholder{A} is sequenced before \placeholder{B}, or -\item \placeholder{A} inter-thread happens before \placeholder{B}. -\end{itemize} -The implementation shall ensure that no program execution demonstrates a cycle -in the ``happens before'' relation. \begin{note} This cycle would otherwise be -possible only through the use of consume operations. \end{note} - -\pnum -An evaluation \placeholder{A} \defn{strongly happens before} an evaluation \placeholder{B} -if either -\begin{itemize} -\item \placeholder{A} is sequenced before \placeholder{B}, or -\item \placeholder{A} synchronizes with \placeholder{B}, or -\item \placeholder{A} strongly happens before \placeholder{X} and \placeholder{X} strongly happens before \placeholder{B}. -\end{itemize} -\begin{note} -In the absence of consume operations, -the happens before and strongly happens before relations are identical. -Strongly happens before essentially excludes consume operations. -\end{note} - -\pnum -A \defnx{visible side effect}{side effects!visible} \placeholder{A} on a scalar object or bit-field \placeholder{M} -with respect to a value computation \placeholder{B} of \placeholder{M} satisfies the -conditions: -\begin{itemize} -\item \placeholder{A} happens before \placeholder{B} and -\item there is no other -\indextext{side effects}% -side effect \placeholder{X} to \placeholder{M} such that \placeholder{A} -happens before \placeholder{X} and \placeholder{X} happens before \placeholder{B}. -\end{itemize} - -The value of a non-atomic scalar object or bit-field \placeholder{M}, as determined by -evaluation \placeholder{B}, shall be the value stored by the -\indextext{side effects!visible}% -visible side effect -\placeholder{A}. \begin{note} If there is ambiguity about which side effect to a -non-atomic object or bit-field is visible, then the behavior is either -unspecified or undefined. \end{note} \begin{note} This states that operations on -ordinary objects are not visibly reordered. This is not actually detectable -without data races, but it is necessary to ensure that data races, as defined -below, and with suitable restrictions on the use of atomics, correspond to data -races in a simple interleaved (sequentially consistent) execution. \end{note} -\pnum -The value of an -atomic object \placeholder{M}, as determined by evaluation \placeholder{B}, shall be the value -stored by some -side effect \placeholder{A} that modifies \placeholder{M}, where \placeholder{B} does not happen -before \placeholder{A}. -\begin{note} -The set of such side effects is also restricted by the rest of the rules -described here, and in particular, by the coherence requirements below. -\end{note} -\pnum -\indextext{coherence!write-write}% -If an operation \placeholder{A} that modifies an atomic object \placeholder{M} happens before -an operation \placeholder{B} that modifies \placeholder{M}, then \placeholder{A} shall be earlier -than \placeholder{B} in the modification order of \placeholder{M}. \begin{note} This requirement -is known as write-write coherence. \end{note} - -\pnum -\indextext{coherence!read-read}% -If a -\indextext{value computation}% -value computation \placeholder{A} of an atomic object \placeholder{M} happens before a -value computation \placeholder{B} of \placeholder{M}, and \placeholder{A} takes its value from a side -effect \placeholder{X} on \placeholder{M}, then the value computed by \placeholder{B} shall either be -the value stored by \placeholder{X} or the value stored by a -\indextext{side effects}% -side effect \placeholder{Y} on -\placeholder{M}, where \placeholder{Y} follows \placeholder{X} in the modification order of \placeholder{M}. -\begin{note} This requirement is known as read-read coherence. \end{note} - -\pnum -\indextext{coherence!read-write}% -If a -\indextext{value computation}% -value computation \placeholder{A} of an atomic object \placeholder{M} happens before an -operation \placeholder{B} that modifies \placeholder{M}, then \placeholder{A} shall take its value from a side -effect \placeholder{X} on \placeholder{M}, where \placeholder{X} precedes \placeholder{B} in the -modification order of \placeholder{M}. \begin{note} This requirement is known as -read-write coherence. \end{note} +\rSec1[intro.structure]{Structure of this document} \pnum -\indextext{coherence!write-read}% -If a -\indextext{side effects}% -side effect \placeholder{X} on an atomic object \placeholder{M} happens before a value -computation \placeholder{B} of \placeholder{M}, then the evaluation \placeholder{B} shall take its -value from \placeholder{X} or from a -\indextext{side effects}% -side effect \placeholder{Y} that follows \placeholder{X} in the -modification order of \placeholder{M}. \begin{note} This requirement is known as -write-read coherence. \end{note} +\indextext{standard!structure of|(}% +\indextext{standard!structure of}% +\ref{lex} through \ref{cpp} describe the \Cpp programming +language. That description includes detailed syntactic specifications in +a form described in~\ref{syntax}. For convenience, \ref{gram} +repeats all such syntactic specifications. \pnum -\begin{note} The four preceding coherence requirements effectively disallow -compiler reordering of atomic operations to a single object, even if both -operations are relaxed loads. This effectively makes the cache coherence -guarantee provided by most hardware available to \Cpp atomic operations. -\end{note} +\ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr} +(the \defn{library clauses}) describe the \Cpp standard library. +That description includes detailed descriptions of the +entities and macros +that constitute the library, in a form described in \ref{library}. \pnum -\begin{note} The value observed by a load of an atomic depends on the ``happens -before'' relation, which depends on the values observed by loads of atomics. -The intended reading is that there must exist an -association of atomic loads with modifications they observe that, together with -suitably chosen modification orders and the ``happens before'' relation derived -as described above, satisfy the resulting constraints as imposed here. \end{note} +\ref{implimits} recommends lower bounds on the capacity of conforming +implementations. \pnum -Two actions are \defn{potentially concurrent} if -\begin{itemize} -\item they are performed by different threads, or -\item they are unsequenced, at least one is performed by a signal handler, and -they are not both performed by the same signal handler invocation. -\end{itemize} -The execution of a program contains a \defn{data race} if it contains two -potentially concurrent conflicting actions, at least one of which is not atomic, -and neither happens before the other, -except for the special case for signal handlers described below. -Any such data race results in undefined -behavior. \begin{note} It can be shown that programs that correctly use mutexes -and \tcode{memory_order_seq_cst} operations to prevent all data races and use no -other synchronization operations behave as if the operations executed by their -constituent threads were simply interleaved, with each -\indextext{value computation}% -value computation of an -object being taken from the last -\indextext{side effects}% -side effect on that object in that -interleaving. This is normally referred to as ``sequential consistency''. -However, this applies only to data-race-free programs, and data-race-free -programs cannot observe most program transformations that do not change -single-threaded program semantics. In fact, most single-threaded program -transformations continue to be allowed, since any program that behaves -differently as a result must perform an undefined operation. \end{note} +\ref{diff} summarizes the evolution of \Cpp since its first +published description, and explains in detail the differences between +\Cpp and C\@. Certain features of \Cpp exist solely for compatibility +purposes; \ref{depr} describes those features. \pnum -Two accesses to the same object of type \tcode{volatile std::sig_atomic_t} do not -result in a data race if both occur in the same thread, even if one or more -occurs in a signal handler. For each signal handler invocation, evaluations -performed by the thread invoking a signal handler can be divided into two -groups \placeholder{A} and \placeholder{B}, such that no evaluations in -\placeholder{B} happen before evaluations in \placeholder{A}, and the -evaluations of such \tcode{volatile std::sig_atomic_t} objects take values as though -all evaluations in \placeholder{A} happened before the execution of the signal -handler and the execution of the signal handler happened before all evaluations -in \placeholder{B}. +Throughout this document, each example is introduced by +``\noteintro{Example}'' and terminated by ``\noteoutro{example}''. Each note is +introduced by ``\noteintro{Note}'' and terminated by ``\noteoutro{note}''. Examples +and notes may be nested.% +\indextext{standard!structure of|)} -\pnum -\begin{note} Compiler transformations that introduce assignments to a potentially -shared memory location that would not be modified by the abstract machine are -generally precluded by this document, since such an assignment might overwrite -another assignment by a different thread in cases in which an abstract machine -execution would not have encountered a data race. This includes implementations -of data member assignment that overwrite adjacent members in separate memory -locations. Reordering of atomic loads in cases in which the atomics in question -may alias is also generally precluded, since this may violate the coherence -rules. \end{note} +\rSec1[syntax]{Syntax notation} \pnum -\begin{note} Transformations that introduce a speculative read of a potentially -shared memory location may not preserve the semantics of the \Cpp program as -defined in this document, since they potentially introduce a data race. However, -they are typically valid in the context of an optimizing compiler that targets a -specific machine with well-defined semantics for data races. They would be -invalid for a hypothetical machine that is not tolerant of races or provides -hardware race detection. \end{note} - -\rSec2[intro.progress]{Forward progress} +\indextext{notation!syntax|(}% +In the syntax notation used in this document, syntactic +categories are indicated by \grammarterm{italic} type, and literal words +and characters in \tcode{constant} \tcode{width} type. Alternatives are +listed on separate lines except in a few cases where a long set of +alternatives is marked by the phrase ``one of''. If the text of an alternative is too long to fit on a line, the text is continued on subsequent lines indented from the first one. +An optional terminal or non-terminal symbol is indicated by the subscript +``\opt'', so -\pnum -The implementation may assume that any thread will eventually do one of the -following: -\begin{itemize} -\item terminate, -\item make a call to a library I/O function, -\item perform an access through a volatile glvalue, or -\item perform a synchronization operation or an atomic operation. -\end{itemize} -\begin{note} This is intended to allow compiler transformations such as removal of -empty loops, even when termination cannot be proven. \end{note} +\begin{ncbnf} +\terminal{\{} expression\opt{} \terminal{\}} +\end{ncbnf} -\pnum -Executions of atomic functions -that are either defined to be lock-free\iref{atomics.flag} -or indicated as lock-free\iref{atomics.lockfree} -are \defnx{lock-free executions}{lock-free execution}. -\begin{itemize} -\item - If there is only one thread that is not blocked\iref{defns.block} - in a standard library function, - a lock-free execution in that thread shall complete. - \begin{note} - Concurrently executing threads - may prevent progress of a lock-free execution. - For example, - this situation can occur - with load-locked store-conditional implementations. - This property is sometimes termed obstruction-free. - \end{note} -\item - When one or more lock-free executions run concurrently, - at least one should complete. - \begin{note} - It is difficult for some implementations - to provide absolute guarantees to this effect, - since repeated and particularly inopportune interference - from other threads - may prevent forward progress, - e.g., - by repeatedly stealing a cache line - for unrelated purposes - between load-locked and store-conditional instructions. - Implementations should ensure - that such effects cannot indefinitely delay progress - under expected operating conditions, - and that such anomalies - can therefore safely be ignored by programmers. - Outside this document, - this property is sometimes termed lock-free. - \end{note} -\end{itemize} +indicates an optional expression enclosed in braces.% \pnum -During the execution of a thread of execution, each of the following is termed -an \defn{execution step}: +Names for syntactic categories have generally been chosen according to +the following rules: \begin{itemize} -\item termination of the thread of execution, -\item performing an access through a volatile glvalue, or -\item completion of a call to a library I/O function, a - synchronization operation, or an atomic operation. -\end{itemize} - -\pnum -An invocation of a standard library function that blocks\iref{defns.block} -is considered to continuously execute execution steps while waiting for the -condition that it blocks on to be satisfied. -\begin{example} -A library I/O function that blocks until the I/O operation is complete can -be considered to continuously check whether the operation is complete. Each -such check might consist of one or more execution steps, for example using -observable behavior of the abstract machine. -\end{example} - -\pnum -\begin{note} -Because of this and the preceding requirement regarding what threads of execution -have to perform eventually, it follows that no thread of execution can execute -forever without an execution step occurring. -\end{note} - -\pnum -A thread of execution \defnx{makes progress}{make progress!thread} -when an execution step occurs or a -lock-free execution does not complete because there are other concurrent threads -that are not blocked in a standard library function (see above). - -\pnum -\indextext{forward progress guarantees!concurrent}% -For a thread of execution providing \defn{concurrent forward progress guarantees}, -the implementation ensures that the thread will eventually make progress for as -long as it has not terminated. -\begin{note} -This is required regardless of whether or not other threads of executions (if any) -have been or are making progress. To eventually fulfill this requirement means that -this will happen in an unspecified but finite amount of time. -\end{note} - -\pnum -It is \impldef{whether the thread that executes \tcode{main} and the threads created -by \tcode{std::thread} provide concurrent forward progress guarantees} whether the -implementation-created thread of execution that executes -\tcode{main}\iref{basic.start.main} and the threads of execution created by -\tcode{std::thread}\iref{thread.thread.class} provide concurrent forward progress -guarantees. -\begin{note} -General-purpose implementations should provide these guarantees. -\end{note} - -\pnum -\indextext{forward progress guarantees!parallel}% -For a thread of execution providing \defn{parallel forward progress guarantees}, -the implementation is not required to ensure that the thread will eventually make -progress if it has not yet executed any execution step; once this thread has -executed a step, it provides concurrent forward progress guarantees. - -\pnum -\begin{note} -This does not specify a requirement for when to start this thread of execution, -which will typically be specified by the entity that creates this thread of -execution. For example, a thread of execution that provides concurrent forward -progress guarantees and executes tasks from a set of tasks in an arbitrary order, -one after the other, satisfies the requirements of parallel forward progress for -these tasks. -\end{note} - -\pnum -\indextext{forward progress guarantees!weakly parallel}% -For a thread of execution providing \defn{weakly parallel forward progress -guarantees}, the implementation does not ensure that the thread will eventually -make progress. - -\pnum -\begin{note} -Threads of execution providing weakly parallel forward progress guarantees cannot -be expected to make progress regardless of whether other threads make progress or -not; however, blocking with forward progress guarantee delegation, as defined below, -can be used to ensure that such threads of execution make progress eventually. -\end{note} - -\pnum -Concurrent forward progress guarantees are stronger than parallel forward progress -guarantees, which in turn are stronger than weakly parallel forward progress -guarantees. -\begin{note} -For example, some kinds of synchronization between threads of execution may only -make progress if the respective threads of execution provide parallel forward progress -guarantees, but will fail to make progress under weakly parallel guarantees. -\end{note} - -\pnum -\indextext{forward progress guarantees!delegation of}% -When a thread of execution \placeholder{P} is specified to \defn{block with forward -progress guarantee delegation} on the completion of a set \placeholder{S} of threads -of execution, then throughout the whole time of \placeholder{P} being blocked on -\placeholder{S}, the implementation shall ensure that the forward progress guarantees -provided by at least one thread of execution in \placeholder{S} is at least as strong -as \placeholder{P}'s forward progress guarantees. -\begin{note} -It is unspecified which thread or threads of execution in \placeholder{S} are chosen -and for which number of execution steps. The strengthening is not permanent and -not necessarily in place for the rest of the lifetime of the affected thread of -execution. As long as \placeholder{P} is blocked, the implementation has to eventually -select and potentially strengthen a thread of execution in \placeholder{S}. -\end{note} -Once a thread of execution in \placeholder{S} terminates, it is removed from \placeholder{S}. -Once \placeholder{S} is empty, \placeholder{P} is unblocked. - -\pnum -\begin{note} -A thread of execution \placeholder{B} thus can temporarily provide an effectively -stronger forward progress guarantee for a certain amount of time, due to a -second thread of execution \placeholder{A} being blocked on it with forward -progress guarantee delegation. In turn, if \placeholder{B} then blocks with -forward progress guarantee delegation on \placeholder{C}, this may also temporarily -provide a stronger forward progress guarantee to \placeholder{C}. -\end{note} - -\pnum -\begin{note} -If all threads of execution in \placeholder{S} finish executing (e.g., they terminate -and do not use blocking synchronization incorrectly), then \placeholder{P}'s execution -of the operation that blocks with forward progress guarantee delegation will not -result in \placeholder{P}'s progress guarantee being effectively weakened. -\end{note} - -\pnum -\begin{note} -This does not remove any constraints regarding blocking synchronization for -threads of execution providing parallel or weakly parallel forward progress -guarantees because the implementation is not required to strengthen a particular -thread of execution whose too-weak progress guarantee is preventing overall progress. -\end{note} - -\pnum -An implementation should ensure that the last value (in modification order) -assigned by an atomic or synchronization operation will become visible to all -other threads in a finite period of time.% -\indextext{operation!atomic|)}% -\indextext{threads!multiple|)} +\item \grammarterm{X-name} is a use of an identifier in a context that +determines its meaning (e.g., \grammarterm{class-name}, +\grammarterm{typedef-name}). +\item \grammarterm{X-id} is an identifier with no context-dependent meaning +(e.g., \grammarterm{qualified-id}). +\item \grammarterm{X-seq} is one or more \grammarterm{X}'s without intervening +delimiters (e.g., \grammarterm{declaration-seq} is a sequence of +declarations). +\item \grammarterm{X-list} is one or more \grammarterm{X}'s separated by +intervening commas (e.g., \grammarterm{identifier-list} is a sequence of +identifiers separated by commas). +\end{itemize}% +\indextext{notation!syntax|)} \rSec1[intro.ack]{Acknowledgments} diff --git a/source/special.tex b/source/special.tex index de6f9f6c47..f05479de81 100644 --- a/source/special.tex +++ b/source/special.tex @@ -1796,7 +1796,7 @@ \begin{note} The initialization performed by each \grammarterm{mem-initializer} -constitutes a full-expression\iref{intro.execution}. +constitutes a full-expres\-sion\iref{intro.execution}. Any expression in a \grammarterm{mem-initializer} From 49870469d0a3347b91e42faa9c931859e924e83e Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Sun, 12 Nov 2017 04:21:40 +0100 Subject: [PATCH 017/168] [lib] Add hyphen to 'well-defined' (#1776) --- source/iterators.tex | 2 +- source/locales.tex | 2 +- source/threads.tex | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/iterators.tex b/source/iterators.tex index 1336f8b90f..c887d51e8a 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -1043,7 +1043,7 @@ \begin{example} If \tcode{evolve()} -is well defined for bidirectional iterators, but can be implemented more +is well-defined for bidirectional iterators, but can be implemented more efficiently for random access iterators, then the implementation is as follows: \begin{codeblock} diff --git a/source/locales.tex b/source/locales.tex index 0070fcd7e7..0356da91b5 100644 --- a/source/locales.tex +++ b/source/locales.tex @@ -2147,7 +2147,7 @@ \pnum \requires \tcode{(to <= to_end)} -well defined and \tcode{true}; state initialized, if at the beginning of a sequence, +well-defined and \tcode{true}; state initialized, if at the beginning of a sequence, or else equal to the result of converting the preceding characters in the sequence. diff --git a/source/threads.tex b/source/threads.tex index 73c4042385..8c5b8d56d6 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -725,7 +725,7 @@ \pnum \returns The number of hardware thread contexts. \begin{note} This value should only be considered to be a hint. \end{note} If this value is not computable or -well defined, an implementation should return 0. +well-defined, an implementation should return 0. \end{itemdescr} \rSec3[thread.thread.algorithm]{\tcode{thread} specialized algorithms} From 6b6578cc415bf17b237a0889ef2dc53f4b392d02 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Sun, 12 Nov 2017 05:30:40 +0100 Subject: [PATCH 018/168] [locale.moneypunct.virtuals] Add reference to ISO 4217. (#1779) --- source/back.tex | 5 ++++- source/locales.tex | 12 +++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/source/back.tex b/source/back.tex index ec39597f7b..16589e344a 100644 --- a/source/back.tex +++ b/source/back.tex @@ -9,7 +9,10 @@ \chapter{Bibliography} \item ISO/IEC 10967-1:2012, \doccite{Information technology --- Language independent arithmetic --- - Part 1: Integer and floating point arithmetic} + Part 1: Integer and floating point arithmetic} +\item + ISO 4217:2015, + \doccite{Codes for the representation of currencies} \end{itemize} The arithmetic specification described in ISO/IEC 10967-1:2012 is diff --git a/source/locales.tex b/source/locales.tex index 0356da91b5..1b225ff2d1 100644 --- a/source/locales.tex +++ b/source/locales.tex @@ -4779,10 +4779,12 @@ \begin{itemdescr} \pnum \returns -A string to use as the currency identifier symbol.\footnote{For international -specializations (second template parameter -\tcode{true}) -this is typically four characters long, usually three letters and a space.} +A string to use as the currency identifier symbol. +\begin{note} +For specializations where the second template parameter is \tcode{true}, +this is typically four characters long: a three-letter code as specified +by ISO 4217 followed by a space. +\end{note} \end{itemdescr} \indexlibrarymember{moneypunct}{do_positive_sign}% @@ -4835,7 +4837,7 @@ initialized to \tcode{\{ symbol, sign, none, value \}}.\footnote{Note that the international symbol returned by -\tcode{do_curr_sym()} +\tcode{do_curr_symbol()} usually contains a space, itself; for example, \tcode{"USD "}.} \end{itemdescr} From 0963b3d26dcce7dff2b924e4d9d3daff0e1f50d6 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Sun, 12 Nov 2017 05:32:46 +0100 Subject: [PATCH 019/168] [lib] Harmonize introductory comments in synopses (#1775) Even if no section reference is given, make them lowercase and remove trailing colons. --- source/containers.tex | 146 +++++++++++++++++++++--------------------- source/future.tex | 6 +- source/iostreams.tex | 14 ++-- source/locales.tex | 8 +-- source/numerics.tex | 2 +- source/regex.tex | 2 +- source/strings.tex | 2 +- source/threads.tex | 18 +++--- source/utilities.tex | 6 +- 9 files changed, 102 insertions(+), 102 deletions(-) diff --git a/source/containers.tex b/source/containers.tex index aea2219805..a1cda76546 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -3157,7 +3157,7 @@ namespace std { template struct array { - // types: + // types using value_type = T; using pointer = T*; using const_pointer = const T*; @@ -3175,7 +3175,7 @@ void fill(const T& u); void swap(array&) noexcept(is_nothrow_swappable_v); - // iterators: + // iterators constexpr iterator begin() noexcept; constexpr const_iterator begin() const noexcept; constexpr iterator end() noexcept; @@ -3191,12 +3191,12 @@ constexpr const_reverse_iterator crbegin() const noexcept; constexpr const_reverse_iterator crend() const noexcept; - // capacity: + // capacity constexpr bool empty() const noexcept; constexpr size_type size() const noexcept; constexpr size_type max_size() const noexcept; - // element access: + // element access constexpr reference operator[](size_type n); constexpr const_reference operator[](size_type n) const; constexpr reference at(size_type n); @@ -3403,7 +3403,7 @@ template > class deque { public: - // types: + // types using value_type = T; using allocator_type = Allocator; using pointer = typename allocator_traits::pointer; @@ -3441,7 +3441,7 @@ void assign(initializer_list); allocator_type get_allocator() const noexcept; - // iterators: + // iterators iterator begin() noexcept; const_iterator begin() const noexcept; iterator end() noexcept; @@ -3464,7 +3464,7 @@ void resize(size_type sz, const T& c); void shrink_to_fit(); - // element access: + // element access reference operator[](size_type n); const_reference operator[](size_type n) const; reference at(size_type n); @@ -3785,7 +3785,7 @@ template > class forward_list { public: - // types: + // types using value_type = T; using allocator_type = Allocator; using pointer = typename allocator_traits::pointer; @@ -3832,7 +3832,7 @@ const_iterator cbefore_begin() const noexcept; const_iterator cend() const noexcept; - // capacity: + // capacity bool empty() const noexcept; size_type max_size() const noexcept; @@ -4479,7 +4479,7 @@ template > class list { public: - // types: + // types using value_type = T; using allocator_type = Allocator; using pointer = typename allocator_traits::pointer; @@ -4516,7 +4516,7 @@ void assign(initializer_list); allocator_type get_allocator() const noexcept; - // iterators: + // iterators iterator begin() noexcept; const_iterator begin() const noexcept; iterator end() noexcept; @@ -4538,7 +4538,7 @@ void resize(size_type sz); void resize(size_type sz, const T& c); - // element access: + // element access reference front(); const_reference front() const; reference back(); @@ -5159,7 +5159,7 @@ template > class vector { public: - // types: + // types using value_type = T; using allocator_type = Allocator; using pointer = typename allocator_traits::pointer; @@ -5197,7 +5197,7 @@ void assign(initializer_list); allocator_type get_allocator() const noexcept; - // iterators: + // iterators iterator begin() noexcept; const_iterator begin() const noexcept; iterator end() noexcept; @@ -5222,7 +5222,7 @@ void reserve(size_type n); void shrink_to_fit(); - // element access: + // element access reference operator[](size_type n); const_reference operator[](size_type n) const; const_reference at(size_type n) const; @@ -5630,7 +5630,7 @@ template class vector { public: - // types: + // types using value_type = bool; using allocator_type = Allocator; using pointer = @\impdef@; @@ -5643,7 +5643,7 @@ using reverse_iterator = std::reverse_iterator; using const_reverse_iterator = std::reverse_iterator; - // bit reference: + // bit reference class reference { friend class vector; reference() noexcept; @@ -5655,7 +5655,7 @@ void flip() noexcept; // flips the bit }; - // construct/copy/destroy: + // construct/copy/destroy vector() : vector(Allocator()) { } explicit vector(const Allocator&); explicit vector(size_type n, const Allocator& = Allocator()); @@ -5677,7 +5677,7 @@ void assign(initializer_list); allocator_type get_allocator() const noexcept; - // iterators: + // iterators iterator begin() noexcept; const_iterator begin() const noexcept; iterator end() noexcept; @@ -5692,7 +5692,7 @@ const_reverse_iterator crbegin() const noexcept; const_reverse_iterator crend() const noexcept; - // capacity: + // capacity bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; @@ -5701,7 +5701,7 @@ void reserve(size_type n); void shrink_to_fit(); - // element access: + // element access reference operator[](size_type n); const_reference operator[](size_type n) const; const_reference at(size_type n) const; @@ -5711,7 +5711,7 @@ reference back(); const_reference back() const; - // modifiers: + // modifiers template reference emplace_back(Args&&... args); void push_back(const bool& x); void pop_back(); @@ -6016,7 +6016,7 @@ class Allocator = allocator>> class map { public: - // types: + // types using key_type = Key; using mapped_type = T; using value_type = pair; @@ -6073,7 +6073,7 @@ map& operator=(initializer_list); allocator_type get_allocator() const noexcept; - // iterators: + // iterators iterator begin() noexcept; const_iterator begin() const noexcept; iterator end() noexcept; @@ -6089,7 +6089,7 @@ const_reverse_iterator crbegin() const noexcept; const_reverse_iterator crend() const noexcept; - // capacity: + // capacity bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; @@ -6154,11 +6154,11 @@ template void merge(multimap&& source); - // observers: + // observers key_compare key_comp() const; value_compare value_comp() const; - // map operations: + // map operations iterator find(const key_type& x); const_iterator find(const key_type& x) const; template iterator find(const K& x); @@ -6548,7 +6548,7 @@ class Allocator = allocator>> class multimap { public: - // types: + // types using key_type = Key; using mapped_type = T; using value_type = pair; @@ -6605,7 +6605,7 @@ multimap& operator=(initializer_list); allocator_type get_allocator() const noexcept; - // iterators: + // iterators iterator begin() noexcept; const_iterator begin() const noexcept; iterator end() noexcept; @@ -6621,7 +6621,7 @@ const_reverse_iterator crbegin() const noexcept; const_reverse_iterator crend() const noexcept; - // capacity: + // capacity bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; @@ -6662,11 +6662,11 @@ template void merge(map&& source); - // observers: + // observers key_compare key_comp() const; value_compare value_comp() const; - // map operations: + // map operations iterator find(const key_type& x); const_iterator find(const key_type& x) const; template iterator find(const K& x); @@ -6856,7 +6856,7 @@ class Allocator = allocator> class set { public: - // types: + // types using key_type = Key; using key_compare = Compare; using value_type = Key; @@ -6901,7 +6901,7 @@ set& operator=(initializer_list); allocator_type get_allocator() const noexcept; - // iterators: + // iterators iterator begin() noexcept; const_iterator begin() const noexcept; iterator end() noexcept; @@ -6917,12 +6917,12 @@ const_reverse_iterator crbegin() const noexcept; const_reverse_iterator crend() const noexcept; - // capacity: + // capacity bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; - // modifiers: + // modifiers template pair emplace(Args&&... args); template iterator emplace_hint(const_iterator position, Args&&... args); pair insert(const value_type& x); @@ -6956,11 +6956,11 @@ template void merge(multiset&& source); - // observers: + // observers key_compare key_comp() const; value_compare value_comp() const; - // set operations: + // set operations iterator find(const key_type& x); const_iterator find(const key_type& x) const; template iterator find(const K& x); @@ -7124,7 +7124,7 @@ class Allocator = allocator> class multiset { public: - // types: + // types using key_type = Key; using key_compare = Compare; using value_type = Key; @@ -7168,7 +7168,7 @@ multiset& operator=(initializer_list); allocator_type get_allocator() const noexcept; - // iterators: + // iterators iterator begin() noexcept; const_iterator begin() const noexcept; iterator end() noexcept; @@ -7184,12 +7184,12 @@ const_reverse_iterator crbegin() const noexcept; const_reverse_iterator crend() const noexcept; - // capacity: + // capacity bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; - // modifiers: + // modifiers template iterator emplace(Args&&... args); template iterator emplace_hint(const_iterator position, Args&&... args); iterator insert(const value_type& x); @@ -7223,11 +7223,11 @@ template void merge(set&& source); - // observers: + // observers key_compare key_comp() const; value_compare value_comp() const; - // set operations: + // set operations iterator find(const key_type& x); const_iterator find(const key_type& x) const; template iterator find(const K& x); @@ -7521,7 +7521,7 @@ class Allocator = allocator>> class unordered_map { public: - // types: + // types using key_type = Key; using mapped_type = T; using value_type = pair; @@ -7589,7 +7589,7 @@ unordered_map& operator=(initializer_list); allocator_type get_allocator() const noexcept; - // iterators: + // iterators iterator begin() noexcept; const_iterator begin() const noexcept; iterator end() noexcept; @@ -7597,7 +7597,7 @@ const_iterator cbegin() const noexcept; const_iterator cend() const noexcept; - // capacity: + // capacity bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; @@ -7655,11 +7655,11 @@ template void merge(unordered_multimap&& source); - // observers: + // observers hasher hash_function() const; key_equal key_eq() const; - // map operations: + // map operations iterator find(const key_type& k); const_iterator find(const key_type& k) const; size_type count(const key_type& k) const; @@ -7672,7 +7672,7 @@ mapped_type& at(const key_type& k); const mapped_type& at(const key_type& k) const; - // bucket interface: + // bucket interface size_type bucket_count() const noexcept; size_type max_bucket_count() const noexcept; size_type bucket_size(size_type n) const; @@ -7684,7 +7684,7 @@ const_local_iterator cbegin(size_type n) const; const_local_iterator cend(size_type n) const; - // hash policy: + // hash policy float load_factor() const noexcept; float max_load_factor() const noexcept; void max_load_factor(float z); @@ -8081,7 +8081,7 @@ class Allocator = allocator>> class unordered_multimap { public: - // types: + // types using key_type = Key; using mapped_type = T; using value_type = pair; @@ -8148,7 +8148,7 @@ unordered_multimap& operator=(initializer_list); allocator_type get_allocator() const noexcept; - // iterators: + // iterators iterator begin() noexcept; const_iterator begin() const noexcept; iterator end() noexcept; @@ -8156,7 +8156,7 @@ const_iterator cbegin() const noexcept; const_iterator cend() const noexcept; - // capacity: + // capacity bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; @@ -8197,18 +8197,18 @@ template void merge(unordered_map&& source); - // observers: + // observers hasher hash_function() const; key_equal key_eq() const; - // map operations: + // map operations iterator find(const key_type& k); const_iterator find(const key_type& k) const; size_type count(const key_type& k) const; pair equal_range(const key_type& k); pair equal_range(const key_type& k) const; - // bucket interface: + // bucket interface size_type bucket_count() const noexcept; size_type max_bucket_count() const noexcept; size_type bucket_size(size_type n) const; @@ -8424,7 +8424,7 @@ class Allocator = allocator> class unordered_set { public: - // types: + // types using key_type = Key; using value_type = Key; using hasher = Hash; @@ -8491,7 +8491,7 @@ unordered_set& operator=(initializer_list); allocator_type get_allocator() const noexcept; - // iterators: + // iterators iterator begin() noexcept; const_iterator begin() const noexcept; iterator end() noexcept; @@ -8499,12 +8499,12 @@ const_iterator cbegin() const noexcept; const_iterator cend() const noexcept; - // capacity: + // capacity bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; - // modifiers: + // modifiers template pair emplace(Args&&... args); template iterator emplace_hint(const_iterator position, Args&&... args); pair insert(const value_type& obj); @@ -8538,18 +8538,18 @@ template void merge(unordered_multiset&& source); - // observers: + // observers hasher hash_function() const; key_equal key_eq() const; - // set operations: + // set operations iterator find(const key_type& k); const_iterator find(const key_type& k) const; size_type count(const key_type& k) const; pair equal_range(const key_type& k); pair equal_range(const key_type& k) const; - // bucket interface: + // bucket interface size_type bucket_count() const noexcept; size_type max_bucket_count() const noexcept; size_type bucket_size(size_type n) const; @@ -8561,7 +8561,7 @@ const_local_iterator cbegin(size_type n) const; const_local_iterator cend(size_type n) const; - // hash policy: + // hash policy float load_factor() const noexcept; float max_load_factor() const noexcept; void max_load_factor(float z); @@ -8727,7 +8727,7 @@ class Allocator = allocator> class unordered_multiset { public: - // types: + // types using key_type = Key; using value_type = Key; using hasher = Hash; @@ -8793,7 +8793,7 @@ unordered_multiset& operator=(initializer_list); allocator_type get_allocator() const noexcept; - // iterators: + // iterators iterator begin() noexcept; const_iterator begin() const noexcept; iterator end() noexcept; @@ -8801,12 +8801,12 @@ const_iterator cbegin() const noexcept; const_iterator cend() const noexcept; - // capacity: + // capacity bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; - // modifiers: + // modifiers template iterator emplace(Args&&... args); template iterator emplace_hint(const_iterator position, Args&&... args); iterator insert(const value_type& obj); @@ -8840,18 +8840,18 @@ template void merge(unordered_set&& source); - // observers: + // observers hasher hash_function() const; key_equal key_eq() const; - // set operations: + // set operations iterator find(const key_type& k); const_iterator find(const key_type& k) const; size_type count(const key_type& k) const; pair equal_range(const key_type& k); pair equal_range(const key_type& k) const; - // bucket interface: + // bucket interface size_type bucket_count() const noexcept; size_type max_bucket_count() const noexcept; size_type bucket_size(size_type n) const; @@ -8863,7 +8863,7 @@ const_local_iterator cbegin(size_type n) const; const_local_iterator cend(size_type n) const; - // hash policy: + // hash policy float load_factor() const noexcept; float max_load_factor() const noexcept; void max_load_factor(float z); diff --git a/source/future.tex b/source/future.tex index b770fcad99..83b82b85ee 100644 --- a/source/future.tex +++ b/source/future.tex @@ -1106,7 +1106,7 @@ class strstream : public basic_iostream { public: - // Types + // types using char_type = char; using int_type = char_traits::int_type; using pos_type = char_traits::pos_type; @@ -1118,7 +1118,7 @@ ios_base::openmode mode = ios_base::in|ios_base::out); virtual ~strstream(); - // Members: + // members strstreambuf* rdbuf() const; void freeze(bool freezefl = true); int pcount() const; @@ -1753,7 +1753,7 @@ \indexlibrary{\idxcode{allocator}}% \begin{codeblock} namespace std { - // specialize for \tcode{void}: + // specialization for \tcode{void} template <> class allocator { public: using value_type = void; diff --git a/source/iostreams.tex b/source/iostreams.tex index 3be1a3b0a5..0711388628 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -809,10 +809,10 @@ long& iword(int index); void*& pword(int index); - // destructor: + // destructor virtual ~ios_base(); - // \ref{ios.base.callback}, callbacks; + // \ref{ios.base.callback}, callbacks enum event { erase_event, imbue_event, copyfmt_event }; using event_callback = void (*)(event, ios_base&, int index); void register_callback(event_callback fn, int index); @@ -2932,7 +2932,7 @@ = ios_base::in | ios_base::out); int pubsync(); - // Get and put areas + // get and put areas // \ref{streambuf.pub.get}, get area streamsize in_avail(); int_type snextc(); @@ -4145,7 +4145,7 @@ template > class basic_istream : virtual public basic_ios { public: - // types (inherited from \tcode{basic_ios}\iref{ios}): + // types (inherited from \tcode{basic_ios}\iref{ios}) using char_type = charT; using int_type = typename traits::int_type; using pos_type = typename traits::pos_type; @@ -5705,7 +5705,7 @@ template > class basic_ostream : virtual public basic_ios { public: - // types (inherited from \tcode{basic_ios}\iref{ios}): + // types (inherited from \tcode{basic_ios}\iref{ios}) using char_type = charT; using int_type = typename traits::int_type; using pos_type = typename traits::pos_type; @@ -12588,7 +12588,7 @@ file_status(file_status&&) noexcept = default; ~file_status(); - // assignments: + // assignments file_status& operator=(const file_status&) noexcept = default; file_status& operator=(file_status&&) noexcept = default; @@ -12679,7 +12679,7 @@ directory_entry(const filesystem::path& p, error_code& ec); ~directory_entry(); - // assignments: + // assignments directory_entry& operator=(const directory_entry&) = default; directory_entry& operator=(directory_entry&&) noexcept = default; diff --git a/source/locales.tex b/source/locales.tex index 1b225ff2d1..e69f28c226 100644 --- a/source/locales.tex +++ b/source/locales.tex @@ -122,7 +122,7 @@ namespace std { class locale { public: - // types: + // types class facet; class id; using category = int; @@ -133,7 +133,7 @@ time = 0x100, messages = 0x200, all = collate | ctype | monetary | numeric | time | messages; - // construct/copy/destroy: + // construct/copy/destroy locale() noexcept; locale(const locale& other) noexcept; explicit locale(const char* std_name); @@ -146,7 +146,7 @@ const locale& operator=(const locale& other) noexcept; template locale combine(const locale& other) const; - // locale operations: + // locale operations basic_string name() const; bool operator==(const locale& other) const; @@ -156,7 +156,7 @@ bool operator()(const basic_string& s1, const basic_string& s2) const; - // global locale objects: + // global locale objects static locale global(const locale&); static const locale& classic(); }; diff --git a/source/numerics.tex b/source/numerics.tex index 3f54619e7f..699a5b4456 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -10435,7 +10435,7 @@ long double sph_legendrel(unsigned l, unsigned m, long double theta); // \ref{sf.cmath.sph_neumann}, spherical Neumann functions; - // spherical Bessel functions of the second kind: + // spherical Bessel functions of the second kind double sph_neumann(unsigned n, double x); float sph_neumannf(unsigned n, float x); long double sph_neumannl(unsigned n, long double x); diff --git a/source/regex.tex b/source/regex.tex index 3320472cb6..1bd8275534 100644 --- a/source/regex.tex +++ b/source/regex.tex @@ -1329,7 +1329,7 @@ template > class basic_regex { public: - // types: + // types using value_type = charT; using traits_type = traits; using string_type = typename traits::string_type; diff --git a/source/strings.tex b/source/strings.tex index 5ed4a61ae7..4b64f21219 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -878,7 +878,7 @@ class Allocator = allocator> class basic_string { public: - // types: + // types using traits_type = traits; using value_type = charT; using allocator_type = Allocator; diff --git a/source/threads.tex b/source/threads.tex index 8c5b8d56d6..4190a4aa66 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -331,11 +331,11 @@ namespace std { class thread { public: - // types: + // types class id; using native_handle_type = @\impdefnc@; // see~\ref{thread.req.native} - // construct/copy/destroy: + // construct/copy/destroy thread() noexcept; template explicit thread(F&& f, Args&&... args); ~thread(); @@ -344,7 +344,7 @@ thread& operator=(const thread&) = delete; thread& operator=(thread&&) noexcept; - // members: + // members void swap(thread&) noexcept; bool joinable() const noexcept; void join(); @@ -352,7 +352,7 @@ id get_id() const noexcept; native_handle_type native_handle(); // see~\ref{thread.req.native} - // static members: + // static members static unsigned int hardware_concurrency() noexcept; }; } @@ -380,7 +380,7 @@ basic_ostream& operator<<(basic_ostream& out, thread::id id); - // Hash support + // hash support template struct hash; template <> struct hash; } @@ -1443,12 +1443,12 @@ shared_mutex(const shared_mutex&) = delete; shared_mutex& operator=(const shared_mutex&) = delete; - // Exclusive ownership + // exclusive ownership void lock(); // blocking bool try_lock(); void unlock(); - // Shared ownership + // shared ownership void lock_shared(); // blocking bool try_lock_shared(); void unlock_shared(); @@ -1578,7 +1578,7 @@ shared_timed_mutex(const shared_timed_mutex&) = delete; shared_timed_mutex& operator=(const shared_timed_mutex&) = delete; - // Exclusive ownership + // exclusive ownership void lock(); // blocking bool try_lock(); template @@ -1587,7 +1587,7 @@ bool try_lock_until(const chrono::time_point& abs_time); void unlock(); - // Shared ownership + // shared ownership void lock_shared(); // blocking bool try_lock_shared(); template diff --git a/source/utilities.tex b/source/utilities.tex index 1655b925ce..f0a8be6a07 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -5701,7 +5701,7 @@ namespace std { template class bitset { public: - // bit reference: + // bit reference class reference { friend class bitset; reference() noexcept; @@ -5747,7 +5747,7 @@ bitset& flip() noexcept; bitset& flip(size_t pos); - // element access: + // element access constexpr bool operator[](size_t pos) const; // for \tcode{b[i];} reference operator[](size_t pos); // for \tcode{b[i];} @@ -18658,7 +18658,7 @@ static time_point now() noexcept; - // Map to C API + // map to C API static time_t to_time_t (const time_point& t) noexcept; static time_point from_time_t(time_t t) noexcept; }; From 87c88e99620ecbc3958dc0e06d86aa72806206c4 Mon Sep 17 00:00:00 2001 From: Casey Carter Date: Sat, 11 Nov 2017 21:48:25 -0700 Subject: [PATCH 020/168] [algorithms.general] & [algorithm.syn] name "mutating sequence operations" consistently (#1801) Despite the stable name "alg.modifying.operations," the section is titled "Mutating sequence operations." --- source/algorithms.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index 7d3ea7f46e..0c2b788f20 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -10,7 +10,7 @@ \pnum The following subclauses describe components for non-modifying sequence operations, -modifying sequence operations, +mutating sequence operations, sorting and related operations, and algorithms from the ISO C library, as summarized in Table~\ref{tab:algorithms.summary}. @@ -304,7 +304,7 @@ ForwardIterator search(ForwardIterator first, ForwardIterator last, const Searcher& searcher); - // \ref{alg.modifying.operations}, modifying sequence operations + // \ref{alg.modifying.operations}, mutating sequence operations // \ref{alg.copy}, copy template OutputIterator copy(InputIterator first, InputIterator last, From 2e25955ecf6a576c98590097ec76aa616495c466 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Sat, 11 Nov 2017 07:29:23 +0100 Subject: [PATCH 021/168] [expr] Add subclauses and adjust cross-references to [expr]. Also move [basic.lval] into [expr]. --- source/basic.tex | 142 +------------ source/conversions.tex | 4 +- source/declarations.tex | 4 +- source/declarators.tex | 4 +- source/expressions.tex | 461 ++++++++++++++++++++++++++-------------- source/overloading.tex | 14 +- source/special.tex | 15 +- source/statements.tex | 2 +- source/utilities.tex | 12 +- 9 files changed, 333 insertions(+), 325 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index ef74174e1d..e25d8676fe 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -270,7 +270,7 @@ \pnum An expression is \defn{potentially evaluated} unless it is an -unevaluated operand\iref{expr} or a subexpression thereof. +unevaluated operand\iref{expr.prop} or a subexpression thereof. The set of \defn{potential results} of an expression \tcode{e} is defined as follows: \begin{itemize} @@ -320,7 +320,7 @@ and, if \tcode{x} is an object, \tcode{ex} is an element of the set of potential results of an expression \tcode{e}, where either the lvalue-to-rvalue conversion\iref{conv.lval} is applied to \tcode{e}, or \tcode{e} is -a discarded-value expression\iref{expr}. +a discarded-value expression\iref{expr.prop}. \tcode{this} is odr-used if it appears as a potentially-evaluated expression (including as the result of the implicit transformation in the body of a non-static member function~(\ref{class.mfct.non-static})). @@ -2529,7 +2529,7 @@ generates information associated with each such object that makes it possible to determine that object's type during program execution. For other objects, the interpretation of the values found therein is -determined by the type of the \grammarterm{expression}{s}\iref{expr} +determined by the type of the \grammarterm{expression}{s}\iref{expr.compound} used to access them. \pnum @@ -4155,138 +4155,6 @@ \end{example}% \indextext{type|)} -\rSec1[basic.lval]{Lvalues and rvalues} -\pnum -Expressions are categorized according to the taxonomy in Figure~\ref{fig:categories}. - -\begin{importgraphic} -{Expression category taxonomy} -{fig:categories} -{valuecategories.pdf} -\end{importgraphic} - -\begin{itemize} -\item A \defn{glvalue} is an expression whose evaluation determines the identity of an object, bit-field, or function. -\item A \defn{prvalue} is an expression whose evaluation initializes an object or a bit-field, -or computes the value of the operand of an operator, -as specified by the context in which it appears. -\item An \defn{xvalue} is a glvalue that denotes an object or bit-field whose resources can be reused (usually because it is near the end of its lifetime). -\begin{example} -Certain kinds of expressions involving rvalue references\iref{dcl.ref} yield xvalues, -such as a call to a function whose return type is an rvalue reference -or a cast to an rvalue reference type. -\end{example} -\item An \defn{lvalue} is a glvalue that is not an xvalue. -\item An \defn{rvalue} is a prvalue or an xvalue. -\end{itemize} -\begin{note} -Historically, lvalues and rvalues were so-called -because they could appear on the left- and right-hand side of an assignment -(although this is no longer generally true); -glvalues are ``generalized'' lvalues, -prvalues are ``pure'' rvalues, -and xvalues are ``eXpiring'' lvalues. -Despite their names, these terms classify expressions, not values. -\end{note} -Every expression belongs to exactly one of the fundamental classifications in this -taxonomy: lvalue, xvalue, or prvalue. This property of an expression is called -its \defn{value category}. \begin{note} The discussion of each built-in operator in -\ref{expr} indicates the category of the value it yields and the value categories -of the operands it expects. For example, the built-in assignment operators expect that -the left operand is an lvalue and that the right operand is a prvalue and yield an -lvalue as the result. User-defined operators are functions, and the categories of -values they expect and yield are determined by their parameter and return types. \end{note} - -\pnum -The \defnx{result}{result!prvalue} of a prvalue -is the value that the expression stores into its context. -A prvalue whose result is the value \placeholder{V} -is sometimes said to have or name the value \placeholder{V}. -The \defn{result object} of a prvalue -is the object initialized by the prvalue; -a prvalue -that is used to compute the value of an operand of an operator or -that has type \cv{}~\tcode{void} -has no result object. -\begin{note} -Except when the prvalue is the operand of a \grammarterm{decltype-specifier}, -a prvalue of class or array type always has a result object. -For a discarded prvalue, a temporary object is materialized; see \ref{expr}. -\end{note} -The \defnx{result}{result!glvalue} of a glvalue is the entity denoted by the expression. - -\pnum -\begin{note} -Whenever a glvalue appears in a context where a prvalue is expected, the glvalue is converted -to a prvalue; see~\ref{conv.lval}, \ref{conv.array}, -and~\ref{conv.func}. -An attempt to bind an rvalue reference to an lvalue is not such a context; see~\ref{dcl.init.ref}. -\end{note} -\begin{note} -There are no prvalue bit-fields; if a bit-field is converted to a -prvalue\iref{conv.lval}, a prvalue of the type of the bit-field is -created, which might then be promoted\iref{conv.prom}. -\end{note} - -\pnum -\begin{note} -Whenever a prvalue appears in a context where a glvalue is expected, -the prvalue is converted to an xvalue; see~\ref{conv.rval}. -\end{note} - -\pnum -The discussion of reference initialization in~\ref{dcl.init.ref} and of -temporaries in~\ref{class.temporary} indicates the behavior of lvalues -and rvalues in other significant contexts. - -\pnum -Unless otherwise indicated\iref{expr.call}, -a prvalue shall always have complete type or the \tcode{void} type. -A glvalue shall not have type \cv{}~\tcode{void}. -\begin{note} -A glvalue may have complete or incomplete non-\tcode{void} type. -Class and array prvalues can have cv-qualified types; other prvalues -always have cv-unqualified types. See \ref{expr}. -\end{note} - -\pnum -An lvalue is \defn{modifiable} unless its type is const-qualified -or is a function type. -\begin{note} -A program that attempts -to modify an object through a nonmodifiable lvalue expression or through an rvalue expression -is ill-formed~(\ref{expr.ass}, \ref{expr.post.incr}, \ref{expr.pre.incr}). -\end{note} - -\pnum -If a program attempts to access the stored value of an object through a glvalue -of other than one of the following types the behavior is -undefined:\footnote{The intent of this list is to specify those circumstances in which an -object may or may not be aliased.} -\begin{itemize} -\item the dynamic type of the object, - -\item a cv-qualified version of the dynamic type of the object, - -\item a type similar (as defined in~\ref{conv.qual}) to the dynamic type -of the object, - -\item a type that is the signed or unsigned type corresponding to the -dynamic type of the object, - -\item a type that is the signed or unsigned type corresponding to a -cv-qualified version of the dynamic type of the object, - -\item an aggregate or union type that includes one of the aforementioned types among its -elements or non-static data members (including, recursively, an element or non-static data member of a -subaggregate or contained union), - -\item a type that is a (possibly cv-qualified) base class type of the dynamic type of -the object, - -\item a \tcode{char}, \tcode{unsigned char}, or \tcode{std::byte} type. -\end{itemize} - \rSec1[basic.exec]{Program execution} \rSec2[intro.execution]{Sequential execution} @@ -4326,7 +4194,7 @@ The \defnx{immediate subexpressions}{immediate subexpression} of an expression \tcode{e} are \begin{itemize} \item -the constituent expressions of \tcode{e}'s operands\iref{expr}, +the constituent expressions of \tcode{e}'s operands\iref{expr.prop}, \item any function call that \tcode{e} implicitly invokes, \item @@ -4356,7 +4224,7 @@ A \defn{full-expression} is \begin{itemize} \item -an unevaluated operand\iref{expr}, +an unevaluated operand\iref{expr.prop}, \item a \grammarterm{constant-expression}\iref{expr.const}, \item diff --git a/source/conversions.tex b/source/conversions.tex index 23a88a9fdd..af6ea868c8 100644 --- a/source/conversions.tex +++ b/source/conversions.tex @@ -41,7 +41,7 @@ \begin{itemize} \item When used as operands of operators. The operator's requirements -for its operands dictate the destination type\iref{expr}. +for its operands dictate the destination type\iref{expr.compound}. \item When used in the condition of an \tcode{if} statement or iteration statement~(\ref{stmt.select}, \ref{stmt.iter}). The destination type is @@ -661,6 +661,6 @@ \begin{note} The integer conversion rank is used in the definition of the integral promotions\iref{conv.prom} and the usual arithmetic -conversions\iref{expr}. +conversions\iref{expr.prop}. \end{note}% \indextext{conversion!standard|)} diff --git a/source/declarations.tex b/source/declarations.tex index a7ffc30e59..ea5061cd5f 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1384,7 +1384,7 @@ \end{itemize} The operand of the \tcode{decltype} specifier is an unevaluated -operand\iref{expr}. +operand\iref{expr.prop}. \begin{example} \begin{codeblock} @@ -4076,7 +4076,7 @@ calls a function previously declared \tcode{nodiscard}, or whose return type is a possibly cv-qualified class or enumeration type marked \tcode{nodiscard}. Appearance of a nodiscard call as -a potentially-evaluated discarded-value expression\iref{expr} +a potentially-evaluated discarded-value expression\iref{expr.prop} is discouraged unless explicitly cast to \tcode{void}. Implementations should issue a warning in such cases. This is typically because discarding the return value diff --git a/source/declarators.tex b/source/declarators.tex index f6e285e4a0..7189f9fea9 100644 --- a/source/declarators.tex +++ b/source/declarators.tex @@ -2305,7 +2305,7 @@ The type of the \grammarterm{id-expression} \tcode{e} is called \tcode{E}. \begin{note} -\tcode{E} is never a reference type\iref{expr}. +\tcode{E} is never a reference type\iref{expr.prop}. \end{note} \pnum @@ -2686,7 +2686,7 @@ \ref{expr.type.conv}, \ref{expr.static.cast}, \ref{expr.cast}) to an unsigned narrow character type or \tcode{std::byte} type\iref{cstddef.syn}, or -\item a discarded-value expression\iref{expr}, +\item a discarded-value expression\iref{expr.prop}, \end{itemize} then the result of the operation is an indeterminate value. diff --git a/source/expressions.tex b/source/expressions.tex index 2b46d85b21..d285987765 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -13,6 +13,8 @@ \indextext{\idxcode{const_cast}|see{cast, const}}% \indextext{\idxcode{reinterpret_cast}|see{cast, reinterpret}} +\rSec1[expr.pre]{Preamble} + \pnum \indextext{expression|(}% \begin{note} @@ -31,7 +33,7 @@ expressions of class type\iref{class} or enumeration type\iref{dcl.enum}. Uses of overloaded operators are transformed into function calls as described in~\ref{over.oper}. Overloaded operators -obey the rules for syntax and evaluation order specified in \ref{expr}, +obey the rules for syntax and evaluation order specified in \ref{expr.compound}, but the requirements of operand type and value category are replaced by the rules for function call. Relations between operators, such as \tcode{++a} meaning \tcode{a+=1}, are not guaranteed for overloaded @@ -39,7 +41,7 @@ \end{note} \pnum -\ref{expr} defines the effects of operators when applied to types +Subclause \ref{expr.compound} defines the effects of operators when applied to types for which they have not been overloaded. Operator overloading shall not modify the rules for the \defnx{built-in operators}{operators!built-in}, that is, for operators applied to types for which they are defined by this @@ -48,7 +50,7 @@ considered where necessary to convert the operands to types appropriate for the built-in operator. If a built-in operator is selected, such conversions will be applied to the operands before the operation is -considered further according to the rules in \ref{expr}; +considered further according to the rules in subclause \ref{expr.compound}; see~\ref{over.match.oper}, \ref{over.built}. \pnum @@ -68,21 +70,60 @@ \end{note} \pnum -\indextext{expression!reference}% -If an expression initially has the type ``reference to -\tcode{T}''~(\ref{dcl.ref}, \ref{dcl.init.ref}), the type is adjusted to -\tcode{T} prior to any further analysis. The expression designates the -object or function denoted by the reference, and the expression -is an lvalue or an xvalue, depending on the expression. -\begin{note} -Before the lifetime of the reference has started or after it has ended, -the behavior is undefined (see~\ref{basic.life}). -\end{note} +The values of the floating operands and the results of floating +expressions may be represented in greater precision and range than that +required by the type; the types are not changed\ +thereby.\footnote{The cast and assignment operators must still perform their specific +conversions as described in~\ref{expr.cast}, \ref{expr.static.cast} +and~\ref{expr.ass}.} +\rSec1[expr.prop]{Properties of expressions} + +\rSec2[basic.lval]{Value category} \pnum -If a prvalue initially has the type ``\cv{}~\tcode{T}'', where -\tcode{T} is a cv-unqualified non-class, non-array type, the type of -the expression is adjusted to \tcode{T} prior to any further analysis. +Expressions are categorized according to the taxonomy in Figure~\ref{fig:categories}. + +\begin{importgraphic} +{Expression category taxonomy} +{fig:categories} +{valuecategories.pdf} +\end{importgraphic} + +\begin{itemize} +\item A \defn{glvalue} is an expression whose evaluation determines the identity of an object, bit-field, or function. +\item A \defn{prvalue} is an expression whose evaluation initializes an object or a bit-field, +or computes the value of the operand of an operator, +as specified by the context in which it appears. +\item An \defn{xvalue} is a glvalue that denotes an object or bit-field whose resources can be reused (usually because it is near the end of its lifetime). +\begin{example} +Certain kinds of expressions involving rvalue references\iref{dcl.ref} yield xvalues, +such as a call to a function whose return type is an rvalue reference +or a cast to an rvalue reference type. +\end{example} +\item An \defn{lvalue} is a glvalue that is not an xvalue. +\item An \defn{rvalue} is a prvalue or an xvalue. +\end{itemize} + +\pnum +Every expression belongs to exactly one of the fundamental classifications in this +taxonomy: lvalue, xvalue, or prvalue. This property of an expression is called +its \defn{value category}. \begin{note} The discussion of each built-in operator in +\ref{expr.compound} indicates the category of the value it yields and the value categories +of the operands it expects. For example, the built-in assignment operators expect that +the left operand is an lvalue and that the right operand is a prvalue and yield an +lvalue as the result. User-defined operators are functions, and the categories of +values they expect and yield are determined by their parameter and return types. \end{note} + +\pnum +\begin{note} +Historically, lvalues and rvalues were so-called +because they could appear on the left- and right-hand side of an assignment +(although this is no longer generally true); +glvalues are ``generalized'' lvalues, +prvalues are ``pure'' rvalues, +and xvalues are ``eXpiring'' lvalues. +Despite their names, these terms classify expressions, not values. +\end{note} \pnum \indextext{expression!rvalue reference}% @@ -123,20 +164,22 @@ \end{example} \pnum -In some contexts, \defnx{unevaluated operands}{unevaluated operand} -appear~(\ref{expr.prim.req}, -\ref{expr.typeid}, -\ref{expr.sizeof}, -\ref{expr.unary.noexcept}, -\ref{dcl.type.simple}, -\ref{temp}). -An unevaluated operand is not evaluated. +The \defnx{result}{result!prvalue} of a prvalue +is the value that the expression stores into its context. +A prvalue whose result is the value \placeholder{V} +is sometimes said to have or name the value \placeholder{V}. +The \defn{result object} of a prvalue +is the object initialized by the prvalue; +a prvalue +that is used to compute the value of an operand of an operator or +that has type \cv{}~\tcode{void} +has no result object. \begin{note} -In an unevaluated operand, a non-static class member may be -named\iref{expr.prim} and naming of objects or functions does not, by -itself, require that a definition be provided\iref{basic.def.odr}. -An unevaluated operand is considered a full-expression\iref{intro.execution}. +Except when the prvalue is the operand of a \grammarterm{decltype-specifier}, +a prvalue of class or array type always has a result object. +For a discarded prvalue, a temporary object is materialized; see \ref{expr.prop}. \end{note} +The \defnx{result}{result!glvalue} of a glvalue is the entity denoted by the expression. \pnum Whenever a glvalue expression appears as an operand of an operator that @@ -145,11 +188,19 @@ or function-to-pointer\iref{conv.func} standard conversions are applied to convert the expression to a prvalue. \begin{note} +An attempt to bind an rvalue reference to an lvalue is not such a context; see~\ref{dcl.init.ref}. +\end{note} +\begin{note} Because cv-qualifiers are removed from the type of an expression of non-class type when the expression is converted to a prvalue, an lvalue expression of type \tcode{const int} can, for example, be used where a prvalue expression of type \tcode{int} is required. \end{note} +\begin{note} +There are no prvalue bit-fields; if a bit-field is converted to a +prvalue\iref{conv.lval}, a prvalue of the type of the bit-field is +created, which might then be promoted\iref{conv.prom}. +\end{note} \pnum Whenever a prvalue expression appears as an operand of an operator that @@ -158,102 +209,76 @@ applied to convert the expression to an xvalue. \pnum -\indextext{conversion!usual arithmetic}% -Many binary operators that expect operands of arithmetic or enumeration -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 \term{usual arithmetic conversions}, -which are defined as follows: - -\begin{itemize} -\item If either operand is of scoped enumeration type\iref{dcl.enum}, no conversions -are performed; if the other operand does not have the same type, the expression is -ill-formed. - -\item If either operand is of type \tcode{long double}, the -other shall be converted to \tcode{long double}. - -\item Otherwise, if either operand is \tcode{double}, the other shall be -converted to \tcode{double}. +The discussion of reference initialization in~\ref{dcl.init.ref} and of +temporaries in~\ref{class.temporary} indicates the behavior of lvalues +and rvalues in other significant contexts. -\item Otherwise, if either operand is \tcode{float}, the other shall be -converted to \tcode{float}. +\pnum +Unless otherwise indicated\iref{expr.call}, +a prvalue shall always have complete type or the \tcode{void} type. +A glvalue shall not have type \cv{}~\tcode{void}. +\begin{note} +A glvalue may have complete or incomplete non-\tcode{void} type. +Class and array prvalues can have cv-qualified types; other prvalues +always have cv-unqualified types. See \ref{expr.prop}. +\end{note} -\item Otherwise, the integral promotions\iref{conv.prom} shall be -performed on both operands.\footnote{As a consequence, operands of type \tcode{bool}, \tcode{char16_t}, -\tcode{char32_t}, \tcode{wchar_t}, or an enumerated type are converted -to some integral type.} -Then the following rules shall be applied to the promoted operands: +\pnum +An lvalue is \defn{modifiable} unless its type is const-qualified +or is a function type. +\begin{note} +A program that attempts +to modify an object through a nonmodifiable lvalue expression or through an rvalue expression +is ill-formed~(\ref{expr.ass}, \ref{expr.post.incr}, \ref{expr.pre.incr}). +\end{note} +\pnum +If a program attempts to access the stored value of an object through a glvalue +of other than one of the following types the behavior is +undefined:\footnote{The intent of this list is to specify those circumstances in which an +object may or may not be aliased.} \begin{itemize} +\item the dynamic type of the object, -\item If both operands have the same type, no further conversion is -needed. +\item a cv-qualified version of the dynamic type of the object, -\item Otherwise, if both operands have signed integer types or both have -unsigned integer types, the operand with the type of lesser integer -conversion rank shall be converted to the type of the operand with -greater rank. +\item a type similar (as defined in~\ref{conv.qual}) to the dynamic type +of the object, -\item Otherwise, if the operand that has unsigned integer type has rank -greater than or equal to the rank of the type of the other operand, the -operand with signed integer type shall be converted to the type of the -operand with unsigned integer type. +\item a type that is the signed or unsigned type corresponding to the +dynamic type of the object, -\item Otherwise, if the type of the operand with signed integer type can -represent all of the values of the type of the operand with unsigned -integer type, the operand with unsigned integer type shall be converted -to the type of the operand with signed integer type. +\item a type that is the signed or unsigned type corresponding to a +cv-qualified version of the dynamic type of the object, -\item Otherwise, both operands shall be converted to the unsigned -integer type corresponding to the type of the operand with signed -integer type. -\end{itemize} -\end{itemize} +\item an aggregate or union type that includes one of the aforementioned types among its +elements or non-static data members (including, recursively, an element or non-static data member of a +subaggregate or contained union), -\pnum -In some contexts, an expression only appears for its side effects. Such an -expression is called a \defn{discarded-value expression}. -The array-to-pointer\iref{conv.array} -and function-to-pointer\iref{conv.func} standard conversions are not -applied. The lvalue-to-rvalue conversion\iref{conv.lval} is applied -if and only if -the expression is a glvalue of volatile-qualified type and it is one of the -following: +\item a type that is a (possibly cv-qualified) base class type of the dynamic type of +the object, -\begin{itemize} -\item \tcode{(} \grammarterm{expression} \tcode{)}, where - \grammarterm{expression} is one of these expressions, -\item \grammarterm{id-expression}\iref{expr.prim.id}, -\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 a \tcode{char}, \tcode{unsigned char}, or \tcode{std::byte} type. \end{itemize} -\begin{note} Using an overloaded operator causes a function call; the -above covers only operators with built-in meaning. -\end{note} -If the (possibly converted) expression is a prvalue, -the temporary materialization conversion\iref{conv.rval} is applied. +\rSec2[expr.type]{Type} + +\pnum +\indextext{expression!reference}% +If an expression initially has the type ``reference to +\tcode{T}''~(\ref{dcl.ref}, \ref{dcl.init.ref}), the type is adjusted to +\tcode{T} prior to any further analysis. The expression designates the +object or function denoted by the reference, and the expression +is an lvalue or an xvalue, depending on the expression. \begin{note} -If the expression is an lvalue of -class type, it must have a volatile copy constructor to initialize the -temporary object that is the result object of the lvalue-to-rvalue -conversion. \end{note} -The glvalue expression is evaluated and its value is discarded. +Before the lifetime of the reference has started or after it has ended, +the behavior is undefined (see~\ref{basic.life}). +\end{note} \pnum -The values of the floating operands and the results of floating -expressions may be represented in greater precision and range than that -required by the type; the types are not changed\ -thereby.\footnote{The cast and assignment operators must still perform their specific -conversions as described in~\ref{expr.cast}, \ref{expr.static.cast} -and~\ref{expr.ass}.} +If a prvalue initially has the type ``\cv{}~\tcode{T}'', where +\tcode{T} is a cv-unqualified non-class, non-array type, the type of +the expression is adjusted to \tcode{T} prior to any further analysis. \pnum The \defnx{cv-combined type}{type!cv-combined} of two types \tcode{T1} and \tcode{T2} @@ -339,6 +364,116 @@ \tcode{const int}''. \end{example} +\rSec2[expr.context]{Context dependence} + +\pnum +In some contexts, \defnx{unevaluated operands}{unevaluated operand} +appear~(\ref{expr.prim.req}, +\ref{expr.typeid}, +\ref{expr.sizeof}, +\ref{expr.unary.noexcept}, +\ref{dcl.type.simple}, +\ref{temp}). +An unevaluated operand is not evaluated. +\begin{note} +In an unevaluated operand, a non-static class member may be +named\iref{expr.prim} and naming of objects or functions does not, by +itself, require that a definition be provided\iref{basic.def.odr}. +An unevaluated operand is considered a full-expression\iref{intro.execution}. +\end{note} + +\pnum +In some contexts, an expression only appears for its side effects. Such an +expression is called a \defn{discarded-value expression}. +The array-to-pointer\iref{conv.array} +and function-to-pointer\iref{conv.func} standard conversions are not +applied. The lvalue-to-rvalue conversion\iref{conv.lval} is applied +if and only if +the expression is a glvalue of volatile-qualified type and it is one of the +following: + +\begin{itemize} +\item \tcode{(} \grammarterm{expression} \tcode{)}, where + \grammarterm{expression} is one of these expressions, +\item \grammarterm{id-expression}\iref{expr.prim.id}, +\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. +\end{itemize} + +\begin{note} Using an overloaded operator causes a function call; the +above covers only operators with built-in meaning. +\end{note} +If the (possibly converted) expression is a prvalue, +the temporary materialization conversion\iref{conv.rval} is applied. +\begin{note} +If the expression is an lvalue of +class type, it must have a volatile copy constructor to initialize the +temporary object that is the result object of the lvalue-to-rvalue +conversion. \end{note} +The glvalue expression is evaluated and its value is discarded. + +\rSec1[expr.arith.conv]{Usual arithmetic conversions} + +\pnum +\indextext{conversion!usual arithmetic}% +Many binary operators that expect operands of arithmetic or enumeration +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 \term{usual arithmetic conversions}, +which are defined as follows: + +\begin{itemize} +\item If either operand is of scoped enumeration type\iref{dcl.enum}, no conversions +are performed; if the other operand does not have the same type, the expression is +ill-formed. + +\item If either operand is of type \tcode{long double}, the +other shall be converted to \tcode{long double}. + +\item Otherwise, if either operand is \tcode{double}, the other shall be +converted to \tcode{double}. + +\item Otherwise, if either operand is \tcode{float}, the other shall be +converted to \tcode{float}. + +\item Otherwise, the integral promotions\iref{conv.prom} shall be +performed on both operands.\footnote{As a consequence, operands of type \tcode{bool}, \tcode{char16_t}, +\tcode{char32_t}, \tcode{wchar_t}, or an enumerated type are converted +to some integral type.} +Then the following rules shall be applied to the promoted operands: + +\begin{itemize} + +\item If both operands have the same type, no further conversion is +needed. + +\item Otherwise, if both operands have signed integer types or both have +unsigned integer types, the operand with the type of lesser integer +conversion rank shall be converted to the type of the operand with +greater rank. + +\item Otherwise, if the operand that has unsigned integer type has rank +greater than or equal to the rank of the type of the other operand, the +operand with signed integer type shall be converted to the type of the +operand with unsigned integer type. + +\item Otherwise, if the type of the operand with signed integer type can +represent all of the values of the type of the operand with unsigned +integer type, the operand with unsigned integer type shall be converted +to the type of the operand with signed integer type. + +\item Otherwise, both operands shall be converted to the unsigned +integer type corresponding to the type of the operand with signed +integer type. +\end{itemize} +\end{itemize} + \rSec1[expr.prim]{Primary expressions}% \indextext{expression!primary|(} @@ -526,7 +661,7 @@ In the declaration of \tcode{p2}, those constraints are required to be satisfied even though -\tcode{f} is an unevaluated operand\iref{expr}. +\tcode{f} is an unevaluated operand\iref{expr.prop}. \end{example} \rSec3[expr.prim.id.unqual]{Unqualified names} @@ -680,7 +815,7 @@ \pnum A \grammarterm{lambda-expression} is a prvalue whose result object is called the \defn{closure object}. A -\grammarterm{lambda-expression} shall not appear in an unevaluated operand\iref{expr}, +\grammarterm{lambda-expression} shall not appear in an unevaluated operand\iref{expr.prop}, in a \grammarterm{template-argument}, in an \grammarterm{alias-declaration}, in a typedef declaration, or in the declaration of a function or function @@ -1557,7 +1692,7 @@ A \grammarterm{requires-expression} is a prvalue of type \tcode{bool} whose value is described below. Expressions appearing within a \grammarterm{requirement-body} -are unevaluated operands\iref{expr}. +are unevaluated operands\iref{expr.prop}. \pnum \begin{example} @@ -1655,7 +1790,7 @@ \begin{note} The enclosing \grammarterm{requires-expression} will evaluate to \tcode{false} if substitution of template arguments into the \grammarterm{expression} fails. -The \grammarterm{expression} is an unevaluated operand\iref{expr}. +The \grammarterm{expression} is an unevaluated operand\iref{expr.prop}. \end{note} \begin{example} \begin{codeblock} @@ -1842,7 +1977,7 @@ \end{example} \pnum -A local parameter shall only appear as an unevaluated operand\iref{expr} +A local parameter shall only appear as an unevaluated operand\iref{expr.prop} within the \grammarterm{constraint-expression}. \begin{example} \begin{codeblock} @@ -1855,7 +1990,9 @@ \indextext{expression!requires|)} \indextext{expression!primary|)} -\rSec1[expr.post]{Postfix expressions}% +\rSec1[expr.compound]{Compound expressions} + +\rSec2[expr.post]{Postfix expressions}% \indextext{expression!postfix|(} \pnum @@ -1907,7 +2044,7 @@ \tcode{>{>}} token by two consecutive \tcode{>} tokens\iref{temp.names}.\end{note} -\rSec2[expr.sub]{Subscripting} +\rSec3[expr.sub]{Subscripting} \pnum \indextext{operator!subscripting}% @@ -1933,7 +2070,7 @@ \pnum A \grammarterm{braced-init-list} shall not be used with the built-in subscript operator. -\rSec2[expr.call]{Function call} +\rSec3[expr.call]{Function call} \pnum \indextext{expression!function call}% @@ -2166,7 +2303,7 @@ an xvalue if the result type is an rvalue reference to object type, and a prvalue otherwise. -\rSec2[expr.type.conv]{Explicit type conversion (functional notation)} +\rSec3[expr.type.conv]{Explicit type conversion (functional notation)} \pnum \indextext{expression!cast}% @@ -2206,7 +2343,7 @@ For an expression of the form \tcode{T()}, \tcode{T} shall not be an array type. -\rSec2[expr.pseudo]{Pseudo destructor call} +\rSec3[expr.pseudo]{Pseudo destructor call} \pnum \indextext{expression!pseudo-destructor call}% @@ -2235,7 +2372,7 @@ shall designate the same scalar type (ignoring cv-qualification). -\rSec2[expr.ref]{Class member access} +\rSec3[expr.ref]{Class member access} \pnum \indextext{expression!class member access}% @@ -2370,7 +2507,7 @@ of the object expression; see~\ref{class.access.base}. \end{note} -\rSec2[expr.post.incr]{Increment and decrement} +\rSec3[expr.post.incr]{Increment and decrement} \pnum \indextext{expression!increment}% @@ -2417,7 +2554,7 @@ For prefix increment and decrement, see~\ref{expr.pre.incr}. \end{note} -\rSec2[expr.dynamic.cast]{Dynamic cast} +\rSec3[expr.dynamic.cast]{Dynamic cast} \pnum \indextext{expression!dynamic cast}% @@ -2547,7 +2684,7 @@ applied to an object under construction or destruction. \end{note} -\rSec2[expr.typeid]{Type identification} +\rSec3[expr.typeid]{Type identification} \pnum \indextext{expression!type identification}% @@ -2593,7 +2730,7 @@ If the expression is a prvalue, the temporary materialization conversion\iref{conv.rval} is applied. -The expression is an unevaluated operand\iref{expr}. +The expression is an unevaluated operand\iref{expr.prop}. \pnum When \tcode{typeid} is applied to a \grammarterm{type-id}, the result @@ -2634,7 +2771,7 @@ object under construction or destruction. \end{note} -\rSec2[expr.static.cast]{Static cast} +\rSec3[expr.static.cast]{Static cast} \pnum \indextext{expression!static cast}% @@ -2722,7 +2859,7 @@ \pnum Any expression can be explicitly converted to type \cv{}~\tcode{void}, in which case it becomes a discarded-value -expression\iref{expr}. +expression\iref{expr.prop}. \begin{note} However, if the value is in a temporary object\iref{class.temporary}, the destructor for that @@ -2855,7 +2992,7 @@ \end{codeblock} \end{example} -\rSec2[expr.reinterpret.cast]{Reinterpret cast} +\rSec3[expr.reinterpret.cast]{Reinterpret cast} \pnum \indextext{expression!reinterpret cast}% @@ -3013,7 +3150,7 @@ functions\iref{class.conv} are not called.\footnote{This is sometimes referred to as a \defn{type pun}.} -\rSec2[expr.const.cast]{Const cast} +\rSec3[expr.const.cast]{Const cast} \pnum \indextext{expression!const cast}% @@ -3127,7 +3264,7 @@ \end{note}% \indextext{expression!postfix|)} -\rSec1[expr.unary]{Unary expressions} +\rSec2[expr.unary]{Unary expressions} \pnum \indextext{expression!unary|(}% @@ -3173,7 +3310,7 @@ \terminal{* \& + - ! \tilde} \end{bnf} -\rSec2[expr.unary.op]{Unary operators} +\rSec3[expr.unary.op]{Unary operators} \pnum \indextext{expression!unary operator}% @@ -3310,7 +3447,7 @@ unambiguously parsed as a destructor name. \end{note} -\rSec2[expr.pre.incr]{Increment and decrement} +\rSec3[expr.pre.incr]{Increment and decrement} \pnum \indextext{expression!increment}% @@ -3343,7 +3480,7 @@ For postfix increment and decrement, see~\ref{expr.post.incr}. \end{note} -\rSec2[expr.sizeof]{Sizeof} +\rSec3[expr.sizeof]{Sizeof} \pnum \indextext{expression!\idxcode{sizeof}}% @@ -3351,7 +3488,7 @@ \indextext{byte}% The \tcode{sizeof} operator yields the number of bytes in the object representation of its operand. The operand is either an expression, -which is an unevaluated operand\iref{expr}, or a parenthesized +which is an unevaluated operand\iref{expr.prop}, or a parenthesized \grammarterm{type-id}. \indextext{type!incomplete}% The \tcode{sizeof} operator shall not be applied to an expression that @@ -3431,7 +3568,7 @@ \tcode{}~(\ref{cstddef.syn}, \ref{support.types.layout}). \end{note} -\rSec2[expr.new]{New} +\rSec3[expr.new]{New} \pnum \indextext{expression!\idxcode{new}}% @@ -3984,7 +4121,7 @@ to reuse the copy made as part of the call to the allocation function. If the copy is elided in one place, it need not be elided in the other. -\rSec2[expr.delete]{Delete} +\rSec3[expr.delete]{Delete} \pnum \indextext{expression!\idxcode{delete}}% @@ -4191,7 +4328,7 @@ Access and ambiguity control are done for both the deallocation function and the destructor~(\ref{class.dtor}, \ref{class.free}). -\rSec2[expr.alignof]{Alignof} +\rSec3[expr.alignof]{Alignof} \pnum \indextext{\idxcode{alignof}}% @@ -4211,13 +4348,13 @@ is applied to an array type, the result is the alignment of the element type. -\rSec2[expr.unary.noexcept]{\tcode{noexcept} operator} +\rSec3[expr.unary.noexcept]{\tcode{noexcept} operator} \pnum \indextext{\idxcode{noexcept}}% \indextext{expression!\idxcode{noexcept}}% The \tcode{noexcept} operator determines whether the evaluation of its operand, -which is an unevaluated operand\iref{expr}, can throw an +which is an unevaluated operand\iref{expr.prop}, can throw an exception\iref{except.throw}. \begin{bnf} @@ -4234,7 +4371,7 @@ unless the \grammarterm{expression} is potentially-throwing\iref{except.spec}. \indextext{expression!unary|)} -\rSec1[expr.cast]{Explicit type conversion (cast notation)}% +\rSec2[expr.cast]{Explicit type conversion (cast notation)}% \indextext{expression!cast|(} \pnum @@ -4245,7 +4382,7 @@ \begin{note} If \tcode{T} is a non-class type that is cv-qualified, the \grammarterm{cv-qualifier}{s} are discarded when determining the type of the -resulting prvalue; see \ref{expr}. +resulting prvalue; see \ref{expr.prop}. \end{note} \pnum @@ -4335,7 +4472,7 @@ \end{note}% \indextext{expression!cast|)} -\rSec1[expr.mptr.oper]{Pointer-to-member operators} +\rSec2[expr.mptr.oper]{Pointer-to-member operators} \pnum \indextext{expression!pointer-to-member}% @@ -4435,7 +4572,7 @@ If the second operand is the null member pointer value\iref{conv.mem}, the behavior is undefined. -\rSec1[expr.mul]{Multiplicative operators}% +\rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% \indextext{operator!multiplicative} @@ -4481,7 +4618,7 @@ \tcode{(a/b)*b + a\%b} is equal to \tcode{a}; otherwise, the behavior of both \tcode{a/b} and \tcode{a\%b} is undefined. -\rSec1[expr.add]{Additive operators}% +\rSec2[expr.add]{Additive operators}% \indextext{expression!additive operators}% \indextext{operator!additive} @@ -4591,7 +4728,7 @@ the result compares equal to the value 0 converted to the type \tcode{std::ptrdiff_t}. -\rSec1[expr.shift]{Shift operators} +\rSec2[expr.shift]{Shift operators} \pnum \indextext{expression!left-shift-operator}% @@ -4643,7 +4780,7 @@ \pnum The expression \tcode{E1} is sequenced before the expression \tcode{E2}. -\rSec1[expr.rel]{Relational operators}% +\rSec2[expr.rel]{Relational operators}% \indextext{expression!relational operators}% \indextext{operator!relational} @@ -4683,7 +4820,7 @@ or enumeration type. If both operands are pointers, pointer conversions\iref{conv.ptr} and qualification conversions\iref{conv.qual} are performed to bring -them to their composite pointer type\iref{expr}. +them to their composite pointer type\iref{expr.prop}. After conversions, the operands shall have the same type. \pnum @@ -4725,7 +4862,7 @@ of the operators shall yield \tcode{true} if the specified relationship is true and \tcode{false} if it is false. -\rSec1[expr.eq]{Equality operators}% +\rSec2[expr.eq]{Equality operators}% \indextext{expression!equality operators}% \indextext{operator!equality}% \indextext{operator!inequality} @@ -4752,7 +4889,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} -are performed on both operands to bring them to their composite pointer type\iref{expr}. +are performed on both operands to bring them to their composite pointer type\iref{expr.prop}. Comparing pointers is defined as follows: \begin{itemize} @@ -4775,7 +4912,7 @@ If at least one of the operands is a pointer to member, pointer to member conversions\iref{conv.mem} and qualification conversions\iref{conv.qual} are performed on both operands to bring them to -their composite pointer type\iref{expr}. +their composite pointer type\iref{expr.prop}. Comparing pointers to members is defined as follows: \begin{itemize} @@ -4854,7 +4991,7 @@ \tcode{true} if the specified relationship is true and \tcode{false} if it is false. -\rSec1[expr.bit.and]{Bitwise AND operator}% +\rSec2[expr.bit.and]{Bitwise AND operator}% \indextext{expression!bitwise AND}% \indextext{operator!bitwise}% \indextext{operator!bitwise AND}% @@ -4871,7 +5008,7 @@ bitwise \logop{AND} function of the operands. The operator applies only to integral or unscoped enumeration operands. -\rSec1[expr.xor]{Bitwise exclusive OR operator}% +\rSec2[expr.xor]{Bitwise exclusive OR operator}% \indextext{expression!bitwise exclusive OR}% \indextext{operator!bitwise exclusive OR}% \indextext{\idxcode{\caret}|see{operator, bitwise exclusive OR}} @@ -4887,7 +5024,7 @@ bitwise exclusive \logop{OR} function of the operands. The operator applies only to integral or unscoped enumeration operands. -\rSec1[expr.or]{Bitwise inclusive OR operator}% +\rSec2[expr.or]{Bitwise inclusive OR operator}% \indextext{expression!bitwise inclusive OR}% \indextext{operator!bitwise inclusive OR}% \indextext{\idxcode{"|}|see{operator, bitwise inclusive OR}} @@ -4903,7 +5040,7 @@ bitwise inclusive \logop{OR} function of its operands. The operator applies only to integral or unscoped enumeration operands. -\rSec1[expr.log.and]{Logical AND operator}% +\rSec2[expr.log.and]{Logical AND operator}% \indextext{expression!logical AND}% \indextext{operator!logical AND}% \indextext{\idxcode{\&\&}|see{operator, logical AND}}% @@ -4934,7 +5071,7 @@ effect associated with the first expression is sequenced before every value computation and side effect associated with the second expression. -\rSec1[expr.log.or]{Logical OR operator}% +\rSec2[expr.log.or]{Logical OR operator}% \indextext{expression!logical OR}% \indextext{operator!logical OR}% \indextext{\idxcode{"|"|}|see{operator, logical OR}}% @@ -4965,7 +5102,7 @@ associated with the first expression is sequenced before every value computation and side effect associated with the second expression. -\rSec1[expr.cond]{Conditional operator}% +\rSec2[expr.cond]{Conditional operator}% \indextext{expression!conditional operator}% \indextext{operator!conditional expression}% \indextext{\idxcode{?:}|see{operator, conditional expression}}% @@ -5110,13 +5247,13 @@ function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring them to their -composite pointer type\iref{expr}. The result is of the composite +composite pointer type\iref{expr.prop}. The result is of the composite pointer type. \item One or both of the second and third operands have pointer to member type; pointer to member conversions\iref{conv.mem} and qualification conversions\iref{conv.qual} are performed to bring them to their composite -pointer type\iref{expr}. The result is of the composite pointer type. +pointer type\iref{expr.prop}. The result is of the composite pointer type. \item Both the second and third operands have type \tcode{std::nullptr_t} or one has @@ -5125,7 +5262,7 @@ \end{itemize} -\rSec1[expr.throw]{Throwing an exception}% +\rSec2[expr.throw]{Throwing an exception}% \indextext{expression!\idxcode{throw}}% \indextext{exception handling!throwing}% \indextext{\idxcode{throw}}% @@ -5177,7 +5314,7 @@ with no operand calls \tcode{std::\brk{}terminate()}\iref{except.terminate}. -\rSec1[expr.ass]{Assignment and compound assignment operators}% +\rSec2[expr.ass]{Assignment and compound assignment operators}% \indextext{expression!assignment and compound assignment} \pnum @@ -5297,7 +5434,7 @@ \end{codeblock} \end{example} -\rSec1[expr.comma]{Comma operator}% +\rSec2[expr.comma]{Comma operator}% \indextext{expression!comma}% \indextext{operator!comma}% \indextext{comma operator|see{operator, comma}}% @@ -5315,7 +5452,7 @@ A pair of expressions separated by a comma is evaluated left-to-right; the left expression is -a discarded-value expression\iref{expr}. +a discarded-value expression\iref{expr.prop}. Every \indextext{value computation}% value computation and side effect @@ -5333,7 +5470,7 @@ In contexts where comma is given a special meaning, \begin{example} in lists of arguments to functions\iref{expr.call} and lists of initializers\iref{dcl.init} \end{example} the comma operator as -described in \ref{expr} can appear only in parentheses. +described in this subclause can appear only in parentheses. \begin{example} \begin{codeblock} @@ -5401,7 +5538,7 @@ an operation that would have undefined behavior as specified in \ref{intro} through \ref{cpp} of this document \begin{note} including, -for example, signed integer overflow\iref{expr}, certain +for example, signed integer overflow\iref{expr.prop}, certain pointer arithmetic\iref{expr.add}, division by zero\iref{expr.mul}, or certain shift operations\iref{expr.shift} \end{note}; diff --git a/source/overloading.tex b/source/overloading.tex index 05ff8bb5f0..7a535873ca 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -909,7 +909,7 @@ \pnum If no operand of an operator in an expression has a type that is a class or an enumeration, the operator is assumed to be a built-in operator -and interpreted according to \ref{expr}. +and interpreted according to \ref{expr.compound}. \begin{note} Because \tcode{.}, @@ -918,7 +918,7 @@ \tcode{::} cannot be overloaded, these operators are always built-in operators interpreted according to -\ref{expr}. +\ref{expr.compound}. \tcode{?:} cannot be overloaded, but the rules in this subclause are used to determine the conversions to be applied to the second and third operands when they @@ -956,7 +956,7 @@ Table~\ref{tab:over.rel.op.func} (where \tcode{@} denotes one of the operators covered in the specified subclause). However, the operands are sequenced in the order prescribed -for the built-in operator\iref{expr}. +for the built-in operator\iref{expr.compound}. \begin{floattable}{Relationship between operator and function call notation}{tab:over.rel.op.func} {l|m|m|m} @@ -1088,7 +1088,7 @@ of the selected operation function, except that the second standard conversion sequence of a user-defined conversion sequence\iref{over.ics.user} is not applied. Then the operator is treated as the corresponding -built-in operator and interpreted according to \ref{expr}. +built-in operator and interpreted according to \ref{expr.compound}. \begin{example} \begin{codeblock} struct X { @@ -1135,7 +1135,7 @@ \tcode{->}, and there are no viable functions, then the operator is assumed to be the built-in operator and interpreted according to -\ref{expr}. +\ref{expr.compound}. \pnum \begin{note} @@ -3507,7 +3507,7 @@ \pnum The candidate operator functions that represent the built-in operators -defined in \ref{expr} are specified in this subclause. +defined in \ref{expr.compound} are specified in this subclause. These candidate functions participate in the operator overload resolution process as described in~\ref{over.match.oper} and are used for no other purpose. @@ -3525,7 +3525,7 @@ As described in~\ref{over.match.oper}, after a built-in operator is selected by overload resolution the expression is subject to the requirements for -the built-in operator given in \ref{expr}, and therefore to any +the built-in operator given in \ref{expr.compound}, and therefore to any additional semantic constraints given there. If there is a user-written candidate with the same name and parameter types as a built-in diff --git a/source/special.tex b/source/special.tex index f05479de81..f0ecf81799 100644 --- a/source/special.tex +++ b/source/special.tex @@ -386,7 +386,7 @@ \end{note} \end{itemize} Even when the creation of the temporary object is -unevaluated\iref{expr}, +unevaluated\iref{expr.prop}, all the semantic restrictions shall be respected as if the temporary object had been created and later destroyed. \begin{note} @@ -416,7 +416,7 @@ \item for certain unevaluated operands~(\ref{expr.typeid}, \ref{expr.sizeof}), and \item -when a prvalue appears as a discarded-value expression\iref{expr}. +when a prvalue appears as a discarded-value expression\iref{expr.prop}. \end{itemize} \end{note} \begin{example} Consider the following code: @@ -548,10 +548,13 @@ where the left operand is one of these expressions and the right operand is a pointer to data member of non-reference type, \item - a \tcode{const_cast}\iref{expr.const.cast}, - \tcode{static_cast}\iref{expr.static.cast}, - \tcode{dynamic_cast}\iref{expr.dynamic.cast}, or - \tcode{reinterpret_cast}\iref{expr.reinterpret.cast} + a + \begin{itemize} + \item \tcode{const_cast}\iref{expr.const.cast}, + \item \tcode{static_cast}\iref{expr.static.cast}, + \item \tcode{dynamic_cast}\iref{expr.dynamic.cast}, or + \item \tcode{reinterpret_cast}\iref{expr.reinterpret.cast} + \end{itemize} converting, without a user-defined conversion, a glvalue operand that is one of these expressions to a glvalue that refers diff --git a/source/statements.tex b/source/statements.tex index 2242f280a8..0faf52fae0 100644 --- a/source/statements.tex +++ b/source/statements.tex @@ -143,7 +143,7 @@ \end{bnf} The expression is -a discarded-value expression\iref{expr}. +a discarded-value expression\iref{expr.prop}. All \indextext{side effects}% side effects from an expression statement diff --git a/source/utilities.tex b/source/utilities.tex index f0a8be6a07..47b1bc5a47 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -469,7 +469,7 @@ \pnum The library provides the function template \tcode{declval} to simplify the definition of -expressions which occur as unevaluated operands\iref{expr}. +expressions which occur as unevaluated operands\iref{expr.prop}. \indexlibrary{\idxcode{declval}}% \begin{itemdecl} @@ -14293,7 +14293,7 @@ and return type \tcode{R} if the expression \tcode{\placeholdernc{INVOKE}(declval(), declval()...)}, -considered as an unevaluated operand\iref{expr}, is +considered as an unevaluated operand\iref{expr.prop}, is well-formed\iref{func.require}. \pnum @@ -15751,7 +15751,7 @@ \tcode{struct is_assignable;} & The expression \tcode{declval() =} \tcode{declval()} is well-formed when treated as an unevaluated - operand\iref{expr}. Access checking is performed as if in a context + operand\iref{expr.prop}. Access checking is performed as if in a context unrelated to \tcode{T} and \tcode{U}. Only the validity of the immediate context of the assignment expression is considered. \begin{note} The compilation of the expression can result in side effects such as the instantiation of class template @@ -15782,7 +15782,7 @@ \tcode{struct is_swappable_with;} & The expressions \tcode{swap(declval(), declval())} and \tcode{swap(declval(), declval())} are each well-formed - when treated as an unevaluated operand\iref{expr} + when treated as an unevaluated operand\iref{expr.prop} in an overload-resolution context for swappable values\iref{swappable.requirements}. Access checking is performed as if in a context @@ -15819,7 +15819,7 @@ for which the expression \tcode{declval().\~U()} is well-formed - when treated as an unevaluated operand\iref{expr}, + when treated as an unevaluated operand\iref{expr.prop}, where \tcode{U} is \tcode{remove_all_extents_t}. & \tcode{T} shall be a complete type, \cv{}~\tcode{void}, @@ -16612,7 +16612,7 @@ \tcode{struct invoke_result;} & If the expression \tcode{\placeholdernc{INVOKE}(declval(), declval()...)} - is well-formed when treated as an unevaluated operand\iref{expr}, + is well-formed when treated as an unevaluated operand\iref{expr.prop}, the member typedef \tcode{type} names the type \tcode{decltype(\placeholdernc{INVOKE}(declval(), declval()...))}; otherwise, there shall be no member \tcode{type}. Access checking is From 04c4e8338eadb18deb63354a95c2624ef5b3fbed Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Sat, 11 Nov 2017 19:34:18 +0100 Subject: [PATCH 022/168] [intro.execution] Clarify full-expression in example. Fixes #1706. --- source/basic.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index e25d8676fe..ad7573b9dc 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -4257,9 +4257,9 @@ int I; }; -S s1(1); // full-expression is call of \tcode{S::S(int)} +S s1(1); // full-expression comprises call of \tcode{S::S(int)} void f() { - S s2 = 2; // full-expression is call of \tcode{S::S(int)} + S s2 = 2; // full-expression comprises call of \tcode{S::S(int)} if (S(3).v()) // full-expression includes lvalue-to-rvalue and // \tcode{int} to \tcode{bool} conversions, performed before // temporary is deleted at end of full-expression From 7c6f936298543387f2f17563f01e95fce904783d Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Thu, 2 Nov 2017 22:18:04 +0100 Subject: [PATCH 023/168] [array] Dissolve single-item subclauses. Partially addresses #1242. --- source/containers.tex | 47 +++++++++++++++++++------------------------ source/xrefdelta.tex | 6 ++++++ 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/source/containers.tex b/source/containers.tex index a1cda76546..35c02bf935 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -3238,27 +3238,7 @@ \requires \tcode{(is_same_v \&\& ...)} is \tcode{true}. Otherwise the program is ill-formed. \end{itemdescr} -\rSec3[array.special]{\tcode{array} specialized algorithms} - -\indexlibrarymember{array}{swap}% -\begin{itemdecl} -template - void swap(array& x, array& y) noexcept(noexcept(x.swap(y))); -\end{itemdecl} - -\begin{itemdescr} -\pnum\remarks -This function shall not participate in overload resolution -unless \tcode{N == 0} or \tcode{is_swappable_v} is \tcode{true}. - -\pnum\effects -As if by \tcode{x.swap(y)}. - -\pnum -\complexity Linear in \tcode{N}. -\end{itemdescr} - -\rSec3[array.size]{\tcode{array::size}} +\rSec3[array.members]{\tcode{array} member functions} \indexlibrarymember{array}{size}% \begin{itemdecl} @@ -3269,7 +3249,6 @@ \pnum\returns \tcode{N}. \end{itemdescr} -\rSec3[array.data]{\tcode{array::data}} \indexlibrarymember{array}{data}% \begin{itemdecl} constexpr T* data() noexcept; @@ -3282,8 +3261,6 @@ and \range{data()}{data() + size()} is a valid range. \end{itemdescr} -\rSec3[array.fill]{\tcode{array::fill}} - \indexlibrarymember{array}{fill}% \begin{itemdecl} void fill(const T& u); @@ -3294,8 +3271,6 @@ \effects As if by \tcode{fill_n(begin(), N, u)}. \end{itemdescr} -\rSec3[array.swap]{\tcode{array::swap}} - \indexlibrarymember{array}{swap}% \begin{itemdecl} void swap(array& y) noexcept(is_nothrow_swappable_v); @@ -3313,6 +3288,26 @@ \end{note} \end{itemdescr} +\rSec3[array.special]{\tcode{array} specialized algorithms} + +\indexlibrarymember{array}{swap}% +\begin{itemdecl} +template + void swap(array& x, array& y) noexcept(noexcept(x.swap(y))); +\end{itemdecl} + +\begin{itemdescr} +\pnum\remarks +This function shall not participate in overload resolution +unless \tcode{N == 0} or \tcode{is_swappable_v} is \tcode{true}. + +\pnum\effects +As if by \tcode{x.swap(y)}. + +\pnum +\complexity Linear in \tcode{N}. +\end{itemdescr} + \rSec3[array.zero]{Zero sized arrays} \indextext{\idxcode{array}!zero sized}% diff --git a/source/xrefdelta.tex b/source/xrefdelta.tex index c8eb4782cb..b4007c7ac6 100644 --- a/source/xrefdelta.tex +++ b/source/xrefdelta.tex @@ -36,5 +36,11 @@ \secref{fs.path.generic}, \secref{fs.race.behavior}} +% Single-item array subclauses were dissolved. +\movedxref{array.size}{array.members} +\movedxref{array.data}{array.members} +\movedxref{array.fill}{array.members} +\movedxref{array.swap}{array.members} + % Deprecated features. %\deprxref{old.label} (if moved to depr.old.label, otherwise use \movedxref) From 672bb6075cb0512a234b4f6bdd41f00cc01e6642 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Wed, 19 Apr 2017 23:03:42 +0200 Subject: [PATCH 024/168] [dcl.init] Clarify introduction Fixes #1615. --- source/declarators.tex | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/source/declarators.tex b/source/declarators.tex index 7189f9fea9..c7996d2867 100644 --- a/source/declarators.tex +++ b/source/declarators.tex @@ -2378,15 +2378,11 @@ \indextext{initialization|(} \pnum -A declarator can specify an initial value for the -identifier being declared. -The identifier designates a variable being initialized. -The process of initialization described in the -remainder of~\ref{dcl.init} -applies also to initializations -specified by other syntactic contexts, such as the initialization -of function parameters\iref{expr.call} or -the initialization of return values\iref{stmt.return}. +The process of initialization described in this subclause applies to +all initializations regardless of syntactic context, including the +initialization of a function parameter\iref{expr.call}, the +initialization of a return value\iref{stmt.return}, or when an +initializer follows a declarator. \begin{bnf} \nontermdef{initializer}\br @@ -2441,6 +2437,12 @@ braced-init-list \end{bnf} +\begin{note} +The rules in this subclause apply even if the grammar permits only +the \grammarterm{brace-or-equal-initializer} form +of \grammarterm{initializer} in a given context. +\end{note} + \pnum Except for objects declared with the \tcode{constexpr} specifier, for which see~\ref{dcl.constexpr}, an \grammarterm{initializer} in the definition of a variable can consist of From ff65cec7b977db1a6900b0321f10c91e152ab8d2 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Wed, 1 Nov 2017 23:39:21 +0100 Subject: [PATCH 025/168] Use 'trailing requires-clause' where the requires-clause in a template-head is not meant. Fixes #1672. --- source/declarators.tex | 2 +- source/derived.tex | 2 +- source/expressions.tex | 2 +- source/intro.tex | 8 ++++---- source/overloading.tex | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/source/declarators.tex b/source/declarators.tex index c7996d2867..763f03eecf 100644 --- a/source/declarators.tex +++ b/source/declarators.tex @@ -1472,7 +1472,7 @@ the \grammarterm{cv-qualifier-seq}, and the exception specification, but not the default arguments\iref{dcl.fct.default} -or \grammarterm{requires-clause}{s}\iref{temp}, +or the trailing \grammarterm{requires-clause}\iref{dcl.decl}, are part of the function type. \begin{note} Function types are checked during the assignments and initializations of diff --git a/source/derived.tex b/source/derived.tex index 6833ebf167..c5a03fcf35 100644 --- a/source/derived.tex +++ b/source/derived.tex @@ -687,7 +687,7 @@ \end{example} \pnum -A virtual function shall not have a \grammarterm{requires-clause}. +A virtual function shall not have a trailing \grammarterm{requires-clause}\iref{dcl.decl}. \begin{example} \begin{codeblock} struct A { diff --git a/source/expressions.tex b/source/expressions.tex index d285987765..609f66d9c7 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -643,7 +643,7 @@ \pnum A program that refers explicitly or implicitly -to a function with a \grammarterm{requires-clause} +to a function with a trailing \grammarterm{requires-clause} whose \grammarterm{constraint-expression} is not satisfied, other than to declare it, is ill-formed. diff --git a/source/intro.tex b/source/intro.tex index b497e4df48..57e8158826 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -219,7 +219,7 @@ parameter type list\iref{dcl.fct}, enclosing namespace (if any), and -\grammarterm{requires-clause}\iref{temp.constr.decl} (if any) +trailing \grammarterm{requires-clause}\iref{dcl.decl} (if any) \begin{defnote} Signatures are used as a basis for @@ -235,7 +235,7 @@ return type, \grammarterm{template-head}, and -\grammarterm{requires-clause}\iref{temp.constr.decl} (if any) +trailing \grammarterm{requires-clause}\iref{dcl.decl} (if any) \indexdefn{signature}% \definition{signature}{defns.signature.spec} @@ -251,7 +251,7 @@ \cv-qualifiers (if any), \grammarterm{ref-qualifier} (if any), and -\grammarterm{requires-clause}\iref{temp.constr.decl} (if any) +trailing \grammarterm{requires-clause}\iref{dcl.decl} (if any) \indexdefn{signature}% \definition{signature}{defns.signature.member.templ} @@ -264,7 +264,7 @@ return type (if any), \grammarterm{template-head}, and -\grammarterm{requires-clause}\iref{temp.constr.decl} (if any) +trailing \grammarterm{requires-clause}\iref{dcl.decl} (if any) \indexdefn{signature}% \definition{signature}{defns.signature.member.spec} diff --git a/source/overloading.tex b/source/overloading.tex index 7a535873ca..f4070f40cd 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -309,7 +309,7 @@ \pnum Two function declarations of the same name refer to the same function if they are in the same scope and have equivalent parameter declarations\iref{over.load} -and equivalent \grammarterm{requires-clause}{s}, if any\iref{temp.constr.decl}. +and equivalent trailing \grammarterm{requires-clause}{s}, if any\iref{dcl.decl}. A function member of a derived class is \textit{not} in the same scope as a function member of the same name in a base class. From 801fb0ba013362cede5a9eaeae0da688e554d3ad Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Sun, 12 Nov 2017 06:51:19 +0100 Subject: [PATCH 026/168] [conv.rank] Move from [conv] to [basic.types] (#1802) --- source/basic.tex | 56 ++++++++++++++++++++++++++++++++++++++++++ source/conversions.tex | 55 ----------------------------------------- 2 files changed, 56 insertions(+), 55 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index ad7573b9dc..5315542c9a 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -4155,6 +4155,62 @@ \end{example}% \indextext{type|)} +\rSec2[conv.rank]{Integer conversion rank}% +\indextext{conversion!integer rank} + +\pnum +Every integer type has an \term{integer conversion rank} defined as follows: + +\begin{itemize} +\item No two signed integer types other than \tcode{char} and \tcode{signed +char} (if \tcode{char} is signed) shall have the same rank, even if they have +the same representation. + +\item The rank of a signed integer type shall be greater than the rank +of any signed integer type with a smaller size. + +\item The rank of \tcode{long long int} shall be greater +than the rank of \tcode{long int}, which shall be greater than +the rank of \tcode{int}, which shall be greater than the rank of +\tcode{short int}, which shall be greater than the rank of +\tcode{signed char}. + +\item The rank of any unsigned integer type shall equal the rank of the +corresponding signed integer type. + +\item The rank of any standard integer type shall be greater than the +rank of any extended integer type with the same size. + +\item The rank of \tcode{char} shall equal the rank of \tcode{signed char} +and \tcode{unsigned char}. + +\item The rank of \tcode{bool} shall be less than the rank of all other +standard integer types. + +\indextext{type!\idxcode{wchar_t}}% +\indextext{type!\idxcode{char16_t}}% +\indextext{type!\idxcode{char32_t}}% +\item The ranks of \tcode{char16_t}, \tcode{char32_t}, and +\tcode{wchar_t} shall equal the ranks of their underlying +types\iref{basic.fundamental}. + +\item The rank of any extended signed integer type relative to another +extended signed integer type with the same size is \impldef{rank of extended signed +integer type}, but still subject to the other rules for determining the integer +conversion rank. + +\item For all integer types \tcode{T1}, \tcode{T2}, and \tcode{T3}, if +\tcode{T1} has greater rank than \tcode{T2} and \tcode{T2} has greater +rank than \tcode{T3}, then \tcode{T1} shall have greater rank than +\tcode{T3}. +\end{itemize} + +\begin{note} +The integer conversion rank is used in the definition of the integral +promotions\iref{conv.prom} and the usual arithmetic +conversions\iref{expr.prop}. +\end{note}% + \rSec1[basic.exec]{Program execution} \rSec2[intro.execution]{Sequential execution} diff --git a/source/conversions.tex b/source/conversions.tex index af6ea868c8..fb97829c13 100644 --- a/source/conversions.tex +++ b/source/conversions.tex @@ -608,59 +608,4 @@ \tcode{std::nullptr_t} can be converted to a prvalue of type \tcode{bool}; the resulting value is \tcode{false}. -\rSec1[conv.rank]{Integer conversion rank}% -\indextext{conversion!integer rank} - -\pnum -Every integer type has an \term{integer conversion rank} defined as follows: - -\begin{itemize} -\item No two signed integer types other than \tcode{char} and \tcode{signed -char} (if \tcode{char} is signed) shall have the same rank, even if they have -the same representation. - -\item The rank of a signed integer type shall be greater than the rank -of any signed integer type with a smaller size. - -\item The rank of \tcode{long long int} shall be greater -than the rank of \tcode{long int}, which shall be greater than -the rank of \tcode{int}, which shall be greater than the rank of -\tcode{short int}, which shall be greater than the rank of -\tcode{signed char}. - -\item The rank of any unsigned integer type shall equal the rank of the -corresponding signed integer type. - -\item The rank of any standard integer type shall be greater than the -rank of any extended integer type with the same size. - -\item The rank of \tcode{char} shall equal the rank of \tcode{signed char} -and \tcode{unsigned char}. - -\item The rank of \tcode{bool} shall be less than the rank of all other -standard integer types. - -\indextext{type!\idxcode{wchar_t}}% -\indextext{type!\idxcode{char16_t}}% -\indextext{type!\idxcode{char32_t}}% -\item The ranks of \tcode{char16_t}, \tcode{char32_t}, and -\tcode{wchar_t} shall equal the ranks of their underlying -types\iref{basic.fundamental}. - -\item The rank of any extended signed integer type relative to another -extended signed integer type with the same size is \impldef{rank of extended signed -integer type}, but still subject to the other rules for determining the integer -conversion rank. - -\item For all integer types \tcode{T1}, \tcode{T2}, and \tcode{T3}, if -\tcode{T1} has greater rank than \tcode{T2} and \tcode{T2} has greater -rank than \tcode{T3}, then \tcode{T1} shall have greater rank than -\tcode{T3}. -\end{itemize} - -\begin{note} -The integer conversion rank is used in the definition of the integral -promotions\iref{conv.prom} and the usual arithmetic -conversions\iref{expr.prop}. -\end{note}% \indextext{conversion!standard|)} From d56921b4edbf1cd9f21fec50d0a3dad98a4e45f3 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 28 Mar 2017 23:08:30 +0200 Subject: [PATCH 027/168] Use 'subclause', not 'section'. The ISO Directives, Part 2, prescribe the term 'subclause'. Also remove overview sub-headings for non-normative subclause overview text. Fixes #307. --- source/algorithms.tex | 8 ++-- source/atomics.tex | 2 +- source/back.tex | 8 ++-- source/basic.tex | 10 ++--- source/containers.tex | 8 ++-- source/declarations.tex | 6 +-- source/declarators.tex | 4 +- source/diagnostics.tex | 2 +- source/exceptions.tex | 4 +- source/expressions.tex | 14 +++---- source/future.tex | 2 +- source/intro.tex | 2 - source/iostreams.tex | 4 +- source/iterators.tex | 2 +- source/lib-intro.tex | 10 ++--- source/numerics.tex | 90 ++++++++++++++++++++--------------------- source/overloading.tex | 6 +-- source/preprocessor.tex | 2 +- source/strings.tex | 6 +-- source/templates.tex | 4 +- source/threads.tex | 4 +- source/utilities.tex | 10 ++--- 22 files changed, 103 insertions(+), 105 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index 0c2b788f20..049c0bff76 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -1112,7 +1112,7 @@ \pnum If an algorithm's \effects -section says that a value pointed to by any iterator passed +element specifies that a value pointed to by any iterator passed as an argument is modified, then that algorithm has an additional type requirement: The type of that argument shall satisfy the requirements @@ -1226,7 +1226,7 @@ \rSec1[algorithms.parallel]{Parallel algorithms} \pnum -This section describes components that \Cpp programs may use to perform +This subclause describes components that \Cpp programs may use to perform operations on containers and other sequences in parallel. \rSec2[algorithms.parallel.defns]{Terms and definitions} @@ -3937,7 +3937,7 @@ \rSec2[alg.binary.search]{Binary search} \pnum -All of the algorithms in this section are versions of binary search +All of the algorithms in this subclause are versions of binary search and assume that the sequence being searched is partitioned with respect to an expression formed by binding the search key to an argument of the implied or explicit comparison function. @@ -4496,7 +4496,7 @@ \rSec2[alg.set.operations]{Set operations on sorted structures} \pnum -This section defines all the basic set operations on sorted structures. +This subclause defines all the basic set operations on sorted structures. They also work with \tcode{multiset}s\iref{multiset} containing multiple copies of equivalent elements. diff --git a/source/atomics.tex b/source/atomics.tex index b02ad72121..b91d875913 100644 --- a/source/atomics.tex +++ b/source/atomics.tex @@ -1413,7 +1413,7 @@ \rSec1[atomics.fences]{Fences} \pnum -This section introduces synchronization primitives called \term{fences}. Fences can have +This subclause introduces synchronization primitives called \term{fences}. Fences can have acquire semantics, release semantics, or both. A fence with acquire semantics is called an \term{acquire fence}. A fence with release semantics is called a \term{release fence}. diff --git a/source/back.tex b/source/back.tex index 16589e344a..d2b5dec82b 100644 --- a/source/back.tex +++ b/source/back.tex @@ -25,8 +25,8 @@ \chapter{Bibliography} \clearpage \renewcommand{\glossaryname}{Cross references} -\renewcommand{\preglossaryhook}{This annex lists each section label and the -corresponding section number and page number, in alphabetical order by label.\\} +\renewcommand{\preglossaryhook}{This annex lists each clause or subclause label and the +corresponding clause or subclause number and page number, in alphabetical order by label.\\} \twocolglossary \renewcommand{\leftmark}{\glossaryname} { @@ -37,7 +37,7 @@ \chapter{Bibliography} \clearpage \input{xrefdelta} \renewcommand{\glossaryname}{Cross references from ISO \CppXVII} -\renewcommand{\preglossaryhook}{All section labels from +\renewcommand{\preglossaryhook}{All clause and subclause labels from ISO \CppXVII (ISO/IEC 14882:2017, \doccite{Programming Languages --- \Cpp}) are present in this document, with the exceptions described below.\\} \renewcommand{\leftmark}{\glossaryname} @@ -74,7 +74,7 @@ \chapter{Bibliography} } \clearpage -\renewcommand{\preindexhook}{The entries in this section are rough descriptions; exact +\renewcommand{\preindexhook}{The entries in this index are rough descriptions; exact specifications are at the indicated page in the general text.\\} \renewcommand{\indexname}{Index of implementation-defined behavior} \renewcommand{\leftmark}{\indexname} diff --git a/source/basic.tex b/source/basic.tex index 5315542c9a..03aad933e2 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -2947,7 +2947,7 @@ \end{example} \pnum -In this section, ``before'' and ``after'' refer to the ``happens before'' +In this subclause, ``before'' and ``after'' refer to the ``happens before'' relation\iref{intro.multithread}. \begin{note} Therefore, undefined behavior results if an object that is being constructed in one thread is referenced from another thread without adequate synchronization. \end{note}% @@ -3286,7 +3286,7 @@ \item the value returned by a call to the \Cpp standard library implementation of \tcode{::operator new(std::\brk{}size_t)} or \tcode{::operator new(std::size_t, std::align_val_t)}% -;\footnote{This section does not impose restrictions +;\footnote{This subclause does not impose restrictions on indirection through pointers to memory not allocated by \tcode{::operator new}. This maintains the ability of many \Cpp implementations to use binary libraries and components written in other languages. In particular, this applies to C binaries, @@ -3771,7 +3771,7 @@ unsigned integer types are collectively called the \defnx{extended integer types}{extended integer type}. The signed and unsigned integer types shall satisfy -the constraints given in the C standard, section 5.2.4.2.1. +the constraints given in the C standard, subclause 5.2.4.2.1. \pnum \indextext{arithmetic!\idxcode{unsigned}}% @@ -4410,7 +4410,7 @@ and they are not potentially concurrent\iref{intro.multithread}, the behavior is undefined. \begin{note} -The next section imposes similar, but more complex restrictions on +The next subclause imposes similar, but more complex restrictions on potentially concurrent computations. \end{note} @@ -4509,7 +4509,7 @@ initial value of the object, a value assigned to the object by \placeholder{T}, or a value assigned to the object by another thread, according to the rules below. \begin{note} In some cases, there may instead be undefined behavior. Much of this -section is motivated by the desire to support atomic operations with explicit +subclause is motivated by the desire to support atomic operations with explicit and detailed visibility constraints. However, it also implicitly supports a simpler view for more restricted programs. \end{note} diff --git a/source/containers.tex b/source/containers.tex index 35c02bf935..3d5e277b32 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -7502,7 +7502,7 @@ An \tcode{unordered_map} satisfies all of the requirements of a container, of an unordered associative container, and of an allocator-aware container (Table~\ref{tab:containers.allocatoraware}). It provides the operations described in the preceding requirements table for unique keys; that is, an \tcode{unordered_map} supports the \tcode{a_uniq} operations in that table, not the \tcode{a_eq} operations. For an \tcode{unordered_map} the \tcode{key type} is \tcode{Key}, the mapped type is \tcode{T}, and the value type is \tcode{pair}. \pnum -This section only describes operations on \tcode{unordered_map} that +This subclause only describes operations on \tcode{unordered_map} that are not described in one of the requirement tables, or for which there is additional semantic information. @@ -8062,7 +8062,7 @@ mapped type is \tcode{T}, and the value type is \tcode{pair}. \pnum -This section only describes operations on \tcode{unordered_multimap} +This subclause only describes operations on \tcode{unordered_multimap} that are not described in one of the requirement tables, or for which there is additional semantic information. @@ -8406,7 +8406,7 @@ An \tcode{unordered_set} satisfies all of the requirements of a container, of an unordered associative container, and of an allocator-aware container (Table~\ref{tab:containers.allocatoraware}). It provides the operations described in the preceding requirements table for unique keys; that is, an \tcode{unordered_set} supports the \tcode{a_uniq} operations in that table, not the \tcode{a_eq} operations. For an \tcode{unordered_set} the \tcode{key type} and the value type are both \tcode{Key}. The \tcode{iterator} and \tcode{const_iterator} types are both constant iterator types. It is unspecified whether they are the same type. \pnum -This section only describes operations on \tcode{unordered_set} that +This subclause only describes operations on \tcode{unordered_set} that are not described in one of the requirement tables, or for which there is additional semantic information. @@ -8709,7 +8709,7 @@ constant iterator types. It is unspecified whether they are the same type. \pnum -This section only describes operations on \tcode{unordered_multiset} that +This subclause only describes operations on \tcode{unordered_multiset} that are not described in one of the requirement tables, or for which there is additional semantic information. diff --git a/source/declarations.tex b/source/declarations.tex index ea5061cd5f..8e96dbb424 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -977,7 +977,7 @@ point of call is to be preferred to the usual function call mechanism. An implementation is not required to perform this inline substitution at the point of call; however, even if this inline substitution is omitted, -the other rules for inline functions specified in this section shall +the other rules for inline functions specified in this subclause shall still be respected. \pnum @@ -1110,7 +1110,7 @@ \ref{class}, and \ref{temp.res}, respectively. The remaining -\grammarterm{type-specifier}{s} are discussed in the rest of this section. +\grammarterm{type-specifier}{s} are discussed in the rest of this subclause. \end{note} \rSec3[dcl.type.cv]{The \grammarterm{cv-qualifier}{s}}% @@ -1609,7 +1609,7 @@ \pnum A program that uses \tcode{auto} or \tcode{decltype(auto)} in a context not -explicitly allowed in this section is ill-formed. +explicitly allowed in this subclause is ill-formed. \pnum If the \grammarterm{init-declarator-list} contains more than one diff --git a/source/declarators.tex b/source/declarators.tex index 763f03eecf..c217ab33c2 100644 --- a/source/declarators.tex +++ b/source/declarators.tex @@ -3018,7 +3018,7 @@ to convert the expression, the program is ill-formed. \begin{note} If an initializer is itself an initializer list, the element is list-initialized, which will result in a recursive application -of the rules in this section if the element is an aggregate. \end{note} +of the rules in this subclause if the element is an aggregate. \end{note} \end{itemize} \begin{example} \begin{codeblock} @@ -3895,7 +3895,7 @@ \item Otherwise, if \tcode{T} is a character array and the initializer list has a single element that is an appropriately-typed string literal\iref{dcl.init.string}, -initialization is performed as described in that section. +initialization is performed as described in that subclause. \item Otherwise, if \tcode{T} is an aggregate, aggregate initialization is performed\iref{dcl.init.aggr}. diff --git a/source/diagnostics.tex b/source/diagnostics.tex index 1dcb7f3f4f..1910c723ee 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -939,7 +939,7 @@ Classes may be derived from \tcode{error_category} to support categories of errors in addition to those defined in this document. Such classes shall behave as specified in this -subclause. \begin{note} \tcode{error_category} objects are +subclause~\ref{syserr.errcat}. \begin{note} \tcode{error_category} objects are passed by reference, and two such objects are equal if they have the same address. This means that applications using custom \tcode{error_category} types should create a single object of each diff --git a/source/exceptions.tex b/source/exceptions.tex index ce99ca1f12..1491c8993b 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -180,7 +180,7 @@ \end{example} \pnum -In this section, ``before'' and ``after'' refer to the +In this Clause, ``before'' and ``after'' refer to the ``sequenced before'' relation\iref{intro.execution}. \rSec1[except.throw]{Throwing an exception}% @@ -362,7 +362,7 @@ \indextext{unwinding!stack}% As control passes from the point where an exception is thrown to a handler, -destructors are invoked by a process, specified in this section, called +destructors are invoked by a process, specified in this subclause, called \defn{stack unwinding}. \pnum diff --git a/source/expressions.tex b/source/expressions.tex index 609f66d9c7..ea05f015f0 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2324,7 +2324,7 @@ it is replaced by the return type of the function selected by overload resolution for class template deduction\iref{over.match.class.deduct} -for the remainder of this section. +for the remainder of this subclause. \pnum If the initializer is a parenthesized single expression, @@ -2826,7 +2826,7 @@ the result refers to the object or the specified base class subobject thereof; otherwise, the lvalue-to-rvalue conversion\iref{conv.lval} is applied to the bit-field and the resulting prvalue is used as the -\grammarterm{expression} of the \tcode{static_cast} for the remainder of this section. +\grammarterm{expression} of the \tcode{static_cast} for the remainder of this subclause. If \tcode{T2} is an inaccessible\iref{class.access} or ambiguous\iref{class.member.lookup} base class of \tcode{T1}, a program that necessitates such a cast is ill-formed. @@ -3168,7 +3168,7 @@ \pnum \begin{note} -Subject to the restrictions in this section, an expression may be cast +Subject to the restrictions in this subclause, an expression may be cast to its own type using a \tcode{const_cast} operator. \end{note} @@ -4156,7 +4156,7 @@ If the operand has a class type, the operand is converted to a pointer type by calling the above-mentioned conversion function, and the converted operand is used in place of the original operand for the -remainder of this section. +remainder of this subclause. In the first alternative (\defnx{delete object}{object!delete}), the value of the operand of \tcode{delete} may be a null pointer value, a pointer to a non-array object @@ -5149,7 +5149,7 @@ of the same value category and of types \cvqual{cv1} \tcode{T} and \cvqual{cv2} \tcode{T}, respectively, the operands are considered to be of type \cvqual{cv} \tcode{T} -for the remainder of this section, +for the remainder of this subclause, where \cvqual{cv} is the union of \cvqual{cv1} and \cvqual{cv2}. \pnum @@ -5206,7 +5206,7 @@ Otherwise, if exactly one conversion sequence can be formed, that conversion is applied to the chosen operand and the converted operand is used in place of the original operand for -the remainder of this section. +the remainder of this subclause. \begin{note} The conversion might be ill-formed even if an implicit conversion sequence could be formed. @@ -5226,7 +5226,7 @@ If the overload resolution fails, the program is ill-formed. Otherwise, the conversions thus determined are applied, and the converted operands are used in place of the original operands for the remainder of this -section. +subclause. \pnum Lvalue-to-rvalue\iref{conv.lval}, array-to-pointer\iref{conv.array}, diff --git a/source/future.tex b/source/future.tex index 83b82b85ee..8e62d204a1 100644 --- a/source/future.tex +++ b/source/future.tex @@ -11,7 +11,7 @@ is defined as: Normative for the current edition of this International Standard, but having been identified as a candidate for removal from future revisions. -An implementation may declare library names and entities described in this section with the +An implementation may declare library names and entities described in this Clause with the \tcode{deprecated} attribute\iref{dcl.attr.deprecated}. \rSec1[depr.static_constexpr]{Redeclaration of \tcode{static constexpr} data members} diff --git a/source/intro.tex b/source/intro.tex index 57e8158826..64d0a70426 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -578,8 +578,6 @@ rewritten by the implementation in any of the above ways because the same result will occur. \end{note} - - \rSec1[intro.structure]{Structure of this document} \pnum diff --git a/source/iostreams.tex b/source/iostreams.tex index 0711388628..6395917e03 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -8493,7 +8493,7 @@ \pnum In order to support file I/O and multibyte/wide character conversion, conversions are performed using members of a facet, referred to as -\tcode{a_codecvt} in following sections, obtained as if by +\tcode{a_codecvt} in following subclauses, obtained as if by \begin{codeblock} const codecvt& a_codecvt = @@ -10734,7 +10734,7 @@ \pnum \begin{note} -The format conversions described in this section +The format conversions described in this subclause are not applied on POSIX-based operating systems because on these systems: \begin{itemize} diff --git a/source/iterators.tex b/source/iterators.tex index c887d51e8a..1f5f321da2 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -3069,7 +3069,7 @@ \rSec3[istreambuf.iterator.cons]{\tcode{istreambuf_iterator} constructors} \pnum -For each \tcode{istreambuf_iterator} constructor in this section, +For each \tcode{istreambuf_iterator} constructor in this subclause, an end-of-stream iterator is constructed if and only if the exposition-only member \tcode{sbuf_} is initialized with a null pointer value. diff --git a/source/lib-intro.tex b/source/lib-intro.tex index 00a8cdb9dd..1bf4d69d29 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -956,7 +956,7 @@ Whenever a name \tcode{x} defined in the standard library is mentioned, the name \tcode{x} is assumed to be fully qualified as \tcode{::std::x}, -unless explicitly described otherwise. For example, if the \effects section +unless explicitly described otherwise. For example, if the \effects element for library function \tcode{F} is described as calling library function \tcode{G}, the function \tcode{::std::G} @@ -1327,7 +1327,7 @@ \rSec3[using.overview]{Overview} \pnum -This section describes how a \Cpp program gains access to the facilities of the +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 phase 4, while~\ref{using.linkage} describes effects during phase 8\iref{lex.phases}. @@ -2151,7 +2151,7 @@ \rSec3[constraints.overview]{Overview} \pnum -This section describes restrictions on \Cpp programs that use the facilities of +Subclause \ref{constraints} describes restrictions on \Cpp programs that use the facilities of the \Cpp standard library. The following subclauses specify constraints on the program's use of namespaces\iref{namespace.std}, its use of various reserved names\iref{reserved.names}, its use of headers\iref{alt.headers}, its use of @@ -2654,7 +2654,7 @@ \rSec3[conforming.overview]{Overview} \pnum -This section describes the constraints upon, and latitude of, implementations of the \Cpp standard library. +Subclause \ref{conforming} describes the constraints upon, and latitude of, implementations of the \Cpp standard library. \pnum An implementation's use of headers is discussed in~\ref{res.on.headers}, its use @@ -2803,7 +2803,7 @@ \rSec3[res.on.data.races]{Data race avoidance} \pnum -This section specifies requirements that implementations shall meet to prevent data +This subclause specifies requirements that implementations shall meet to prevent data races\iref{intro.multithread}. Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. diff --git a/source/numerics.tex b/source/numerics.tex index 699a5b4456..41f0fc2ab3 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -1320,7 +1320,7 @@ \indexlibrary{complex!literals}% \indexlibrary{literals!complex}% \pnum -This section describes literal suffixes for constructing complex number literals. +This subclause describes literal suffixes for constructing complex number literals. The suffixes \tcode{i}, \tcode{il}, and \tcode{if} create complex numbers of the types \tcode{complex}, \tcode{complex}, and \tcode{complex} respectively, with their imaginary part denoted by the @@ -1467,7 +1467,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% -%% Requirements section +%% Requirements subclause %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1477,7 +1477,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% -%% general requirements section +%% general requirements subclause %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1587,8 +1587,8 @@ in Table~\ref{tab:SeedSequence} are valid and have the indicated semantics, and if \tcode{S} also satisfies all other requirements -of this section \ref{rand.req.seedseq}. -In that Table and throughout this section: +of this subclause \ref{rand.req.seedseq}. +In that Table and throughout this subclause: \begin{enumeratea} \item \tcode{T} is the type named by @@ -1728,8 +1728,8 @@ in Table~\ref{tab:UniformRandomBitGenerator} are valid and have the indicated semantics, and if \tcode{G} also satisfies all other requirements -of this section \ref{rand.req.urng}. -In that Table and throughout this section: +of this subclause \ref{rand.req.urng}. +In that Table and throughout this subclause: \begin{enumeratea} \item \tcode{T} is the type named by @@ -1806,7 +1806,7 @@ is a uniform random bit generator that additionally meets the requirements (e.g., for seeding and for input/output) -specified in this section. +specified in this subclause. \pnum At any given time, @@ -1852,8 +1852,8 @@ in Table~\ref{tab:RandomEngine} are valid and have the indicated semantics, and if \tcode{E} also satisfies all other requirements -of this section \ref{rand.req.eng}. -In that Table and throughout this section: +of this subclause \ref{rand.req.eng}. +In that Table and throughout this subclause: \begin{enumeratea} \item \tcode{T} is the type named by @@ -2236,8 +2236,8 @@ are valid and have the indicated semantics, and if \tcode{D} and its associated types also satisfy all other requirements -of this section \ref{rand.req.dist}. -In that Table and throughout this section, +of this subclause \ref{rand.req.dist}. +In that Table and throughout this subclause, \begin{enumeratea} \item \tcode{T} is the type named by @@ -2499,7 +2499,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% -%% Header synopsis section +%% Header synopsis subclause %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -2652,7 +2652,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% -%% Engine class templates section +%% Engine class templates subclause %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -2663,30 +2663,30 @@ \pnum Each type instantiated -from a class template specified in this section~\ref{rand.eng} +from a class template specified in this subclause~\ref{rand.eng} satisfies the requirements of a random number engine\iref{rand.req.eng} type. \pnum Except where specified otherwise, the complexity of each function -specified in this section~\ref{rand.eng} +specified in this subclause~\ref{rand.eng} is constant. \pnum Except where specified otherwise, -no function described in this section~\ref{rand.eng} +no function described in this subclause~\ref{rand.eng} throws an exception. \pnum -Every function described in this section~\ref{rand.eng} +Every function described in this subclause~\ref{rand.eng} that has a function parameter \tcode{q} of type \tcode{Sseq\&} for a template type parameter named \tcode{Sseq} that is different from type \tcode{seed_seq} throws what and when the invocation of \tcode{q.generate} throws. \pnum -Descriptions are provided in this section~\ref{rand.eng} +Descriptions are provided in this subclause~\ref{rand.eng} only for engine operations that are not described in \ref{rand.req.eng} or for operations where there is additional semantic information. @@ -2698,7 +2698,7 @@ are not shown in the synopses. \pnum -Each template specified in this section~\ref{rand.eng} +Each template specified in this subclause~\ref{rand.eng} requires one or more relationships, involving the value(s) of its non-type template parameter(s), to hold. A program instantiating any of these templates @@ -2790,7 +2790,7 @@ If the template parameter \tcode{m} is $0$, the modulus $m$ -used throughout this section~\ref{rand.eng.lcong} +used throughout this subclause~\ref{rand.eng.lcong} \indextext{\idxcode{linear_congruential_engine}!modulus} is \tcode{numeric_limits::max()} plus $1$. \begin{note} @@ -3201,7 +3201,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% -%% Engine adaptors class templates section +%% Engine adaptors class templates subclause %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -3213,32 +3213,32 @@ \pnum Each type instantiated -from a class template specified in this section~\ref{rand.adapt} +from a class template specified in this subclause~\ref{rand.adapt} satisfies the requirements of a random number engine adaptor\iref{rand.req.adapt} type. \pnum Except where specified otherwise, the complexity of each function -specified in this section~\ref{rand.adapt} +specified in this subclause~\ref{rand.adapt} is constant. \pnum Except where specified otherwise, -no function described in this section~\ref{rand.adapt} +no function described in this subclause~\ref{rand.adapt} throws an exception. \pnum -Every function described in this section~\ref{rand.adapt} +Every function described in this subclause~\ref{rand.adapt} that has a function parameter \tcode{q} of type \tcode{Sseq\&} for a template type parameter named \tcode{Sseq} that is different from type \tcode{seed_seq} throws what and when the invocation of \tcode{q.generate} throws. \pnum -Descriptions are provided in this section~\ref{rand.adapt} +Descriptions are provided in this subclause~\ref{rand.adapt} only for adaptor operations -that are not described in section~\ref{rand.req.adapt} +that are not described in subclause~\ref{rand.req.adapt} or for operations where there is additional semantic information. In particular, declarations for copy constructors, @@ -3248,7 +3248,7 @@ are not shown in the synopses. \pnum -Each template specified in this section~\ref{rand.adapt} +Each template specified in this subclause~\ref{rand.adapt} requires one or more relationships, involving the value(s) of its non-type template parameter(s), to hold. A program instantiating any of these templates @@ -3352,7 +3352,7 @@ \pnum In addition to its behavior -pursuant to section~\ref{rand.req.adapt}, +pursuant to subclause~\ref{rand.req.adapt}, each constructor% \indexlibrary{\idxcode{discard_block_engine}!constructor} that is not a copy constructor @@ -3605,7 +3605,7 @@ \pnum In addition to its behavior -pursuant to section~\ref{rand.req.adapt}, +pursuant to subclause~\ref{rand.req.adapt}, each constructor% \indexlibrary{\idxcode{shuffle_order_engine}!constructor} that is not a copy constructor @@ -3618,7 +3618,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% -%% Engines with predefined parameters section +%% Engines with predefined parameters subclause %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -3805,7 +3805,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% -%% random_device class section +%% random_device class subclause %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -3917,7 +3917,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% -%% utilities section +%% utilities subclause %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -4154,7 +4154,7 @@ \pnum Each function instantiated from the template - described in this section~\ref{rand.util.canonical} + described in this subclause~\ref{rand.util.canonical} maps the result of one or more invocations of a supplied uniform random bit generator \tcode{g} to one member @@ -4220,7 +4220,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% -%% Distribution class templates section +%% Distribution class templates subclause %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -4233,12 +4233,12 @@ \pnum Each type instantiated -from a class template specified in this section~\ref{rand.dist} +from a class template specified in this subclause~\ref{rand.dist} satisfies the requirements of a random number distribution\iref{rand.req.dist} type. \pnum -Descriptions are provided in this section~\ref{rand.dist} +Descriptions are provided in this subclause~\ref{rand.dist} only for distribution operations that are not described in \ref{rand.req.dist} or for operations where there is additional semantic information. @@ -4257,13 +4257,13 @@ \pnum The value of each probability density function $p(z)$ and of each discrete probability function $P(z_i)$ -specified in this section +specified in this subclause is $0$ everywhere outside its stated domain. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% -%% Uniform distributions section +%% Uniform distributions subclause %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -4451,7 +4451,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% -%% Bernoulli distributions section +%% Bernoulli distributions subclause %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -4788,7 +4788,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% -%% Poisson distributions section +%% Poisson distributions subclause %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -5225,7 +5225,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% -%% Normal distributions section +%% Normal distributions subclause %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -5762,7 +5762,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% -%% Sampling distributions section +%% Sampling distributions subclause %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -8057,7 +8057,7 @@ The constructor with arguments builds a \tcode{gslice} based on a specification of start, lengths, and strides, as explained -in the previous section. +in the previous subclause. \end{itemdescr} \rSec3[gslice.access]{\tcode{gslice} access functions} diff --git a/source/overloading.tex b/source/overloading.tex index f4070f40cd..f2d222ad44 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -1359,7 +1359,7 @@ \pnum When objects of non-aggregate class type \tcode{T} are list-initialized such that \ref{dcl.init.list} specifies that overload resolution -is performed according to the rules in this section, overload resolution selects the +is performed according to the rules in this subclause, overload resolution selects the constructor in two phases: \begin{itemize} @@ -2373,7 +2373,7 @@ \pnum Otherwise, if the parameter is a reference, see~\ref{over.ics.ref}. \begin{note} -The rules in this section will apply for initializing the underlying temporary +The rules in this subclause will apply for initializing the underlying temporary for the reference. \end{note} \begin{example} \begin{codeblock} struct A { @@ -3555,7 +3555,7 @@ \end{note} \pnum -In the remainder of this section, \cvqual{vq} represents either +In the remainder of this subclause, \cvqual{vq} represents either \tcode{volatile} or no cv-qualifier. \pnum diff --git a/source/preprocessor.tex b/source/preprocessor.tex index 81bf2b3b17..2712a8658e 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -261,7 +261,7 @@ the \tcode{defined} conditional inclusion operator, shall treat \xname{has_include} as if it were the name of a defined macro. The identifier \xname{has_include} shall not appear -in any context not mentioned in this section. +in any context not mentioned in this subclause. \pnum Each preprocessing token that remains (in the list of preprocessing tokens that diff --git a/source/strings.tex b/source/strings.tex index 4b64f21219..ee0847edeb 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -4544,7 +4544,7 @@ \pnum The class template \tcode{basic_string_view} describes an object that can refer to a constant contiguous sequence of char-like\iref{strings.general} objects with the first element of the sequence at position zero. -In the rest of this section, the type of the char-like objects held in a \tcode{basic_string_view} object is designated by \tcode{charT}. +In the rest of this subclause, the type of the char-like objects held in a \tcode{basic_string_view} object is designated by \tcode{charT}. \pnum \begin{note} @@ -5196,11 +5196,11 @@ \rSec3[string.view.find]{Searching} \pnum -This section specifies the \tcode{basic_string_view} member functions named +This subclause specifies the \tcode{basic_string_view} member functions named \tcode{find}, \tcode{rfind}, \tcode{find_first_of}, \tcode{find_last_of}, \tcode{find_first_not_of}, and \tcode{find_last_not_of}. \pnum -Member functions in this section have complexity \bigoh{\tcode{size() * str.size()}} at worst, +Member functions in this subclause have complexity \bigoh{\tcode{size() * str.size()}} at worst, although implementations should do better. \pnum diff --git a/source/templates.tex b/source/templates.tex index 04245bb9fb..c8e9e42004 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -1514,7 +1514,7 @@ \pnum \begin{note} -This section defines the meaning of constraints on template arguments. +This subclause defines the meaning of constraints on template arguments. The abstract syntax and satisfaction rules are defined in \ref{temp.constr.constr}. Constraints are associated with declarations in \ref{temp.constr.decl}. @@ -7519,7 +7519,7 @@ \pnum If \tcode{P} is a reference type, the type referred to by \tcode{P} is used in place of \tcode{P} for type deduction and for any further references to or transformations of -\tcode{P} in the remainder of this section. +\tcode{P} in the remainder of this subclause. \pnum If diff --git a/source/threads.tex b/source/threads.tex index 4190a4aa66..f6bec576a5 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -818,7 +818,7 @@ \rSec1[thread.mutex]{Mutual exclusion} \pnum -This section provides mechanisms for mutual exclusion: mutexes, locks, and call +This subclause provides mechanisms for mutual exclusion: mutexes, locks, and call once. These mechanisms ease the production of race-free programs\iref{intro.multithread}. @@ -890,7 +890,7 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, \tcode{recursive_mutex}, \tcode{timed_mutex}, \tcode{recursive_timed_mutex}, \tcode{shared_mutex}, and \tcode{shared_timed_mutex}. -They shall meet the requirements set out in this section. In this description, \tcode{m} +They shall meet the requirements set out in this subclause. In this description, \tcode{m} denotes an object of a mutex type. \pnum diff --git a/source/utilities.tex b/source/utilities.tex index 47b1bc5a47..7d79410adc 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -5044,7 +5044,7 @@ \rSec1[any]{Storage for any type} \pnum -This section describes components that \Cpp programs may use to perform operations on objects of a discriminated type. +This subclause describes components that \Cpp programs may use to perform operations on objects of a discriminated type. \pnum \begin{note} @@ -10585,7 +10585,7 @@ \pnum Concurrent access to a \tcode{shared_ptr} object from multiple threads does not introduce a data race if the access is done exclusively via the functions in -this section and the instance is passed as their first argument. +this subclause and the instance is passed as their first argument. \pnum The meaning of the arguments of type \tcode{memory_order} is explained in~\ref{atomics.order}. @@ -15459,7 +15459,7 @@ \pnum The primary type categories correspond to the descriptions given in -section~\ref{basic.types} of the \Cpp standard. +subclause~\ref{basic.types} of the \Cpp standard. \pnum For any given type \tcode{T}, the result of applying one of these templates to @@ -15545,7 +15545,7 @@ \pnum These templates provide convenient compositions of the primary type -categories, corresponding to the descriptions given in section~\ref{basic.types}. +categories, corresponding to the descriptions given in subclause~\ref{basic.types}. \pnum For any given type \tcode{T}, the result of applying one of these templates to @@ -18166,7 +18166,7 @@ \rSec3[time.duration.literals]{Suffixes for duration literals} \pnum -This section describes literal suffixes for constructing duration literals. The +This subclause describes literal suffixes for constructing duration literals. The suffixes \tcode{h}, \tcode{min}, \tcode{s}, \tcode{ms}, \tcode{us}, \tcode{ns} denote duration values of the corresponding types \tcode{hours}, \tcode{minutes}, \tcode{seconds}, \tcode{milliseconds}, \tcode{microseconds}, and \tcode{nanoseconds} From ee1744f1fae766020d1398bbb56a2a7d02d34042 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Thu, 6 Apr 2017 23:24:25 +0200 Subject: [PATCH 028/168] Remove \tcode from 'const object'. --- source/basic.tex | 6 +++--- source/compatibility.tex | 8 ++++---- source/conversions.tex | 4 ++-- source/declarations.tex | 14 +++++++------- source/expressions.tex | 4 ++-- source/intro.tex | 2 +- source/templates.tex | 2 +- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index 03aad933e2..d0da2df422 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -446,7 +446,7 @@ template specialization\iref{temp.over}, except that a name can refer to \begin{itemize} \item -a non-volatile \tcode{const} object with internal or no linkage if the object +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}, @@ -2926,9 +2926,9 @@ \end{example} \pnum -Creating a new object within the storage that a \tcode{const} complete +Creating a new object within the storage that a const complete object with static, thread, or automatic storage duration occupies, -or within the storage that such a \tcode{const} object used to occupy before +or within the storage that such a const object used to occupy before its lifetime ended, results in undefined behavior. \begin{example} \begin{codeblock} diff --git a/source/compatibility.tex b/source/compatibility.tex index 4ceb1fe85f..45711ce1a7 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -150,10 +150,10 @@ \change A name of file scope that is explicitly declared \tcode{const}, and not explicitly declared \tcode{extern}, has internal linkage, while in C it would have external linkage. \rationale -Because \tcode{const} objects may be used as values during translation in +Because const objects may be used as values during translation in \Cpp, this feature urges programmers to provide an explicit initializer -for each \tcode{const} object. -This feature allows the user to put \tcode{const} objects in source files that are included +for each const object. +This feature allows the user to put const objects in source files that are included in more than one translation unit. \effect Change to semantics of well-defined feature. @@ -422,7 +422,7 @@ Seldom. \ref{dcl.type} [see also \ref{basic.link}] -\change \tcode{const} objects must be initialized in \Cpp but can be left uninitialized in C. +\change const objects must be initialized in \Cpp but can be left uninitialized in C. \rationale A const object cannot be assigned to so it must be initialized to hold a useful value. diff --git a/source/conversions.tex b/source/conversions.tex index fb97829c13..53af129488 100644 --- a/source/conversions.tex +++ b/source/conversions.tex @@ -298,7 +298,7 @@ \begin{note} If a program could assign a pointer of type \tcode{T**} to a pointer of type \tcode{const} \tcode{T**} (that is, if line \#1 below were -allowed), a program could inadvertently modify a \tcode{const} object +allowed), a program could inadvertently modify a const object (as it is done on line \#2). For example, \begin{codeblock} @@ -307,7 +307,7 @@ char* pc; const char** pcc = &pc; // \#1: not allowed *pcc = &c; - *pc = 'C'; // \#2: modifies a \tcode{const} object + *pc = 'C'; // \#2: modifies a const object } \end{codeblock} \end{note} diff --git a/source/declarations.tex b/source/declarations.tex index 8e96dbb424..5c6cea37af 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -486,7 +486,7 @@ The \tcode{mutable} specifier on a class data member nullifies a \tcode{const} specifier applied to the containing class object and permits modification of the mutable class member even though the rest of -the object is \tcode{const}\iref{dcl.type.cv}. +the object is const\iref{dcl.type.cv}. \rSec2[dcl.fct.spec]{Function specifiers}% \indextext{specifier!function}% @@ -943,7 +943,7 @@ \pnum A \tcode{constexpr} specifier used in an object declaration -declares the object as \tcode{const}. +declares the object as const. Such an object shall have literal type and shall be initialized. @@ -1154,9 +1154,9 @@ \end{note} \pnum -\indextext{const object@\tcode{const}-object!undefined change to}% +\indextext{const object!undefined change to}% Except that any class member declared \tcode{mutable}\iref{dcl.stc} -can be modified, any attempt to modify a \tcode{const} object during its +can be modified, any attempt to modify a const object during its lifetime\iref{basic.life} results in undefined behavior. \begin{example} \begin{codeblock} @@ -1170,11 +1170,11 @@ int* ip; ip = const_cast(cip); // cast needed to convert \tcode{const int*} to \tcode{int*} -*ip = 4; // defined: \tcode{*ip} points to \tcode{i}, a non-\tcode{const} object +*ip = 4; // defined: \tcode{*ip} points to \tcode{i}, a non-const object const int* ciq = new const int (3); // initialized as required int* iq = const_cast(ciq); // cast required -*iq = 4; // undefined: modifies a \tcode{const} object +*iq = 4; // undefined: modifies a const object \end{codeblock} For another example, \begin{codeblock} @@ -1192,7 +1192,7 @@ y.x.j++; // ill-formed: const-qualified member modified Y* p = const_cast(&y); // cast away const-ness of \tcode{y} p->x.i = 99; // well-formed: \tcode{mutable} member can be modified -p->x.j = 99; // undefined: modifies a \tcode{const} member +p->x.j = 99; // undefined: modifies a const subobject \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex index ea05f015f0..482a0757ee 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -4525,7 +4525,7 @@ \tcode{E1.E2} given in~\ref{expr.ref}. \begin{note} It is not possible to use a pointer to member that refers to a -\tcode{mutable} member to modify a \tcode{const} class object. For +\tcode{mutable} member to modify a const class object. For example, \begin{codeblock} @@ -4537,7 +4537,7 @@ { const S cs; int S::* pm = &S::i; // \tcode{pm} refers to \tcode{mutable} member \tcode{S::i} -cs.*pm = 88; // ill-formed: \tcode{cs} is a \tcode{const} object +cs.*pm = 88; // ill-formed: \tcode{cs} is a const object } \end{codeblock} \end{note} diff --git a/source/intro.tex b/source/intro.tex index 64d0a70426..532ca0c471 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -494,7 +494,7 @@ \pnum Certain other operations are described in this document as undefined (for example, the effect of -attempting to modify a \tcode{const} object). +attempting to modify a const object). \begin{note} This document imposes no requirements on the behavior of programs that contain undefined behavior. \end{note} diff --git a/source/templates.tex b/source/templates.tex index c8e9e42004..d41d81b7fc 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -4148,7 +4148,7 @@ \item constant expression evaluation\iref{expr.const} within the template instantiation uses \begin{itemize} - \item the value of a \tcode{const} object of integral or unscoped enumeration type or + \item the value of a const object of integral or unscoped enumeration type or \item the value of a \tcode{constexpr} object or \item the value of a reference or \item the definition of a constexpr function, From 3b938b034b1f715c9bb62b004b07825ea937c264 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 28 Mar 2017 22:45:34 +0200 Subject: [PATCH 029/168] Do not use \tcode for non-syntax. This applies to inline, public, protected, private, and friend. Fixes #106. --- source/access.tex | 67 ++++++++++++++--------------------------- source/basic.tex | 10 +++--- source/classes.tex | 14 ++++----- source/declarations.tex | 10 +++--- source/derived.tex | 2 +- source/expressions.tex | 8 ++--- source/lib-intro.tex | 7 ++--- source/locales.tex | 2 +- source/numerics.tex | 6 ---- source/special.tex | 23 ++++---------- 10 files changed, 54 insertions(+), 95 deletions(-) diff --git a/source/access.tex b/source/access.tex index d43b9f468e..aa3705e2d2 100644 --- a/source/access.tex +++ b/source/access.tex @@ -12,18 +12,18 @@ \begin{itemize} \item \indextext{access control!\idxcode{private}}% -\tcode{private}; +private; that is, its name can be used only by members and friends of the class in which it is declared. \item \indextext{access control!\idxcode{protected}}% -\tcode{protected}; +protected; that is, its name can be used only by members and friends of the class in which it is declared, by classes derived from that class, and by their friends (see~\ref{class.protected}). \item \indextext{access control!\idxcode{public}}% -\tcode{public}; +public; that is, its name can be used anywhere without access restriction. \end{itemize} @@ -44,12 +44,8 @@ \tcode{private} by default. Members of a class defined with the keywords -\tcode{struct} -or -\tcode{union} -are -\tcode{public} -by default. +\tcode{struct} or \tcode{union} +are public by default. \begin{example} \begin{codeblock} @@ -68,8 +64,7 @@ referred to from declarations or expressions. \begin{note} Access control applies to names nominated by -\tcode{friend} -declarations\iref{class.friend} and +friend declarations\iref{class.friend} and \grammarterm{using-declaration}{s}\iref{namespace.udecl}. \end{note} In the case of overloaded function names, access control is applied to @@ -289,35 +284,23 @@ If a class is declared to be a base class\iref{class.derived} for another class using the \tcode{public} access specifier, the -\tcode{public} -members of the base class are accessible as -\tcode{public} -members of the derived class and -\tcode{protected} -members of the base class are accessible as -\tcode{protected} -members of the derived class. +public members of the base class are accessible as +public members of the derived class and +protected members of the base class are accessible as +protected members of the derived class. If a class is declared to be a base class for another class using the \tcode{protected} access specifier, the -\tcode{public} -and -\tcode{protected} -members of the base class are accessible as -\tcode{protected} -members of the derived class. +public and protected members of the base class are accessible as +protected members of the derived class. If a class is declared to be a base class for another class using the -\tcode{private} +private access specifier, the -\tcode{public} -and -\tcode{protected} -members of the base class are accessible as -\tcode{private} +public and protected +members of the base class are accessible as private members of the derived class.\footnote{As specified previously in \ref{class.access}, private members of a base class remain inaccessible even to derived classes -unless -\tcode{friend} +unless friend declarations within the base class definition are used to grant access explicitly.} \pnum @@ -673,7 +656,7 @@ \end{example} \pnum -A \tcode{friend} declaration that does not declare a function +A friend declaration that does not declare a function shall have one of the following forms: \begin{ncsimplebnf} @@ -682,12 +665,12 @@ \terminal{friend} typename-specifier \terminal{;} \end{ncsimplebnf} -\begin{note} A \tcode{friend} declaration may be the +\begin{note} A friend declaration may be the \term{declaration} in a \grammarterm{template-declaration} (\ref{temp}, \ref{temp.friend}).\end{note} If the type specifier in a \tcode{friend} declaration designates a (possibly cv-qualified) class type, that class is declared as a friend; otherwise, the -\tcode{friend} declaration is ignored. \begin{example} +friend declaration is ignored. \begin{example} \begin{codeblock} class C; @@ -720,8 +703,7 @@ \pnum \indextext{declaration!overloaded name and \tcode{friend}}% -When a -\tcode{friend} +When a friend declaration refers to an overloaded name or operator, only the function specified by the parameter types becomes a friend. A member function of a class @@ -758,8 +740,7 @@ \pnum Such a function is implicitly an inline function\iref{dcl.inline}. -A -\tcode{friend} +A friend function defined in a class is in the (lexical) scope of the class in which it is defined. A friend function defined outside the class is not\iref{basic.lookup.unqual}. @@ -775,11 +756,7 @@ A name nominated by a friend declaration shall be accessible in the scope of the class containing the friend declaration. The meaning of the friend declaration is the same whether the friend declaration -appears in the -\tcode{private}, -\tcode{protected} -or -\tcode{public}\iref{class.mem} +appears in the private, protected, or public\iref{class.mem} portion of the class \grammarterm{member-specification}. diff --git a/source/basic.tex b/source/basic.tex index d0da2df422..53cbfc5b9e 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -1264,7 +1264,7 @@ \end{example} \begin{note} When looking for a prior declaration of a class -or function introduced by a \tcode{friend} declaration, scopes outside +or function introduced by a friend declaration, scopes outside of the innermost enclosing namespace scope are not considered; see~\ref{namespace.memdef}. \end{note} \begin{note} \ref{basic.scope.class} further describes the restrictions on the use of names in a class @@ -1344,16 +1344,16 @@ definitions. \end{note} \pnum -Name lookup for a name used in the definition of a \tcode{friend} +Name lookup for a name used in the definition of a friend function\iref{class.friend} defined inline in the class granting friendship shall proceed as described for lookup in member function -definitions. If the \tcode{friend} function is not defined in the class -granting friendship, name lookup in the \tcode{friend} function +definitions. If the friend function is not defined in the class +granting friendship, name lookup in the friend function definition shall proceed as described for lookup in namespace member function definitions. \pnum -In a \tcode{friend} declaration naming a member function, a name used in +In a friend declaration naming a member function, a name used in the function declarator and not part of a \grammarterm{template-argument} in the \grammarterm{declarator-id} is first looked up in the scope of the member function's class\iref{class.member.lookup}. If it is not found, diff --git a/source/classes.tex b/source/classes.tex index 710c95bb5c..9377820910 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -383,7 +383,7 @@ friend Vector operator*(const Matrix&, const Vector&); }; \end{codeblock} -Declaration of \tcode{friend}s is described in~\ref{class.friend}, +Declaration of friends is described in~\ref{class.friend}, operator functions in~\ref{over.oper}. \end{example} \end{note} @@ -639,10 +639,10 @@ The \grammarterm{member-declarator-list} can be omitted only after a \grammarterm{class-specifier} or an \grammarterm{enum-specifier} or in a -\tcode{friend} declaration\iref{class.friend}. A +friend declaration\iref{class.friend}. A \grammarterm{pure-specifier} shall be used only in the declaration of a virtual function\iref{class.virtual} -that is not a \tcode{friend} declaration. +that is not a friend declaration. \pnum The optional \grammarterm{attribute-specifier-seq} in a \grammarterm{member-declaration} @@ -851,7 +851,7 @@ \begin{note} There can be at most one definition of a non-inline member function in a program. There may be more than one -\tcode{inline} member function definition in a program. +inline member function definition in a program. See~\ref{basic.def.odr} and~\ref{dcl.inline}. \end{note} @@ -889,11 +889,11 @@ \pnum \begin{note} A \tcode{static} local variable or local type in a member function always refers to -the same entity, whether or not the member function is \tcode{inline}. +the same entity, whether or not the member function is inline. \end{note} \pnum -Previously declared member functions may be mentioned in \tcode{friend} declarations. +Previously declared member functions may be mentioned in friend declarations. \pnum \indextext{local class!member function in}% @@ -1724,7 +1724,7 @@ allowed in a declaration of an anonymous union in a class scope. \indextext{access control!anonymous \tcode{union}}% \indextext{restriction!anonymous \tcode{union}}% -An anonymous union shall not have \tcode{private} or \tcode{protected} +An anonymous union shall not have private or protected members\iref{class.access}. An anonymous union shall not have member functions. diff --git a/source/declarations.tex b/source/declarations.tex index 5c6cea37af..aa411d313e 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1519,7 +1519,7 @@ declaration to which the name in the \grammarterm{elaborated-type-specifier} refers. This rule also applies to the form of \grammarterm{elaborated-type-specifier} that declares a -\grammarterm{class-name} or \tcode{friend} class since it can be construed +\grammarterm{class-name} or friend class since it can be construed as referring to the definition of the class. Thus, in any \grammarterm{elaborated-type-specifier}, the \tcode{enum} keyword shall be @@ -2515,10 +2515,10 @@ \end{example} \pnum -If a \tcode{friend} declaration in a non-local class first declares a +If a friend declaration in a non-local class first declares a class, function, class template or function template\footnote{this implies that the name of the class or function is unqualified.} the friend is a member of the innermost enclosing -namespace. The \tcode{friend} declaration does not by itself make the name +namespace. The friend declaration does not by itself make the name visible to unqualified lookup\iref{basic.lookup.unqual} or qualified lookup\iref{basic.lookup.qual}. \begin{note} The name of the friend will be visible in its namespace if a matching declaration is provided at namespace @@ -2528,12 +2528,12 @@ name lookup that considers functions from namespaces and classes associated with the types of the function arguments\iref{basic.lookup.argdep}. If the -name in a \tcode{friend} declaration is neither qualified nor a +name in a friend declaration is neither qualified nor a \grammarterm{template-id} and the declaration is a function or an \grammarterm{elaborated-type-specifier}, the lookup to determine whether the entity has been previously declared shall not consider any scopes outside the innermost enclosing namespace. \begin{note} The other forms of -\tcode{friend} declarations cannot declare a new member of the innermost +friend declarations cannot declare a new member of the innermost enclosing namespace and thus follow the usual lookup rules. \end{note} \begin{example} diff --git a/source/derived.tex b/source/derived.tex index c5a03fcf35..d35c50bcf1 100644 --- a/source/derived.tex +++ b/source/derived.tex @@ -792,7 +792,7 @@ cannot be a non-member\iref{dcl.fct.spec} function. Nor can a virtual function be a static member, since a virtual function call relies on a specific object for determining which function to invoke. A virtual -function declared in one class can be declared a \tcode{friend} in +function declared in one class can be declared a friend~(\ref{class.friend}) in another class. \end{note} diff --git a/source/expressions.tex b/source/expressions.tex index 482a0757ee..a8a6b00f37 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -1148,7 +1148,7 @@ A member of a closure type shall not be explicitly instantiated\iref{temp.explicit}, explicitly specialized\iref{temp.expl.spec}, or -named in a \tcode{friend} declaration\iref{class.friend}. +named in a friend declaration\iref{class.friend}. \rSec3[expr.prim.lambda.capture]{Captures}% @@ -2629,14 +2629,14 @@ \begin{itemize} \item If, in the most derived object pointed (referred) to by \tcode{v}, -\tcode{v} points (refers) to a \tcode{public} base class subobject of a +\tcode{v} points (refers) to a public base class subobject of a \tcode{C} object, and if only one object of type \tcode{C} is derived from the subobject pointed (referred) to by \tcode{v} the result points (refers) to that \tcode{C} object. -\item Otherwise, if \tcode{v} points (refers) to a \tcode{public} base +\item Otherwise, if \tcode{v} points (refers) to a public base class subobject of the most derived object, and the type of the most derived object has a base class, of type \tcode{C}, that is unambiguous -and \tcode{public}, the result points (refers) to the +and public, the result points (refers) to the \tcode{C} subobject of the most derived object. \item Otherwise, the diff --git a/source/lib-intro.tex b/source/lib-intro.tex index 1bf4d69d29..e73cd11e7e 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -2707,7 +2707,7 @@ It is unspecified whether any non-member functions in the \Cpp standard library are defined as -\tcode{inline}\iref{dcl.inline}. +inline\iref{dcl.inline}. \pnum A call to a non-member function signature @@ -2747,7 +2747,7 @@ \pnum It is unspecified whether any member functions in the \Cpp standard library are defined as -\tcode{inline}\iref{dcl.inline}. +inline\iref{dcl.inline}. \pnum For a non-virtual member function described in the \Cpp standard library, @@ -2856,8 +2856,7 @@ \indextext{protection}% It is unspecified whether any function signature or class described in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr} is a -\tcode{friend} -of another class in the \Cpp standard library. +friend of another class in the \Cpp standard library. \indextext{specifier!\idxcode{friend}} \rSec3[derivation]{Derived classes} diff --git a/source/locales.tex b/source/locales.tex index e69f28c226..17b9e684aa 100644 --- a/source/locales.tex +++ b/source/locales.tex @@ -1583,7 +1583,7 @@ is provided so that the member functions on type \tcode{char} can be implemented -\tcode{inline}.\footnote{Only the +inline.\footnote{Only the \tcode{char} (not \tcode{unsigned char} diff --git a/source/numerics.tex b/source/numerics.tex index 41f0fc2ab3..eed2b42471 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -6746,12 +6746,6 @@ matrix class nor a field class. However, it is a very useful building block for designing such classes.} -\pnum -An implementation is permitted to qualify any of the functions declared in -\tcode{} -as -\tcode{inline}. - \rSec3[valarray.cons]{\tcode{valarray} constructors} \indexlibrary{\idxcode{valarray}!constructor}% diff --git a/source/special.tex b/source/special.tex index f0ecf81799..0c1c9e5bfa 100644 --- a/source/special.tex +++ b/source/special.tex @@ -57,8 +57,7 @@ \indextext{access control!member function and}% Special member functions obey the usual access rules\iref{class.access}. \begin{example} -Declaring a constructor -\tcode{protected} +Declaring a constructor protected ensures that only derived classes and friends can create objects using it. \end{example} @@ -168,9 +167,7 @@ a non-explicit constructor having no parameters is implicitly declared as defaulted\iref{dcl.fct.def}. An implicitly-declared default constructor is an -\tcode{inline} -\tcode{public} -member of its class. +inline public member of its class. \pnum A defaulted default constructor for class \tcode{X} is defined as deleted if: @@ -1081,9 +1078,7 @@ destructor, a destructor is implicitly declared as defaulted\iref{dcl.fct.def}. An implicitly-declared destructor is an -\tcode{inline} -\tcode{public} -member of its class. +inline public member of its class. \pnum A defaulted destructor for a class @@ -1488,9 +1483,7 @@ For the call on line ``// 1'' above, if \tcode{B::operator delete()} -had been -\tcode{private}, -the delete expression would have been ill-formed. +had been private, the delete expression would have been ill-formed. \end{example} \pnum @@ -2683,9 +2676,7 @@ \pnum An implicitly-declared copy/move constructor is an -\tcode{inline} -\tcode{public} -member of its class. +inline public member of its class. A defaulted copy/\brk{}move constructor for a class \tcode{X} is defined as deleted\iref{dcl.fct.def.delete} if \tcode{X} has: \begin{itemize} @@ -2985,9 +2976,7 @@ it returns the object for which the assignment operator is invoked, that is, the object assigned to. An implicitly-declared copy/move assignment operator is an -\tcode{inline} -\tcode{public} -member of its class. +inline public member of its class. \pnum A defaulted copy/move assignment operator for From 4f7835445cebfc444fbd2aa42da772e8e9d19768 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Sat, 11 Nov 2017 22:49:39 -0800 Subject: [PATCH 030/168] [index] Fix dangling "see". --- source/conversions.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/conversions.tex b/source/conversions.tex index 53af129488..f8a50ddd0f 100644 --- a/source/conversions.tex +++ b/source/conversions.tex @@ -3,7 +3,7 @@ \indextext{implicit conversion|see{conversion, implicit}} \indextext{contextually converted to bool|see{conversion, contextual}} -\indextext{rvalue!lvalue conversion to|see{conversion, lvalue to rvalue}}% +\indextext{rvalue!lvalue conversion to|see{conversion, lvalue-to-rvalue}}% \pnum \indextext{conversion!standard|(}% From cbd25c4b3e6f83aaf2fa9fe894ff52b1f428a8c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Sun, 12 Nov 2017 00:37:09 -0700 Subject: [PATCH 031/168] Hyphenate 'pointer-to-member' when it is an adjective and define the adjective. Fixes #1369. --- source/basic.tex | 6 ++++-- source/conversions.tex | 17 +++++++++-------- source/declarators.tex | 8 ++++---- source/exceptions.tex | 8 ++++---- source/expressions.tex | 22 +++++++++++----------- source/lex.tex | 4 ++-- source/overloading.tex | 8 ++++---- source/templates.tex | 17 ++++++++--------- source/utilities.tex | 7 +++---- 9 files changed, 49 insertions(+), 48 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index 53cbfc5b9e..71c1d5f20d 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -3594,7 +3594,7 @@ \pnum Arithmetic types\iref{basic.fundamental}, enumeration types, pointer -types, pointer to member types\iref{basic.compound}, +types, pointer-to-member types\iref{basic.compound}, \tcode{std::nullptr_t}, and cv-qualified\iref{basic.type.qualifier} versions of these @@ -3884,7 +3884,7 @@ \pnum A value of type \tcode{std::nullptr_t} is a null pointer constant\iref{conv.ptr}. Such values participate in the pointer and the -pointer to member conversions~(\ref{conv.ptr}, \ref{conv.mem}). +pointer-to-member conversions~(\ref{conv.ptr}, \ref{conv.mem}). \tcode{sizeof(std::nullptr_t)} shall be equal to \tcode{sizeof(void*)}. \pnum @@ -3938,6 +3938,8 @@ 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 +called \term{pointer-to-member} types. \end{itemize} \pnum diff --git a/source/conversions.tex b/source/conversions.tex index f8a50ddd0f..65bd983e6b 100644 --- a/source/conversions.tex +++ b/source/conversions.tex @@ -22,7 +22,7 @@ \item Zero or one conversion from the following set: integral promotions, floating-point promotion, integral conversions, floating-point conversions, floating-integral conversions, pointer conversions, -pointer to member conversions, and boolean conversions. +pointer-to-member conversions, and boolean conversions. \item Zero or one function pointer conversion. @@ -527,21 +527,22 @@ object. The null pointer value is converted to the null pointer value of the destination type. -\rSec1[conv.mem]{Pointer to member conversions} +\rSec1[conv.mem]{Pointer-to-member conversions} \pnum -\indextext{conversion!pointer to member}% +\indextext{conversion!pointer-to-member}% \indextext{constant!null pointer}% \indextext{value!null member pointer}% -A null pointer constant\iref{conv.ptr} can be converted to a pointer -to member type; the result is the \term{null member pointer value} +A null pointer constant\iref{conv.ptr} can be converted to a +pointer-to-member +type; the result is the \term{null member pointer value} of that type and is distinguishable from any pointer to member not created from a null pointer constant. Such a conversion is called a \term{null member pointer conversion}. Two null member pointer values of the same type shall compare equal. The conversion of a null pointer constant to a pointer to member of cv-qualified type is a single -conversion, and not the sequence of a pointer to member conversion +conversion, and not the sequence of a pointer-to-member conversion followed by a qualification conversion\iref{conv.qual}. \pnum @@ -571,7 +572,7 @@ an object pointer or a function pointer and the rules for conversions of such pointers do not apply to pointers to members. -\indextext{conversion!pointer to member!\idxcode{void*}}% +\indextext{conversion!pointer-to-member!\idxcode{void*}}% In particular, a pointer to member cannot be converted to a \tcode{void*}.} @@ -600,7 +601,7 @@ \pnum \indextext{conversion!boolean}% -A prvalue of arithmetic, unscoped enumeration, pointer, or pointer to member +A prvalue of arithmetic, unscoped enumeration, pointer, or pointer-to-member type can be converted to a prvalue of type \tcode{bool}. A zero value, null pointer value, or null member pointer value is converted to \tcode{false}; any other value is converted to \tcode{true}. For diff --git a/source/declarators.tex b/source/declarators.tex index c217ab33c2..ff8893d07c 100644 --- a/source/declarators.tex +++ b/source/declarators.tex @@ -7,7 +7,7 @@ \indextext{initialization!class object|seealso{constructor}}% \indextext{\idxcode{*}|see{declarator, pointer}} \indextext{\idxcode{\&}|see{declarator, reference}}% -\indextext{\idxcode{::*}|see{declarator, pointer to member}}% +\indextext{\idxcode{::*}|see{declarator, pointer-to-member}}% \indextext{\idxcode{[]}|see{declarator, array}}% \indextext{\idxcode{()}|see{declarator, function}}% @@ -838,7 +838,7 @@ \end{note} \rSec2[dcl.mptr]{Pointers to members}% -\indextext{declarator!pointer to member} +\indextext{declarator!pointer-to-member} \pnum In a declaration @@ -870,7 +870,7 @@ \pnum \begin{example}% -\indextext{example!pointer to member} +\indextext{example!pointer-to-member} \begin{codeblock} struct X { @@ -941,7 +941,7 @@ \begin{note} See also~\ref{expr.unary} and~\ref{expr.mptr.oper}. The type ``pointer to member'' is distinct from the type ``pointer'', -that is, a pointer to member is declared only by the pointer to member +that is, a pointer to member is declared only by the pointer-to-member declarator syntax, and never by the pointer declarator syntax. There is no ``reference-to-member'' type in \Cpp. \end{note} diff --git a/source/exceptions.tex b/source/exceptions.tex index 1491c8993b..6890fed81d 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -496,8 +496,8 @@ \tcode{T} is an unambiguous public base class of \tcode{E}, or \item% the \grammarterm{handler} is of type \cv{}~\tcode{T} or \tcode{const T\&} -where \tcode{T} is a pointer or pointer to member type and -\tcode{E} is a pointer or pointer to member type +where \tcode{T} is a pointer or pointer-to-member type and +\tcode{E} is a pointer or pointer-to-member type that can be converted to \tcode{T} by one or more of \begin{itemize} @@ -512,7 +512,7 @@ \end{itemize} \item -the \grammarterm{handler} is of type \cv{}~\tcode{T} or \tcode{const T\&} where \tcode{T} is a pointer or pointer to member type and \tcode{E} is \tcode{std::nullptr_t}. +the \grammarterm{handler} is of type \cv{}~\tcode{T} or \tcode{const T\&} where \tcode{T} is a pointer or pointer-to-member type and \tcode{E} is \tcode{std::nullptr_t}. \end{itemize} @@ -520,7 +520,7 @@ A \grammarterm{throw-expression} whose operand is an integer literal with value zero does not match a handler of -pointer or pointer to member type. +pointer or pointer-to-member type. A handler of reference to array or function type is never a match for any exception object\iref{expr.throw}. \end{note} diff --git a/source/expressions.tex b/source/expressions.tex index a8a6b00f37..120241d6f7 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -304,7 +304,7 @@ The \defn{composite pointer type} of two operands \tcode{p1} and \tcode{p2} having types \tcode{T1} and \tcode{T2}, respectively, where at least one is a -pointer or pointer to member type or +pointer or pointer-to-member type or \tcode{std::nullptr_t}, is: \begin{itemize} @@ -2279,8 +2279,8 @@ An argument that has type \cv{}~\tcode{std::nullptr_t} is converted to type \tcode{void*}\iref{conv.ptr}. After these conversions, if the -argument does not have arithmetic, enumeration, pointer, pointer to -member, or class type, the program is ill-formed. Passing a potentially-evaluated +argument does not have arithmetic, enumeration, pointer, pointer-to-member, +or class type, the program is ill-formed. Passing a potentially-evaluated argument of class type\iref{class} having a non-trivial copy constructor, a non-trivial move constructor, or a @@ -2951,7 +2951,7 @@ class\iref{class.derived} of \tcode{D}, if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}.\footnote{Function types -(including those used in pointer to member function +(including those used in pointer-to-member-function types) are never cv-qualified; see~\ref{dcl.fct}.} If no valid standard conversion from ``pointer to member of \tcode{B} of type \tcode{T}'' @@ -3122,14 +3122,14 @@ \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 -yields the original pointer to member value. +different pointer-to-member-function type and back to its original type +yields the original pointer-to-member value. \item converting a prvalue of type ``pointer to data member of \tcode{X} of type \tcode{T1}'' to the type ``pointer to data member of \tcode{Y} of type \tcode{T2}'' (where the alignment requirements of \tcode{T2} are no stricter than those of \tcode{T1}) and back to its original type -yields the original pointer to member value. +yields the original pointer-to-member value. \end{itemize} \pnum @@ -3335,7 +3335,7 @@ \pnum \indextext{name!address of cv-qualified}% -\indextext{expression!pointer to member constant}% +\indextext{expression!pointer-to-member constant}% The result of the unary \tcode{\&} operator is a pointer to its operand. The operand shall be an lvalue or a \grammarterm{qualified-id}. If the operand is a \grammarterm{qualified-id} naming a non-static or variant member \tcode{m} @@ -4877,7 +4877,7 @@ \pnum The \tcode{==} (equal to) and the \tcode{!=} (not equal to) operators group left-to-right. The operands shall have arithmetic, enumeration, pointer, -or pointer to member type, or type \tcode{std::nullptr_t}. The operators +or pointer-to-member type, or type \tcode{std::nullptr_t}. The operators \tcode{==} and \tcode{!=} both yield \tcode{true} or \tcode{false}, i.e., a result of type \tcode{bool}. In each case below, the operands shall have the same type after the specified conversions have been applied. @@ -4909,7 +4909,7 @@ \end{itemize} \pnum -If at least one of the operands is a pointer to member, pointer to member +If at least one of the operands is a pointer to member, pointer-to-member conversions\iref{conv.mem} and qualification conversions\iref{conv.qual} are performed on both operands to bring them to their composite pointer type\iref{expr.prop}. @@ -5250,7 +5250,7 @@ composite pointer type\iref{expr.prop}. The result is of the composite pointer type. -\item One or both of the second and third operands have pointer to member type; +\item One or both of the second and third operands have pointer-to-member type; pointer to member conversions\iref{conv.mem} and qualification conversions\iref{conv.qual} are performed to bring them to their composite pointer type\iref{expr.prop}. The result is of the composite pointer type. diff --git a/source/lex.tex b/source/lex.tex index 0d852ef93b..01efdd596d 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -1712,8 +1712,8 @@ The pointer literal is the keyword \tcode{nullptr}. It is a prvalue of type \tcode{std::nullptr_t}. \begin{note} -\tcode{std::nullptr_t} is a distinct type that is neither a pointer type nor a pointer -to member type; rather, a prvalue of this type is a null pointer constant and can be +\tcode{std::nullptr_t} is a distinct type that is neither a pointer type nor a pointer-to-member type; +rather, a prvalue of this type is a null pointer constant and can be converted to a null pointer value or null member pointer value. See~\ref{conv.ptr} and~\ref{conv.mem}. \end{note} diff --git a/source/overloading.tex b/source/overloading.tex index f2d222ad44..f1b9ae565b 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -2083,7 +2083,7 @@ Floating-point conversions & & & \ref{conv.double} \\ \cline{1-1}\cline{4-4} Floating-integral conversions & & & \ref{conv.fpint} \\ \cline{1-1}\cline{4-4} Pointer conversions & \rb{Conversion} & \rb{Conversion} & \ref{conv.ptr} \\ \cline{1-1}\cline{4-4} -Pointer to member conversions & & & \ref{conv.mem} \\ \cline{1-1}\cline{4-4} +Pointer-to-member conversions & & & \ref{conv.mem} \\ \cline{1-1}\cline{4-4} Boolean conversions & & & \ref{conv.bool} \\ \end{floattable} @@ -2874,7 +2874,7 @@ match targets of function pointer type or reference to function type. Non-static member functions match targets of -pointer to member function type. +pointer-to-member-function type. If a non-static member function is selected, the reference to the overloaded function name is required to have the form of a pointer to member as described in~\ref{expr.unary.op}. @@ -3738,7 +3738,7 @@ \pnum For every \tcode{\placeholder{T}}, where \tcode{\placeholder{T}} -is a pointer to member type or \tcode{std::nullptr_t}, +is a pointer-to-member type or \tcode{std::nullptr_t}, there exist candidate operator functions of the form \begin{codeblock} @@ -3805,7 +3805,7 @@ \cvqual{vq}), where \tcode{\placeholder{T}} -is an enumeration or pointer to member type, +is an enumeration or pointer-to-member type, there exist candidate operator functions of the form \begin{codeblock} diff --git a/source/templates.tex b/source/templates.tex index d41d81b7fc..958494bea3 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -7359,7 +7359,7 @@ the transformed \tcode{A}. \item The transformed \tcode{A} -can be another pointer or pointer to member type that can be converted +can be another pointer or pointer-to-member type that can be converted to the deduced \tcode{A} via a function pointer conversion\iref{conv.fctptr} and/or @@ -7407,8 +7407,7 @@ \pnum When \tcode{P} -is a function type, function pointer type, or pointer to member -function type: +is a function type, function pointer type, or pointer-to-member-function type: \begin{itemize} \item If the argument is an overload set containing one or more function templates, @@ -7582,12 +7581,12 @@ \tcode{A} can be ``pointer to function'' even if the deduced \tcode{A} is ``pointer to noexcept function''. \item -If the original \tcode{A} is a pointer to member function type, +If the original \tcode{A} is a pointer-to-member-function type, \tcode{A} can be ``pointer to member of type function'' even if the deduced \tcode{A} is ``pointer to member of type noexcept function''. \item The deduced \tcode{A} -can be another pointer or pointer to member type that +can be another pointer or pointer-to-member type that can be converted to \tcode{A} via a qualification conversion. \end{itemize} @@ -7600,7 +7599,7 @@ \pnum When the deduction process requires a qualification conversion for a -pointer or pointer to member type as described above, the following +pointer or pointer-to-member type as described above, the following process is used to determine the deduced template argument values: If @@ -7902,7 +7901,7 @@ A function type includes the types of each of the function parameters and the return type. \item -A pointer to member type includes the type of the class object pointed to +A pointer-to-member type includes the type of the class object pointed to and the type of the member pointed to. \item A type that is a specialization of a class template (e.g., @@ -8421,8 +8420,8 @@ \pnum A \grammarterm{template-argument} -can be deduced from a function, pointer to function, or pointer to -member function type. +can be deduced from a function, pointer to function, or +pointer-to-member-function type. \begin{example} diff --git a/source/utilities.tex b/source/utilities.tex index 7d79410adc..23c495dd8b 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -15518,11 +15518,11 @@ \indexlibrary{\idxcode{is_member_object_pointer}}% \tcode{template }\br \tcode{struct is_member_object_pointer;}& - \tcode{T} is a pointer to non-static data member & \\ \rowsep + \tcode{T} is a pointer to data member & \\ \rowsep \indexlibrary{\idxcode{is_member_function_pointer}}% \tcode{template }\br \tcode{struct is_member_function_pointer;}& -\tcode{T} is a pointer to non-static member function & \\ \rowsep +\tcode{T} is a pointer to member function & \\ \rowsep \indexlibrary{\idxcode{is_enum}}% \tcode{template }\br \tcode{struct is_enum;} & @@ -15586,8 +15586,7 @@ \indexlibrary{\idxcode{is_member_pointer}}% \tcode{template }\br \tcode{struct is_member_pointer;} & - \tcode{T} is a pointer to non-static data member - or non-static member function & \\ + \tcode{T} is a pointer-to-member type\iref{basic.compound} & \\ \end{libreqtab3b} \rSec3[meta.unary.prop]{Type properties} From e3f9c32560e656e30fc75dad69e2015151d55fe3 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Sun, 12 Nov 2017 14:14:16 -0800 Subject: [PATCH 032/168] [diff.cpp17] Remove stray linebreak. --- source/compatibility.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/compatibility.tex b/source/compatibility.tex index 45711ce1a7..4bbe15a6d2 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -1829,7 +1829,7 @@ \rSec2[diff.cpp17.lex]{\ref{lex}: lexical conventions} \ref{lex.key} -\change New keywords.\\ +\change New keywords. \rationale Required for new features. The \tcode{requires} keyword is added to introduce constraints through a \grammarterm{requires-clause} or From 1728efcc88e68b32fc189a4e553ae057709228ce Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Thu, 9 Nov 2017 17:45:57 -0800 Subject: [PATCH 033/168] CWG2342 Reference reinterpret_cast and pointer-interconvertibility --- source/expressions.tex | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/source/expressions.tex b/source/expressions.tex index 120241d6f7..a39fff2435 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -3135,20 +3135,20 @@ \pnum \indextext{cast!reinterpret!reference}% \indextext{cast!reference}% -A glvalue expression of type \tcode{T1} can be cast to the type -``reference to \tcode{T2}'' if an expression of type ``pointer to -\tcode{T1}'' can be explicitly converted to the type ``pointer to -\tcode{T2}'' using a \tcode{reinterpret_cast}. The result refers to -the same object as the source glvalue, but with the specified -type. \begin{note} That is, for lvalues, a reference cast -\tcode{reinterpret_cast(x)} has the same effect as the conversion -\tcode{*reinterpret_cast(\&x)} with the built-in \tcode{\&} and -\tcode{*} operators (and similarly for -\tcode{reinterpret_cast(x)}). \end{note} No -temporary is created, no copy is made, and -constructors\iref{class.ctor} or conversion -functions\iref{class.conv} are not called.\footnote{This -is sometimes referred to as a \defn{type pun}.} +A glvalue expression of type \tcode{T1}, +designating an object \placeholder{x}, +can be cast to the type ``reference to \tcode{T2}'' +if an expression of type ``pointer to \tcode{T1}'' +can be explicitly converted to the type ``pointer to \tcode{T2}'' +using a \tcode{reinterpret_cast}. +The result is that of \tcode{*reinterpret_cast(p)} +where \tcode{p} is a pointer to \placeholder{x} +of type ``pointer to \tcode{T1}''. +No temporary is created, no copy is made, and +no constructors\iref{class.ctor} or conversion +functions\iref{class.conv} are called.% +\footnote{This is sometimes referred to as a \defn{type pun} +when the result refers to the same object as the source glvalue.} \rSec3[expr.const.cast]{Const cast} From df0c6317b6417eb5dfd14e98dc501092e01efe01 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Thu, 9 Nov 2017 18:53:04 -0800 Subject: [PATCH 034/168] =?UTF-8?q?CWG1862=20Determining=20=E2=80=9Ccorres?= =?UTF-8?q?ponding=20members=E2=80=9D=20for=20friendship?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/templates.tex | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/source/templates.tex b/source/templates.tex index 958494bea3..d725c3336f 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -2898,20 +2898,23 @@ \end{example} \pnum -A member of a class template may be declared to be a friend of a -non-template class. +A template friend declaration may declare +a member of a dependent type to be a friend. +The friend declaration shall declare a function or +specify a type with an \grammarterm{elaborated-type-specifier}, +in either case with a \grammarterm{nested-name-specifier} +ending with a \grammarterm{simple-template-id}, \placeholder{C}, +whose \grammarterm{template-name} names a class template. +The template parameters of the template friend declaration +shall be deducible from \placeholder{C}~(\ref{temp.deduct.type}). In this case, -the corresponding member of every specialization of -the primary class template and -class template partial specializations thereof -is a friend of the class granting friendship. -For -explicit specializations and -specializations of partial specializations, -the corresponding member is the member (if any) -that has the same name, kind (type, function, class template, or function -template), template parameters, and signature as the member of the class -template instantiation that would otherwise have been generated. +a member of a specialization \placeholder{S} of the class template +is a friend of the class granting friendship +if deduction of the template parameters +of \placeholder{C} from \placeholder{S} succeeds, and +substituting the deduced template arguments into the friend declaration +produces a declaration that would be a valid redeclaration +of the member of the specialization. \begin{example} \begin{codeblock} @@ -2921,6 +2924,8 @@ struct D { void g(); }; + T h(); + template T i(); }; template<> struct A { struct B { }; @@ -2928,6 +2933,10 @@ struct D { void g(); }; + template int i(); +}; +template<> struct A { + int *h(); }; class C { @@ -2935,9 +2944,12 @@ // it is not a specialization of \tcode{A::B} template friend void A::f(); // does not grant friendship to \tcode{A::f()} // because its return type does not match - template friend void A::D::g(); // does not grant friendship to \tcode{A::D::g()} - // because \tcode{A::D} is not a specialization of \tcode{A::D} -}; + template friend void A::D::g(); // ill-formed: \tcode{A::D} does not end with + // a \grammarterm{simple-template-id} + template friend int *A::h(); // grants friendship to \tcode{A::h()} and \tcode{A::h()} + template template // grants friendship to instantiations of \tcode{A::i()} and + friend T A::i(); // to \tcode{A::i()}, and thereby to all specializations +}; // of those function templates \end{codeblock} \end{example} From abc0720c37bfec0b5daf5f7354e635582adea77d Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Thu, 9 Nov 2017 18:57:40 -0800 Subject: [PATCH 035/168] CWG2305 Explicit instantiation of constexpr or inline variable template --- source/templates.tex | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/templates.tex b/source/templates.tex index d725c3336f..17cc7e0f46 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -5887,8 +5887,11 @@ instantiated from its template. A member function, member class or static data member of a class template can be explicitly instantiated from the member definition associated with its class -template. An explicit instantiation of a function template -or member function of a class template +template. +An explicit instantiation of a +function template, +member function of a class template, or +variable template shall not use the \tcode{inline} or \tcode{constexpr} specifiers. From a1999f96d89fb5c9e6053eb2ae5ce611b18dd56b Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Fri, 10 Nov 2017 19:12:44 -0800 Subject: [PATCH 036/168] =?UTF-8?q?CWG2307=20Unclear=20definition=20of=20?= =?UTF-8?q?=E2=80=9Cequivalent=20to=20a=20nontype=20template=20parameter?= =?UTF-8?q?=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/templates.tex | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/source/templates.tex b/source/templates.tex index 17cc7e0f46..7f6e564573 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -4695,14 +4695,27 @@ \pnum A template argument that is equivalent to a template -parameter (i.e., has the same constant value or the same type -as the template parameter) can be used in place of that -template parameter in a reference to the current -instantiation. In the case of a non-type template argument, -this only applies if -the argument was given the value of the -template parameter and not an expression in which the -template parameter appears as a subexpression. +parameter can be used in place of that +template parameter in a reference to the current instantiation. +For a template \grammarterm{type-parameter}, +a template argument is equivalent to a template parameter +if it denotes the same type. +For a non-type template parameter, +a template argument is equivalent to a template parameter +if it is an \grammarterm{identifier} that names a variable +that is equivalent to the template parameter. +A variable is equivalent to a template parameter if +\begin{itemize} +\item + it has the same type as the template parameter + (ignoring cv-qualification) and +\item + its initializer consists of a single \grammarterm{identifier} + that names the template parameter or, recursively, such a variable. +\end{itemize} +\begin{note} +Using a parenthesized variable name breaks the equivalence. +\end{note} \begin{example} \begin{codeblock} template class A { @@ -4729,9 +4742,13 @@ static const int my_I = I; static const int my_I2 = I+0; static const int my_I3 = my_I; + static const long my_I4 = I; + static const int my_I5 = (I); B* b3; // refers to the current instantiation B* b4; // not the current instantiation B* b5; // refers to the current instantiation + B* b6; // not the current instantiation + B* b7; // not the current instantiation }; \end{codeblock} \end{example} From 5305211cc4b220441ae012f348150914f4a2098f Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Thu, 9 Nov 2017 18:08:29 -0800 Subject: [PATCH 037/168] CWG2177 Placement operator delete and parameter copies --- source/expressions.tex | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/expressions.tex b/source/expressions.tex index a39fff2435..2379484847 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -4114,12 +4114,12 @@ argument of type \tcode{void*}. If a placement deallocation function is called, it is passed the same additional arguments as were passed to the placement allocation function, that is, the same arguments as those -specified with the \grammarterm{new-placement} syntax. If the -implementation is allowed to make a copy of any argument as part of the -call to the allocation function, it is allowed to make a copy (of the -same original value) as part of the call to the deallocation function or -to reuse the copy made as part of the call to the allocation function. -If the copy is elided in one place, it need not be elided in the other. +specified with the \grammarterm{new-placement} syntax. +If the implementation is allowed +to introduce a temporary object or make a copy of any argument +as part of the call to the allocation function, +it is unspecified whether the same object is used in the call +to both the allocation and deallocation functions. \rSec3[expr.delete]{Delete} From d62dd2f0a6ae46d20367fca490300cbf1e8ffe4c Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Thu, 9 Nov 2017 18:23:14 -0800 Subject: [PATCH 038/168] CWG2313 Redeclaration of structured binding reference variables --- source/declarators.tex | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/source/declarators.tex b/source/declarators.tex index ff8893d07c..88011521d1 100644 --- a/source/declarators.tex +++ b/source/declarators.tex @@ -2345,10 +2345,15 @@ \end{note} In either case, \tcode{e} is an lvalue if the type of the entity \tcode{e} is an lvalue reference and an xvalue otherwise. Given the type $\tcode{T}_i$ -designated by \tcode{std::tuple_element::type}, each \tcode{v}$_i$ -is a variable of type ``reference to $\tcode{T}_i$'' initialized with the -initializer, where the reference is an lvalue reference if the initializer is -an lvalue and an rvalue reference otherwise; the referenced type is $\tcode{T}_i$. +designated by \tcode{std::tuple_element::type}, +variables are introduced with unique names $\tcode{r}_i$ +of type ``reference to $\tcode{T}_i$'' +initialized with the initializer~(\ref{dcl.init.ref}), +where the reference is an lvalue reference if the initializer is +an lvalue and an rvalue reference otherwise. +Each $\tcode{v}_i$ is the name of an lvalue of type $\tcode{T}_i$ +that refers to the object bound to $\tcode{r}_i$; +the referenced type is $\tcode{T}_i$. \pnum Otherwise, all of \tcode{E}'s non-static data members shall be public direct From 21427c8f47f0b1e8d8c41d5184dee1094019fc67 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Thu, 9 Nov 2017 18:29:04 -0800 Subject: [PATCH 039/168] =?UTF-8?q?CWG2315=20Whst=20is=20the=20=E2=80=9Cco?= =?UTF-8?q?rresponding=20special=20member=E2=80=9D=20of=20a=20variant=20me?= =?UTF-8?q?mber=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/special.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/special.tex b/source/special.tex index 0c1c9e5bfa..bb7733c4fa 100644 --- a/source/special.tex +++ b/source/special.tex @@ -2680,9 +2680,6 @@ A defaulted copy/\brk{}move constructor for a class \tcode{X} is defined as deleted\iref{dcl.fct.def.delete} if \tcode{X} has: \begin{itemize} -\item a variant member with a non-trivial corresponding constructor and - \tcode{X} is a union-like class, - \item a potentially constructed subobject type \tcode{M} (or array thereof) that cannot be copied/moved because overload resolution\iref{over.match}, as applied to find @@ -2691,6 +2688,9 @@ a function that is deleted or inaccessible from the defaulted constructor, +\item a variant member whose corresponding constructor + as selected by overload resolution is non-trivial, + \item any potentially constructed subobject of a type with a destructor that is deleted or inaccessible from the defaulted constructor, or, From 92f9d0fc70be2753fa152e62298056bc151d9e78 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Thu, 9 Nov 2017 17:57:33 -0800 Subject: [PATCH 040/168] CWG2338 Undefined behavior converting to short enums with fixed underlying types --- source/expressions.tex | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/source/expressions.tex b/source/expressions.tex index 2379484847..5170552925 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2915,9 +2915,16 @@ \indextext{enumeration type!conversion to}% \indextext{enumeration type!\idxcode{static_cast}!conversion to}% A value of integral or enumeration type can be explicitly converted to -a complete enumeration type. The value is unchanged if the original value is -within the range of the enumeration values\iref{dcl.enum}. Otherwise, -the behavior is undefined. +a complete enumeration type. +If the enumeration type has a fixed underlying type, +the value is first converted to that type +by integral conversion, if necessary, and +then to the enumeration type. +If the enumeration type does not have a fixed underlying type, +the value is unchanged +if the original value is within the range +of the enumeration values\iref{dcl.enum}, and +otherwise, the behavior is undefined. A value of floating-point type can also be explicitly converted to an enumeration type. The resulting value is the same as converting the original value to the underlying type of the enumeration\iref{conv.fpint}, and subsequently to From 61df7a50facb5bbab4c27464431a3a5abfaeb076 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Sun, 12 Nov 2017 13:03:45 -0800 Subject: [PATCH 041/168] P0614R1 Range-based for statements with initializer --- source/statements.tex | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/statements.tex b/source/statements.tex index 0faf52fae0..71d392b41b 100644 --- a/source/statements.tex +++ b/source/statements.tex @@ -431,7 +431,7 @@ \terminal{while (} condition \terminal{)} statement\br \terminal{do} statement \terminal{while (} expression \terminal{) ;}\br \terminal{for (} init-statement condition\opt{} \terminal{;} expression\opt{} \terminal{)} statement\br - \terminal{for (} for-range-declaration \terminal{:} for-range-initializer \terminal{)} statement + \terminal{for (} init-statement\opt{} for-range-declaration \terminal{:} for-range-initializer \terminal{)} statement \end{bnf} \begin{bnf} @@ -630,13 +630,14 @@ The range-based \tcode{for} statement \begin{ncbnf} -\terminal{for (} for-range-declaration \terminal{:} for-range-initializer \terminal{)} statement +\terminal{for (} init-statement\opt{} for-range-declaration \terminal{:} for-range-initializer \terminal{)} statement \end{ncbnf} is equivalent to \begin{ncbnftab} \terminal{\{}\br +\>init-statement\opt{}\br \>\terminal{auto \&\&__range =} for-range-initializer \terminal{;}\br \>\terminal{auto __begin =} begin-expr \terminal{;}\br \>\terminal{auto __end =} end-expr \terminal{;}\br From 2013572d281d6405d40713ef7da542b6230b7a5f Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Sun, 12 Nov 2017 14:00:36 -0800 Subject: [PATCH 042/168] P0588R1 Simplifying implicit lambda capture [basic.def.odr] Don't add one of the new paragraph breaks to avoid conflict with CWG issue 1581 resolution. Reorder words "and the region" to avoid a parenthetical in the middle of a long clause. Fix typos within example. [class.local] Fix typo "int arr[1, 2];" in example. --- source/basic.tex | 116 +++++++++++++++++----- source/classes.tex | 16 ++- source/compatibility.tex | 11 +++ source/declarators.tex | 6 +- source/expressions.tex | 204 ++++++++++++++++++++++++--------------- source/templates.tex | 7 ++ source/xrefdelta.tex | 4 + 7 files changed, 255 insertions(+), 109 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index 71c1d5f20d..aedf23f89e 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -27,7 +27,9 @@ \indextext{scope}% \indextext{linkage}% \indextext{region!declarative}% -An \defn{entity} is a value, object, reference, function, enumerator, type, +An \defn{entity} is a value, object, reference, +structured binding, +function, enumerator, type, class member, bit-field, template, template specialization, namespace, or parameter pack. @@ -51,6 +53,13 @@ a reference other than a non-static data member or of an object. The variable's name, if any, denotes the reference or object. +\pnum +A \defn{local entity} is a variable with +automatic storage duration\iref{basic.stc.auto}, +a structured binding\iref{dcl.struct.bind} +whose corresponding variable is such an entity, +or the \tcode{*this} object\iref{expr.prim.this}. + \pnum Some names denote types or templates. In general, whenever a name is encountered it is necessary to determine whether that name denotes @@ -321,9 +330,16 @@ the set of potential results of an expression \tcode{e}, where either the lvalue-to-rvalue conversion\iref{conv.lval} is applied to \tcode{e}, or \tcode{e} is a discarded-value expression\iref{expr.prop}. -\tcode{this} is odr-used if it appears as a potentially-evaluated expression + +\pnum +A structured binding is odr-used if it appears as a potentially-evaluated expression. + +\pnum +\tcode{*this} is odr-used if \tcode{this} appears as a potentially-evaluated expression (including as the result of the implicit transformation in the body of a non-static member function~(\ref{class.mfct.non-static})). + +\pnum A virtual member function is odr-used if it is not pure. A function whose name appears as a potentially-evaluated @@ -353,6 +369,8 @@ to call allocation and deallocation functions from constructors or destructors; however, this is a permissible implementation technique.} + +\pnum An assignment operator function in a class is odr-used by an implicitly-defined copy-assignment or move-assignment function for another class as specified @@ -361,6 +379,45 @@ in~\ref{dcl.init}. A destructor for a class is odr-used if it is potentially invoked\iref{class.dtor}. +\pnum +A local entity\iref{basic} +is \defn{odr-usable} in a declarative region\iref{basic.scope.declarative} if: + +\begin{itemize} +\item the local entity is either +not \tcode{*this}, or +an enclosing class or non-lambda function parameter scope exists and, +if the innermost such scope is a function parameter scope, +it corresponds to a non-static member function, and +\item +for each intervening declarative region\iref{basic.scope.declarative} +between the point at which the entity is introduced and the region +(where \tcode{*this} is considered to be introduced +within the innermost enclosing class or non-lambda function definition scope), +either: +\begin{itemize} +\item the declarative region is a block scope, or +\item the declarative region is the function parameter scope of a \grammarterm{lambda-expression} +that has a \grammarterm{simple-capture} naming the entity or has a \grammarterm{capture-default}. +\end{itemize} +\end{itemize} + +If a local entity is odr-used +in a declarative region in which it is not odr-usable, +the program is ill-formed. +\begin{example} +\begin{codeblock} +void f(int n) { + [] { n = 1; }; // error, \tcode{n} is not odr-usable due to intervening lambda-expression + struct A { + void f() { n = 2; } // error, \tcode{n} is not odr-usable due to intervening function definition scope + }; + void g(int = n); // error, \tcode{n} is not odr-usable due to intervening function parameter scope + [&] { [n]{ return n; }; }; // OK +} +\end{codeblock} +\end{example} + \pnum Every program shall contain exactly one definition of every non-inline function or variable that is odr-used in that program @@ -604,6 +661,14 @@ also introduce a (possibly not visible) name into an enclosing namespace; these restrictions apply to both regions. \end{note} +\pnum +For a given declarative region \placeholder{R} +and a point \placeholder{P} outside \placeholder{R}, +the set of \defnx{intervening}{region!declarative!intervening} declarative regions +between \placeholder{P} and \placeholder{R} +comprises all declarative regions +that are or enclose \placeholder{R} and do not enclose \placeholder{P}. + \pnum \begin{note} The name lookup rules are summarized in~\ref{basic.lookup}. \end{note} @@ -768,23 +833,6 @@ declaration\iref{basic.scope.pdecl} and ends at the end of its block. A variable declared at block scope is a \defn{local variable}. -\pnum -\indextext{parameter!scope of}% -The potential scope of a function parameter name -(including one appearing in a -\grammarterm{lambda-declarator}) -or of a function-local predefined variable -in a function -definition\iref{dcl.fct.def} begins at its point of declaration. If -the function has a \grammarterm{function-try-block} the potential scope of -a parameter -or of a function-local predefined variable -ends at the end of the last associated handler, otherwise it ends -at the end of the outermost block of the function definition. A -parameter name shall not be redeclared in the outermost block of the -function definition nor in the outermost block of any handler associated -with a \grammarterm{function-try-block}. - \pnum \indextext{scope!exception declaration}% The name declared in an \grammarterm{exception-declaration} @@ -802,15 +850,31 @@ statement, any of the outermost blocks) of the controlled statement; see~\ref{stmt.select}. -\rSec2[basic.scope.proto]{Function prototype scope} +\rSec2[basic.scope.param]{Function parameter scope} \pnum -\indextext{scope!function prototype}% -\indextext{function prototype}% -In a function declaration, or in any function declarator except the -declarator of a function definition\iref{dcl.fct.def}, names of -parameters (if supplied) have function prototype scope, which terminates -at the end of the nearest enclosing function declarator. +\indextext{scope!function parameter}% +\indextext{scope!function prototype|see{scope, function parameter}}% +\indextext{parameter!scope of}% +A function parameter +(including one appearing in a +\grammarterm{lambda-declarator}) +or function-local predefined variable\iref{dcl.fct.def} +has \defn{function parameter scope}. +The potential scope of a parameter +or function-local predefined variable +begins at its point of declaration. If +the nearest enclosing function declarator +is not the declarator of a function definition, +the potential scope ends at the end of that function declarator. +Otherwise, if +the function has a \grammarterm{function-try-block} the potential scope +ends at the end of the last associated handler. +Otherwise the potential scope ends +at the end of the outermost block of the function definition. A +parameter name shall not be redeclared in the outermost block of the +function definition nor in the outermost block of any handler associated +with a \grammarterm{function-try-block}. \rSec2[basic.funscope]{Function scope} diff --git a/source/classes.tex b/source/classes.tex index 9377820910..a52e64992d 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -1785,10 +1785,13 @@ \indextext{local class!scope of}% The local class is in the scope of the enclosing scope, and has the same access to names outside the function as does the enclosing function. -Declarations in a local class -shall not odr-use\iref{basic.def.odr} a variable with automatic storage -duration from an +\begin{note} +A declaration in a local class +cannot odr-use\iref{basic.def.odr} +a local entity +from an enclosing scope. +\end{note} \begin{example} \indextext{example!local class}% \begin{codeblock} @@ -1798,14 +1801,17 @@ int x; const int N = 5; extern int q(); + int arr[2]; + auto [y, z] = arr; struct local { - int g() { return x; } // error: odr-use of automatic variable \tcode{x} + int g() { return x; } // error: odr-use of non-odr-usable variable \tcode{x} int h() { return s; } // OK int k() { return ::x; } // OK int l() { return q(); } // OK int m() { return N; } // OK: not an odr-use - int* n() { return &N; } // error: odr-use of automatic variable \tcode{N} + int* n() { return &N; } // error: odr-use of non-odr-usable variable \tcode{N} + int p() { return y; } // error: odr-use of non-odr-usable structured binding \tcode{y} }; } diff --git a/source/compatibility.tex b/source/compatibility.tex index 4bbe15a6d2..d61a72ad3c 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -1839,6 +1839,17 @@ Valid ISO \CppXVII code using \tcode{concept} or \tcode{requires} as an identifier is not valid in this International Standard. +\rSec2[diff.cpp17.expr]{\ref{expr}: expressions} + +\ref{expr.prim.lambda.capture} +\change Implicit lambda capture may capture additional entities. +\rationale Rule simplification, necessary to resolve interactions with constexpr if. +\effect Lambdas with a \grammarterm{capture-default} +may capture local entities +that were not captured in \CppXVII +if those entities are only referenced in contexts +that do not result in an odr-use. + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \rSec1[diff.library]{C standard library} \indextext{library!C standard}% diff --git a/source/declarators.tex b/source/declarators.tex index ff8893d07c..9a884050b2 100644 --- a/source/declarators.tex +++ b/source/declarators.tex @@ -1540,7 +1540,7 @@ of a function need not be the same. If a parameter name is present in a function declaration that is not a definition, it cannot be used outside of -its function declarator because that is the extent of its potential scope\iref{basic.scope.proto}. +its function declarator because that is the extent of its potential scope\iref{basic.scope.param}. \end{note} \pnum @@ -1844,8 +1844,10 @@ \end{example} \pnum -A local variable shall not appear as a potentially-evaluated expression +\begin{note} +A local variable cannot be odr-used\iref{basic.def.odr} in a default argument. +\end{note} \begin{example} \begin{codeblock} void f() { diff --git a/source/expressions.tex b/source/expressions.tex index 120241d6f7..f21be184bf 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -692,10 +692,47 @@ \grammarterm{identifier} that names a non-static member is transformed to a class member access expression~(\ref{class.mfct.non-static}). \end{note} -The type of the expression is the type of the \grammarterm{identifier}. The -result is the entity denoted by the identifier. The expression is an lvalue -if the entity is a function, variable, or data member and a prvalue otherwise; + +\pnum +The result is the entity denoted by the identifier. +If the entity is a local entity +and naming it from outside of an unevaluated operand +within the declarative region where the \grammarterm{unqualified-id} appears +would result in some intervening \grammarterm{lambda-expression} +capturing it by copy\iref{expr.prim.lambda.capture}, +the type of the expression is +the type of a class member access expression\iref{expr.ref} +naming the non-static data member +that would be declared for such a capture +in the closure object of +the innermost such intervening \grammarterm{lambda-expression}. +\begin{note} +If that \grammarterm{lambda-expression} is not declared \tcode{mutable}, +the type of such an identifier will typically be \tcode{const} qualified. +\end{note} +Otherwise, the type of the expression is the type of the result. +\begin{note} +The type will be adjusted as described in \ref{expr.type} +if it is cv-qualified or is a reference type. +\end{note} +The expression is an lvalue +if the entity is a function, variable, or data member +and a prvalue otherwise\iref{basic.lval}; it is a bit-field if the identifier designates a bit-field\iref{dcl.struct.bind}. +\begin{example} +\begin{codeblock} +void f() { + float x, &r = x; + [=] { + decltype(x) y1; // \tcode{y1} has type \tcode{float} + decltype((x)) y2 = y1; // \tcode{y2} has type \tcode{float const\&} because this lambda + // is not \tcode{mutable} and \tcode{x} is an lvalue + decltype(r) r1 = y1; // \tcode{r1} has type \tcode{float\&} + decltype((r)) r2 = y2; // \tcode{r2} has type \tcode{float const\&} + }; +} +\end{codeblock} +\end{example} \rSec3[expr.prim.id.qual]{Qualified names} @@ -1230,25 +1267,26 @@ \end{example} \pnum -A \grammarterm{lambda-expression} whose smallest enclosing scope is a block -scope\iref{basic.scope.block} is a \defn{local lambda expression}; any other +A \grammarterm{lambda-expression} +is a \defn{local lambda expression} +if its innermost enclosing scope is a block scope\iref{basic.scope.block}, +or if it appears within a default member initializer +and its innermost enclosing scope is +the corresponding class scope\iref{basic.scope.class}; +any other \grammarterm{lambda-expression} shall not have a \grammarterm{capture-default} or \grammarterm{simple-capture} in its -\grammarterm{lambda-introducer}. The \defn{reaching scope} of a local lambda expression -is the set of enclosing scopes up to and including the innermost enclosing function and -its parameters. \begin{note} This reaching scope includes any intervening -\grammarterm{lambda-expression}{s}. \end{note} +\grammarterm{lambda-introducer}. \pnum The \grammarterm{identifier} in a \grammarterm{simple-capture} is looked up using the usual rules for unqualified name lookup\iref{basic.lookup.unqual}; each such lookup -shall find an entity. An entity that is designated by a +shall find a local entity. +The \grammarterm{simple-capture}{s} \tcode{this} and \tcode{* this} +denote the local entity \tcode{*this}. +An entity that is designated by a \grammarterm{simple-capture} -is said to be \defn{explicitly captured}, and shall be \tcode{*this} -(when the \grammarterm{simple-capture} -is ``\tcode{this}'' or ``\tcode{* this}'') or -a variable with automatic storage duration declared in -the reaching scope of the local lambda expression. +is said to be \defn{explicitly captured}. \pnum If an \grammarterm{identifier} in a \grammarterm{simple-capture} appears @@ -1296,58 +1334,92 @@ \end{example} \pnum -A \grammarterm{lambda-expression} with an associated -\grammarterm{capture-default} that does not explicitly capture \tcode{*this} or -a variable with automatic storage duration (this excludes any \grammarterm{id-expression} -that has been found to refer to an \grammarterm{init-capture}{'s} associated -\indextext{implicit capture!definition of}% -non-static data member), is said to \defnx{implicitly capture}{capture!implicit} -the entity (i.e., -\tcode{*this} or a variable) if the \grammarterm{compound-statement}: +For the purposes of lambda capture, +an expression potentially references local entities as follows: + \begin{itemize} -\item odr-uses\iref{basic.def.odr} the entity (in the case of a variable), -\item odr-uses\iref{basic.def.odr} \tcode{this} -(in the case of the object designated by \tcode{*this}), or -\item names the entity in a potentially-evaluated -expression\iref{basic.def.odr} where the enclosing full-expression depends on -a generic lambda parameter declared within the reaching scope of the -\grammarterm{lambda-expression}. +\item +An \grammarterm{id-expression} that names a local entity +potentially references that entity; +an \grammarterm{id-expression} that names +one or more non-static class members +and does not form a pointer to member\iref{expr.unary.op} +potentially references \tcode{*this}. +\begin{note} +This occurs even if overload resolution +selects a static member function for the \grammarterm{id-expression}. +\end{note} + +\item +A \tcode{this} expression potentially references \tcode{*this}. + +\item +A \grammarterm{lambda-expression} potentially references +the local entities named by its \grammarterm{simple-capture}{s}. \end{itemize} + +If an expression potentially references a local entity +within a declarative region in which it is odr-usable, +and the expression would be potentially evaluated +if the effect of any enclosing \tcode{typeid} expressions\iref{expr.typeid} were ignored, +the entity is said to be \defnx{implicitly captured}{capture!implicit} +by each intervening \grammarterm{lambda-expression} with an associated +\grammarterm{capture-default} that does not explicitly capture it. \begin{example} \begin{codeblock} -void f(int, const int (&)[2] = {}) { } // \#1 -void f(const int&, const int (&)[1]) { } // \#2 +void f(int, const int (&)[2] = {}); // \#1 +void f(const int&, const int (&)[1]); // \#2 void test() { const int x = 17; auto g = [](auto a) { f(x); // OK: calls \#1, does not capture \tcode{x} }; + auto g1 = [=](auto a) { + f(x); // OK: calls \#1, captures \tcode{x} + }; + auto g2 = [=](auto a) { int selector[sizeof(a) == 1 ? 1 : 2]{}; - f(x, selector); // OK: is a dependent expression, so captures \tcode{x} + f(x, selector); // OK: captures \tcode{x}, might call \#1 or \#2 }; + + auto g3 = [=](auto a) { + typeid(a + x); // captures \tcode{x} regardless of whether \tcode{a + x} is an unevaluated operand + }; +} +\end{codeblock} +Within \tcode{g1}, an implementation might optimize away +the capture of \tcode{x} as it is not odr-used. +\end{example} +\begin{note} +The set of captured entities is determined syntactically, +and entities might be implicitly captured +even if the expression denoting a local entity +is within a discarded statement\iref{stmt.if}. +\begin{example} +\begin{codeblock} +template +void f(int n) { + [=](auto a) { + if constexpr (B && sizeof(a) > 4) { + (void)n; // captures \tcode{n} regardless of the value of \tcode{B} and \tcode{sizeof(int)} + } + }(0); } \end{codeblock} \end{example} -All such implicitly captured -entities shall be declared within the reaching scope of the lambda expression. -\begin{note} The implicit capture of an entity by a nested -\grammarterm{lambda-expression} can cause its implicit capture by the containing -\grammarterm{lambda-expression} (see below). Implicit odr-uses of \tcode{this} can result -in implicit capture. \end{note} +\end{note} \pnum An entity is \defn{captured} if it is captured explicitly or implicitly. An entity captured by a \grammarterm{lambda-expression} is odr-used\iref{basic.def.odr} in the scope -containing the \grammarterm{lambda-expression}. If \tcode{*this} is captured by a local -lambda expression, its nearest enclosing function shall be a non-static member function. -If a \grammarterm{lambda-expression} or an instantiation of the function call -operator template of a generic lambda odr-uses\iref{basic.def.odr} \tcode{this} or a -variable with automatic storage duration from its reaching scope, that -entity shall be captured by the \grammarterm{lambda-expression}. If a -\grammarterm{lambda-expression} captures an entity and that entity is not defined or -captured in the immediately enclosing lambda expression or function, the program is +containing the \grammarterm{lambda-expression}. +If a \grammarterm{lambda-expression} +explicitly captures an entity that is not odr-usable +or +captures a structured binding (explicitly or implicitly), +the program is ill-formed. \begin{example} \indextext{Bond!James Bond}% \begin{codeblock} @@ -1366,10 +1438,11 @@ int m = n*n; int j = 40; auto m3 = [this,m] { - auto m4 = [&,j] { // error: \tcode{j} not captured by \tcode{m3} - int x = n; // error: \tcode{n} implicitly captured by \tcode{m4} but not captured by \tcode{m3} + auto m4 = [&,j] { // error: \tcode{j} not odr-usable due to intervening lambda \tcode{m3} + int x = n; // error: \tcode{n} is odr-used but not odr-usable due to intervening lambda \tcode{m3} x += m; // OK: \tcode{m} implicitly captured by \tcode{m4} and explicitly captured by \tcode{m3} - x += i; // error: \tcode{i} is outside of the reaching scope + x += i; // error: \tcode{i} is odr-used but not odr-usable + // due to intervening function and class scopes x += f; // OK: \tcode{this} captured implicitly by \tcode{m4} and explicitly by \tcode{m3} }; }; @@ -1438,13 +1511,12 @@ entity captured by copy is transformed into an access to the corresponding unnamed data member of the closure type. \begin{note} An \grammarterm{id-expression} that is not an odr-use refers to -the original entity, never to a member of the closure type. Furthermore, such -an \grammarterm{id-expression} does not cause the implicit capture of the +the original entity, never to a member of the closure type. +However, such +an \grammarterm{id-expression} can still cause the implicit capture of the entity. \end{note} -If \tcode{*this} is captured by copy, each odr-use of \tcode{this} is -transformed into a pointer to the corresponding unnamed data member of the closure type, -cast\iref{expr.cast} to the type of \tcode{this}. \begin{note} The cast ensures that the -transformed expression is a prvalue. \end{note} +If \tcode{*this} is captured by copy, each expression that odr-uses \tcode{*this} is +transformed to instead refer to the corresponding unnamed data member of the closure type. \begin{example} \begin{codeblock} void f(const int*); @@ -1526,26 +1598,6 @@ \end{codeblock} \end{example} -\pnum -Every occurrence of \tcode{decltype((x))} where \tcode{x} is a possibly -parenthesized \grammarterm{id-expression} that names an entity of automatic storage -duration is treated as if \tcode{x} were transformed into an access to a corresponding -data member of the closure type that would have been declared if \tcode{x} were an odr-use of -the denoted entity. \begin{example} - -\begin{codeblock} -void f3() { - float x, &r = x; - [=] { // \tcode{x} and \tcode{r} are not captured (appearance in a \tcode{decltype} operand is not an odr-use) - decltype(x) y1; // \tcode{y1} has type \tcode{float} - decltype((x)) y2 = y1; // \tcode{y2} has type \tcode{float const\&} because this lambda is not \tcode{mutable} and \tcode{x} is an lvalue - decltype(r) r1 = y1; // \tcode{r1} has type \tcode{float\&} (transformation not considered) - decltype((r)) r2 = y2; // \tcode{r2} has type \tcode{float const\&} - }; -} -\end{codeblock} -\end{example} - \pnum When the \grammarterm{lambda-expression} is evaluated, the entities that are captured by copy are used to direct-initialize each corresponding non-static data member diff --git a/source/templates.tex b/source/templates.tex index 958494bea3..9d2a36791c 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -5695,6 +5695,13 @@ a member template, a non-virtual member function, a member class, a static data member of a class template, or a substatement of a constexpr if statement\iref{stmt.if}, unless such instantiation is required. +\begin{note} +The instantiation of a generic lambda +does not require instantiation of +substatements of a constexpr if statement +within its \grammarterm{compound-statement} +unless the call operator template is instantiated. +\end{note} It is unspecified whether or not an implementation implicitly instantiates a virtual member function of a class template if the virtual member function would not otherwise be instantiated. diff --git a/source/xrefdelta.tex b/source/xrefdelta.tex index b4007c7ac6..5c7a191351 100644 --- a/source/xrefdelta.tex +++ b/source/xrefdelta.tex @@ -23,6 +23,10 @@ %\movedxrefii{old.label}{new.label.1}{new.label.2} %\movedxrefiii{old.label}{new.label.1}{new.label.2}{new.label.3} %\movedxrefs{old.label}{new place (eg Table~\ref{tab:blah})} + +% P0588 replaced function prototype scope with function parameter scope. +\movedxref{basic.scope.proto}{basic.scope.param} + \movedxref{utility.from.chars}{charconv.from.chars} \movedxref{utility.to.chars}{charconv.to.chars} From 75516dac895d8a9ab7a925b8400989910e3b08ff Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Sun, 12 Nov 2017 15:27:48 -0800 Subject: [PATCH 043/168] P0846R0 ADL and Function Templates that are not Visible [temp.names] Fix typo "a overload set" -> "an overload set" --- source/basic.tex | 25 ++++++++++++++++++++++++- source/compatibility.tex | 31 +++++++++++++++++++++++++++++++ source/templates.tex | 31 ++++++++++++++++++++----------- 3 files changed, 75 insertions(+), 12 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index aedf23f89e..ee3fb72382 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -1211,7 +1211,30 @@ in~\ref{basic.lookup.argdep}. \begin{note} For purposes of determining (during parsing) whether an expression is a \grammarterm{postfix-expression} for a function call, the usual name lookup -rules apply. The rules in~\ref{basic.lookup.argdep} have no effect on +rules apply. +In some cases +a name followed by \tcode{<} is treated as a \grammarterm{template-name} +even though name lookup did not find a \grammarterm{template-name} +(see \ref{temp.names}). +For example, +\begin{codeblock} +int h; +void g(); +namespace N { + struct A {}; + template int f(T); + template int g(T); + template int h(T); +} + +int x = f(N::A()); // OK: lookup of \tcode{f} finds nothing, + // \tcode{f} treated as template name +int y = g(N::A()); // OK: lookup of \tcode{g} finds a function, + // \tcode{g} treated as template name +int z = h(N::A()); // error: \tcode{h<} does not begin a \grammarterm{template-id} +\end{codeblock} + +The rules in~\ref{basic.lookup.argdep} have no effect on the syntactic interpretation of an expression. For example, \begin{codeblock} diff --git a/source/compatibility.tex b/source/compatibility.tex index d61a72ad3c..d336ef583f 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -1850,6 +1850,37 @@ if those entities are only referenced in contexts that do not result in an odr-use. +\rSec2[diff.cpp17.temp]{\ref{temp}: templates} + +\ref{temp.names} +\change +An \grammarterm{unqualified-id} +that is followed by a \tcode{<} +and for which name lookup +finds nothing or finds a function +will be treated as a \grammarterm{template-name} +in order to potentially cause argument dependent lookup to be performed. +\rationale +It was problematic to call a function template +with an explicit template argument list +via argument dependent lookup +because of the need to have a template with the same name +visible via normal lookup. +\effect +Previously valid code that uses a function name +as the left operand of a \tcode{<} operator +would become ill-formed. +\begin{codeblock} +struct A {}; +bool operator<(void (*fp)(), A); +void f() {} +int main() { + A a; + f < a; // ill-formed; previously well-formed + (f) < a; // still well formed +} +\end{codeblock} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \rSec1[diff.library]{C standard library} \indextext{library!C standard}% diff --git a/source/templates.tex b/source/templates.tex index 7823058371..9e29ef17e6 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -810,18 +810,27 @@ For a \grammarterm{template-name} to be explicitly qualified by the template arguments, -the name must be known to refer to a template. +the name must be considered to refer to a template. +\begin{note} +Whether a name actually refers to a template +cannot be known in some cases +until after argument dependent lookup is done\iref{basic.lookup.argdep}. +\end{note} +A name is considered to refer to a template if +name lookup finds +a \grammarterm{template-name} +or an overload set that contains a function template. +A name is also considered to refer to a template if +it is an \grammarterm{unqualified-id} +followed by a \tcode{<} +and name lookup finds either one or more functions or finds nothing. \pnum \indextext{\idxcode{<}!template and}% -After name lookup\iref{basic.lookup} finds that a name is a -\grammarterm{template-name} -or that an \grammarterm{operator-function-id} or a \grammarterm{literal-operator-id} refers to a set of -overloaded functions any member of which is a function template, -if this is followed by a -\tcode{<}, -the -\tcode{<} +When a name is considered to be a +\grammarterm{template-name}, +and it is followed by a \tcode{<}, +the \tcode{<} is always taken as the delimiter of a \grammarterm{template-argument-list} and never as the less-than operator. @@ -1167,9 +1176,9 @@ template specialization, the program is ill-formed. \pnum -When the template in a +When name lookup for the name in a \grammarterm{template-id} -is an overloaded function template, both non-template functions in the overload +finds an overload set, both non-template functions in the overload set and function templates in the overload set for which the \grammarterm{template-argument}{s} From eb5fe3a028d9e75e4b715312e5653c96b945cb82 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Fri, 10 Nov 2017 20:00:12 -0800 Subject: [PATCH 044/168] P0641R2 Resolving Core Issue #1331 (const mismatch with defaulted copy constructor) Also fixes CWG1331 and CWG1426. [dcl.fct.def.default] Fix English by adding "had". --- source/declarators.tex | 44 +++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/source/declarators.tex b/source/declarators.tex index b2c0a5a126..b82a57074b 100644 --- a/source/declarators.tex +++ b/source/declarators.tex @@ -2108,17 +2108,36 @@ A function that is explicitly defaulted shall \begin{itemize} -\item be a special member function, - -\item have the same declared function type (except for possibly differing -\grammarterm{ref-qualifier}{s} and except that in the case of a copy constructor or -copy assignment operator, the parameter type may be ``reference to non-const \tcode{T}'', -where \tcode{T} is the name of the member function's class) as if it had been implicitly -declared, and +\item be a special member function, and \item not have default arguments. \end{itemize} +\pnum +The type of an explicitly defaulted function +is allowed to differ from the type it would have had +if it were implicitly declared, as follows: +\begin{itemize} +\item + it may have differing ref-qualifiers; and +\item + in the case of a copy constructor or copy assignment operator, + the parameter type may be ``reference to non-const \tcode{T}'', + where \tcode{T} is the name of the member function's class. +\end{itemize} +If the type differs in any other way, then: +\begin{itemize} +\item + if the function is an assignment operator, and + its return type differs or its parameter type is not a reference, + the program is ill-formed; +\item + otherwise, if the function is explicitly defaulted on its first declaration, + it is defined as deleted; +\item + otherwise, the program is ill-formed. +\end{itemize} + \pnum An explicitly-defaulted function that is not defined as deleted may be declared \tcode{constexpr} only if it would have been implicitly declared as @@ -2127,17 +2146,6 @@ it is implicitly considered to be \tcode{constexpr} if the implicit declaration would be. -\pnum -If a function that is explicitly defaulted is declared with a -\grammarterm{noexcept-specifier} that does not produce -the same exception specification -as the implicit declaration\iref{except.spec}, then - -\begin{itemize} -\item if the function is explicitly defaulted on its first declaration, it is defined as deleted; -\item otherwise, the program is ill-formed. -\end{itemize} - \pnum \begin{example} \begin{codeblock} From e1bcedcf9516290f285c3fa3e7301dc92b94c515 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Sat, 11 Nov 2017 10:45:47 -0800 Subject: [PATCH 045/168] [dcl.fct.def.default] Use variables to clarify which types we are being compared. --- source/declarators.tex | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/source/declarators.tex b/source/declarators.tex index b82a57074b..c7ae0c9583 100644 --- a/source/declarators.tex +++ b/source/declarators.tex @@ -2114,25 +2114,26 @@ \end{itemize} \pnum -The type of an explicitly defaulted function -is allowed to differ from the type it would have had +The type \tcode{T}$_1$ of an explicitly defaulted function \tcode{F} +is allowed to differ from the type \tcode{T}$_2$ it would have had if it were implicitly declared, as follows: \begin{itemize} \item - it may have differing ref-qualifiers; and + \tcode{T}$_1$ and \tcode{T}$_2$ may have differing \grammarterm{ref-qualifier}{s}; and \item - in the case of a copy constructor or copy assignment operator, - the parameter type may be ``reference to non-const \tcode{T}'', - where \tcode{T} is the name of the member function's class. + if \tcode{T}$_2$ has a parameter of type \tcode{const C\&}, + the corresponding parameter of \tcode{T}$_1$ may be of type \tcode{C\&}. \end{itemize} -If the type differs in any other way, then: +If \tcode{T}$_1$ differs from \tcode{T}$_2$ in any other way, then: \begin{itemize} \item - if the function is an assignment operator, and - its return type differs or its parameter type is not a reference, + if \tcode{F} is an assignment operator, and + the return type of \tcode{T}$_1$ differs from + the return type of \tcode{T}$_2$ or + \tcode{T}$_1${'s} parameter type is not a reference, the program is ill-formed; \item - otherwise, if the function is explicitly defaulted on its first declaration, + otherwise, if \tcode{F} is explicitly defaulted on its first declaration, it is defined as deleted; \item otherwise, the program is ill-formed. From d61e47f3c267d1161f78f20a0050feaf2fc6de04 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Mon, 13 Nov 2017 14:47:07 -0800 Subject: [PATCH 046/168] P0859R0: Core Issue 1581: When are constexpr member functions defined? [basic.def.odr] Added index for "potentially evaluated" under "expression" to match that of "potentially constant evaluated". --- source/basic.tex | 54 +++++++++++++++++++++++++++--------------- source/expressions.tex | 47 ++++++++++++++++++++++++++++++++++++ source/special.tex | 23 +++++++++++------- source/templates.tex | 49 ++++++++++++++++++++++++++++++++------ 4 files changed, 138 insertions(+), 35 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index ee3fb72382..dc96ea7b8d 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -278,6 +278,7 @@ variable, function, class type, enumeration type, or template. \pnum +\indextext{expression!potentially evaluated}% An expression is \defn{potentially evaluated} unless it is an unevaluated operand\iref{expr.prop} or a subexpression thereof. The set of \defn{potential results} of an expression \tcode{e} is @@ -320,6 +321,38 @@ \end{example} \end{note} +\pnum +\indextext{function!named by an expression}% +A function is \defn{named by an expression} as follows: +\begin{itemize} +\item + A function whose name appears in an expression + is named by that expression + if it is the unique lookup result or the selected member + of a set of overloaded functions~(\ref{basic.lookup}, \ref{over.match}, \ref{over.over}), + unless it is a pure virtual function and either + its name is not explicitly qualified or + the expression forms a pointer to member\iref{expr.unary.op}. + \begin{note} This covers + taking the address of functions~(\ref{conv.func}, \ref{expr.unary.op}), + calls to named functions\iref{expr.call}, + operator overloading\iref{over}, + user-defined conversions\iref{class.conv.fct}, + allocation functions for placement \grammarterm{new-expression}{s}\iref{expr.new}, as well as + non-default initialization\iref{dcl.init}. + A constructor selected to copy or move an object of class type + is considered to be named by an expression + even if the call is actually elided by the implementation\iref{class.copy}. \end{note} +\item + An allocation or deallocation function for a class + is named by a \grammarterm{new-expression} + as specified in~\ref{expr.new} and~\ref{class.free}. +\item + A deallocation function for a class + is named by a delete expression + as specified in~\ref{expr.delete} and~\ref{class.free}. +\end{itemize} + \pnum A variable \tcode{x} whose name appears as a potentially-evaluated expression \tcode{ex} is \defn{odr-used} by \tcode{ex} unless @@ -342,25 +375,8 @@ \pnum A virtual member function is odr-used if it is not pure. -A function whose name appears as a potentially-evaluated -expression is odr-used if it is the unique lookup result or the selected -member of a set of overloaded functions~(\ref{basic.lookup}, \ref{over.match}, \ref{over.over}), -unless it is a pure virtual function and either -its name is not explicitly qualified or -the expression forms a pointer to member\iref{expr.unary.op}. -\begin{note} This covers calls to named -functions\iref{expr.call}, operator overloading\iref{over}, -user-defined conversions\iref{class.conv.fct}, allocation functions for -placement \grammarterm{new-expression}{s}\iref{expr.new}, as well as non-default -initialization\iref{dcl.init}. A constructor selected to copy or move an -object of class type is odr-used even if the -call is actually elided by the implementation\iref{class.copy}. \end{note} An allocation -or deallocation function for a class is odr-used by a \grammarterm{new-expression} -appearing in a potentially-evaluated expression as specified -in~\ref{expr.new} and~\ref{class.free}. A deallocation function for a -class is odr-used by a delete expression appearing in a -potentially-evaluated expression as specified in~\ref{expr.delete} -and~\ref{class.free}. A non-placement allocation or deallocation +A function is odr-used if it is named by a potentially-evaluated expression. +A non-placement allocation or deallocation function for a class is odr-used by the definition of a constructor of that class. A non-placement deallocation function for a class is odr-used by the definition of the destructor of that class, or by being selected by the diff --git a/source/expressions.tex b/source/expressions.tex index d6b8a149e0..661531576e 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -5892,4 +5892,51 @@ \end{codeblock} It is unspecified whether the value of \tcode{f()} will be \tcode{true} or \tcode{false}. \end{example} \end{note}% + +\pnum +\indextext{expression!potentially constant evaluated}% +An expression is \defn{potentially constant evaluated} +if it is: + +\begin{itemize} +\item +a potentially-evaluated expression\iref{basic.def.odr}, + +\item +a \grammarterm{constraint-expression}, +including one formed from the \grammarterm{constraint-logical-or-expression} +of a \grammarterm{requires-clause}, + +\item +an immediate subexpression of a \grammarterm{braced-init-list},% +\footnote{Constant evaluation may be necessary to determine whether a narrowing conversion is performed\iref{dcl.init.list}.} + +\item +an expression of the form \tcode{\&} \grammarterm{cast-expression} +that occurs within a templated entity,% +\footnote{Constant evaluation may be necessary to determine whether such an expression is value-dependent\iref{temp.dep.constexpr}.} +or + +\item +a subexpression of one of the above +that is not a subexpression of a nested unevaluated operand. +\end{itemize} + +\indextext{function!needed for constant evaluation}% +\indextext{variable!needed for constant evaluation}% +A function or variable is +\defn{needed for constant evaluation} +if it is: + +\begin{itemize} +\item +a constexpr function that is named by an expression\iref{basic.def.odr} +that is potentially constant evaluated, or + +\item +a variable whose name appears as a potentially constant evaluated expression +that is either a constexpr variable or +is of non-volatile const-qualified integral type or of reference type. +\end{itemize} + \indextext{expression|)} diff --git a/source/special.tex b/source/special.tex index bb7733c4fa..5edad11675 100644 --- a/source/special.tex +++ b/source/special.tex @@ -22,7 +22,9 @@ \term{special member functions}. \begin{note} The implementation will implicitly declare these member functions for some class types when the program does not explicitly declare them. -The implementation will implicitly define them if they are odr-used\iref{basic.def.odr}. +The implementation will implicitly define them +if they are odr-used\iref{basic.def.odr} or +needed for constant evaluation\iref{expr.const}. See~\ref{class.ctor}, \ref{class.dtor} and~\ref{class.copy}. \end{note} An implicitly-declared special member function is declared at the closing \tcode{\}} of the \grammarterm{class-specifier}. @@ -237,8 +239,9 @@ is \defnx{implicitly defined}{constructor!implicitly defined} when it is odr-used\iref{basic.def.odr} -to create an object of its class type\iref{intro.object} -or when it is explicitly defaulted after its first declaration. +to create an object of its class type\iref{intro.object}, +when it is needed for constant evaluation\iref{expr.const}, or +when it is explicitly defaulted after its first declaration. The implicitly-defined default constructor performs the set of initializations of the class that would be performed by a user-written default constructor for that class with no @@ -2742,8 +2745,9 @@ that is defaulted and not defined as deleted is \term{implicitly defined} -if it is odr-used\iref{basic.def.odr} -or when it is explicitly defaulted after its first declaration. +when it is odr-used\iref{basic.def.odr}, +when it is needed for constant evaluation\iref{expr.const}, or +when it is explicitly defaulted after its first declaration. \begin{note} The copy/move constructor is implicitly defined even if the implementation elided its odr-use~(\ref{basic.def.odr}, \ref{class.temporary}). @@ -3058,10 +3062,11 @@ that is defaulted and not defined as deleted is \term{implicitly defined} -when -it is odr-used\iref{basic.def.odr} (e.g., when it is selected by overload resolution -to assign to an object of its class type) -or when it is explicitly defaulted after its first declaration. +when it is odr-used\iref{basic.def.odr} +(e.g., when it is selected by overload resolution +to assign to an object of its class type), +when it is needed for constant evaluation\iref{expr.const}, or +when it is explicitly defaulted after its first declaration. The implicitly-defined copy/move assignment operator is \tcode{constexpr} if \begin{itemize} \item diff --git a/source/templates.tex b/source/templates.tex index 9e29ef17e6..9e86c7c62a 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -5645,7 +5645,9 @@ instantiated or explicitly specialized, the specialization of the member is implicitly instantiated when the specialization is referenced in a context that requires the member definition -to exist; +to exist or +if the existence of the definition of the member +affects the semantics of the program; in particular, the initialization (and any associated side effects) of a static data member does not occur unless the static data member is itself used in a way that requires the definition of the static data member to exist. @@ -5655,10 +5657,12 @@ explicitly specialized, the function template specialization is implicitly instantiated when the specialization is referenced in a context that requires a function definition -to exist. +to exist or +if the existence of the definition affects the semantics of the program. A function whose declaration was instantiated from a friend function definition is implicitly instantiated when it is referenced in a context that -requires a function definition to exist. +requires a function definition to exist or +if the existence of the definition affects the semantics of the program. Unless a call is to a function template explicit specialization or to a member function of an explicitly specialized class template, a default argument for a function template or a member function of a @@ -5695,10 +5699,41 @@ \pnum Unless a variable template specialization has been explicitly instantiated or -explicitly specialized, the variable template specialization is implicitly -instantiated when the specialization is used. A default template argument for a -variable template is implicitly instantiated when the variable template is -referenced in a context that requires the value of the default argument. +explicitly specialized, +the variable template specialization is implicitly instantiated +when it is referenced in a context +that requires a variable definition to exist or +if the existence of the definition affects the semantics of the program. +A default template argument for a variable template is implicitly instantiated +when the variable template is referenced in a context +that requires the value of the default argument. + +\pnum +\indextext{definition!program semantics affected by}% +\indextext{variable!program semantics affected by the existence of a variable definition}% +\indextext{function!program semantics affected by the existence of a function definition}% +\indextext{program semantics!affected by the existence of a variable or function definition}% +The existence of a definition of a variable or function +is considered to affect the semantics of the program +if the variable or function +is needed for constant evaluation by an expression\iref{expr.const}, +even if constant evaluation of the expression is not required or +if constant expression evaluation does not use the definition. + +\begin{example} +\begin{codeblock} +template constexpr int f() { return T::value; } +template void g(decltype(B ? f() : 0)); +template void g(...); +template void h(decltype(int{B ? f() : 0})); +template void h(...); +void x() { + g(0); // OK, \tcode{B ? f() : 0} is not potentially constant evaluated + h(0); // error, instantiates \tcode{f} even though \tcode{B} evaluates to \tcode{false} and + // list-initialization of \tcode{int} from \tcode{int} cannot be narrowing +} +\end{codeblock} +\end{example} \pnum If the function selected by overload resolution\iref{over.match} From 7d7e4c6cdee02407da04536743aff4bb648aebcb Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Sun, 12 Nov 2017 19:55:34 -0800 Subject: [PATCH 047/168] P0515R3 Consistent comparisons --- source/compatibility.tex | 15 ++++ source/declarators.tex | 4 +- source/exceptions.tex | 9 +++ source/expressions.tex | 153 ++++++++++++++++++++++++++++++++++++-- source/lex.tex | 14 ++-- source/macros.tex | 8 +- source/overloading.tex | 104 +++++++++++++++++++++++--- source/special.tex | 155 +++++++++++++++++++++++++++++++++++++++ 8 files changed, 433 insertions(+), 29 deletions(-) diff --git a/source/compatibility.tex b/source/compatibility.tex index d336ef583f..bb03d18c7e 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -1839,6 +1839,21 @@ Valid ISO \CppXVII code using \tcode{concept} or \tcode{requires} as an identifier is not valid in this International Standard. +\ref{lex.operators} +\change New operator \tcode{<=>}. +\rationale Necessary for new functionality. +\effect Valid \CppXVII code that contains a \tcode{<=} token +immediately followed by a \tcode{>} token +may be ill-formed or have different semantics in this International Standard: +\begin{codeblock} +namespace N { + struct X {}; + bool operator<=(X, X); + template struct Y {}; + Y<&operator<=> y; // ill-formed; previously well-formed +} +\end{codeblock} + \rSec2[diff.cpp17.expr]{\ref{expr}: expressions} \ref{expr.prim.lambda.capture} diff --git a/source/declarators.tex b/source/declarators.tex index c7ae0c9583..db79db35e1 100644 --- a/source/declarators.tex +++ b/source/declarators.tex @@ -2108,11 +2108,13 @@ A function that is explicitly defaulted shall \begin{itemize} -\item be a special member function, and +\item be a special member function or a comparison operator +(\ref{expr.spaceship}, \ref{expr.rel}, \ref{expr.eq}), and \item not have default arguments. \end{itemize} +% FIXME: there's no such thing as an implicit declaration of a comparison operator \pnum The type \tcode{T}$_1$ of an explicitly defaulted function \tcode{F} is allowed to differ from the type \tcode{T}$_2$ it would have had diff --git a/source/exceptions.tex b/source/exceptions.tex index 6890fed81d..7071c3e0ee 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -899,6 +899,15 @@ with no explicit \grammarterm{noexcept-specifier} has a non-throwing exception specification. +\pnum +The exception specification for a comparison operator +(\ref{expr.spaceship}, \ref{expr.rel}, \ref{expr.eq}) +without a \grammarterm{noexcept-specifier} +that is defaulted on its first declaration +is potentially-throwing if and only if +the invocation of any comparison operator +in the implicit definition is potentially-throwing. + \pnum \begin{example} \begin{codeblock} diff --git a/source/expressions.tex b/source/expressions.tex index 661531576e..8376c7adc2 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -4839,6 +4839,144 @@ \pnum The expression \tcode{E1} is sequenced before the expression \tcode{E2}. +\rSec2[expr.spaceship]{Three-way comparison operator} +\indextext{expression!three-way comparison}% +\indextext{expression!spaceship}% + +\pnum +The three-way comparison operator groups left-to-right. + +\indextext{\idxcode{<=>}|see{operator, three-way comparison}}% +\indextext{operator!three-way comparison}% +\indextext{operator!spaceship}% + +\begin{bnf} +\nontermdef{compare-expression}\br + shift-expression\br + compare-expression \terminal{<=>} shift-expression +\end{bnf} + +\pnum +If one of the operands is of type \tcode{bool} +and the other is not, the program is ill-formed. + +\pnum +If both operands have arithmetic types, +the usual arithmetic conversions\iref{expr.arith.conv} are applied to the operands. +Then: + +\begin{itemize} +\item +If a narrowing conversion\iref{dcl.init.list} is required, +other than from an integral type to a floating point type, +the program is ill-formed. + +\item +Otherwise, if the operands have integral type, +the operator yields a prvalue of type \tcode{std::strong_ordering}. +The result is +\tcode{std::strong_ordering::equal} +if both operands are arithmetically equal, +\tcode{std::strong_ordering::less} +if the first operand is arithmetically +less than the second operand, +and +\tcode{std::strong_ordering::greater} +otherwise. +\item +Otherwise, the operands have floating-point type, and +the operator yields a prvalue of type \tcode{std::partial_ordering}. +The expression \tcode{a <=> b} yields +\tcode{std::partial_ordering::less} +if \tcode{a} is less than \tcode{b}, +\tcode{std::partial_ordering::greater} +if \tcode{a} is greater than \tcode{b}, +\tcode{std::partial_ordering::equivalent} +if \tcode{a} is equivalent to \tcode{b}, +and +\tcode{std::partial_ordering::unordered} otherwise. +\end{itemize} + +\pnum +If both operands have the same enumeration type \tcode{E}, +the operator yields the result of +converting the operands to the underlying type of \tcode{E} +and applying \tcode{<=>} to the converted operands. + +\pnum +If at least one of the operands is of pointer type, +array-to-pointer conversions\iref{conv.array}, +pointer conversions\iref{conv.ptr}, +function pointer conversions\iref{conv.fctptr}, +and +qualification conversions\iref{conv.qual} +are performed on both operands +to bring them to their composite pointer type\iref{expr.type}. +% +If at least one of the operands is of pointer-to-member type, +pointer-to-member conversions\iref{conv.mem} +and +qualification conversions\iref{conv.qual} +are performed on both operands +to bring them to their composite pointer type\iref{expr.type}. +% +If both operands are null pointer constants, +but not both of integer type, +pointer conversions\iref{conv.ptr} +are performed on both operands +to bring them to their composite pointer type\iref{expr.type}. +% +In all cases, after the conversions, the operands shall have the same type. +\begin{note} +If both of the operands are arrays, +array-to-pointer conversions\iref{conv.array} are not applied. +\end{note} + +\pnum +If the composite pointer type is +a function pointer type, +a pointer-to-member type, or +\tcode{std::nullptr_t}, +the operator yields a prvalue of type \tcode{std::strong_equality}; +the operator yields +\tcode{std::strong_equality::equal} +if the (possibly converted) operands compare equal\iref{expr.eq} +and +\tcode{std::strong_equality::unequal} +if they compare unequal, +otherwise the result of the operator is unspecified. + +\pnum +If the composite pointer type is an object pointer type, +\tcode{p <=> q} returns a \tcode{strong_ordering}. +If two pointer operands \tcode{p} and \tcode{q} compare equal\iref{expr.eq}, +\tcode{p <=> q} yields \tcode{std::strong_ordering::equal}; +if \tcode{p} and \tcode{q} compare unequal, +\tcode{p <=> q} yields +\tcode{std::strong_ordering::less} +if \tcode{q} compares greater than \tcode{p} +and +\tcode{std::strong_ordering::greater} +if \tcode{p} compares greater than \tcode{q}\iref{expr.rel}. +Otherwise, the result is unspecified. + +\pnum +Otherwise, the program is ill-formed. + +\pnum +The class types +\tcode{std::strong_ordering}, +\tcode{std::strong_equality}, +\tcode{std::weak_ordering}, +\tcode{std::weak_equality}, and +\tcode{std::partial_ordering} +are not predefined; +if the header \tcode{} +is not included prior to a use of such a class type -- +even an implicit use in which the type is not named +(e.g., via the \tcode{auto} specifier\iref{dcl.spec.auto} +or use of the built-in operator) -- the program is ill-formed. + \rSec2[expr.rel]{Relational operators}% \indextext{expression!relational operators}% \indextext{operator!relational} @@ -4861,11 +4999,11 @@ % \begin{bnf} \nontermdef{relational-expression}\br - shift-expression\br - relational-expression \terminal{<} shift-expression\br - relational-expression \terminal{>} shift-expression\br - relational-expression \terminal{<=} shift-expression\br - relational-expression \terminal{>=} shift-expression + compare-expression\br + relational-expression \terminal{<} compare-expression\br + relational-expression \terminal{>} compare-expression\br + relational-expression \terminal{<=} compare-expression\br + relational-expression \terminal{>=} compare-expression \end{bnf} The operands shall have arithmetic, enumeration, or pointer type. The @@ -5721,6 +5859,11 @@ \item a \grammarterm{delete-expression}\iref{expr.delete}; +\item +a three-way comparison\iref{expr.spaceship} +comparing pointers that do not point to the same +complete object or to any subobject thereof; + \item a relational\iref{expr.rel} or equality\iref{expr.eq} operator where the result is unspecified; or diff --git a/source/lex.tex b/source/lex.tex index 01efdd596d..258d40918b 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -796,13 +796,13 @@ \nontermdef{preprocessing-op-or-punc} \textnormal{one of}\br \>\{ \>\} \>[ \>] \>\# \>\#\# \>( \>)\br \><: \>:> \><\% \>\%> \>\%: \>\%:\%: \>; \>: \>.{..}\br -\>new \>delete \>? \>:: \>. \>.*\br -\>+ \>- \>* \>/ \>\% \>\caret \>\& \>| \>\tilde\br -\>! \>= \>< \>> \>+= \>-= \>*= \>/= \>\%=\br -\>\caret= \>\&= \>|= \><< \>>> \>>>= \><<= \>== \>!=\br -\><= \>>= \>\&\& \>|| \>++ \>-{-} \>, \>->* \>->\br -\>and \>and_eq \>bitand \>bitor \>compl \>not \>not_eq\br -\>or \>or_eq \>xor \>xor_eq +\>new \>delete \>? \>:: \>. \>.* \>-> \>->* \>\tilde\br +\>! \>+ \>- \>* \>/ \>\% \>\caret \>\& \>|\br +\>= \>+= \>-= \>*= \>/= \>\%= \>\caret= \>\&= \>|=\br +\>== \>!= \>< \>> \><= \>>= \><=> \>\&\& \>||\br +\><< \>>> \><<= \>>>= \>++ \>-{-} \>,\br +\>and \>or \>xor \>not \>bitand \>bitor \>compl\br +\>and_eq \>or_eq \>xor_eq \>not_eq \end{bnfkeywordtab} Each \grammarterm{preprocessing-op-or-punc} is converted to a single token diff --git a/source/macros.tex b/source/macros.tex index a30a7efe8f..4c5721781e 100644 --- a/source/macros.tex +++ b/source/macros.tex @@ -429,13 +429,13 @@ \nonfrenchspacing } -\newenvironment{BnfTabBase}[1] +\newenvironment{BnfTabBase}[2] { \begin{bnfbase} #1 \begin{indented} \begin{tabbing} - \hspace*{\bnfindentfirst}\=\hspace{\bnfindentinc}\=\hspace{.6in}\=\hspace{.6in}\=\hspace{.6in}\=\hspace{.6in}\=\hspace{.6in}\=\hspace{.6in}\=\hspace{.6in}\=\hspace{.6in}\=\hspace{.6in}\=\hspace{.6in}\=\kill} + \hspace*{\bnfindentfirst}\=\hspace{#2}\=\hspace{.6in}\=\hspace{.6in}\=\hspace{.6in}\=\hspace{.6in}\=\hspace{.6in}\=\hspace{.6in}\=\hspace{.6in}\=\hspace{.6in}\=\hspace{.6in}\=\hspace{.6in}\=\kill} { \end{tabbing} \end{indented} @@ -444,7 +444,7 @@ \newenvironment{bnfkeywordtab} { - \begin{BnfTabBase}{\BnfTermshape} + \begin{BnfTabBase}{\BnfTermshape}{.6in} } { \end{BnfTabBase} @@ -452,7 +452,7 @@ \newenvironment{bnftab} { - \begin{BnfTabBase}{\BnfNontermshape} + \begin{BnfTabBase}{\BnfNontermshape}{\bnfindentinc} } { \end{BnfTabBase} diff --git a/source/overloading.tex b/source/overloading.tex index f1b9ae565b..37d8a5f968 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -1058,9 +1058,29 @@ For all other operators, no such restrictions apply. \pnum -The set of candidate functions for overload resolution is the +The set of candidate functions for overload resolution +for some operator \tcode{@} +is the union of the member candidates, the non-member candidates, and -the built-in candidates. +the built-in candidates for that operator \tcode{@}. +If that operator is a +relational\iref{expr.rel} or equality\iref{expr.eq} operator +with operands \tcode{x} and \tcode{y}, +then for each member, non-member, or built-in candidate +for the operator \tcode{<=>}: +\begin{itemize} +\item +that operator is added to the set of candidate functions for overload resolution +if \tcode{x <=> y @ 0} is well-formed using that \tcode{operator<=>}; and +\item +a synthesized candidate is added to the candidate set +where the order of the two parameters is reversed +if \tcode{0 @ y <=> x} is well-formed using that \tcode{operator<=>}; +\end{itemize} +where in each case operator \tcode{<=>} candidates +are not considered for the lookup of operator \tcode{@}. + +\pnum The argument list contains all of the operands of the operator. The best function from the set of candidate functions is selected @@ -1081,7 +1101,16 @@ \end{codeblock} \end{example} -% USA _136/_28 L6899 USA core-756/734/682 over.match.oper +\pnum +If a candidate for \tcode{operator<=>} +is selected by overload resolution, +but \tcode{@} is not \tcode{<=>}, +the call to \tcode{operator@} with arguments \tcode{x} and \tcode{y} +yields the value of \tcode{0 @ operator<=>(y,x)} +if the selected candidate is a synthesized candidate +with reversed order of parameters, +or \tcode{operator<=>(x,y) @ 0} otherwise. + \pnum If a built-in candidate is selected by overload resolution, the operands of class type are converted to the types of the corresponding parameters @@ -1719,6 +1748,38 @@ \end{example} or, if not that, +\item +\tcode{F1} is an operator function +for a relational\iref{expr.rel} or equality\iref{expr.eq} operator +and \tcode{F2} is not +\begin{example} +\begin{codeblock} +struct S { + auto operator<=>(const S&, const S&) = default; // \#1 + bool operator<(const S&, const S&); // \#2 +}; +bool b = S() < S(); // calls \#2 +\end{codeblock} +\end{example} +or, if not that, + +\item +\tcode{F1} and \tcode{F2} are operator functions +for \tcode{operator<=>} and +\tcode{F2} is a synthesized candidate +with reversed order of parameters +and \tcode{F1} is not +\begin{example} +\begin{codeblock} +struct S { + std::weak_ordering operator<=>(const S&, int); // \#1 + std::weak_ordering operator<=>(int, const S&); // \#2 +}; +bool b = 1 < S(); // calls \#2 +\end{codeblock} +\end{example} +or, if not that + \item \tcode{F1} is generated from a \grammarterm{deduction-guide}\iref{over.match.class.deduct} @@ -3007,14 +3068,12 @@ \begin{bnfkeywordtab} \nontermdef{operator} \textnormal{one of}\br -\>new\>delete\>new[]\>delete[]\br -\>+\>-\>*\>/\>\%\>\caret\>\&\>|\>\~\br -\>!\>=\><\>>\>+=\>-=\>*=\>/=\>\%=\br -\>\caret=\>\&=\>|=\><<\>>>\>>>=\><<=\>={=}\>!=\br -\><=\>>=\>\&\&\>|{|}\>++\>-{-}\>,\>->*\>->\br -\>(\,)\>[\,] +\>new\>delete\>new[]\>delete[]\>(\,)\>[\,]\>->\>->*\>\~\br +\>!\>+\>-\>*\>/\>\%\>\caret\>\&\>|\br +\>=\>+=\>-=\>*=\>/=\>\%=\>\caret=\>\&=\>|=\br +\>={=}\>!=\><\>>\><=\>>=\><=>\>\&\&\>|{|}\br +\><<\>>>\><<=\>>>=\>++\>-{-}\>,\br \end{bnfkeywordtab} - \begin{note} The last two operators are function call\iref{expr.call} and subscripting\iref{expr.sub}. @@ -3698,6 +3757,23 @@ and \tcode{\placeholder{R}}. +\pnum +For every integral type \tcode{\placeholder{T}} +there exists a candidate operator function of the form + +\begin{codeblock} +std::strong_ordering operator<=>(@\placeholder{T}@, @\placeholder{T}@); +\end{codeblock} + +\pnum +For every pair of floating-point types +\tcode{\placeholder{L}} and \tcode{\placeholder{R}}, +there exists a candidate operator function of the form + +\begin{codeblock} +std::partial_ordering operator<=>(@\placeholder{L}@, @\placeholder{R}@); +\end{codeblock} + \pnum For every cv-qualified or cv-unqualified object type \tcode{\placeholder{T}} @@ -3734,16 +3810,20 @@ bool operator>=(@\placeholder{T}@, @\placeholder{T}@); bool operator==(@\placeholder{T}@, @\placeholder{T}@); bool operator!=(@\placeholder{T}@, @\placeholder{T}@); +@\placeholdernc{R}@ operator<=>(@\placeholder{T}@, @\placeholder{T}@); \end{codeblock} +where \tcode{\placeholder{R}} is the result type specified in \ref{expr.spaceship}. + \pnum For every \tcode{\placeholder{T}}, where \tcode{\placeholder{T}} is a pointer-to-member type or \tcode{std::nullptr_t}, there exist candidate operator functions of the form \begin{codeblock} -bool operator==(@\placeholder{T}@, @\placeholder{T}@); -bool operator!=(@\placeholder{T}@, @\placeholder{T}@); +bool operator==(@\placeholder{T}@, @\placeholder{T}@); +bool operator!=(@\placeholder{T}@, @\placeholder{T}@); +std::strong_equality operator<=>(@\placeholder{T}@, @\placeholder{T}@); \end{codeblock} \pnum diff --git a/source/special.tex b/source/special.tex index 5edad11675..81665de880 100644 --- a/source/special.tex +++ b/source/special.tex @@ -3330,3 +3330,158 @@ } \end{codeblock} \end{example} + +\rSec1[class.compare]{Comparisons}% + +\rSec2[class.def]{Defaulted comparison operator functions}% + +\pnum +A defaulted comparison operator function (\ref{expr.spaceship}, \ref{expr.rel}, \ref{expr.eq}) +for some class \tcode{C} +shall be a non-template function +declared in the \grammarterm{member-specification} of \tcode{C} +that is +\begin{itemize} +\item a non-static member of \tcode{C} having one parameter of type \tcode{const C\&}, or +\item a friend of \tcode{C} having two parameters of type \tcode{const C\&}. +\end{itemize} + +\rSec2[class.spaceship]{Three-way comparison} +\indextext{operator!three-way comparison!defaulted}% + +\pnum +The direct base class subobjects of \tcode{C}, +in the order of their declaration in the \grammarterm{base-specifier-list} of \tcode{C}, +followed by the non-static data members of \tcode{C}, +in the order of their declaration in the \grammarterm{member-specification} of \tcode{C}, +form a list of subobjects. +In that list, any subobject of array type is recursively expanded +to the sequence of its elements, in the order of increasing subscript. +Let \tcode{x}$_i$ be an lvalue denoting the $i^\textrm{th}$ element +in the expanded list of subobjects for an object \tcode{x} +formed by a sequence of +derived-to-base conversions\iref{over.best.ics}, +class member access expressions\iref{expr.ref}, and +array subscript expressions\iref{expr.sub} on \tcode{x}. +The type of the expression \tcode{x}$_i$ \tcode{<=>} \tcode{x}$_i$ +is denoted by \tcode{R}$_i$. +It is unspecified +whether virtual base class subobjects are compared more than once. + +\pnum +If the declared return type +of a defaulted three-way comparison operator function +is \tcode{auto}, +then the return type is deduced as +the common comparison type (see below) of +\tcode{R}$_0$, \tcode{R}$_1$, $\cdots$, \tcode{R}$_{n-1}$. +\begin{note} +Otherwise, +the program will be ill-formed +if the expression \tcode{x}$_i$ \tcode{<=>} \tcode{x}$_i$ +is not implicitly convertible to the declared return type for any $i$. +\end{note} +If the return type is deduced as \tcode{void}, +the operator function is defined as deleted. + +\pnum +The return value \tcode{V} of type \tcode{R} +of the defaulted three-way comparison operator function +with parameters \tcode{x} and \tcode{y} of the same type +is determined by comparing corresponding elements +\tcode{x}$_i$ and \tcode{y}$_i$ +in the expanded lists of subobjects for \tcode{x} and \tcode{y} +until the first index $i$ +where \tcode{x}$_i$ \tcode{<=>} \tcode{y}$_i$ +yields a result value \tcode{v}$_i$ where \tcode{v}$_i$\tcode{ != 0}, +contextually converted to \tcode{bool}, yields \tcode{true}. +Let \tcode{V} be \tcode{v}$_i$ converted to \tcode{R}. +If no such index exists, \tcode{V} is +\tcode{std::strong_ordering::equal} converted to \tcode{R}. + +\pnum +The \defn{common comparison type} \tcode{C} +of a possibly empty list of types +\tcode{T}$_0$, \tcode{T}$_1$, $\cdots$, \tcode{T}$_{n-1}$ +is defined as follows: + +\begin{itemize} +\item +If $n$ is 0, \tcode{C} is \tcode{std::strong_ordering}. + +\item +Otherwise, if any \tcode{T}$_i$ +is not a comparison category type\iref{cmp.categories}, +\tcode{C} is \tcode{void}. + +\item +Otherwise, if +\begin{itemize} +\item at least one \tcode{T}$_i$ is \tcode{std::weak_equality} or +\item at least one \tcode{T}$_i$ is \tcode{std::strong_equality} and + at least one \tcode{T}$_j$ is \tcode{std::partial_ordering} or + \tcode{std::weak_ordering}, +\end{itemize} +\tcode{C} is \tcode{std::weak_equality}. + +\item +Otherwise, if at least one \tcode{T}$_i$ is \tcode{std::strong_equality}, +\tcode{C} is \tcode{std::strong_equality}. + +\item +Otherwise, if at least one \tcode{T}$_i$ is \tcode{std::partial_ordering}, +\tcode{C} is \tcode{std::partial_ordering}. + +\item +Otherwise, if at least one \tcode{T}$_i$ is \tcode{std::weak_ordering}, +\tcode{C} is \tcode{std::weak_ordering}. + +\item +Otherwise, \tcode{C} is \tcode{std::strong_ordering}. +\end{itemize} + +\rSec2[class.rel.eq]{Other comparison operators} +\indextext{operator!relational!defaulted}% +\indextext{operator!equality!defaulted}% +\indextext{operator!inequality!defaulted}% + +\pnum +A defaulted relational\iref{expr.rel} or equality\iref{expr.eq} operator function +for some operator \tcode{@} +shall have a declared return type \tcode{bool}. + +\pnum +The operator function with parameters \tcode{x} and \tcode{y} +is defined as deleted if + +\begin{itemize} +\item +overload resolution\iref{over.match}, +as applied to \tcode{x <=> y} +(also considering synthesized candidates with reversed order of parameters), +results in an ambiguity +or a function that is deleted or inaccessible from the operator function, +or + +\item +the operator \tcode{@} +cannot be applied to the return type of \tcode{x <=> y} or \tcode{y <=> x}. +\end{itemize} + +Otherwise, the operator function yields +\tcode{x <=> y @ 0} +if an \tcode{operator<=>} +with the original order of parameters was selected, or +\tcode{0 @ y <=> x} +otherwise. + +\pnum +\begin{example} +\begin{codeblock} +struct C { + friend std::strong_equality operator<=>(const C&, const C&); + friend bool operator==(const C& x, const C& y) = default; // OK, returns \tcode{x <=> y == 0} + bool operator<(const C&) = default; // OK, function is deleted +}; +\end{codeblock} +\end{example} From 975375c24fdd76eb531a1eefbc604f10abf6a8d3 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Sun, 12 Nov 2017 20:21:35 -0800 Subject: [PATCH 048/168] [expr.spaceship] Move statement that builtin <=> is a prvalue to the front and reword to fix overfull hboxes. Extend note on requirement to explain how "auto" is relevant. [class.spaceship] Minor wording fix: when we're specifying the value of V, we don't "let" V be something (because it's already been introduced), we just need to say what value it has is. [over.match.oper] Rephrase for clarity. Fix places where "operator$" was used when we meant to refer to the $ operator and vice versa. --- source/expressions.tex | 21 ++++++++++++++------- source/overloading.tex | 15 ++++++++------- source/special.tex | 4 ++-- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/source/expressions.tex b/source/expressions.tex index 8376c7adc2..449d6cad03 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -4856,6 +4856,11 @@ compare-expression \terminal{<=>} shift-expression \end{bnf} +\pnum +The expression \tcode{p <=> q} is a prvalue indicating whether +\tcode{p} is less than, equal to, greater than, or incomparable with +\tcode{q}. + \pnum If one of the operands is of type \tcode{bool} and the other is not, the program is ill-formed. @@ -4873,7 +4878,7 @@ \item Otherwise, if the operands have integral type, -the operator yields a prvalue of type \tcode{std::strong_ordering}. +the result is of type \tcode{std::strong_ordering}. The result is \tcode{std::strong_ordering::equal} if both operands are arithmetically equal, @@ -4885,7 +4890,7 @@ otherwise. \item Otherwise, the operands have floating-point type, and -the operator yields a prvalue of type \tcode{std::partial_ordering}. +the result is of type \tcode{std::partial_ordering}. The expression \tcode{a <=> b} yields \tcode{std::partial_ordering::less} if \tcode{a} is less than \tcode{b}, @@ -4937,8 +4942,8 @@ a function pointer type, a pointer-to-member type, or \tcode{std::nullptr_t}, -the operator yields a prvalue of type \tcode{std::strong_equality}; -the operator yields +the result is of type \tcode{std::strong_equality}; +the result is \tcode{std::strong_equality::equal} if the (possibly converted) operands compare equal\iref{expr.eq} and @@ -4948,7 +4953,7 @@ \pnum If the composite pointer type is an object pointer type, -\tcode{p <=> q} returns a \tcode{strong_ordering}. +\tcode{p <=> q} is of type \tcode{std::strong_ordering}. If two pointer operands \tcode{p} and \tcode{q} compare equal\iref{expr.eq}, \tcode{p <=> q} yields \tcode{std::strong_ordering::equal}; if \tcode{p} and \tcode{q} compare unequal, @@ -4964,17 +4969,19 @@ Otherwise, the program is ill-formed. \pnum -The class types +The comparison category types\iref{cmp.categories} +(the types \tcode{std::strong_ordering}, \tcode{std::strong_equality}, \tcode{std::weak_ordering}, \tcode{std::weak_equality}, and -\tcode{std::partial_ordering} +\tcode{std::partial_ordering}) are not predefined; if the header \tcode{} is not included prior to a use of such a class type -- even an implicit use in which the type is not named (e.g., via the \tcode{auto} specifier\iref{dcl.spec.auto} +in a defaulted three-way comparison\iref{class.spaceship} or use of the built-in operator) -- the program is ill-formed. \rSec2[expr.rel]{Relational operators}% diff --git a/source/overloading.tex b/source/overloading.tex index 37d8a5f968..df991fe3d5 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -1077,8 +1077,8 @@ where the order of the two parameters is reversed if \tcode{0 @ y <=> x} is well-formed using that \tcode{operator<=>}; \end{itemize} -where in each case operator \tcode{<=>} candidates -are not considered for the lookup of operator \tcode{@}. +where in each case \tcode{operator<=>} candidates +are not considered for the recursive lookup of operator \tcode{@}. \pnum The argument list contains all of the @@ -1102,14 +1102,15 @@ \end{example} \pnum -If a candidate for \tcode{operator<=>} -is selected by overload resolution, +If an \tcode{operator<=>} candidate +is selected by overload resolution for an operator \tcode{@}, but \tcode{@} is not \tcode{<=>}, -the call to \tcode{operator@} with arguments \tcode{x} and \tcode{y} -yields the value of \tcode{0 @ operator<=>(y,x)} +\tcode{x @ y} +is interpreted as \tcode{0 @ y <=> x} if the selected candidate is a synthesized candidate with reversed order of parameters, -or \tcode{operator<=>(x,y) @ 0} otherwise. +or \tcode{x <=> y @ 0} otherwise, +using the selected \tcode{operator<=>} candidate. \pnum If a built-in candidate is selected by overload resolution, the diff --git a/source/special.tex b/source/special.tex index 81665de880..4614287963 100644 --- a/source/special.tex +++ b/source/special.tex @@ -3394,8 +3394,8 @@ until the first index $i$ where \tcode{x}$_i$ \tcode{<=>} \tcode{y}$_i$ yields a result value \tcode{v}$_i$ where \tcode{v}$_i$\tcode{ != 0}, -contextually converted to \tcode{bool}, yields \tcode{true}. -Let \tcode{V} be \tcode{v}$_i$ converted to \tcode{R}. +contextually converted to \tcode{bool}, yields \tcode{true}; +\tcode{V} is \tcode{v}$_i$ converted to \tcode{R}. If no such index exists, \tcode{V} is \tcode{std::strong_ordering::equal} converted to \tcode{R}. From f8814d2c66efc888f94c23b2e5d344119123ffcf Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Tue, 14 Nov 2017 14:44:47 -0800 Subject: [PATCH 049/168] P0768R1 Library Support for the Spaceship (Comparison) Operator [cmp.categories] Explicitly list comparison category types rather than eliding half of their names. Replace "shall be" with "is" when constraining the implementation. [operators] Stable name preserved for retained wording in [library]. Wording moved to [description] rather than [requirements] as it fits better there. 'template ' removed from operators, since they're not describing such templates after the move. [alg.3way] added to [alg.sorting] rather than [alg.nonmodifying] to match existing lexicographical_compare functions. --- source/algorithms.tex | 100 +++++ source/future.tex | 81 ++++ source/lib-intro.tex | 93 ++++- source/support.tex | 857 ++++++++++++++++++++++++++++++++++++++++++ source/utilities.tex | 81 ---- 5 files changed, 1119 insertions(+), 93 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index 049c0bff76..5db2338bd9 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -1035,6 +1035,20 @@ ForwardIterator2 first2, ForwardIterator2 last2, Compare comp); + // \ref{alg.3way}, three-way comparison algorithms + template + constexpr auto compare_3way(const T& a, const U& b); + template + constexpr auto + lexicographical_compare_3way(InputIterator1 b1, InputIterator1 e1, + InputIterator2 b2, InputIterator2 e2, + Cmp comp) + -> common_comparison_category_t; + template + constexpr auto + lexicographical_compare_3way(InputIterator1 b1, InputIterator1 e1, + InputIterator2 b2, InputIterator2 e2); + // \ref{alg.permutation.generators}, permutations template bool next_permutation(BidirectionalIterator first, @@ -5466,6 +5480,92 @@ \end{itemdescr} +\rSec2[alg.3way]{Three-way comparison algorithms} + +\indexlibrary{\idxcode{compare_3way}}% +\begin{itemdecl} +template constexpr auto compare_3way(const T& a, const U& b); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Compares two values and produces a result of the strongest applicable +comparison category type: +\begin{itemize} +\item +Returns \tcode{a <=> b} if that expression is well-formed. +\item +Otherwise, if the expressions \tcode{a == b} and \tcode{a < b} +are each well-formed and convertible to \tcode{bool}, +returns \tcode{strong_ordering::equal} +when \tcode{a == b} is \tcode{true}, +otherwise returns \tcode{strong_ordering::less} +when \tcode{a < b} is \tcode{true}, +and otherwise returns \tcode{strong_ordering::greater}. +\item +Otherwise, if the expression \tcode{a == b} +is well-formed and convertible to \tcode{bool}, +returns \tcode{strong_equality::equal} +when \tcode{a == b} is \tcode{true}, +and otherwise returns \tcode{strong_equality::nonequal}. +\item +Otherwise, the function is defined as deleted. +\end{itemize} +\end{itemdescr} + +\indexlibrary{\idxcode{lexicographical_compare_3way}}% +\begin{itemdecl} +template +constexpr auto + lexicographical_compare_3way(InputIterator1 b1, InputIterator1 e1, + InputIterator2 b2, InputIterator2 e2, + Cmp comp) + -> common_comparison_category_t; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires +\tcode{Cmp} shall be a function object type +whose return type is a comparison category type. + +\pnum +\effects +Lexicographically compares two ranges and +produces a result of the strongest applicable +comparison category type. +Equivalent to: +\begin{codeblock} +for ( ; b1 != e1 && b2 != e2; void(++b1), void(++b2) ) + if (auto cmp = comp(*b1,*b2); cmp != 0) + return cmp; +return b1 != e1 ? strong_ordering::greater : + b2 != e2 ? strong_ordering::less : + strong_ordering::equal; +\end{codeblock} +\end{itemdescr} + +\indexlibrary{\idxcode{lexicographical_compare_3way}}% +\begin{itemdecl} +template + constexpr auto + lexicographical_compare_3way(InputIterator1 b1, InputIterator1 e1, + InputIterator2 b2, InputIterator2 e2); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Equivalent to: +\begin{codeblock} +return lexicographical_compare_3way(b1, e1, b2, e2, + [](const auto& t, const auto& u) { + return compare_3way(t, u); + }); +\end{codeblock} +\end{itemdescr} + \rSec2[alg.permutation.generators]{Permutation generators} \indexlibrary{\idxcode{next_permutation}}% diff --git a/source/future.tex b/source/future.tex index 8e62d204a1..f3fee4c6f7 100644 --- a/source/future.tex +++ b/source/future.tex @@ -212,6 +212,87 @@ the namespace \tcode{std}. \end{example} +\rSec1[depr.relops]{Relational operators} + +\pnum +The header \tcode{} +\indextext{\idxhdr{utility}}% +has the following additions: + +\begin{codeblock} +namespace std::rel_ops { + template bool operator!=(const T&, const T&); + template bool operator> (const T&, const T&); + template bool operator<=(const T&, const T&); + template bool operator>=(const T&, const T&); +} +\end{codeblock} + +\pnum +To avoid redundant definitions of \tcode{operator!=} out of \tcode{operator==} +and operators \tcode{>}, \tcode{<=}, and \tcode{>=} out of \tcode{operator<}, +the library provides the following: + +\indexlibrary{\idxcode{operator"!=}}% +\begin{itemdecl} +template bool operator!=(const T& x, const T& y); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires +Type \tcode{T} is \tcode{EqualityComparable} (Table~\ref{tab:equalitycomparable}). + +\pnum +\returns +\tcode{!(x == y)}. +\end{itemdescr} + +\indexlibrary{\idxcode{operator>}}% +\begin{itemdecl} +template bool operator>(const T& x, const T& y); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires +Type \tcode{T} is \tcode{LessThanComparable} (Table~\ref{tab:lessthancomparable}). + +\pnum +\returns +\tcode{y < x}. +\end{itemdescr} + +\indexlibrary{\idxcode{operator<=}}% +\begin{itemdecl} +template bool operator<=(const T& x, const T& y); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires +Type \tcode{T} is \tcode{LessThanComparable} (Table~\ref{tab:lessthancomparable}). + +\pnum +\returns +\tcode{!(y < x)}. +\end{itemdescr} + +\indexlibrary{\idxcode{operator>=}}% +\begin{itemdecl} +template bool operator>=(const T& x, const T& y); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires +Type \tcode{T} is \tcode{LessThanComparable} (Table~\ref{tab:lessthancomparable}). + +\pnum +\returns +\tcode{!(x < y)}. +\end{itemdescr} + \rSec1[depr.str.strstreams]{\tcode{char*} streams} \pnum diff --git a/source/lib-intro.tex b/source/lib-intro.tex index e73cd11e7e..702b0432fc 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -876,6 +876,75 @@ \begin{note} This is typically implemented by declaring two such constructors, of which at most one participates in overload resolution. \end{note} +\rSec3[operators]{Operators} + +\pnum +In this library, whenever a declaration is provided for an \tcode{operator!=}, +\tcode{operator>}, \tcode{operator>=}, or \tcode{operator<=} +for a type \tcode{T}, +its requirements and semantics are as follows, +unless explicitly specified otherwise. + +\indexlibrary{\idxcode{operator"!=}}% +\begin{itemdecl} +bool operator!=(const T& x, const T& y); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires +Type \tcode{T} is \tcode{EqualityComparable} (Table~\ref{tab:equalitycomparable}). + +\pnum +\returns +\tcode{!(x == y)}. +\end{itemdescr} + +\indexlibrary{\idxcode{operator>}}% +\begin{itemdecl} +bool operator>(const T& x, const T& y); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires +Type \tcode{T} is \tcode{LessThanComparable} (Table~\ref{tab:lessthancomparable}). + +\pnum +\returns +\tcode{y < x}. +\end{itemdescr} + +\indexlibrary{\idxcode{operator<=}}% +\begin{itemdecl} +bool operator<=(const T& x, const T& y); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires +Type \tcode{T} is \tcode{LessThanComparable} (Table~\ref{tab:lessthancomparable}). + +\pnum +\returns +\tcode{!(y < x)}. +\end{itemdescr} + +\indexlibrary{\idxcode{operator>=}}% +\begin{itemdecl} +bool operator>=(const T& x, const T& y); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires +Type \tcode{T} is \tcode{LessThanComparable} (Table~\ref{tab:lessthancomparable}). + +\pnum +\returns +\tcode{!(x < y)}. +\end{itemdescr} + \rSec3[objects.within.classes]{Private members} \pnum @@ -979,41 +1048,46 @@ {llll} \topline \tcode{} & +\tcode{} & +\tcode{} & +\tcode{} \\ + +\tcode{} & \tcode{} & \tcode{} & \tcode{} \\ -\tcode{} & +\tcode{} & \tcode{} & \tcode{} & \tcode{} \\ -\tcode{} & +\tcode{} & \tcode{} & \tcode{} & \tcode{} \\ -\tcode{} & +\tcode{} & \tcode{} & \tcode{} & \tcode{} \\ -\tcode{} & +\tcode{} & \tcode{} & \tcode{} & \tcode{} \\ -\tcode{} & +\tcode{} & \tcode{} & \tcode{} & \tcode{} \\ -\tcode{} & +\tcode{} & \tcode{} & \tcode{} & \tcode{} \\ -\tcode{} & +\tcode{} & \tcode{} & \tcode{} & \tcode{} \\ @@ -1052,11 +1126,6 @@ \tcode{} & \tcode{} & \\ - -\tcode{} & -\tcode{} & -\tcode{} & -\\ \end{floattable} diff --git a/source/support.tex b/source/support.tex index e2a85f5d77..675f20317c 100644 --- a/source/support.tex +++ b/source/support.tex @@ -33,6 +33,7 @@ \ref{support.rtti} & Type identification & \tcode{} \\ \rowsep \ref{support.exception} & Exception handling & \tcode{} \\ \rowsep \ref{support.initlist} & Initializer lists & \tcode{} \\ \rowsep +\ref{cmp} & Comparisons & \tcode{} \\ \rowsep \ref{support.runtime} & Other runtime support & \tcode{} \\ & & \tcode{} \\ & & \tcode{} \\ @@ -3698,6 +3699,862 @@ \returns \tcode{il.end()}. \end{itemdescr} +\rSec1[cmp]{Comparisons} + +\rSec2[cmp.syn]{Header \tcode{} synopsis} + +\pnum +The header \tcode{} specifies types, objects, and functions +for use primarily in connection with +the three-way comparison operator\iref{expr.spaceship}. + +\indextext{\idxhdr{compare}}% +\indexlibrary{\idxcode{is_eq}}% +\indexlibrary{\idxcode{is_neq}}% +\indexlibrary{\idxcode{is_lt}}% +\indexlibrary{\idxcode{is_lteq}}% +\indexlibrary{\idxcode{is_gt}}% +\indexlibrary{\idxcode{is_geq}}% +\indexlibrary{\idxcode{is_gteq}}% +\indexlibrary{\idxcode{common_comparison_category_t}}% +\begin{codeblock} +namespace std { + // \ref{cmp.categories}, comparison category types + class weak_equality; + class strong_equality; + class partial_ordering; + class weak_ordering; + class strong_ordering; + + // named comparison functions + constexpr bool is_eq (weak_equality cmp) noexcept { return cmp == 0; } + constexpr bool is_neq (weak_equality cmp) noexcept { return cmp != 0; } + constexpr bool is_lt (partial_ordering cmp) noexcept { return cmp < 0; } + constexpr bool is_lteq(partial_ordering cmp) noexcept { return cmp <= 0; } + constexpr bool is_gt (partial_ordering cmp) noexcept { return cmp > 0; } + constexpr bool is_gteq(partial_ordering cmp) noexcept { return cmp >= 0; } + + // \ref{cmp.common}, common comparison category type + template + struct common_comparison_category { + using type = @\seebelow@; + }; + template + using common_comparison_category_t = typename common_comparison_category::type; + + // \ref{cmp.alg}, comparison algorithms + template + constexpr strong_ordering strong_order(const T& a, const T& b); + template + constexpr weak_ordering weak_order(const T& a, const T& b); + template + constexpr partial_ordering partial_order(const T& a, const T& b); + template + constexpr strong_equality strong_equal(const T& a, const T& b); + template + constexpr weak_equality weak_equal(const T& a, const T& b); +} +\end{codeblock} + +\rSec2[cmp.categories]{Comparison category types} + +\rSec3[cmp.categories.pre]{Preamble} + +\pnum +The types +\tcode{weak_equality}, +\tcode{strong_equality}, +\tcode{partial_ordering}, +\tcode{weak_ordering}, and +\tcode{strong_ordering} +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: + +\begin{codeblock} +enum class eq { equal = 0, equivalent = equal, + nonequal = 1, nonequivalent = nonequal }; // \expos +enum class ord { less = -1, greater = 1 }; // \expos +enum class ncmp { unordered = -127 }; // \expos +\end{codeblock} + +\pnum +\begin{note} +The types \tcode{strong_ordering} and \tcode{weak_equality} +correspond, respectively, to the terms +total ordering and equivalence in mathematics. +\end{note} + +\pnum +The relational and equality operators for the comparison category types +are specified with an anonymous parameter of unspecified type. +This type shall be selected by the implementation such that +these parameters can accept literal \tcode{0} as a corresponding argument. +\begin{example} +\tcode{nullptr_t} +satisfies this requirement. +\end{example} +In this context, the behavior of a program that supplies +an argument other than a literal \tcode{0} is undefined. + +\pnum +For the purposes of this subclause, +\defn{substitutability} is the property that \tcode{f(a) == f(b)} is \tcode{true} +whenever \tcode{a == b} is true, +where \tcode{f} denotes a function that reads only comparison-salient state +that is accessible via the argument's public const members. + +\rSec3[cmp.weakeq]{Class \tcode{weak_equality}} + +\pnum +The \tcode{weak_equality} type is typically used +as the result type of a three-way comparison operator +that (a) admits only equality and inequality comparisons, +and (b) does not imply substitutability. + +\indexlibrary{\idxcode{weak_equality}}% +\indexlibrarymember{equivalent}{weak_equality}% +\indexlibrarymember{nonequivalent}{weak_equality}% +\begin{codeblock} +namespace std { + class weak_equality { + int value; // \expos + + // exposition-only constructor + explicit constexpr weak_equality(eq v) noexcept : value(int(v)) {} // \expos + + public: + // valid values + static const weak_equality equivalent; + static const weak_equality nonequivalent; + + // comparisons + friend constexpr bool operator==(weak_equality v, @\unspec@) noexcept; + friend constexpr bool operator!=(weak_equality v, @\unspec@) noexcept; + friend constexpr bool operator==(@\unspec@, weak_equality v) noexcept; + friend constexpr bool operator!=(@\unspec@, weak_equality v) noexcept; + }; + + // valid values' definitions + inline constexpr + weak_equality weak_equality::equivalent (eq::equivalent); + inline constexpr + weak_equality weak_equality::nonequivalent(eq::nonequivalent); +} +\end{codeblock} + +\indexlibrarymember{operator==}{weak_equality}% +\begin{itemdecl} +constexpr bool operator==(weak_equality v, @\unspec@) noexcept; +constexpr bool operator==(@\unspec@, weak_equality v) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{v.value == 0}. +\end{itemdescr} + +\indexlibrarymember{operator"!=}{weak_equality}% +\begin{itemdecl} +constexpr bool operator!=(weak_equality v, @\unspec@) noexcept; +constexpr bool operator!=(@\unspec@, weak_equality v) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{v.value != 0}. +\end{itemdescr} + +\rSec3[cmp.strongeq]{Class \tcode{strong_equality}} + +\pnum +The \tcode{strong_equality} type is typically used +as the result type of a three-way comparison operator +that (a) admits only equality and inequality comparisons, +and (b) does imply substitutability. + +\indexlibrary{\idxcode{strong_equality}}% +\indexlibrarymember{equal}{strong_equality}% +\indexlibrarymember{nonequal}{strong_equality}% +\indexlibrarymember{equivalent}{strong_equality}% +\indexlibrarymember{nonequivalent}{strong_equality}% +\begin{codeblock} +namespace std { + class strong_equality { + int value; // \expos + + // exposition-only constructor + explicit constexpr strong_equality(eq v) noexcept : value(int(v)) {} // \expos + + public: + // valid values + static const strong_equality equal; + static const strong_equality nonequal; + static const strong_equality equivalent; + static const strong_equality nonequivalent; + + // conversion + constexpr operator weak_equality() const noexcept; + + // comparisons + friend constexpr bool operator==(strong_equality v, @\unspec@) noexcept; + friend constexpr bool operator!=(strong_equality v, @\unspec@) noexcept; + friend constexpr bool operator==(@\unspec@, strong_equality v) noexcept; + friend constexpr bool operator!=(@\unspec@, strong_equality v) noexcept; + }; + + // valid values' definitions + inline constexpr + strong_equality strong_equality::equal (eq::equal); + inline constexpr + strong_equality strong_equality::nonequal (eq::nonequal); + inline constexpr + strong_equality strong_equality::equivalent (eq::equivalent); + inline constexpr + strong_equality strong_equality::nonequivalent(eq::nonequivalent); +} +\end{codeblock} + +\indexlibrarymember{operator weak_equality}{strong_equality}% +\begin{itemdecl} +constexpr operator weak_equality() const noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{value == 0 ?\ weak_equality::equivalent :\ weak_equality::nonequivalent}. +\end{itemdescr} + +\indexlibrarymember{operator==}{strong_equality}% +\begin{itemdecl} +constexpr bool operator==(strong_equality v, @\unspec@) noexcept; +constexpr bool operator==(@\unspec@, strong_equality v) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{v.value == 0}. +\end{itemdescr} + +\indexlibrarymember{operator"!=}{strong_equality}% +\begin{itemdecl} +constexpr bool operator!=(strong_equality v, @\unspec@) noexcept; +constexpr bool operator!=(@\unspec@, strong_equality v) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{v.value != 0}. +\end{itemdescr} + +\rSec3[cmp.partialord]{Class \tcode{partial_ordering}} + +\pnum +The \tcode{partial_ordering} type is typically used +as the result type of a three-way comparison operator +that (a) admits all of the six comparison operators, +(b) does not imply substitutability, +and (c) permits two values to be incomparable +(i.e., \tcode{a < b}, \tcode{a == b}, and \tcode{a > b} might all be \tcode{false}). + +\indexlibrary{\idxcode{partial_ordering}}% +\indexlibrarymember{less}{partial_ordering}% +\indexlibrarymember{equivalent}{partial_ordering}% +\indexlibrarymember{greater}{partial_ordering}% +\indexlibrarymember{unordered}{partial_ordering}% +\begin{codeblock} +namespace std { + class partial_ordering { + int value; // \expos + bool is_ordered; // \expos + + // exposition-only constructors + explicit constexpr + partial_ordering(eq v) noexcept : value(int(v)), is_ordered(true) {} // \expos + explicit constexpr + partial_ordering(ord v) noexcept : value(int(v)), is_ordered(true) {} // \expos + explicit constexpr + partial_ordering(ncmp v) noexcept : value(int(v)), is_ordered(false) {} // \expos + + public: + // valid values + static const partial_ordering less; + static const partial_ordering equivalent; + static const partial_ordering greater; + static const partial_ordering unordered; + + // conversion + constexpr operator weak_equality() const noexcept; + + // comparisons + friend constexpr bool operator==(partial_ordering v, @\unspec@) noexcept; + friend constexpr bool operator!=(partial_ordering v, @\unspec@) noexcept; + friend constexpr bool operator< (partial_ordering v, @\unspec@) noexcept; + friend constexpr bool operator<=(partial_ordering v, @\unspec@) noexcept; + friend constexpr bool operator> (partial_ordering v, @\unspec@) noexcept; + friend constexpr bool operator>=(partial_ordering v, @\unspec@) noexcept; + friend constexpr bool operator==(@\unspec@, partial_ordering v) noexcept; + friend constexpr bool operator!=(@\unspec@, partial_ordering v) noexcept; + friend constexpr bool operator< (@\unspec@, partial_ordering v) noexcept; + friend constexpr bool operator<=(@\unspec@, partial_ordering v) noexcept; + friend constexpr bool operator> (@\unspec@, partial_ordering v) noexcept; + friend constexpr bool operator>=(@\unspec@, partial_ordering v) noexcept; + }; + + // valid values' definitions + inline constexpr + partial_ordering partial_ordering::less (ord::less); + inline constexpr + partial_ordering partial_ordering::equivalent(eq::equivalent); + inline constexpr + partial_ordering partial_ordering::greater (ord::greater); + inline constexpr + partial_ordering partial_ordering::unordered (ncmp::unordered); +} +\end{codeblock} + +\indexlibrarymember{operator weak_equality}{partial_ordering}% +\begin{itemdecl} +constexpr operator weak_equality() const noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{value == 0 ?\ weak_equality::equivalent :\ weak_equality::nonequivalent}. +\begin{note} +The result is independent of the \tcode{is_ordered} member. +\end{note} +\end{itemdescr} + +\indexlibrarymember{operator==}{partial_ordering}% +\indexlibrarymember{operator<}{partial_ordering}% +\indexlibrarymember{operator<=}{partial_ordering}% +\indexlibrarymember{operator>}{partial_ordering}% +\indexlibrarymember{operator>=}{partial_ordering}% +\begin{itemdecl} +constexpr bool operator==(partial_ordering v, @\unspec@) noexcept; +constexpr bool operator< (partial_ordering v, @\unspec@) noexcept; +constexpr bool operator<=(partial_ordering v, @\unspec@) noexcept; +constexpr bool operator> (partial_ordering v, @\unspec@) noexcept; +constexpr bool operator>=(partial_ordering v, @\unspec@) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +For \tcode{operator@}, \tcode{v.is_ordered \&\& v.value @ 0}. +\end{itemdescr} + +\indexlibrarymember{operator==}{partial_ordering}% +\indexlibrarymember{operator<}{partial_ordering}% +\indexlibrarymember{operator<=}{partial_ordering}% +\indexlibrarymember{operator>}{partial_ordering}% +\indexlibrarymember{operator>=}{partial_ordering}% +\begin{itemdecl} +constexpr bool operator==(@\unspec@, partial_ordering v) noexcept; +constexpr bool operator< (@\unspec@, partial_ordering v) noexcept; +constexpr bool operator<=(@\unspec@, partial_ordering v) noexcept; +constexpr bool operator> (@\unspec@, partial_ordering v) noexcept; +constexpr bool operator>=(@\unspec@, partial_ordering v) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +For \tcode{operator@}, \tcode{v.is_ordered \&\& 0 @ v.value}. +\end{itemdescr} + +\indexlibrarymember{operator"!=}{partial_ordering}% +\begin{itemdecl} +constexpr bool operator!=(partial_ordering v, @\unspec@) noexcept; +constexpr bool operator!=(@\unspec@, partial_ordering v) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +For \tcode{operator@}, \tcode{!v.is_ordered || v.value != 0}. +\end{itemdescr} + +\rSec3[cmp.weakord]{Class \tcode{weak_ordering}} + +\pnum +The \tcode{weak_ordering} type is typically used +as the result type of a three-way comparison operator +that (a) admits all of the six comparison operators, +and (b) does not imply substitutability. + +\indexlibrary{\idxcode{weak_ordering}}% +\indexlibrarymember{less}{weak_ordering}% +\indexlibrarymember{equivalent}{weak_ordering}% +\indexlibrarymember{greater}{weak_ordering}% +\begin{codeblock} +namespace std { + class weak_ordering { + int value; // \expos + + // exposition-only constructors + explicit constexpr weak_ordering(eq v) noexcept : value(int(v)) {} // \expos + explicit constexpr weak_ordering(ord v) noexcept : value(int(v)) {} // \expos + + public: + // valid values + static const weak_ordering less; + static const weak_ordering equivalent; + static const weak_ordering greater; + + // conversions + constexpr operator weak_equality() const noexcept; + constexpr operator partial_ordering() const noexcept; + + // comparisons + friend constexpr bool operator==(weak_ordering v, @\unspec@) noexcept; + friend constexpr bool operator!=(weak_ordering v, @\unspec@) noexcept; + friend constexpr bool operator< (weak_ordering v, @\unspec@) noexcept; + friend constexpr bool operator<=(weak_ordering v, @\unspec@) noexcept; + friend constexpr bool operator> (weak_ordering v, @\unspec@) noexcept; + friend constexpr bool operator>=(weak_ordering v, @\unspec@) noexcept; + friend constexpr bool operator==(@\unspec@, weak_ordering v) noexcept; + friend constexpr bool operator!=(@\unspec@, weak_ordering v) noexcept; + friend constexpr bool operator< (@\unspec@, weak_ordering v) noexcept; + friend constexpr bool operator<=(@\unspec@, weak_ordering v) noexcept; + friend constexpr bool operator> (@\unspec@, weak_ordering v) noexcept; + friend constexpr bool operator>=(@\unspec@, weak_ordering v) noexcept; + }; + + // valid values' definitions + inline constexpr + weak_ordering weak_ordering::less (ord::less); + inline constexpr + weak_ordering weak_ordering::equivalent(eq::equivalent); + inline constexpr + weak_ordering weak_ordering::greater (ord::greater); +} +\end{codeblock} + +\indexlibrarymember{operator weak_equality}{weak_ordering}% +\begin{itemdecl} +constexpr operator weak_equality() const noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{value == 0 ?\ weak_equality::equivalent :\ weak_equality::nonequivalent}. +\end{itemdescr} + +\indexlibrarymember{operator partial_ordering}{weak_ordering}% +\begin{itemdecl} +constexpr operator partial_ordering() const noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\begin{codeblock} +value == 0 ? partial_ordering::equivalent : +value < 0 ? partial_ordering::less : + partial_ordering::greater +\end{codeblock} +\end{itemdescr} + +\indexlibrarymember{operator==}{weak_ordering}% +\indexlibrarymember{operator"!=}{weak_ordering}% +\indexlibrarymember{operator<}{weak_ordering}% +\indexlibrarymember{operator<=}{weak_ordering}% +\indexlibrarymember{operator>}{weak_ordering}% +\indexlibrarymember{operator>=}{weak_ordering}% +\begin{itemdecl} +constexpr bool operator==(weak_ordering v, @\unspec@) noexcept; +constexpr bool operator!=(weak_ordering v, @\unspec@) noexcept; +constexpr bool operator< (weak_ordering v, @\unspec@) noexcept; +constexpr bool operator<=(weak_ordering v, @\unspec@) noexcept; +constexpr bool operator> (weak_ordering v, @\unspec@) noexcept; +constexpr bool operator>=(weak_ordering v, @\unspec@) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{v.value @ 0} for \tcode{operator@}. +\end{itemdescr} + +\indexlibrarymember{operator==}{weak_ordering}% +\indexlibrarymember{operator"!=}{weak_ordering}% +\indexlibrarymember{operator<}{weak_ordering}% +\indexlibrarymember{operator<=}{weak_ordering}% +\indexlibrarymember{operator>}{weak_ordering}% +\indexlibrarymember{operator>=}{weak_ordering}% +\begin{itemdecl} +constexpr bool operator==(@\unspec@, weak_ordering v) noexcept; +constexpr bool operator!=(@\unspec@, weak_ordering v) noexcept; +constexpr bool operator< (@\unspec@, weak_ordering v) noexcept; +constexpr bool operator<=(@\unspec@, weak_ordering v) noexcept; +constexpr bool operator> (@\unspec@, weak_ordering v) noexcept; +constexpr bool operator>=(@\unspec@, weak_ordering v) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{0 @ v.value} for \tcode{operator@}. +\end{itemdescr} + +\rSec3[cmp.strongord]{Class \tcode{strong_ordering}} + +\pnum +The \tcode{strong_ordering} type is typically used +as the result type of a three-way comparison operator +that (a) admits all of the six comparison operators, +and (b) does imply substitutability. + +\indexlibrary{\idxcode{strong_ordering}}% +\indexlibrarymember{less}{strong_ordering}% +\indexlibrarymember{equal}{strong_ordering}% +\indexlibrarymember{equivalent}{strong_ordering}% +\indexlibrarymember{greater}{strong_ordering}% +\begin{codeblock} +namespace std { + class strong_ordering { + int value; // \expos + + // exposition-only constructors + explicit constexpr strong_ordering(eq v) noexcept : value(int(v)) {} // \expos + explicit constexpr strong_ordering(ord v) noexcept : value(int(v)) {} // \expos + + public: + // valid values + static const strong_ordering less; + static const strong_ordering equal; + static const strong_ordering equivalent; + static const strong_ordering greater; + + // conversions + constexpr operator weak_equality() const noexcept; + constexpr operator strong_equality() const noexcept; + constexpr operator partial_ordering() const noexcept; + constexpr operator weak_ordering() const noexcept; + + // comparisons + friend constexpr bool operator==(strong_ordering v, @\unspec@) noexcept; + friend constexpr bool operator!=(strong_ordering v, @\unspec@) noexcept; + friend constexpr bool operator< (strong_ordering v, @\unspec@) noexcept; + friend constexpr bool operator<=(strong_ordering v, @\unspec@) noexcept; + friend constexpr bool operator> (strong_ordering v, @\unspec@) noexcept; + friend constexpr bool operator>=(strong_ordering v, @\unspec@) noexcept; + friend constexpr bool operator==(@\unspec@, strong_ordering v) noexcept; + friend constexpr bool operator!=(@\unspec@, strong_ordering v) noexcept; + friend constexpr bool operator< (@\unspec@, strong_ordering v) noexcept; + friend constexpr bool operator<=(@\unspec@, strong_ordering v) noexcept; + friend constexpr bool operator> (@\unspec@, strong_ordering v) noexcept; + friend constexpr bool operator>=(@\unspec@, strong_ordering v) noexcept; + }; + + // valid values' definitions + inline constexpr + strong_ordering strong_ordering::less (ord::less); + inline constexpr + strong_ordering strong_ordering::equal (eq::equal); + inline constexpr + strong_ordering strong_ordering::equivalent(eq::equivalent); + inline constexpr + strong_ordering strong_ordering::greater (ord::greater); +} +\end{codeblock} + +\indexlibrarymember{operator weak_equality}{strong_ordering}% +\begin{itemdecl} +constexpr operator weak_equality() const noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{value == 0 ?\ weak_equality::equivalent :\ weak_equality::nonequivalent}. +\end{itemdescr} + +\indexlibrarymember{operator strong_equality}{strong_ordering}% +\begin{itemdecl} +constexpr operator strong_equality() const noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{value == 0 ?\ strong_equality::equal :\ strong_equality::nonequal}. +\end{itemdescr} + +\indexlibrarymember{operator partial_ordering}{strong_ordering}% +\begin{itemdecl} +constexpr operator partial_ordering() const noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\begin{codeblock} +value == 0 ? partial_ordering::equivalent : +value < 0 ? partial_ordering::less : + partial_ordering::greater +\end{codeblock} +\end{itemdescr} + +\indexlibrarymember{operator weak_ordering}{strong_ordering}% +\begin{itemdecl} +constexpr operator weak_ordering() const noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\begin{codeblock} +value == 0 ? weak_ordering::equivalent : +value < 0 ? weak_ordering::less : + weak_ordering::greater +\end{codeblock} +\end{itemdescr} + +\indexlibrarymember{operator==}{strong_ordering}% +\indexlibrarymember{operator"!=}{strong_ordering}% +\indexlibrarymember{operator<}{strong_ordering}% +\indexlibrarymember{operator<=}{strong_ordering}% +\indexlibrarymember{operator>}{strong_ordering}% +\indexlibrarymember{operator>=}{strong_ordering}% +\begin{itemdecl} +constexpr bool operator==(strong_ordering v, @\unspec@) noexcept; +constexpr bool operator!=(strong_ordering v, @\unspec@) noexcept; +constexpr bool operator< (strong_ordering v, @\unspec@) noexcept; +constexpr bool operator<=(strong_ordering v, @\unspec@) noexcept; +constexpr bool operator> (strong_ordering v, @\unspec@) noexcept; +constexpr bool operator>=(strong_ordering v, @\unspec@) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{v.value @ 0} for \tcode{operator@}. +\end{itemdescr} + +\indexlibrarymember{operator==}{strong_ordering}% +\indexlibrarymember{operator"!=}{strong_ordering}% +\indexlibrarymember{operator<}{strong_ordering}% +\indexlibrarymember{operator<=}{strong_ordering}% +\indexlibrarymember{operator>}{strong_ordering}% +\indexlibrarymember{operator>=}{strong_ordering}% +\begin{itemdecl} +constexpr bool operator==(@\unspec@, strong_ordering v) noexcept; +constexpr bool operator!=(@\unspec@, strong_ordering v) noexcept; +constexpr bool operator< (@\unspec@, strong_ordering v) noexcept; +constexpr bool operator<=(@\unspec@, strong_ordering v) noexcept; +constexpr bool operator> (@\unspec@, strong_ordering v) noexcept; +constexpr bool operator>=(@\unspec@, strong_ordering v) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{0 @ v.value} for \tcode{operator@}. +\end{itemdescr} + +\rSec2[cmp.common]{Class template \tcode{common_comparison_category}} + +\pnum +The type \tcode{common_comparison_category} provides an alias for +the strongest comparison category +to which all of the template arguments can be converted. +\begin{note} +A comparison category type is stronger than another if +they are distinct types and an instance of the former +can be converted to an instance of the latter. +\end{note} + +\indexlibrary{\idxcode{common_comparison_category}}% +\begin{itemdecl} +template +struct common_comparison_category { + using type = @\seebelow@; +}; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\remarks +The member \grammarterm{typedef-name} \tcode{type} denotes +the common comparison type\iref{class.spaceship} of \tcode{Ts...}, +the expanded parameter pack. +\begin{note} +This is well-defined even if +the expansion is empty or +includes a type that is not a comparison category type. +\end{note} +\end{itemdescr} + +\rSec2[cmp.alg]{Comparison algorithms} + +\indexlibrary{\idxcode{strong_order}}% +\begin{itemdecl} +template +constexpr strong_ordering strong_order(const T& a, const T& b); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Compares two values and produces a result of type \tcode{strong_ordering}: + +\begin{itemize} +\item +If \tcode{numeric_limits::is_iec559} is \tcode{true}, +returns a result of type \tcode{strong_ordering} +that is consistent with the \tcode{totalOrder} operation +as specified in ISO/IEC/IEEE 60559. +\item +Otherwise, returns \tcode{a <=> b} +if that expression is well-formed and +convertible to \tcode{strong_ordering}. +\item +Otherwise, if the expression \tcode{a <=> b} is well-formed, +then the function is defined as deleted. +\item +Otherwise, if the expressions \tcode{a == b} and \tcode{a < b} +are each well-formed and convertible to \tcode{bool}, +returns \tcode{strong_ordering::equal} +when \tcode{a == b} is \tcode{true}, +otherwise returns \tcode{strong_ordering::less} +when \tcode{a < b} is \tcode{true}, +and otherwise returns \tcode{strong_ordering::greater}. +\item +Otherwise, the function is defined as deleted. +\end{itemize} +\end{itemdescr} + +\indexlibrary{\idxcode{weak_order}}% +\begin{itemdecl} +template +constexpr weak_ordering weak_order(const T& a, const T& b); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Compares two values and produces a result of type \tcode{weak_ordering}: + +\begin{itemize} +\item +Returns \tcode{a <=> b} if that expression is well-formed and +convertible to \tcode{weak_ordering}. +\item +Otherwise, if the expression \tcode{a <=> b} is well-formed, +then the function is defined as deleted. +\item +Otherwise, if the expressions \tcode{a == b} and \tcode{a < b} +are each well-formed and convertible to \tcode{bool}, +returns \tcode{weak_ordering::equivalent} +when \tcode{a == b} is \tcode{true}, +otherwise returns \tcode{weak_ordering::less} +when \tcode{a < b} is \tcode{true}, +and otherwise returns \tcode{weak_ordering::greater}. +\item +Otherwise, the function is defined as deleted. +\end{itemize} +\end{itemdescr} + +\indexlibrary{\idxcode{partial_order}}% +\begin{itemdecl} +template +constexpr partial_ordering partial_order(const T& a, const T& b); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Compares two values and produces a result of type \tcode{partial_ordering}: + +\begin{itemize} +\item +Returns \tcode{a <=> b} if that expression is well-formed and +convertible to \tcode{partial_ordering}. +\item +Otherwise, if the expression \tcode{a <=> b} is well-formed, +then the function is defined as deleted. +\item +Otherwise, if the expressions \tcode{a == b} and \tcode{a < b} +are each well-formed and convertible to \tcode{bool}, +returns \tcode{partial_ordering::equivalent} +when \tcode{a == b} is \tcode{true}, +otherwise returns \tcode{partial_ordering::less} +when \tcode{a < b is true}, +and otherwise returns \tcode{partial_ordering::greater}. +\item +Otherwise, the function is defined as deleted. +\end{itemize} +\end{itemdescr} + +\indexlibrary{\idxcode{strong_equal}}% +\begin{itemdecl} +template +constexpr strong_equality strong_equal(const T& a, const T& b); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Compares two values and produces a result of type \tcode{strong_equality}: + +\begin{itemize} +\item +Returns \tcode{a <=> b} if that expression is well-formed and +convertible to \tcode{strong_equality}. +\item +Otherwise, if the expression \tcode{a <=> b} is well-formed, +then the function is defined as deleted. +\item +Otherwise, if the expression \tcode{a == b} +is well-formed and convertible to \tcode{bool}, +returns \tcode{strong_equality::equal} +when \tcode{a == b} is \tcode{true}, +and otherwise returns \tcode{strong_equality::nonequal}. +\item +Otherwise, the function is defined as deleted. +\end{itemize} +\end{itemdescr} + +\indexlibrary{\idxcode{weak_equal}}% +\begin{itemdecl} +template +constexpr weak_equality weak_equal(const T& a, const T& b); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Compares two values and produces a result of type \tcode{weak_equality}: + +\begin{itemize} +\item +Returns \tcode{a <=> b} if that expression is well-formed and +convertible to \tcode{weak_equality}. +\item +Otherwise, if the expression \tcode{a <=> b} is well-formed, +then the function is defined as deleted. +\item +Otherwise, if the expression \tcode{a == b} +is well-formed and convertible to \tcode{bool}, +returns \tcode{weak_equality::equivalent} +when \tcode{a == b} is \tcode{true}, +and otherwise returns \tcode{weak_equality::nonequivalent}. +\item +Otherwise, the function is defined as deleted. +\end{itemize} +\end{itemdescr} + \rSec1[support.runtime]{Other runtime support} \pnum diff --git a/source/utilities.tex b/source/utilities.tex index 23c495dd8b..98e4bc5a90 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -46,14 +46,6 @@ #include // see \ref{initializer_list.syn} namespace std { - // \ref{operators}, operators - namespace rel_ops { - template bool operator!=(const T&, const T&); - template bool operator> (const T&, const T&); - template bool operator<=(const T&, const T&); - template bool operator>=(const T&, const T&); - } - // \ref{utility.swap}, swap template void swap(T& a, T& b) noexcept(@\seebelow@); @@ -198,79 +190,6 @@ \tcode{fixed}, and \tcode{hex}. -\rSec2[operators]{Operators} - -\pnum -To avoid redundant definitions of \tcode{operator!=} out of \tcode{operator==} -and operators \tcode{>}, \tcode{<=}, and \tcode{>=} out of \tcode{operator<}, -the library provides the following: - -\indexlibrary{\idxcode{operator"!=}}% -\begin{itemdecl} -template bool operator!=(const T& x, const T& y); -\end{itemdecl} - -\begin{itemdescr} -\pnum -\requires -Type \tcode{T} is \tcode{EqualityComparable} (Table~\ref{tab:equalitycomparable}). - -\pnum -\returns -\tcode{!(x == y)}. -\end{itemdescr} - -\indexlibrary{\idxcode{operator>}}% -\begin{itemdecl} -template bool operator>(const T& x, const T& y); -\end{itemdecl} - -\begin{itemdescr} -\pnum -\requires -Type \tcode{T} is \tcode{LessThanComparable} (Table~\ref{tab:lessthancomparable}). - -\pnum -\returns -\tcode{y < x}. -\end{itemdescr} - -\indexlibrary{\idxcode{operator<=}}% -\begin{itemdecl} -template bool operator<=(const T& x, const T& y); -\end{itemdecl} - -\begin{itemdescr} -\pnum -\requires -Type \tcode{T} is \tcode{LessThanComparable} (Table~\ref{tab:lessthancomparable}). - -\pnum -\returns -\tcode{!(y < x)}. -\end{itemdescr} - -\indexlibrary{\idxcode{operator>=}}% -\begin{itemdecl} -template bool operator>=(const T& x, const T& y); -\end{itemdecl} - -\begin{itemdescr} -\pnum -\requires -Type \tcode{T} is \tcode{LessThanComparable} (Table~\ref{tab:lessthancomparable}). - -\pnum -\returns -\tcode{!(x < y)}. -\end{itemdescr} - -\pnum -In this library, whenever a declaration is provided for an \tcode{operator!=}, -\tcode{operator>}, \tcode{operator>=}, or \tcode{operator<=}, -and requirements and semantics are not explicitly provided, -the requirements and semantics are as specified in this Clause. - \rSec2[utility.swap]{\tcode{swap}} \indexlibrary{\idxcode{swap}}% From 5fb44a4c8a7533bebb95aab46b8a7c56bd490ed3 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Tue, 14 Nov 2017 14:58:15 -0800 Subject: [PATCH 050/168] [expr], [cmp.alg] Rephrase to fix overfull hboxes. --- source/expressions.tex | 2 +- source/support.tex | 76 +++++++++++++++++++++++++++--------------- 2 files changed, 51 insertions(+), 27 deletions(-) diff --git a/source/expressions.tex b/source/expressions.tex index 449d6cad03..19f122d32e 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -4969,7 +4969,7 @@ Otherwise, the program is ill-formed. \pnum -The comparison category types\iref{cmp.categories} +The five comparison category types\iref{cmp.categories} (the types \tcode{std::strong_ordering}, \tcode{std::strong_equality}, diff --git a/source/support.tex b/source/support.tex index 675f20317c..a536b510d3 100644 --- a/source/support.tex +++ b/source/support.tex @@ -4424,12 +4424,18 @@ then the function is defined as deleted. \item Otherwise, if the expressions \tcode{a == b} and \tcode{a < b} -are each well-formed and convertible to \tcode{bool}, -returns \tcode{strong_ordering::equal} -when \tcode{a == b} is \tcode{true}, -otherwise returns \tcode{strong_ordering::less} -when \tcode{a < b} is \tcode{true}, -and otherwise returns \tcode{strong_ordering::greater}. +are each well-formed and convertible to \tcode{bool}, then +\begin{itemize} +\item +if \tcode{a == b} is \tcode{true}, +returns \tcode{strong_ordering::equal}; +\item +otherwise, if \tcode{a < b} is \tcode{true}, +returns \tcode{strong_ordering::less}; +\item +otherwise, +returns \tcode{strong_ordering::greater}. +\end{itemize} \item Otherwise, the function is defined as deleted. \end{itemize} @@ -4455,12 +4461,17 @@ then the function is defined as deleted. \item Otherwise, if the expressions \tcode{a == b} and \tcode{a < b} -are each well-formed and convertible to \tcode{bool}, -returns \tcode{weak_ordering::equivalent} -when \tcode{a == b} is \tcode{true}, -otherwise returns \tcode{weak_ordering::less} -when \tcode{a < b} is \tcode{true}, -and otherwise returns \tcode{weak_ordering::greater}. +are each well-formed and convertible to \tcode{bool}, then +\begin{itemize} +\item +if \tcode{a == b} is \tcode{true}, +returns \tcode{weak_ordering::equivalent}; +\item +otherwise, if \tcode{a < b} is \tcode{true}, +returns \tcode{weak_ordering::less}; +\item +otherwise, returns \tcode{weak_ordering::greater}. +\end{itemize} \item Otherwise, the function is defined as deleted. \end{itemize} @@ -4486,12 +4497,17 @@ then the function is defined as deleted. \item Otherwise, if the expressions \tcode{a == b} and \tcode{a < b} -are each well-formed and convertible to \tcode{bool}, -returns \tcode{partial_ordering::equivalent} -when \tcode{a == b} is \tcode{true}, -otherwise returns \tcode{partial_ordering::less} -when \tcode{a < b is true}, -and otherwise returns \tcode{partial_ordering::greater}. +are each well-formed and convertible to \tcode{bool}, then +\begin{itemize} +\item +if \tcode{a == b} is \tcode{true}, +returns \tcode{partial_ordering::equivalent}; +\item +otherwise, if \tcode{a < b is true}, +returns \tcode{partial_ordering::less}; +\item +otherwise, returns \tcode{partial_ordering::greater}. +\end{itemize} \item Otherwise, the function is defined as deleted. \end{itemize} @@ -4517,10 +4533,14 @@ then the function is defined as deleted. \item Otherwise, if the expression \tcode{a == b} -is well-formed and convertible to \tcode{bool}, -returns \tcode{strong_equality::equal} -when \tcode{a == b} is \tcode{true}, -and otherwise returns \tcode{strong_equality::nonequal}. +is well-formed and convertible to \tcode{bool}, then +\begin{itemize} +\item +if \tcode{a == b} is \tcode{true}, +returns \tcode{strong_equality::equal}; +\item +otherwise, returns \tcode{strong_equality::nonequal}. +\end{itemize} \item Otherwise, the function is defined as deleted. \end{itemize} @@ -4546,10 +4566,14 @@ then the function is defined as deleted. \item Otherwise, if the expression \tcode{a == b} -is well-formed and convertible to \tcode{bool}, -returns \tcode{weak_equality::equivalent} -when \tcode{a == b} is \tcode{true}, -and otherwise returns \tcode{weak_equality::nonequivalent}. +is well-formed and convertible to \tcode{bool}, then +\begin{itemize} +\item +if \tcode{a == b} is \tcode{true}, +returns \tcode{weak_equality::equivalent}; +\item +otherwise, returns \tcode{weak_equality::nonequivalent}. +\end{itemize} \item Otherwise, the function is defined as deleted. \end{itemize} From ade023e87fbb9e4ecc7a502c454b1d7a848747e7 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Fri, 17 Nov 2017 13:49:58 -0800 Subject: [PATCH 051/168] Cross-referencing and formatting fixups for <=> wording based on editorial review. --- source/algorithms.tex | 12 ++--- source/compatibility.tex | 2 +- source/expressions.tex | 3 +- source/overloading.tex | 3 +- source/special.tex | 42 ++++++++-------- source/support.tex | 101 ++++++++++++++------------------------- 6 files changed, 69 insertions(+), 94 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index 5db2338bd9..a8d76f0587 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -1043,7 +1043,7 @@ lexicographical_compare_3way(InputIterator1 b1, InputIterator1 e1, InputIterator2 b2, InputIterator2 e2, Cmp comp) - -> common_comparison_category_t; + -> common_comparison_category_t; template constexpr auto lexicographical_compare_3way(InputIterator1 b1, InputIterator1 e1, @@ -5517,11 +5517,11 @@ \indexlibrary{\idxcode{lexicographical_compare_3way}}% \begin{itemdecl} template -constexpr auto - lexicographical_compare_3way(InputIterator1 b1, InputIterator1 e1, - InputIterator2 b2, InputIterator2 e2, - Cmp comp) - -> common_comparison_category_t; + constexpr auto + lexicographical_compare_3way(InputIterator1 b1, InputIterator1 e1, + InputIterator2 b2, InputIterator2 e2, + Cmp comp) + -> common_comparison_category_t; \end{itemdecl} \begin{itemdescr} diff --git a/source/compatibility.tex b/source/compatibility.tex index bb03d18c7e..cb10076017 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -1850,7 +1850,7 @@ struct X {}; bool operator<=(X, X); template struct Y {}; - Y<&operator<=> y; // ill-formed; previously well-formed + Y y; // ill-formed; previously well-formed } \end{codeblock} diff --git a/source/expressions.tex b/source/expressions.tex index 19f122d32e..ea9f5d7dcd 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -4977,7 +4977,8 @@ \tcode{std::weak_equality}, and \tcode{std::partial_ordering}) are not predefined; -if the header \tcode{} +if the header +\indextext{\idxhdr{compare}}\tcode{} is not included prior to a use of such a class type -- even an implicit use in which the type is not named (e.g., via the \tcode{auto} specifier\iref{dcl.spec.auto} diff --git a/source/overloading.tex b/source/overloading.tex index df991fe3d5..4b17159c66 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -1752,7 +1752,8 @@ \item \tcode{F1} is an operator function for a relational\iref{expr.rel} or equality\iref{expr.eq} operator -and \tcode{F2} is not +and \tcode{F2} is an operator function +for a three-way comparison operator\iref{expr.spaceship} \begin{example} \begin{codeblock} struct S { diff --git a/source/special.tex b/source/special.tex index 4614287963..edabc8a7ef 100644 --- a/source/special.tex +++ b/source/special.tex @@ -3333,7 +3333,7 @@ \rSec1[class.compare]{Comparisons}% -\rSec2[class.def]{Defaulted comparison operator functions}% +\rSec2[class.compare.default]{Defaulted comparison operator functions}% \pnum A defaulted comparison operator function (\ref{expr.spaceship}, \ref{expr.rel}, \ref{expr.eq}) @@ -3359,10 +3359,12 @@ to the sequence of its elements, in the order of increasing subscript. Let \tcode{x}$_i$ be an lvalue denoting the $i^\textrm{th}$ element in the expanded list of subobjects for an object \tcode{x} +(of length $n$), +where \tcode{x}$_i$ is formed by a sequence of derived-to-base conversions\iref{over.best.ics}, class member access expressions\iref{expr.ref}, and -array subscript expressions\iref{expr.sub} on \tcode{x}. +array subscript expressions\iref{expr.sub} applied to \tcode{x}. The type of the expression \tcode{x}$_i$ \tcode{<=>} \tcode{x}$_i$ is denoted by \tcode{R}$_i$. It is unspecified @@ -3400,44 +3402,42 @@ \tcode{std::strong_ordering::equal} converted to \tcode{R}. \pnum -The \defn{common comparison type} \tcode{C} -of a possibly empty list of types +The \defn{common comparison type} \tcode{U} +of a possibly-empty list of $n$ types \tcode{T}$_0$, \tcode{T}$_1$, $\cdots$, \tcode{T}$_{n-1}$ is defined as follows: \begin{itemize} \item -If $n$ is 0, \tcode{C} is \tcode{std::strong_ordering}. - -\item -Otherwise, if any \tcode{T}$_i$ +If any \tcode{T}$_i$ is not a comparison category type\iref{cmp.categories}, -\tcode{C} is \tcode{void}. +\tcode{U} is \tcode{void}. \item Otherwise, if -\begin{itemize} -\item at least one \tcode{T}$_i$ is \tcode{std::weak_equality} or -\item at least one \tcode{T}$_i$ is \tcode{std::strong_equality} and - at least one \tcode{T}$_j$ is \tcode{std::partial_ordering} or - \tcode{std::weak_ordering}, -\end{itemize} -\tcode{C} is \tcode{std::weak_equality}. +at least one \tcode{T}$_i$ is \tcode{std::weak_equality}, or +at least one \tcode{T}$_i$ is \tcode{std::strong_equality} and +at least one \tcode{T}$_j$ is \tcode{std::partial_ordering} or + \tcode{std::weak_ordering}, +\tcode{U} is \tcode{std::weak_equality}\iref{cmp.weakeq}. \item Otherwise, if at least one \tcode{T}$_i$ is \tcode{std::strong_equality}, -\tcode{C} is \tcode{std::strong_equality}. +\tcode{U} is \tcode{std::strong_equality}\iref{cmp.strongeq}. \item Otherwise, if at least one \tcode{T}$_i$ is \tcode{std::partial_ordering}, -\tcode{C} is \tcode{std::partial_ordering}. +\tcode{U} is \tcode{std::partial_ordering}\iref{cmp.partialord}. \item Otherwise, if at least one \tcode{T}$_i$ is \tcode{std::weak_ordering}, -\tcode{C} is \tcode{std::weak_ordering}. +\tcode{U} is \tcode{std::weak_ordering}\iref{cmp.weakord}. \item -Otherwise, \tcode{C} is \tcode{std::strong_ordering}. +Otherwise, \tcode{U} is \tcode{std::strong_ordering}\iref{cmp.strongord}. +\begin{note} +In particular, this is the result when $n$ is 0. +\end{note} \end{itemize} \rSec2[class.rel.eq]{Other comparison operators} @@ -3458,7 +3458,7 @@ \item overload resolution\iref{over.match}, as applied to \tcode{x <=> y} -(also considering synthesized candidates with reversed order of parameters), +(also considering synthesized candidates with reversed order of parameters\iref{over.match.oper}), results in an ambiguity or a function that is deleted or inaccessible from the operator function, or diff --git a/source/support.tex b/source/support.tex index a536b510d3..da043fd8f6 100644 --- a/source/support.tex +++ b/source/support.tex @@ -3743,16 +3743,11 @@ using common_comparison_category_t = typename common_comparison_category::type; // \ref{cmp.alg}, comparison algorithms - template - constexpr strong_ordering strong_order(const T& a, const T& b); - template - constexpr weak_ordering weak_order(const T& a, const T& b); - template - constexpr partial_ordering partial_order(const T& a, const T& b); - template - constexpr strong_equality strong_equal(const T& a, const T& b); - template - constexpr weak_equality weak_equal(const T& a, const T& b); + template constexpr strong_ordering strong_order(const T& a, const T& b); + template constexpr weak_ordering weak_order(const T& a, const T& b); + template constexpr partial_ordering partial_order(const T& a, const T& b); + template constexpr strong_equality strong_equal(const T& a, const T& b); + template constexpr weak_equality weak_equal(const T& a, const T& b); } \end{codeblock} @@ -3809,7 +3804,7 @@ \pnum The \tcode{weak_equality} type is typically used -as the result type of a three-way comparison operator +as the result type of a three-way comparison operator\iref{expr.spaceship} that (a) admits only equality and inequality comparisons, and (b) does not imply substitutability. @@ -3837,10 +3832,8 @@ }; // valid values' definitions - inline constexpr - weak_equality weak_equality::equivalent (eq::equivalent); - inline constexpr - weak_equality weak_equality::nonequivalent(eq::nonequivalent); + inline constexpr weak_equality weak_equality::equivalent(eq::equivalent); + inline constexpr weak_equality weak_equality::nonequivalent(eq::nonequivalent); } \end{codeblock} @@ -3872,7 +3865,7 @@ \pnum The \tcode{strong_equality} type is typically used -as the result type of a three-way comparison operator +as the result type of a three-way comparison operator\iref{expr.spaceship} that (a) admits only equality and inequality comparisons, and (b) does imply substitutability. @@ -3907,14 +3900,10 @@ }; // valid values' definitions - inline constexpr - strong_equality strong_equality::equal (eq::equal); - inline constexpr - strong_equality strong_equality::nonequal (eq::nonequal); - inline constexpr - strong_equality strong_equality::equivalent (eq::equivalent); - inline constexpr - strong_equality strong_equality::nonequivalent(eq::nonequivalent); + inline constexpr strong_equality strong_equality::equal(eq::equal); + inline constexpr strong_equality strong_equality::nonequal(eq::nonequal); + inline constexpr strong_equality strong_equality::equivalent(eq::equivalent); + inline constexpr strong_equality strong_equality::nonequivalent(eq::nonequivalent); } \end{codeblock} @@ -3957,11 +3946,11 @@ \pnum The \tcode{partial_ordering} type is typically used -as the result type of a three-way comparison operator -that (a) admits all of the six comparison operators, +as the result type of a three-way comparison operator\iref{expr.spaceship} +that (a) admits all of the six two-way comparison operators (\ref{expr.rel}, \ref{expr.eq}), (b) does not imply substitutability, -and (c) permits two values to be incomparable -(i.e., \tcode{a < b}, \tcode{a == b}, and \tcode{a > b} might all be \tcode{false}). +and (c) permits two values to be incomparable.% +\footnote{That is, \tcode{a < b}, \tcode{a == b}, and \tcode{a > b} might all be \tcode{false}.} \indexlibrary{\idxcode{partial_ordering}}% \indexlibrarymember{less}{partial_ordering}% @@ -4008,14 +3997,10 @@ }; // valid values' definitions - inline constexpr - partial_ordering partial_ordering::less (ord::less); - inline constexpr - partial_ordering partial_ordering::equivalent(eq::equivalent); - inline constexpr - partial_ordering partial_ordering::greater (ord::greater); - inline constexpr - partial_ordering partial_ordering::unordered (ncmp::unordered); + inline constexpr partial_ordering partial_ordering::less(ord::less); + inline constexpr partial_ordering partial_ordering::equivalent(eq::equivalent); + inline constexpr partial_ordering partial_ordering::greater(ord::greater); + inline constexpr partial_ordering partial_ordering::unordered(ncmp::unordered); } \end{codeblock} @@ -4087,8 +4072,8 @@ \pnum The \tcode{weak_ordering} type is typically used -as the result type of a three-way comparison operator -that (a) admits all of the six comparison operators, +as the result type of a three-way comparison operator\iref{expr.spaceship} +that (a) admits all of the six two-way comparison operators (\ref{expr.rel}, \ref{expr.eq}), and (b) does not imply substitutability. \indexlibrary{\idxcode{weak_ordering}}% @@ -4130,12 +4115,9 @@ }; // valid values' definitions - inline constexpr - weak_ordering weak_ordering::less (ord::less); - inline constexpr - weak_ordering weak_ordering::equivalent(eq::equivalent); - inline constexpr - weak_ordering weak_ordering::greater (ord::greater); + inline constexpr weak_ordering weak_ordering::less(ord::less); + inline constexpr weak_ordering weak_ordering::equivalent(eq::equivalent); + inline constexpr weak_ordering weak_ordering::greater(ord::greater); } \end{codeblock} @@ -4211,8 +4193,8 @@ \pnum The \tcode{strong_ordering} type is typically used -as the result type of a three-way comparison operator -that (a) admits all of the six comparison operators, +as the result type of a three-way comparison operator\iref{expr.spaceship} +that (a) admits all of the six two-way comparison operators (\ref{expr.rel}, \ref{expr.eq}), and (b) does imply substitutability. \indexlibrary{\idxcode{strong_ordering}}% @@ -4258,14 +4240,10 @@ }; // valid values' definitions - inline constexpr - strong_ordering strong_ordering::less (ord::less); - inline constexpr - strong_ordering strong_ordering::equal (eq::equal); - inline constexpr - strong_ordering strong_ordering::equivalent(eq::equivalent); - inline constexpr - strong_ordering strong_ordering::greater (ord::greater); + inline constexpr strong_ordering strong_ordering::less(ord::less); + inline constexpr strong_ordering strong_ordering::equal(eq::equal); + inline constexpr strong_ordering strong_ordering::equivalent(eq::equivalent); + inline constexpr strong_ordering strong_ordering::greater(ord::greater); } \end{codeblock} @@ -4400,8 +4378,7 @@ \indexlibrary{\idxcode{strong_order}}% \begin{itemdecl} -template -constexpr strong_ordering strong_order(const T& a, const T& b); +template constexpr strong_ordering strong_order(const T& a, const T& b); \end{itemdecl} \begin{itemdescr} @@ -4443,8 +4420,7 @@ \indexlibrary{\idxcode{weak_order}}% \begin{itemdecl} -template -constexpr weak_ordering weak_order(const T& a, const T& b); +template constexpr weak_ordering weak_order(const T& a, const T& b); \end{itemdecl} \begin{itemdescr} @@ -4479,8 +4455,7 @@ \indexlibrary{\idxcode{partial_order}}% \begin{itemdecl} -template -constexpr partial_ordering partial_order(const T& a, const T& b); +template constexpr partial_ordering partial_order(const T& a, const T& b); \end{itemdecl} \begin{itemdescr} @@ -4515,8 +4490,7 @@ \indexlibrary{\idxcode{strong_equal}}% \begin{itemdecl} -template -constexpr strong_equality strong_equal(const T& a, const T& b); +template constexpr strong_equality strong_equal(const T& a, const T& b); \end{itemdecl} \begin{itemdescr} @@ -4548,8 +4522,7 @@ \indexlibrary{\idxcode{weak_equal}}% \begin{itemdecl} -template -constexpr weak_equality weak_equal(const T& a, const T& b); +template constexpr weak_equality weak_equal(const T& a, const T& b); \end{itemdecl} \begin{itemdescr} From 41eb7050b60df2e0fc6750d80a73110a3eb043a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Mon, 13 Nov 2017 19:57:55 +0000 Subject: [PATCH 052/168] P0857R0 Functionality gaps in constraints (Part 1 of 2) [expr.prim.lambda{,.closure}] Allow lambda expressions to be constrained via requires-clauses Also changes \tcode to \terminal in the grammar. --- source/expressions.tex | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/source/expressions.tex b/source/expressions.tex index ea9f5d7dcd..4fecf9c6ab 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -822,8 +822,11 @@ \begin{bnf} \nontermdef{lambda-expression}\br - lambda-introducer lambda-declarator\opt{} compound-statement\br - lambda-introducer \tcode{<} template-parameter-list \tcode{>} lambda-declarator\opt{} compound-statement + lambda-introducer compound-statement\br + lambda-introducer lambda-declarator requires-clause\opt{} compound-statement\br + lambda-introducer \terminal{<} template-parameter-list \terminal{>} requires-clause\opt{} compound-statement\br + lambda-introducer \terminal{<} template-parameter-list \terminal{>} requires-clause\opt{}\br + \hspace*{\bnfindentinc}lambda-declarator requires-clause\opt{} compound-statement \end{bnf} \begin{bnf} @@ -868,6 +871,9 @@ In the \grammarterm{decl-specifier-seq} of the \grammarterm{lambda-declarator}, each \grammarterm{decl-specifier} shall either be \tcode{mutable} or \tcode{constexpr}. +\begin{note} +The trailing \grammarterm{requires-clause} is described in \ref{dcl.decl}. +\end{note} \pnum If a \grammarterm{lambda-expression} does not include a @@ -954,6 +960,12 @@ \tcode{auto} in the \grammarterm{decl-specifier}{s} of the \grammarterm{parameter-declaration-clause} with the name of the corresponding invented \grammarterm{template-parameter}. +The \grammarterm{requires-clause} of the function call operator template +is the \grammarterm{requires-clause} immediately following +\tcode{<}~\grammarterm{template-parameter-list}{}~\tcode{>}, if any. +The trailing \grammarterm{requires-clause} of the function call operator +or operator template is the \grammarterm{requires-clause} +following the \grammarterm{lambda-declarator}, if any. \begin{example} \begin{codeblock} auto glambda = [](auto a, auto&& b) { return a < b; }; @@ -1033,9 +1045,29 @@ \end{codeblock} \end{example} +\pnum +The function call operator or operator template may be constrained\iref{temp.constr.decl} +by a \grammarterm{constrained-parameter}\iref{temp.param}, a \grammarterm{requires-clause}\iref{temp}, +or a trailing \grammarterm{requires-clause}\iref{dcl.decl}. +\begin{example} +\begin{codeblock} +template concept C1 = @\commentellip@; +template concept C2 = @\commentellip@; +template concept C3 = @\commentellip@; + +auto f = [] requires C2 + (T1 a1, T1 b1, T2 a2, auto a3, auto a4) requires C3 { + // \tcode{T2} is a constrained parameter, + // \tcode{T1} and \tcode{T2} are constrained by a \grammarterm{requires-clause}, and + // \tcode{T2} and the type of \tcode{a4} are constrained by a trailing \grammarterm{requires-clause}. +}; +\end{codeblock} +\end{example} + \pnum The closure type for a non-generic \grammarterm{lambda-expression} with no \grammarterm{lambda-capture} +whose constraints (if any) are satisfied has a conversion function to pointer to function with \Cpp language linkage\iref{dcl.link} having the same parameter and return types as the closure type's function call operator. From a044cc627d22f1fa83288ac80f4d3122f8b64426 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Mon, 13 Nov 2017 20:25:35 +0000 Subject: [PATCH 053/168] P0857R0 Functionality gaps in constraints (Part 2 of 2) [temp.param, temp.arg.template] Allow template template-parameters with requires-clauses. --- source/templates.tex | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/source/templates.tex b/source/templates.tex index 9e86c7c62a..4fc23cb95d 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -246,8 +246,8 @@ \nontermdef{type-parameter}\br type-parameter-key \terminal{...}\opt identifier\opt\br type-parameter-key identifier\opt{} \terminal{=} type-id\br - \terminal{template <} template-parameter-list \terminal{>} type-parameter-key \terminal{...}\opt identifier\opt\br - \terminal{template <} template-parameter-list \terminal{>} type-parameter-key identifier\opt{} \terminal{=} id-expression + template-head type-parameter-key \terminal{...}\opt identifier\opt\br + template-head type-parameter-key identifier\opt{} \terminal{=} id-expression \end{bnf} \begin{bnf} @@ -1421,14 +1421,14 @@ If \tcode{P} contains a parameter pack, then \tcode{A} also matches \tcode{P} if each of \tcode{A}'s template parameters matches the corresponding template parameter in the -\grammarterm{template-parameter-list} of \tcode{P}. +\grammarterm{template-head} of \tcode{P}. Two template parameters match if they are of the same kind (type, non-type, template), for non-type \grammarterm{template-parameter}{s}, their types are equivalent\iref{temp.over.link}, and for template \grammarterm{template-parameter}{s}, each of their corresponding \grammarterm{template-parameter}{s} matches, recursively. -When \tcode{P}'s \grammarterm{template-parameter-list} contains a template parameter +When \tcode{P}'s \grammarterm{template-head} contains a template parameter pack\iref{temp.variadic}, the template parameter pack will match zero or more template -parameters or template parameter packs in the \grammarterm{template-parameter-list} of +parameters or template parameter packs in the \grammarterm{template-head} of \tcode{A} with the same type and form as the template parameter pack in \tcode{P} (ignoring whether those template parameters are template parameter packs). @@ -1498,11 +1498,13 @@ according to the partial ordering rules for function templates\iref{temp.func.order}. Given an invented class template \tcode{X} -with the template parameter list of \tcode{A} (including default arguments): +with the \grammarterm{template-head} of \tcode{A} (including default arguments +and \grammarterm{requires-clause}, if any): \begin{itemize} \item -Each of the two function templates has the same template parameters, +Each of the two function templates has the same template parameters +and \grammarterm{requires-clause} (if any), respectively, as \tcode{P} or \tcode{A}. \item Each function template has a single function parameter @@ -1510,7 +1512,7 @@ with template arguments corresponding to the template parameters from the respective function template where, for each template parameter \tcode{PP} -in the template parameter list of the function template, +in the \grammarterm{template-head} of the function template, a corresponding template argument \tcode{AA} is formed. If \tcode{PP} declares a parameter pack, then \tcode{AA} is the pack expansion \tcode{PP...}\iref{temp.variadic}; From f9cfbc072526d45c9e7c4c648fb9c03a082f77b8 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Sun, 12 Nov 2017 20:37:44 -0800 Subject: [PATCH 054/168] P0692R1 Access Checking on Specializations --- source/templates.tex | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/source/templates.tex b/source/templates.tex index 4fc23cb95d..970fcef0d2 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -3173,6 +3173,17 @@ the last argument in the template argument list. \end{itemize} +\pnum +The usual access checking rules do not apply to non-dependent names +used to specify template arguments of the \grammarterm{simple-template-id} +of the partial specialization. +\begin{note} +The template arguments may be private types or +objects that would normally not be accessible. +Dependent names cannot be checked when declaring the partial specialization, +but will be checked when substituting into the partial specialization. +\end{note} + \rSec3[temp.class.spec.match]{Matching of class template partial specializations} \pnum @@ -5500,6 +5511,19 @@ \end{itemize} An implementation is not required to diagnose a violation of this rule. +\pnum +The usual access checking rules do not apply to names +in a declaration of an explicit instantiation or explicit specialization, +with the exception of names appearing in a function body, +default argument, base-clause, member-specification, enumerator-list, +or static data member or variable template initializer. +\begin{note} +In particular, the template arguments and names +used in the function declarator +(including parameter types, return types and exception specifications) +may be private types or objects that would normally not be accessible. +\end{note} + \pnum Each class template specialization instantiated from a template has its own copy of any static members. @@ -6191,19 +6215,6 @@ An explicit instantiation declaration shall not name a specialization of a template with internal linkage. - - -\pnum -The usual access checking rules do not apply to names used to specify -explicit instantiations. -\begin{note} -In particular, the template arguments and names used in the function -declarator (including parameter types, return types and exception -specifications) may be private types or objects which would normally -not be accessible and the template may be a member template or member -function which would not normally be accessible. -\end{note} - \pnum An explicit instantiation does not constitute a use of a default argument, so default argument instantiation is not done. From b35cf62edde0ff46205b1fff666053284d22cd47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Mon, 13 Nov 2017 20:34:01 +0000 Subject: [PATCH 055/168] P0624R2 Default constructible and assignable stateless lambdas --- source/expressions.tex | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/source/expressions.tex b/source/expressions.tex index 4fecf9c6ab..23332897d7 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -1204,8 +1204,13 @@ \pnum The closure type associated with a \grammarterm{lambda-expression} has no -default constructor and a deleted copy assignment operator. It has a -defaulted copy constructor and a defaulted move constructor\iref{class.copy}. +default constructor +if the \grammarterm{lambda-expression} has a \grammarterm{lambda-capture} +and a defaulted default constructor otherwise. +It has a deleted copy assignment operator if the \grammarterm{lambda-expression} +has a \grammarterm{lambda-capture} and defaulted copy and move assignment +operators otherwise. +It has a defaulted copy constructor and a defaulted move constructor\iref{class.copy}. \begin{note} These special member functions are implicitly defined as usual, and might therefore be defined as deleted. \end{note} From cca485f06798e0d8642c871abc7a2a054a319871 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Mon, 13 Nov 2017 20:35:08 +0000 Subject: [PATCH 056/168] [expr.prim.lambda.closure] Reverse description of copy constructor and assignment operator It is more usual to talk about the copy constructor before the assignment operator. --- source/expressions.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/expressions.tex b/source/expressions.tex index 23332897d7..7e0bf42a01 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -1207,10 +1207,10 @@ default constructor if the \grammarterm{lambda-expression} has a \grammarterm{lambda-capture} and a defaulted default constructor otherwise. +It has a defaulted copy constructor and a defaulted move constructor\iref{class.copy}. It has a deleted copy assignment operator if the \grammarterm{lambda-expression} has a \grammarterm{lambda-capture} and defaulted copy and move assignment operators otherwise. -It has a defaulted copy constructor and a defaulted move constructor\iref{class.copy}. \begin{note} These special member functions are implicitly defined as usual, and might therefore be defined as deleted. \end{note} From cf38719d4480700b2b1595a09677e444cc0ba2a4 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Sun, 12 Nov 2017 20:55:00 -0800 Subject: [PATCH 057/168] P0767R1 Deprecate POD --- source/basic.tex | 10 +++------- source/classes.tex | 10 ---------- source/expressions.tex | 7 ++----- source/future.tex | 34 ++++++++++++++++++++++++++++++++++ source/lib-intro.tex | 1 - source/strings.tex | 2 +- source/support.tex | 2 +- source/utilities.tex | 14 ++------------ 8 files changed, 43 insertions(+), 37 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index dc96ea7b8d..c3a8b43a24 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -2860,8 +2860,8 @@ \pnum Before the lifetime of an object has started but after the storage which the object will occupy has been allocated\footnote{For example, before the -construction of a global object of -non-POD class type\iref{class.cdtor}.} +construction of a global object +that is initialized via a user-provided constructor\iref{class.cdtor}.} or, after the lifetime of an object has ended and before the storage which the object occupied is reused or released, any pointer that represents the address of the storage location where the object will be or was located may be @@ -3702,11 +3702,7 @@ and cv-qualified\iref{basic.type.qualifier} versions of these types are collectively called -\defnx{scalar types}{scalar type}. Scalar types, -POD classes\iref{class}, arrays of such types and -cv-qualified versions of these -types are collectively called -\defnx{POD types}{type!POD}. +\defnx{scalar types}{scalar type}. Cv-unqualified scalar types, trivially copyable class types\iref{class}, arrays of such types, and cv-qualified versions of these types are collectively called \defn{trivially diff --git a/source/classes.tex b/source/classes.tex index a52e64992d..065ec97003 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -226,16 +226,6 @@ in~\ref{class.mem}.\end{note} \pnum -\indextext{POD struct}\indextext{POD class}\indextext{POD union}% -A \term{POD struct}\footnote{The acronym POD stands for ``plain old data''.} -is a non-union class that is both a trivial class and a -standard-layout class, and has no non-static data members of type non-POD struct, -non-POD union (or array of such types). Similarly, a -\term{POD union} is a union that is both a trivial class and a standard-layout -class, and has no non-static data members of type non-POD struct, non-POD -union (or array of such types). A \term{POD class} is a -class that is either a POD struct or a POD union. - \begin{example} \begin{codeblock} struct N { // neither trivial nor standard-layout diff --git a/source/expressions.tex b/source/expressions.tex index 7e0bf42a01..3dd2d9fd4d 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -927,12 +927,9 @@ \begin{itemize} \item the size and/or alignment of the closure type, -\item whether the closure type is trivially copyable\iref{class}, +\item whether the closure type is trivially copyable\iref{class}, or -\item whether the closure type is a standard-layout class\iref{class}, -or - -\item whether the closure type is a POD class\iref{class}. +\item whether the closure type is a standard-layout class\iref{class}. \end{itemize} An implementation shall not add members of rvalue reference type to the closure diff --git a/source/future.tex b/source/future.tex index f3fee4c6f7..f9801e4f00 100644 --- a/source/future.tex +++ b/source/future.tex @@ -2787,3 +2787,37 @@ \pnum \effects The destructor shall delete \tcode{cvtptr}. \end{itemdescr} + +\rSec1[depr.ispod]{Identification of POD types} +\indextext{\idxhdr{}}% +\indexlibrary{\idxcode{is_pod}}% + +\pnum +The following type property +is defined in header \tcode{} +in addition to those defined in \ref{meta.unary.prop}: + +\begin{itemdecl} +template struct is_pod; +template inline constexpr bool is_pod_v = is_pod::value; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires +\tcode{remove_all_extents_t} shall be a complete type or \cv{} \tcode{void}. + +\pnum +\tcode{is_pod} is a \tcode{UnaryTypeTrait}\iref{meta.rqmts} +with a base characteristic of \tcode{true_type} +if \tcode{T} is a POD type, +and \tcode{false_type} otherwise. +\indextext{POD}% +A POD class is a class that is both a trivial class and a standard-layout class, +and has no non-static data members of type non-POD class (or array thereof). +A POD type is a scalar type, a POD class, an array of such a type, +or a cv-qualified version of one of these types. +\begin{note} +It is unspecified whether a closure type\iref{expr.prim.lambda.closure} is a POD type. +\end{note} +\end{itemdescr} diff --git a/source/lib-intro.tex b/source/lib-intro.tex index 702b0432fc..998c4b1923 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -168,7 +168,6 @@ \begin{defnote} It is used for one of the template parameters of the string, iostream, and regular expression class templates. -A character container type is a POD\iref{basic.types} type. \end{defnote} \definition{comparison function}{defns.comparison} diff --git a/source/strings.tex b/source/strings.tex index ee0847edeb..5c8bb49d73 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -5,7 +5,7 @@ \pnum This Clause describes components for manipulating sequences of -any non-array POD\iref{basic.types} type. +any non-array trivial\iref{basic.types} type. Such types are called \defnx{char-like types}{char-like type}, and objects of char-like types are called \defnx{char-like objects}{char-like object} or diff --git a/source/support.tex b/source/support.tex index da043fd8f6..6e30c3f868 100644 --- a/source/support.tex +++ b/source/support.tex @@ -332,7 +332,7 @@ \pnum The type \indexlibrary{\idxcode{max_align_t}}% -\tcode{max_align_t} is a POD type whose alignment requirement +\tcode{max_align_t} is a trivial type whose alignment requirement is at least as great as that of every scalar type, and whose alignment requirement is supported in every context\iref{basic.align}. diff --git a/source/utilities.tex b/source/utilities.tex index 98e4bc5a90..6dece9a41b 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -14975,7 +14975,6 @@ template struct is_trivial; template struct is_trivially_copyable; template struct is_standard_layout; - template struct is_pod; template struct is_empty; template struct is_polymorphic; template struct is_abstract; @@ -15202,8 +15201,6 @@ inline constexpr bool is_trivially_copyable_v = is_trivially_copyable::value; template inline constexpr bool is_standard_layout_v = is_standard_layout::value; - template - inline constexpr bool is_pod_v = is_pod::value; template inline constexpr bool is_empty_v = is_empty::value; template @@ -15574,13 +15571,6 @@ \tcode{remove_all_extents_t} shall be a complete type or \cv{}~\tcode{void}. \\ \rowsep -\indexlibrary{\idxcode{is_pod}}% -\tcode{template }\br - \tcode{struct is_pod;} & - \tcode{T} is a POD type\iref{basic.types} & - \tcode{remove_all_extents_t} shall be a complete - type or \cv{}~\tcode{void}. \\ \rowsep - \indexlibrary{\idxcode{is_empty}!class}% \tcode{template }\br \tcode{struct is_empty;} & @@ -16461,7 +16451,7 @@ The value of \textit{default-alignment} shall be the most stringent alignment requirement for any \Cpp object type whose size is no greater than \tcode{Len}\iref{basic.types}. - The member typedef \tcode{type} shall be a POD type + The member typedef \tcode{type} shall be a trivial type suitable for use as uninitialized storage for any object whose size is at most \tcode{Len} and whose alignment is a divisor of \tcode{Align}.\br \requires{} \tcode{Len} shall not be zero. \tcode{Align} shall be equal to @@ -16472,7 +16462,7 @@ class... Types>\br struct aligned_union;} & - The member typedef \tcode{type} shall be a POD type suitable for use as + The member typedef \tcode{type} shall be a trivial type suitable for use as uninitialized storage for any object whose type is listed in \tcode{Types}; its size shall be at least \tcode{Len}. The static member \tcode{alignment_value} shall be an integral constant of type \tcode{size_t} whose value is the From f942c43a64fe75532a670983aab394ea99390923 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Mon, 13 Nov 2017 20:49:10 +0000 Subject: [PATCH 058/168] P0315R4 Lambdas in unevaluated contexts --- source/basic.tex | 10 ++++++- source/declarations.tex | 7 ++++- source/expressions.tex | 10 +------ source/templates.tex | 66 +++++++++++++++++++++++++++++++++++++++-- 4 files changed, 79 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index c3a8b43a24..ce76f9ffa0 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -590,7 +590,15 @@ template definition\iref{temp.nondep}, and also to dependent names at the point of instantiation\iref{temp.dep}. If the definitions of \tcode{D} satisfy all these requirements, then the behavior is -as if there were a single definition of \tcode{D}. If the definitions of +as if there were a single definition of \tcode{D}. +\begin{note} +The entity is still declared in multiple translation units, and \ref{basic.link} +still applies to these declarations. In particular, +\grammarterm{lambda-expression}{s}\iref{expr.prim.lambda} +appearing in the type of \tcode{D} may result +in the different declarations having distinct types. +\end{note} +If the definitions of \tcode{D} do not satisfy these requirements, then the behavior is undefined.% \indextext{one-definition rule|)} diff --git a/source/declarations.tex b/source/declarations.tex index aa411d313e..6585daa7d9 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -694,10 +694,15 @@ \grammarterm{typedef-name} declared by the declaration to be that class type (or enum type) is used to denote the class type (or enum type) for linkage purposes only\iref{basic.link}. +\begin{note} +A typedef declaration involving a \grammarterm{lambda-expression} +does not itself define the associated closure type, +and so the closure type is not given a name for linkage purposes. +\end{note} \begin{example} - \begin{codeblock} typedef struct { } *ps, S; // \tcode{S} is the class name for linkage purposes +typedef decltype([]{}) C; // the closure type has no name for linkage purposes \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex index 3dd2d9fd4d..f2f0b12711 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -854,15 +854,7 @@ \pnum A \grammarterm{lambda-expression} is a prvalue -whose result object is called the \defn{closure object}. A -\grammarterm{lambda-expression} shall not appear in an unevaluated operand\iref{expr.prop}, -in a \grammarterm{template-argument}, -in an \grammarterm{alias-declaration}, -in a typedef declaration, or in the declaration of a function or function -template outside its function body and default arguments. -\begin{note} -The intention is to prevent lambdas from appearing in a signature. -\end{note} +whose result object is called the \defn{closure object}. \begin{note} A closure object behaves like a function object\iref{function.objects}.\end{note} diff --git a/source/templates.tex b/source/templates.tex index 970fcef0d2..5c2bcbc525 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -3550,14 +3550,18 @@ the one-definition rule\iref{basic.def.odr}, except that the tokens used 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. For -determining whether two dependent names\iref{temp.dep} are +that names the same template parameter in the other expression. +Two \grammarterm{lambda-expression}{s} are never considered equivalent. +\begin{note} +The intent is to avoid \grammarterm{lambda-expression}{s} appearing in the +signature of a function template with external linkage. +\end{note} +For determining whether two dependent names\iref{temp.dep} are equivalent, only the name itself is considered, not the result of name lookup in the context of the template. If multiple declarations of the same function template differ in the result of this name lookup, the result for the first declaration is used. \begin{example} - \begin{codeblock} template void f(A); // \#1 template void f(A); // same as \#1 @@ -3568,6 +3572,14 @@ { return g(T()); } // \ldots{} although the lookup here does find \tcode{g(int)} int i = h(); // template argument substitution fails; \tcode{g(int)} // was not in scope at the first declaration of \tcode{h()} + +// ill-formed, no diagnostic required: the two expressions are functionally equivalent but not equivalent +template void foo(const char (*s)[([]{}, N)]); +template void foo(const char (*s)[([]{}, N)]); + +// two different declarations because the non-dependent portions are not considered equivalent +template void spam(decltype([]{}) (*s)[sizeof(T)]); +template void spam(decltype([]{}) (*s)[sizeof(T)]); \end{codeblock} \end{example} \indextext{expression!functionally equivalent|see{functionally equivalent, expressions}}% @@ -3901,6 +3913,17 @@ \end{codeblock} \end{example} +\pnum +The type of a lambda expression appearing in an alias template declaration +is different between instantiations of that template, even when the lambda +expression is not dependent. +\begin{example} +\begin{codeblock} +template + using A = decltype([] { }); // \tcode{A} and \tcode{A} refer to different closure types +\end{codeblock} +\end{example} + \rSec2[temp.concept]{Concept definitions} \pnum @@ -7126,6 +7149,43 @@ program being ill-formed. \end{note} +\pnum +A \grammarterm{lambda-expression} appearing in a function type +or a template parameter is not considered part of the immediate context +for the purposes of template argument deduction. +\begin{note} +The intent is to avoid requiring implementations to deal with +substitution failure involving arbitrary statements. +\begin{example} +\begin{codeblock} +template + auto f(T) -> decltype([]() { T::invalid; } ()); +void f(...); +f(0); // error: invalid expression not part of the immediate context + +template + void g(T); +void g(...); +g(0); // error: invalid expression not part of the immediate context + +template + auto h(T) -> decltype([x = T::invalid]() { }); +void h(...); +h(0); // error: invalid expression not part of the immediate context + +template + auto i(T) -> decltype([]() -> typename T::invalid { }); +void i(...); +i(0); // error: invalid expression not part of the immediate context + +template + auto j(T t) -> decltype([](auto x) -> decltype(x.invalid) { } (t)); // \#1 +void j(...); // \#2 +j(0); // deduction fails on \#1, calls \#2 +\end{codeblock} +\end{example} +\end{note} + \pnum \begin{example} \begin{codeblock} From 1f580c7d321b271e3849467815600f26d9dd4da4 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Mon, 13 Nov 2017 15:21:58 -0800 Subject: [PATCH 059/168] LWG2870 Default value of parameter theta of polar should be dependent --- source/numerics.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/numerics.tex b/source/numerics.tex index eed2b42471..0b57a1e38f 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -346,7 +346,7 @@ template complex conj(const complex&); template complex proj(const complex&); - template complex polar(const T&, const T& = 0); + template complex polar(const T&, const T& = T()); // \ref{complex.transcendentals}, transcendentals template complex acos(const complex&); @@ -1000,7 +1000,7 @@ \indexlibrary{\idxcode{polar}!\idxcode{complex}}% \begin{itemdecl} -template complex polar(const T& rho, const T& theta = 0); +template complex polar(const T& rho, const T& theta = T()); \end{itemdecl} \begin{itemdescr} From 6d9abd7e53515a5e5ebd5de290fe175f3cbe5082 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 02:31:40 -0800 Subject: [PATCH 060/168] LWG2935 What should create_directories do when p already exists but is not a directory? --- source/iostreams.tex | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex index 6395917e03..46421ea754 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -14073,22 +14073,22 @@ \begin{itemdescr} \pnum -\effects Establishes the postcondition by calling \tcode{create_directory()} for any element of \tcode{p} that does not - exist. +\effects Calls \tcode{create_directory()} for each element of \tcode{p} + that does not exist. \pnum -\postconditions \tcode{is_directory(p)}. - -\pnum -\returns \tcode{true} if a new directory was created, otherwise \tcode{false}. The signature with argument \tcode{ec} returns \tcode{false} if an - error occurs. +\returns \tcode{true} if a new directory was created + for the directory \tcode{p} resolves to, + otherwise \tcode{false}. + The signature with argument \tcode{ec} + returns \tcode{false} if an error occurs. \pnum \throws As specified in~\ref{fs.err.report}. \pnum \complexity \bigoh{n} where \textit{n} is the number of elements - of \tcode{p} that do not exist. + of \tcode{p}. \end{itemdescr} @@ -14102,14 +14102,10 @@ \begin{itemdescr} \pnum -\effects Establishes the postcondition by attempting to create the - directory \tcode{p} resolves to, as if by POSIX \tcode{mkdir()} with a second argument of - \tcode{static_cast(perms::all)}. Creation - failure because \tcode{p} resolves to an existing directory shall not be - treated as an error. - -\pnum -\postconditions \tcode{is_directory(p)}. +\effects Creates the directory \tcode{p} resolves to, + as if by POSIX \tcode{mkdir()} with a second argument of + \tcode{static_cast(perms::all)}. + Creation failure because \tcode{p} already exists is not an error. \pnum \returns \tcode{true} if a new directory was created, otherwise \tcode{false}. From 9a8874aebc2679ab877d6aeec9a583c83b11ade6 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 02:32:13 -0800 Subject: [PATCH 061/168] LWG2941 [thread.req.timing] wording should apply to both member and namespace-level functions --- source/threads.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/threads.tex b/source/threads.tex index f6bec576a5..1b40a97c95 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -82,7 +82,7 @@ $D_m$. The delay durations may vary from timeout to timeout, but in all cases shorter is better. \pnum -The member functions whose names end in \tcode{_for} take an argument that +The functions whose names end in \tcode{_for} take an argument that specifies a duration. These functions produce relative timeouts. Implementations should use a steady clock to measure time for these functions.\footnote{All implementations for which standard time units are meaningful must necessarily @@ -90,7 +90,7 @@ argument $D_t$, the real-time duration of the timeout is $D_t + D_i + D_m$. \pnum -The member functions whose names end in \tcode{_until} take an argument that specifies a time +The functions whose names end in \tcode{_until} take an argument that specifies a time point. These functions produce absolute timeouts. Implementations should use the clock specified in the time point to measure time for these functions. Given a clock time point argument $C_t$, the clock time point of the return from timeout should be $C_t + D_i + D_m$ From b8740ce824601190f75d45a2bb6afb7aae125773 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 02:32:47 -0800 Subject: [PATCH 062/168] LWG2944 LWG 2905 accidentally removed requirement that construction of the deleter doesn't throw an exception --- source/utilities.tex | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/utilities.tex b/source/utilities.tex index 6dece9a41b..347f6f97fe 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -8187,6 +8187,14 @@ unique_ptr(pointer p, const A&& d) = delete; \end{codeblock} +\pnum +\requires For the first constructor, if \tcode{D} is not a reference type, +\tcode{D} shall satisfy the requirements of \tcode{CopyConstructible} and +such construction shall not exit via an exception. +For the second constructor, if \tcode{D} is not a reference type, +\tcode{D} shall satisfy the requirements of \tcode{MoveConstructible} and +such construction shall not exit via an exception. + \pnum \effects Constructs a \tcode{unique_ptr} object which owns \tcode{p}, initializing the stored pointer with \tcode{p} and initializing the deleter From 034e2d60f762ce971fff22a3cbc794d0ff687c50 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 02:33:15 -0800 Subject: [PATCH 063/168] LWG2945 Order of template parameters in optional comparisons --- source/utilities.tex | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/source/utilities.tex b/source/utilities.tex index 347f6f97fe..1e4a74269a 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -2154,17 +2154,17 @@ // \ref{optional.comp_with_t}, comparison with \tcode{T} template constexpr bool operator==(const optional&, const U&); - template constexpr bool operator==(const U&, const optional&); + template constexpr bool operator==(const T&, const optional&); template constexpr bool operator!=(const optional&, const U&); - template constexpr bool operator!=(const U&, const optional&); + template constexpr bool operator!=(const T&, const optional&); template constexpr bool operator<(const optional&, const U&); - template constexpr bool operator<(const U&, const optional&); + template constexpr bool operator<(const T&, const optional&); template constexpr bool operator<=(const optional&, const U&); - template constexpr bool operator<=(const U&, const optional&); + template constexpr bool operator<=(const T&, const optional&); template constexpr bool operator>(const optional&, const U&); - template constexpr bool operator>(const U&, const optional&); + template constexpr bool operator>(const T&, const optional&); template constexpr bool operator>=(const optional&, const U&); - template constexpr bool operator>=(const U&, const optional&); + template constexpr bool operator>=(const T&, const optional&); // \ref{optional.specalg}, specialized algorithms template @@ -3418,7 +3418,7 @@ \indexlibrarymember{operator==}{optional}% \begin{itemdecl} -template constexpr bool operator==(const U& v, const optional& x); +template constexpr bool operator==(const T& v, const optional& x); \end{itemdecl} \begin{itemdescr} @@ -3450,7 +3450,7 @@ \indexlibrarymember{operator"!=}{optional}% \begin{itemdecl} -template constexpr bool operator!=(const U& v, const optional& x); +template constexpr bool operator!=(const T& v, const optional& x); \end{itemdecl} \begin{itemdescr} @@ -3482,7 +3482,7 @@ \indexlibrarymember{operator<}{optional}% \begin{itemdecl} -template constexpr bool operator<(const U& v, const optional& x); +template constexpr bool operator<(const T& v, const optional& x); \end{itemdecl} \begin{itemdescr} @@ -3514,7 +3514,7 @@ \indexlibrarymember{operator<=}{optional}% \begin{itemdecl} -template constexpr bool operator<=(const U& v, const optional& x); +template constexpr bool operator<=(const T& v, const optional& x); \end{itemdecl} \begin{itemdescr} @@ -3546,7 +3546,7 @@ \indexlibrarymember{operator>}{optional}% \begin{itemdecl} -template constexpr bool operator>(const U& v, const optional& x); +template constexpr bool operator>(const T& v, const optional& x); \end{itemdecl} \begin{itemdescr} @@ -3578,7 +3578,7 @@ \indexlibrarymember{operator>=}{optional}% \begin{itemdecl} -template constexpr bool operator>=(const U& v, const optional& x); +template constexpr bool operator>=(const T& v, const optional& x); \end{itemdecl} \begin{itemdescr} From 159b35eb72c5ff8cbd6561a5fee437acef771a81 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 02:33:43 -0800 Subject: [PATCH 064/168] LWG2948 unique_ptr does not define operator<< for stream output [unique.ptr] Change no longer applies. [unique.ptr.io] Fixed formatting of effects clause. --- source/utilities.tex | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/source/utilities.tex b/source/utilities.tex index 1e4a74269a..971994e96f 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -6631,6 +6631,9 @@ template bool operator>=(nullptr_t, const unique_ptr& y); + template + basic_ostream& operator<<(basic_ostream& os, const unique_ptr& p); + // \ref{util.smartptr.weak.bad}, class \tcode{bad_weak_ptr} class bad_weak_ptr; @@ -8971,6 +8974,26 @@ The second function template returns \tcode{!(nullptr < x)}. \end{itemdescr} +\rSec3[unique.ptr.io]{\tcode{unique_ptr} I/O} + +\indexlibrarymember{operator<<}{unique_ptr}% +\begin{itemdecl} +template + basic_ostream& operator<<(basic_ostream& os, const unique_ptr& p); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects Equivalent to: \tcode{os << p.get();} + +\pnum +\returns \tcode{os}. + +\pnum +\remarks This function shall not participate in overload resolution +unless \tcode{os << p.get()} is a valid expression. +\end{itemdescr} + \indextext{smart pointers|(}% \rSec2[util.smartptr]{Shared-ownership pointers} From 61babcd968b063214efbdc823cf304ad15f8f412 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 03:11:45 -0800 Subject: [PATCH 065/168] LWG2950 std::byte operations are misspecified --- source/support.tex | 46 +++++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/source/support.tex b/source/support.tex index 6e30c3f868..7e125d9813 100644 --- a/source/support.tex +++ b/source/support.tex @@ -351,7 +351,7 @@ \tcode{is_integral_v} is \tcode{true}. \pnum \effects Equivalent to: -\tcode{return b = byte(static_cast(b) << shift);} +\tcode{return b = b << shift;} \end{itemdescr} \indexlibrarymember{operator<<}{byte}% @@ -365,7 +365,10 @@ \tcode{is_integral_v} is \tcode{true}. \pnum \effects Equivalent to: -\tcode{return byte(static_cast(b) << shift);} +\begin{codeblock} +return static_cast(static_cast( + static_cast(b) << shift)); +\end{codeblock} \end{itemdescr} \indexlibrarymember{operator>>=}{byte}% @@ -379,7 +382,7 @@ \tcode{is_integral_v} is \tcode{true}. \pnum \effects Equivalent to: -\tcode{return b = byte(static_cast(b) >> shift);} +\tcode{return b >> shift;} \end{itemdescr} \indexlibrarymember{operator>>}{byte}% @@ -393,7 +396,10 @@ \tcode{is_integral_v} is \tcode{true}. \pnum \effects Equivalent to: -\tcode{return byte(static_cast(b) >> shift);} +\begin{codeblock} +return static_cast(static_cast( + static_cast(b) >> shift)); +\end{codeblock} \end{itemdescr} \indexlibrarymember{operator"|=}{byte}% @@ -402,10 +408,7 @@ \end{itemdecl} \begin{itemdescr} -\pnum \effects Equivalent to: -\begin{codeblock} -return l = byte(static_cast(l) | static_cast(r)); -\end{codeblock} +\pnum \effects Equivalent to: \tcode{return l = l | r;} \end{itemdescr} \indexlibrarymember{operator"|}{byte}% @@ -416,7 +419,8 @@ \begin{itemdescr} \pnum \effects Equivalent to: \begin{codeblock} -return byte(static_cast(l) | static_cast(r)); +return static_cast(static_cast(static_cast(l) | + static_cast(r))); \end{codeblock} \end{itemdescr} @@ -426,10 +430,7 @@ \end{itemdecl} \begin{itemdescr} -\pnum \effects Equivalent to: -\begin{codeblock} -return l = byte(static_cast(l) & static_cast(r)); -\end{codeblock} +\pnum \effects Equivalent to: \tcode{return l = l \& r;} \end{itemdescr} \indexlibrarymember{operator\&}{byte}% @@ -440,7 +441,8 @@ \begin{itemdescr} \pnum \effects Equivalent to: \begin{codeblock} -return byte(static_cast(l) & static_cast(r)); +return static_cast(static_cast(static_cast(l) & + static_cast(r))); \end{codeblock} \end{itemdescr} @@ -450,10 +452,7 @@ \end{itemdecl} \begin{itemdescr} -\pnum \effects Equivalent to: -\begin{codeblock} -return l = byte(static_cast(l) ^ static_cast(r)); -\end{codeblock} +\pnum \effects Equivalent to: \tcode{return l = l \^ r;} \end{itemdescr} \indexlibrarymember{operator\caret}{byte}% @@ -464,7 +463,8 @@ \begin{itemdescr} \pnum \effects Equivalent to: \begin{codeblock} -return byte(static_cast(l) ^ static_cast(r)); +return static_cast(static_cast(static_cast(l) ^ + static_cast(r))); \end{codeblock} \end{itemdescr} @@ -474,7 +474,11 @@ \end{itemdecl} \begin{itemdescr} -\pnum \effects Equivalent to: \tcode{return byte(\~static_cast(b));} +\pnum \effects Equivalent to: +\begin{codeblock} +return static_cast(static_cast( + ~static_cast(b))); +\end{codeblock} \end{itemdescr} \indexlibrarymember{to_integer}{byte}% @@ -487,7 +491,7 @@ \pnum \remarks This function shall not participate in overload resolution unless \tcode{is_integral_v} is \tcode{true}. -\pnum \effects Equivalent to: \tcode{return IntType(b);} +\pnum \effects Equivalent to: \tcode{return static_cast(b);} \end{itemdescr} \rSec1[support.limits]{Implementation properties} From c1891f104cd9428037b54246a515abae3526cfe5 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Fri, 17 Nov 2017 18:30:35 -0800 Subject: [PATCH 066/168] LWG2952 iterator_traits should work for pointers to cv T --- source/iterators.tex | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/source/iterators.tex b/source/iterators.tex index 1f5f321da2..214d7f7503 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -693,7 +693,6 @@ // \ref{iterator.primitives}, primitives template struct iterator_traits; template struct iterator_traits; - template struct iterator_traits; struct input_iterator_tag { }; struct output_iterator_tag { }; @@ -929,7 +928,7 @@ namespace std { template struct iterator_traits { using difference_type = ptrdiff_t; - using value_type = T; + using value_type = remove_cv_t; using pointer = T*; using reference = T&; using iterator_category = random_access_iterator_tag; @@ -937,20 +936,6 @@ } \end{codeblock} -and for pointers to const as - -\begin{codeblock} -namespace std { - template struct iterator_traits { - using difference_type = ptrdiff_t; - using value_type = T; - using pointer = const T*; - using reference = const T&; - using iterator_category = random_access_iterator_tag; - }; -} -\end{codeblock} - \pnum \begin{example} To implement a generic From c62178f18a1e9481bfc227bd80a77db47600e117 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Fri, 17 Nov 2017 18:30:54 -0800 Subject: [PATCH 067/168] LWG2953 LWG 2853 should apply to deque::erase too --- source/containers.tex | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/containers.tex b/source/containers.tex index 3d5e277b32..204740dfb2 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -3724,8 +3724,7 @@ \pnum \throws -Nothing unless an exception is thrown by the copy constructor, move constructor, -assignment operator, or move assignment operator of +Nothing unless an exception is thrown by the assignment operator of \tcode{T}. \end{itemdescr} From 7aefcb92ec6987557cae57756c86df1b9c4c1270 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 06:58:47 -0800 Subject: [PATCH 068/168] LWG2964 Apparently redundant requirement for dynamic_pointer_cast --- source/utilities.tex | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/utilities.tex b/source/utilities.tex index 971994e96f..2bede47616 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -10048,7 +10048,9 @@ \begin{itemdescr} \pnum \requires The expression \tcode{dynamic_cast((U*)nullptr)} -shall be well-formed and shall have well-defined behavior. +shall be well-formed. +The expression \tcode{dynamic_cast::element_type*>(r.get())} +shall be well formed and shall have well-defined behavior. \pnum \returns From 436e7cb2f01eb897aaa315e5712ba1c9556d8014 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 07:24:28 -0800 Subject: [PATCH 069/168] LWG2965 Non-existing path::native_string() in filesystem_error::what() specification --- source/iostreams.tex | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex index 46421ea754..6bec4b3567 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -12334,9 +12334,10 @@ \begin{itemdescr} \pnum \returns A string containing \tcode{runtime_error::what()}. The exact format is unspecified. - Implementations should include \tcode{path1.native_string()} - if not empty, \tcode{path2.native_string()} if not empty, and \tcode{system_error::what()} strings in the returned - string. + Implementations should include + the \tcode{system_error::what()} string and + the pathnames of \tcode{path1} and \tcode{path2} + in the native format in the returned string. \end{itemdescr} \rSec2[fs.enum]{Enumerations} From 8aa837b8dbe30e39b1e143868ba2507ffa79e89f Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 07:30:30 -0800 Subject: [PATCH 070/168] LWG2972 What is is_trivially_destructible_v? --- source/utilities.tex | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/utilities.tex b/source/utilities.tex index 2bede47616..313666579b 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -15832,8 +15832,9 @@ \indexlibrary{\idxcode{is_trivially_destructible}}% \tcode{template }\br \tcode{struct is_trivially_destructible;} & - \tcode{is_destructible_v} is \tcode{true} and the indicated destructor is known - to be trivial. & + \tcode{is_destructible_v} is \tcode{true} and + \tcode{remove_all_extents_t} is either a non-class type or + a class type with a trivial destructor. & \tcode{T} shall be a complete type, \cv{}~\tcode{void}, or an array of unknown bound. \\ \rowsep From 24abe1f6fc58cca76c533ba55ca5e711dc38df66 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 07:42:42 -0800 Subject: [PATCH 071/168] LWG2976 Dangling uses_allocator specialization for packaged_task [futures.task.members] Ignoring incorrect change to capitalization. --- source/threads.tex | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/source/threads.tex b/source/threads.tex index 1b40a97c95..371f746a48 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -3664,9 +3664,6 @@ template void swap(packaged_task&, packaged_task&) noexcept; - template - struct uses_allocator, Alloc>; - template future, decay_t...>> async(F&& f, Args&&... args); @@ -5001,9 +4998,6 @@ template void swap(packaged_task& x, packaged_task& y) noexcept; - - template - struct uses_allocator, Alloc>; } \end{codeblock} @@ -5043,14 +5037,9 @@ \pnum \throws -\begin{itemize} -\item Any exceptions thrown by the copy or move constructor of \tcode{f}. -\item For the first version, - \tcode{bad_alloc} if memory for the internal data structures could not be allocated. -\item For the second version, - any exceptions thrown by \tcode{allocator_traits::template} - \tcode{rebind_traits<\unspec>::allocate}. -\end{itemize} +Any exceptions thrown by the copy or move constructor of \tcode{f}, or +\tcode{bad_alloc} if memory for the internal data structures +could not be allocated. \end{itemdescr} \indexlibrary{\idxcode{packaged_task}!constructor}% @@ -5237,15 +5226,3 @@ \pnum \effects As if by \tcode{x.swap(y)}. \end{itemdescr} - -\indexlibrary{\idxcode{uses_allocator}!\idxcode{packaged_task}}% -\begin{itemdecl} -template - struct uses_allocator, Alloc> - : true_type { }; -\end{itemdecl} - -\begin{itemdescr} -\pnum -\requires \tcode{Alloc} shall be an Allocator\iref{allocator.requirements}. -\end{itemdescr} From e6e37c0148fc8ac98b08505d254e28f30cf50221 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 07:45:40 -0800 Subject: [PATCH 072/168] LWG2977 unordered_meow::merge() has incorrect Throws: clause --- source/containers.tex | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/containers.tex b/source/containers.tex index 204740dfb2..0067b62d1c 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -2603,8 +2603,7 @@ refer to those same elements but as members of \tcode{a}. Iterators referring to the transferred elements and all iterators referring to \tcode{a} will be invalidated, but iterators to elements remaining in \tcode{a2} will - remain valid.\br - \throws{} Nothing unless the hash function or key equality predicate throws. & + remain valid. & Average case \bigoh{N}, where $N$ is \tcode{a2.size()}. Worst case \bigoh{N\tcode{*a.size()}\br\tcode{+} N}. \\ \rowsep % From b977d3aa3ba01b3aeed03ddff2cf998a32c314e5 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 07:51:35 -0800 Subject: [PATCH 073/168] LWG2978 Hash support for pmr::string and friends --- source/strings.tex | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/source/strings.tex b/source/strings.tex index 5c8bb49d73..c69a75a1b6 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -791,13 +791,6 @@ wstring to_wstring(double val); wstring to_wstring(long double val); - // \ref{basic.string.hash}, hash support - template struct hash; - template<> struct hash; - template<> struct hash; - template<> struct hash; - template<> struct hash; - namespace pmr { template > using basic_string = std::basic_string>; @@ -808,6 +801,17 @@ using wstring = basic_string; } + // \ref{basic.string.hash}, hash support + template struct hash; + template<> struct hash; + template<> struct hash; + template<> struct hash; + template<> struct hash; + template<> struct hash; + template<> struct hash; + template<> struct hash; + template<> struct hash; + inline namespace literals { inline namespace string_literals { // \ref{basic.string.literals}, suffix for \tcode{basic_string} literals @@ -4478,11 +4482,19 @@ \indexlibrary{\idxcode{hash}!\idxcode{u16string}}% \indexlibrary{\idxcode{hash}!\idxcode{u32string}}% \indexlibrary{\idxcode{hash}!\idxcode{wstring}}% +\indexlibrary{\idxcode{hash}!\idxcode{pmr::string}}% +\indexlibrary{\idxcode{hash}!\idxcode{pmr::u16string}}% +\indexlibrary{\idxcode{hash}!\idxcode{pmr::u32string}}% +\indexlibrary{\idxcode{hash}!\idxcode{pmr::wstring}}% \begin{itemdecl} template<> struct hash; template<> struct hash; template<> struct hash; template<> struct hash; +template<> struct hash; +template<> struct hash; +template<> struct hash; +template<> struct hash; \end{itemdecl} \begin{itemdescr} From 400b1c4ab041d8ae8885fea9579fd345506a9faa Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 07:56:34 -0800 Subject: [PATCH 074/168] LWG2979 aligned_union should require complete object types --- source/utilities.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/source/utilities.tex b/source/utilities.tex index 313666579b..1b5f092759 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -16502,6 +16502,7 @@ shall be an integral constant of type \tcode{size_t} whose value is the strictest alignment of all types listed in \tcode{Types}.\br \requires{} At least one type is provided. + Each type in the parameter pack \tcode{Types} shall be a complete object type. \\ \rowsep \indexlibrary{\idxcode{decay}}% From 9e6615543ccd320e3e9709904d68b9301face7ce Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 11:51:31 -0800 Subject: [PATCH 075/168] LWG2980 Cannot compare_exchange empty pointers --- source/utilities.tex | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/utilities.tex b/source/utilities.tex index 1b5f092759..e3648e34df 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -10736,8 +10736,9 @@ \throws Nothing. \pnum -\remarks Two \tcode{shared_ptr} objects are equivalent if they store the same -pointer value and share ownership. +\remarks Two \tcode{shared_ptr} objects are equivalent +if they store the same pointer value and share ownership, or +if they store the same pointer value and both are empty. The weak form may fail spuriously. See~\ref{atomics.types.operations}. \end{itemdescr} From d650f71af53756ec9a22b5080d0ac51e0ed7689a Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 11:55:00 -0800 Subject: [PATCH 076/168] LWG2981 Remove redundant deduction guides from standard library --- source/threads.tex | 9 --------- source/utilities.tex | 3 --- 2 files changed, 12 deletions(-) diff --git a/source/threads.tex b/source/threads.tex index 371f746a48..3888b52902 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -1671,8 +1671,6 @@ private: mutex_type& pm; // \expos }; - - template lock_guard(lock_guard) -> lock_guard; } \end{codeblock} @@ -1749,9 +1747,6 @@ private: tuple pm; // \expos }; - - template - scoped_lock(scoped_lock) -> scoped_lock; } \end{codeblock} @@ -1865,8 +1860,6 @@ bool owns; // \expos }; - template unique_lock(unique_lock) -> unique_lock; - template void swap(unique_lock& x, unique_lock& y) noexcept; } @@ -2308,8 +2301,6 @@ bool owns; // \expos }; - template shared_lock(shared_lock) -> shared_lock; - template void swap(shared_lock& x, shared_lock& y) noexcept; } diff --git a/source/utilities.tex b/source/utilities.tex index e3648e34df..45f46d8271 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -12901,9 +12901,6 @@ template invoke_result_t operator()(ArgTypes&&...) const; }; - - template - reference_wrapper(reference_wrapper) -> reference_wrapper; } \end{codeblock} From 814e25c056d0b2e6eba563d33bd733cdb77729fe Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 11:57:50 -0800 Subject: [PATCH 077/168] LWG2982 Making size_type consistent in associative container deduction guides --- source/containers.tex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/containers.tex b/source/containers.tex index 0067b62d1c..9632146920 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -8609,8 +8609,8 @@ \pnum A \tcode{size_type} parameter type in an \tcode{unordered_set} deduction guide -refers to the \tcode{size_type} member type of the primary \tcode{unordered_set} -template. +refers to the \tcode{size_type} member type of +the type deduced by the deduction guide. \rSec3[unord.set.cnstr]{\tcode{unordered_set} constructors} @@ -8911,8 +8911,8 @@ \pnum A \tcode{size_type} parameter type in an \tcode{unordered_multiset} deduction guide -refers to the \tcode{size_type} member type of the primary \tcode{unordered_multiset} -template. +refers to the \tcode{size_type} member type of +the type deduced by the deduction guide. \rSec3[unord.multiset.cnstr]{\tcode{unordered_multiset} constructors} From ce5f8532f0d512015a6584c190f7dfeee96cf05e Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 11:59:37 -0800 Subject: [PATCH 078/168] LWG2988 Clause 32 cleanup missed one typename --- source/atomics.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/atomics.tex b/source/atomics.tex index b91d875913..a5141664b3 100644 --- a/source/atomics.tex +++ b/source/atomics.tex @@ -82,7 +82,7 @@ template T atomic_load_explicit(const atomic*, memory_order) noexcept; template - T atomic_exchange(volatile atomic*, T) noexcept; + T atomic_exchange(volatile atomic*, typename atomic::value_type) noexcept; template T atomic_exchange(atomic*, typename atomic::value_type) noexcept; template From d62b062bcc84808435594c8b92a27685923eef60 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 12:23:11 -0800 Subject: [PATCH 079/168] LWG2993 reference_wrapper conversion from T&& --- source/utilities.tex | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/source/utilities.tex b/source/utilities.tex index 45f46d8271..e155b44bc0 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -12886,8 +12886,8 @@ using type = T; // construct/copy/destroy - reference_wrapper(T&) noexcept; - reference_wrapper(T&&) = delete; // do not bind to temporary objects + template + reference_wrapper(U&&) noexcept(@\seebelow@); reference_wrapper(const reference_wrapper& x) noexcept; // assignment @@ -12901,6 +12901,8 @@ template invoke_result_t operator()(ArgTypes&&...) const; }; + template + reference_wrapper(T&) -> reference_wrapper; } \end{codeblock} @@ -12915,13 +12917,28 @@ \indexlibrary{\idxcode{reference_wrapper}!constructor}% \begin{itemdecl} -reference_wrapper(T& t) noexcept; +template + reference_wrapper(U&& u) noexcept(@\seebelow@); \end{itemdecl} \begin{itemdescr} \pnum -\effects Constructs a \tcode{reference_wrapper} object that stores a -reference to \tcode{t}. +\remarks Let \tcode{\placeholdernc{FUN}} denote the exposition-only functions +\begin{codeblock} +void @\placeholdernc{FUN}@(T&) noexcept; +void @\placeholdernc{FUN}@(T&&) = delete; +\end{codeblock} +This constructor shall not participate in overload resolution unless +the expression \tcode{\placeholdernc{FUN}(declval())} is well-formed and +\tcode{is_same_v, reference_wrapper>} is \tcode{false}. +The expression inside \tcode{noexcept} +is equivalent to \tcode{noexcept(\placeholdernc{FUN}(declval()))}. + +\pnum +\effects Creates a variable \tcode{r} +as if by \tcode{T\& r = std::forward(u)}, +then constructs a \tcode{reference_wrapper} object +that stores a reference to \tcode{r}. \end{itemdescr} \indexlibrary{\idxcode{reference_wrapper}!constructor}% From aeeea0814e9f6c1716cbcfbd29cfad2b81571159 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 12:46:13 -0800 Subject: [PATCH 080/168] LWG2998 Requirements on function objects passed to {forward_,}list-specific algorithms --- source/containers.tex | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/source/containers.tex b/source/containers.tex index 9632146920..7f6ed71c10 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -4220,6 +4220,14 @@ \rSec3[forwardlist.ops]{\tcode{forward_list} operations} +\pnum +In this subclause, +arguments for a template parameter +named \tcode{Predicate} or \tcode{BinaryPredicate} +shall meet the corresponding requirements in \ref{algorithms.requirements}. +For \tcode{merge} and \tcode{sort}, +the definitions and requirements in \ref{alg.sorting} apply. + \indexlibrarymember{splice_after}{forward_list}% \begin{itemdecl} void splice_after(const_iterator position, forward_list& x); @@ -4359,8 +4367,9 @@ \begin{itemdescr} \pnum -\requires \tcode{comp} defines a strict weak ordering\iref{alg.sorting}, and \tcode{*this} -and \tcode{x} are both sorted according to this ordering. +\requires \tcode{*this} and \tcode{x} are both sorted with respect to +the comparator \tcode{operator<} (for the first two overloads) or +\tcode{comp} (for the last two overloads). \tcode{get_allocator() == x.get_allocator()}. \pnum @@ -4388,10 +4397,6 @@ \end{itemdecl} \begin{itemdescr} -\pnum -\requires \tcode{operator<} (for the version with no arguments) or \tcode{comp} (for the -version with a comparison argument) defines a strict weak ordering\iref{alg.sorting}. - \pnum \effects Sorts the list according to the \tcode{operator<} or the \tcode{comp} function object. If an exception is thrown, the order of the elements in \tcode{*this} is unspecified. @@ -4810,6 +4815,12 @@ operations are provided specifically for them.\footnote{As specified in~\ref{allocator.requirements}, the requirements in this Clause apply only to lists whose allocators compare equal.} +In this subclause, +arguments for a template parameter +named \tcode{Predicate} or \tcode{BinaryPredicate} +shall meet the corresponding requirements in \ref{algorithms.requirements}. +For \tcode{merge} and \tcode{sort}, +the definitions and requirements in \ref{alg.sorting} apply. \pnum \tcode{list} provides three splice operations that destructively move elements from one list to @@ -5022,8 +5033,10 @@ \begin{itemdescr} \pnum \requires -\tcode{comp} shall define a strict weak ordering\iref{alg.sorting}, and both the list and the argument list shall be -sorted according to this ordering. +Both the list and the argument list +shall be sorted with respect to +the comparator \tcode{operator<} (for the first two overloads) or +\tcode{comp} (for the last two overloads). \pnum \effects @@ -5076,16 +5089,6 @@ \end{itemdecl} \begin{itemdescr} -\pnum -\requires -\tcode{operator<} -(for the first -version) -or -\tcode{comp} -(for the second version) -shall define a strict weak ordering\iref{alg.sorting}. - \pnum \effects Sorts the list according to the \tcode{operator<} or a \tcode{Compare} function object. From 3c6217d0b19da8d85b8ab0f62dc0c9327177e84f Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 12:50:51 -0800 Subject: [PATCH 081/168] [forwardlist.ops] Fix the dangling, second requirement to be consistent with how multiple requirements are stated in other \requires clauses. --- source/containers.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/containers.tex b/source/containers.tex index 7f6ed71c10..d0bd226abf 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -4369,8 +4369,8 @@ \pnum \requires \tcode{*this} and \tcode{x} are both sorted with respect to the comparator \tcode{operator<} (for the first two overloads) or -\tcode{comp} (for the last two overloads). -\tcode{get_allocator() == x.get_allocator()}. +\tcode{comp} (for the last two overloads), and +\tcode{get_allocator() == x.get_allocator()} is \tcode{true}. \pnum \effects Merges the two sorted ranges \tcode{[begin(), end())} and From 7a77a75ba5d43671d5c125ffe08585908f40c416 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 12:55:47 -0800 Subject: [PATCH 082/168] LWG3001 weak_ptr::element_type needs remove_extent_t --- source/utilities.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/utilities.tex b/source/utilities.tex index e155b44bc0..370a3c0fb7 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -10163,7 +10163,7 @@ namespace std { template class weak_ptr { public: - using element_type = T; + using element_type = remove_extent_t; // \ref{util.smartptr.weak.const}, constructors constexpr weak_ptr() noexcept; From b18ebd7aefafe052cb028ccf44ce4351be5073a6 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 13:00:41 -0800 Subject: [PATCH 083/168] LWG3024 variant's copies must be deleted instead of disabled via SFINAE --- source/utilities.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/utilities.tex b/source/utilities.tex index 370a3c0fb7..c11be2d821 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -3917,7 +3917,7 @@ \pnum \remarks -This function shall not participate in overload resolution unless +This constructor shall be defined as deleted unless \tcode{is_copy_constructible_v<$\tcode{T}_i$>} is \tcode{true} for all $i$. \end{itemdescr} @@ -4180,7 +4180,7 @@ \pnum \remarks -This function shall not participate in overload resolution unless +This operator shall be defined as deleted unless \tcode{is_copy_constructible_v<$\tcode{T}_i$> \&\&} \tcode{is_copy_assignable_v<$\tcode{T}_i$>} is \tcode{true} for all $i$. From 240bf581f3801d0d6c82662fce7d7325e45b4936 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Mon, 13 Nov 2017 22:39:31 +0000 Subject: [PATCH 084/168] LWG 2958 Moves improperly defined as deleted --- source/utilities.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/utilities.tex b/source/utilities.tex index c11be2d821..5256facc40 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -701,7 +701,7 @@ and to \tcode{second} with\\ \tcode{std::forward(p.second)}. \pnum -\remarks This operator shall be defined as deleted unless +\remarks This operator shall not participate in overload resolution unless \tcode{is_move_assignable_v} is \tcode{true} and \tcode{is_move_assignable_v} is \tcode{true}. @@ -1447,7 +1447,7 @@ \tcode{get<$i$>(*this)}. \pnum -\remarks This operator shall be defined as deleted unless +\remarks This operator shall not participate in overload resolution unless \tcode{is_move_assignable_v<$\tcode{T}_i$>} is \tcode{true} for all $i$. \pnum From 08e357d7fa07826f392474241efeee5aa5b2b33c Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Sun, 12 Nov 2017 21:05:51 -0800 Subject: [PATCH 085/168] P0550R2 Transformation Trait remove_cvref [meta.trans.other] "shall name" -> "names" as this is a requirement on the implementation. --- source/utilities.tex | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/source/utilities.tex b/source/utilities.tex index 5256facc40..10637af593 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -15154,6 +15154,7 @@ template // see \ref{meta.trans.other} struct aligned_storage; template struct aligned_union; + template struct remove_cvref; template struct decay; template struct enable_if; template struct conditional; @@ -15165,6 +15166,8 @@ using aligned_storage_t = typename aligned_storage::type; template using aligned_union_t = typename aligned_union::type; + template + using remove_cvref_t = typename remove_cvref::type; template using decay_t = typename decay::type; template @@ -16520,6 +16523,13 @@ Each type in the parameter pack \tcode{Types} shall be a complete object type. \\ \rowsep +\indexlibrary{\idxcode{remove_cvref}}% +\tcode{template \br struct remove_cvref;} + & + The member typedef \tcode{type} names the same type as + \tcode{remove_cv_t>}. + \\ \rowsep + \indexlibrary{\idxcode{decay}}% \tcode{template \br struct decay;} & From 6f550edcaddbeb8cac56ab4b6eb02f07896a2ed5 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Sun, 12 Nov 2017 21:21:40 -0800 Subject: [PATCH 086/168] P0777R1 Treating Unnecessary decay --- source/utilities.tex | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/source/utilities.tex b/source/utilities.tex index 10637af593..f648f638fe 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -1729,7 +1729,7 @@ Equivalent to: \begin{codeblock} return apply_impl(std::forward(f), std::forward(t), - make_index_sequence>>{}); + make_index_sequence>>{}); \end{codeblock} \end{itemdescr} @@ -1751,8 +1751,9 @@ \end{codeblock} Equivalent to: \begin{codeblock} -return make_from_tuple_impl(forward(t), - make_index_sequence>>{}); +return make_from_tuple_impl( + forward(t), + make_index_sequence>>{}); \end{codeblock} \begin{note} The type of \tcode{T} must be supplied as an explicit template parameter, @@ -2430,8 +2431,8 @@ this constructor shall be a constexpr constructor. This constructor shall not participate in overload resolution unless \tcode{is_constructible_v} is \tcode{true}, -\tcode{is_same_v, in_place_t>} is \tcode{false}, and -\tcode{is_same_v, decay_t>} is \tcode{false}. +\tcode{is_same_v, in_place_t>} is \tcode{false}, and +\tcode{is_same_v, optional>} is \tcode{false}. The constructor is explicit if and only if \tcode{is_convertible_v} is \tcode{false}. \end{itemdescr} @@ -2668,7 +2669,7 @@ \remarks If any exception is thrown, the result of the expression \tcode{bool(*this)} remains unchanged. If an exception is thrown during the call to \tcode{T}'s constructor, the state of \tcode{v} is determined by the exception safety guarantee of \tcode{T}'s constructor. If an exception is thrown during the call to \tcode{T}'s assignment, the state of \tcode{*val} and \tcode{v} is determined by the exception safety guarantee of \tcode{T}'s assignment. This function shall not participate in overload resolution unless -\tcode{is_same_v, decay_t>} is \tcode{false}, +\tcode{is_same_v, optional>} is \tcode{false}, \tcode{conjunction_v, is_same>>} is \tcode{false}, \tcode{is_constructible_v} is \tcode{true}, and \tcode{is_assignable_v} is \tcode{true}. @@ -3977,8 +3978,8 @@ \remarks This function shall not participate in overload resolution unless \tcode{sizeof...(Types)} is nonzero, -unless \tcode{is_same_v, variant>} is \tcode{false}, -unless \tcode{decay_t} is neither +unless \tcode{is_same_v, variant>} is \tcode{false}, +unless \tcode{remove_cvref_t} is neither a specialization of \tcode{in_place_type_t} nor a specialization of \tcode{in_place_index_t}, unless \tcode{is_constructible_v<$\tcode{T}_j$, T>} is \tcode{true}, @@ -4268,7 +4269,7 @@ \pnum \remarks This function shall not participate in overload resolution unless -\tcode{is_same_v, variant>} is \tcode{false}, unless +\tcode{is_same_v, variant>} is \tcode{false}, unless \tcode{is_assignable_v<$\tcode{T}_j$\&, T> \&\& is_constructible_v<$\tcode{T}_j$, T>} is \tcode{true}, and unless the expression \tcode{\placeholdernc{FUN}(std::forward(t))} (with \tcode{\placeholdernc{FUN}} being the above-mentioned set of imaginary functions) @@ -12800,11 +12801,11 @@ \begin{itemize} \item \tcode{(t$_1$.*f)(t$_2$, $\dotsc$, t$_N$)} when \tcode{f} is a pointer to a member function of a class \tcode{T} -and \tcode{is_base_of_v>} is \tcode{true}; +and \tcode{is_base_of_v>} is \tcode{true}; \item \tcode{(t$_1$.get().*f)(t$_2$, $\dotsc$, t$_N$)} when \tcode{f} is a pointer to a member function of a class \tcode{T} -and \tcode{decay_t} is a specialization of \tcode{reference_wrapper}; +and \tcode{remove_cvref_t} is a specialization of \tcode{reference_wrapper}; \item \tcode{((*t$_1$).*f)(t$_2$, $\dotsc$, t$_N$)} when \tcode{f} is a pointer to a member function of a class \tcode{T} @@ -12812,11 +12813,11 @@ \item \tcode{t$_1$.*f} when \tcode{N == 1} and \tcode{f} is a pointer to data member of a class \tcode{T} -and \tcode{is_base_of_v>} is \tcode{true}; +and \tcode{is_base_of_v>} is \tcode{true}; \item \tcode{t$_1$.get().*f} when \tcode{N == 1} and \tcode{f} is a pointer to data member of a class \tcode{T} -and \tcode{decay_t} is a specialization of \tcode{reference_wrapper}; +and \tcode{remove_cvref_t} is a specialization of \tcode{reference_wrapper}; \item \tcode{(*t$_1$).*f} when \tcode{N == 1} and \tcode{f} is a pointer to data member of a class \tcode{T} From aa88a2e76ee439aec60dfe1f78fb465d4adb7eda Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Sun, 12 Nov 2017 21:22:29 -0800 Subject: [PATCH 087/168] [any.nonmembers] Use remove_cvref_t. --- source/utilities.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/utilities.tex b/source/utilities.tex index f648f638fe..7e180c6b61 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -5503,7 +5503,7 @@ \begin{itemdescr} \pnum -Let \tcode{U} be the type \tcode{remove_cv_t>}. +Let \tcode{U} be the type \tcode{remove_cvref_t}. \pnum \requires From 5c908efa0d736934987feddb605b8a2b61fc0cd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Mon, 20 Nov 2017 02:45:11 +0000 Subject: [PATCH 088/168] [variant.ctor, variant.assign] Break long listing sentences up into actual lists. --- source/utilities.tex | 49 ++++++++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/source/utilities.tex b/source/utilities.tex index 7e180c6b61..71a94dc54e 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -3976,16 +3976,27 @@ \pnum \remarks -This function shall not participate in overload resolution -unless \tcode{sizeof...(Types)} is nonzero, -unless \tcode{is_same_v, variant>} is \tcode{false}, -unless \tcode{remove_cvref_t} is neither -a specialization of \tcode{in_place_type_t} -nor a specialization of \tcode{in_place_index_t}, -unless \tcode{is_constructible_v<$\tcode{T}_j$, T>} is \tcode{true}, -and unless the expression -\tcode{\placeholdernc{FUN}(}\brk\tcode{std::forward(t))} (with \tcode{\placeholdernc{FUN}} -being the above-mentioned set of imaginary functions) is well-formed. +This function shall not participate in overload resolution unless +\begin{itemize} +\item + \tcode{sizeof...(Types)} is nonzero, + +\item + \tcode{is_same_v, variant>} is \tcode{false}, + +\item + \tcode{remove_cvref_t} is neither a specialization + of \tcode{in_place_type_t} nor a specialization + of \tcode{in_place_index_t}, + +\item + \tcode{is_constructible_v<$\tcode{T}_j$, T>} is \tcode{true}, and + +\item + the expression \tcode{\placeholdernc{FUN}(}\brk\tcode{std::forward(t))} + (with \tcode{\placeholdernc{FUN}} being the above-mentioned set of + imaginary functions) is well-formed. +\end{itemize} \pnum \begin{note} @@ -4269,11 +4280,19 @@ \pnum \remarks This function shall not participate in overload resolution unless -\tcode{is_same_v, variant>} is \tcode{false}, unless -\tcode{is_assignable_v<$\tcode{T}_j$\&, T> \&\& is_constructible_v<$\tcode{T}_j$, T>} is \tcode{true}, -and unless the expression \tcode{\placeholdernc{FUN}(std::forward(t))} (with -\tcode{\placeholdernc{FUN}} being the above-mentioned set of imaginary functions) -is well-formed. +\begin{itemize} +\item + \tcode{is_same_v, variant>} is \tcode{false}, + +\item + \tcode{is_assignable_v<$\tcode{T}_j$\&, T> \&\& is_constructible_v<$\tcode{T}_j$, T>} + is \tcode{true}, and + +\item + the expression \tcode{\placeholdernc{FUN}(std::forward(t))} + (with \tcode{\placeholdernc{FUN}} being the above-mentioned set + of imaginary functions) is well-formed. +\end{itemize} \pnum \begin{note} From adb3bdb9ffef0e3096f5e0c29c7b46cc87b2e971 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Sun, 12 Nov 2017 22:46:58 -0800 Subject: [PATCH 089/168] P0600R0 [[nodiscard]] in the Library [deque.overview] Added [[nodiscard]] to deque::empty() too, fixing a minor oversight in the wording. [iterator.traits] Move [[nodiscard]] before 'static', since it's not valid afterwards. --- source/basic.tex | 8 +++---- source/containers.tex | 42 ++++++++++++++++++------------------- source/iostreams.tex | 4 ++-- source/iterators.tex | 12 +++++------ source/lib-intro.tex | 2 +- source/regex.tex | 4 ++-- source/strings.tex | 8 +++---- source/support.tex | 49 +++++++++++++++++++++++-------------------- source/threads.tex | 12 +++++------ source/utilities.tex | 28 ++++++++++++------------- 10 files changed, 86 insertions(+), 83 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index ce76f9ffa0..4429d71e79 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -3203,16 +3203,16 @@ program. \begin{codeblock} -void* operator new(std::size_t); -void* operator new(std::size_t, std::align_val_t); +[[nodiscard]] void* operator new(std::size_t); +[[nodiscard]] void* operator new(std::size_t, std::align_val_t); void operator delete(void*) noexcept; void operator delete(void*, std::size_t) noexcept; void operator delete(void*, std::align_val_t) noexcept; void operator delete(void*, std::size_t, std::align_val_t) noexcept; -void* operator new[](std::size_t); -void* operator new[](std::size_t, std::align_val_t); +[[nodiscard]] void* operator new[](std::size_t); +[[nodiscard]] void* operator new[](std::size_t, std::align_val_t); void operator delete[](void*) noexcept; void operator delete[](void*, std::size_t) noexcept; diff --git a/source/containers.tex b/source/containers.tex index d0bd226abf..1c6cf1742e 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1266,7 +1266,7 @@ allocator_type get_allocator() const; explicit operator bool() const noexcept; - bool empty() const noexcept; + [[nodiscard]] bool empty() const noexcept; void swap(@\placeholdernc{node_handle}@&) noexcept(ator_traits::propagate_on_container_swap::value || @@ -1421,7 +1421,7 @@ \end{itemdescr} \begin{itemdecl} -bool empty() const noexcept; +[[nodiscard]] bool empty() const noexcept; \end{itemdecl} \begin{itemdescr} @@ -3191,7 +3191,7 @@ constexpr const_reverse_iterator crend() const noexcept; // capacity - constexpr bool empty() const noexcept; + [[nodiscard]] constexpr bool empty() const noexcept; constexpr size_type size() const noexcept; constexpr size_type max_size() const noexcept; @@ -3451,7 +3451,7 @@ const_reverse_iterator crend() const noexcept; // \ref{deque.capacity}, capacity - bool empty() const noexcept; + [[nodiscard]] bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; void resize(size_type sz); @@ -3826,7 +3826,7 @@ const_iterator cend() const noexcept; // capacity - bool empty() const noexcept; + [[nodiscard]] bool empty() const noexcept; size_type max_size() const noexcept; // \ref{forwardlist.access}, element access @@ -4530,7 +4530,7 @@ const_reverse_iterator crend() const noexcept; // \ref{list.capacity}, capacity - bool empty() const noexcept; + [[nodiscard]] bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; void resize(size_type sz); @@ -5209,7 +5209,7 @@ const_reverse_iterator crend() const noexcept; // \ref{vector.capacity}, capacity - bool empty() const noexcept; + [[nodiscard]] bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; size_type capacity() const noexcept; @@ -5689,7 +5689,7 @@ const_reverse_iterator crend() const noexcept; // capacity - bool empty() const noexcept; + [[nodiscard]] bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; size_type capacity() const noexcept; @@ -6086,7 +6086,7 @@ const_reverse_iterator crend() const noexcept; // capacity - bool empty() const noexcept; + [[nodiscard]] bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; @@ -6618,7 +6618,7 @@ const_reverse_iterator crend() const noexcept; // capacity - bool empty() const noexcept; + [[nodiscard]] bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; @@ -6914,7 +6914,7 @@ const_reverse_iterator crend() const noexcept; // capacity - bool empty() const noexcept; + [[nodiscard]] bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; @@ -7181,7 +7181,7 @@ const_reverse_iterator crend() const noexcept; // capacity - bool empty() const noexcept; + [[nodiscard]] bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; @@ -7594,7 +7594,7 @@ const_iterator cend() const noexcept; // capacity - bool empty() const noexcept; + [[nodiscard]] bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; @@ -8153,7 +8153,7 @@ const_iterator cend() const noexcept; // capacity - bool empty() const noexcept; + [[nodiscard]] bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; @@ -8496,7 +8496,7 @@ const_iterator cend() const noexcept; // capacity - bool empty() const noexcept; + [[nodiscard]] bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; @@ -8798,7 +8798,7 @@ const_iterator cend() const noexcept; // capacity - bool empty() const noexcept; + [[nodiscard]] bool empty() const noexcept; size_type size() const noexcept; size_type max_size() const noexcept; @@ -9122,7 +9122,7 @@ template queue(const queue&, const Alloc&); template queue(queue&&, const Alloc&); - bool empty() const { return c.empty(); } + [[nodiscard]] bool empty() const { return c.empty(); } size_type size() const { return c.size(); } reference front() { return c.front(); } const_reference front() const { return c.front(); } @@ -9376,9 +9376,9 @@ template priority_queue(const priority_queue&, const Alloc&); template priority_queue(priority_queue&&, const Alloc&); - bool empty() const { return c.empty(); } - size_type size() const { return c.size(); } - const_reference top() const { return c.front(); } + [[nodiscard]] bool empty() const { return c.empty(); } + size_type size() const { return c.size(); } + const_reference top() const { return c.front(); } void push(const value_type& x); void push(value_type&& x); template void emplace(Args&&... args); @@ -9665,7 +9665,7 @@ template stack(const stack&, const Alloc&); template stack(stack&&, const Alloc&); - bool empty() const { return c.empty(); } + [[nodiscard]] bool empty() const { return c.empty(); } size_type size() const { return c.size(); } reference top() { return c.back(); } const_reference top() const { return c.back(); } diff --git a/source/iostreams.tex b/source/iostreams.tex index 6bec4b3567..9100b1afa4 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -10547,7 +10547,7 @@ path extension() const; // \ref{fs.path.query}, query - bool empty() const noexcept; + [[nodiscard]] bool empty() const noexcept; bool has_root_name() const; bool has_root_directory() const; bool has_root_path() const; @@ -11710,7 +11710,7 @@ \indexlibrarymember{empty}{path}% \begin{itemdecl} -bool empty() const noexcept; +[[nodiscard]] bool empty() const noexcept; \end{itemdecl} \begin{itemdescr} diff --git a/source/iterators.tex b/source/iterators.tex index 214d7f7503..f71f74839d 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -850,9 +850,9 @@ // \ref{iterator.container}, container access template constexpr auto size(const C& c) -> decltype(c.size()); template constexpr size_t size(const T (&array)[N]) noexcept; - template constexpr auto empty(const C& c) -> decltype(c.empty()); - template constexpr bool empty(const T (&array)[N]) noexcept; - template constexpr bool empty(initializer_list il) noexcept; + template [[nodiscard]] constexpr auto empty(const C& c) -> decltype(c.empty()); + template [[nodiscard]] constexpr bool empty(const T (&array)[N]) noexcept; + template [[nodiscard]] constexpr bool empty(initializer_list il) noexcept; template constexpr auto data(C& c) -> decltype(c.data()); template constexpr auto data(const C& c) -> decltype(c.data()); template constexpr T* data(T (&array)[N]) noexcept; @@ -3496,7 +3496,7 @@ \indexlibrary{\idxcode{empty(C\& c)}}% \begin{itemdecl} -template constexpr auto empty(const C& c) -> decltype(c.empty()); +template [[nodiscard]] constexpr auto empty(const C& c) -> decltype(c.empty()); \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{c.empty()}. @@ -3504,7 +3504,7 @@ \indexlibrary{\idxcode{empty(T (\&array)[N])}}% \begin{itemdecl} -template constexpr bool empty(const T (&array)[N]) noexcept; +template [[nodiscard]] constexpr bool empty(const T (&array)[N]) noexcept; \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{false}. @@ -3512,7 +3512,7 @@ \indexlibrary{\idxcode{empty(initializer_list)}}% \begin{itemdecl} -template constexpr bool empty(initializer_list il) noexcept; +template [[nodiscard]] constexpr bool empty(initializer_list il) noexcept; \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{il.size() == 0}. diff --git a/source/lib-intro.tex b/source/lib-intro.tex index 998c4b1923..e1f1c8482f 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -2182,7 +2182,7 @@ template SimpleAllocator(const SimpleAllocator& other); - Tp* allocate(std::size_t n); + [[nodiscard]] Tp* allocate(std::size_t n); void deallocate(Tp* p, std::size_t n); }; diff --git a/source/regex.tex b/source/regex.tex index 1bd8275534..8948c1ae7b 100644 --- a/source/regex.tex +++ b/source/regex.tex @@ -2528,7 +2528,7 @@ // \ref{re.results.size}, size size_type size() const; size_type max_size() const; - bool empty() const; + [[nodiscard]] bool empty() const; // \ref{re.results.acc}, element access difference_type length(size_type sub = 0) const; @@ -2697,7 +2697,7 @@ \indexlibrarymember{match_results}{empty}% \begin{itemdecl} -bool empty() const; +[[nodiscard]] bool empty() const; \end{itemdecl} \begin{itemdescr} diff --git a/source/strings.tex b/source/strings.tex index c69a75a1b6..c46904047b 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -955,7 +955,7 @@ void reserve(size_type res_arg = 0); void shrink_to_fit(); void clear() noexcept; - bool empty() const noexcept; + [[nodiscard]] bool empty() const noexcept; // \ref{string.access}, element access const_reference operator[](size_type pos) const; @@ -1801,7 +1801,7 @@ \indexlibrarymember{empty}{basic_string}% \begin{itemdecl} -bool empty() const noexcept; +[[nodiscard]] bool empty() const noexcept; \end{itemdecl} \begin{itemdescr} @@ -4676,7 +4676,7 @@ constexpr size_type size() const noexcept; constexpr size_type length() const noexcept; constexpr size_type max_size() const noexcept; - constexpr bool empty() const noexcept; + [[nodiscard]] constexpr bool empty() const noexcept; // \ref{string.view.access}, element access constexpr const_reference operator[](size_type pos) const; @@ -4916,7 +4916,7 @@ \indexlibrarymember{empty}{basic_string_view}% \begin{itemdecl} -constexpr bool empty() const noexcept; +[[nodiscard]] constexpr bool empty() const noexcept; \end{itemdecl} \begin{itemdescr} diff --git a/source/support.tex b/source/support.tex index 7e125d9813..c26f1518bd 100644 --- a/source/support.tex +++ b/source/support.tex @@ -1834,17 +1834,18 @@ new_handler set_new_handler(new_handler new_p) noexcept; // \ref{ptr.launder}, pointer optimization barrier - template constexpr T* launder(T* p) noexcept; + template [[nodiscard]] constexpr T* launder(T* p) noexcept; // \ref{hardware.interference}, hardware interference size inline constexpr size_t hardware_destructive_interference_size = @\impdef{}@; inline constexpr size_t hardware_constructive_interference_size = @\impdef{}@; } -void* operator new(std::size_t size); -void* operator new(std::size_t size, std::align_val_t alignment); -void* operator new(std::size_t size, const std::nothrow_t&) noexcept; -void* operator new(std::size_t size, std::align_val_t alignment, const std::nothrow_t&) noexcept; +[[nodiscard]] void* operator new(std::size_t size); +[[nodiscard]] void* operator new(std::size_t size, std::align_val_t alignment); +[[nodiscard]] void* operator new(std::size_t size, const std::nothrow_t&) noexcept; +[[nodiscard]] void* operator new(std::size_t size, std::align_val_t alignment, + const std::nothrow_t&) noexcept; void operator delete(void* ptr) noexcept; void operator delete(void* ptr, std::size_t size) noexcept; @@ -1853,11 +1854,11 @@ void operator delete(void* ptr, const std::nothrow_t&) noexcept; void operator delete(void* ptr, std::align_val_t alignment, const std::nothrow_t&) noexcept; -void* operator new[](std::size_t size); -void* operator new[](std::size_t size, std::align_val_t alignment); -void* operator new[](std::size_t size, const std::nothrow_t&) noexcept; -void* operator new[](std::size_t size, std::align_val_t alignment, - const std::nothrow_t&) noexcept; +[[nodiscard]] void* operator new[](std::size_t size); +[[nodiscard]] void* operator new[](std::size_t size, std::align_val_t alignment); +[[nodiscard]] void* operator new[](std::size_t size, const std::nothrow_t&) noexcept; +[[nodiscard]] void* operator new[](std::size_t size, std::align_val_t alignment, + const std::nothrow_t&) noexcept; void operator delete[](void* ptr) noexcept; void operator delete[](void* ptr, std::size_t size) noexcept; @@ -1866,8 +1867,8 @@ void operator delete[](void* ptr, const std::nothrow_t&) noexcept; void operator delete[](void* ptr, std::align_val_t alignment, const std::nothrow_t&) noexcept; -void* operator new (std::size_t size, void* ptr) noexcept; -void* operator new[](std::size_t size, void* ptr) noexcept; +[[nodiscard]] void* operator new (std::size_t size, void* ptr) noexcept; +[[nodiscard]] void* operator new[](std::size_t size, void* ptr) noexcept; void operator delete (void* ptr, void*) noexcept; void operator delete[](void* ptr, void*) noexcept; \end{codeblock} @@ -1893,8 +1894,8 @@ \indexlibrary{\idxcode{new}!\idxcode{operator}}% \begin{itemdecl} -void* operator new(std::size_t size); -void* operator new(std::size_t size, std::align_val_t alignment); +[[nodiscard]] void* operator new(std::size_t size); +[[nodiscard]] void* operator new(std::size_t size, std::align_val_t alignment); \end{itemdecl} \begin{itemdescr} @@ -1958,8 +1959,9 @@ \indexlibrary{\idxcode{new}!\idxcode{operator}}% \begin{itemdecl} -void* operator new(std::size_t size, const std::nothrow_t&) noexcept; -void* operator new(std::size_t size, std::align_val_t alignment, const std::nothrow_t&) noexcept; +[[nodiscard]] void* operator new(std::size_t size, const std::nothrow_t&) noexcept; +[[nodiscard]] void* operator new(std::size_t size, std::align_val_t alignment, + const std::nothrow_t&) noexcept; \end{itemdecl} \begin{itemdescr} @@ -2163,8 +2165,8 @@ \indexlibrary{\idxcode{new}!\idxcode{operator}}% \begin{itemdecl} -void* operator new[](std::size_t size); -void* operator new[](std::size_t size, std::align_val_t alignment); +[[nodiscard]] void* operator new[](std::size_t size); +[[nodiscard]] void* operator new[](std::size_t size, std::align_val_t alignment); \end{itemdecl} \begin{itemdescr} @@ -2220,8 +2222,9 @@ \indexlibrary{\idxcode{new}!\idxcode{operator}}% \begin{itemdecl} -void* operator new[](std::size_t size, const std::nothrow_t&) noexcept; -void* operator new[](std::size_t size, std::align_val_t alignment, const std::nothrow_t&) noexcept; +[[nodiscard]] void* operator new[](std::size_t size, const std::nothrow_t&) noexcept; +[[nodiscard]] void* operator new[](std::size_t size, std::align_val_t alignment, + const std::nothrow_t&) noexcept; \end{itemdecl} \begin{itemdescr} @@ -2404,7 +2407,7 @@ \indexlibrary{\idxcode{new}!\idxcode{operator}}% \begin{itemdecl} -void* operator new(std::size_t size, void* ptr) noexcept; +[[nodiscard]] void* operator new(std::size_t size, void* ptr) noexcept; \end{itemdecl} \begin{itemdescr} @@ -2429,7 +2432,7 @@ \indexlibrary{\idxcode{new}!\idxcode{operator}}% \begin{itemdecl} -void* operator new[](std::size_t size, void* ptr) noexcept; +[[nodiscard]] void* operator new[](std::size_t size, void* ptr) noexcept; \end{itemdecl} \begin{itemdescr} @@ -2692,7 +2695,7 @@ \indexlibrary{\idxcode{launder}}% \begin{itemdecl} -template constexpr T* launder(T* p) noexcept; +template [[nodiscard]] constexpr T* launder(T* p) noexcept; \end{itemdecl} \begin{itemdescr} diff --git a/source/threads.tex b/source/threads.tex index 3888b52902..9c40e2d6ad 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -3656,11 +3656,11 @@ void swap(packaged_task&, packaged_task&) noexcept; template - future, decay_t...>> - async(F&& f, Args&&... args); + [[nodiscard]] future, decay_t...>> + async(F&& f, Args&&... args); template - future, decay_t...>> - async(launch policy, F&& f, Args&&... args); + [[nodiscard]] future, decay_t...>> + async(launch policy, F&& f, Args&&... args); } \end{codeblock} @@ -4776,10 +4776,10 @@ \indexlibrary{\idxcode{async}}% \begin{itemdecl} template - future, decay_t...>> + [[nodiscard]] future, decay_t...>> async(F&& f, Args&&... args); template - future, decay_t...>> + [[nodiscard]] future, decay_t...>> async(launch policy, F&& f, Args&&... args); \end{itemdecl} diff --git a/source/utilities.tex b/source/utilities.tex index 71a94dc54e..2a8f63c3da 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -7172,8 +7172,8 @@ template using rebind_alloc = @\seebelow@; template using rebind_traits = allocator_traits>; - static pointer allocate(Alloc& a, size_type n); - static pointer allocate(Alloc& a, size_type n, const_void_pointer hint); + [[nodiscard]] static pointer allocate(Alloc& a, size_type n); + [[nodiscard]] static pointer allocate(Alloc& a, size_type n, const_void_pointer hint); static void deallocate(Alloc& a, pointer p, size_type n); @@ -7340,7 +7340,7 @@ \indexlibrarymember{allocate}{allocator_traits}% \begin{itemdecl} -static pointer allocate(Alloc& a, size_type n); +[[nodiscard]] static pointer allocate(Alloc& a, size_type n); \end{itemdecl} \begin{itemdescr} @@ -7350,7 +7350,7 @@ \indexlibrarymember{allocate}{allocator_traits}% \begin{itemdecl} -static pointer allocate(Alloc& a, size_type n, const_void_pointer hint); +[[nodiscard]] static pointer allocate(Alloc& a, size_type n, const_void_pointer hint); \end{itemdecl} \begin{itemdescr} @@ -7438,7 +7438,7 @@ template allocator(const allocator&) noexcept; ~allocator(); - T* allocate(size_t n); + [[nodiscard]] T* allocate(size_t n); void deallocate(T* p, size_t n); }; } @@ -7455,7 +7455,7 @@ \indexlibrarymember{allocate}{allocator}% \begin{itemdecl} -T* allocate(size_t n); +[[nodiscard]] T* allocate(size_t n); \end{itemdecl} \begin{itemdescr} @@ -10845,7 +10845,7 @@ public: virtual ~memory_resource(); - void* allocate(size_t bytes, size_t alignment = max_align); + [[nodiscard]] void* allocate(size_t bytes, size_t alignment = max_align); void deallocate(void* p, size_t bytes, size_t alignment = max_align); bool is_equal(const memory_resource& other) const noexcept; @@ -10875,7 +10875,7 @@ \indexlibrarymember{allocate}{memory_resource}% \begin{itemdecl} -void* allocate(size_t bytes, size_t alignment = max_align); +[[nodiscard]] void* allocate(size_t bytes, size_t alignment = max_align); \end{itemdecl} \begin{itemdescr} @@ -11025,7 +11025,7 @@ polymorphic_allocator& operator=(const polymorphic_allocator& rhs) = delete; // \ref{mem.poly.allocator.mem}, member functions - Tp* allocate(size_t n); + [[nodiscard]] Tp* allocate(size_t n); void deallocate(Tp* p, size_t n); template @@ -11107,7 +11107,7 @@ \indexlibrarymember{allocate}{polymorphic_allocator}% \begin{itemdecl} -Tp* allocate(size_t n); +[[nodiscard]] Tp* allocate(size_t n); \end{itemdecl} \begin{itemdescr} @@ -12101,8 +12101,8 @@ outer_allocator_type& outer_allocator() noexcept; const outer_allocator_type& outer_allocator() const noexcept; - pointer allocate(size_type n); - pointer allocate(size_type n, const_void_pointer hint); + [[nodiscard]] pointer allocate(size_type n); + [[nodiscard]] pointer allocate(size_type n, const_void_pointer hint); void deallocate(pointer p, size_type n); size_type max_size() const; @@ -12340,7 +12340,7 @@ \indexlibrarymember{allocate}{scoped_allocator_adaptor}% \begin{itemdecl} -pointer allocate(size_type n); +[[nodiscard]] pointer allocate(size_type n); \end{itemdecl} \begin{itemdescr} @@ -12350,7 +12350,7 @@ \indexlibrarymember{allocate}{scoped_allocator_adaptor}% \begin{itemdecl} -pointer allocate(size_type n, const_void_pointer hint); +[[nodiscard]] pointer allocate(size_type n, const_void_pointer hint); \end{itemdecl} \begin{itemdescr} From 6bdf67ce751e5b8eab96abdf031a58486ae913f4 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Sun, 12 Nov 2017 23:56:56 -0800 Subject: [PATCH 090/168] P0439R0 Make std::memory_order a scoped enumeration --- source/atomics.tex | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/source/atomics.tex b/source/atomics.tex index a5141664b3..8d49fdd7c9 100644 --- a/source/atomics.tex +++ b/source/atomics.tex @@ -33,7 +33,7 @@ \begin{codeblock} namespace std { // \ref{atomics.order}, order and consistency - enum memory_order; + enum class memory_order : @\unspec@; template T kill_dependency(T y) noexcept; @@ -309,10 +309,15 @@ \begin{codeblock} namespace std { - enum memory_order { - memory_order_relaxed, memory_order_consume, memory_order_acquire, - memory_order_release, memory_order_acq_rel, memory_order_seq_cst + enum class memory_order : @\unspec@ { + relaxed, consume, acquire, release, acq_rel, seq_cst }; + inline constexpr memory_order memory_order_relaxed = memory_order::relaxed; + inline constexpr memory_order memory_order_consume = memory_order::consume; + inline constexpr memory_order memory_order_acquire = memory_order::acquire; + inline constexpr memory_order memory_order_release = memory_order::release; + inline constexpr memory_order memory_order_acq_rel = memory_order::acq_rel; + inline constexpr memory_order memory_order_seq_cst = memory_order::seq_cst; } \end{codeblock} @@ -323,21 +328,21 @@ enumerated values and their meanings are as follows: \begin{itemize} -\item \tcode{memory_order_relaxed}: no operation orders memory. +\item \tcode{memory_order::relaxed}: no operation orders memory. -\item \tcode{memory_order_release}, \tcode{memory_order_acq_rel}, and -\tcode{memory_order_seq_cst}: a store operation performs a release operation on the +\item \tcode{memory_order::release}, \tcode{memory_order::acq_rel}, and +\tcode{memory_order::seq_cst}: a store operation performs a release operation on the affected memory location. -\item \tcode{memory_order_consume}: a load operation performs a consume operation on the +\item \tcode{memory_order::consume}: a load operation performs a consume operation on the affected memory location. -\begin{note} Prefer \tcode{memory_order_acquire}, which provides stronger guarantees -than \tcode{memory_order_consume}. Implementations have found it infeasible -to provide performance better than that of \tcode{memory_order_acquire}. +\begin{note} Prefer \tcode{memory_order::acquire}, which provides stronger guarantees +than \tcode{memory_order::consume}. Implementations have found it infeasible +to provide performance better than that of \tcode{memory_order::acquire}. Specification revisions are under consideration. \end{note} -\item \tcode{memory_order_acquire}, \tcode{memory_order_acq_rel}, and -\tcode{memory_order_seq_cst}: a load operation performs an acquire operation on the +\item \tcode{memory_order::acquire}, \tcode{memory_order::acq_rel}, and +\tcode{memory_order::seq_cst}: a load operation performs an acquire operation on the affected memory location. \end{itemize} From 4ed537f4986cea6881169e273906819b0275feb8 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Mon, 13 Nov 2017 00:01:35 -0800 Subject: [PATCH 091/168] [everywhere] Replace references to memory_order_* valus with references to the memory_order::* enumerators. --- source/algorithms.tex | 4 +- source/atomics.tex | 214 ++++++++++++++++++++-------------------- source/basic.tex | 2 +- source/declarations.tex | 2 +- source/utilities.tex | 18 ++-- 5 files changed, 120 insertions(+), 120 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index a8d76f0587..f7020b8008 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -1376,9 +1376,9 @@ std::atomic x{0}; int a[] = {1,2}; std::for_each(std::execution::par, std::begin(a), std::end(a), [&](int) { - x.fetch_add(1, std::memory_order_relaxed); + x.fetch_add(1, std::memory_order::relaxed); // spin wait for another iteration to change the value of \tcode{x} - while (x.load(std::memory_order_relaxed) == 1) { } // incorrect: assumes execution order + while (x.load(std::memory_order::relaxed) == 1) { } // incorrect: assumes execution order }); \end{codeblock} The above example depends on the order of execution of the iterations, and diff --git a/source/atomics.tex b/source/atomics.tex index 8d49fdd7c9..2e0984466f 100644 --- a/source/atomics.tex +++ b/source/atomics.tex @@ -346,7 +346,7 @@ affected memory location. \end{itemize} -\begin{note} Atomic operations specifying \tcode{memory_order_relaxed} are relaxed +\begin{note} Atomic operations specifying \tcode{memory_order::relaxed} are relaxed with respect to memory ordering. Implementations must still guarantee that any given atomic access to a particular atomic object be indivisible with respect to all other atomic accesses to that object. \end{note} @@ -358,9 +358,9 @@ release sequence headed by \placeholder{A}. \pnum -There shall be a single total order \placeholder{S} on all \tcode{memory_order_seq_cst} +There shall be a single total order \placeholder{S} on all \tcode{memory_order::seq_cst} operations, consistent with the ``happens before'' order and modification orders for all -affected locations, such that each \tcode{memory_order_seq_cst} operation +affected locations, such that each \tcode{memory_order::seq_cst} operation \placeholder{B} that loads a value from an atomic object \placeholder{M} observes one of the following values: @@ -371,11 +371,11 @@ \item if \placeholder{A} exists, the result of some modification of \placeholder{M} that is not -\tcode{memory_order_seq_cst} and that does not happen before \placeholder{A}, or +\tcode{memory_order::seq_cst} and that does not happen before \placeholder{A}, or \item if \placeholder{A} does not exist, the result of some modification of \placeholder{M} that is not -\tcode{memory_order_seq_cst}. +\tcode{memory_order::seq_cst}. \end{itemize} \begin{note} Although it is not explicitly required that \placeholder{S} include locks, it can @@ -384,15 +384,15 @@ \pnum For an atomic operation \placeholder{B} that reads the value of an atomic object \placeholder{M}, -if there is a \tcode{memory_order_seq_cst} fence \placeholder{X} sequenced before \placeholder{B}, -then \placeholder{B} observes either the last \tcode{memory_order_seq_cst} modification of +if there is a \tcode{memory_order::seq_cst} fence \placeholder{X} sequenced before \placeholder{B}, +then \placeholder{B} observes either the last \tcode{memory_order::seq_cst} modification of \placeholder{M} preceding \placeholder{X} in the total order \placeholder{S} or a later modification of \placeholder{M} in its modification order. \pnum For atomic operations \placeholder{A} and \placeholder{B} on an atomic object \placeholder{M}, where \placeholder{A} modifies \placeholder{M} and \placeholder{B} takes its value, if there is a -\tcode{memory_order_seq_cst} fence \placeholder{X} such that \placeholder{A} is sequenced before +\tcode{memory_order::seq_cst} fence \placeholder{X} such that \placeholder{A} is sequenced before \placeholder{X} and \placeholder{B} follows \placeholder{X} in \placeholder{S}, then \placeholder{B} observes either the effects of \placeholder{A} or a later modification of \placeholder{M} in its modification order. @@ -400,7 +400,7 @@ \pnum For atomic operations \placeholder{A} and \placeholder{B} on an atomic object \placeholder{M}, where \placeholder{A} modifies \placeholder{M} and \placeholder{B} takes its value, if there are -\tcode{memory_order_seq_cst} fences \placeholder{X} and \placeholder{Y} such that \placeholder{A} is +\tcode{memory_order::seq_cst} fences \placeholder{X} and \placeholder{Y} such that \placeholder{A} is sequenced before \placeholder{X}, \placeholder{Y} is sequenced before \placeholder{B}, and \placeholder{X} precedes \placeholder{Y} in \placeholder{S}, then \placeholder{B} observes either the effects of \placeholder{A} or a later modification of \placeholder{M} in its modification order. @@ -410,21 +410,21 @@ \placeholder{B} occurs later than \placeholder{A} in the modification order of \placeholder{M} if: \begin{itemize} -\item there is a \tcode{memory_order_seq_cst} fence \placeholder{X} such that \placeholder{A} +\item there is a \tcode{memory_order::seq_cst} fence \placeholder{X} such that \placeholder{A} is sequenced before \placeholder{X}, and \placeholder{X} precedes \placeholder{B} in \placeholder{S}, or -\item there is a \tcode{memory_order_seq_cst} fence \placeholder{Y} such that \placeholder{Y} +\item there is a \tcode{memory_order::seq_cst} fence \placeholder{Y} such that \placeholder{Y} is sequenced before \placeholder{B}, and \placeholder{A} precedes \placeholder{Y} in \placeholder{S}, or -\item there are \tcode{memory_order_seq_cst} fences \placeholder{X} and \placeholder{Y} such that \placeholder{A} +\item there are \tcode{memory_order::seq_cst} fences \placeholder{X} and \placeholder{Y} such that \placeholder{A} is sequenced before \placeholder{X}, \placeholder{Y} is sequenced before \placeholder{B}, and \placeholder{X} precedes \placeholder{Y} in \placeholder{S}. \end{itemize} \pnum -\begin{note} \tcode{memory_order_seq_cst} ensures sequential consistency only for a -program that is free of data races and uses exclusively \tcode{memory_order_seq_cst} +\begin{note} \tcode{memory_order::seq_cst} ensures sequential consistency only for a +program that is free of data races and uses exclusively \tcode{memory_order::seq_cst} operations. Any use of weaker ordering will invalidate this guarantee unless extreme -care is used. In particular, \tcode{memory_order_seq_cst} fences ensure a total order +care is used. In particular, \tcode{memory_order::seq_cst} fences ensure a total order only for the fences themselves. Fences cannot, in general, be used to restore sequential consistency for atomic operations with weaker ordering specifications. \end{note} @@ -436,14 +436,14 @@ \begin{codeblock} // Thread 1: -r1 = y.load(memory_order_relaxed); -x.store(r1, memory_order_relaxed); +r1 = y.load(memory_order::relaxed); +x.store(r1, memory_order::relaxed); \end{codeblock} \begin{codeblock} // Thread 2: -r2 = x.load(memory_order_relaxed); -y.store(r2, memory_order_relaxed); +r2 = x.load(memory_order::relaxed); +y.store(r2, memory_order::relaxed); \end{codeblock} should not produce \tcode{r1 == r2 == 42}, since the store of 42 to \tcode{y} is only @@ -458,14 +458,14 @@ \begin{codeblock} // Thread 1: -r1 = x.load(memory_order_relaxed); -if (r1 == 42) y.store(42, memory_order_relaxed); +r1 = x.load(memory_order::relaxed); +if (r1 == 42) y.store(42, memory_order::relaxed); \end{codeblock} \begin{codeblock} // Thread 2: -r2 = y.load(memory_order_relaxed); -if (r2 == 42) x.store(42, memory_order_relaxed); +r2 = y.load(memory_order::relaxed); +if (r2 == 42) x.store(42, memory_order::relaxed); \end{codeblock} \end{note} @@ -557,22 +557,22 @@ static constexpr bool is_always_lock_free = @\impdefx{whether a given \tcode{atomic} type's operations are always lock free}@; bool is_lock_free() const volatile noexcept; bool is_lock_free() const noexcept; - void store(T, memory_order = memory_order_seq_cst) volatile noexcept; - void store(T, memory_order = memory_order_seq_cst) noexcept; - T load(memory_order = memory_order_seq_cst) const volatile noexcept; - T load(memory_order = memory_order_seq_cst) const noexcept; + void store(T, memory_order = memory_order::seq_cst) volatile noexcept; + void store(T, memory_order = memory_order::seq_cst) noexcept; + T load(memory_order = memory_order::seq_cst) const volatile noexcept; + T load(memory_order = memory_order::seq_cst) const noexcept; operator T() const volatile noexcept; operator T() const noexcept; - T exchange(T, memory_order = memory_order_seq_cst) volatile noexcept; - T exchange(T, memory_order = memory_order_seq_cst) noexcept; + T exchange(T, memory_order = memory_order::seq_cst) volatile noexcept; + T exchange(T, memory_order = memory_order::seq_cst) noexcept; bool compare_exchange_weak(T&, T, memory_order, memory_order) volatile noexcept; bool compare_exchange_weak(T&, T, memory_order, memory_order) noexcept; bool compare_exchange_strong(T&, T, memory_order, memory_order) volatile noexcept; bool compare_exchange_strong(T&, T, memory_order, memory_order) noexcept; - bool compare_exchange_weak(T&, T, memory_order = memory_order_seq_cst) volatile noexcept; - bool compare_exchange_weak(T&, T, memory_order = memory_order_seq_cst) noexcept; - bool compare_exchange_strong(T&, T, memory_order = memory_order_seq_cst) volatile noexcept; - bool compare_exchange_strong(T&, T, memory_order = memory_order_seq_cst) noexcept; + bool compare_exchange_weak(T&, T, memory_order = memory_order::seq_cst) volatile noexcept; + bool compare_exchange_weak(T&, T, memory_order = memory_order::seq_cst) noexcept; + bool compare_exchange_strong(T&, T, memory_order = memory_order::seq_cst) volatile noexcept; + bool compare_exchange_strong(T&, T, memory_order = memory_order::seq_cst) noexcept; atomic() noexcept = default; constexpr atomic(T) noexcept; @@ -637,7 +637,7 @@ \begin{note} It is possible to have an access to an atomic object \tcode{A} race with its construction, for example by communicating the address of the just-constructed object \tcode{A} to another thread via -\tcode{memory_order_relaxed} operations on a suitable atomic pointer +\tcode{memory_order::relaxed} operations on a suitable atomic pointer variable, and then immediately accessing \tcode{A} in the receiving thread. This results in undefined behavior. \end{note} \end{itemdescr} @@ -703,14 +703,14 @@ \indexlibrarymember{store}{atomic}% \indexlibrarymember{store}{atomic<\placeholder{integral}>}% \begin{itemdecl} -void store(T desired, memory_order order = memory_order_seq_cst) volatile noexcept; -void store(T desired, memory_order order = memory_order_seq_cst) noexcept; +void store(T desired, memory_order order = memory_order::seq_cst) volatile noexcept; +void store(T desired, memory_order order = memory_order::seq_cst) noexcept; \end{itemdecl} \begin{itemdescr} \pnum -\requires The \tcode{order} argument shall not be \tcode{memory_order_consume}, -\tcode{memory_order_acquire}, nor \tcode{memory_order_acq_rel}. +\requires The \tcode{order} argument shall not be \tcode{memory_order::consume}, +\tcode{memory_order::acquire}, nor \tcode{memory_order::acq_rel}. \pnum \effects Atomically replaces the value pointed to by \tcode{this} @@ -740,13 +740,13 @@ \indexlibrarymember{load}{atomic}% \indexlibrarymember{load}{atomic<\placeholder{integral}>}% \begin{itemdecl} -T load(memory_order order = memory_order_seq_cst) const volatile noexcept; -T load(memory_order order = memory_order_seq_cst) const noexcept; +T load(memory_order order = memory_order::seq_cst) const volatile noexcept; +T load(memory_order order = memory_order::seq_cst) const noexcept; \end{itemdecl} \begin{itemdescr} \pnum -\requires The \tcode{order} argument shall not be \tcode{memory_order_release} nor \tcode{memory_order_acq_rel}. +\requires The \tcode{order} argument shall not be \tcode{memory_order::release} nor \tcode{memory_order::acq_rel}. \pnum \effects Memory is affected according to the value of \tcode{order}. @@ -775,8 +775,8 @@ \indexlibrarymember{exchange}{atomic}% \indexlibrarymember{exchange}{atomic<\placeholder{integral}>}% \begin{itemdecl} -T exchange(T desired, memory_order order = memory_order_seq_cst) volatile noexcept; -T exchange(T desired, memory_order order = memory_order_seq_cst) noexcept; +T exchange(T desired, memory_order order = memory_order::seq_cst) volatile noexcept; +T exchange(T desired, memory_order order = memory_order::seq_cst) noexcept; \end{itemdecl} \begin{itemdescr} @@ -810,19 +810,19 @@ bool compare_exchange_strong(T& expected, T desired, memory_order success, memory_order failure) noexcept; bool compare_exchange_weak(T& expected, T desired, - memory_order order = memory_order_seq_cst) volatile noexcept; + memory_order order = memory_order::seq_cst) volatile noexcept; bool compare_exchange_weak(T& expected, T desired, - memory_order order = memory_order_seq_cst) noexcept; + memory_order order = memory_order::seq_cst) noexcept; bool compare_exchange_strong(T& expected, T desired, - memory_order order = memory_order_seq_cst) volatile noexcept; + memory_order order = memory_order::seq_cst) volatile noexcept; bool compare_exchange_strong(T& expected, T desired, - memory_order order = memory_order_seq_cst) noexcept; + memory_order order = memory_order::seq_cst) noexcept; \end{itemdecl} \begin{itemdescr} \pnum -\requires The \tcode{failure} argument shall not be \tcode{memory_order_release} nor -\tcode{memory_order_acq_rel}. +\requires The \tcode{failure} argument shall not be \tcode{memory_order::release} nor +\tcode{memory_order::acq_rel}. \pnum \effects Retrieves the value in \tcode{expected}. It then atomically @@ -834,10 +834,10 @@ value of \tcode{success}, and if the comparison is false, memory is affected according to the value of \tcode{failure}. When only one \tcode{memory_order} argument is supplied, the value of \tcode{success} is \tcode{order}, and the value of -\tcode{failure} is \tcode{order} except that a value of \tcode{memory_order_acq_rel} -shall be replaced by the value \tcode{memory_order_acquire} and a value of -\tcode{memory_order_release} shall be replaced by the value -\tcode{memory_order_relaxed}. +\tcode{failure} is \tcode{order} except that a value of \tcode{memory_order::acq_rel} +shall be replaced by the value \tcode{memory_order::acquire} and a value of +\tcode{memory_order::release} shall be replaced by the value +\tcode{memory_order::relaxed}. If and only if the comparison is false then, after the atomic operation, the contents of the memory in \tcode{expected} are replaced by the value read from the memory pointed to by \tcode{this} during the atomic comparison. @@ -946,14 +946,14 @@ static constexpr bool is_always_lock_free = @\impdefx{whether a given \tcode{atomic} type's operations are always lock free}@; bool is_lock_free() const volatile noexcept; bool is_lock_free() const noexcept; - void store(@\placeholdernc{integral}@, memory_order = memory_order_seq_cst) volatile noexcept; - void store(@\placeholdernc{integral}@, memory_order = memory_order_seq_cst) noexcept; - @\placeholdernc{integral}@ load(memory_order = memory_order_seq_cst) const volatile noexcept; - @\placeholdernc{integral}@ load(memory_order = memory_order_seq_cst) const noexcept; + void store(@\placeholdernc{integral}@, memory_order = memory_order::seq_cst) volatile noexcept; + void store(@\placeholdernc{integral}@, memory_order = memory_order::seq_cst) noexcept; + @\placeholdernc{integral}@ load(memory_order = memory_order::seq_cst) const volatile noexcept; + @\placeholdernc{integral}@ load(memory_order = memory_order::seq_cst) const noexcept; operator @\placeholdernc{integral}@() const volatile noexcept; operator @\placeholdernc{integral}@() const noexcept; - @\placeholdernc{integral}@ exchange(@\placeholdernc{integral}@, memory_order = memory_order_seq_cst) volatile noexcept; - @\placeholdernc{integral}@ exchange(@\placeholdernc{integral}@, memory_order = memory_order_seq_cst) noexcept; + @\placeholdernc{integral}@ exchange(@\placeholdernc{integral}@, memory_order = memory_order::seq_cst) volatile noexcept; + @\placeholdernc{integral}@ exchange(@\placeholdernc{integral}@, memory_order = memory_order::seq_cst) noexcept; bool compare_exchange_weak(@\placeholder{integral}@&, @\placeholdernc{integral}@, memory_order, memory_order) volatile noexcept; bool compare_exchange_weak(@\placeholder{integral}@&, @\placeholdernc{integral}@, @@ -963,23 +963,23 @@ bool compare_exchange_strong(@\placeholder{integral}@&, @\placeholdernc{integral}@, memory_order, memory_order) noexcept; bool compare_exchange_weak(@\placeholder{integral}@&, @\placeholdernc{integral}@, - memory_order = memory_order_seq_cst) volatile noexcept; + memory_order = memory_order::seq_cst) volatile noexcept; bool compare_exchange_weak(@\placeholder{integral}@&, @\placeholdernc{integral}@, - memory_order = memory_order_seq_cst) noexcept; + memory_order = memory_order::seq_cst) noexcept; bool compare_exchange_strong(@\placeholder{integral}@&, @\placeholdernc{integral}@, - memory_order = memory_order_seq_cst) volatile noexcept; + memory_order = memory_order::seq_cst) volatile noexcept; bool compare_exchange_strong(@\placeholder{integral}@&, @\placeholdernc{integral}@, - memory_order = memory_order_seq_cst) noexcept; - @\placeholdernc{integral}@ fetch_add(@\placeholdernc{integral}@, memory_order = memory_order_seq_cst) volatile noexcept; - @\placeholdernc{integral}@ fetch_add(@\placeholdernc{integral}@, memory_order = memory_order_seq_cst) noexcept; - @\placeholdernc{integral}@ fetch_sub(@\placeholdernc{integral}@, memory_order = memory_order_seq_cst) volatile noexcept; - @\placeholdernc{integral}@ fetch_sub(@\placeholdernc{integral}@, memory_order = memory_order_seq_cst) noexcept; - @\placeholdernc{integral}@ fetch_and(@\placeholdernc{integral}@, memory_order = memory_order_seq_cst) volatile noexcept; - @\placeholdernc{integral}@ fetch_and(@\placeholdernc{integral}@, memory_order = memory_order_seq_cst) noexcept; - @\placeholdernc{integral}@ fetch_or(@\placeholdernc{integral}@, memory_order = memory_order_seq_cst) volatile noexcept; - @\placeholdernc{integral}@ fetch_or(@\placeholdernc{integral}@, memory_order = memory_order_seq_cst) noexcept; - @\placeholdernc{integral}@ fetch_xor(@\placeholdernc{integral}@, memory_order = memory_order_seq_cst) volatile noexcept; - @\placeholdernc{integral}@ fetch_xor(@\placeholdernc{integral}@, memory_order = memory_order_seq_cst) noexcept; + memory_order = memory_order::seq_cst) noexcept; + @\placeholdernc{integral}@ fetch_add(@\placeholdernc{integral}@, memory_order = memory_order::seq_cst) volatile noexcept; + @\placeholdernc{integral}@ fetch_add(@\placeholdernc{integral}@, memory_order = memory_order::seq_cst) noexcept; + @\placeholdernc{integral}@ fetch_sub(@\placeholdernc{integral}@, memory_order = memory_order::seq_cst) volatile noexcept; + @\placeholdernc{integral}@ fetch_sub(@\placeholdernc{integral}@, memory_order = memory_order::seq_cst) noexcept; + @\placeholdernc{integral}@ fetch_and(@\placeholdernc{integral}@, memory_order = memory_order::seq_cst) volatile noexcept; + @\placeholdernc{integral}@ fetch_and(@\placeholdernc{integral}@, memory_order = memory_order::seq_cst) noexcept; + @\placeholdernc{integral}@ fetch_or(@\placeholdernc{integral}@, memory_order = memory_order::seq_cst) volatile noexcept; + @\placeholdernc{integral}@ fetch_or(@\placeholdernc{integral}@, memory_order = memory_order::seq_cst) noexcept; + @\placeholdernc{integral}@ fetch_xor(@\placeholdernc{integral}@, memory_order = memory_order::seq_cst) volatile noexcept; + @\placeholdernc{integral}@ fetch_xor(@\placeholdernc{integral}@, memory_order = memory_order::seq_cst) noexcept; atomic() noexcept = default; constexpr atomic(@\placeholdernc{integral}@) noexcept; @@ -1065,8 +1065,8 @@ \indexlibrarymember{fetch_sub}{atomic<\placeholder{integral}>}% \indexlibrarymember{fetch_xor}{atomic<\placeholder{integral}>}% \begin{itemdecl} -T fetch_@\placeholdernc{key}@(T operand, memory_order order = memory_order_seq_cst) volatile noexcept; -T fetch_@\placeholdernc{key}@(T operand, memory_order order = memory_order_seq_cst) noexcept; +T fetch_@\placeholdernc{key}@(T operand, memory_order order = memory_order::seq_cst) volatile noexcept; +T fetch_@\placeholdernc{key}@(T operand, memory_order order = memory_order::seq_cst) noexcept; \end{itemdecl} \begin{itemdescr} @@ -1114,26 +1114,26 @@ static constexpr bool is_always_lock_free = @\impdefx{whether a given \tcode{atomic} type's operations are always lock free}@; bool is_lock_free() const volatile noexcept; bool is_lock_free() const noexcept; - void store(T*, memory_order = memory_order_seq_cst) volatile noexcept; - void store(T*, memory_order = memory_order_seq_cst) noexcept; - T* load(memory_order = memory_order_seq_cst) const volatile noexcept; - T* load(memory_order = memory_order_seq_cst) const noexcept; + void store(T*, memory_order = memory_order::seq_cst) volatile noexcept; + void store(T*, memory_order = memory_order::seq_cst) noexcept; + T* load(memory_order = memory_order::seq_cst) const volatile noexcept; + T* load(memory_order = memory_order::seq_cst) const noexcept; operator T*() const volatile noexcept; operator T*() const noexcept; - T* exchange(T*, memory_order = memory_order_seq_cst) volatile noexcept; - T* exchange(T*, memory_order = memory_order_seq_cst) noexcept; + T* exchange(T*, memory_order = memory_order::seq_cst) volatile noexcept; + T* exchange(T*, memory_order = memory_order::seq_cst) noexcept; bool compare_exchange_weak(T*&, T*, memory_order, memory_order) volatile noexcept; bool compare_exchange_weak(T*&, T*, memory_order, memory_order) noexcept; bool compare_exchange_strong(T*&, T*, memory_order, memory_order) volatile noexcept; bool compare_exchange_strong(T*&, T*, memory_order, memory_order) noexcept; - bool compare_exchange_weak(T*&, T*, memory_order = memory_order_seq_cst) volatile noexcept; - bool compare_exchange_weak(T*&, T*, memory_order = memory_order_seq_cst) noexcept; - bool compare_exchange_strong(T*&, T*, memory_order = memory_order_seq_cst) volatile noexcept; - bool compare_exchange_strong(T*&, T*, memory_order = memory_order_seq_cst) noexcept; - T* fetch_add(ptrdiff_t, memory_order = memory_order_seq_cst) volatile noexcept; - T* fetch_add(ptrdiff_t, memory_order = memory_order_seq_cst) noexcept; - T* fetch_sub(ptrdiff_t, memory_order = memory_order_seq_cst) volatile noexcept; - T* fetch_sub(ptrdiff_t, memory_order = memory_order_seq_cst) noexcept; + bool compare_exchange_weak(T*&, T*, memory_order = memory_order::seq_cst) volatile noexcept; + bool compare_exchange_weak(T*&, T*, memory_order = memory_order::seq_cst) noexcept; + bool compare_exchange_strong(T*&, T*, memory_order = memory_order::seq_cst) volatile noexcept; + bool compare_exchange_strong(T*&, T*, memory_order = memory_order::seq_cst) noexcept; + T* fetch_add(ptrdiff_t, memory_order = memory_order::seq_cst) volatile noexcept; + T* fetch_add(ptrdiff_t, memory_order = memory_order::seq_cst) noexcept; + T* fetch_sub(ptrdiff_t, memory_order = memory_order::seq_cst) volatile noexcept; + T* fetch_sub(ptrdiff_t, memory_order = memory_order::seq_cst) noexcept; atomic() noexcept = default; constexpr atomic(T*) noexcept; @@ -1196,8 +1196,8 @@ \indexlibrarymember{fetch_add}{atomic}% \indexlibrarymember{fetch_sub}{atomic}% \begin{itemdecl} -T* fetch_@\placeholdernc{key}@(ptrdiff_t operand, memory_order order = memory_order_seq_cst) volatile noexcept; -T* fetch_@\placeholdernc{key}@(ptrdiff_t operand, memory_order order = memory_order_seq_cst) noexcept; +T* fetch_@\placeholdernc{key}@(ptrdiff_t operand, memory_order order = memory_order::seq_cst) volatile noexcept; +T* fetch_@\placeholdernc{key}@(ptrdiff_t operand, memory_order order = memory_order::seq_cst) noexcept; \end{itemdecl} \begin{itemdescr} @@ -1326,10 +1326,10 @@ \begin{codeblock} namespace std { struct atomic_flag { - bool test_and_set(memory_order = memory_order_seq_cst) volatile noexcept; - bool test_and_set(memory_order = memory_order_seq_cst) noexcept; - void clear(memory_order = memory_order_seq_cst) volatile noexcept; - void clear(memory_order = memory_order_seq_cst) noexcept; + bool test_and_set(memory_order = memory_order::seq_cst) volatile noexcept; + bool test_and_set(memory_order = memory_order::seq_cst) noexcept; + void clear(memory_order = memory_order::seq_cst) volatile noexcept; + void clear(memory_order = memory_order::seq_cst) noexcept; atomic_flag() noexcept = default; atomic_flag(const atomic_flag&) = delete; @@ -1380,8 +1380,8 @@ bool atomic_flag_test_and_set(atomic_flag* object) noexcept; bool atomic_flag_test_and_set_explicit(volatile atomic_flag* object, memory_order order) noexcept; bool atomic_flag_test_and_set_explicit(atomic_flag* object, memory_order order) noexcept; -bool atomic_flag::test_and_set(memory_order order = memory_order_seq_cst) volatile noexcept; -bool atomic_flag::test_and_set(memory_order order = memory_order_seq_cst) noexcept; +bool atomic_flag::test_and_set(memory_order order = memory_order::seq_cst) volatile noexcept; +bool atomic_flag::test_and_set(memory_order order = memory_order::seq_cst) noexcept; \end{itemdecl} \begin{itemdescr} @@ -1401,14 +1401,14 @@ void atomic_flag_clear(atomic_flag* object) noexcept; void atomic_flag_clear_explicit(volatile atomic_flag* object, memory_order order) noexcept; void atomic_flag_clear_explicit(atomic_flag* object, memory_order order) noexcept; -void atomic_flag::clear(memory_order order = memory_order_seq_cst) volatile noexcept; -void atomic_flag::clear(memory_order order = memory_order_seq_cst) noexcept; +void atomic_flag::clear(memory_order order = memory_order::seq_cst) volatile noexcept; +void atomic_flag::clear(memory_order order = memory_order::seq_cst) noexcept; \end{itemdecl} \begin{itemdescr} \pnum -\requires The \tcode{order} argument shall not be \tcode{memory_order_consume}, -\tcode{memory_order_acquire}, nor \tcode{memory_order_acq_rel}. +\requires The \tcode{order} argument shall not be \tcode{memory_order::consume}, +\tcode{memory_order::acquire}, nor \tcode{memory_order::acq_rel}. \pnum \effects Atomically sets the value pointed to by \tcode{object} or by \tcode{this} to @@ -1456,17 +1456,17 @@ \effects Depending on the value of \tcode{order}, this operation: \begin{itemize} -\item has no effects, if \tcode{order == memory_order_relaxed}; +\item has no effects, if \tcode{order == memory_order::relaxed}; -\item is an acquire fence, if \tcode{order == memory_order_acquire || order == -memory_order_consume}; +\item is an acquire fence, if \tcode{order == memory_order::acquire || order == +memory_order::consume}; -\item is a release fence, if \tcode{order == memory_order_release}; +\item is a release fence, if \tcode{order == memory_order::release}; \item is both an acquire fence and a release fence, if \tcode{order == -memory_order_acq_rel}; +memory_order::acq_rel}; -\item is a sequentially consistent acquire and release fence, if \tcode{order == memory_order_seq_cst}. +\item is a sequentially consistent acquire and release fence, if \tcode{order == memory_order::seq_cst}. \end{itemize} \end{itemdescr} diff --git a/source/basic.tex b/source/basic.tex index 4429d71e79..4e9b6d70b8 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -4902,7 +4902,7 @@ except for the special case for signal handlers described below. Any such data race results in undefined behavior. \begin{note} It can be shown that programs that correctly use mutexes -and \tcode{memory_order_seq_cst} operations to prevent all data races and use no +and \tcode{memory_order::seq_cst} operations to prevent all data races and use no other synchronization operations behave as if the operations executed by their constituent threads were simply interleaved, with each \indextext{value computation}% diff --git a/source/declarations.tex b/source/declarations.tex index 6585daa7d9..fc59ba4855 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -3894,7 +3894,7 @@ int foo_array[10][10]; [[carries_dependency]] struct foo* f(int i) { - return foo_head[i].load(memory_order_consume); + return foo_head[i].load(memory_order::consume); } int g(int* x, int* y [[carries_dependency]]) { diff --git a/source/utilities.tex b/source/utilities.tex index 2a8f63c3da..900638b203 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -10590,7 +10590,7 @@ \requires \tcode{p} shall not be null. \pnum -\returns \tcode{atomic_load_explicit(p, memory_order_seq_cst)}. +\returns \tcode{atomic_load_explicit(p, memory_order::seq_cst)}. \pnum \throws Nothing. @@ -10607,7 +10607,7 @@ \requires \tcode{p} shall not be null. \pnum -\requires \tcode{mo} shall not be \tcode{memory_order_release} or \tcode{memory_order_acq_rel}. +\requires \tcode{mo} shall not be \tcode{memory_order::release} or \tcode{memory_order::acq_rel}. \pnum \returns \tcode{*p}. @@ -10627,7 +10627,7 @@ \requires \tcode{p} shall not be null. \pnum -\effects As if by \tcode{atomic_store_explicit(p, r, memory_order_seq_cst)}. +\effects As if by \tcode{atomic_store_explicit(p, r, memory_order::seq_cst)}. \pnum \throws Nothing. @@ -10644,7 +10644,7 @@ \requires \tcode{p} shall not be null. \pnum -\requires \tcode{mo} shall not be \tcode{memory_order_acquire} or \tcode{memory_order_acq_rel}. +\requires \tcode{mo} shall not be \tcode{memory_order::acquire} or \tcode{memory_order::acq_rel}. \pnum \effects As if by \tcode{p->swap(r)}. @@ -10664,7 +10664,7 @@ \requires \tcode{p} shall not be null. \pnum -\returns \tcode{atomic_exchange_explicit(p, r, memory_order_seq_cst)}. +\returns \tcode{atomic_exchange_explicit(p, r, memory_order::seq_cst)}. \pnum \throws Nothing. @@ -10703,7 +10703,7 @@ \pnum \returns \begin{codeblock} -atomic_compare_exchange_weak_explicit(p, v, w, memory_order_seq_cst, memory_order_seq_cst) +atomic_compare_exchange_weak_explicit(p, v, w, memory_order::seq_cst, memory_order::seq_cst) \end{codeblock} \pnum @@ -10720,7 +10720,7 @@ \pnum \returns \begin{codeblock} -atomic_compare_exchange_strong_explicit(p, v, w, memory_order_seq_cst, memory_order_seq_cst) +atomic_compare_exchange_strong_explicit(p, v, w, memory_order::seq_cst, memory_order::seq_cst) \end{codeblock} \end{itemdescr} @@ -10740,8 +10740,8 @@ \begin{itemdescr} \pnum \requires \tcode{p} shall not be null and \tcode{v} shall not be null. -The \tcode{failure} argument shall not be \tcode{memory_order_release} nor -\tcode{memory_order_acq_rel}. +The \tcode{failure} argument shall not be \tcode{memory_order::release} nor +\tcode{memory_order::acq_rel}. \pnum \effects If \tcode{*p} is equivalent to \tcode{*v}, assigns \tcode{w} to From 038c961ad51823fe400bfe0cfaeb9897095e7f06 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Mon, 13 Nov 2017 00:04:03 -0800 Subject: [PATCH 092/168] [atomics.order] Index the memory_order enumeration and its enumerators. --- source/atomics.tex | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/source/atomics.tex b/source/atomics.tex index 2e0984466f..e3a1f7ce75 100644 --- a/source/atomics.tex +++ b/source/atomics.tex @@ -306,6 +306,19 @@ are defined, respectively. \rSec1[atomics.order]{Order and consistency} +\indexlibrary{memory_order}% +\indexlibrarymember{relaxed}{memory_order}% +\indexlibrarymember{consume}{memory_order}% +\indexlibrarymember{acquire}{memory_order}% +\indexlibrarymember{release}{memory_order}% +\indexlibrarymember{acq_rel}{memory_order}% +\indexlibrarymember{seq_cst}{memory_order}% +\indexlibrary{memory_order_relaxed}% +\indexlibrary{memory_order_consume}% +\indexlibrary{memory_order_acquire}% +\indexlibrary{memory_order_release}% +\indexlibrary{memory_order_acq_rel}% +\indexlibrary{memory_order_seq_cst}% \begin{codeblock} namespace std { From ae6e901d672544fe9ee82f229525f4f9b348b0d4 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Mon, 13 Nov 2017 00:16:15 -0800 Subject: [PATCH 093/168] [atomic] Fix overfull hboxes from memory_order cleanup. --- source/atomics.tex | 22 ++++++++++++---------- source/utilities.tex | 6 ++++-- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/source/atomics.tex b/source/atomics.tex index e3a1f7ce75..ddb0e14b28 100644 --- a/source/atomics.tex +++ b/source/atomics.tex @@ -980,9 +980,9 @@ bool compare_exchange_weak(@\placeholder{integral}@&, @\placeholdernc{integral}@, memory_order = memory_order::seq_cst) noexcept; bool compare_exchange_strong(@\placeholder{integral}@&, @\placeholdernc{integral}@, - memory_order = memory_order::seq_cst) volatile noexcept; + memory_order = memory_order::seq_cst) volatile noexcept; bool compare_exchange_strong(@\placeholder{integral}@&, @\placeholdernc{integral}@, - memory_order = memory_order::seq_cst) noexcept; + memory_order = memory_order::seq_cst) noexcept; @\placeholdernc{integral}@ fetch_add(@\placeholdernc{integral}@, memory_order = memory_order::seq_cst) volatile noexcept; @\placeholdernc{integral}@ fetch_add(@\placeholdernc{integral}@, memory_order = memory_order::seq_cst) noexcept; @\placeholdernc{integral}@ fetch_sub(@\placeholdernc{integral}@, memory_order = memory_order::seq_cst) volatile noexcept; @@ -1139,10 +1139,14 @@ bool compare_exchange_weak(T*&, T*, memory_order, memory_order) noexcept; bool compare_exchange_strong(T*&, T*, memory_order, memory_order) volatile noexcept; bool compare_exchange_strong(T*&, T*, memory_order, memory_order) noexcept; - bool compare_exchange_weak(T*&, T*, memory_order = memory_order::seq_cst) volatile noexcept; - bool compare_exchange_weak(T*&, T*, memory_order = memory_order::seq_cst) noexcept; - bool compare_exchange_strong(T*&, T*, memory_order = memory_order::seq_cst) volatile noexcept; - bool compare_exchange_strong(T*&, T*, memory_order = memory_order::seq_cst) noexcept; + bool compare_exchange_weak(T*&, T*, + memory_order = memory_order::seq_cst) volatile noexcept; + bool compare_exchange_weak(T*&, T*, + memory_order = memory_order::seq_cst) noexcept; + bool compare_exchange_strong(T*&, T*, + memory_order = memory_order::seq_cst) volatile noexcept; + bool compare_exchange_strong(T*&, T*, + memory_order = memory_order::seq_cst) noexcept; T* fetch_add(ptrdiff_t, memory_order = memory_order::seq_cst) volatile noexcept; T* fetch_add(ptrdiff_t, memory_order = memory_order::seq_cst) noexcept; T* fetch_sub(ptrdiff_t, memory_order = memory_order::seq_cst) volatile noexcept; @@ -1471,13 +1475,11 @@ \begin{itemize} \item has no effects, if \tcode{order == memory_order::relaxed}; -\item is an acquire fence, if \tcode{order == memory_order::acquire || order == -memory_order::consume}; +\item is an acquire fence, if \tcode{order == memory_order::acquire} or \tcode{order == memory_order::consume}; \item is a release fence, if \tcode{order == memory_order::release}; -\item is both an acquire fence and a release fence, if \tcode{order == -memory_order::acq_rel}; +\item is both an acquire fence and a release fence, if \tcode{order == memory_order::acq_rel}; \item is a sequentially consistent acquire and release fence, if \tcode{order == memory_order::seq_cst}. \end{itemize} diff --git a/source/utilities.tex b/source/utilities.tex index 900638b203..96c72ba3a2 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -10703,7 +10703,8 @@ \pnum \returns \begin{codeblock} -atomic_compare_exchange_weak_explicit(p, v, w, memory_order::seq_cst, memory_order::seq_cst) +atomic_compare_exchange_weak_explicit(p, v, w, memory_order::seq_cst, + memory_order::seq_cst) \end{codeblock} \pnum @@ -10720,7 +10721,8 @@ \pnum \returns \begin{codeblock} -atomic_compare_exchange_strong_explicit(p, v, w, memory_order::seq_cst, memory_order::seq_cst) +atomic_compare_exchange_strong_explicit(p, v, w, memory_order::seq_cst, + memory_order::seq_cst) \end{codeblock} \end{itemdescr} From 26b248e0e58dfb2cde9a202529e70975bb0eb051 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Wed, 15 Nov 2017 15:57:23 -0800 Subject: [PATCH 094/168] P0053R7 Synchronized Buffered Ostream --- source/iostreams.tex | 598 +++++++++++++++++++++++++++++++++++++++++++ source/lib-intro.tex | 26 +- source/macros.tex | 3 + 3 files changed, 614 insertions(+), 13 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex index 9100b1afa4..a04bdc487f 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -31,6 +31,7 @@ & & \tcode{} \\ \rowsep \ref{string.streams} & String streams & \tcode{} \\ \rowsep \ref{file.streams} & File streams & \tcode{} \\ \rowsep +\ref{syncstream} & Synchronized output streams & \tcode{} \\ \rowsep \ref{filesystems} & File systems & \tcode{} \\ \rowsep \ref{c.files} & C library files & \tcode{} \\ & & \tcode{} \\ @@ -133,6 +134,8 @@ \indexlibrary{\idxcode{basic_fstream}}% \indexlibrary{\idxcode{basic_istreambuf_iterator}}% \indexlibrary{\idxcode{basic_ostreambuf_iterator}}% +\indexlibrary{\idxcode{basic_syncbuf}}% +\indexlibrary{\idxcode{basic_osyncstream}}% \indexlibrary{\idxcode{ios}}% \indexlibrary{\idxcode{streambuf}}% \indexlibrary{\idxcode{istream}}% @@ -156,6 +159,10 @@ \indexlibrary{\idxcode{wifstream}}% \indexlibrary{\idxcode{wofstream}}% \indexlibrary{\idxcode{wfstream}}% +\indexlibrary{\idxcode{syncbuf}}% +\indexlibrary{\idxcode{wsyncbuf}}% +\indexlibrary{\idxcode{osyncstream}}% +\indexlibrary{\idxcode{wosyncstream}}% \begin{codeblock} namespace std { template class char_traits; @@ -199,6 +206,13 @@ template > class basic_fstream; + template , + class Allocator = allocator> + class basic_syncbuf; + template , + class Allocator = allocator> + class basic_osyncstream; + template > class istreambuf_iterator; template > @@ -222,6 +236,9 @@ using ofstream = basic_ofstream; using fstream = basic_fstream; + using syncbuf = basic_syncbuf; + using osyncstream = basic_osyncstream; + using wstreambuf = basic_streambuf; using wistream = basic_istream; using wostream = basic_ostream; @@ -237,6 +254,9 @@ using wofstream = basic_ofstream; using wfstream = basic_fstream; + using wsyncbuf = basic_syncbuf; + using wosyncstream = basic_osyncstream; + template class fpos; using streampos = fpos::state_type>; using wstreampos = fpos::state_type>; @@ -9930,6 +9950,584 @@ \tcode{ios_base::failure})\iref{iostate.flags}. \end{itemdescr} +\rSec1[syncstream]{Synchronized output streams} + +\rSec2[syncstream.syn]{Header \tcode{} synopsis} +\indextext{\idxhdr{}}% +\indexlibrary{\idxhdr{}}% + +\indexlibrary{\idxcode{syncbuf}}% +\indexlibrary{\idxcode{wsyncbuf}}% +\indexlibrary{\idxcode{osyncstream}}% +\indexlibrary{\idxcode{wosyncstream}}% +\begin{codeblock} +namespace std { + template + class basic_syncbuf; + + using syncbuf = basic_syncbuf; + using wsyncbuf = basic_syncbuf; + + template + class basic_osyncstream; + + using osyncstream = basic_osyncstream; + using wosyncstream = basic_osyncstream; +} +\end{codeblock} + +\pnum +The header \tcode{} provides a mechanism +to synchronize execution agents writing to the same stream. +It defines class templates \tcode{basic_osyncstream} and \tcode{basic_syncbuf}. +The latter buffers output and transfer the buffered content +into an object of type \tcode{basic_streambuf} +atomically with respect to such transfers +by other \tcode{basic_syncbuf} objects +referring to the same \tcode{basic_streambuf} object. +The transfer occurs when \tcode{emit()} is called +and when the \tcode{basic_syncbuf} object is destroyed. + +\rSec2[syncstream.syncbuf]{Class template \tcode{basic_syncbuf}} + +\rSec3[syncstream.syncbuf.overview]{Overview} + +\indexlibrary{\idxcode{basic_syncbuf}}% +\begin{codeblock} +namespace std { + template + class basic_syncbuf : public basic_streambuf { + public: + using char_type = charT; + using int_type = typename traits::int_type; + using pos_type = typename traits::pos_type; + using off_type = typename traits::off_type; + using traits_type = traits; + using allocator_type = Allocator; + + using streambuf_type = basic_streambuf; + + // \ref{syncstream.syncbuf.cons}, construction and destruction + explicit basic_syncbuf(streambuf_type* obuf = nullptr) + : basic_syncbuf(obuf, Allocator()) {} + basic_syncbuf(streambuf_type*, const Allocator&); + basic_syncbuf(basic_syncbuf&&); + ~basic_syncbuf(); + + // \ref{syncstream.syncbuf.assign}, assignment and swap + basic_syncbuf& operator=(basic_syncbuf&&); + void swap(basic_syncbuf&); + + // \ref{syncstream.syncbuf.members}, member functions + bool emit(); + streambuf_type* get_wrapped() const noexcept; + allocator_type get_allocator() const noexcept; + void set_emit_on_sync(bool) noexcept; + + protected: + // \ref{syncstream.syncbuf.virtuals}, overridden virtual functions + int sync() override; + + private: + streambuf_type* wrapped; // \expos + bool emit_on_sync{}; // \expos + }; + + // \ref{syncstream.syncbuf.special}, specialized algorithms + template + void swap(basic_syncbuf&, + basic_syncbuf&); +} +\end{codeblock} + +\rSec3[syncstream.syncbuf.cons]{Construction and destruction} + +\indexlibrary{\idxcode{basic_syncbuf}!constructor}% +\begin{itemdecl} +basic_syncbuf(streambuf_type* obuf, const Allocator& allocator); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Constructs the \tcode{basic_syncbuf} object and +sets \tcode{wrapped} to \tcode{obuf} +which will be the final destination of associated output. + +\pnum +\remarks +A copy of \tcode{allocator} is used +to allocate memory for internal buffers +holding the associated output. + +\pnum +\throws +Nothing unless constructing a mutex or allocating memory throws. + +\pnum +\postconditions +\tcode{get_wrapped() == obuf \&\& get_allocator() == allocator}. +\end{itemdescr} + +\indexlibrary{\idxcode{basic_syncbuf}!constructor}% +\begin{itemdecl} +basic_syncbuf(basic_syncbuf&& other); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Move constructs from \tcode{other} (Table~\ref{tab:moveconstructible}). + +\pnum +\postconditions +The value returned by \tcode{this->get_wrapped()} +is the value returned by \tcode{other.get_wrapped()} +prior to calling this constructor. +Output stored in \tcode{other} +prior to calling this constructor +will be stored in \tcode{*this} afterwards. +\tcode{other.rdbuf()->pbase() == other.rdbuf()->pptr()} +and +\tcode{other.get_wrapped() == nullptr}. + +\pnum +\remarks +This constructor disassociates \tcode{other} +from its wrapped stream buffer, +ensuring destruction of \tcode{other} produces no output. +\end{itemdescr} + +\indexlibrary{\idxcode{basic_syncbuf}!destructor}% +\begin{itemdecl} +~basic_syncbuf(); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Calls \tcode{emit()}. + +\pnum +\throws +Nothing. If an exception is thrown from \tcode{emit()}, +that exception is caught and ignored. +\end{itemdescr} + +\rSec3[syncstream.syncbuf.assign]{Assignment and swap} + +\indexlibrarymember{operator=}{basic_syncbuf}% +\begin{itemdecl} +basic_syncbuf& operator=(basic_syncbuf&& rhs) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Calls \tcode{emit()} then +move assigns from \tcode{rhs}. +After the move assignment \tcode{*this} +has the observable state it would have had if +it had been move constructed from \tcode{rhs}\iref{syncstream.syncbuf.cons}. + +\pnum +\returns +\tcode{*this}. + +\pnum +\postconditions +\begin{itemize} +\item +\tcode{rhs.get_wrapped() == nullptr}. +\item +\tcode{this->get_allocator() == rhs.get_allocator()} when +\begin{codeblock} +allocator_traits::propagate_on_container_move_assignment::value +\end{codeblock} +is \tcode{true}; otherwise, the allocator is unchanged. +\end{itemize} + +\pnum +\remarks +This assignment operator disassociates \tcode{rhs} +from its wrapped stream buffer, +ensuring destruction of \tcode{rhs} produces no output. +\end{itemdescr} + +\indexlibrarymember{swap}{basic_syncbuf}% +\begin{itemdecl} +void swap(basic_syncbuf& other) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires +\tcode{allocator_traits::propagate_on_container_swap::value} +or \tcode{this->get_allocator() == other.get_allocator()}. + +\pnum +\effects +Exchanges the state of \tcode{*this} and \tcode{other}. +\end{itemdescr} + +\rSec3[syncstream.syncbuf.members]{Member functions} + +\indexlibrarymember{emit}{basic_syncbuf}% +\begin{itemdecl} +bool emit(); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Atomically transfers the contents of the internal buffer +to the stream buffer \tcode{*wrapped}, +so that they appear in the output stream +as a contiguous sequence of characters. +If and only if a call was made to \tcode{sync()} +since the last call of \tcode{emit()}, +\tcode{wrapped->pubsync()} is called. + +\pnum +\returns +\tcode{true} if all of the following conditions hold; +otherwise \tcode{false}: +\begin{itemize} +\item \tcode{wrapped != nullptr}. +\item All of the characters in the associated output were successfully transferred. +\item The call to \tcode{wrapped->pubsync()} (if any) succeeded. +\end{itemize} + +\pnum +\postconditions +On success the associated output is empty. + +\pnum +\sync +All \tcode{emit()} calls transferring characters +to the same stream buffer object +appear to execute in a total order +consistent with the ``happens before'' relation\iref{intro.races}, +where each \tcode{emit()} call +synchronizes with +subsequent \tcode{emit()} calls in that total order. + +\pnum +\remarks +May call member functions of \tcode{wrapped} +while holding a lock uniquely associated with \tcode{wrapped}. +\end{itemdescr} + +\indexlibrarymember{get_wrapped}{basic_syncbuf}% +\begin{itemdecl} +streambuf_type* get_wrapped() const noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{wrapped}. +\end{itemdescr} + +\indexlibrarymember{get_allocator}{basic_syncbuf}% +\begin{itemdecl} +allocator_type get_allocator() const noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +A copy of the allocator set in the constructor or from assignment. +\end{itemdescr} + +\indexlibrarymember{set_emit_on_sync}{basic_syncbuf}% +\begin{itemdecl} +void set_emit_on_sync(bool b) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +\tcode{emit_on_sync = b}. +\end{itemdescr} + +\rSec3[syncstream.syncbuf.virtuals]{Overridden virtual functions} + +\indexlibrarymember{sync}{basic_syncbuf}% +\begin{itemdecl} +int sync() override; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Record that the wrapped stream buffer is to be flushed. +Then, if \tcode{emit_on_sync == true}, calls \tcode{emit()}. +\begin{note} +If \tcode{emit_on_sync == false}, +the actual flush is delayed until a call to \tcode{emit()}. +\end{note} + +\pnum +\returns +If \tcode{emit()} was called and returned \tcode{false}, +returns \tcode{-1}; otherwise \tcode{0}. +\end{itemdescr} + +\rSec3[syncstream.syncbuf.special]{Specialized algorithms} + +\indexlibrarymember{swap}{basic_syncbuf}% +\begin{itemdecl} +template + void swap(basic_syncbuf& a, + basic_syncbuf& b) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Equivalent to \tcode{a.swap(b)}. +\end{itemdescr} + +\rSec2[syncstream.osyncstream]{Class template \tcode{basic_osyncstream}} + +\rSec3[syncstream.osyncstream.overview]{Overview} + +\indexlibrary{\idxcode{basic_osyncstream}}% +\begin{codeblock} +namespace std { + template + class basic_osyncstream : public basic_ostream { + public: + using char_type = charT; + using int_type = typename traits::int_type; + using pos_type = typename traits::pos_type; + using off_type = typename traits::off_type; + using traits_type = traits; + + using allocator_type = Allocator; + using streambuf_type = basic_streambuf; + using syncbuf_type = basic_syncbuf; + + // \ref{syncstream.osyncstream.cons}, construction and destruction + basic_osyncstream(streambuf_type*, const Allocator&); + explicit basic_osyncstream(streambuf_type* obuf) + : basic_osyncstream(obuf, Allocator()) {} + basic_osyncstream(basic_ostream& os, const Allocator& allocator) + : basic_osyncstream(os.rdbuf(), allocator) {} + explicit basic_osyncstream(basic_ostream& os) + : basic_osyncstream(os, Allocator()) {} + basic_osyncstream(basic_osyncstream&&) noexcept; + ~basic_osyncstream(); + + // \ref{syncstream.osyncstream.assign}, assignment + basic_osyncstream& operator=(basic_osyncstream&&) noexcept; + + // \ref{syncstream.osyncstream.members}, member functions + void emit(); + streambuf_type* get_wrapped() const noexcept; + syncbuf_type* rdbuf() const noexcept { return &sb ; } + + private: + syncbuf_type sb; // \expos + }; +} +\end{codeblock} + +\pnum +\tcode{Allocator} shall meet the allocator requirements\iref{allocator.requirements}. + +\pnum +\begin{example} +A named variable can be used within a block statement for streaming. +\begin{codeblock} +{ + osyncstream bout(cout); + bout << "Hello, "; + bout << "World!"; + bout << endl; // flush is noted + bout << "and more!\n"; +} // characters are transferred and \tcode{cout} is flushed +\end{codeblock} +\end{example} + +\pnum +\begin{example} +A temporary object can be used for streaming within a single statement. +\begin{codeblock} +osyncstream(cout) << "Hello, " << "World!" << '\n'; +\end{codeblock} +In this example, \tcode{cout} is not flushed. +\end{example} + +\rSec3[syncstream.osyncstream.cons]{Construction and destruction} + +\indexlibrary{\idxcode{basic_osyncstream}!constructor}% +\begin{itemdecl} +basic_osyncstream(streambuf_type* buf, const Allocator& allocator); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Initializes \tcode{sb} from \tcode{buf} and \tcode{allocator} and +initializes the base class with \tcode{basic_ostream(\&sb)}. + +\pnum +\begin{note} +If the wrapped stream buffer pointer +refers to a user provided stream buffer +then its implementation must be aware that its member functions +might be called from \tcode{emit()} while a lock is held. +\end{note} + +\pnum +\postconditions +\tcode{get_wrapped() == buf}. +\end{itemdescr} + +\indexlibrary{\idxcode{basic_osyncstream}!constructor}% +\begin{itemdecl} +basic_osyncstream(basic_osyncstream&& other) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Move constructs from \tcode{other}. +This is accomplished by move constructing the base class, +and the contained \tcode{basic_syncbuf} \tcode{sb}. +Next \tcode{basic_ostream::set_rdbuf(\&sb)} +is called to install the \tcode{basic_syncbuf} \tcode{sb}. + +\pnum +\postconditions +The value returned by \tcode{get_wrapped()} +is the value returned by \tcode{os.get_wrapped()} +prior to calling this constructor. +\tcode{nullptr == other.get_wrapped()}. +\end{itemdescr} + +\indexlibrary{\idxcode{basic_osyncstream}!destructor}% +\begin{itemdecl} +~basic_osyncstream(); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Calls \tcode{emit()}. +If an exception is thrown from \tcode{emit()}, +that exception is caught and ignored. +\end{itemdescr} + +\rSec3[syncstream.osyncstream.assign]{Assignment} + +\indexlibrarymember{operator=}{basic_osyncstream}% +\begin{itemdecl} +basic_osyncstream& operator=(basic_osyncstream&& rhs) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +First, calls \tcode{emit()}. +If an exception is thrown from \tcode{emit()}, +that exception is caught and ignored. +Move assigns \tcode{sb} from \tcode{rhs.sb}. +\begin{note} +This disassociates \tcode{rhs} +from its wrapped stream buffer +ensuring destruction of \tcode{rhs} produces no output. +\end{note} + +\pnum +\postconditions +\tcode{nullptr == rhs.get_wrapped()}. +\tcode{get_wrapped()} returns the value +previously returned by \tcode{rhs.get_wrapped()}. +\end{itemdescr} + +\rSec3[syncstream.osyncstream.members]{Member functions} + +\indexlibrarymember{set_emit_on_sync}{basic_osyncstream}% +\begin{itemdecl} +void emit(); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Calls \tcode{sb.emit()}. +If this call returns \tcode{false}, +calls \tcode{setstate(ios::badbit)}. + +\pnum +\begin{example} +A flush on a \tcode{basic_osyncstream} does not flush immediately: +\begin{codeblock} +{ + osyncstream bout(cout); + bout << "Hello," << '\n'; // no flush + bout.emit(); // characters transferred; \tcode{cout} not flushed + bout << "World!" << endl; // flush noted; \tcode{cout} not flushed + bout.emit(); // characters transferred; \tcode{cout} flushed + bout << "Greetings." << '\n'; // no flush +} // characters transferred; \tcode{cout} not flushed +\end{codeblock} +\end{example} + +\pnum +\begin{example} +The function \tcode{emit()} can be used to +handle exceptions from operations on the underlying stream. +\begin{codeblock} +{ + osyncstream bout(cout); + bout << "Hello, " << "World!" << '\n'; + try { + bout.emit(); + } catch (...) { + // handle exception + } +} +\end{codeblock} +\end{example} +\end{itemdescr} + +\indexlibrarymember{set_emit_on_sync}{basic_osyncstream}% +\begin{itemdecl} +streambuf_type* get_wrapped() const noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{sb.get_wrapped()}. + +\pnum +\begin{example} +Obtaining the wrapped stream buffer with \tcode{get_wrapped()} +allows wrapping it again with an \tcode{osyncstream}. +For example, +\begin{codeblock} +{ + osyncstream bout1(cout); + bout1 << "Hello, "; + { + osyncstream(bout1.get_wrapped()) << "Goodbye, " << "Planet!" << '\n'; + } + bout1 << "World!" << '\n'; +} +\end{codeblock} +produces the \textit{uninterleaved} output +\begin{outputblock} +Goodbye, Planet! +Hello, World! +\end{outputblock} +\end{example} +\end{itemdescr} + \rSec1[filesystems]{File systems} \rSec2[fs.general]{General} diff --git a/source/lib-intro.tex b/source/lib-intro.tex index e1f1c8482f..2ec72e6527 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -1064,67 +1064,67 @@ \tcode{} & \tcode{} & \tcode{} & -\tcode{} \\ +\tcode{} \\ \tcode{} & \tcode{} & \tcode{} & -\tcode{} \\ +\tcode{} \\ \tcode{} & \tcode{} & \tcode{} & -\tcode{} \\ +\tcode{} \\ \tcode{} & \tcode{} & \tcode{} & -\tcode{} \\ +\tcode{} \\ \tcode{} & \tcode{} & \tcode{} & -\tcode{} \\ +\tcode{} \\ \tcode{} & \tcode{} & \tcode{} & -\tcode{} \\ +\tcode{} \\ \tcode{} & \tcode{} & \tcode{} & -\tcode{} \\ +\tcode{} \\ \tcode{} & \tcode{} & \tcode{} & -\tcode{} \\ +\tcode{} \\ \tcode{} & \tcode{} & \tcode{} & -\tcode{} \\ +\tcode{} \\ \tcode{} & \tcode{} & \tcode{} & -\tcode{} \\ +\tcode{} \\ \tcode{} & \tcode{} & \tcode{} & -\tcode{} \\ +\tcode{} \\ \tcode{} & \tcode{} & \tcode{} & -\tcode{} \\ +\tcode{} \\ \tcode{} & \tcode{} & \tcode{} & -\\ +\tcode{} \\ \end{floattable} diff --git a/source/macros.tex b/source/macros.tex index 4c5721781e..a6e6707a0d 100644 --- a/source/macros.tex +++ b/source/macros.tex @@ -359,6 +359,9 @@ \lstnewenvironment{codeblock}{\CodeBlockSetup}{} +% An environment for command / program output that is not C++ code. +\lstnewenvironment{outputblock}{\lstset{language=}}{} + % A code block in which single-quotes are digit separators % rather than character literals. \lstnewenvironment{codeblockdigitsep}{ From fdead52d5febef111778a51e90adff5f24b990c8 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Mon, 20 Nov 2017 15:38:53 -0800 Subject: [PATCH 095/168] [syncstream] Editorial cleanups throughout the wording. --- source/iostreams.tex | 95 ++++++++++++++++++++++++-------------------- 1 file changed, 52 insertions(+), 43 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex index a04bdc487f..3b88948f63 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -9979,14 +9979,6 @@ \pnum The header \tcode{} provides a mechanism to synchronize execution agents writing to the same stream. -It defines class templates \tcode{basic_osyncstream} and \tcode{basic_syncbuf}. -The latter buffers output and transfer the buffered content -into an object of type \tcode{basic_streambuf} -atomically with respect to such transfers -by other \tcode{basic_syncbuf} objects -referring to the same \tcode{basic_streambuf} object. -The transfer occurs when \tcode{emit()} is called -and when the \tcode{basic_syncbuf} object is destroyed. \rSec2[syncstream.syncbuf]{Class template \tcode{basic_syncbuf}} @@ -10040,6 +10032,18 @@ } \end{codeblock} +\pnum +Class template \tcode{basic_syncbuf} stores character data +written to it, known as the associated output, into internal +buffers allocated using the object's allocator. +The associated output is transferred to the +wrapped stream buffer object \tcode{*wrapped} +when \tcode{emit()} is called +or when the \tcode{basic_syncbuf} object is destroyed. +Such transfers are atomic with respect to transfers +by other \tcode{basic_syncbuf} objects +with the same wrapped stream buffer object. + \rSec3[syncstream.syncbuf.cons]{Construction and destruction} \indexlibrary{\idxcode{basic_syncbuf}!constructor}% @@ -10051,8 +10055,7 @@ \pnum \effects Constructs the \tcode{basic_syncbuf} object and -sets \tcode{wrapped} to \tcode{obuf} -which will be the final destination of associated output. +sets \tcode{wrapped} to \tcode{obuf}. \pnum \remarks @@ -10062,11 +10065,14 @@ \pnum \throws -Nothing unless constructing a mutex or allocating memory throws. +Nothing unless an exception is thrown +by the construction of a mutex or +by memory allocation. \pnum \postconditions -\tcode{get_wrapped() == obuf \&\& get_allocator() == allocator}. +\tcode{get_wrapped() == obuf} and +\tcode{get_allocator() == allocator} are \tcode{true}. \end{itemdescr} \indexlibrary{\idxcode{basic_syncbuf}!constructor}% @@ -10089,7 +10095,8 @@ will be stored in \tcode{*this} afterwards. \tcode{other.rdbuf()->pbase() == other.rdbuf()->pptr()} and -\tcode{other.get_wrapped() == nullptr}. +\tcode{other.get_wrapped() == nullptr} +are \tcode{true}. \pnum \remarks @@ -10110,8 +10117,9 @@ \pnum \throws -Nothing. If an exception is thrown from \tcode{emit()}, -that exception is caught and ignored. +Nothing. +If an exception is thrown from \tcode{emit()}, +the destructor catches and ignores that exception. \end{itemdescr} \rSec3[syncstream.syncbuf.assign]{Assignment and swap} @@ -10138,9 +10146,9 @@ \postconditions \begin{itemize} \item -\tcode{rhs.get_wrapped() == nullptr}. +\tcode{rhs.get_wrapped() == nullptr} is \tcode{true}. \item -\tcode{this->get_allocator() == rhs.get_allocator()} when +\tcode{this->get_allocator() == rhs.get_allocator()} is \tcode{true} when \begin{codeblock} allocator_traits::propagate_on_container_move_assignment::value \end{codeblock} @@ -10162,8 +10170,12 @@ \begin{itemdescr} \pnum \requires +Either \tcode{allocator_traits::propagate_on_container_swap::value} -or \tcode{this->get_allocator() == other.get_allocator()}. +is \tcode{true} +or +\tcode{this->get_allocator() == other.get_allocator()} +is \tcode{true}. \pnum \effects @@ -10180,27 +10192,27 @@ \begin{itemdescr} \pnum \effects -Atomically transfers the contents of the internal buffer +Atomically transfers the associated output of \tcode{*this} to the stream buffer \tcode{*wrapped}, -so that they appear in the output stream +so that it appears in the output stream as a contiguous sequence of characters. -If and only if a call was made to \tcode{sync()} -since the last call of \tcode{emit()}, -\tcode{wrapped->pubsync()} is called. +\tcode{wrapped->pubsync()} is called +if and only if a call was made to \tcode{sync()} +since the most recent call to \tcode{emit()}, if any. \pnum \returns \tcode{true} if all of the following conditions hold; otherwise \tcode{false}: \begin{itemize} -\item \tcode{wrapped != nullptr}. +\item \tcode{wrapped == nullptr} is \tcode{false}. \item All of the characters in the associated output were successfully transferred. \item The call to \tcode{wrapped->pubsync()} (if any) succeeded. \end{itemize} \pnum \postconditions -On success the associated output is empty. +On success, the associated output is empty. \pnum \sync @@ -10237,7 +10249,7 @@ \begin{itemdescr} \pnum \returns -A copy of the allocator set in the constructor or from assignment. +A copy of the allocator that was set in the constructor or assignment operator. \end{itemdescr} \indexlibrarymember{set_emit_on_sync}{basic_syncbuf}% @@ -10261,10 +10273,10 @@ \begin{itemdescr} \pnum \effects -Record that the wrapped stream buffer is to be flushed. -Then, if \tcode{emit_on_sync == true}, calls \tcode{emit()}. +Records that the wrapped stream buffer is to be flushed. +Then, if \tcode{emit_on_sync} is \tcode{true}, calls \tcode{emit()}. \begin{note} -If \tcode{emit_on_sync == false}, +If \tcode{emit_on_sync} is \tcode{false}, the actual flush is delayed until a call to \tcode{emit()}. \end{note} @@ -10370,20 +10382,19 @@ \begin{itemdescr} \pnum \effects -Initializes \tcode{sb} from \tcode{buf} and \tcode{allocator} and -initializes the base class with \tcode{basic_ostream(\&sb)}. +Initializes \tcode{sb} from \tcode{buf} and \tcode{allocator}. +Initializes the base class with \tcode{basic_ostream(\&sb)}. \pnum \begin{note} -If the wrapped stream buffer pointer -refers to a user provided stream buffer -then its implementation must be aware that its member functions +The member functions of the provided stream buffer might be called from \tcode{emit()} while a lock is held. +Care should be taken to ensure that this does not result in deadlock. \end{note} \pnum \postconditions -\tcode{get_wrapped() == buf}. +\tcode{get_wrapped() == buf} is \tcode{true}. \end{itemdescr} \indexlibrary{\idxcode{basic_osyncstream}!constructor}% @@ -10394,18 +10405,16 @@ \begin{itemdescr} \pnum \effects -Move constructs from \tcode{other}. -This is accomplished by move constructing the base class, -and the contained \tcode{basic_syncbuf} \tcode{sb}. -Next \tcode{basic_ostream::set_rdbuf(\&sb)} -is called to install the \tcode{basic_syncbuf} \tcode{sb}. +Move constructs the base class +and \tcode{sb} from the corresponding subobjects of \tcode{other}, +and calls \tcode{basic_ostream::set_rdbuf(\&sb)}. \pnum \postconditions The value returned by \tcode{get_wrapped()} is the value returned by \tcode{os.get_wrapped()} prior to calling this constructor. -\tcode{nullptr == other.get_wrapped()}. +\tcode{nullptr == other.get_wrapped()} is \tcode{true}. \end{itemdescr} \indexlibrary{\idxcode{basic_osyncstream}!destructor}% @@ -10443,7 +10452,7 @@ \pnum \postconditions -\tcode{nullptr == rhs.get_wrapped()}. +\tcode{nullptr == rhs.get_wrapped()} is \tcode{true}. \tcode{get_wrapped()} returns the value previously returned by \tcode{rhs.get_wrapped()}. \end{itemdescr} @@ -10459,7 +10468,7 @@ \pnum \effects Calls \tcode{sb.emit()}. -If this call returns \tcode{false}, +If that call returns \tcode{false}, calls \tcode{setstate(ios::badbit)}. \pnum From d2db3c121fef4639735b2fae2661d6bb20aefe27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Wed, 15 Nov 2017 01:43:52 +0000 Subject: [PATCH 096/168] P0653R2 Utility to convert a pointer to a raw pointer The requested addition to [pointer.traits.function] has been moved into a new subclause "Pointer traits optional members" and modified slightly to fit this new presentation. Added a reference to this new section from the new std::to_address. --- source/utilities.tex | 60 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/source/utilities.tex b/source/utilities.tex index 96c72ba3a2..e52f16b9ba 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -6492,6 +6492,12 @@ template struct pointer_traits; template struct pointer_traits; + // \ref{pointer.conversion}, pointer conversion + template + auto to_address(const Ptr& p) noexcept; + template + constexpr T* to_address(T* p) noexcept; + // \ref{util.dynamic.safety}, pointer safety enum class pointer_safety { relaxed, preferred, strict }; void declare_reachable(void* p); @@ -6903,6 +6909,60 @@ function. The second member function returns \tcode{addressof(r)}. \end{itemdescr} +\rSec3[pointer.traits.optmem]{Pointer traits optional members} + +\pnum +Specializations of \tcode{pointer_traits} may define the member declared +in this subclause to customize the behavior of the standard library. + +\indexlibrarymember{to_address}{pointer_traits}% +\begin{itemdecl} +static element_type* to_address(pointer p) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +A pointer of type \tcode{element_type*} that references +the same location as the argument \tcode{p}. + +\pnum +\begin{note} +This function should be the inverse of \tcode{pointer_to}. +If defined, it customizes the behavior of +the non-member function +\tcode{to_address}\iref{pointer.conversion}. +\end{note} +\end{itemdescr} + +\rSec2[pointer.conversion]{Pointer conversion} + +\indexlibrary{\idxcode{to_address}}% +\begin{itemdecl} +template auto to_address(const Ptr& p) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\tcode{pointer_traits::to_address(p)} if that expression is well-formed +(see \ref{pointer.traits.optmem}), +otherwise \tcode{to_address(p.operator->())}. +\end{itemdescr} + +\indexlibrary{\idxcode{to_address}}% +\begin{itemdecl} +template constexpr T* to_address(T* p) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires \tcode{T} is not a function type. Otherwise the program is ill-formed. + +\pnum +\returns \tcode{p}. +\end{itemdescr} + \rSec2[util.dynamic.safety]{Pointer safety} \pnum From 56ca63a5d9fd3074c326cadb0613caf436de6f14 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 17:46:41 -0800 Subject: [PATCH 097/168] P0202R3 Add constexpr modifiers to functions in and Headers --- source/algorithms.tex | 605 +++++++++++++++++++++--------------------- source/utilities.tex | 5 +- 2 files changed, 312 insertions(+), 298 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index f7020b8008..c2f528ffc6 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -33,55 +33,55 @@ // \ref{alg.nonmodifying}, non-modifying sequence operations // \ref{alg.all_of}, all of template - bool all_of(InputIterator first, InputIterator last, Predicate pred); + constexpr bool all_of(InputIterator first, InputIterator last, Predicate pred); template bool all_of(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Predicate pred); // \ref{alg.any_of}, any of template - bool any_of(InputIterator first, InputIterator last, Predicate pred); + constexpr bool any_of(InputIterator first, InputIterator last, Predicate pred); template bool any_of(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Predicate pred); // \ref{alg.none_of}, none of template - bool none_of(InputIterator first, InputIterator last, Predicate pred); + constexpr bool none_of(InputIterator first, InputIterator last, Predicate pred); template bool none_of(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Predicate pred); // \ref{alg.foreach}, for each template - Function for_each(InputIterator first, InputIterator last, Function f); + constexpr Function for_each(InputIterator first, InputIterator last, Function f); template void for_each(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Function f); template - InputIterator for_each_n(InputIterator first, Size n, Function f); + constexpr InputIterator for_each_n(InputIterator first, Size n, Function f); template ForwardIterator for_each_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, Size n, Function f); // \ref{alg.find}, find template - InputIterator find(InputIterator first, InputIterator last, - const T& value); + constexpr InputIterator find(InputIterator first, InputIterator last, + const T& value); template ForwardIterator find(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, const T& value); template - InputIterator find_if(InputIterator first, InputIterator last, - Predicate pred); + constexpr InputIterator find_if(InputIterator first, InputIterator last, + Predicate pred); template ForwardIterator find_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Predicate pred); template - InputIterator find_if_not(InputIterator first, InputIterator last, - Predicate pred); + constexpr InputIterator find_if_not(InputIterator first, InputIterator last, + Predicate pred); template ForwardIterator find_if_not(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, @@ -89,11 +89,11 @@ // \ref{alg.find.end}, find end template - ForwardIterator1 + constexpr ForwardIterator1 find_end(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2); template - ForwardIterator1 + constexpr ForwardIterator1 find_end(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate pred); @@ -112,11 +112,11 @@ // \ref{alg.find.first.of}, find first template - InputIterator + constexpr InputIterator find_first_of(InputIterator first1, InputIterator last1, ForwardIterator first2, ForwardIterator last2); template - InputIterator + constexpr InputIterator find_first_of(InputIterator first1, InputIterator last1, ForwardIterator first2, ForwardIterator last2, BinaryPredicate pred); @@ -135,12 +135,12 @@ // \ref{alg.adjacent.find}, adjacent find template - ForwardIterator adjacent_find(ForwardIterator first, - ForwardIterator last); + constexpr ForwardIterator adjacent_find(ForwardIterator first, + ForwardIterator last); template - ForwardIterator adjacent_find(ForwardIterator first, - ForwardIterator last, - BinaryPredicate pred); + constexpr ForwardIterator adjacent_find(ForwardIterator first, + ForwardIterator last, + BinaryPredicate pred); template ForwardIterator adjacent_find(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, @@ -153,14 +153,14 @@ // \ref{alg.count}, count template - typename iterator_traits::difference_type + constexpr typename iterator_traits::difference_type count(InputIterator first, InputIterator last, const T& value); template typename iterator_traits::difference_type count(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, const T& value); template - typename iterator_traits::difference_type + constexpr typename iterator_traits::difference_type count_if(InputIterator first, InputIterator last, Predicate pred); template typename iterator_traits::difference_type @@ -169,19 +169,19 @@ // \ref{mismatch}, mismatch template - pair + constexpr pair mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2); template - pair + constexpr pair mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, BinaryPredicate pred); template - pair + constexpr pair mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2); template - pair + constexpr pair mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, BinaryPredicate pred); @@ -211,18 +211,18 @@ // \ref{alg.equal}, equal template - bool equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2); + constexpr bool equal(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2); template - bool equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, BinaryPredicate pred); + constexpr bool equal(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, BinaryPredicate pred); template - bool equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2); + constexpr bool equal(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2); template - bool equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - BinaryPredicate pred); + constexpr bool equal(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + BinaryPredicate pred); template bool equal(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first1, ForwardIterator1 last1, @@ -245,28 +245,28 @@ // \ref{alg.is_permutation}, is permutation template - bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2); + constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2); template - bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, BinaryPredicate pred); + constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, BinaryPredicate pred); template - bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2); + constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2); template - bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - BinaryPredicate pred); + constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + BinaryPredicate pred); // \ref{alg.search}, search template - ForwardIterator1 search( + constexpr ForwardIterator1 search( ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2); template - ForwardIterator1 search( + constexpr ForwardIterator1 search( ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate pred); @@ -283,12 +283,12 @@ ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate pred); template - ForwardIterator search_n(ForwardIterator first, ForwardIterator last, - Size count, const T& value); + constexpr ForwardIterator search_n(ForwardIterator first, ForwardIterator last, + Size count, const T& value); template - ForwardIterator search_n(ForwardIterator first, ForwardIterator last, - Size count, const T& value, - BinaryPredicate pred); + constexpr ForwardIterator search_n(ForwardIterator first, ForwardIterator last, + Size count, const T& value, + BinaryPredicate pred); template ForwardIterator search_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, @@ -301,50 +301,50 @@ BinaryPredicate pred); template - ForwardIterator search(ForwardIterator first, ForwardIterator last, - const Searcher& searcher); + constexpr ForwardIterator search(ForwardIterator first, ForwardIterator last, + const Searcher& searcher); // \ref{alg.modifying.operations}, mutating sequence operations // \ref{alg.copy}, copy template - OutputIterator copy(InputIterator first, InputIterator last, - OutputIterator result); + constexpr OutputIterator copy(InputIterator first, InputIterator last, + OutputIterator result); template ForwardIterator2 copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first, ForwardIterator1 last, ForwardIterator2 result); template - OutputIterator copy_n(InputIterator first, Size n, - OutputIterator result); + constexpr OutputIterator copy_n(InputIterator first, Size n, + OutputIterator result); template ForwardIterator2 copy_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first, Size n, ForwardIterator2 result); template - OutputIterator copy_if(InputIterator first, InputIterator last, - OutputIterator result, Predicate pred); + constexpr OutputIterator copy_if(InputIterator first, InputIterator last, + OutputIterator result, Predicate pred); template ForwardIterator2 copy_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first, ForwardIterator1 last, ForwardIterator2 result, Predicate pred); template - BidirectionalIterator2 copy_backward( + constexpr BidirectionalIterator2 copy_backward( BidirectionalIterator1 first, BidirectionalIterator1 last, BidirectionalIterator2 result); // \ref{alg.move}, move template - OutputIterator move(InputIterator first, InputIterator last, - OutputIterator result); + constexpr OutputIterator move(InputIterator first, InputIterator last, + OutputIterator result); template ForwardIterator2 move(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first, ForwardIterator1 last, ForwardIterator2 result); template - BidirectionalIterator2 move_backward( + constexpr BidirectionalIterator2 move_backward( BidirectionalIterator1 first, BidirectionalIterator1 last, BidirectionalIterator2 result); @@ -361,13 +361,13 @@ // \ref{alg.transform}, transform template - OutputIterator transform(InputIterator first, InputIterator last, - OutputIterator result, UnaryOperation op); + constexpr OutputIterator transform(InputIterator first, InputIterator last, + OutputIterator result, UnaryOperation op); template - OutputIterator transform(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, OutputIterator result, - BinaryOperation binary_op); + constexpr OutputIterator transform(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, OutputIterator result, + BinaryOperation binary_op); template ForwardIterator2 transform(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} @@ -382,32 +382,32 @@ // \ref{alg.replace}, replace template - void replace(ForwardIterator first, ForwardIterator last, - const T& old_value, const T& new_value); + constexpr void replace(ForwardIterator first, ForwardIterator last, + const T& old_value, const T& new_value); template void replace(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, const T& old_value, const T& new_value); template - void replace_if(ForwardIterator first, ForwardIterator last, - Predicate pred, const T& new_value); + constexpr void replace_if(ForwardIterator first, ForwardIterator last, + Predicate pred, const T& new_value); template void replace_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Predicate pred, const T& new_value); template - OutputIterator replace_copy(InputIterator first, InputIterator last, - OutputIterator result, - const T& old_value, const T& new_value); + constexpr OutputIterator replace_copy(InputIterator first, InputIterator last, + OutputIterator result, + const T& old_value, const T& new_value); template ForwardIterator2 replace_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first, ForwardIterator1 last, ForwardIterator2 result, const T& old_value, const T& new_value); template - OutputIterator replace_copy_if(InputIterator first, InputIterator last, - OutputIterator result, - Predicate pred, const T& new_value); + constexpr OutputIterator replace_copy_if(InputIterator first, InputIterator last, + OutputIterator result, + Predicate pred, const T& new_value); template ForwardIterator2 replace_copy_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} @@ -417,13 +417,13 @@ // \ref{alg.fill}, fill template - void fill(ForwardIterator first, ForwardIterator last, const T& value); + constexpr void fill(ForwardIterator first, ForwardIterator last, const T& value); template void fill(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, const T& value); template - OutputIterator fill_n(OutputIterator first, Size n, const T& value); + constexpr OutputIterator fill_n(OutputIterator first, Size n, const T& value); template ForwardIterator fill_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} @@ -431,44 +431,44 @@ // \ref{alg.generate}, generate template - void generate(ForwardIterator first, ForwardIterator last, - Generator gen); + constexpr void generate(ForwardIterator first, ForwardIterator last, + Generator gen); template void generate(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Generator gen); template - OutputIterator generate_n(OutputIterator first, Size n, Generator gen); + constexpr OutputIterator generate_n(OutputIterator first, Size n, Generator gen); template ForwardIterator generate_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, Size n, Generator gen); // \ref{alg.remove}, remove template - ForwardIterator remove(ForwardIterator first, ForwardIterator last, - const T& value); + constexpr ForwardIterator remove(ForwardIterator first, ForwardIterator last, + const T& value); template ForwardIterator remove(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, const T& value); template - ForwardIterator remove_if(ForwardIterator first, ForwardIterator last, - Predicate pred); + constexpr ForwardIterator remove_if(ForwardIterator first, ForwardIterator last, + Predicate pred); template ForwardIterator remove_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Predicate pred); template - OutputIterator remove_copy(InputIterator first, InputIterator last, - OutputIterator result, const T& value); + constexpr OutputIterator remove_copy(InputIterator first, InputIterator last, + OutputIterator result, const T& value); template ForwardIterator2 remove_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first, ForwardIterator1 last, ForwardIterator2 result, const T& value); template - OutputIterator remove_copy_if(InputIterator first, InputIterator last, - OutputIterator result, Predicate pred); + constexpr OutputIterator remove_copy_if(InputIterator first, InputIterator last, + OutputIterator result, Predicate pred); template ForwardIterator2 remove_copy_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} @@ -477,10 +477,10 @@ // \ref{alg.unique}, unique template - ForwardIterator unique(ForwardIterator first, ForwardIterator last); + constexpr ForwardIterator unique(ForwardIterator first, ForwardIterator last); template - ForwardIterator unique(ForwardIterator first, ForwardIterator last, - BinaryPredicate pred); + constexpr ForwardIterator unique(ForwardIterator first, ForwardIterator last, + BinaryPredicate pred); template ForwardIterator unique(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last); @@ -489,11 +489,11 @@ ForwardIterator first, ForwardIterator last, BinaryPredicate pred); template - OutputIterator unique_copy(InputIterator first, InputIterator last, - OutputIterator result); + constexpr OutputIterator unique_copy(InputIterator first, InputIterator last, + OutputIterator result); template - OutputIterator unique_copy(InputIterator first, InputIterator last, - OutputIterator result, BinaryPredicate pred); + constexpr OutputIterator unique_copy(InputIterator first, InputIterator last, + OutputIterator result, BinaryPredicate pred); template ForwardIterator2 unique_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first, ForwardIterator1 last, @@ -511,9 +511,9 @@ void reverse(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} BidirectionalIterator first, BidirectionalIterator last); template - OutputIterator reverse_copy(BidirectionalIterator first, - BidirectionalIterator last, - OutputIterator result); + constexpr OutputIterator reverse_copy(BidirectionalIterator first, + BidirectionalIterator last, + OutputIterator result); template ForwardIterator reverse_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} BidirectionalIterator first, @@ -531,7 +531,7 @@ ForwardIterator middle, ForwardIterator last); template - OutputIterator rotate_copy( + constexpr OutputIterator rotate_copy( ForwardIterator first, ForwardIterator middle, ForwardIterator last, OutputIterator result); template @@ -555,7 +555,7 @@ // \ref{alg.partitions}, partitions template - bool is_partitioned(InputIterator first, InputIterator last, Predicate pred); + constexpr bool is_partitioned(InputIterator first, InputIterator last, Predicate pred); template bool is_partitioned(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Predicate pred); @@ -580,7 +580,7 @@ Predicate pred); template - pair + constexpr pair partition_copy(InputIterator first, InputIterator last, OutputIterator1 out_true, OutputIterator2 out_false, Predicate pred); @@ -592,9 +592,9 @@ ForwardIterator1 out_true, ForwardIterator2 out_false, Predicate pred); template - ForwardIterator partition_point(ForwardIterator first, - ForwardIterator last, - Predicate pred); + constexpr ForwardIterator partition_point(ForwardIterator first, + ForwardIterator last, + Predicate pred); // \ref{alg.sorting}, sorting and related operations // \ref{alg.sort}, sorting @@ -668,10 +668,10 @@ RandomAccessIterator result_last, Compare comp); template - bool is_sorted(ForwardIterator first, ForwardIterator last); + constexpr bool is_sorted(ForwardIterator first, ForwardIterator last); template - bool is_sorted(ForwardIterator first, ForwardIterator last, - Compare comp); + constexpr bool is_sorted(ForwardIterator first, ForwardIterator last, + Compare comp); template bool is_sorted(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last); @@ -680,10 +680,10 @@ ForwardIterator first, ForwardIterator last, Compare comp); template - ForwardIterator is_sorted_until(ForwardIterator first, ForwardIterator last); + constexpr ForwardIterator is_sorted_until(ForwardIterator first, ForwardIterator last); template - ForwardIterator is_sorted_until(ForwardIterator first, ForwardIterator last, - Compare comp); + constexpr ForwardIterator is_sorted_until(ForwardIterator first, ForwardIterator last, + Compare comp); template ForwardIterator is_sorted_until(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last); @@ -710,45 +710,45 @@ // \ref{alg.binary.search}, binary search template - ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, - const T& value); + constexpr ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, + const T& value); template - ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, - const T& value, Compare comp); + constexpr ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, + const T& value, Compare comp); template - ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last, - const T& value); + constexpr ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last, + const T& value); template - ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last, - const T& value, Compare comp); + constexpr ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last, + const T& value, Compare comp); template - pair + constexpr pair equal_range(ForwardIterator first, ForwardIterator last, const T& value); template - pair + constexpr pair equal_range(ForwardIterator first, ForwardIterator last, const T& value, Compare comp); template - bool binary_search(ForwardIterator first, ForwardIterator last, - const T& value); + constexpr bool binary_search(ForwardIterator first, ForwardIterator last, + const T& value); template - bool binary_search(ForwardIterator first, ForwardIterator last, - const T& value, Compare comp); + constexpr bool binary_search(ForwardIterator first, ForwardIterator last, + const T& value, Compare comp); // \ref{alg.merge}, merge template - OutputIterator merge(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result); + constexpr OutputIterator merge(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + OutputIterator result); template - OutputIterator merge(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result, Compare comp); + constexpr OutputIterator merge(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + OutputIterator result, Compare comp); template ForwardIterator merge(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} @@ -783,11 +783,11 @@ // \ref{alg.set.operations}, set operations template - bool includes(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2); + constexpr bool includes(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2); template - bool includes(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, Compare comp); + constexpr bool includes(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, Compare comp); template bool includes(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first1, ForwardIterator1 last1, @@ -799,13 +799,13 @@ ForwardIterator2 first2, ForwardIterator2 last2, Compare comp); template - OutputIterator set_union(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result); + constexpr OutputIterator set_union(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + OutputIterator result); template - OutputIterator set_union(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result, Compare comp); + constexpr OutputIterator set_union(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + OutputIterator result, Compare comp); template ForwardIterator set_union(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} @@ -820,12 +820,12 @@ ForwardIterator result, Compare comp); template - OutputIterator set_intersection( + constexpr OutputIterator set_intersection( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result); template - OutputIterator set_intersection( + constexpr OutputIterator set_intersection( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); @@ -845,12 +845,12 @@ ForwardIterator result, Compare comp); template - OutputIterator set_difference( + constexpr OutputIterator set_difference( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result); template - OutputIterator set_difference( + constexpr OutputIterator set_difference( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); @@ -870,12 +870,12 @@ ForwardIterator result, Compare comp); template - OutputIterator set_symmetric_difference( + constexpr OutputIterator set_symmetric_difference( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result); template - OutputIterator set_symmetric_difference( + constexpr OutputIterator set_symmetric_difference( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); @@ -920,9 +920,10 @@ Compare comp); template - bool is_heap(RandomAccessIterator first, RandomAccessIterator last); + constexpr bool is_heap(RandomAccessIterator first, RandomAccessIterator last); template - bool is_heap(RandomAccessIterator first, RandomAccessIterator last, Compare comp); + constexpr bool is_heap(RandomAccessIterator first, RandomAccessIterator last, + Compare comp); template bool is_heap(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} RandomAccessIterator first, RandomAccessIterator last); @@ -930,17 +931,21 @@ bool is_heap(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} RandomAccessIterator first, RandomAccessIterator last, Compare comp); template - RandomAccessIterator is_heap_until(RandomAccessIterator first, RandomAccessIterator last); + constexpr RandomAccessIterator + is_heap_until(RandomAccessIterator first,RandomAccessIterator last); template - RandomAccessIterator is_heap_until(RandomAccessIterator first, RandomAccessIterator last, - Compare comp); + constexpr RandomAccessIterator + is_heap_until(RandomAccessIterator first, RandomAccessIterator last, + Compare comp); template - RandomAccessIterator is_heap_until(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - RandomAccessIterator first, RandomAccessIterator last); + RandomAccessIterator + is_heap_until(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + RandomAccessIterator first, RandomAccessIterator last); template - RandomAccessIterator is_heap_until(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - RandomAccessIterator first, RandomAccessIterator last, - Compare comp); + RandomAccessIterator + is_heap_until(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + RandomAccessIterator first, RandomAccessIterator last, + Compare comp); // \ref{alg.min.max}, minimum and maximum template constexpr const T& min(const T& a, const T& b); @@ -1014,11 +1019,11 @@ // \ref{alg.lex.comparison}, lexicographical comparison template - bool lexicographical_compare( + constexpr bool lexicographical_compare( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2); template - bool lexicographical_compare( + constexpr bool lexicographical_compare( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, Compare comp); @@ -1521,7 +1526,7 @@ \indexlibrary{\idxcode{all_of}}% \begin{itemdecl} template - bool all_of(InputIterator first, InputIterator last, Predicate pred); + constexpr bool all_of(InputIterator first, InputIterator last, Predicate pred); template bool all_of(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Predicate pred); @@ -1542,7 +1547,7 @@ \indexlibrary{\idxcode{any_of}}% \begin{itemdecl} template - bool any_of(InputIterator first, InputIterator last, Predicate pred); + constexpr bool any_of(InputIterator first, InputIterator last, Predicate pred); template bool any_of(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Predicate pred); @@ -1563,7 +1568,7 @@ \indexlibrary{\idxcode{none_of}}% \begin{itemdecl} template - bool none_of(InputIterator first, InputIterator last, Predicate pred); + constexpr bool none_of(InputIterator first, InputIterator last, Predicate pred); template bool none_of(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Predicate pred); @@ -1584,7 +1589,7 @@ \indexlibrary{\idxcode{for_each}}% \begin{itemdecl} template - Function for_each(InputIterator first, InputIterator last, Function f); + constexpr Function for_each(InputIterator first, InputIterator last, Function f); \end{itemdecl} \begin{itemdescr} @@ -1666,7 +1671,7 @@ \indexlibrary{\idxcode{for_each_n}}% \begin{itemdecl} template - InputIterator for_each_n(InputIterator first, Size n, Function f); + constexpr InputIterator for_each_n(InputIterator first, Size n, Function f); \end{itemdecl} \begin{itemdescr} @@ -1742,22 +1747,22 @@ \indexlibrary{\idxcode{find_if_not}}% \begin{itemdecl} template - InputIterator find(InputIterator first, InputIterator last, - const T& value); + constexpr InputIterator find(InputIterator first, InputIterator last, + const T& value); template ForwardIterator find(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, const T& value); template - InputIterator find_if(InputIterator first, InputIterator last, - Predicate pred); + constexpr InputIterator find_if(InputIterator first, InputIterator last, + Predicate pred); template ForwardIterator find_if(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Predicate pred); template - InputIterator find_if_not(InputIterator first, InputIterator last, - Predicate pred); + constexpr InputIterator find_if_not(InputIterator first, InputIterator last, + Predicate pred); template ForwardIterator find_if_not(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Predicate pred); @@ -1787,7 +1792,7 @@ \indexlibrary{\idxcode{find_end}}% \begin{itemdecl} template - ForwardIterator1 + constexpr ForwardIterator1 find_end(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2); template @@ -1798,7 +1803,7 @@ template - ForwardIterator1 + constexpr ForwardIterator1 find_end(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate pred); @@ -1842,7 +1847,7 @@ \indexlibrary{\idxcode{find_first_of}}% \begin{itemdecl} template - InputIterator + constexpr InputIterator find_first_of(InputIterator first1, InputIterator last1, ForwardIterator first2, ForwardIterator last2); template @@ -1853,7 +1858,7 @@ template - InputIterator + constexpr InputIterator find_first_of(InputIterator first1, InputIterator last1, ForwardIterator first2, ForwardIterator last2, BinaryPredicate pred); @@ -1898,14 +1903,14 @@ \indexlibrary{\idxcode{adjacent_find}}% \begin{itemdecl} template - ForwardIterator adjacent_find(ForwardIterator first, ForwardIterator last); + constexpr ForwardIterator adjacent_find(ForwardIterator first, ForwardIterator last); template ForwardIterator adjacent_find(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last); template - ForwardIterator adjacent_find(ForwardIterator first, ForwardIterator last, - BinaryPredicate pred); + constexpr ForwardIterator adjacent_find(ForwardIterator first, ForwardIterator last, + BinaryPredicate pred); template ForwardIterator adjacent_find(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, @@ -1946,14 +1951,14 @@ \indexlibrary{\idxcode{count_if}}% \begin{itemdecl} template - typename iterator_traits::difference_type + constexpr typename iterator_traits::difference_type count(InputIterator first, InputIterator last, const T& value); template typename iterator_traits::difference_type count(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, const T& value); template - typename iterator_traits::difference_type + constexpr typename iterator_traits::difference_type count_if(InputIterator first, InputIterator last, Predicate pred); template typename iterator_traits::difference_type @@ -1982,7 +1987,7 @@ \indexlibrary{\idxcode{mismatch}}% \begin{itemdecl} template - pair + constexpr pair mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2); template @@ -1993,7 +1998,7 @@ template - pair + constexpr pair mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, BinaryPredicate pred); template - pair + constexpr pair mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2); template @@ -2015,7 +2020,7 @@ template - pair + constexpr pair mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, BinaryPredicate pred); @@ -2056,8 +2061,8 @@ \indexlibrary{\idxcode{equal}}% \begin{itemdecl} template - bool equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2); + constexpr bool equal(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2); template bool equal(ExecutionPolicy&& exec, ForwardIterator1 first1, ForwardIterator1 last1, @@ -2065,8 +2070,8 @@ template - bool equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, BinaryPredicate pred); + constexpr bool equal(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, BinaryPredicate pred); template bool equal(ExecutionPolicy&& exec, @@ -2074,8 +2079,8 @@ ForwardIterator2 first2, BinaryPredicate pred); template - bool equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2); + constexpr bool equal(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2); template bool equal(ExecutionPolicy&& exec, ForwardIterator1 first1, ForwardIterator1 last1, @@ -2083,9 +2088,9 @@ template - bool equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - BinaryPredicate pred); + constexpr bool equal(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + BinaryPredicate pred); template bool equal(ExecutionPolicy&& exec, @@ -2162,20 +2167,20 @@ \indexlibrary{\idxcode{is_permutation}}% \begin{itemdecl} template - bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2); + constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2); template - bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, BinaryPredicate pred); + class BinaryPredicate> + constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, BinaryPredicate pred); template - bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2); + constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2); template - bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - BinaryPredicate pred); + class BinaryPredicate> + constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + BinaryPredicate pred); \end{itemdecl} \begin{itemdescr} @@ -2211,7 +2216,7 @@ \indexlibrary{\idxcode{search}}% \begin{itemdecl} template - ForwardIterator1 + constexpr ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2); template @@ -2222,7 +2227,7 @@ template - ForwardIterator1 + constexpr ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate pred); @@ -2266,13 +2271,13 @@ \indexlibrary{\idxcode{search_n}}% \begin{itemdecl} template - ForwardIterator + constexpr ForwardIterator search_n(ForwardIterator first, ForwardIterator last, Size count, const T& value); template - ForwardIterator + constexpr ForwardIterator search_n(ForwardIterator first, ForwardIterator last, Size count, const T& value, BinaryPredicate pred); @@ -2325,8 +2330,8 @@ \indexlibrary{\idxcode{search}}% \begin{itemdecl} template - ForwardIterator search(ForwardIterator first, ForwardIterator last, - const Searcher& searcher); + constexpr ForwardIterator search(ForwardIterator first, ForwardIterator last, + const Searcher& searcher); \end{itemdecl} \begin{itemdescr} @@ -2347,8 +2352,8 @@ \indexlibrary{\idxcode{copy}}% \begin{itemdecl} template - OutputIterator copy(InputIterator first, InputIterator last, - OutputIterator result); + constexpr OutputIterator copy(InputIterator first, InputIterator last, + OutputIterator result); \end{itemdecl} \begin{itemdescr} @@ -2394,8 +2399,8 @@ \indexlibrary{\idxcode{copy_n}}% \begin{itemdecl} template - OutputIterator copy_n(InputIterator first, Size n, - OutputIterator result); + constexpr OutputIterator copy_n(InputIterator first, Size n, + OutputIterator result); template ForwardIterator2 copy_n(ExecutionPolicy&& exec, ForwardIterator1 first, Size n, @@ -2417,8 +2422,8 @@ \indexlibrary{\idxcode{copy_if}}% \begin{itemdecl} template - OutputIterator copy_if(InputIterator first, InputIterator last, - OutputIterator result, Predicate pred); + constexpr OutputIterator copy_if(InputIterator first, InputIterator last, + OutputIterator result, Predicate pred); template ForwardIterator2 copy_if(ExecutionPolicy&& exec, ForwardIterator1 first, ForwardIterator1 last, @@ -2451,7 +2456,7 @@ \indexlibrary{\idxcode{copy_backward}}% \begin{itemdecl} template - BidirectionalIterator2 + constexpr BidirectionalIterator2 copy_backward(BidirectionalIterator1 first, BidirectionalIterator1 last, BidirectionalIterator2 result); @@ -2497,7 +2502,8 @@ \indexlibrary{\idxcode{move}!algorithm}% \begin{itemdecl} template - OutputIterator move(InputIterator first, InputIterator last, OutputIterator result); + constexpr OutputIterator move(InputIterator first, InputIterator last, + OutputIterator result); \end{itemdecl} \begin{itemdescr} @@ -2557,7 +2563,7 @@ \indexlibrary{\idxcode{move_backward}}% \begin{itemdecl} template - BidirectionalIterator2 + constexpr BidirectionalIterator2 move_backward(BidirectionalIterator1 first, BidirectionalIterator1 last, BidirectionalIterator2 result); @@ -2664,7 +2670,7 @@ \begin{itemdecl} template - OutputIterator + constexpr OutputIterator transform(InputIterator first, InputIterator last, OutputIterator result, UnaryOperation op); template - OutputIterator + constexpr OutputIterator transform(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, OutputIterator result, BinaryOperation binary_op); @@ -2739,16 +2745,16 @@ \indexlibrary{\idxcode{replace_if}}% \begin{itemdecl} template - void replace(ForwardIterator first, ForwardIterator last, - const T& old_value, const T& new_value); + constexpr void replace(ForwardIterator first, ForwardIterator last, + const T& old_value, const T& new_value); template void replace(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, const T& old_value, const T& new_value); template - void replace_if(ForwardIterator first, ForwardIterator last, - Predicate pred, const T& new_value); + constexpr void replace_if(ForwardIterator first, ForwardIterator last, + Predicate pred, const T& new_value); template void replace_if(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, @@ -2782,7 +2788,7 @@ \indexlibrary{\idxcode{replace_copy_if}}% \begin{itemdecl} template - OutputIterator + constexpr OutputIterator replace_copy(InputIterator first, InputIterator last, OutputIterator result, const T& old_value, const T& new_value); @@ -2794,7 +2800,7 @@ const T& old_value, const T& new_value); template - OutputIterator + constexpr OutputIterator replace_copy_if(InputIterator first, InputIterator last, OutputIterator result, Predicate pred, const T& new_value); @@ -2858,13 +2864,13 @@ \indexlibrary{\idxcode{fill_n}}% \begin{itemdecl} template - void fill(ForwardIterator first, ForwardIterator last, const T& value); + constexpr void fill(ForwardIterator first, ForwardIterator last, const T& value); template void fill(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, const T& value); template - OutputIterator fill_n(OutputIterator first, Size n, const T& value); + constexpr OutputIterator fill_n(OutputIterator first, Size n, const T& value); template ForwardIterator fill_n(ExecutionPolicy&& exec, ForwardIterator first, Size n, const T& value); @@ -2904,15 +2910,15 @@ \indexlibrary{\idxcode{generate_n}}% \begin{itemdecl} template - void generate(ForwardIterator first, ForwardIterator last, - Generator gen); + constexpr void generate(ForwardIterator first, ForwardIterator last, + Generator gen); template void generate(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Generator gen); template - OutputIterator generate_n(OutputIterator first, Size n, Generator gen); + constexpr OutputIterator generate_n(OutputIterator first, Size n, Generator gen); template ForwardIterator generate_n(ExecutionPolicy&& exec, ForwardIterator first, Size n, Generator gen); @@ -2952,16 +2958,16 @@ \indexlibrary{\idxcode{remove_if}}% \begin{itemdecl} template - ForwardIterator remove(ForwardIterator first, ForwardIterator last, - const T& value); + constexpr ForwardIterator remove(ForwardIterator first, ForwardIterator last, + const T& value); template ForwardIterator remove(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, const T& value); template - ForwardIterator remove_if(ForwardIterator first, ForwardIterator last, - Predicate pred); + constexpr ForwardIterator remove_if(ForwardIterator first, ForwardIterator last, + Predicate pred); template ForwardIterator remove_if(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, @@ -3010,7 +3016,7 @@ \indexlibrary{\idxcode{remove_copy_if}}% \begin{itemdecl} template - OutputIterator + constexpr OutputIterator remove_copy(InputIterator first, InputIterator last, OutputIterator result, const T& value); template @@ -3020,7 +3026,7 @@ ForwardIterator2 result, const T& value); template - OutputIterator + constexpr OutputIterator remove_copy_if(InputIterator first, InputIterator last, OutputIterator result, Predicate pred); template @@ -3072,14 +3078,14 @@ \indexlibrary{\idxcode{unique}}% \begin{itemdecl} template - ForwardIterator unique(ForwardIterator first, ForwardIterator last); + constexpr ForwardIterator unique(ForwardIterator first, ForwardIterator last); template ForwardIterator unique(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last); template - ForwardIterator unique(ForwardIterator first, ForwardIterator last, - BinaryPredicate pred); + constexpr ForwardIterator unique(ForwardIterator first, ForwardIterator last, + BinaryPredicate pred); template ForwardIterator unique(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, @@ -3119,7 +3125,7 @@ \indexlibrary{\idxcode{unique_copy}}% \begin{itemdecl} template - OutputIterator + constexpr OutputIterator unique_copy(InputIterator first, InputIterator last, OutputIterator result); template @@ -3130,7 +3136,7 @@ template - OutputIterator + constexpr OutputIterator unique_copy(InputIterator first, InputIterator last, OutputIterator result, BinaryPredicate pred); template - OutputIterator + constexpr OutputIterator reverse_copy(BidirectionalIterator first, BidirectionalIterator last, OutputIterator result); template @@ -3333,7 +3339,7 @@ \indexlibrary{\idxcode{rotate_copy}}% \begin{itemdecl} template - OutputIterator + constexpr OutputIterator rotate_copy(ForwardIterator first, ForwardIterator middle, ForwardIterator last, OutputIterator result); template @@ -3811,7 +3817,7 @@ \indexlibrary{\idxcode{is_sorted}}% \begin{itemdecl} template - bool is_sorted(ForwardIterator first, ForwardIterator last); + constexpr bool is_sorted(ForwardIterator first, ForwardIterator last); \end{itemdecl} \begin{itemdescr} @@ -3835,8 +3841,8 @@ \indexlibrary{\idxcode{is_sorted}}% \begin{itemdecl} template - bool is_sorted(ForwardIterator first, ForwardIterator last, - Compare comp); + constexpr bool is_sorted(ForwardIterator first, ForwardIterator last, + Compare comp); \end{itemdecl} \begin{itemdescr} @@ -3865,14 +3871,14 @@ \indexlibrary{\idxcode{is_sorted_until}}% \begin{itemdecl} template - ForwardIterator is_sorted_until(ForwardIterator first, ForwardIterator last); + constexpr ForwardIterator is_sorted_until(ForwardIterator first, ForwardIterator last); template ForwardIterator is_sorted_until(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last); template - ForwardIterator is_sorted_until(ForwardIterator first, ForwardIterator last, - Compare comp); + constexpr ForwardIterator is_sorted_until(ForwardIterator first, ForwardIterator last, + Compare comp); template ForwardIterator is_sorted_until(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, @@ -3967,12 +3973,12 @@ \indexlibrary{\idxcode{lower_bound}}% \begin{itemdecl} template - ForwardIterator + constexpr ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, const T& value); template - ForwardIterator + constexpr ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, const T& value, Compare comp); \end{itemdecl} @@ -4016,12 +4022,12 @@ \indexlibrary{\idxcode{upper_bound}}% \begin{itemdecl} template - ForwardIterator + constexpr ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last, const T& value); template - ForwardIterator + constexpr ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last, const T& value, Compare comp); \end{itemdecl} @@ -4065,12 +4071,12 @@ \indexlibrary{\idxcode{equal_range}}% \begin{itemdecl} template - pair + constexpr pair equal_range(ForwardIterator first, ForwardIterator last, const T& value); template - pair + constexpr pair equal_range(ForwardIterator first, ForwardIterator last, const T& value, Compare comp); @@ -4127,12 +4133,12 @@ \indexlibrary{\idxcode{binary_search}}% \begin{itemdecl} template - bool binary_search(ForwardIterator first, ForwardIterator last, - const T& value); + constexpr bool binary_search(ForwardIterator first, ForwardIterator last, + const T& value); template - bool binary_search(ForwardIterator first, ForwardIterator last, - const T& value, Compare comp); + constexpr bool binary_search(ForwardIterator first, ForwardIterator last, + const T& value, Compare comp); \end{itemdecl} \begin{itemdescr} @@ -4186,10 +4192,12 @@ \indexlibrary{\idxcode{is_partitioned}}% \begin{itemdecl} template - bool is_partitioned(InputIterator first, InputIterator last, Predicate pred); + constexpr bool is_partitioned(InputIterator first, InputIterator last, + Predicate pred); template bool is_partitioned(ExecutionPolicy&& exec, - ForwardIterator first, ForwardIterator last, Predicate pred); + ForwardIterator first, ForwardIterator last, + Predicate pred); \end{itemdecl} \begin{itemdescr} @@ -4308,7 +4316,7 @@ \begin{itemdecl} template - pair + constexpr pair partition_copy(InputIterator first, InputIterator last, OutputIterator1 out_true, OutputIterator2 out_false, Predicate pred); @@ -4360,9 +4368,9 @@ \indexlibrary{\idxcode{partition_point}}% \begin{itemdecl} template - ForwardIterator partition_point(ForwardIterator first, - ForwardIterator last, - Predicate pred); + constexpr ForwardIterator partition_point(ForwardIterator first, + ForwardIterator last, + Predicate pred); \end{itemdecl} @@ -4383,7 +4391,7 @@ \begin{itemdecl} template - OutputIterator + constexpr OutputIterator merge(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result); @@ -4397,7 +4405,7 @@ template - OutputIterator + constexpr OutputIterator merge(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); @@ -4527,17 +4535,17 @@ \indexlibrary{\idxcode{includes}}% \begin{itemdecl} template - bool includes(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2); + constexpr bool includes(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2); template bool includes(ExecutionPolicy&& exec, ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2); template - bool includes(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - Compare comp); + constexpr bool includes(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + Compare comp); template bool includes(ExecutionPolicy&& exec, ForwardIterator1 first1, ForwardIterator1 last1, @@ -4571,7 +4579,7 @@ \begin{itemdecl} template - OutputIterator + constexpr OutputIterator set_union(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result); @@ -4585,7 +4593,7 @@ template - OutputIterator + constexpr OutputIterator set_union(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); @@ -4632,7 +4640,7 @@ \begin{itemdecl} template - OutputIterator + constexpr OutputIterator set_intersection(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result); @@ -4646,7 +4654,7 @@ template - OutputIterator + constexpr OutputIterator set_intersection(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); @@ -4692,12 +4700,12 @@ \begin{itemdecl} template - OutputIterator + constexpr OutputIterator set_difference(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result); template + class ForwardIterator> ForwardIterator set_difference(ExecutionPolicy&& exec, ForwardIterator1 first1, ForwardIterator1 last1, @@ -4706,7 +4714,7 @@ template - OutputIterator + constexpr OutputIterator set_difference(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); @@ -4765,7 +4773,7 @@ \begin{itemdecl} template - OutputIterator + constexpr OutputIterator set_symmetric_difference(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result); @@ -4779,7 +4787,7 @@ template - OutputIterator + constexpr OutputIterator set_symmetric_difference(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); @@ -5010,7 +5018,7 @@ \indexlibrary{\idxcode{is_heap}}% \begin{itemdecl} template - bool is_heap(RandomAccessIterator first, RandomAccessIterator last); + constexpr bool is_heap(RandomAccessIterator first, RandomAccessIterator last); \end{itemdecl} \begin{itemdescr} @@ -5035,7 +5043,8 @@ \indexlibrary{\idxcode{is_heap}}% \begin{itemdecl} template - bool is_heap(RandomAccessIterator first, RandomAccessIterator last, Compare comp); + constexpr bool is_heap(RandomAccessIterator first, RandomAccessIterator last, + Compare comp); \end{itemdecl} \begin{itemdescr} @@ -5063,18 +5072,22 @@ \indexlibrary{\idxcode{is_heap_until}}% \begin{itemdecl} template - RandomAccessIterator is_heap_until(RandomAccessIterator first, RandomAccessIterator last); + constexpr RandomAccessIterator + is_heap_until(RandomAccessIterator first, RandomAccessIterator last); template - RandomAccessIterator is_heap_until(ExecutionPolicy&& exec, - RandomAccessIterator first, RandomAccessIterator last); + RandomAccessIterator + is_heap_until(ExecutionPolicy&& exec, + RandomAccessIterator first, RandomAccessIterator last); template - RandomAccessIterator is_heap_until(RandomAccessIterator first, RandomAccessIterator last, - Compare comp); + constexpr RandomAccessIterator + is_heap_until(RandomAccessIterator first, RandomAccessIterator last, + Compare comp); template - RandomAccessIterator is_heap_until(ExecutionPolicy&& exec, - RandomAccessIterator first, RandomAccessIterator last, - Compare comp); + RandomAccessIterator + is_heap_until(ExecutionPolicy&& exec, + RandomAccessIterator first, RandomAccessIterator last, + Compare comp); \end{itemdecl} @@ -5411,7 +5424,7 @@ \indexlibrary{\idxcode{lexicographical_compare}}% \begin{itemdecl} template - bool + constexpr bool lexicographical_compare(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2); template @@ -5421,7 +5434,7 @@ ForwardIterator2 first2, ForwardIterator2 last2); template - bool + constexpr bool lexicographical_compare(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, Compare comp); diff --git a/source/utilities.tex b/source/utilities.tex index e52f16b9ba..5844c51453 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -54,7 +54,7 @@ // \ref{utility.exchange}, exchange template - T exchange(T& obj, U&& new_val); + constexpr T exchange(T& obj, U&& new_val); // \ref{forward}, forward/move template @@ -248,7 +248,8 @@ \indexlibrary{\idxcode{exchange}}% \begin{itemdecl} -template T exchange(T& obj, U&& new_val); +template + constexpr T exchange(T& obj, U&& new_val); \end{itemdecl} \begin{itemdescr} From 7e1f5a240899d048b841645ff06d4e49149c8ade Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Wed, 15 Nov 2017 17:54:57 -0800 Subject: [PATCH 098/168] P0202R3 Add Constexpr Modifiers to Functions in and Headers --- source/algorithms.tex | 881 ++++++++++++++++++++++-------------------- source/utilities.tex | 5 +- 2 files changed, 474 insertions(+), 412 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index f7020b8008..9b72564bdf 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -33,55 +33,55 @@ // \ref{alg.nonmodifying}, non-modifying sequence operations // \ref{alg.all_of}, all of template - bool all_of(InputIterator first, InputIterator last, Predicate pred); + constexpr bool all_of(InputIterator first, InputIterator last, Predicate pred); template bool all_of(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Predicate pred); // \ref{alg.any_of}, any of template - bool any_of(InputIterator first, InputIterator last, Predicate pred); + constexpr bool any_of(InputIterator first, InputIterator last, Predicate pred); template bool any_of(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Predicate pred); // \ref{alg.none_of}, none of template - bool none_of(InputIterator first, InputIterator last, Predicate pred); + constexpr bool none_of(InputIterator first, InputIterator last, Predicate pred); template bool none_of(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Predicate pred); // \ref{alg.foreach}, for each template - Function for_each(InputIterator first, InputIterator last, Function f); + constexpr Function for_each(InputIterator first, InputIterator last, Function f); template void for_each(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Function f); template - InputIterator for_each_n(InputIterator first, Size n, Function f); + constexpr InputIterator for_each_n(InputIterator first, Size n, Function f); template ForwardIterator for_each_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, Size n, Function f); // \ref{alg.find}, find template - InputIterator find(InputIterator first, InputIterator last, - const T& value); + constexpr InputIterator find(InputIterator first, InputIterator last, + const T& value); template ForwardIterator find(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, const T& value); template - InputIterator find_if(InputIterator first, InputIterator last, - Predicate pred); + constexpr InputIterator find_if(InputIterator first, InputIterator last, + Predicate pred); template ForwardIterator find_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Predicate pred); template - InputIterator find_if_not(InputIterator first, InputIterator last, - Predicate pred); + constexpr InputIterator find_if_not(InputIterator first, InputIterator last, + Predicate pred); template ForwardIterator find_if_not(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, @@ -89,11 +89,11 @@ // \ref{alg.find.end}, find end template - ForwardIterator1 + constexpr ForwardIterator1 find_end(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2); template - ForwardIterator1 + constexpr ForwardIterator1 find_end(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate pred); @@ -112,11 +112,11 @@ // \ref{alg.find.first.of}, find first template - InputIterator + constexpr InputIterator find_first_of(InputIterator first1, InputIterator last1, ForwardIterator first2, ForwardIterator last2); template - InputIterator + constexpr InputIterator find_first_of(InputIterator first1, InputIterator last1, ForwardIterator first2, ForwardIterator last2, BinaryPredicate pred); @@ -135,53 +135,53 @@ // \ref{alg.adjacent.find}, adjacent find template - ForwardIterator adjacent_find(ForwardIterator first, - ForwardIterator last); + constexpr ForwardIterator + adjacent_find(ForwardIterator first, ForwardIterator last); template - ForwardIterator adjacent_find(ForwardIterator first, - ForwardIterator last, - BinaryPredicate pred); + constexpr ForwardIterator + adjacent_find(ForwardIterator first, ForwardIterator last, + BinaryPredicate pred); template - ForwardIterator adjacent_find(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator first, - ForwardIterator last); + ForwardIterator + adjacent_find(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator first, ForwardIterator last); template - ForwardIterator adjacent_find(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator first, - ForwardIterator last, - BinaryPredicate pred); + ForwardIterator + adjacent_find(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator first, ForwardIterator last, + BinaryPredicate pred); // \ref{alg.count}, count template - typename iterator_traits::difference_type + constexpr typename iterator_traits::difference_type count(InputIterator first, InputIterator last, const T& value); template typename iterator_traits::difference_type count(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, const T& value); template - typename iterator_traits::difference_type + constexpr typename iterator_traits::difference_type count_if(InputIterator first, InputIterator last, Predicate pred); template typename iterator_traits::difference_type count_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator first, ForwardIterator last, Predicate pred); + ForwardIterator first, ForwardIterator last, Predicate pred); // \ref{mismatch}, mismatch template - pair + constexpr pair mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2); template - pair + constexpr pair mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, BinaryPredicate pred); template - pair + constexpr pair mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2); template - pair + constexpr pair mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, BinaryPredicate pred); @@ -211,18 +211,18 @@ // \ref{alg.equal}, equal template - bool equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2); + constexpr bool equal(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2); template - bool equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, BinaryPredicate pred); + constexpr bool equal(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, BinaryPredicate pred); template - bool equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2); + constexpr bool equal(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2); template - bool equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - BinaryPredicate pred); + constexpr bool equal(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + BinaryPredicate pred); template bool equal(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first1, ForwardIterator1 last1, @@ -245,108 +245,110 @@ // \ref{alg.is_permutation}, is permutation template - bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2); + constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2); template - bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, BinaryPredicate pred); - + constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, BinaryPredicate pred); template - bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2); - + constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2); template - bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - BinaryPredicate pred); + constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + BinaryPredicate pred); // \ref{alg.search}, search template - ForwardIterator1 search( - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2); + constexpr ForwardIterator1 + search(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2); template - ForwardIterator1 search( - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - BinaryPredicate pred); + constexpr ForwardIterator1 + search(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + BinaryPredicate pred); template - ForwardIterator1 search( - ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2); + ForwardIterator1 + search(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2); template - ForwardIterator1 search( - ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - BinaryPredicate pred); + ForwardIterator1 + search(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + BinaryPredicate pred); template - ForwardIterator search_n(ForwardIterator first, ForwardIterator last, - Size count, const T& value); + constexpr ForwardIterator + search_n(ForwardIterator first, ForwardIterator last, + Size count, const T& value); template - ForwardIterator search_n(ForwardIterator first, ForwardIterator last, - Size count, const T& value, - BinaryPredicate pred); + constexpr ForwardIterator + search_n(ForwardIterator first, ForwardIterator last, + Size count, const T& value, + BinaryPredicate pred); template - ForwardIterator search_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator first, ForwardIterator last, - Size count, const T& value); + ForwardIterator + search_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator first, ForwardIterator last, + Size count, const T& value); template - ForwardIterator search_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator first, ForwardIterator last, - Size count, const T& value, - BinaryPredicate pred); + ForwardIterator + search_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator first, ForwardIterator last, + Size count, const T& value, + BinaryPredicate pred); template - ForwardIterator search(ForwardIterator first, ForwardIterator last, - const Searcher& searcher); + constexpr ForwardIterator + search(ForwardIterator first, ForwardIterator last, const Searcher& searcher); // \ref{alg.modifying.operations}, mutating sequence operations // \ref{alg.copy}, copy template - OutputIterator copy(InputIterator first, InputIterator last, - OutputIterator result); + constexpr OutputIterator copy(InputIterator first, InputIterator last, + OutputIterator result); template ForwardIterator2 copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first, ForwardIterator1 last, ForwardIterator2 result); template - OutputIterator copy_n(InputIterator first, Size n, - OutputIterator result); + constexpr OutputIterator copy_n(InputIterator first, Size n, + OutputIterator result); template ForwardIterator2 copy_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first, Size n, ForwardIterator2 result); template - OutputIterator copy_if(InputIterator first, InputIterator last, - OutputIterator result, Predicate pred); + constexpr OutputIterator copy_if(InputIterator first, InputIterator last, + OutputIterator result, Predicate pred); template ForwardIterator2 copy_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first, ForwardIterator1 last, ForwardIterator2 result, Predicate pred); template - BidirectionalIterator2 copy_backward( - BidirectionalIterator1 first, BidirectionalIterator1 last, - BidirectionalIterator2 result); + constexpr BidirectionalIterator2 + copy_backward(BidirectionalIterator1 first, BidirectionalIterator1 last, + BidirectionalIterator2 result); // \ref{alg.move}, move template - OutputIterator move(InputIterator first, InputIterator last, - OutputIterator result); + constexpr OutputIterator move(InputIterator first, InputIterator last, + OutputIterator result); template ForwardIterator2 move(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first, ForwardIterator1 last, ForwardIterator2 result); template - BidirectionalIterator2 move_backward( - BidirectionalIterator1 first, BidirectionalIterator1 last, - BidirectionalIterator2 result); + constexpr BidirectionalIterator2 + move_backward(BidirectionalIterator1 first, BidirectionalIterator1 last, + BidirectionalIterator2 result); // \ref{alg.swap}, swap template @@ -361,53 +363,57 @@ // \ref{alg.transform}, transform template - OutputIterator transform(InputIterator first, InputIterator last, - OutputIterator result, UnaryOperation op); + constexpr OutputIterator + transform(InputIterator first, InputIterator last, + OutputIterator result, UnaryOperation op); template - OutputIterator transform(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, OutputIterator result, - BinaryOperation binary_op); + constexpr OutputIterator + transform(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, OutputIterator result, + BinaryOperation binary_op); template - ForwardIterator2 transform(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first, ForwardIterator1 last, - ForwardIterator2 result, UnaryOperation op); + ForwardIterator2 + transform(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first, ForwardIterator1 last, + ForwardIterator2 result, UnaryOperation op); template - ForwardIterator transform(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator result, - BinaryOperation binary_op); + ForwardIterator + transform(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator result, + BinaryOperation binary_op); // \ref{alg.replace}, replace template - void replace(ForwardIterator first, ForwardIterator last, - const T& old_value, const T& new_value); + constexpr void replace(ForwardIterator first, ForwardIterator last, + const T& old_value, const T& new_value); template void replace(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, const T& old_value, const T& new_value); template - void replace_if(ForwardIterator first, ForwardIterator last, - Predicate pred, const T& new_value); + constexpr void replace_if(ForwardIterator first, ForwardIterator last, + Predicate pred, const T& new_value); template void replace_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Predicate pred, const T& new_value); template - OutputIterator replace_copy(InputIterator first, InputIterator last, - OutputIterator result, - const T& old_value, const T& new_value); + constexpr OutputIterator replace_copy(InputIterator first, InputIterator last, + OutputIterator result, + const T& old_value, const T& new_value); template ForwardIterator2 replace_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first, ForwardIterator1 last, ForwardIterator2 result, const T& old_value, const T& new_value); template - OutputIterator replace_copy_if(InputIterator first, InputIterator last, - OutputIterator result, - Predicate pred, const T& new_value); + constexpr OutputIterator replace_copy_if(InputIterator first, InputIterator last, + OutputIterator result, + Predicate pred, const T& new_value); template ForwardIterator2 replace_copy_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} @@ -417,13 +423,12 @@ // \ref{alg.fill}, fill template - void fill(ForwardIterator first, ForwardIterator last, const T& value); - template + constexpr void fill(ForwardIterator first, ForwardIterator last, const T& value); + template void fill(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, const T& value); template - OutputIterator fill_n(OutputIterator first, Size n, const T& value); + constexpr OutputIterator fill_n(OutputIterator first, Size n, const T& value); template ForwardIterator fill_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} @@ -431,56 +436,60 @@ // \ref{alg.generate}, generate template - void generate(ForwardIterator first, ForwardIterator last, - Generator gen); + constexpr void generate(ForwardIterator first, ForwardIterator last, + Generator gen); template void generate(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Generator gen); template - OutputIterator generate_n(OutputIterator first, Size n, Generator gen); + constexpr OutputIterator generate_n(OutputIterator first, Size n, Generator gen); template ForwardIterator generate_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, Size n, Generator gen); // \ref{alg.remove}, remove template - ForwardIterator remove(ForwardIterator first, ForwardIterator last, - const T& value); + constexpr ForwardIterator remove(ForwardIterator first, ForwardIterator last, + const T& value); template ForwardIterator remove(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, const T& value); template - ForwardIterator remove_if(ForwardIterator first, ForwardIterator last, - Predicate pred); + constexpr ForwardIterator remove_if(ForwardIterator first, ForwardIterator last, + Predicate pred); template ForwardIterator remove_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Predicate pred); template - OutputIterator remove_copy(InputIterator first, InputIterator last, - OutputIterator result, const T& value); + constexpr OutputIterator + remove_copy(InputIterator first, InputIterator last, + OutputIterator result, const T& value); template - ForwardIterator2 remove_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first, ForwardIterator1 last, - ForwardIterator2 result, const T& value); + ForwardIterator2 + remove_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first, ForwardIterator1 last, + ForwardIterator2 result, const T& value); template - OutputIterator remove_copy_if(InputIterator first, InputIterator last, - OutputIterator result, Predicate pred); + constexpr OutputIterator + remove_copy_if(InputIterator first, InputIterator last, + OutputIterator result, Predicate pred); template - ForwardIterator2 remove_copy_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first, ForwardIterator1 last, - ForwardIterator2 result, Predicate pred); + ForwardIterator2 + remove_copy_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first, ForwardIterator1 last, + ForwardIterator2 result, Predicate pred); // \ref{alg.unique}, unique template - ForwardIterator unique(ForwardIterator first, ForwardIterator last); + constexpr ForwardIterator unique(ForwardIterator first, ForwardIterator last); template - ForwardIterator unique(ForwardIterator first, ForwardIterator last, - BinaryPredicate pred); + constexpr ForwardIterator unique(ForwardIterator first, ForwardIterator last, + BinaryPredicate pred); template ForwardIterator unique(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last); @@ -489,20 +498,24 @@ ForwardIterator first, ForwardIterator last, BinaryPredicate pred); template - OutputIterator unique_copy(InputIterator first, InputIterator last, - OutputIterator result); + constexpr OutputIterator + unique_copy(InputIterator first, InputIterator last, + OutputIterator result); template - OutputIterator unique_copy(InputIterator first, InputIterator last, - OutputIterator result, BinaryPredicate pred); + constexpr OutputIterator + unique_copy(InputIterator first, InputIterator last, + OutputIterator result, BinaryPredicate pred); template - ForwardIterator2 unique_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first, ForwardIterator1 last, - ForwardIterator2 result); + ForwardIterator2 + unique_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first, ForwardIterator1 last, + ForwardIterator2 result); template - ForwardIterator2 unique_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first, ForwardIterator1 last, - ForwardIterator2 result, BinaryPredicate pred); + ForwardIterator2 + unique_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first, ForwardIterator1 last, + ForwardIterator2 result, BinaryPredicate pred); // \ref{alg.reverse}, reverse template @@ -511,14 +524,14 @@ void reverse(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} BidirectionalIterator first, BidirectionalIterator last); template - OutputIterator reverse_copy(BidirectionalIterator first, - BidirectionalIterator last, - OutputIterator result); + constexpr OutputIterator + reverse_copy(BidirectionalIterator first, BidirectionalIterator last, + OutputIterator result); template - ForwardIterator reverse_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - BidirectionalIterator first, - BidirectionalIterator last, - ForwardIterator result); + ForwardIterator + reverse_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + BidirectionalIterator first, BidirectionalIterator last, + ForwardIterator result); // \ref{alg.rotate}, rotate template @@ -531,14 +544,14 @@ ForwardIterator middle, ForwardIterator last); template - OutputIterator rotate_copy( - ForwardIterator first, ForwardIterator middle, - ForwardIterator last, OutputIterator result); + constexpr OutputIterator + rotate_copy(ForwardIterator first, ForwardIterator middle, + ForwardIterator last, OutputIterator result); template - ForwardIterator2 rotate_copy( - ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first, ForwardIterator1 middle, - ForwardIterator1 last, ForwardIterator2 result); + ForwardIterator2 + rotate_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first, ForwardIterator1 middle, + ForwardIterator1 last, ForwardIterator2 result); // \ref{alg.random.sample}, sample template - bool is_partitioned(InputIterator first, InputIterator last, Predicate pred); + constexpr bool is_partitioned(InputIterator first, InputIterator last, Predicate pred); template bool is_partitioned(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Predicate pred); @@ -580,7 +593,7 @@ Predicate pred); template - pair + constexpr pair partition_copy(InputIterator first, InputIterator last, OutputIterator1 out_true, OutputIterator2 out_false, Predicate pred); @@ -592,9 +605,9 @@ ForwardIterator1 out_true, ForwardIterator2 out_false, Predicate pred); template - ForwardIterator partition_point(ForwardIterator first, - ForwardIterator last, - Predicate pred); + constexpr ForwardIterator + partition_point(ForwardIterator first, ForwardIterator last, + Predicate pred); // \ref{alg.sorting}, sorting and related operations // \ref{alg.sort}, sorting @@ -668,10 +681,10 @@ RandomAccessIterator result_last, Compare comp); template - bool is_sorted(ForwardIterator first, ForwardIterator last); + constexpr bool is_sorted(ForwardIterator first, ForwardIterator last); template - bool is_sorted(ForwardIterator first, ForwardIterator last, - Compare comp); + constexpr bool is_sorted(ForwardIterator first, ForwardIterator last, + Compare comp); template bool is_sorted(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last); @@ -680,17 +693,21 @@ ForwardIterator first, ForwardIterator last, Compare comp); template - ForwardIterator is_sorted_until(ForwardIterator first, ForwardIterator last); + constexpr ForwardIterator + is_sorted_until(ForwardIterator first, ForwardIterator last); template - ForwardIterator is_sorted_until(ForwardIterator first, ForwardIterator last, - Compare comp); + constexpr ForwardIterator + is_sorted_until(ForwardIterator first, ForwardIterator last, + Compare comp); template - ForwardIterator is_sorted_until(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator first, ForwardIterator last); + ForwardIterator + is_sorted_until(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator first, ForwardIterator last); template - ForwardIterator is_sorted_until(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator first, ForwardIterator last, - Compare comp); + ForwardIterator + is_sorted_until(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator first, ForwardIterator last, + Compare comp); // \ref{alg.nth.element}, Nth element template @@ -710,57 +727,67 @@ // \ref{alg.binary.search}, binary search template - ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, - const T& value); + constexpr ForwardIterator + lower_bound(ForwardIterator first, ForwardIterator last, + const T& value); template - ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, - const T& value, Compare comp); + constexpr ForwardIterator + lower_bound(ForwardIterator first, ForwardIterator last, + const T& value, Compare comp); template - ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last, - const T& value); + constexpr ForwardIterator + upper_bound(ForwardIterator first, ForwardIterator last, + const T& value); template - ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last, - const T& value, Compare comp); + constexpr ForwardIterator + upper_bound(ForwardIterator first, ForwardIterator last, + const T& value, Compare comp); template - pair + constexpr pair equal_range(ForwardIterator first, ForwardIterator last, const T& value); template - pair + constexpr pair equal_range(ForwardIterator first, ForwardIterator last, const T& value, Compare comp); template - bool binary_search(ForwardIterator first, ForwardIterator last, - const T& value); + constexpr bool + binary_search(ForwardIterator first, ForwardIterator last, + const T& value); template - bool binary_search(ForwardIterator first, ForwardIterator last, - const T& value, Compare comp); + constexpr bool + binary_search(ForwardIterator first, ForwardIterator last, + const T& value, Compare comp); // \ref{alg.merge}, merge template - OutputIterator merge(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result); + constexpr OutputIterator + merge(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + OutputIterator result); template - OutputIterator merge(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result, Compare comp); + constexpr OutputIterator + merge(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + OutputIterator result, Compare comp); template - ForwardIterator merge(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - ForwardIterator result); + ForwardIterator + merge(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + ForwardIterator result); template - ForwardIterator merge(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - ForwardIterator result, Compare comp); + ForwardIterator + merge(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + ForwardIterator result, Compare comp); template void inplace_merge(BidirectionalIterator first, @@ -783,11 +810,12 @@ // \ref{alg.set.operations}, set operations template - bool includes(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2); + constexpr bool includes(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2); template - bool includes(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, Compare comp); + constexpr bool includes(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + Compare comp); template bool includes(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first1, ForwardIterator1 last1, @@ -796,36 +824,41 @@ class Compare> bool includes(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, Compare comp); + ForwardIterator2 first2, ForwardIterator2 last2, + Compare comp); template - OutputIterator set_union(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result); + constexpr OutputIterator set_union( + InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + OutputIterator result); template - OutputIterator set_union(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result, Compare comp); + constexpr OutputIterator set_union( + InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + OutputIterator result, Compare comp); template - ForwardIterator set_union(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - ForwardIterator result); + ForwardIterator set_union( + ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + ForwardIterator result); template - ForwardIterator set_union(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - ForwardIterator result, Compare comp); + ForwardIterator set_union( + ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + ForwardIterator result, Compare comp); template - OutputIterator set_intersection( + constexpr OutputIterator set_intersection( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result); template - OutputIterator set_intersection( + constexpr OutputIterator set_intersection( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); @@ -845,12 +878,12 @@ ForwardIterator result, Compare comp); template - OutputIterator set_difference( + constexpr OutputIterator set_difference( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result); template - OutputIterator set_difference( + constexpr OutputIterator set_difference( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); @@ -870,12 +903,12 @@ ForwardIterator result, Compare comp); template - OutputIterator set_symmetric_difference( + constexpr OutputIterator set_symmetric_difference( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result); template - OutputIterator set_symmetric_difference( + constexpr OutputIterator set_symmetric_difference( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); @@ -920,27 +953,33 @@ Compare comp); template - bool is_heap(RandomAccessIterator first, RandomAccessIterator last); + constexpr bool is_heap(RandomAccessIterator first, RandomAccessIterator last); template - bool is_heap(RandomAccessIterator first, RandomAccessIterator last, Compare comp); + constexpr bool is_heap(RandomAccessIterator first, RandomAccessIterator last, + Compare comp); template bool is_heap(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} RandomAccessIterator first, RandomAccessIterator last); template bool is_heap(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - RandomAccessIterator first, RandomAccessIterator last, Compare comp); + RandomAccessIterator first, RandomAccessIterator last, + Compare comp); template - RandomAccessIterator is_heap_until(RandomAccessIterator first, RandomAccessIterator last); + constexpr RandomAccessIterator is_heap_until( + RandomAccessIterator first, RandomAccessIterator last); template - RandomAccessIterator is_heap_until(RandomAccessIterator first, RandomAccessIterator last, - Compare comp); + constexpr RandomAccessIterator is_heap_until( + RandomAccessIterator first, RandomAccessIterator last, + Compare comp); template - RandomAccessIterator is_heap_until(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - RandomAccessIterator first, RandomAccessIterator last); + RandomAccessIterator is_heap_until( + ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + RandomAccessIterator first, RandomAccessIterator last); template - RandomAccessIterator is_heap_until(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - RandomAccessIterator first, RandomAccessIterator last, - Compare comp); + RandomAccessIterator is_heap_until( + ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + RandomAccessIterator first, RandomAccessIterator last, + Compare comp); // \ref{alg.min.max}, minimum and maximum template constexpr const T& min(const T& a, const T& b); @@ -1014,11 +1053,11 @@ // \ref{alg.lex.comparison}, lexicographical comparison template - bool lexicographical_compare( + constexpr bool lexicographical_compare( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2); template - bool lexicographical_compare( + constexpr bool lexicographical_compare( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, Compare comp); @@ -1521,7 +1560,7 @@ \indexlibrary{\idxcode{all_of}}% \begin{itemdecl} template - bool all_of(InputIterator first, InputIterator last, Predicate pred); + constexpr bool all_of(InputIterator first, InputIterator last, Predicate pred); template bool all_of(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Predicate pred); @@ -1542,7 +1581,7 @@ \indexlibrary{\idxcode{any_of}}% \begin{itemdecl} template - bool any_of(InputIterator first, InputIterator last, Predicate pred); + constexpr bool any_of(InputIterator first, InputIterator last, Predicate pred); template bool any_of(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Predicate pred); @@ -1563,7 +1602,7 @@ \indexlibrary{\idxcode{none_of}}% \begin{itemdecl} template - bool none_of(InputIterator first, InputIterator last, Predicate pred); + constexpr bool none_of(InputIterator first, InputIterator last, Predicate pred); template bool none_of(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Predicate pred); @@ -1584,7 +1623,7 @@ \indexlibrary{\idxcode{for_each}}% \begin{itemdecl} template - Function for_each(InputIterator first, InputIterator last, Function f); + constexpr Function for_each(InputIterator first, InputIterator last, Function f); \end{itemdecl} \begin{itemdescr} @@ -1666,7 +1705,7 @@ \indexlibrary{\idxcode{for_each_n}}% \begin{itemdecl} template - InputIterator for_each_n(InputIterator first, Size n, Function f); + constexpr InputIterator for_each_n(InputIterator first, Size n, Function f); \end{itemdecl} \begin{itemdescr} @@ -1742,22 +1781,22 @@ \indexlibrary{\idxcode{find_if_not}}% \begin{itemdecl} template - InputIterator find(InputIterator first, InputIterator last, - const T& value); + constexpr InputIterator find(InputIterator first, InputIterator last, + const T& value); template ForwardIterator find(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, const T& value); template - InputIterator find_if(InputIterator first, InputIterator last, - Predicate pred); + constexpr InputIterator find_if(InputIterator first, InputIterator last, + Predicate pred); template ForwardIterator find_if(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Predicate pred); template - InputIterator find_if_not(InputIterator first, InputIterator last, - Predicate pred); + constexpr InputIterator find_if_not(InputIterator first, InputIterator last, + Predicate pred); template ForwardIterator find_if_not(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Predicate pred); @@ -1787,7 +1826,7 @@ \indexlibrary{\idxcode{find_end}}% \begin{itemdecl} template - ForwardIterator1 + constexpr ForwardIterator1 find_end(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2); template @@ -1798,7 +1837,7 @@ template - ForwardIterator1 + constexpr ForwardIterator1 find_end(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate pred); @@ -1842,7 +1881,7 @@ \indexlibrary{\idxcode{find_first_of}}% \begin{itemdecl} template - InputIterator + constexpr InputIterator find_first_of(InputIterator first1, InputIterator last1, ForwardIterator first2, ForwardIterator last2); template @@ -1853,7 +1892,7 @@ template - InputIterator + constexpr InputIterator find_first_of(InputIterator first1, InputIterator last1, ForwardIterator first2, ForwardIterator last2, BinaryPredicate pred); @@ -1898,18 +1937,22 @@ \indexlibrary{\idxcode{adjacent_find}}% \begin{itemdecl} template - ForwardIterator adjacent_find(ForwardIterator first, ForwardIterator last); + constexpr ForwardIterator + adjacent_find(ForwardIterator first, ForwardIterator last); template - ForwardIterator adjacent_find(ExecutionPolicy&& exec, - ForwardIterator first, ForwardIterator last); + ForwardIterator + adjacent_find(ExecutionPolicy&& exec, + ForwardIterator first, ForwardIterator last); template - ForwardIterator adjacent_find(ForwardIterator first, ForwardIterator last, - BinaryPredicate pred); + constexpr ForwardIterator + adjacent_find(ForwardIterator first, ForwardIterator last, + BinaryPredicate pred); template - ForwardIterator adjacent_find(ExecutionPolicy&& exec, - ForwardIterator first, ForwardIterator last, - BinaryPredicate pred); + ForwardIterator + adjacent_find(ExecutionPolicy&& exec, + ForwardIterator first, ForwardIterator last, + BinaryPredicate pred); \end{itemdecl} \begin{itemdescr} @@ -1946,18 +1989,20 @@ \indexlibrary{\idxcode{count_if}}% \begin{itemdecl} template - typename iterator_traits::difference_type + constexpr typename iterator_traits::difference_type count(InputIterator first, InputIterator last, const T& value); template typename iterator_traits::difference_type - count(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, const T& value); + count(ExecutionPolicy&& exec, + ForwardIterator first, ForwardIterator last, const T& value); template - typename iterator_traits::difference_type + constexpr typename iterator_traits::difference_type count_if(InputIterator first, InputIterator last, Predicate pred); template typename iterator_traits::difference_type - count_if(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Predicate pred); + count_if(ExecutionPolicy&& exec, + ForwardIterator first, ForwardIterator last, Predicate pred); \end{itemdecl} \begin{itemdescr} @@ -1982,7 +2027,7 @@ \indexlibrary{\idxcode{mismatch}}% \begin{itemdecl} template - pair + constexpr pair mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2); template @@ -1993,7 +2038,7 @@ template - pair + constexpr pair mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, BinaryPredicate pred); template - pair + constexpr pair mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2); template @@ -2015,7 +2060,7 @@ template - pair + constexpr pair mismatch(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, BinaryPredicate pred); @@ -2056,8 +2101,8 @@ \indexlibrary{\idxcode{equal}}% \begin{itemdecl} template - bool equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2); + constexpr bool equal(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2); template bool equal(ExecutionPolicy&& exec, ForwardIterator1 first1, ForwardIterator1 last1, @@ -2065,8 +2110,8 @@ template - bool equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, BinaryPredicate pred); + constexpr bool equal(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, BinaryPredicate pred); template bool equal(ExecutionPolicy&& exec, @@ -2074,8 +2119,8 @@ ForwardIterator2 first2, BinaryPredicate pred); template - bool equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2); + constexpr bool equal(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2); template bool equal(ExecutionPolicy&& exec, ForwardIterator1 first1, ForwardIterator1 last1, @@ -2083,9 +2128,9 @@ template - bool equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - BinaryPredicate pred); + constexpr bool equal(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + BinaryPredicate pred); template bool equal(ExecutionPolicy&& exec, @@ -2162,20 +2207,20 @@ \indexlibrary{\idxcode{is_permutation}}% \begin{itemdecl} template - bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2); + constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2); template - bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, BinaryPredicate pred); + class BinaryPredicate> + constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, BinaryPredicate pred); template - bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2); + constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2); template - bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - BinaryPredicate pred); + class BinaryPredicate> + constexpr bool is_permutation(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + BinaryPredicate pred); \end{itemdecl} \begin{itemdescr} @@ -2211,7 +2256,7 @@ \indexlibrary{\idxcode{search}}% \begin{itemdecl} template - ForwardIterator1 + constexpr ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2); template @@ -2222,7 +2267,7 @@ template - ForwardIterator1 + constexpr ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2, BinaryPredicate pred); @@ -2266,21 +2311,21 @@ \indexlibrary{\idxcode{search_n}}% \begin{itemdecl} template - ForwardIterator - search_n(ForwardIterator first, ForwardIterator last, Size count, - const T& value); - -template - ForwardIterator - search_n(ForwardIterator first, ForwardIterator last, Size count, - const T& value, BinaryPredicate pred); - + constexpr ForwardIterator + search_n(ForwardIterator first, ForwardIterator last, + Size count, const T& value); template ForwardIterator search_n(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Size count, const T& value); + +template + constexpr ForwardIterator + search_n(ForwardIterator first, ForwardIterator last, + Size count, const T& value, + BinaryPredicate pred); template ForwardIterator @@ -2325,8 +2370,8 @@ \indexlibrary{\idxcode{search}}% \begin{itemdecl} template - ForwardIterator search(ForwardIterator first, ForwardIterator last, - const Searcher& searcher); + constexpr ForwardIterator + search(ForwardIterator first, ForwardIterator last, const Searcher& searcher); \end{itemdecl} \begin{itemdescr} @@ -2347,8 +2392,8 @@ \indexlibrary{\idxcode{copy}}% \begin{itemdecl} template - OutputIterator copy(InputIterator first, InputIterator last, - OutputIterator result); + constexpr OutputIterator copy(InputIterator first, InputIterator last, + OutputIterator result); \end{itemdecl} \begin{itemdescr} @@ -2394,8 +2439,8 @@ \indexlibrary{\idxcode{copy_n}}% \begin{itemdecl} template - OutputIterator copy_n(InputIterator first, Size n, - OutputIterator result); + constexpr OutputIterator copy_n(InputIterator first, Size n, + OutputIterator result); template ForwardIterator2 copy_n(ExecutionPolicy&& exec, ForwardIterator1 first, Size n, @@ -2417,9 +2462,10 @@ \indexlibrary{\idxcode{copy_if}}% \begin{itemdecl} template - OutputIterator copy_if(InputIterator first, InputIterator last, - OutputIterator result, Predicate pred); -template + constexpr OutputIterator copy_if(InputIterator first, InputIterator last, + OutputIterator result, Predicate pred); +template ForwardIterator2 copy_if(ExecutionPolicy&& exec, ForwardIterator1 first, ForwardIterator1 last, ForwardIterator2 result, Predicate pred); @@ -2451,7 +2497,7 @@ \indexlibrary{\idxcode{copy_backward}}% \begin{itemdecl} template - BidirectionalIterator2 + constexpr BidirectionalIterator2 copy_backward(BidirectionalIterator1 first, BidirectionalIterator1 last, BidirectionalIterator2 result); @@ -2497,7 +2543,8 @@ \indexlibrary{\idxcode{move}!algorithm}% \begin{itemdecl} template - OutputIterator move(InputIterator first, InputIterator last, OutputIterator result); + constexpr OutputIterator move(InputIterator first, InputIterator last, + OutputIterator result); \end{itemdecl} \begin{itemdescr} @@ -2557,9 +2604,8 @@ \indexlibrary{\idxcode{move_backward}}% \begin{itemdecl} template - BidirectionalIterator2 - move_backward(BidirectionalIterator1 first, - BidirectionalIterator1 last, + constexpr BidirectionalIterator2 + move_backward(BidirectionalIterator1 first, BidirectionalIterator1 last, BidirectionalIterator2 result); \end{itemdecl} @@ -2664,7 +2710,7 @@ \begin{itemdecl} template - OutputIterator + constexpr OutputIterator transform(InputIterator first, InputIterator last, OutputIterator result, UnaryOperation op); template - OutputIterator + constexpr OutputIterator transform(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, OutputIterator result, BinaryOperation binary_op); @@ -2739,16 +2785,16 @@ \indexlibrary{\idxcode{replace_if}}% \begin{itemdecl} template - void replace(ForwardIterator first, ForwardIterator last, - const T& old_value, const T& new_value); + constexpr void replace(ForwardIterator first, ForwardIterator last, + const T& old_value, const T& new_value); template void replace(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, const T& old_value, const T& new_value); template - void replace_if(ForwardIterator first, ForwardIterator last, - Predicate pred, const T& new_value); + constexpr void replace_if(ForwardIterator first, ForwardIterator last, + Predicate pred, const T& new_value); template void replace_if(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, @@ -2782,7 +2828,7 @@ \indexlibrary{\idxcode{replace_copy_if}}% \begin{itemdecl} template - OutputIterator + constexpr OutputIterator replace_copy(InputIterator first, InputIterator last, OutputIterator result, const T& old_value, const T& new_value); @@ -2794,7 +2840,7 @@ const T& old_value, const T& new_value); template - OutputIterator + constexpr OutputIterator replace_copy_if(InputIterator first, InputIterator last, OutputIterator result, Predicate pred, const T& new_value); @@ -2858,13 +2904,13 @@ \indexlibrary{\idxcode{fill_n}}% \begin{itemdecl} template - void fill(ForwardIterator first, ForwardIterator last, const T& value); + constexpr void fill(ForwardIterator first, ForwardIterator last, const T& value); template void fill(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, const T& value); template - OutputIterator fill_n(OutputIterator first, Size n, const T& value); + constexpr OutputIterator fill_n(OutputIterator first, Size n, const T& value); template ForwardIterator fill_n(ExecutionPolicy&& exec, ForwardIterator first, Size n, const T& value); @@ -2904,15 +2950,15 @@ \indexlibrary{\idxcode{generate_n}}% \begin{itemdecl} template - void generate(ForwardIterator first, ForwardIterator last, - Generator gen); + constexpr void generate(ForwardIterator first, ForwardIterator last, + Generator gen); template void generate(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Generator gen); template - OutputIterator generate_n(OutputIterator first, Size n, Generator gen); + constexpr OutputIterator generate_n(OutputIterator first, Size n, Generator gen); template ForwardIterator generate_n(ExecutionPolicy&& exec, ForwardIterator first, Size n, Generator gen); @@ -2952,16 +2998,16 @@ \indexlibrary{\idxcode{remove_if}}% \begin{itemdecl} template - ForwardIterator remove(ForwardIterator first, ForwardIterator last, - const T& value); + constexpr ForwardIterator remove(ForwardIterator first, ForwardIterator last, + const T& value); template ForwardIterator remove(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, const T& value); template - ForwardIterator remove_if(ForwardIterator first, ForwardIterator last, - Predicate pred); + constexpr ForwardIterator remove_if(ForwardIterator first, ForwardIterator last, + Predicate pred); template ForwardIterator remove_if(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, @@ -3010,20 +3056,22 @@ \indexlibrary{\idxcode{remove_copy_if}}% \begin{itemdecl} template - OutputIterator + constexpr OutputIterator remove_copy(InputIterator first, InputIterator last, OutputIterator result, const T& value); -template +template ForwardIterator2 remove_copy(ExecutionPolicy&& exec, ForwardIterator1 first, ForwardIterator1 last, ForwardIterator2 result, const T& value); template - OutputIterator + constexpr OutputIterator remove_copy_if(InputIterator first, InputIterator last, OutputIterator result, Predicate pred); -template +template ForwardIterator2 remove_copy_if(ExecutionPolicy&& exec, ForwardIterator1 first, ForwardIterator1 last, @@ -3072,14 +3120,14 @@ \indexlibrary{\idxcode{unique}}% \begin{itemdecl} template - ForwardIterator unique(ForwardIterator first, ForwardIterator last); + constexpr ForwardIterator unique(ForwardIterator first, ForwardIterator last); template ForwardIterator unique(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last); template - ForwardIterator unique(ForwardIterator first, ForwardIterator last, - BinaryPredicate pred); + constexpr ForwardIterator unique(ForwardIterator first, ForwardIterator last, + BinaryPredicate pred); template ForwardIterator unique(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, @@ -3119,7 +3167,7 @@ \indexlibrary{\idxcode{unique_copy}}% \begin{itemdecl} template - OutputIterator + constexpr OutputIterator unique_copy(InputIterator first, InputIterator last, OutputIterator result); template @@ -3130,7 +3178,7 @@ template - OutputIterator + constexpr OutputIterator unique_copy(InputIterator first, InputIterator last, OutputIterator result, BinaryPredicate pred); template - OutputIterator + constexpr OutputIterator reverse_copy(BidirectionalIterator first, BidirectionalIterator last, OutputIterator result); template @@ -3333,7 +3381,7 @@ \indexlibrary{\idxcode{rotate_copy}}% \begin{itemdecl} template - OutputIterator + constexpr OutputIterator rotate_copy(ForwardIterator first, ForwardIterator middle, ForwardIterator last, OutputIterator result); template @@ -3811,7 +3859,7 @@ \indexlibrary{\idxcode{is_sorted}}% \begin{itemdecl} template - bool is_sorted(ForwardIterator first, ForwardIterator last); + constexpr bool is_sorted(ForwardIterator first, ForwardIterator last); \end{itemdecl} \begin{itemdescr} @@ -3835,8 +3883,8 @@ \indexlibrary{\idxcode{is_sorted}}% \begin{itemdecl} template - bool is_sorted(ForwardIterator first, ForwardIterator last, - Compare comp); + constexpr bool is_sorted(ForwardIterator first, ForwardIterator last, + Compare comp); \end{itemdecl} \begin{itemdescr} @@ -3865,18 +3913,22 @@ \indexlibrary{\idxcode{is_sorted_until}}% \begin{itemdecl} template - ForwardIterator is_sorted_until(ForwardIterator first, ForwardIterator last); + constexpr ForwardIterator + is_sorted_until(ForwardIterator first, ForwardIterator last); template - ForwardIterator is_sorted_until(ExecutionPolicy&& exec, - ForwardIterator first, ForwardIterator last); + ForwardIterator + is_sorted_until(ExecutionPolicy&& exec, + ForwardIterator first, ForwardIterator last); template - ForwardIterator is_sorted_until(ForwardIterator first, ForwardIterator last, - Compare comp); + constexpr ForwardIterator + is_sorted_until(ForwardIterator first, ForwardIterator last, + Compare comp); template - ForwardIterator is_sorted_until(ExecutionPolicy&& exec, - ForwardIterator first, ForwardIterator last, - Compare comp); + ForwardIterator + is_sorted_until(ExecutionPolicy&& exec, + ForwardIterator first, ForwardIterator last, + Compare comp); \end{itemdecl} @@ -3967,12 +4019,12 @@ \indexlibrary{\idxcode{lower_bound}}% \begin{itemdecl} template - ForwardIterator + constexpr ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, const T& value); template - ForwardIterator + constexpr ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, const T& value, Compare comp); \end{itemdecl} @@ -4016,12 +4068,12 @@ \indexlibrary{\idxcode{upper_bound}}% \begin{itemdecl} template - ForwardIterator + constexpr ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last, const T& value); template - ForwardIterator + constexpr ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last, const T& value, Compare comp); \end{itemdecl} @@ -4065,12 +4117,12 @@ \indexlibrary{\idxcode{equal_range}}% \begin{itemdecl} template - pair + constexpr pair equal_range(ForwardIterator first, ForwardIterator last, const T& value); template - pair + constexpr pair equal_range(ForwardIterator first, ForwardIterator last, const T& value, Compare comp); @@ -4127,12 +4179,14 @@ \indexlibrary{\idxcode{binary_search}}% \begin{itemdecl} template - bool binary_search(ForwardIterator first, ForwardIterator last, - const T& value); + constexpr bool + binary_search(ForwardIterator first, ForwardIterator last, + const T& value); template - bool binary_search(ForwardIterator first, ForwardIterator last, - const T& value, Compare comp); + constexpr bool + binary_search(ForwardIterator first, ForwardIterator last, + const T& value, Compare comp); \end{itemdecl} \begin{itemdescr} @@ -4186,7 +4240,7 @@ \indexlibrary{\idxcode{is_partitioned}}% \begin{itemdecl} template - bool is_partitioned(InputIterator first, InputIterator last, Predicate pred); + constexpr bool is_partitioned(InputIterator first, InputIterator last, Predicate pred); template bool is_partitioned(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Predicate pred); @@ -4308,7 +4362,7 @@ \begin{itemdecl} template - pair + constexpr pair partition_copy(InputIterator first, InputIterator last, OutputIterator1 out_true, OutputIterator2 out_false, Predicate pred); @@ -4360,9 +4414,9 @@ \indexlibrary{\idxcode{partition_point}}% \begin{itemdecl} template - ForwardIterator partition_point(ForwardIterator first, - ForwardIterator last, - Predicate pred); + constexpr ForwardIterator + partition_point(ForwardIterator first, ForwardIterator last, + Predicate pred); \end{itemdecl} @@ -4383,7 +4437,7 @@ \begin{itemdecl} template - OutputIterator + constexpr OutputIterator merge(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result); @@ -4397,7 +4451,7 @@ template - OutputIterator + constexpr OutputIterator merge(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); @@ -4527,17 +4581,17 @@ \indexlibrary{\idxcode{includes}}% \begin{itemdecl} template - bool includes(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2); + constexpr bool includes(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2); template bool includes(ExecutionPolicy&& exec, ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, ForwardIterator2 last2); template - bool includes(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - Compare comp); + constexpr bool includes(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + Compare comp); template bool includes(ExecutionPolicy&& exec, ForwardIterator1 first1, ForwardIterator1 last1, @@ -4571,7 +4625,7 @@ \begin{itemdecl} template - OutputIterator + constexpr OutputIterator set_union(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result); @@ -4585,7 +4639,7 @@ template - OutputIterator + constexpr OutputIterator set_union(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); @@ -4632,7 +4686,7 @@ \begin{itemdecl} template - OutputIterator + constexpr OutputIterator set_intersection(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result); @@ -4646,7 +4700,7 @@ template - OutputIterator + constexpr OutputIterator set_intersection(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); @@ -4692,7 +4746,7 @@ \begin{itemdecl} template - OutputIterator + constexpr OutputIterator set_difference(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result); @@ -4706,7 +4760,7 @@ template - OutputIterator + constexpr OutputIterator set_difference(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); @@ -4765,7 +4819,7 @@ \begin{itemdecl} template - OutputIterator + constexpr OutputIterator set_symmetric_difference(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result); @@ -4779,7 +4833,7 @@ template - OutputIterator + constexpr OutputIterator set_symmetric_difference(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp); @@ -5010,7 +5064,7 @@ \indexlibrary{\idxcode{is_heap}}% \begin{itemdecl} template - bool is_heap(RandomAccessIterator first, RandomAccessIterator last); + constexpr bool is_heap(RandomAccessIterator first, RandomAccessIterator last); \end{itemdecl} \begin{itemdescr} @@ -5035,7 +5089,8 @@ \indexlibrary{\idxcode{is_heap}}% \begin{itemdecl} template - bool is_heap(RandomAccessIterator first, RandomAccessIterator last, Compare comp); + constexpr bool is_heap(RandomAccessIterator first, RandomAccessIterator last, + Compare comp); \end{itemdecl} \begin{itemdescr} @@ -5048,7 +5103,8 @@ \begin{itemdecl} template bool is_heap(ExecutionPolicy&& exec, - RandomAccessIterator first, RandomAccessIterator last, Compare comp); + RandomAccessIterator first, RandomAccessIterator last, + Compare comp); \end{itemdecl} \begin{itemdescr} @@ -5063,18 +5119,22 @@ \indexlibrary{\idxcode{is_heap_until}}% \begin{itemdecl} template - RandomAccessIterator is_heap_until(RandomAccessIterator first, RandomAccessIterator last); + constexpr RandomAccessIterator is_heap_until( + RandomAccessIterator first, RandomAccessIterator last); template - RandomAccessIterator is_heap_until(ExecutionPolicy&& exec, - RandomAccessIterator first, RandomAccessIterator last); + RandomAccessIterator is_heap_until( + ExecutionPolicy&& exec, + RandomAccessIterator first, RandomAccessIterator last); template - RandomAccessIterator is_heap_until(RandomAccessIterator first, RandomAccessIterator last, - Compare comp); + constexpr RandomAccessIterator is_heap_until( + RandomAccessIterator first, RandomAccessIterator last, + Compare comp); template - RandomAccessIterator is_heap_until(ExecutionPolicy&& exec, - RandomAccessIterator first, RandomAccessIterator last, - Compare comp); + RandomAccessIterator is_heap_until( + ExecutionPolicy&& exec, + RandomAccessIterator first, RandomAccessIterator last, + Compare comp); \end{itemdecl} @@ -5411,7 +5471,7 @@ \indexlibrary{\idxcode{lexicographical_compare}}% \begin{itemdecl} template - bool + constexpr bool lexicographical_compare(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2); template @@ -5421,11 +5481,12 @@ ForwardIterator2 first2, ForwardIterator2 last2); template - bool + constexpr bool lexicographical_compare(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, Compare comp); -template +template bool lexicographical_compare(ExecutionPolicy&& exec, ForwardIterator1 first1, ForwardIterator1 last1, diff --git a/source/utilities.tex b/source/utilities.tex index e52f16b9ba..5844c51453 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -54,7 +54,7 @@ // \ref{utility.exchange}, exchange template - T exchange(T& obj, U&& new_val); + constexpr T exchange(T& obj, U&& new_val); // \ref{forward}, forward/move template @@ -248,7 +248,8 @@ \indexlibrary{\idxcode{exchange}}% \begin{itemdecl} -template T exchange(T& obj, U&& new_val); +template + constexpr T exchange(T& obj, U&& new_val); \end{itemdecl} \begin{itemdescr} From 27d185cb48a69c105dbb2675978d20a039d2b026 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 17:51:31 -0800 Subject: [PATCH 099/168] [algorithm.syn] Fix indenting of parameters in count_if, fill_n, merge, and set_union in synopsis. --- source/algorithms.tex | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index c2f528ffc6..1e01a8e863 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -165,7 +165,7 @@ template typename iterator_traits::difference_type count_if(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator first, ForwardIterator last, Predicate pred); + ForwardIterator first, ForwardIterator last, Predicate pred); // \ref{mismatch}, mismatch template @@ -427,7 +427,7 @@ template ForwardIterator fill_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator first, Size n, const T& value); + ForwardIterator first, Size n, const T& value); // \ref{alg.generate}, generate template @@ -752,15 +752,15 @@ template ForwardIterator merge(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - ForwardIterator result); + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + ForwardIterator result); template ForwardIterator merge(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - ForwardIterator result, Compare comp); + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + ForwardIterator result, Compare comp); template void inplace_merge(BidirectionalIterator first, @@ -809,15 +809,15 @@ template ForwardIterator set_union(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - ForwardIterator result); + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + ForwardIterator result); template ForwardIterator set_union(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - ForwardIterator result, Compare comp); + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + ForwardIterator result, Compare comp); template constexpr OutputIterator set_intersection( From 653d5a76386490e11eebec0c92009802158ec4a7 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 17:54:51 -0800 Subject: [PATCH 100/168] [algorithm.syn],[alg.*] Remove space in "template <" for consistency. --- source/algorithms.tex | 50 +++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index 1e01a8e863..ef1fe8b6d9 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -32,23 +32,23 @@ namespace std { // \ref{alg.nonmodifying}, non-modifying sequence operations // \ref{alg.all_of}, all of - template + template constexpr bool all_of(InputIterator first, InputIterator last, Predicate pred); - template + template bool all_of(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Predicate pred); // \ref{alg.any_of}, any of - template + template constexpr bool any_of(InputIterator first, InputIterator last, Predicate pred); - template + template bool any_of(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Predicate pred); // \ref{alg.none_of}, none of - template + template constexpr bool none_of(InputIterator first, InputIterator last, Predicate pred); - template + template bool none_of(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Predicate pred); @@ -300,7 +300,7 @@ Size count, const T& value, BinaryPredicate pred); - template + template constexpr ForwardIterator search(ForwardIterator first, ForwardIterator last, const Searcher& searcher); @@ -554,9 +554,9 @@ UniformRandomBitGenerator&& g); // \ref{alg.partitions}, partitions - template + template constexpr bool is_partitioned(InputIterator first, InputIterator last, Predicate pred); - template + template bool is_partitioned(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, Predicate pred); @@ -578,14 +578,14 @@ BidirectionalIterator first, BidirectionalIterator last, Predicate pred); - template + template constexpr pair partition_copy(InputIterator first, InputIterator last, OutputIterator1 out_true, OutputIterator2 out_false, Predicate pred); - template + template pair partition_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, @@ -1525,9 +1525,9 @@ \indexlibrary{\idxcode{all_of}}% \begin{itemdecl} -template +template constexpr bool all_of(InputIterator first, InputIterator last, Predicate pred); -template +template bool all_of(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Predicate pred); \end{itemdecl} @@ -1546,9 +1546,9 @@ \indexlibrary{\idxcode{any_of}}% \begin{itemdecl} -template +template constexpr bool any_of(InputIterator first, InputIterator last, Predicate pred); -template +template bool any_of(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Predicate pred); \end{itemdecl} @@ -1567,9 +1567,9 @@ \indexlibrary{\idxcode{none_of}}% \begin{itemdecl} -template +template constexpr bool none_of(InputIterator first, InputIterator last, Predicate pred); -template +template bool none_of(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Predicate pred); \end{itemdecl} @@ -4191,10 +4191,10 @@ \indexlibrary{\idxcode{is_partitioned}}% \begin{itemdecl} -template +template constexpr bool is_partitioned(InputIterator first, InputIterator last, Predicate pred); -template +template bool is_partitioned(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, Predicate pred); @@ -4314,14 +4314,14 @@ \indexlibrary{\idxcode{partition_copy}}% \begin{itemdecl} -template +template constexpr pair partition_copy(InputIterator first, InputIterator last, OutputIterator1 out_true, OutputIterator2 out_false, Predicate pred); -template +template pair partition_copy(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, From fbff35efe44df78558a2ab35250a1e56c957aee7 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 18:14:24 -0800 Subject: [PATCH 101/168] [algorithm.syn] Reformat functions to not end in "(" for consistency. --- source/algorithms.tex | 238 +++++++++++++++++++++--------------------- 1 file changed, 119 insertions(+), 119 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index ef1fe8b6d9..e1afbac208 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -262,26 +262,26 @@ // \ref{alg.search}, search template - constexpr ForwardIterator1 search( - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2); + constexpr ForwardIterator1 + search(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2); template - constexpr ForwardIterator1 search( - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - BinaryPredicate pred); + constexpr ForwardIterator1 + search(ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + BinaryPredicate pred); template - ForwardIterator1 search( - ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2); + ForwardIterator1 + search(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2); template - ForwardIterator1 search( - ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - BinaryPredicate pred); + ForwardIterator1 + search(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + BinaryPredicate pred); template constexpr ForwardIterator search_n(ForwardIterator first, ForwardIterator last, Size count, const T& value); @@ -330,9 +330,9 @@ ForwardIterator1 first, ForwardIterator1 last, ForwardIterator2 result, Predicate pred); template - constexpr BidirectionalIterator2 copy_backward( - BidirectionalIterator1 first, BidirectionalIterator1 last, - BidirectionalIterator2 result); + constexpr BidirectionalIterator2 + copy_backward(BidirectionalIterator1 first, BidirectionalIterator1 last, + BidirectionalIterator2 result); // \ref{alg.move}, move template @@ -344,9 +344,9 @@ ForwardIterator1 first, ForwardIterator1 last, ForwardIterator2 result); template - constexpr BidirectionalIterator2 move_backward( - BidirectionalIterator1 first, BidirectionalIterator1 last, - BidirectionalIterator2 result); + constexpr BidirectionalIterator2 + move_backward(BidirectionalIterator1 first, BidirectionalIterator1 last, + BidirectionalIterator2 result); // \ref{alg.swap}, swap template @@ -531,14 +531,14 @@ ForwardIterator middle, ForwardIterator last); template - constexpr OutputIterator rotate_copy( - ForwardIterator first, ForwardIterator middle, - ForwardIterator last, OutputIterator result); + constexpr OutputIterator + rotate_copy(ForwardIterator first, ForwardIterator middle, + ForwardIterator last, OutputIterator result); template - ForwardIterator2 rotate_copy( - ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first, ForwardIterator1 middle, - ForwardIterator1 last, ForwardIterator2 result); + ForwardIterator2 + rotate_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first, ForwardIterator1 middle, + ForwardIterator1 last, ForwardIterator2 result); // \ref{alg.random.sample}, sample template - RandomAccessIterator partial_sort_copy( - InputIterator first, InputIterator last, - RandomAccessIterator result_first, - RandomAccessIterator result_last); + RandomAccessIterator + partial_sort_copy(InputIterator first, InputIterator last, + RandomAccessIterator result_first, + RandomAccessIterator result_last); template - RandomAccessIterator partial_sort_copy( - InputIterator first, InputIterator last, - RandomAccessIterator result_first, - RandomAccessIterator result_last, - Compare comp); + RandomAccessIterator + partial_sort_copy(InputIterator first, InputIterator last, + RandomAccessIterator result_first, + RandomAccessIterator result_last, + Compare comp); template - RandomAccessIterator partial_sort_copy( - ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator first, ForwardIterator last, - RandomAccessIterator result_first, - RandomAccessIterator result_last); + RandomAccessIterator + partial_sort_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator first, ForwardIterator last, + RandomAccessIterator result_first, + RandomAccessIterator result_last); template - RandomAccessIterator partial_sort_copy( - ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator first, ForwardIterator last, - RandomAccessIterator result_first, - RandomAccessIterator result_last, - Compare comp); + RandomAccessIterator + partial_sort_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator first, ForwardIterator last, + RandomAccessIterator result_first, + RandomAccessIterator result_last, + Compare comp); template constexpr bool is_sorted(ForwardIterator first, ForwardIterator last); template @@ -820,79 +820,79 @@ ForwardIterator result, Compare comp); template - constexpr OutputIterator set_intersection( - InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result); + constexpr OutputIterator + set_intersection(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + OutputIterator result); template - constexpr OutputIterator set_intersection( - InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result, Compare comp); + constexpr OutputIterator + set_intersection(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + OutputIterator result, Compare comp); template - ForwardIterator set_intersection( - ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - ForwardIterator result); + ForwardIterator + set_intersection(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + ForwardIterator result); template - ForwardIterator set_intersection( - ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - ForwardIterator result, Compare comp); + ForwardIterator + set_intersection(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + ForwardIterator result, Compare comp); template - constexpr OutputIterator set_difference( - InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result); + constexpr OutputIterator + set_difference(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + OutputIterator result); template - constexpr OutputIterator set_difference( - InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result, Compare comp); + constexpr OutputIterator + set_difference(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + OutputIterator result, Compare comp); template - ForwardIterator set_difference( - ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - ForwardIterator result); + ForwardIterator + set_difference(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + ForwardIterator result); template - ForwardIterator set_difference( - ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - ForwardIterator result, Compare comp); + ForwardIterator + set_difference(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + ForwardIterator result, Compare comp); template - constexpr OutputIterator set_symmetric_difference( - InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result); + constexpr OutputIterator + set_symmetric_difference(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + OutputIterator result); template - constexpr OutputIterator set_symmetric_difference( - InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result, Compare comp); + constexpr OutputIterator + set_symmetric_difference(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + OutputIterator result, Compare comp); template - ForwardIterator set_symmetric_difference( - ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - ForwardIterator result); + ForwardIterator + set_symmetric_difference(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + ForwardIterator result); template - ForwardIterator set_symmetric_difference( - ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - ForwardIterator result, Compare comp); + ForwardIterator + set_symmetric_difference(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + ForwardIterator result, Compare comp); // \ref{alg.heap.operations}, heap operations template @@ -1019,26 +1019,26 @@ // \ref{alg.lex.comparison}, lexicographical comparison template - constexpr bool lexicographical_compare( - InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2); + constexpr bool + lexicographical_compare(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2); template - constexpr bool lexicographical_compare( - InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - Compare comp); + constexpr bool + lexicographical_compare(InputIterator1 first1, InputIterator1 last1, + InputIterator2 first2, InputIterator2 last2, + Compare comp); template - bool lexicographical_compare( - ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2); + bool + lexicographical_compare(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2); template - bool lexicographical_compare( - ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} - ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - Compare comp); + bool + lexicographical_compare(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} + ForwardIterator1 first1, ForwardIterator1 last1, + ForwardIterator2 first2, ForwardIterator2 last2, + Compare comp); // \ref{alg.3way}, three-way comparison algorithms template From ce0fe92223e2ed15ddb0ec298ab72005df327fa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Wed, 15 Nov 2017 23:54:47 +0000 Subject: [PATCH 102/168] P0415R1 Constexpr for std::complex Editorial changes: * Add section references to header synopsis * Rearrange whitespace in the header synopsis * Add Oxford comma to the change in [cmplx.over] * Rearrage assignment operators for long double specialization class definition --- source/numerics.tex | 225 ++++++++++++++++++++++---------------------- 1 file changed, 112 insertions(+), 113 deletions(-) diff --git a/source/numerics.tex b/source/numerics.tex index 0b57a1e38f..c94e6471e8 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -292,37 +292,35 @@ \indexlibrary{\idxhdr{complex}}% \begin{codeblock} namespace std { + // \ref{complex}, class template \tcode{complex} template class complex; + + // \ref{complex.special}, \tcode{complex} specializations template<> class complex; template<> class complex; template<> class complex; // \ref{complex.ops}, operators - template - complex operator+(const complex&, const complex&); - template complex operator+(const complex&, const T&); - template complex operator+(const T&, const complex&); - - template complex operator-( - const complex&, const complex&); - template complex operator-(const complex&, const T&); - template complex operator-(const T&, const complex&); - - template complex operator*( - const complex&, const complex&); - template complex operator*(const complex&, const T&); - template complex operator*(const T&, const complex&); - - template complex operator/( - const complex&, const complex&); - template complex operator/(const complex&, const T&); - template complex operator/(const T&, const complex&); - - template complex operator+(const complex&); - template complex operator-(const complex&); - - template constexpr bool operator==( - const complex&, const complex&); + template constexpr complex operator+(const complex&, const complex&); + template constexpr complex operator+(const complex&, const T&); + template constexpr complex operator+(const T&, const complex&); + + template constexpr complex operator-(const complex&, const complex&); + template constexpr complex operator-(const complex&, const T&); + template constexpr complex operator-(const T&, const complex&); + + template constexpr complex operator*(const complex&, const complex&); + template constexpr complex operator*(const complex&, const T&); + template constexpr complex operator*(const T&, const complex&); + + template constexpr complex operator/(const complex&, const complex&); + template constexpr complex operator/(const complex&, const T&); + template constexpr complex operator/(const T&, const complex&); + + template constexpr complex operator+(const complex&); + template constexpr complex operator-(const complex&); + + template constexpr bool operator==(const complex&, const complex&); template constexpr bool operator==(const complex&, const T&); template constexpr bool operator==(const T&, const complex&); @@ -342,9 +340,9 @@ template T abs(const complex&); template T arg(const complex&); - template T norm(const complex&); + template constexpr T norm(const complex&); - template complex conj(const complex&); + template constexpr complex conj(const complex&); template complex proj(const complex&); template complex polar(const T&, const T& = T()); @@ -401,22 +399,22 @@ template constexpr complex(const complex&); constexpr T real() const; - void real(T); + constexpr void real(T); constexpr T imag() const; - void imag(T); - - complex& operator= (const T&); - complex& operator+=(const T&); - complex& operator-=(const T&); - complex& operator*=(const T&); - complex& operator/=(const T&); - - complex& operator=(const complex&); - template complex& operator= (const complex&); - template complex& operator+=(const complex&); - template complex& operator-=(const complex&); - template complex& operator*=(const complex&); - template complex& operator/=(const complex&); + constexpr void imag(T); + + constexpr complex& operator= (const T&); + constexpr complex& operator+=(const T&); + constexpr complex& operator-=(const T&); + constexpr complex& operator*=(const T&); + constexpr complex& operator/=(const T&); + + constexpr complex& operator=(const complex&); + template constexpr complex& operator= (const complex&); + template constexpr complex& operator+=(const complex&); + template constexpr complex& operator-=(const complex&); + template constexpr complex& operator*=(const complex&); + template constexpr complex& operator/=(const complex&); }; } \end{codeblock} @@ -445,22 +443,22 @@ constexpr explicit complex(const complex&); constexpr float real() const; - void real(float); + constexpr void real(float); constexpr float imag() const; - void imag(float); - - complex& operator= (float); - complex& operator+=(float); - complex& operator-=(float); - complex& operator*=(float); - complex& operator/=(float); - - complex& operator=(const complex&); - template complex& operator= (const complex&); - template complex& operator+=(const complex&); - template complex& operator-=(const complex&); - template complex& operator*=(const complex&); - template complex& operator/=(const complex&); + constexpr void imag(float); + + constexpr complex& operator= (float); + constexpr complex& operator+=(float); + constexpr complex& operator-=(float); + constexpr complex& operator*=(float); + constexpr complex& operator/=(float); + + constexpr complex& operator=(const complex&); + template constexpr complex& operator= (const complex&); + template constexpr complex& operator+=(const complex&); + template constexpr complex& operator-=(const complex&); + template constexpr complex& operator*=(const complex&); + template constexpr complex& operator/=(const complex&); }; template<> class complex { @@ -472,22 +470,22 @@ constexpr explicit complex(const complex&); constexpr double real() const; - void real(double); + constexpr void real(double); constexpr double imag() const; - void imag(double); - - complex& operator= (double); - complex& operator+=(double); - complex& operator-=(double); - complex& operator*=(double); - complex& operator/=(double); - - complex& operator=(const complex&); - template complex& operator= (const complex&); - template complex& operator+=(const complex&); - template complex& operator-=(const complex&); - template complex& operator*=(const complex&); - template complex& operator/=(const complex&); + constexpr void imag(double); + + constexpr complex& operator= (double); + constexpr complex& operator+=(double); + constexpr complex& operator-=(double); + constexpr complex& operator*=(double); + constexpr complex& operator/=(double); + + constexpr complex& operator=(const complex&); + template constexpr complex& operator= (const complex&); + template constexpr complex& operator+=(const complex&); + template constexpr complex& operator-=(const complex&); + template constexpr complex& operator*=(const complex&); + template constexpr complex& operator/=(const complex&); }; template<> class complex { @@ -499,22 +497,22 @@ constexpr complex(const complex&); constexpr long double real() const; - void real(long double); + constexpr void real(long double); constexpr long double imag() const; - void imag(long double); - - complex& operator=(const complex&); - complex& operator= (long double); - complex& operator+=(long double); - complex& operator-=(long double); - complex& operator*=(long double); - complex& operator/=(long double); - - template complex& operator= (const complex&); - template complex& operator+=(const complex&); - template complex& operator-=(const complex&); - template complex& operator*=(const complex&); - template complex& operator/=(const complex&); + constexpr void imag(long double); + + constexpr complex& operator= (long double); + constexpr complex& operator+=(long double); + constexpr complex& operator-=(long double); + constexpr complex& operator*=(long double); + constexpr complex& operator/=(long double); + + constexpr complex& operator=(const complex&); + template constexpr complex& operator= (const complex&); + template constexpr complex& operator+=(const complex&); + template constexpr complex& operator-=(const complex&); + template constexpr complex& operator*=(const complex&); + template constexpr complex& operator/=(const complex&); }; } \end{codeblock} @@ -549,7 +547,7 @@ \indexlibrarymember{real}{complex}% \begin{itemdecl} -void real(T val); +constexpr void real(T val); \end{itemdecl} \begin{itemdescr} @@ -569,7 +567,7 @@ \indexlibrarymember{imag}{complex}% \begin{itemdecl} -void imag(T val); +constexpr void imag(T val); \end{itemdecl} \begin{itemdescr} @@ -581,7 +579,7 @@ \indexlibrarymember{operator+=}{complex}% \begin{itemdecl} -complex& operator+=(const T& rhs); +constexpr complex& operator+=(const T& rhs); \end{itemdecl} \begin{itemdescr} @@ -600,7 +598,7 @@ \indexlibrarymember{operator-=}{complex}% \begin{itemdecl} -complex& operator-=(const T& rhs); +constexpr complex& operator-=(const T& rhs); \end{itemdecl} \begin{itemdescr} @@ -619,7 +617,7 @@ \indexlibrarymember{operator*=}{complex}% \begin{itemdecl} -complex& operator*=(const T& rhs); +constexpr complex& operator*=(const T& rhs); \end{itemdecl} \begin{itemdescr} @@ -637,7 +635,7 @@ \indexlibrarymember{operator/=}{complex}% \begin{itemdecl} -complex& operator/=(const T& rhs); +constexpr complex& operator/=(const T& rhs); \end{itemdecl} \begin{itemdescr} @@ -655,7 +653,7 @@ \indexlibrarymember{operator+=}{complex}% \begin{itemdecl} -template complex& operator+=(const complex& rhs); +template constexpr complex& operator+=(const complex& rhs); \end{itemdecl} \begin{itemdescr} @@ -673,7 +671,7 @@ \indexlibrarymember{operator-=}{complex}% \begin{itemdecl} -template complex& operator-=(const complex& rhs); +template constexpr complex& operator-=(const complex& rhs); \end{itemdecl} \begin{itemdescr} @@ -691,7 +689,7 @@ \indexlibrarymember{operator*=}{complex}% \begin{itemdecl} -template complex& operator*=(const complex& rhs); +template constexpr complex& operator*=(const complex& rhs); \end{itemdecl} \begin{itemdescr} @@ -709,7 +707,7 @@ \indexlibrarymember{operator/=}{complex}% \begin{itemdecl} -template complex& operator/=(const complex& rhs); +template constexpr complex& operator/=(const complex& rhs); \end{itemdecl} \begin{itemdescr} @@ -729,7 +727,7 @@ \indexlibrarymember{operator+}{complex}% \begin{itemdecl} -template complex operator+(const complex& lhs); +template constexpr complex operator+(const complex& lhs); \end{itemdecl} \begin{itemdescr} @@ -743,9 +741,9 @@ \end{itemdescr} \begin{itemdecl} -template complex operator+(const complex& lhs, const complex& rhs); -template complex operator+(const complex& lhs, const T& rhs); -template complex operator+(const T& lhs, const complex& rhs); +template constexpr complex operator+(const complex& lhs, const complex& rhs); +template constexpr complex operator+(const complex& lhs, const T& rhs); +template constexpr complex operator+(const T& lhs, const complex& rhs); \end{itemdecl} \begin{itemdescr} @@ -756,7 +754,7 @@ \indexlibrarymember{operator-}{complex}% \begin{itemdecl} -template complex operator-(const complex& lhs); +template constexpr complex operator-(const complex& lhs); \end{itemdecl} \begin{itemdescr} @@ -771,9 +769,9 @@ \indexlibrarymember{operator-}{complex}% \begin{itemdecl} -template complex operator-(const complex& lhs, const complex& rhs); -template complex operator-(const complex& lhs, const T& rhs); -template complex operator-(const T& lhs, const complex& rhs); +template constexpr complex operator-(const complex& lhs, const complex& rhs); +template constexpr complex operator-(const complex& lhs, const T& rhs); +template constexpr complex operator-(const T& lhs, const complex& rhs); \end{itemdecl} \begin{itemdescr} @@ -784,9 +782,9 @@ \indexlibrarymember{operator*}{complex}% \begin{itemdecl} -template complex operator*(const complex& lhs, const complex& rhs); -template complex operator*(const complex& lhs, const T& rhs); -template complex operator*(const T& lhs, const complex& rhs); +template constexpr complex operator*(const complex& lhs, const complex& rhs); +template constexpr complex operator*(const complex& lhs, const T& rhs); +template constexpr complex operator*(const T& lhs, const complex& rhs); \end{itemdecl} \begin{itemdescr} @@ -797,9 +795,9 @@ \indexlibrarymember{operator/}{complex}% \begin{itemdecl} -template complex operator/(const complex& lhs, const complex& rhs); -template complex operator/(const complex& lhs, const T& rhs); -template complex operator/(const T& lhs, const complex& rhs); +template constexpr complex operator/(const complex& lhs, const complex& rhs); +template constexpr complex operator/(const complex& lhs, const T& rhs); +template constexpr complex operator/(const T& lhs, const complex& rhs); \end{itemdecl} \begin{itemdescr} @@ -964,7 +962,7 @@ \indexlibrary{\idxcode{norm}!\idxcode{complex}}% \begin{itemdecl} -template T norm(const complex& x); +template constexpr T norm(const complex& x); \end{itemdecl} \begin{itemdescr} @@ -975,7 +973,7 @@ \indexlibrary{\idxcode{conj}!\idxcode{complex}}% \begin{itemdecl} -template complex conj(const complex& x); +template constexpr complex conj(const complex& x); \end{itemdecl} \begin{itemdescr} @@ -1284,6 +1282,7 @@ conj proj imag real \end{codeblock} +where \tcode{norm}, \tcode{conj}, \tcode{imag}, and \tcode{real} are \tcode{constexpr} overloads. \pnum \indextext{overloads!floating-point}% From cbfaf1c0f76cce187bc9e2572c9be87f392f5609 Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Thu, 16 Nov 2017 12:57:50 -0800 Subject: [PATCH 103/168] P0718R2 Atomic shared_ptr [util.smartptr.atomic.shared] Improve punctuation and fix formatting of Effects clauses. [util.smartptr.atomic] Apply memory_order enum changes from P0439R0. [util.smartptr.atomic] Capitalize headings. --- source/future.tex | 242 +++++++++++++++++++ source/utilities.tex | 553 ++++++++++++++++++++++++++++++++----------- 2 files changed, 652 insertions(+), 143 deletions(-) diff --git a/source/future.tex b/source/future.tex index f9801e4f00..7e1bcaad77 100644 --- a/source/future.tex +++ b/source/future.tex @@ -2267,6 +2267,248 @@ \pnum\returns \tcode{use_count() == 1}. \end{itemdescr} +\rSec1[depr.util.smartptr.shared.atomic]{Deprecated \tcode{shared_ptr} atomic access} + +\pnum +The header \tcode{} has the following additions: + +\indexlibrary{\idxcode{shared_ptr}}% +\begin{codeblock} +namespace std { + template + bool atomic_is_lock_free(const shared_ptr* p); + + template + shared_ptr atomic_load(const shared_ptr* p); + template + shared_ptr atomic_load_explicit(const shared_ptr* p, memory_order mo); + + template + void atomic_store(shared_ptr* p, shared_ptr r); + template + void atomic_store_explicit(shared_ptr* p, shared_ptr r, memory_order mo); + + template + shared_ptr atomic_exchange(shared_ptr* p, shared_ptr r); + template + shared_ptr atomic_exchange_explicit(shared_ptr* p, shared_ptr r, memory_order mo); + + template + bool atomic_compare_exchange_weak(shared_ptr* p, shared_ptr* v, shared_ptr w); + template + bool atomic_compare_exchange_strong(shared_ptr* p, shared_ptr* v, shared_ptr w); + template + bool atomic_compare_exchange_weak_explicit( + shared_ptr* p, shared_ptr* v, shared_ptr w, + memory_order success, memory_order failure); + template + bool atomic_compare_exchange_strong_explicit( + shared_ptr* p, shared_ptr* v, shared_ptr w, + memory_order success, memory_order failure); +} +\end{codeblock} + +\pnum +Concurrent access to a \tcode{shared_ptr} object from multiple threads does not +introduce a data race if the access is done exclusively via the functions in +this subclause and the instance is passed as their first argument. + +\pnum +The meaning of the arguments of type \tcode{memory_order} is explained in~\ref{atomics.order}. + +\indexlibrarymember{atomic_is_lock_free}{shared_ptr}% +\begin{itemdecl} +template bool atomic_is_lock_free(const shared_ptr* p); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires \tcode{p} shall not be null. + +\pnum +\returns \tcode{true} if atomic access to \tcode{*p} is lock-free, \tcode{false} otherwise. + +\pnum +\throws Nothing. +\end{itemdescr} + +\indexlibrarymember{atomic_load}{shared_ptr}% +\begin{itemdecl} +template shared_ptr atomic_load(const shared_ptr* p); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires \tcode{p} shall not be null. + +\pnum +\returns \tcode{atomic_load_explicit(p, memory_order_seq_cst)}. + +\pnum +\throws Nothing. +\end{itemdescr} + +\indexlibrarymember{atomic_load_explicit}{shared_ptr}% +\begin{itemdecl} +template shared_ptr atomic_load_explicit(const shared_ptr* p, memory_order mo); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires \tcode{p} shall not be null. + +\pnum +\requires \tcode{mo} shall not be \tcode{memory_order_release} or \tcode{memory_order_acq_rel}. + +\pnum +\returns \tcode{*p}. + +\pnum +\throws Nothing. +\end{itemdescr} + +\indexlibrarymember{atomic_store}{shared_ptr}% +\begin{itemdecl} +template void atomic_store(shared_ptr* p, shared_ptr r); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires \tcode{p} shall not be null. + +\pnum +\effects As if by \tcode{atomic_store_explicit(p, r, memory_order_seq_cst)}. + +\pnum +\throws Nothing. +\end{itemdescr} + +\indexlibrarymember{atomic_store_explicit}{shared_ptr}% +\begin{itemdecl} +template void atomic_store_explicit(shared_ptr* p, shared_ptr r, memory_order mo); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires \tcode{p} shall not be null. + +\pnum +\requires \tcode{mo} shall not be \tcode{memory_order_acquire} or \tcode{memory_order_acq_rel}. + +\pnum +\effects As if by \tcode{p->swap(r)}. + +\pnum +\throws Nothing. +\end{itemdescr} + +\indexlibrarymember{atomic_exchange}{shared_ptr}% +\begin{itemdecl} +template shared_ptr atomic_exchange(shared_ptr* p, shared_ptr r); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires \tcode{p} shall not be null. + +\pnum +\returns \tcode{atomic_exchange_explicit(p, r, memory_order_seq_cst)}. + +\pnum +\throws Nothing. +\end{itemdescr} + +\indexlibrarymember{atomic_exchange_explicit}{shared_ptr}% +\begin{itemdecl} +template + shared_ptr atomic_exchange_explicit(shared_ptr* p, shared_ptr r, memory_order mo); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires \tcode{p} shall not be null. + +\pnum +\effects As if by \tcode{p->swap(r)}. + +\pnum +\returns The previous value of \tcode{*p}. + +\pnum +\throws Nothing. +\end{itemdescr} + +\indexlibrarymember{atomic_compare_exchange_weak}{shared_ptr}% +\begin{itemdecl} +template + bool atomic_compare_exchange_weak(shared_ptr* p, shared_ptr* v, shared_ptr w); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires \tcode{p} shall not be null and \tcode{v} shall not be null. + +\pnum +\returns +\begin{codeblock} +atomic_compare_exchange_weak_explicit(p, v, w, memory_order_seq_cst, memory_order_seq_cst) +\end{codeblock} + +\pnum +\throws Nothing. +\end{itemdescr} + +\indexlibrarymember{atomic_compare_exchange_strong}{shared_ptr}% +\begin{itemdecl} +template + bool atomic_compare_exchange_strong(shared_ptr* p, shared_ptr* v, shared_ptr w); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\returns +\begin{codeblock} +atomic_compare_exchange_strong_explicit(p, v, w, memory_order_seq_cst, memory_order_seq_cst) +\end{codeblock} +\end{itemdescr} + +\indexlibrarymember{atomic_compare_exchange_weak_explicit}{shared_ptr}% +\indexlibrarymember{atomic_compare_exchange_strong_explicit}{shared_ptr}% +\begin{itemdecl} +template + bool atomic_compare_exchange_weak_explicit( + shared_ptr* p, shared_ptr* v, shared_ptr w, + memory_order success, memory_order failure); +template + bool atomic_compare_exchange_strong_explicit( + shared_ptr* p, shared_ptr* v, shared_ptr w, + memory_order success, memory_order failure); +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires \tcode{p} shall not be null and \tcode{v} shall not be null. +The \tcode{failure} argument shall not be \tcode{memory_order_release} nor +\tcode{memory_order_acq_rel}. + +\pnum +\effects If \tcode{*p} is equivalent to \tcode{*v}, assigns \tcode{w} to +\tcode{*p} and has synchronization semantics corresponding to the value of +\tcode{success}, otherwise assigns \tcode{*p} to \tcode{*v} and has +synchronization semantics corresponding to the value of \tcode{failure}. + +\pnum +\returns \tcode{true} if \tcode{*p} was equivalent to \tcode{*v}, \tcode{false} otherwise. + +\pnum +\throws Nothing. + +\pnum +\remarks Two \tcode{shared_ptr} objects are equivalent if they store the same +pointer value and share ownership. +The weak form may fail spuriously. See~\ref{atomics.types.operations}. +\end{itemdescr} + \rSec1[depr.locale.stdcvt]{Deprecated standard code conversion facets} \pnum diff --git a/source/utilities.tex b/source/utilities.tex index 5844c51453..b6a93a5d68 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -6767,45 +6767,15 @@ // \ref{util.smartptr.enab}, class template \tcode{enable_shared_from_this} template class enable_shared_from_this; - // \ref{util.smartptr.shared.atomic}, \tcode{shared_ptr} atomic access - template - bool atomic_is_lock_free(const shared_ptr* p); - - template - shared_ptr atomic_load(const shared_ptr* p); - template - shared_ptr atomic_load_explicit(const shared_ptr* p, memory_order mo); - - template - void atomic_store(shared_ptr* p, shared_ptr r); - template - void atomic_store_explicit(shared_ptr* p, shared_ptr r, memory_order mo); - - template - shared_ptr atomic_exchange(shared_ptr* p, shared_ptr r); - template - shared_ptr atomic_exchange_explicit(shared_ptr* p, shared_ptr r, memory_order mo); - - template - bool atomic_compare_exchange_weak( - shared_ptr* p, shared_ptr* v, shared_ptr w); - template - bool atomic_compare_exchange_strong( - shared_ptr* p, shared_ptr* v, shared_ptr w); - template - bool atomic_compare_exchange_weak_explicit( - shared_ptr* p, shared_ptr* v, shared_ptr w, - memory_order success, memory_order failure); - template - bool atomic_compare_exchange_strong_explicit( - shared_ptr* p, shared_ptr* v, shared_ptr w, - memory_order success, memory_order failure); - // \ref{util.smartptr.hash}, hash support template struct hash; template struct hash>; template struct hash>; + // \ref{util.smartptr.atomic}, atomic smart pointers + template struct atomic>; + template struct atomic>; + // \ref{allocator.uses.trait}, \tcode{uses_allocator} template inline constexpr bool uses_allocator_v = uses_allocator::value; @@ -10469,7 +10439,7 @@ \end{itemdecl} \begin{itemdescr} -\pnum\effects Equivalent to \tcode{a.swap(b)}. +\pnum\effects Equivalent to \tcode{a.swap(b)}. \end{itemdescr} \rSec3[util.smartptr.ownerless]{Class template \tcode{owner_less}} @@ -10613,248 +10583,545 @@ \pnum\returns \tcode{weak_this}. \end{itemdescr} -\rSec3[util.smartptr.shared.atomic]{\tcode{shared_ptr} atomic access} +\rSec3[util.smartptr.hash]{Smart pointer hash support} -\pnum -Concurrent access to a \tcode{shared_ptr} object from multiple threads does not -introduce a data race if the access is done exclusively via the functions in -this subclause and the instance is passed as their first argument. +\indexlibrary{\idxcode{hash}!\idxcode{unique_ptr}}% +\begin{itemdecl} +template struct hash>; +\end{itemdecl} +\begin{itemdescr} \pnum -The meaning of the arguments of type \tcode{memory_order} is explained in~\ref{atomics.order}. +Letting \tcode{UP} be \tcode{unique_ptr}, +the specialization \tcode{hash} is enabled\iref{unord.hash} +if and only if \tcode{hash} is enabled. +When enabled, for an object \tcode{p} of type \tcode{UP}, +\tcode{hash()(p)} shall evaluate to +the same value as \tcode{hash()(p.get())}. +The member functions are not guaranteed to be \tcode{noexcept}. +\end{itemdescr} -\indexlibrarymember{atomic_is_lock_free}{shared_ptr}% +\indexlibrary{\idxcode{hash}!\idxcode{shared_ptr}}% \begin{itemdecl} -template - bool atomic_is_lock_free(const shared_ptr* p); +template struct hash>; \end{itemdecl} \begin{itemdescr} \pnum -\requires \tcode{p} shall not be null. +For an object \tcode{p} of type \tcode{shared_ptr}, +\tcode{hash>()(p)} shall evaluate to +the same value as \tcode{hash::element_type*>()(p.get())}. +\end{itemdescr}% +\indextext{smart pointers|)} + +\indextext{Atomic smart pointers|(}% +\rSec2[util.smartptr.atomic]{Atomic specializations for smart pointers} \pnum -\returns \tcode{true} if atomic access to \tcode{*p} is lock-free, \tcode{false} otherwise. +The library provides partial specializations of the \tcode{atomic} template +for shared-ownership smart pointers. +The behavior of all operations is as specified in \ref{atomics.types.generic}, +unless specified otherwise. +The template parameter \tcode{T} of these partial specializations +may be an incomplete type. \pnum -\throws Nothing. +All changes to an atomic smart pointer in this subclause, and +all associated \tcode{use_count} increments, +are guaranteed to be performed atomically. +Associated \tcode{use_count} decrements +are sequenced after the atomic operation, +but are not required to be part of it. +Any associated deletion and deallocation +are sequenced after the atomic update step and +are not part of the atomic operation. +\begin{note} +If the atomic operation uses locks, +locks acquired by the implementation +will be held when any \tcode{use_count} adjustments are performed, and +will not be held when any destruction or deallocation +resulting from this is performed. +\end{note} + +\rSec3[util.smartptr.atomic.shared]{Atomic specialization for \tcode{shared_ptr}} +\indexlibrary{\idxcode{atomic>}}% +\begin{codeblock} +namespace std { + template struct atomic> { + using value_type = shared_ptr; + static constexpr bool is_always_lock_free = @\impdefx{whether a given \tcode{atomic} type's operations are always lock free}@; + + bool is_lock_free() const noexcept; + void store(shared_ptr desired, memory_order order = memory_order::seq_cst) noexcept; + shared_ptr load(memory_order order = memory_order::seq_cst) const noexcept; + operator shared_ptr() const noexcept; + + shared_ptr exchange(shared_ptr desired, + memory_order order = memory_order::seq_cst) noexcept; + + bool compare_exchange_weak(shared_ptr& expected, shared_ptr desired, + memory_order success, memory_order failure) noexcept; + bool compare_exchange_strong(shared_ptr& expected, shared_ptr desired, + memory_order success, memory_order failure) noexcept; + + bool compare_exchange_weak(shared_ptr& expected, shared_ptr desired, + memory_order order = memory_order::seq_cst) noexcept; + bool compare_exchange_strong(shared_ptr& expected, shared_ptr desired, + memory_order order = memory_order::seq_cst) noexcept; + + constexpr atomic() noexcept = default; + atomic(shared_ptr desired) noexcept; + atomic(const atomic&) = delete; + void operator=(const atomic&) = delete; + void operator=(shared_ptr desired) noexcept; + + private: + shared_ptr p; // \expos + }; +} +\end{codeblock} + +\indexlibrary{\idxcode{atomic>}!constructor}% +\begin{itemdecl} +constexpr atomic() noexcept = default; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Initializes \tcode{p\{\}}. \end{itemdescr} -\indexlibrarymember{atomic_load}{shared_ptr}% +\indexlibrary{\idxcode{atomic>}!constructor}% \begin{itemdecl} -template - shared_ptr atomic_load(const shared_ptr* p); +atomic(shared_ptr desired) noexcept; \end{itemdecl} \begin{itemdescr} \pnum -\requires \tcode{p} shall not be null. +\effects +Initializes the object with the value \tcode{desired}. +Initialization is not an atomic operation\iref{intro.multithread}. +\begin{note} +It is possible to have an access to +an atomic object \tcode{A} race with its construction, +for example, +by communicating the address of the just-constructed object \tcode{A} +to another thread via \tcode{memory_order::relaxed} operations +on a suitable atomic pointer variable, and +then immediately accessing \tcode{A} in the receiving thread. +This results in undefined behavior. +\end{note} +\end{itemdescr} + +\indexlibrarymember{store}{atomic>}% +\begin{itemdecl} +void store(shared_ptr desired, memory_order order = memory_order::seq_cst) noexcept; +\end{itemdecl} +\begin{itemdescr} \pnum -\returns \tcode{atomic_load_explicit(p, memory_order::seq_cst)}. +\requires +The \tcode{order} argument shall not be +\tcode{memory_order::consume}, +\tcode{memory_order::acquire}, nor +\tcode{memory_order::acq_rel}. \pnum -\throws Nothing. +\effects +Atomically replaces the value pointed to by \tcode{this} with +the value of \tcode{desired} as if by \tcode{p.swap(desired)}. +Memory is affected according to the value of \tcode{order}. \end{itemdescr} -\indexlibrarymember{atomic_load_explicit}{shared_ptr}% +\indexlibrarymember{operator=}{atomic>}% \begin{itemdecl} -template - shared_ptr atomic_load_explicit(const shared_ptr* p, memory_order mo); +void operator=(shared_ptr desired) noexcept; \end{itemdecl} \begin{itemdescr} \pnum -\requires \tcode{p} shall not be null. +\effects +Equivalent to \tcode{store(desired)}. +\end{itemdescr} +\indexlibrarymember{load}{atomic>}% +\begin{itemdecl} +shared_ptr load(memory_order order = memory_order::seq_cst) const noexcept; +\end{itemdecl} + +\begin{itemdescr} \pnum -\requires \tcode{mo} shall not be \tcode{memory_order::release} or \tcode{memory_order::acq_rel}. +\requires +\tcode{order} shall not be +\tcode{memory_order::release} nor \tcode{memory_order::acq_rel}. \pnum -\returns \tcode{*p}. +\effects +Memory is affected according to the value of \tcode{order}. \pnum -\throws Nothing. +\returns +Atomically returns \tcode{p}. \end{itemdescr} -\indexlibrarymember{atomic_store}{shared_ptr}% +\indexlibrarymember{operator shared_ptr}{atomic>}% \begin{itemdecl} -template - void atomic_store(shared_ptr* p, shared_ptr r); +operator shared_ptr() const noexcept; \end{itemdecl} \begin{itemdescr} \pnum -\requires \tcode{p} shall not be null. +\effects +Equivalent to: \tcode{return load();} +\end{itemdescr} + +\indexlibrarymember{exchange}{atomic>}% +\begin{itemdecl} +shared_ptr exchange(shared_ptr desired, memory_order order = memory_order::seq_cst) noexcept; +\end{itemdecl} +\begin{itemdescr} \pnum -\effects As if by \tcode{atomic_store_explicit(p, r, memory_order::seq_cst)}. +\effects +Atomically replaces \tcode{p} with \tcode{desired} +as if by \tcode{p.swap(desired)}. +Memory is affected according to the value of \tcode{order}. +This is an atomic read-modify-write operation\iref{intro.races}. \pnum -\throws Nothing. +\returns +Atomically returns the value of \tcode{p} immediately before the effects. \end{itemdescr} -\indexlibrarymember{atomic_store_explicit}{shared_ptr}% +\indexlibrarymember{compare_exchange_weak}{atomic>}% +\indexlibrarymember{compare_exchange_strong}{atomic>}% \begin{itemdecl} -template - void atomic_store_explicit(shared_ptr* p, shared_ptr r, memory_order mo); +bool compare_exchange_weak(shared_ptr& expected, shared_ptr desired, + memory_order success, memory_order failure) noexcept; +bool compare_exchange_strong(shared_ptr& expected, shared_ptr desired, + memory_order success, memory_order failure) noexcept; \end{itemdecl} \begin{itemdescr} \pnum -\requires \tcode{p} shall not be null. +\requires +\tcode{failure} shall not be +\tcode{memory_order::release} nor \tcode{memory_order::acq_rel}. + +\pnum +\effects +If \tcode{p} is equivalent to \tcode{expected}, +assigns \tcode{desired} to \tcode{p} and +has synchronization semantics corresponding to the value of \tcode{success}, +otherwise assigns \tcode{p} to \tcode{expected} and +has synchronization semantics corresponding to the value of \tcode{failure}. \pnum -\requires \tcode{mo} shall not be \tcode{memory_order::acquire} or \tcode{memory_order::acq_rel}. +\returns +\tcode{true} if \tcode{p} was equivalent to \tcode{expected}, +\tcode{false} otherwise. \pnum -\effects As if by \tcode{p->swap(r)}. +\remarks +Two \tcode{shared_ptr} objects are equivalent if +they store the same pointer value and +either share ownership, or both are empty. +The weak form may fail spuriously. See \ref{atomics.types.operations}. \pnum -\throws Nothing. +If the operation returns \tcode{true}, +\tcode{expected} is not accessed after the atomic update and +the operation is an atomic read-modify-write operation\iref{intro.multithread} +on the memory pointed to by \tcode{this}. +Otherwise, the operation is an atomic load operation on that memory, and +\tcode{expected} is updated with the existing value +read from the atomic object in the attempted atomic update. +The \tcode{use_count} update corresponding to the write to \tcode{expected} +is part of the atomic operation. +The write to \tcode{expected} itself +is not required to be part of the atomic operation. \end{itemdescr} -\indexlibrarymember{atomic_exchange}{shared_ptr}% +\indexlibrarymember{compare_exchange_weak}{atomic>}% \begin{itemdecl} -template - shared_ptr atomic_exchange(shared_ptr* p, shared_ptr r); +bool compare_exchange_weak(shared_ptr& expected, shared_ptr desired, + memory_order order = memory_order::seq_cst) noexcept; \end{itemdecl} \begin{itemdescr} \pnum -\requires \tcode{p} shall not be null. +\effects +Equivalent to: +\begin{codeblock} +return compare_exchange_weak(expected, desired, order, fail_order); +\end{codeblock} +where \tcode{fail_order} is the same as \tcode{order} +except that a value of \tcode{memory_order::acq_rel} +shall be replaced by the value \tcode{memory_order::acquire} and +a value of \tcode{memory_order::release} +shall be replaced by the value \tcode{memory_order::relaxed}. +\end{itemdescr} +\indexlibrarymember{compare_exchange_strong}{atomic>}% +\begin{itemdecl} +bool compare_exchange_strong(shared_ptr& expected, shared_ptr desired, + memory_order order = memory_order::seq_cst) noexcept; +\end{itemdecl} + +\begin{itemdescr} \pnum -\returns \tcode{atomic_exchange_explicit(p, r, memory_order::seq_cst)}. +\effects +Equivalent to: +\begin{codeblock} +return compare_exchange_strong(expected, desired, order, fail_order); +\end{codeblock} +where \tcode{fail_order} is the same as \tcode{order} +except that a value of \tcode{memory_order::acq_rel} +shall be replaced by the value \tcode{memory_order::acquire} and +a value of \tcode{memory_order::release} +shall be replaced by the value \tcode{memory_order::relaxed}. +\end{itemdescr} + +\rSec3[util.smartptr.atomic.weak]{Atomic specialization for \tcode{weak_ptr}} +\indexlibrary{\idxcode{atomic>}}% +\begin{codeblock} +namespace std { + template struct atomic> { + using value_type = weak_ptr; + static constexpr bool is_always_lock_free = @\impdefx{whether a given \tcode{atomic} type's operations are always lock free}@; + + bool is_lock_free() const noexcept; + void store(weak_ptr desired, memory_order order = memory_order::seq_cst) noexcept; + weak_ptr load(memory_order order = memory_order::seq_cst) const noexcept; + operator weak_ptr() const noexcept; + + weak_ptr exchange(weak_ptr desired, + memory_order order = memory_order::seq_cst) noexcept; + + bool compare_exchange_weak(weak_ptr& expected, weak_ptr desired, + memory_order success, memory_order failure) noexcept; + bool compare_exchange_strong(weak_ptr& expected, weak_ptr desired, + memory_order success, memory_order failure) noexcept; + + bool compare_exchange_weak(weak_ptr& expected, weak_ptr desired, + memory_order order = memory_order::seq_cst) noexcept; + bool compare_exchange_strong(weak_ptr& expected, weak_ptr desired, + memory_order order = memory_order::seq_cst) noexcept; + + constexpr atomic() noexcept = default; + atomic(weak_ptr desired) noexcept; + atomic(const atomic&) = delete; + void operator=(const atomic&) = delete; + void operator=(weak_ptr desired) noexcept; + + private: + weak_ptr p; // \expos + }; +} +\end{codeblock} + +\indexlibrary{\idxcode{atomic>}!constructor}% +\begin{itemdecl} +constexpr atomic() noexcept = default; +\end{itemdecl} +\begin{itemdescr} \pnum -\throws Nothing. +\effects +Initializes \tcode{p\{\}}. \end{itemdescr} -\indexlibrarymember{atomic_exchange_explicit}{shared_ptr}% +\indexlibrary{\idxcode{atomic>}!constructor}% \begin{itemdecl} -template - shared_ptr atomic_exchange_explicit(shared_ptr* p, shared_ptr r, memory_order mo); +atomic(weak_ptr desired) noexcept; \end{itemdecl} \begin{itemdescr} \pnum -\requires \tcode{p} shall not be null. +\effects +Initializes the object with the value \tcode{desired}. +Initialization is not an atomic operation\iref{intro.multithread}. +\begin{note} +It is possible to have an access to +an atomic object \tcode{A} race with its construction, +for example, +by communicating the address of the just-constructed object \tcode{A} +to another thread via \tcode{memory_order::relaxed} operations +on a suitable atomic pointer variable, and +then immediately accessing \tcode{A} in the receiving thread. +This results in undefined behavior. +\end{note} +\end{itemdescr} + +\indexlibrarymember{store}{atomic>}% +\begin{itemdecl} +void store(weak_ptr desired, memory_order order = memory_order::seq_cst) noexcept; +\end{itemdecl} +\begin{itemdescr} \pnum -\effects As if by \tcode{p->swap(r)}. +\requires +The \tcode{order} argument shall not be +\tcode{memory_order::consume}, +\tcode{memory_order::acquire}, nor +\tcode{memory_order::acq_rel}. \pnum -\returns The previous value of \tcode{*p}. +\effects +Atomically replaces the value pointed to by \tcode{this} with +the value of \tcode{desired} as if by \tcode{p.swap(desired)}. +Memory is affected according to the value of \tcode{order}. +\end{itemdescr} +\indexlibrarymember{operator=}{atomic>}% +\begin{itemdecl} +void operator=(weak_ptr desired) noexcept; +\end{itemdecl} + +\begin{itemdescr} \pnum -\throws Nothing. +\effects +Equivalent to \tcode{store(desired)}. \end{itemdescr} -\indexlibrarymember{atomic_compare_exchange_weak}{shared_ptr}% +\indexlibrarymember{load}{atomic>}% \begin{itemdecl} -template - bool atomic_compare_exchange_weak(shared_ptr* p, shared_ptr* v, shared_ptr w); +weak_ptr load(memory_order order = memory_order::seq_cst) const noexcept; \end{itemdecl} \begin{itemdescr} \pnum -\requires \tcode{p} shall not be null and \tcode{v} shall not be null. +\requires +\tcode{order} shall not be +\tcode{memory_order::release} nor \tcode{memory_order::acq_rel}. + +\pnum +\effects +Memory is affected according to the value of \tcode{order}. \pnum \returns -\begin{codeblock} -atomic_compare_exchange_weak_explicit(p, v, w, memory_order::seq_cst, - memory_order::seq_cst) -\end{codeblock} +Atomically returns \tcode{p}. +\end{itemdescr} + +\indexlibrarymember{operator weak_ptr}{atomic>}% +\begin{itemdecl} +operator weak_ptr() const noexcept; +\end{itemdecl} +\begin{itemdescr} \pnum -\throws Nothing. +\effects +Equivalent to: \tcode{return load();} \end{itemdescr} -\indexlibrarymember{atomic_compare_exchange_strong}{shared_ptr}% +\indexlibrarymember{exchange}{atomic>}% \begin{itemdecl} -template - bool atomic_compare_exchange_strong(shared_ptr* p, shared_ptr* v, shared_ptr w); +weak_ptr exchange(weak_ptr desired, memory_order order = memory_order::seq_cst) noexcept; \end{itemdecl} \begin{itemdescr} +\pnum +\effects +Atomically replaces \tcode{p} with \tcode{desired} +as if by \tcode{p.swap(desired)}. +Memory is affected according to the value of \tcode{order}. +This is an atomic read-modify-write operation\iref{intro.races}. + \pnum \returns -\begin{codeblock} -atomic_compare_exchange_strong_explicit(p, v, w, memory_order::seq_cst, - memory_order::seq_cst) -\end{codeblock} +Atomically returns the value of \tcode{p} immediately before the effects. \end{itemdescr} -\indexlibrarymember{atomic_compare_exchange_weak_explicit}{shared_ptr}% -\indexlibrarymember{atomic_compare_exchange_strong_explicit}{shared_ptr}% +\indexlibrarymember{compare_exchange_weak}{atomic>}% \begin{itemdecl} -template - bool atomic_compare_exchange_weak_explicit( - shared_ptr* p, shared_ptr* v, shared_ptr w, - memory_order success, memory_order failure); -template - bool atomic_compare_exchange_strong_explicit( - shared_ptr* p, shared_ptr* v, shared_ptr w, - memory_order success, memory_order failure); +bool compare_exchange_weak(weak_ptr& expected, weak_ptr desired, + memory_order success, memory_order failure) noexcept; +bool compare_exchange_strong(weak_ptr& expected, weak_ptr desired, + memory_order success, memory_order failure) noexcept; \end{itemdecl} \begin{itemdescr} \pnum -\requires \tcode{p} shall not be null and \tcode{v} shall not be null. -The \tcode{failure} argument shall not be \tcode{memory_order::release} nor -\tcode{memory_order::acq_rel}. +\requires +\tcode{failure} shall not be +\tcode{memory_order::release} nor \tcode{memory_order::acq_rel}. \pnum -\effects If \tcode{*p} is equivalent to \tcode{*v}, assigns \tcode{w} to -\tcode{*p} and has synchronization semantics corresponding to the value of -\tcode{success}, otherwise assigns \tcode{*p} to \tcode{*v} and has -synchronization semantics corresponding to the value of \tcode{failure}. +\effects +If \tcode{p} is equivalent to \tcode{expected}, +assigns \tcode{desired} to \tcode{p} and +has synchronization semantics corresponding to the value of \tcode{success}, +otherwise assigns \tcode{p} to \tcode{expected} and +has synchronization semantics corresponding to the value of \tcode{failure}. \pnum -\returns \tcode{true} if \tcode{*p} was equivalent to \tcode{*v}, \tcode{false} otherwise. +\returns +\tcode{true} if \tcode{p} was equivalent to \tcode{expected}, +\tcode{false} otherwise. \pnum -\throws Nothing. +\remarks +Two \tcode{weak_ptr} objects are equivalent if +they store the same pointer value and +either share ownership, or both are empty. +The weak form may fail spuriously. See \ref{atomics.types.operations}. \pnum -\remarks Two \tcode{shared_ptr} objects are equivalent -if they store the same pointer value and share ownership, or -if they store the same pointer value and both are empty. -The weak form may fail spuriously. See~\ref{atomics.types.operations}. +If the operation returns \tcode{true}, +\tcode{expected} is not accessed after the atomic update and +the operation is an atomic read-modify-write operation\iref{intro.multithread} +on the memory pointed to by \tcode{this}. +Otherwise, the operation is an atomic load operation on that memory, and +\tcode{expected} is updated with the existing value +read from the atomic object in the attempted atomic update. +The \tcode{use_count} update corresponding to the write to \tcode{expected} +is part of the atomic operation. +The write to \tcode{expected} itself +is not required to be part of the atomic operation. \end{itemdescr} -\rSec3[util.smartptr.hash]{Smart pointer hash support} - -\indexlibrary{\idxcode{hash}!\idxcode{unique_ptr}}% +\indexlibrarymember{compare_exchange_weak}{atomic>}% \begin{itemdecl} -template struct hash>; +bool compare_exchange_weak(weak_ptr& expected, weak_ptr desired, + memory_order order = memory_order::seq_cst) noexcept; \end{itemdecl} \begin{itemdescr} \pnum -Letting \tcode{UP} be \tcode{unique_ptr}, -the specialization \tcode{hash} is enabled\iref{unord.hash} -if and only if \tcode{hash} is enabled. -When enabled, for an object \tcode{p} of type \tcode{UP}, -\tcode{hash()(p)} shall evaluate to -the same value as \tcode{hash()(p.get())}. -The member functions are not guaranteed to be \tcode{noexcept}. +\effects +Equivalent to: +\begin{codeblock} +return compare_exchange_weak(expected, desired, order, fail_order); +\end{codeblock} +where \tcode{fail_order} is the same as \tcode{order} +except that a value of \tcode{memory_order::acq_rel} +shall be replaced by the value \tcode{memory_order::acquire} and +a value of \tcode{memory_order::release} +shall be replaced by the value \tcode{memory_order::relaxed}. \end{itemdescr} -\indexlibrary{\idxcode{hash}!\idxcode{shared_ptr}}% +\indexlibrarymember{compare_exchange_strong}{atomic>}% \begin{itemdecl} -template struct hash>; +bool compare_exchange_strong(weak_ptr& expected, weak_ptr desired, + memory_order order = memory_order::seq_cst) noexcept; \end{itemdecl} \begin{itemdescr} \pnum -For an object \tcode{p} of type \tcode{shared_ptr}, -\tcode{hash>()(p)} shall evaluate to -the same value as \tcode{hash::element_type*>()(p.get())}. -\end{itemdescr}% -\indextext{smart pointers|)} +\effects +Equivalent to: +\begin{codeblock} +return compare_exchange_strong(expected, desired, order, fail_order); +\end{codeblock} +where \tcode{fail_order} is the same as \tcode{order} +except that a value of \tcode{memory_order::acq_rel} +shall be replaced by the value \tcode{memory_order::acquire} and +a value of \tcode{memory_order::release} +shall be replaced by the value \tcode{memory_order::relaxed}. +\end{itemdescr} +\indextext{atomic smart pointers|)} \rSec1[mem.res]{Memory resources} From 3926e1121edb92086d15b15df9d769d2d50a7303 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Wed, 15 Nov 2017 23:13:25 +0000 Subject: [PATCH 104/168] P0020R6 Floating point atomic --- source/atomics.tex | 158 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) diff --git a/source/atomics.tex b/source/atomics.tex index ddb0e14b28..198d7d0662 100644 --- a/source/atomics.tex +++ b/source/atomics.tex @@ -623,6 +623,7 @@ \indexlibrary{\idxcode{atomic}!constructor}% \indexlibrary{\idxcode{atomic}!constructor}% \indexlibrary{\idxcode{atomic<\placeholder{integral}>}!constructor}% +\indexlibrary{\idxcode{atomic<\placeholder{floating-point}>}!constructor}% \begin{itemdecl} atomic() noexcept = default; \end{itemdecl} @@ -639,6 +640,7 @@ \indexlibrary{\idxcode{atomic}!constructor}% \indexlibrary{\idxcode{atomic}!constructor}% \indexlibrary{\idxcode{atomic<\placeholder{integral}>}!constructor}% +\indexlibrary{\idxcode{atomic<\placeholder{floating-point}>}!constructor}% \begin{itemdecl} constexpr atomic(T desired) noexcept; \end{itemdecl} @@ -678,6 +680,7 @@ \indexlibrarymember{is_always_lock_free}{atomic}% \indexlibrarymember{is_always_lock_free}{atomic}% \indexlibrarymember{is_always_lock_free}{atomic<\placeholder{integral}>}% +\indexlibrarymember{is_always_lock_free}{atomic<\placeholder{floating-point}>}% \begin{itemdecl} static constexpr bool is_always_lock_free = @\impdefx{whether a given \tcode{atomic} type's operations are always lock free}@; \end{itemdecl} @@ -696,6 +699,7 @@ \indexlibrarymember{is_lock_free}{atomic}% \indexlibrarymember{is_lock_free}{atomic}% \indexlibrarymember{is_lock_free}{atomic<\placeholder{integral}>}% +\indexlibrarymember{is_lock_free}{atomic<\placeholder{floating-point}>}% \begin{itemdecl} bool is_lock_free() const volatile noexcept; bool is_lock_free() const noexcept; @@ -715,6 +719,7 @@ \indexlibrarymember{store}{atomic}% \indexlibrarymember{store}{atomic}% \indexlibrarymember{store}{atomic<\placeholder{integral}>}% +\indexlibrarymember{store}{atomic<\placeholder{floating-point}>}% \begin{itemdecl} void store(T desired, memory_order order = memory_order::seq_cst) volatile noexcept; void store(T desired, memory_order order = memory_order::seq_cst) noexcept; @@ -734,6 +739,7 @@ \indexlibrarymember{operator=}{atomic}% \indexlibrarymember{operator=}{atomic}% \indexlibrarymember{operator=}{atomic<\placeholder{integral}>}% +\indexlibrarymember{operator=}{atomic<\placeholder{floating-point}>}% \begin{itemdecl} T operator=(T desired) volatile noexcept; T operator=(T desired) noexcept; @@ -752,6 +758,7 @@ \indexlibrarymember{load}{atomic}% \indexlibrarymember{load}{atomic}% \indexlibrarymember{load}{atomic<\placeholder{integral}>}% +\indexlibrarymember{load}{atomic<\placeholder{floating-point}>}% \begin{itemdecl} T load(memory_order order = memory_order::seq_cst) const volatile noexcept; T load(memory_order order = memory_order::seq_cst) const noexcept; @@ -771,6 +778,7 @@ \indexlibrarymember{operator \placeholder{type}}{atomic}% \indexlibrarymember{operator T*}{atomic}% \indexlibrarymember{operator \placeholder{integral}}{atomic<\placeholder{integral}>}% +\indexlibrarymember{operator \placeholder{floating-point}}{atomic<\placeholder{floating-point}>}% \begin{itemdecl} operator T() const volatile noexcept; operator T() const noexcept; @@ -787,6 +795,7 @@ \indexlibrarymember{exchange}{atomic}% \indexlibrarymember{exchange}{atomic}% \indexlibrarymember{exchange}{atomic<\placeholder{integral}>}% +\indexlibrarymember{exchange}{atomic<\placeholder{floating-point}>}% \begin{itemdecl} T exchange(T desired, memory_order order = memory_order::seq_cst) volatile noexcept; T exchange(T desired, memory_order order = memory_order::seq_cst) noexcept; @@ -810,9 +819,11 @@ \indexlibrarymember{compare_exchange_weak}{atomic}% \indexlibrarymember{compare_exchange_weak}{atomic}% \indexlibrarymember{compare_exchange_weak}{atomic<\placeholder{integral}>}% +\indexlibrarymember{compare_exchange_weak}{atomic<\placeholder{floating-point}>}% \indexlibrarymember{compare_exchange_strong}{atomic}% \indexlibrarymember{compare_exchange_strong}{atomic}% \indexlibrarymember{compare_exchange_strong}{atomic<\placeholder{integral}>}% +\indexlibrarymember{compare_exchange_strong}{atomic<\placeholder{floating-point}>}% \begin{itemdecl} bool compare_exchange_weak(T& expected, T desired, memory_order success, memory_order failure) volatile noexcept; @@ -1116,6 +1127,153 @@ \effects Equivalent to: \tcode{return fetch_\placeholder{key}(operand) \placeholder{op} operand;} \end{itemdescr} +\rSec2[atomics.types.float]{Specializations for floating-point types} + +\indexlibrary{\idxcode{atomic<\placeholder{floating-point}>}}% +\pnum +There are specializations of the \tcode{atomic} +template for the floating-point types +\tcode{float}, +\tcode{double}, and +\tcode{long double}. +For each such floating-point type \tcode{\placeholdernc{floating-point}}, +the specialization \tcode{atomic<\placeholder{floating-point}>} +provides additional atomic operations appropriate to floating-point types. + +\begin{codeblock} +namespace std { + template<> struct atomic<@\placeholder{floating-point}@> { + static constexpr bool is_always_lock_free = @\impdefx{whether a given \tcode{atomic} type's operations are always lock free}@; + bool is_lock_free() const volatile noexcept; + bool is_lock_free() const noexcept; + void store(@\placeholdernc{floating-point}@, memory_order = memory_order_seq_cst) volatile noexcept; + void store(@\placeholdernc{floating-point}@, memory_order = memory_order_seq_cst) noexcept; + @\placeholdernc{floating-point}@ load(memory_order = memory_order_seq_cst) volatile noexcept; + @\placeholdernc{floating-point}@ load(memory_order = memory_order_seq_cst) noexcept; + operator @\placeholdernc{floating-point}@() volatile noexcept; + operator @\placeholdernc{floating-point}@() noexcept; + @\placeholdernc{floating-point}@ exchange(@\placeholdernc{floating-point}@, + memory_order = memory_order_seq_cst) volatile noexcept; + @\placeholdernc{floating-point}@ exchange(@\placeholdernc{floating-point}@, + memory_order = memory_order_seq_cst) noexcept; + bool compare_exchange_weak(@\placeholder{floating-point}@&, @\placeholdernc{floating-point}@, + memory_order, memory_order) volatile noexcept; + bool compare_exchange_weak(@\placeholder{floating-point}@&, @\placeholdernc{floating-point}@, + memory_order, memory_order) noexcept; + bool compare_exchange_strong(@\placeholder{floating-point}@&, @\placeholdernc{floating-point}@, + memory_order, memory_order) volatile noexcept; + bool compare_exchange_strong(@\placeholder{floating-point}@&, @\placeholdernc{floating-point}@, + memory_order, memory_order) noexcept; + bool compare_exchange_weak(@\placeholder{floating-point}@&, @\placeholdernc{floating-point}@, + memory_order = memory_order_seq_cst) volatile noexcept; + bool compare_exchange_weak(@\placeholder{floating-point}@&, @\placeholdernc{floating-point}@, + memory_order = memory_order_seq_cst) noexcept; + bool compare_exchange_strong(@\placeholder{floating-point}@&, @\placeholdernc{floating-point}@, + memory_order = memory_order_seq_cst) volatile noexcept; + bool compare_exchange_strong(@\placeholder{floating-point}@&, @\placeholdernc{floating-point}@, + memory_order = memory_order_seq_cst) noexcept; + + @\placeholdernc{floating-point}@ fetch_add(@\placeholdernc{floating-point}@, + memory_order = memory_order_seq_cst) volatile noexcept; + @\placeholdernc{floating-point}@ fetch_add(@\placeholdernc{floating-point}@, + memory_order = memory_order_seq_cst) noexcept; + @\placeholdernc{floating-point}@ fetch_sub(@\placeholdernc{floating-point}@, + memory_order = memory_order_seq_cst) volatile noexcept; + @\placeholdernc{floating-point}@ fetch_sub(@\placeholdernc{floating-point}@, + memory_order = memory_order_seq_cst) noexcept; + + atomic() noexcept = default; + constexpr atomic(@\placeholder{floating-point}@) noexcept; + atomic(const atomic&) = delete; + atomic& operator=(const atomic&) = delete; + atomic& operator=(const atomic&) volatile = delete; + @\placeholdernc{floating-point}@ operator=(@\placeholder{floating-point}@) volatile noexcept; + @\placeholdernc{floating-point}@ operator=(@\placeholder{floating-point}@) noexcept; + + @\placeholdernc{floating-point}@ operator+=(@\placeholder{floating-point}@) volatile noexcept; + @\placeholdernc{floating-point}@ operator+=(@\placeholder{floating-point}@) noexcept; + @\placeholdernc{floating-point}@ operator-=(@\placeholder{floating-point}@) volatile noexcept; + @\placeholdernc{floating-point}@ operator-=(@\placeholder{floating-point}@) noexcept; + }; +} +\end{codeblock} + +\pnum +The atomic floating-point specializations +are standard-layout structs. +They each have a trivial default constructor +and a trivial destructor. + +\pnum +Descriptions are provided below only for members that differ from the primary template. + +\pnum +The following operations perform arithmetic addition and subtraction computations. +The key, operator, and computation correspondence are identified in +Table~\ref{tab:atomic.arithmetic.computations}. + +\indexlibrary{\idxcode{atomic_fetch_add}}% +\indexlibrary{\idxcode{atomic_fetch_sub}}% +\indexlibrary{\idxcode{atomic_fetch_add_explicit}}% +\indexlibrary{\idxcode{atomic_fetch_sub_explicit}}% +\indexlibrarymember{fetch_add}{atomic<\placeholder{floating-point}>}% +\indexlibrarymember{fetch_sub}{atomic<\placeholder{floating-point}>}% +\begin{itemdecl} +T A::fetch_@\placeholdernc{key}@(T operand, memory_order order = memory_order_seq_cst) volatile noexcept; +T A::fetch_@\placeholdernc{key}@(T operand, memory_order order = memory_order_seq_cst) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Atomically replaces the value pointed to by \tcode{this} +with the result of the computation applied to the value pointed +to by \tcode{this} and the given \tcode{operand}. +Memory is affected according to the value of \tcode{order}. +These operations are atomic read-modify-write operations\iref{intro.multithread}. + +\pnum +\returns +Atomically, the value pointed to by \tcode{this} immediately before the effects. + +\pnum +\remarks +If the result is not a representable value for its type\iref{expr.pre} +the result is unspecified, but the operations otherwise have no undefined +behavior. Atomic arithmetic operations on \tcode{\placeholder{floating-point}} +should conform to the \tcode{std::numeric_limits<\placeholder{floating-point}>} +traits associated with the floating-point type\iref{limits.syn}. +The floating-point environment\iref{cfenv} for atomic arithmetic operations +on \tcode{\placeholder{floating-point}} may be different than the +calling thread's floating-point environment. +\end{itemdescr} + +\indexlibrarymember{operator+=}{atomic}% +\indexlibrarymember{operator-=}{atomic}% +\indexlibrarymember{operator+=}{atomic<\placeholder{floating-point}>}% +\indexlibrarymember{operator-=}{atomic<\placeholder{floating-point}>}% +\begin{itemdecl} +T operator @\placeholder{op}@=(T operand) volatile noexcept; +T operator @\placeholder{op}@=(T operand) noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Equivalent to: \tcode{return fetch_\placeholder{key}(operand) \placeholder{op} operand;} + +\pnum +\remarks +If the result is not a representable value for its type\iref{expr.pre} +the result is unspecified, but the operations otherwise have no undefined +behavior. Atomic arithmetic operations on \tcode{\placeholder{floating-point}} +should conform to the \tcode{std::numeric_limits<\placeholder{floating-point}>} +traits associated with the floating-point type\iref{limits.syn}. +The floating-point environment\iref{cfenv} for atomic arithmetic operations +on \tcode{\placeholder{floating-point}} may be different than the +calling thread's floating-point environment. +\end{itemdescr} + \rSec2[atomics.types.pointer]{Partial specialization for pointers} \indexlibrary{\idxcode{atomic}}% From 7649c82102b5415817900b73543fc4be063daf57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Tue, 14 Nov 2017 23:42:06 +0000 Subject: [PATCH 105/168] P0616R0 Depessimize numeric algorithms with std::move The wording changes have been applied to the intended place in the current working paper, with LWG approval, despite having been given relative to an older draft in P0616R0. --- source/numerics.tex | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/numerics.tex b/source/numerics.tex index c94e6471e8..e204a22f1a 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -8807,9 +8807,9 @@ with the initial value \tcode{init} and then modifies it with -\tcode{acc = acc + *i} +\tcode{acc = std::move(acc) + *i} or -\tcode{acc = binary_op(acc, *i)} +\tcode{acc = binary_op(std::move(acc), *i)} for every iterator \tcode{i} in the range \range{first}{last} @@ -8961,9 +8961,9 @@ with the initial value \tcode{init} and then modifying it with -\tcode{acc = acc + (*i1) * (*i2)} +\tcode{acc = std::move(acc) + (*i1) * (*i2)} or -\tcode{acc = binary_op1(acc, binary_op2(*i1, *i2))} +\tcode{acc = binary_op1(std::move(acc), binary_op2(*i1, *i2))} for every iterator \tcode{i1} in the range \range{first1}{last1} @@ -9114,7 +9114,7 @@ \pnum \requires \tcode{InputIterator}'s value type shall be constructible from the type of \tcode{*first}. -The result of the expression \tcode{acc + *i} or \tcode{binary_op(acc, *i)} shall be +The result of the expression \tcode{std::move(acc) + *i} or \tcode{binary_op(std::move(acc), *i)} shall be implicitly convertible to \tcode{InputIterator}'s value type. \tcode{acc} shall be writable\iref{iterator.requirements.general} to the \tcode{result} output iterator. In the ranges @@ -9130,7 +9130,7 @@ the function creates an accumulator \tcode{acc} whose type is \tcode{InputIterator}'s value type, initializes it with \tcode{*first}, and assigns the result to \tcode{*result}. For every iterator \tcode{i} in \range{first + 1}{last} -in order, \tcode{acc} is then modified by \tcode{acc = acc + *i} or \tcode{acc = binary_op(acc, *i)} +in order, \tcode{acc} is then modified by \tcode{acc = std::move(acc) + *i} or \tcode{acc = binary_op(std::move(acc), *i)} and the result is assigned to \tcode{*(result + (i - first))}. \pnum @@ -9540,8 +9540,8 @@ type shall be \tcode{MoveAssignable} (Table~\ref{tab:moveassignable}) and shall be constructible from the type of \tcode{*first}. \tcode{acc} (defined below) shall be writable\iref{iterator.requirements.general} to the \tcode{result} -output iterator. The result of the expression \tcode{val - acc} or -\tcode{binary_op(val, acc)} shall be writable to the \tcode{result} output iterator. +output iterator. The result of the expression \tcode{val - std::move(acc)} or +\tcode{binary_op(val, std::move(acc))} shall be writable to the \tcode{result} output iterator. \item For the overloads with an \tcode{ExecutionPolicy}, the value type of @@ -9567,7 +9567,7 @@ value type, initializes it with \tcode{*first}, and assigns the result to \tcode{*result}. For every iterator \tcode{i} in \range{first + 1}{last} in order, creates an object \tcode{val} whose type is \tcode{InputIterator}'s value type, initializes it -with \tcode{*i}, computes \tcode{val - acc} or \tcode{binary_op(val, acc)}, assigns the result +with \tcode{*i}, computes \tcode{val - std::move(acc)} or \tcode{binary_op(val, std::move(acc))}, assigns the result to \tcode{*(result + (i - first))}, and move assigns from \tcode{val} to \tcode{acc}. \pnum From 709bc663d984d859f4990e2e657da0e1a7faf73c Mon Sep 17 00:00:00 2001 From: Dawn Perchik Date: Wed, 15 Nov 2017 13:38:05 -0800 Subject: [PATCH 106/168] P0457R2 String Prefix and Suffix Checking --- source/strings.tex | 119 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) diff --git a/source/strings.tex b/source/strings.tex index c46904047b..0fa3f10101 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -1109,6 +1109,13 @@ int compare(const charT* s) const; int compare(size_type pos1, size_type n1, const charT* s) const; int compare(size_type pos1, size_type n1, const charT* s, size_type n2) const; + + bool starts_with(basic_string_view x) const noexcept; + bool starts_with(charT x) const noexcept; + bool starts_with(const charT* x) const; + bool ends_with(basic_string_view x) const noexcept; + bool ends_with(charT x) const noexcept; + bool ends_with(const charT* x) const; }; template x) const noexcept; +bool starts_with(charT x) const noexcept; +bool starts_with(const charT* x) const; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Equivalent to: +\begin{codeblock} +return basic_string_view(data(), size()).starts_with(x); +\end{codeblock} +\end{itemdescr} + +\rSec4[string.ends.with]{\tcode{basic_string::ends_with}} + +\indexlibrarymember{ends_with}{basic_string}% +\begin{itemdecl} +bool ends_with(basic_string_view x) const noexcept; +bool ends_with(charT x) const noexcept; +bool ends_with(const charT* x) const; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Equivalent to: +\begin{codeblock} +return basic_string_view(data(), size()).ends_with(x); +\end{codeblock} +\end{itemdescr} + \rSec2[string.nonmembers]{\tcode{basic_string} non-member functions} \indexlibrary{\idxcode{basic_string}} @@ -4703,6 +4746,13 @@ constexpr int compare(size_type pos1, size_type n1, const charT* s) const; constexpr int compare(size_type pos1, size_type n1, const charT* s, size_type n2) const; + constexpr bool starts_with(basic_string_view x) const noexcept; + constexpr bool starts_with(charT x) const noexcept; + constexpr bool starts_with(const charT* x) const; + constexpr bool ends_with(basic_string_view x) const noexcept; + constexpr bool ends_with(charT x) const noexcept; + constexpr bool ends_with(const charT* x) const; + constexpr size_type find(basic_string_view s, size_type pos = 0) const noexcept; constexpr size_type find(charT c, size_type pos = 0) const noexcept; constexpr size_type find(const charT* s, size_type pos, size_type n) const; @@ -5205,6 +5255,75 @@ Equivalent to: \tcode{return substr(pos1, n1).compare(basic_string_view(s, n2));} \end{itemdescr} +\indexlibrarymember{starts_with}{basic_string_view}% +\begin{itemdecl} +constexpr bool starts_with(basic_string_view x) const noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Equivalent to: \tcode{return compare(0, npos, x) == 0;} +\end{itemdescr} + +\indexlibrarymember{starts_with}{basic_string_view}% +\begin{itemdecl} +constexpr bool starts_with(charT x) const noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Equivalent to: \tcode{return starts_with(basic_string_view(\&x, 1));} +\end{itemdescr} + +\indexlibrarymember{starts_with}{basic_string_view}% +\begin{itemdecl} +constexpr bool starts_with(const charT* x) const; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Equivalent to: \tcode{return starts_with(basic_string_view(x));} +\end{itemdescr} + +\indexlibrarymember{ends_with}{basic_string_view}% +\begin{itemdecl} +constexpr bool ends_with(basic_string_view x) const noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Equivalent to: +\begin{codeblock} +return size() >= x.size() && compare(size() - x.size(), npos, x) == 0; +\end{codeblock} +\end{itemdescr} + +\indexlibrarymember{ends_with}{basic_string_view}% +\begin{itemdecl} +constexpr bool ends_with(charT x) const noexcept; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Equivalent to: \tcode{return ends_with(basic_string_view(\&x, 1));} +\end{itemdescr} + +\indexlibrarymember{ends_with}{basic_string_view}% +\begin{itemdecl} +constexpr bool ends_with(const charT* x) const; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\effects +Equivalent to: \tcode{return ends_with(basic_string_view(x));} +\end{itemdescr} + \rSec3[string.view.find]{Searching} \pnum From e13e3097e6c92f67b86458af9a3d4793b0aeb544 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Tue, 21 Nov 2017 01:49:37 +0000 Subject: [PATCH 107/168] [utilities] Add missing charconv entry to summary table --- source/utilities.tex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/utilities.tex b/source/utilities.tex index b6a93a5d68..12656209e3 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -28,7 +28,8 @@ \ref{time} & Time utilities & \tcode{} \\ & & \tcode{} \\ \rowsep \ref{type.index} & Type indexes & \tcode{} \\ \rowsep -\ref{execpol} & Execution policies & \tcode{} \\ +\ref{execpol} & Execution policies & \tcode{} \\ \rowsep +\ref{charconv} & Primitive numeric conversions & \tcode{} \\ \end{libsumtab} \rSec1[utility]{Utility components} From 628ac3d39143352eedf48fe4cccdb457b4ab2042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johel=20Ernesto=20Guerrero=20Pe=C3=B1a?= Date: Tue, 21 Nov 2017 06:40:48 -0400 Subject: [PATCH 108/168] [readme] Add Arch Linux getting started instructions (#1831) --- README.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.rst b/README.rst index 162aefdca4..3d61cca030 100644 --- a/README.rst +++ b/README.rst @@ -42,6 +42,15 @@ Install the following packages: dnf install texlive texlive-isodate texlive-relsize texlive-ulem texlive-fixme texlive-extract +----------------------------- +Getting Started on Arch Linux +----------------------------- + +Install the following packages: + + latex-mk from the Arch User Repository. + pacman -S texlive-latexextra + ------------ Instructions ------------ From 34efb74954df71e4065f2e4acae9c2dbcc558d26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johel=20Ernesto=20Guerrero=20Pe=C3=B1a?= Date: Tue, 21 Nov 2017 06:41:44 -0400 Subject: [PATCH 109/168] [swappable.requirements] Merge example comment into one line (#1829) Avoids having the comment over the closing brace. --- source/lib-intro.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/lib-intro.tex b/source/lib-intro.tex index 2ec72e6527..9137e6bc45 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -1681,8 +1681,8 @@ template void lv_swap(T& t1, T& t2) { using std::swap; - swap(t1, t2); // OK: uses swappable conditions for -} // lvalues of type \tcode{T} + swap(t1, t2); // OK: uses swappable conditions for lvalues of type \tcode{T} +} namespace N { struct A { int m; }; From a5c25539b2605d8e6817b43d48e359d24642d1b7 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 21 Nov 2017 11:46:26 +0100 Subject: [PATCH 110/168] [variant] Move 'Otherwise' to start of following bullet. (#1813) --- source/utilities.tex | 45 ++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/source/utilities.tex b/source/utilities.tex index 12656209e3..2681a0e21b 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -4171,19 +4171,20 @@ \effects \begin{itemize} \item -If neither \tcode{*this} nor \tcode{rhs} holds a value, there is no effect. Otherwise, +If neither \tcode{*this} nor \tcode{rhs} holds a value, there is no effect. \item -if \tcode{*this} holds a value but \tcode{rhs} does not, destroys the value -contained in \tcode{*this} and sets \tcode{*this} to not hold a value. Otherwise, +Otherwise, if \tcode{*this} holds a value but \tcode{rhs} does not, destroys the value +contained in \tcode{*this} and sets \tcode{*this} to not hold a value. \item -if \tcode{index() == $j$}, assigns the value contained in \tcode{rhs} -to the value contained in \tcode{*this}. Otherwise, +Otherwise, if \tcode{index() == $j$}, assigns the value contained in \tcode{rhs} +to the value contained in \tcode{*this}. \item -if either \tcode{is_nothrow_copy_constructible_v<$\tcode{T}_j$>} or -\tcode{!is_nothrow_move_constructible_v<$\tcode{T}_j$>} is \tcode{true}, -equivalent to \tcode{emplace<$j$>(get<$j$>(rhs))}. Otherwise, +Otherwise, if either \tcode{is_nothrow_copy_constructible_v<$\tcode{T}_j$>} +is \tcode{true} or +\tcode{is_nothrow_move_con\-structible_v<$\tcode{T}_j$>} is \tcode{false}, +equivalent to \tcode{emplace<$j$>(get<$j$>(rhs))}. \item -equivalent to \tcode{operator=(variant(rhs))}. +Otherwise, equivalent to \tcode{operator=(variant(rhs))}. \end{itemize} \pnum @@ -4213,15 +4214,15 @@ \effects \begin{itemize} \item -If neither \tcode{*this} nor \tcode{rhs} holds a value, there is no effect. Otherwise, +If neither \tcode{*this} nor \tcode{rhs} holds a value, there is no effect. \item -if \tcode{*this} holds a value but \tcode{rhs} does not, destroys the value -contained in \tcode{*this} and sets \tcode{*this} to not hold a value. Otherwise, +Otherwise, if \tcode{*this} holds a value but \tcode{rhs} does not, destroys the value +contained in \tcode{*this} and sets \tcode{*this} to not hold a value. \item -if \tcode{index() == $j$}, assigns \tcode{get<$j$>(std::move(rhs))} to -the value contained in \tcode{*this}. Otherwise, +Otherwise, if \tcode{index() == $j$}, assigns \tcode{get<$j$>(std::move(rhs))} to +the value contained in \tcode{*this}. \item -equivalent to \tcode{emplace<$j$>(get<$j$>(std::move(rhs)))}. +Otherwise, equivalent to \tcode{emplace<$j$>(get<$j$>(std::move(rhs)))}. \end{itemize} \pnum @@ -4262,13 +4263,13 @@ \begin{itemize} \item If \tcode{*this} holds a $\tcode{T}_j$, assigns \tcode{std::forward(t)} to -the value contained in \tcode{*this}. Otherwise, +the value contained in \tcode{*this}. \item -if \tcode{is_nothrow_constructible_v<$\tcode{T}_j$, T> ||} +Otherwise, if \tcode{is_nothrow_constructible_v<$\tcode{T}_j$, T> ||} \tcode{!is_nothrow_move_constructible_v<$\tcode{T}_j$>} is \tcode{true}, -equivalent to \tcode{emplace<$j$>(std::forward(t))}. Otherwise, +equivalent to \tcode{emplace<$j$>(std::forward(t))}. \item -equivalent to \tcode{operator=(variant(std::forward(t)))}. +Otherwise, equivalent to \tcode{operator=(variant(std::forward(t)))}. \end{itemize} \pnum @@ -4494,11 +4495,11 @@ \effects \begin{itemize} \item -if \tcode{valueless_by_exception() \&\& rhs.valueless_by_exception()} no effect. Otherwise, +If \tcode{valueless_by_exception() \&\& rhs.valueless_by_exception()} no effect. \item -if \tcode{index() == rhs.index()}, calls \tcode{swap(get<$i$>(*this), get<$i$>(rhs))} where $i$ is \tcode{index()}. Otherwise, +Otherwise, if \tcode{index() == rhs.index()}, calls \tcode{swap(get<$i$>(*this), get<$i$>(rhs))} where $i$ is \tcode{index()}. \item -exchanges values of \tcode{rhs} and \tcode{*this}. +Otherwise, exchanges values of \tcode{rhs} and \tcode{*this}. \end{itemize} \pnum From ef9e31258af6341c17395da9ecc87c54045cbe93 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 21 Nov 2017 12:15:40 +0100 Subject: [PATCH 111/168] Fix some more subscripts for T, also fix cv in a few places. (#1805) * Use \text{\cv}} in math mode, not \mathit. * Replace Ti with $\tcode{T}_i$ for proper indexes. Partially addresses #1139. --- source/conversions.tex | 6 +++--- source/templates.tex | 8 ++++---- source/threads.tex | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/source/conversions.tex b/source/conversions.tex index 65bd983e6b..ac3cc4d744 100644 --- a/source/conversions.tex +++ b/source/conversions.tex @@ -289,10 +289,10 @@ \begin{itemize} \item $\tcode{T}_1$ and $\tcode{T}_2$ are similar. -\item For every $i > 0$, if \tcode{const} is in $\mathit{cv}_i^1$ then \tcode{const} is in $\mathit{cv}_i^2$, and similarly for \tcode{volatile}. +\item For every $i > 0$, if \tcode{const} is in $\text{\cv}_i^1$ then \tcode{const} is in $\text{\cv}_i^2$, and similarly for \tcode{volatile}. -\item If the $\mathit{cv}_i^1$ and $\mathit{cv}_i^2$ are different, -then \tcode{const} is in every $\mathit{cv}_k^2$ for $0 < k < i$. +\item If the $\text{\cv}_i^1$ and $\text{\cv}_i^2$ are different, +then \tcode{const} is in every $\text{\cv}_k^2$ for $0 < k < i$. \end{itemize} \begin{note} diff --git a/source/templates.tex b/source/templates.tex index 5c2bcbc525..1e2fae4827 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -7762,15 +7762,15 @@ \tcode{A} is a type \begin{indented} -$\mathit{cv}_{1,0}$ ``pointer to $\ldots$'' $\mathit{cv}_{1,n-1}$ ``pointer to'' -$\mathit{cv}_{1,n}$ \tcode{T1} +$\text{\cv}_{1,0}$ ``pointer to $\ldots$'' $\text{\cv}_{1,n-1}$ ``pointer to'' +$\text{\cv}_{1,n}$ \tcode{T1} \end{indented} and \tcode{P} is a type \begin{indented} -$\mathit{cv}_{2,0}$ ``pointer to $\ldots$'' $\mathit{cv}_{2,n-1}$ ``pointer to'' -$\mathit{cv}_{2,n}$ \tcode{T2}, +$\text{\cv}_{2,0}$ ``pointer to $\ldots$'' $\text{\cv}_{2,n-1}$ ``pointer to'' +$\text{\cv}_{2,n}$ \tcode{T2}, \end{indented} then the cv-unqualified \tcode{T1} diff --git a/source/threads.tex b/source/threads.tex index 9c40e2d6ad..11f5675f54 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -518,7 +518,7 @@ \begin{itemdescr} \pnum -\requires\ \tcode{F} and each \tcode{Ti} in \tcode{Args} shall satisfy the +\requires\ \tcode{F} and each $\tcode{T}_i$ in \tcode{Args} shall satisfy the \tcode{MoveConstructible} requirements. \tcode{% \placeholdernc{INVOKE}(\brk{}% @@ -4785,7 +4785,7 @@ \begin{itemdescr} \pnum -\requires \tcode{F} and each \tcode{Ti} in \tcode{Args} shall +\requires \tcode{F} and each $\tcode{T}_i$ in \tcode{Args} shall satisfy the \tcode{MoveConstructible} requirements, and \begin{codeblock} From 68e53321ed7bf8505748e0f69947e21f9374d3a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johel=20Ernesto=20Guerrero=20Pe=C3=B1a?= Date: Tue, 21 Nov 2017 08:02:52 -0400 Subject: [PATCH 112/168] [strings.general] Use plural "string classes" (#1823) The summary even says "string classes", and now we also have the "string_view classes". --- source/strings.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/strings.tex b/source/strings.tex index 0fa3f10101..25011c4dca 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -13,7 +13,7 @@ \pnum The following subclauses describe a -character traits class, a string class, and +character traits class, string classes, and null-terminated sequence utilities, as summarized in Table~\ref{tab:strings.lib.summary}. From b1fd50580cf389c61635a5767bf46b1b8823ce0c Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 21 Nov 2017 13:04:27 +0100 Subject: [PATCH 113/168] [expr.compound] Expression operators do not 'return' results. (#1818) --- source/expressions.tex | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/expressions.tex b/source/expressions.tex index f2f0b12711..7eea6f9271 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -3721,9 +3721,9 @@ The lifetime of such an entity is not necessarily restricted to the scope in which it is created. \end{note} -If the entity is a non-array object, the \grammarterm{new-expression} -returns a pointer to the object created. If it is an array, the -\grammarterm{new-expression} returns a pointer to the initial element of +If the entity is a non-array object, the result of the \grammarterm{new-expression} +is a pointer to the object created. If it is an array, the result of the +\grammarterm{new-expression} is a pointer to the initial element of the array. \pnum @@ -5316,7 +5316,7 @@ \pnum The \tcode{||} operator groups left-to-right. The operands are both contextually converted to \tcode{bool}\iref{conv}. -It returns +The result is \tcode{true} if either of its operands is \tcode{true}, and \tcode{false} otherwise. Unlike \tcode{|}, \tcode{||} guarantees left-to-right evaluation; moreover, the second operand is not evaluated @@ -5565,7 +5565,7 @@ operators all group right-to-left. \indextext{assignment!and lvalue}% All -require a modifiable lvalue as their left operand and return an lvalue +require a modifiable lvalue as their left operand; their result is an lvalue referring to the left operand. The result in all cases is a bit-field if the left operand is a bit-field. In all cases, the assignment is sequenced after the From b4a1e3c1c73531f3a61ae6e44abecab766e9c537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Tue, 21 Nov 2017 15:52:31 +0000 Subject: [PATCH 114/168] [binary.search] Formulate partitioning requirements in the same style as all the other related algorithms do --- source/algorithms.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index 9a11ce228d..453f6c7c78 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -4196,7 +4196,7 @@ \tcode{e} of \range{first}{last} -are partitioned with respect to the expressions +shall be partitioned with respect to the expressions \tcode{e < value} and \tcode{!(value < e)} @@ -4209,11 +4209,11 @@ of \tcode{[first, last)}, \tcode{e < value} -implies +shall imply \tcode{!(value < e)} or \tcode{comp(e, value)} -implies +shall imply \tcode{!comp(value, e)}. \pnum From 72b80b32c7ab185cc08eb72cf24ce6d839f7e6f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Tue, 21 Nov 2017 16:19:36 +0000 Subject: [PATCH 115/168] [alg.partition] Use established terminology 'partitioned with respect to' --- source/algorithms.tex | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index 453f6c7c78..a48efee6fd 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -4257,7 +4257,9 @@ \pnum \returns \tcode{true} if \range{first}{last} is empty or if -\range{first}{last} is partitioned by \tcode{pred}, i.e. if all elements that satisfy \tcode{pred} appear before those that do not. +the elements \tcode{e} of +\range{first}{last} are partitioned with respect to the expression +\tcode{pred(e)}. \pnum \complexity Linear. At most \tcode{last - first} applications of \tcode{pred}. @@ -4304,13 +4306,11 @@ \begin{itemdecl} template BidirectionalIterator - stable_partition(BidirectionalIterator first, BidirectionalIterator last, - Predicate pred); + stable_partition(BidirectionalIterator first, BidirectionalIterator last, Predicate pred); template BidirectionalIterator stable_partition(ExecutionPolicy&& exec, - BidirectionalIterator first, BidirectionalIterator last, - Predicate pred); + BidirectionalIterator first, BidirectionalIterator last, Predicate pred); \end{itemdecl} \begin{itemdescr} @@ -4364,18 +4364,15 @@ class OutputIterator2, class Predicate> constexpr pair partition_copy(InputIterator first, InputIterator last, - OutputIterator1 out_true, OutputIterator2 out_false, - Predicate pred); + OutputIterator1 out_true, OutputIterator2 out_false, Predicate pred); template pair partition_copy(ExecutionPolicy&& exec, ForwardIterator first, ForwardIterator last, - ForwardIterator1 out_true, ForwardIterator2 out_false, - Predicate pred); + ForwardIterator1 out_true, ForwardIterator2 out_false, Predicate pred); \end{itemdecl} - \begin{itemdescr} \pnum \requires @@ -4415,14 +4412,15 @@ \begin{itemdecl} template constexpr ForwardIterator - partition_point(ForwardIterator first, ForwardIterator last, - Predicate pred); + partition_point(ForwardIterator first, ForwardIterator last, Predicate pred); \end{itemdecl} - \begin{itemdescr} \pnum -\requires \tcode{ForwardIterator}'s value type shall be convertible to \tcode{Predicate}'s argument type. \range{first}{last} shall be partitioned by \tcode{pred}, i.e. all elements that satisfy \tcode{pred} shall appear before those that do not. +\requires +\tcode{ForwardIterator}'s value type shall be convertible to +\tcode{Predicate}'s argument type. The elements \tcode{e} of \range{first}{last} +shall be partitioned with respect to the expression \tcode{pred(e)}. \pnum \returns An iterator \tcode{mid} such that \tcode{all_of(first, mid, pred)} and \tcode{none_of(mid, last, pred)} are both \tcode{true}. From 402c99ba25c801cb74bd4118ef701d5ff5edf89f Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 21 Nov 2017 18:55:50 +0100 Subject: [PATCH 116/168] [macros] Introduce \indexhdr and apply it for all headers. (#1810) --- source/algorithms.tex | 6 +-- source/atomics.tex | 3 +- source/basic.tex | 2 +- source/compatibility.tex | 70 ++++++++++++++++----------------- source/containers.tex | 33 ++++++---------- source/declarators.tex | 2 +- source/diagnostics.tex | 21 ++++------ source/expressions.tex | 6 +-- source/future.tex | 58 +++++++++++----------------- source/iostreams.tex | 83 ++++++++++++++-------------------------- source/iterators.tex | 3 +- source/lex.tex | 4 +- source/lib-intro.tex | 43 ++++++++------------- source/locales.tex | 15 +++----- source/macros.tex | 1 + source/numerics.tex | 32 +++++----------- source/regex.tex | 2 +- source/strings.tex | 42 +++++++------------- source/support.tex | 60 ++++++++++------------------- source/threads.tex | 15 +++----- source/utilities.tex | 59 ++++++++++------------------ 21 files changed, 207 insertions(+), 353 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index a48efee6fd..1f587bf280 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -23,8 +23,7 @@ \end{libsumtab} \rSec1[algorithm.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{algorithm}}% -\indexlibrary{\idxhdr{algorithm}}% +\indexhdr{algorithm}% \begin{codeblock} #include @@ -5714,8 +5713,7 @@ \rSec1[alg.c.library]{C library algorithms} \pnum -\indextext{\idxhdr{cstdlib}}% -\indexlibrary{\idxhdr{cstdlib}}% +\indexhdr{cstdlib}% \begin{note} The header \tcode{}\iref{cstdlib.syn} declares the functions described in this subclause. diff --git a/source/atomics.tex b/source/atomics.tex index 198d7d0662..4656ec8068 100644 --- a/source/atomics.tex +++ b/source/atomics.tex @@ -28,8 +28,7 @@ \rSec1[atomics.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{atomic}}% -\indexlibrary{\idxhdr{atomic}}% +\indexhdr{atomic}% \begin{codeblock} namespace std { // \ref{atomics.order}, order and consistency diff --git a/source/basic.tex b/source/basic.tex index 4e9b6d70b8..0a51b89ef6 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -5548,7 +5548,7 @@ \indexlibrary{\idxcode{abort}}% \indextext{termination!program}% Calling the function \tcode{std::abort()} declared in -\indextext{\idxhdr{cstdlib}}% +\indexhdr{cstdlib}% \tcode{} terminates the program without executing any destructors and without calling the functions passed to \tcode{std::atexit()} or \tcode{std::at_quick_exit()}.% diff --git a/source/compatibility.tex b/source/compatibility.tex index cb10076017..ee91977cab 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -1915,23 +1915,23 @@ \pnum There are no \Cpp headers for the C headers -\tcode{}\indextext{\idxhdr{stdatomic.h}}, -\tcode{}\indextext{\idxhdr{stdnoreturn.h}}, -and \tcode{}\indextext{\idxhdr{threads.h}}, +\tcode{}\indexhdr{stdatomic.h}, +\tcode{}\indexhdr{stdnoreturn.h}, +and \tcode{}\indexhdr{threads.h}, nor are the C headers themselves part of \Cpp. \pnum -The \Cpp headers \tcode{}\indextext{\idxhdr{ccomplex}}\iref{depr.ccomplex.syn} -and \tcode{}\indextext{\idxhdr{ctgmath}}\iref{depr.ctgmath.syn}, as well -as their corresponding C headers \tcode{}\indextext{\idxhdr{complex.h}} -and \tcode{}\indextext{\idxhdr{tgmath.h}}, do not contain any of the +The \Cpp headers \tcode{}\indexhdr{ccomplex}\iref{depr.ccomplex.syn} +and \tcode{}\indexhdr{ctgmath}\iref{depr.ctgmath.syn}, as well +as their corresponding C headers \tcode{}\indexhdr{complex.h} +and \tcode{}\indexhdr{tgmath.h}, do not contain any of the content from the C standard library and instead merely include other headers from the \Cpp standard library. \pnum -The headers \tcode{}\indextext{\idxhdr{ciso646}}, -\tcode{}\indextext{\idxhdr{cstdalign}}\iref{depr.cstdalign.syn}, -and \tcode{}\indextext{\idxhdr{cstdbool}}\iref{depr.cstdbool.syn} +The headers \tcode{}\indexhdr{ciso646}, +\tcode{}\indexhdr{cstdalign}\iref{depr.cstdalign.syn}, +and \tcode{}\indexhdr{cstdbool}\iref{depr.cstdbool.syn} are meaningless in \Cpp. Use of the \Cpp headers \tcode{}, \tcode{}, \tcode{}, and \tcode{} is deprecated\iref{depr.c.headers}. @@ -1946,7 +1946,7 @@ The tokens \tcode{char16_t} and \tcode{char32_t} are keywords in this International Standard\iref{lex.key}. They do not appear as macro names defined in -\tcode{}\indexlibrary{\idxhdr{cuchar}}\iref{cuchar.syn}. +\tcode{}\indexhdr{cuchar}\iref{cuchar.syn}. \rSec3[diff.wchar.t]{Type \tcode{wchar_t}} @@ -1956,20 +1956,20 @@ The token \tcode{wchar_t} is a keyword in this International Standard\iref{lex.key}. It does not appear as a type name defined in any of -\tcode{}\iref{cstddef.syn}\indexlibrary{\idxhdr{cstddef}}, -\tcode{}\iref{cstdlib.syn}\indexlibrary{\idxhdr{cstdlib}}, -or \tcode{}\iref{cwchar.syn}\indexlibrary{\idxhdr{cwchar}}. +\tcode{}\iref{cstddef.syn}\indexhdr{cstddef}, +\tcode{}\iref{cstdlib.syn}\indexhdr{cstdlib}, +or \tcode{}\iref{cwchar.syn}\indexhdr{cwchar}. \rSec3[diff.header.assert.h]{Header \tcode{}} -\indexlibrary{\idxhdr{assert.h}}% +\indexhdr{assert.h}% \pnum The token \tcode{static_assert} is a keyword in this International Standard\iref{lex.key}. It does not appear as a macro name defined -in \tcode{}\indexlibrary{\idxhdr{cassert}}\iref{cassert.syn}. +in \tcode{}\indexhdr{cassert}\iref{cassert.syn}. \rSec3[diff.header.iso646.h]{Header \tcode{}} -\indexlibrary{\idxhdr{iso646.h}}% +\indexhdr{iso646.h}% \pnum The tokens @@ -1989,24 +1989,24 @@ Standard\iref{lex.key}. They do not appear as macro names defined in \tcode{}. -\indexlibrary{\idxhdr{ciso646}}% +\indexhdr{ciso646}% \rSec3[diff.header.stdalign.h]{Header \tcode{}} -\indexlibrary{\idxhdr{stdalign.h}}% +\indexhdr{stdalign.h}% \pnum The token \tcode{alignas} is a keyword in this International Standard\iref{lex.key}. It does not appear as a macro name defined -in \tcode{}\indexlibrary{\idxhdr{cstdalign}}\iref{depr.cstdalign.syn}. +in \tcode{}\indexhdr{cstdalign}\iref{depr.cstdalign.syn}. \rSec3[diff.header.stdbool.h]{Header \tcode{}} -\indexlibrary{\idxhdr{stdbool.h}}% +\indexhdr{stdbool.h}% \pnum The tokens \tcode{bool}, \tcode{true}, and \tcode{false} are keywords in this International Standard\iref{lex.key}. They do not appear as macro names defined in -\tcode{}\indexlibrary{\idxhdr{cstdbool}}\iref{depr.cstdbool.syn}. +\tcode{}\indexhdr{cstdbool}\iref{depr.cstdbool.syn}. \rSec3[diff.null]{Macro \tcode{NULL}} @@ -2014,20 +2014,20 @@ The macro \tcode{NULL}, defined in any of -\tcode{}\iref{c.locales}\indexlibrary{\idxhdr{clocale}}, -\tcode{}\iref{cstddef.syn}\indexlibrary{\idxhdr{cstddef}}, -\tcode{}\iref{cstdio.syn}\indexlibrary{\idxhdr{cstdio}}, -\tcode{}\iref{cstdlib.syn}\indexlibrary{\idxhdr{cstdlib}}, -\tcode{}\iref{cstring.syn}\indexlibrary{\idxhdr{cstring}}, -\tcode{}\iref{ctime.syn}\indexlibrary{\idxhdr{ctime}}, -or \tcode{}\iref{cwchar.syn}\indexlibrary{\idxhdr{cwchar}}, +\tcode{}\iref{c.locales}\indexhdr{clocale}, +\tcode{}\iref{cstddef.syn}\indexhdr{cstddef}, +\tcode{}\iref{cstdio.syn}\indexhdr{cstdio}, +\tcode{}\iref{cstdlib.syn}\indexhdr{cstdlib}, +\tcode{}\iref{cstring.syn}\indexhdr{cstring}, +\tcode{}\iref{ctime.syn}\indexhdr{ctime}, +or \tcode{}\iref{cwchar.syn}\indexhdr{cwchar}, is an \impldef{definition of \tcode{NULL}} \Cpp null pointer constant in this International Standard\iref{support.types}. \rSec2[diff.mods.to.declarations]{Modifications to declarations} \pnum -Header \tcode{}\iref{cstring.syn}\indexlibrary{\idxhdr{cstring}}: +Header \tcode{}\iref{cstring.syn}\indexhdr{cstring}: The following functions have different declarations: \begin{itemize} @@ -2041,7 +2041,7 @@ Subclause \ref{cstring.syn} describes the changes. \pnum -Header \tcode{}\iref{cwchar.syn}\indexlibrary{\idxhdr{cwchar}}: +Header \tcode{}\iref{cwchar.syn}\indexhdr{cwchar}: The following functions have different declarations: \begin{itemize} @@ -2055,14 +2055,14 @@ Subclause \ref{cwchar.syn} describes the changes. \pnum -Header \tcode{}\iref{cstddef.syn}\indexlibrary{\idxhdr{cstddef}} +Header \tcode{}\iref{cstddef.syn}\indexhdr{cstddef} declares the name \tcode{nullptr_t} in addition to the names declared in \tcode{} in the C standard library. \rSec2[diff.mods.to.behavior]{Modifications to behavior} \pnum -Header \tcode{}\iref{cstdlib.syn}\indexlibrary{\idxhdr{cstdlib}}: +Header \tcode{}\iref{cstdlib.syn}\indexhdr{cstdlib}: The following functions have different behavior: \begin{itemize} @@ -2074,7 +2074,7 @@ Subclause \ref{support.start.term} describes the changes. \pnum -Header \tcode{}\iref{csetjmp.syn}\indexlibrary{\idxhdr{csetjmp}}: +Header \tcode{}\iref{csetjmp.syn}\indexhdr{csetjmp}: The following functions have different behavior: \begin{itemize} @@ -2088,7 +2088,7 @@ \pnum The macro \tcode{offsetof}, defined in -\tcode{}\iref{cstddef.syn}\indexlibrary{\idxhdr{cstddef}}, +\tcode{}\iref{cstddef.syn}\indexhdr{cstddef}, accepts a restricted set of \tcode{\placeholder{type}} arguments in this International Standard. Subclause \ref{support.types.layout} describes the change. diff --git a/source/containers.tex b/source/containers.tex index 1c6cf1742e..185b538bbb 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -2923,8 +2923,7 @@ \rSec2[array.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{array}}% -\indexlibrary{\idxhdr{array}}% +\indexhdr{array}% \begin{codeblock} #include @@ -2966,8 +2965,7 @@ \rSec2[deque.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{deque}}% -\indexlibrary{\idxhdr{deque}}% +\indexhdr{deque}% \begin{codeblock} #include @@ -3002,8 +3000,7 @@ \rSec2[forward_list.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{forward_list}}% -\indexlibrary{\idxhdr{forward_list}}% +\indexhdr{forward_list}% \begin{codeblock} #include @@ -3038,8 +3035,7 @@ \rSec2[list.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{list}}% -\indexlibrary{\idxhdr{list}}% +\indexhdr{list}% \begin{codeblock} #include @@ -3074,8 +3070,7 @@ \rSec2[vector.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{vector}}% -\indexlibrary{\idxhdr{vector}}% +\indexhdr{vector}% \begin{codeblock} #include @@ -5812,8 +5807,7 @@ \rSec2[associative.map.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{map}}% -\indexlibrary{\idxhdr{map}}% +\indexhdr{map}% \begin{codeblock} #include @@ -5890,8 +5884,7 @@ \rSec2[associative.set.syn]{Header \tcode{} synopsis}% -\indextext{\idxhdr{set}}% -\indexlibrary{\idxhdr{set}}% +\indexhdr{set}% \begin{codeblock} #include @@ -7353,8 +7346,7 @@ defined in \ref{associative.general} may appear in deduction guides for unordered containers. \rSec2[unord.map.syn]{Header \tcode{} synopsis}% -\indextext{\idxhdr{unordered_map}}% -\indexlibrary{\idxhdr{unordered_map}}% +\indexhdr{unordered_map}% \indexlibrary{\idxcode{unordered_map}}% \indexlibrary{\idxcode{unordered_multimap}}% \begin{codeblock} @@ -7422,8 +7414,7 @@ \end{codeblock} \rSec2[unord.set.syn]{Header \tcode{} synopsis}% -\indextext{\idxhdr{unordered_set}}% -\indexlibrary{\idxhdr{unordered_set}}% +\indexhdr{unordered_set}% \indexlibrary{\idxcode{unordered_set}}% \indexlibrary{\idxcode{unordered_multiset}}% \begin{codeblock} @@ -9018,8 +9009,7 @@ \end{itemize} \rSec2[queue.syn]{Header \tcode{} synopsis}% -\indextext{\idxhdr{queue}}% -\indexlibrary{\idxhdr{queue}} +\indexhdr{queue}% \begin{codeblock} #include @@ -9052,8 +9042,7 @@ \end{codeblock} \rSec2[stack.syn]{Header \tcode{} synopsis}% -\indextext{\idxhdr{stack}}% -\indexlibrary{\idxhdr{stack}} +\indexhdr{stack}% \begin{codeblock} #include diff --git a/source/declarators.tex b/source/declarators.tex index db79db35e1..a55ed66450 100644 --- a/source/declarators.tex +++ b/source/declarators.tex @@ -1386,7 +1386,7 @@ \begin{note} The standard header \tcode{} -\indextext{\idxhdr{cstdarg}}% +\indexhdr{cstdarg}% contains a mechanism for accessing arguments passed using the ellipsis (see~\ref{expr.call} and~\ref{support.runtime}). \end{note} diff --git a/source/diagnostics.tex b/source/diagnostics.tex index 1910c723ee..febd032749 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -43,14 +43,12 @@ They cannot be easily predicted in advance. The header \tcode{} -\indextext{\idxhdr{stdexcept}}% -\indexlibrary{\idxhdr{stdexcept}}% +\indexhdr{stdexcept}% defines several types of predefined exceptions for reporting errors in a \Cpp program. These exceptions are related by inheritance. \rSec2[stdexcept.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{stdexcept}}% -\indexlibrary{\idxhdr{stdexcept}}% +\indexhdr{stdexcept}% \indexlibrary{\idxcode{logic_error}}% \indexlibrary{\idxcode{domain_error}}% \indexlibrary{\idxcode{invalid_argument}}% @@ -545,16 +543,14 @@ \rSec2[cassert.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{cassert}}% -\indexlibrary{\idxhdr{cassert}}% +\indexhdr{cassert}% \indexlibrary{\idxcode{assert}}% \begin{codeblock} #define assert(E) @\seebelow@ \end{codeblock} \pnum -\indextext{\idxhdr{assert.h}}% -\indexlibrary{\idxhdr{assert.h}}% +\indexhdr{assert.h}% \indextext{static_assert@\tcode{static_assert}!not macro}% The contents are the same as the C standard library header \tcode{}, @@ -580,8 +576,7 @@ \rSec1[errno]{Error numbers} \pnum -\indextext{\idxhdr{errno.h}}% -\indexlibrary{\idxhdr{errno.h}}% +\indexhdr{errno.h}% The contents of the header \tcode{} are the same as the POSIX header \tcode{}, except that \tcode{errno} shall be defined as a macro. \begin{note} @@ -591,8 +586,7 @@ \rSec2[cerrno.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{cerrno}}% -\indexlibrary{\idxhdr{cerrno}}% +\indexhdr{cerrno}% \indexlibrary{\idxcode{errno}}% \indexlibrary{\idxcode{E2BIG}}% \indexlibrary{\idxcode{EACCES}}% @@ -774,8 +768,7 @@ libraries unchanged. \rSec2[system_error.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{system_error}}% -\indexlibrary{\idxhdr{system_error}}% +\indexhdr{system_error}% \indexlibrary{\idxcode{error_category}}% \indexlibrary{\idxcode{error_code}}% \indexlibrary{\idxcode{error_condition}}% diff --git a/source/expressions.tex b/source/expressions.tex index 7eea6f9271..d36447bdce 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -3649,7 +3649,7 @@ \indextext{\idxcode{size_t}}% \indexlibrary{\idxcode{size_t}}% \tcode{std::size_t} is defined in the standard header -\indextext{\idxhdr{cstddef}}% +\indexhdr{cstddef}% \tcode{}~(\ref{cstddef.syn}, \ref{support.types.layout}). \end{note} @@ -4775,7 +4775,7 @@ \indextext{\idxcode{ptrdiff_t}!implementation-defined type of}% \indextext{subtraction!implementation-defined pointer}% \indextext{\idxcode{ptrdiff_t}}% -\indextext{\idxhdr{cstddef}}% +\indexhdr{cstddef}% \indextext{comparison!undefined pointer}% When two pointers to elements of the same array object are subtracted, the type of the result is an \impldef{type of \tcode{ptrdiff_t}} signed @@ -5004,7 +5004,7 @@ \tcode{std::partial_ordering}) are not predefined; if the header -\indextext{\idxhdr{compare}}\tcode{} +\indexhdr{compare}\tcode{} is not included prior to a use of such a class type -- even an implicit use in which the type is not named (e.g., via the \tcode{auto} specifier\iref{dcl.spec.auto} diff --git a/source/future.tex b/source/future.tex index 7e1bcaad77..f1ed9437ac 100644 --- a/source/future.tex +++ b/source/future.tex @@ -60,7 +60,7 @@ The use of these headers is deprecated. \rSec2[depr.ccomplex.syn]{Header \tcode{} synopsis} -\indexlibrary{\idxhdr{ccomplex}}% +\indexhdr{ccomplex}% \begin{codeblock} #include @@ -74,14 +74,14 @@ \rSec2[depr.cstdalign.syn]{Header \tcode{} synopsis} \indexlibrary{\idxcode{__alignas_is_defined}}% -\indexlibrary{\idxhdr{cstdalign}}% +\indexhdr{cstdalign}% \begin{codeblock} #define @\xname{alignas_is_defined}@ 1 \end{codeblock} \pnum -\indexlibrary{\idxhdr{cstdalign}}% -\indexlibrary{\idxhdr{stdalign.h}}% +\indexhdr{cstdalign}% +\indexhdr{stdalign.h}% The contents of the header \tcode{} are the same as the C standard library header \tcode{}, with the following changes: The header \tcode{} and the header \tcode{} shall not @@ -91,14 +91,14 @@ \rSec2[depr.cstdbool.syn]{Header \tcode{} synopsis} -\indexlibrary{\idxhdr{cstdbool}}% +\indexhdr{cstdbool}% \indexlibrary{\idxcode{__bool_true_false_are_defined}}% \begin{codeblock} #define @\xname{bool_true_false_are_defined}@ 1 \end{codeblock} \pnum -\indexlibrary{\idxhdr{stdbool.h}}% +\indexhdr{stdbool.h}% The contents of the header \tcode{} are the same as the C standard library header \tcode{}, with the following changes: The header \tcode{} and the header \tcode{} shall not @@ -108,7 +108,7 @@ \rSec2[depr.ctgmath.syn]{Header \tcode{} synopsis} -\indexlibrary{\idxhdr{ctgmath}}% +\indexhdr{ctgmath}% \begin{codeblock} #include #include @@ -196,10 +196,8 @@ \pnum \begin{example} The header -\indextext{\idxhdr{cstdlib}}% -\indexlibrary{\idxhdr{cstdlib}}% -\indextext{\idxhdr{stdlib.h}}% -\indexlibrary{\idxhdr{stdlib.h}}% +\indexhdr{cstdlib}% +\indexhdr{stdlib.h}% \tcode{} assuredly provides its declarations and definitions within the namespace \tcode{std}. It may also provide these names within the @@ -216,7 +214,7 @@ \pnum The header \tcode{} -\indextext{\idxhdr{utility}}% +\indexhdr{utility}% has the following additions: \begin{codeblock} @@ -297,8 +295,7 @@ \pnum The header -\indextext{\idxhdr{strstream}}% -\indexlibrary{\idxhdr{strstream}}% +\indexhdr{strstream}% \tcode{} defines three types that associate stream buffers with character array objects and assist reading and writing such objects. @@ -517,14 +514,12 @@ \indexlibrary{\idxcode{strlen}}% \tcode{strlen(const char*)} is declared in -\indextext{\idxhdr{cstring}}% -\indexlibrary{\idxhdr{cstring}}% +\indexhdr{cstring}% \tcode{}\iref{cstring.syn}. The macro \tcode{INT_MAX} is defined in -\indextext{\idxhdr{climits}}% -\indexlibrary{\idxhdr{climits}}% +\indexhdr{climits}% \tcode{}\iref{climits.syn}.} \end{itemize} @@ -1126,8 +1121,7 @@ \indexlibrary{\idxcode{strlen}}% \tcode{strlen(const char*)} is declared in -\indextext{\idxhdr{cstring}}% -\indexlibrary{\idxhdr{cstring}}% +\indexhdr{cstring}% \tcode{}\iref{cstring.syn}.} \end{itemize} \end{itemdescr} @@ -1340,8 +1334,7 @@ \pnum The header -\indextext{\idxhdr{exception}}% -\indexlibrary{\idxhdr{exception}}% +\indexhdr{exception}% \tcode{} has the following addition: \indexlibrary{\idxcode{iterator}}% @@ -1730,8 +1723,7 @@ \pnum The header -\indextext{\idxhdr{functional}}% -\indexlibrary{\idxhdr{functional}}% +\indexhdr{functional}% \tcode{} has the following additions: \indexlibrary{\idxcode{unary_negate}}% @@ -1944,8 +1936,7 @@ \pnum The header -\indextext{\idxhdr{memory}}% -\indexlibrary{\idxhdr{memory}}% +\indexhdr{memory}% \tcode{} has the following addition: \indexlibrary{\idxcode{raw_storage_iterator}}% @@ -2079,8 +2070,7 @@ \pnum The header -\indextext{\idxhdr{memory}}% -\indexlibrary{\idxhdr{memory}}% +\indexhdr{memory}% \tcode{} has the following additions: \begin{codeblock} @@ -2151,8 +2141,7 @@ \pnum The header -\indextext{\idxhdr{type_traits}}% -\indexlibrary{\idxhdr{type_traits}}% +\indexhdr{type_traits}% \tcode{} has the following addition: \indexlibrary{\idxcode{is_literal_type}}% @@ -2198,8 +2187,7 @@ \pnum The header -\indextext{\idxhdr{iterator}}% -\indexlibrary{\idxhdr{iterator}}% +\indexhdr{iterator}% \tcode{} has the following addition: \indexlibrary{\idxcode{iterator}}% @@ -2512,8 +2500,7 @@ \rSec1[depr.locale.stdcvt]{Deprecated standard code conversion facets} \pnum -\indextext{\idxhdr{codecvt}}% -\indexlibrary{\idxhdr{codecvt}}% +\indexhdr{codecvt}% The header \tcode{} provides code conversion facets for various character encodings. \rSec2[depr.codecvt.syn]{Header \tcode{} synopsis} @@ -3031,12 +3018,11 @@ \end{itemdescr} \rSec1[depr.ispod]{Identification of POD types} -\indextext{\idxhdr{}}% \indexlibrary{\idxcode{is_pod}}% \pnum The following type property -is defined in header \tcode{} +is defined in header \indexhdr{type_traits}\tcode{} in addition to those defined in \ref{meta.unary.prop}: \begin{itemdecl} diff --git a/source/iostreams.tex b/source/iostreams.tex index 3b88948f63..1e8186e521 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -117,8 +117,7 @@ \rSec1[iostream.forward]{Forward declarations} \rSec2[iosfwd.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{iosfwd}}% -\indexlibrary{\idxhdr{iosfwd}}% +\indexhdr{iosfwd}% \indexlibrary{\idxcode{basic_ios}}% \indexlibrary{\idxcode{basic_streambuf}}% @@ -383,8 +382,7 @@ \rSec1[iostream.objects]{Standard iostream objects} \rSec2[iostream.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{iostream}}% -\indexlibrary{\idxhdr{iostream}}% +\indexhdr{iostream}% \begin{codeblock} #include // see \ref{ios.syn} @@ -412,8 +410,7 @@ the type \tcode{FILE} declared in -\indextext{\idxhdr{cstdio}}% -\indexlibrary{\idxhdr{cstdio}}% +\indexhdr{cstdio}% \tcode{}\iref{cstdio.syn}. \pnum @@ -423,7 +420,7 @@ standard C streams provided for by the functions declared in \tcode{}\iref{c.files}, and includes all the headers necessary to use these objects. -\indexlibrary{\idxhdr{cstdio}}% +\indexhdr{cstdio}% \pnum The objects are constructed and the associations are established at some @@ -469,8 +466,7 @@ associated with the object \tcode{stdin}, declared in -\indextext{\idxhdr{cstdio}}% -\indexlibrary{\idxhdr{cstdio}}% +\indexhdr{cstdio}% \tcode{}\iref{cstdio.syn}. \pnum @@ -497,8 +493,7 @@ associated with the object \tcode{stdout}, declared in -\indextext{\idxhdr{cstdio}}% -\indexlibrary{\idxhdr{cstdio}}% +\indexhdr{cstdio}% \tcode{}\iref{cstdio.syn}. \end{itemdescr} @@ -515,8 +510,7 @@ associated with the object \tcode{stderr}, declared in -\indextext{\idxhdr{cstdio}}% -\indexlibrary{\idxhdr{cstdio}}% +\indexhdr{cstdio}% \tcode{}\iref{cstdio.syn}. \pnum @@ -542,8 +536,7 @@ associated with the object \tcode{stderr}, declared in -\indextext{\idxhdr{cstdio}}% -\indexlibrary{\idxhdr{cstdio}}% +\indexhdr{cstdio}% \tcode{}\iref{cstdio.syn}. \end{itemdescr} @@ -562,8 +555,7 @@ associated with the object \tcode{stdin}, declared in -\indextext{\idxhdr{cstdio}}% -\indexlibrary{\idxhdr{cstdio}}% +\indexhdr{cstdio}% \tcode{}\iref{cstdio.syn}. \pnum @@ -590,8 +582,7 @@ associated with the object \tcode{stdout}, declared in -\indextext{\idxhdr{cstdio}}% -\indexlibrary{\idxhdr{cstdio}}% +\indexhdr{cstdio}% \tcode{}\iref{cstdio.syn}. \end{itemdescr} @@ -608,8 +599,7 @@ associated with the object \tcode{stderr}, declared in -\indextext{\idxhdr{cstdio}}% -\indexlibrary{\idxhdr{cstdio}}% +\indexhdr{cstdio}% \tcode{}\iref{cstdio.syn}. \pnum @@ -635,16 +625,14 @@ associated with the object \tcode{stderr}, declared in -\indextext{\idxhdr{cstdio}}% -\indexlibrary{\idxhdr{cstdio}}% +\indexhdr{cstdio}% \tcode{}\iref{cstdio.syn}. \end{itemdescr} \rSec1[iostreams.base]{Iostreams base classes} \rSec2[ios.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{ios}}% -\indexlibrary{\idxhdr{ios}}% +\indexhdr{ios}% \indexlibrary{\idxcode{io_errc}}% \begin{codeblock} @@ -2799,8 +2787,7 @@ \rSec1[stream.buffers]{Stream buffers} \rSec2[streambuf.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{streambuf}}% -\indexlibrary{\idxhdr{streambuf}}% +\indexhdr{streambuf}% \indexlibrary{\idxcode{streambuf}}% \indexlibrary{\idxcode{basic_streambuf}}% @@ -4055,8 +4042,7 @@ \rSec1[iostream.format]{Formatting and manipulators} \rSec2[istream.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{istream}}% -\indexlibrary{\idxhdr{istream}}% +\indexhdr{istream}% \begin{codeblock} namespace std { @@ -4086,8 +4072,7 @@ \indexlibrary{\idxcode{basic_istream}}% \rSec2[ostream.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{ostream}}% -\indexlibrary{\idxhdr{ostream}}% +\indexhdr{ostream}% \begin{codeblock} namespace std { @@ -4115,8 +4100,7 @@ \indexlibrary{\idxcode{basic_ostream}}% \rSec2[iomanip.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{iomanip}}% -\indexlibrary{\idxhdr{iomanip}}% +\indexhdr{iomanip}% \begin{codeblock} namespace std { @@ -7200,8 +7184,7 @@ \rSec1[string.streams]{String-based streams} \rSec2[sstream.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{sstream}}% -\indexlibrary{\idxhdr{sstream}}% +\indexhdr{sstream}% \indexlibrary{\idxcode{stringbuf}}% \indexlibrary{\idxcode{basic_stringbuf}}% @@ -8349,8 +8332,7 @@ \rSec1[file.streams]{File-based streams} \rSec2[fstream.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{fstream}}% -\indexlibrary{\idxhdr{fstream}}% +\indexhdr{fstream}% \indexlibrary{\idxcode{filebuf}}% \indexlibrary{\idxcode{basic_filebuf}}% \indexlibrary{\idxcode{wfilebuf}}% @@ -8721,8 +8703,7 @@ \tcode{fseek(FILE*, long, int)} \indexlibrary{\idxcode{fseek}}% are declared, in -\indextext{\idxhdr{cstdio}}% -\indexlibrary{\idxhdr{cstdio}}% +\indexhdr{cstdio}% \tcode{}\iref{cstdio.syn}.} \pnum @@ -9953,8 +9934,7 @@ \rSec1[syncstream]{Synchronized output streams} \rSec2[syncstream.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{}}% -\indexlibrary{\idxhdr{}}% +\indexhdr{syncstream}% \indexlibrary{\idxcode{syncbuf}}% \indexlibrary{\idxcode{wsyncbuf}}% @@ -10699,8 +10679,7 @@ subclause are assumed to be qualified with \tcode{::std::filesystem::}. \rSec2[fs.filesystem.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{filesystem}}% -\indexlibrary{\idxhdr{filesystem}}% +\indexhdr{filesystem}% \begin{codeblock} namespace std::filesystem { @@ -15835,8 +15814,7 @@ \rSec1[c.files]{C library files} \rSec2[cstdio.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{cstdio}}% -\indextext{\idxhdr{cstdio}}% +\indexhdr{cstdio}% \indexlibrary{\idxcode{size_t}}% \indexlibrary{\idxcode{FILE}}% \indexlibrary{\idxcode{fpos_t}}% @@ -15976,10 +15954,8 @@ \end{codeblock} \pnum -\indextext{\idxhdr{stdio.h}}% -\indexlibrary{\idxhdr{stdio.h}}% -\indextext{\idxhdr{cstdio}}% -\indexlibrary{\idxhdr{cstdio}}% +\indexhdr{stdio.h}% +\indexhdr{cstdio}% The contents and meaning of the header \tcode{} are the same as the C standard library header \tcode{}. @@ -15992,8 +15968,7 @@ \rSec2[cinttypes.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{cinttypes}}% -\indexlibrary{\idxhdr{cinttypes}}% +\indexhdr{cinttypes}% \indexlibrary{\idxcode{imaxdiv_t}}% \indexlibrary{\idxcode{imaxabs}}% \indexlibrary{\idxcode{imaxdiv}}% @@ -16133,10 +16108,8 @@ \end{codeblock} \pnum -\indextext{\idxhdr{inttypes.h}}% -\indexlibrary{\idxhdr{inttypes.h}}% -\indextext{\idxhdr{cinttypes}}% -\indexlibrary{\idxhdr{cinttypes}}% +\indexhdr{inttypes.h}% +\indexhdr{cinttypes}% The contents and meaning of the header \tcode{} are the same as the C standard library header \tcode{}, with the following changes: diff --git a/source/iterators.tex b/source/iterators.tex index f71f74839d..4b8dfadce6 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -686,8 +686,7 @@ \rSec1[iterator.synopsis]{Header \tcode{}\ synopsis} -\indextext{\idxhdr{iterator}}% -\indexlibrary{\idxhdr{iterator}}% +\indexhdr{iterator}% \begin{codeblock} namespace std { // \ref{iterator.primitives}, primitives diff --git a/source/lex.tex b/source/lex.tex index 258d40918b..3099046d3b 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -1177,7 +1177,7 @@ \pnum \indextext{literal!character!wide}% \indextext{wide-character}% -\indextext{\idxhdr{stddef.h}}% +\indexhdr{stddef.h}% \indextext{type!\idxcode{wchar_t}}% A character literal that begins with the letter \tcode{L}, such as \tcode{L'z'}, @@ -1581,7 +1581,7 @@ A \grammarterm{string-literal} that begins with \tcode{L}, \indextext{prefix!\idxcode{L}}% such as \tcode{L"asdf"}, is a \defn{wide string literal}. -\indextext{\idxhdr{stddef.h}}% +\indexhdr{stddef.h}% \indextext{type!\idxcode{wchar_t}}% \indextext{literal!string!wide}% \indextext{prefix!\idxcode{L}}% diff --git a/source/lib-intro.tex b/source/lib-intro.tex index 9137e6bc45..574bdd709a 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -761,8 +761,8 @@ \tcode{}\iref{c.locales}. \indextext{\idxcode{setlocale}}% \indexlibrary{\idxcode{setlocale}}% -\indextext{\idxhdr{clocale}}% -\indexlibrary{\idxhdr{clocale}}} +\indexhdr{clocale}% +\indexhdr{clocale}} or by a change to a \tcode{locale} object, as described in \ref{locales} and \ref{input.output}. @@ -799,13 +799,11 @@ (the \term{terminating null} character); no other element in the sequence has the value zero.% -\indextext{\idxhdr{cstring}}% -\indexlibrary{\idxhdr{cstring}}% +\indexhdr{cstring}% \indextext{NTBS}\footnote{Many of the objects manipulated by function signatures declared in \tcode{}\iref{c.strings} are character sequences or \ntbs{}s. -\indextext{\idxhdr{cstring}}% -\indexlibrary{\idxhdr{cstring}}% +\indexhdr{cstring}% The size of some of these character sequences is limited by a length value, maintained separately from the character sequence.} @@ -1134,9 +1132,9 @@ additional headers shown in Table~\ref{tab:cpp.c.headers}.% \footnote{It is intentional that there is no \Cpp header for any of these C headers: -\indextext{\idxhdr{stdatomic.h}}% -\indextext{\idxhdr{stdnoreturn.h}}% -\indextext{\idxhdr{threads.h}}% +\indexhdr{stdatomic.h}% +\indexhdr{stdnoreturn.h}% +\indexhdr{threads.h}% \tcode{}, \tcode{}, \tcode{}.} @@ -1374,8 +1372,7 @@ \pnum The supplied version of the header \tcode{} -\indextext{\idxhdr{cstdlib}}% -\indexlibrary{\idxhdr{cstdlib}}% +\indexhdr{cstdlib}% shall declare at least the functions \indexlibrary{\idxcode{abort}}% \tcode{abort}, @@ -1420,10 +1417,8 @@ or \tcode{} depends each time on the lexically -\indextext{\idxhdr{cassert}}% -\indexlibrary{\idxhdr{cassert}}% -\indextext{\idxhdr{assert.h}}% -\indexlibrary{\idxhdr{assert.h}}% +\indexhdr{cassert}% +\indexhdr{assert.h}% current definition of \indextext{\idxcode{NDEBUG}}% \indexlibrary{\idxcode{NDEBUG}}% @@ -2375,8 +2370,7 @@ \indextext{linkage!external}\footnote{The list of such reserved names includes \tcode{errno}, declared or defined in -\indextext{\idxhdr{cerrno}}% -\indexlibrary{\idxhdr{cerrno}}% +\indexhdr{cerrno}% \tcode{}.} both in namespace \tcode{std} @@ -2395,16 +2389,14 @@ \indexlibrary{\idxcode{setjmp}}% \tcode{setjmp(jmp_buf)}, declared or defined in -\indextext{\idxhdr{csetjmp}}% -\indexlibrary{\idxhdr{csetjmp}}% +\indexhdr{csetjmp}% \tcode{}, and \indexlibrary{\idxcode{va_end}}% \indexlibrary{\idxcode{va_list}}% \tcode{va_end(va_list)}, declared or defined in -\indextext{\idxhdr{cstdarg}}% -\indexlibrary{\idxhdr{cstdarg}}% +\indexhdr{cstdarg}% \tcode{}.} \pnum @@ -2430,12 +2422,9 @@ \tcode{extern "C++"} linkage,\footnote{The function signatures declared in \indextext{Amendment 1}% -\indextext{\idxhdr{cuchar}}% -\indexlibrary{\idxhdr{cuchar}}% -\indextext{\idxhdr{cwchar}}% -\indexlibrary{\idxhdr{cwchar}}% -\indextext{\idxhdr{cwctype}}% -\indexlibrary{\idxhdr{cwctype}}% +\indexhdr{cuchar}% +\indexhdr{cwchar}% +\indexhdr{cwctype}% \tcode{}, \tcode{}, and diff --git a/source/locales.tex b/source/locales.tex index 17b9e684aa..fdc940fe66 100644 --- a/source/locales.tex +++ b/source/locales.tex @@ -24,8 +24,7 @@ \rSec1[locale.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{locale}}% -\indexlibrary{\idxhdr{locale}}% +\indexhdr{locale}% \begin{codeblock} namespace std { // \ref{locale}, locale @@ -108,16 +107,14 @@ the information peculiar to a locale.\footnote{In this subclause, the type name \tcode{struct tm} is an incomplete type that is defined in -\indextext{\idxhdr{ctime}}% -\indexlibrary{\idxhdr{ctime}}% +\indexhdr{ctime}% \tcode{}.} \rSec1[locales]{Locales} \rSec2[locale]{Class \tcode{locale}} -\indextext{\idxhdr{locale}}% -\indexlibrary{\idxhdr{locale}}% +\indexhdr{locale}% \begin{codeblock} namespace std { class locale { @@ -5254,8 +5251,7 @@ \rSec2[clocale.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{cassert}}% -\indexlibrary{\idxhdr{cassert}}% +\indexhdr{cassert}% \indexlibrary{\idxcode{lconv}}% \indexlibrary{\idxcode{setlocale}}% \indexlibrary{\idxcode{localeconv}}% @@ -5284,8 +5280,7 @@ \end{codeblock} \pnum -\indextext{\idxhdr{locale.h}}% -\indexlibrary{\idxhdr{locale.h}}% +\indexhdr{locale.h}% The contents and meaning of the header \tcode{} are the same as the C standard library header \tcode{}. diff --git a/source/macros.tex b/source/macros.tex index a6e6707a0d..841a6b72ff 100644 --- a/source/macros.tex +++ b/source/macros.tex @@ -113,6 +113,7 @@ % locations \newcommand{\indextext}[1]{\index[generalindex]{#1}} \newcommand{\indexlibrary}[1]{\index[libraryindex]{#1}} +\newcommand{\indexhdr}[1]{\indextext{\idxhdr{#1}}\indexlibrary{\idxhdr{#1}}} \newcommand{\indexgram}[1]{\index[grammarindex]{#1}} % Collation helper: When building an index key, replace all macro definitions diff --git a/source/numerics.tex b/source/numerics.tex index e204a22f1a..469a050e7d 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -151,8 +151,7 @@ \rSec1[cfenv]{The floating-point environment} \rSec2[cfenv.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{cfenv}}% -\indexlibrary{\idxhdr{cfenv}}% +\indexhdr{cfenv}% \indexlibrary{\idxcode{fenv_t}}% \indexlibrary{\idxcode{fexcept_t}}% @@ -249,8 +248,7 @@ \pnum The header -\indextext{\idxhdr{complex}}% -\indexlibrary{\idxhdr{complex}}% +\indexhdr{complex}% \tcode{} defines a class template, @@ -288,8 +286,7 @@ \rSec2[complex.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{complex}}% -\indexlibrary{\idxhdr{complex}}% +\indexhdr{complex}% \begin{codeblock} namespace std { // \ref{complex}, class template \tcode{complex} @@ -2505,8 +2502,7 @@ \rSec2[rand.synopsis]{Header \tcode{} synopsis}% -\indextext{\idxhdr{random}|(}% -\indexlibrary{\idxhdr{random}|(}% +\indexhdr{random} \indextext{random number generation!synopsis|(} \begin{codeblock} @@ -2644,8 +2640,6 @@ } \end{codeblock}% \indextext{random number generation!synopsis|)}% -\indextext{\idxhdr{random}|)}% -\indexlibrary{\idxhdr{random}|)} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -6383,8 +6377,7 @@ \rSec2[c.math.rand]{Low-quality random number generation} \pnum -\indextext{\idxhdr{cstdlib}}% -\indexlibrary{\idxhdr{cstdlib}}% +\indexhdr{cstdlib}% \begin{note} The header \tcode{}\iref{cstdlib.syn} declares the functions described in this subclause. @@ -6431,8 +6424,7 @@ \rSec1[numarray]{Numeric arrays} \rSec2[valarray.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{valarray}}% -\indexlibrary{\idxhdr{valarray}}% +\indexhdr{valarray}% \begin{codeblock} #include @@ -8531,8 +8523,7 @@ \rSec2[numeric.ops.overview]{Header \tcode{} synopsis} -\indextext{\idxhdr{numeric}}% -\indexlibrary{\idxhdr{numeric}}% +\indexhdr{numeric}% \begin{codeblock} namespace std { // \ref{accumulate}, accumulate @@ -9689,8 +9680,7 @@ \rSec2[cmath.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{cmath}}% -\indexlibrary{\idxhdr{cmath}}% +\indexhdr{cmath}% \indexlibrary{\idxcode{FP_FAST_FMA}}% \indexlibrary{\idxcode{FP_FAST_FMAF}}% \indexlibrary{\idxcode{FP_FAST_FMAL}}% @@ -10478,10 +10468,8 @@ \rSec2[c.math.abs]{Absolute values} \pnum -\indextext{\idxhdr{cstdlib}}% -\indexlibrary{\idxhdr{cstdlib}}% -\indextext{\idxhdr{cmath}}% -\indexlibrary{\idxhdr{cmath}}% +\indexhdr{cstdlib}% +\indexhdr{cmath}% \begin{note} The headers \tcode{}\iref{cstdlib.syn} and \tcode{}\iref{cmath.syn} diff --git a/source/regex.tex b/source/regex.tex index 8948c1ae7b..19c93ef41d 100644 --- a/source/regex.tex +++ b/source/regex.tex @@ -254,7 +254,7 @@ \rSec1[re.syn]{Header \tcode{} synopsis} -\indexlibrary{\idxhdr{regex}}% +\indexhdr{regex}% \indexlibrary{\idxcode{basic_regex}}% \indexlibrary{\idxcode{regex}}% \indexlibrary{\idxcode{wregex}}% diff --git a/source/strings.tex b/source/strings.tex index 25011c4dca..9f557039e8 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -590,8 +590,7 @@ \tcode{basic_string<\brk{}wchar_t>}, respectively. \rSec2[string.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{string}}% -\indexlibrary{\idxhdr{string}}% +\indexhdr{string}% \begin{codeblock} #include @@ -4612,8 +4611,7 @@ \rSec2[string.view.synop]{Header \tcode{} synopsis} -\indextext{\idxhdr{string_view}}% -\indexlibrary{\idxhdr{string_view}}% +\indexhdr{string_view}% \begin{codeblock} namespace std { // \ref{string.view.template}, class template \tcode{basic_string_view} @@ -5733,8 +5731,7 @@ \rSec2[cctype.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{cctype}}% -\indexlibrary{\idxhdr{cctype}}% +\indexhdr{cctype}% \indexlibrary{\idxcode{isalnum}}% \indexlibrary{\idxcode{isalpha}}% \indexlibrary{\idxcode{isblank}}% @@ -5769,8 +5766,7 @@ \end{codeblock} \pnum -\indextext{\idxhdr{ctype.h}}% -\indexlibrary{\idxhdr{ctype.h}}% +\indexhdr{ctype.h}% The contents and meaning of the header \tcode{} are the same as the C standard library header \tcode{}. @@ -5778,8 +5774,7 @@ \rSec2[cwctype.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{cwctype}}% -\indexlibrary{\idxhdr{cwctype}}% +\indexhdr{cwctype}% \indexlibrary{\idxcode{wint_t}}% \indexlibrary{\idxcode{wctrans_t}}% \indexlibrary{\idxcode{wctype_t}}% @@ -5832,8 +5827,7 @@ \end{codeblock} \pnum -\indextext{\idxhdr{wctype.h}}% -\indexlibrary{\idxhdr{wctype.h}}% +\indexhdr{wctype.h}% The contents and meaning of the header \tcode{} are the same as the C standard library header \tcode{}. @@ -5841,8 +5835,7 @@ \rSec2[cstring.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{cstring}}% -\indexlibrary{\idxhdr{cstring}}% +\indexhdr{cstring}% \indexlibrary{\idxcode{memchr}}% \indexlibrary{\idxcode{memcmp}}% \indexlibrary{\idxcode{memcpy}}% @@ -5903,8 +5896,7 @@ \end{codeblock} \pnum -\indextext{\idxhdr{string.h}}% -\indexlibrary{\idxhdr{string.h}}% +\indexhdr{string.h}% The contents and meaning of the header \tcode{} are the same as the C standard library header \tcode{}. @@ -5929,8 +5921,7 @@ \rSec2[cwchar.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{cwchar}}% -\indexlibrary{\idxhdr{cwchar}}% +\indexhdr{cwchar}% \indexlibrary{\idxcode{NULL}}% \indexlibrary{\idxcode{WCHAR_MAX}}% \indexlibrary{\idxcode{WCHAR_MIN}}% @@ -6081,8 +6072,7 @@ \end{codeblock} \pnum -\indextext{\idxhdr{wchar.h}}% -\indexlibrary{\idxhdr{wchar.h}}% +\indexhdr{wchar.h}% The contents and meaning of the header \tcode{} are the same as the C standard library header \tcode{}, except that it does not declare a type \tcode{wchar_t}. @@ -6099,8 +6089,7 @@ \rSec2[cuchar.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{cuchar}}% -\indexlibrary{\idxhdr{cuchar}}% +\indexhdr{cuchar}% \indexlibrary{\idxcode{mbstate_t}}% \indexlibrary{\idxcode{size_t}}% \indexlibrary{\idxcode{mbrtoc16}}% @@ -6120,8 +6109,7 @@ \end{codeblock} \pnum -\indextext{\idxhdr{uchar.h}}% -\indexlibrary{\idxhdr{uchar.h}}% +\indexhdr{uchar.h}% The contents and meaning of the header \tcode{} are the same as the C standard library header \tcode{}, except that it does not declare types \tcode{char16_t} nor @@ -6132,10 +6120,8 @@ \rSec2[c.mb.wcs]{Multibyte / wide string and character conversion functions} \pnum -\indextext{\idxhdr{cstdlib}}% -\indexlibrary{\idxhdr{cstdlib}}% -\indextext{\idxhdr{cwchar}}% -\indexlibrary{\idxhdr{cwchar}}% +\indexhdr{cstdlib}% +\indexhdr{cwchar}% \begin{note} The headers \tcode{}\iref{cstdlib.syn} and \tcode{}\iref{cwchar.syn} diff --git a/source/support.tex b/source/support.tex index c26f1518bd..bdbf175709 100644 --- a/source/support.tex +++ b/source/support.tex @@ -98,8 +98,7 @@ \rSec2[cstdlib.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{cstdlib}}% -\indexlibrary{\idxhdr{cstdlib}}% +\indexhdr{cstdlib}% \indexlibrary{\idxcode{EXIT_FAILURE}}% \indexlibrary{\idxcode{EXIT_SUCCESS}}% \indexlibrary{\idxcode{MB_CUR_MAX}}% @@ -507,8 +506,7 @@ arithmetic types\iref{basic.fundamental}. \rSec2[limits.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{limits}}% -\indexlibrary{\idxhdr{limits}}% +\indexhdr{limits}% \indextext{\idxcode{numeric_limits}}% \indexlibrary{\idxcode{numeric_limits}}% \indexlibrary{\idxcode{float_round_style}}% @@ -1507,8 +1505,7 @@ \rSec1[cstdint]{Integer types} \rSec2[cstdint.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{cstdint}}% -\indexlibrary{\idxhdr{cstdint}}% +\indexhdr{cstdint}% \indexlibrary{\idxcode{int8_t}}% \indexlibrary{\idxcode{int16_t}}% \indexlibrary{\idxcode{int32_t}}% @@ -1605,7 +1602,7 @@ \rSec1[support.start.term]{Start and termination} \pnum -\indextext{\idxhdr{cstdlib}}% +\indexhdr{cstdlib}% \begin{note} The header \tcode{}\iref{cstdlib.syn} declares the functions described in this subclause. @@ -1814,8 +1811,7 @@ It also defines components for reporting storage management errors. \rSec2[new.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{new}}% -\indexlibrary{\idxhdr{new}}% +\indexhdr{new}% \indexlibrary{\idxcode{align_val_t}}% \indexlibrary{\idxcode{nothrow_t}}% \indexlibrary{\idxcode{nothrow}}% @@ -2813,8 +2809,7 @@ It also defines two types for reporting dynamic type identification errors. \rSec2[typeinfo.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{typeinfo}}% -\indexlibrary{\idxhdr{typeinfo}}% +\indexhdr{typeinfo}% \indexlibrary{\idxcode{type_info}}% \indexlibrary{\idxcode{bad_cast}}% \indexlibrary{\idxcode{bad_typeid}}% @@ -3078,8 +3073,7 @@ defines several types and functions related to the handling of exceptions in a \Cpp program. \rSec2[exception.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{exception}}% -\indexlibrary{\idxhdr{exception}}% +\indexhdr{exception}% \begin{codeblock} namespace std { @@ -3582,8 +3576,7 @@ \rSec1[support.initlist]{Initializer lists} -\indextext{\idxhdr{initializer_list}}% -\indexlibrary{\idxhdr{initializer_list}}% +\indexhdr{initializer_list}% \pnum The header \tcode{} defines a class template and several support functions related to list-initialization~(see \ref{dcl.init.list}). @@ -3715,7 +3708,7 @@ for use primarily in connection with the three-way comparison operator\iref{expr.spaceship}. -\indextext{\idxhdr{compare}}% +\indexhdr{compare}% \indexlibrary{\idxcode{is_eq}}% \indexlibrary{\idxcode{is_neq}}% \indexlibrary{\idxcode{is_lt}}% @@ -4562,16 +4555,11 @@ \rSec1[support.runtime]{Other runtime support} \pnum -\indextext{\idxhdr{cstdarg}}% -\indexlibrary{\idxhdr{cstdarg}}% -\indextext{\idxhdr{csetjmp}}% -\indexlibrary{\idxhdr{csetjmp}}% -\indextext{\idxhdr{ctime}}% -\indexlibrary{\idxhdr{ctime}}% -\indextext{\idxhdr{csignal}}% -\indexlibrary{\idxhdr{csignal}}% -\indextext{\idxhdr{cstdlib}}% -\indexlibrary{\idxhdr{cstdlib}}% +\indexhdr{cstdarg}% +\indexhdr{csetjmp}% +\indexhdr{ctime}% +\indexhdr{csignal}% +\indexhdr{cstdlib}% \indexlibrary{\idxcode{getenv}}% \indexlibrary{\idxcode{system}}% Headers @@ -4604,8 +4592,7 @@ \rSec2[cstdarg.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{cstdarg}}% -\indexlibrary{\idxhdr{cstdarg}}% +\indexhdr{cstdarg}% \indexlibrary{\idxcode{va_list}}% \indexlibrary{\idxcode{va_start}}% \indexlibrary{\idxcode{va_copy}}% @@ -4623,15 +4610,14 @@ \end{codeblock} \pnum -\indextext{\idxhdr{stdarg.h}}% -\indexlibrary{\idxhdr{stdarg.h}}% +\indexhdr{stdarg.h}% The contents of the header \tcode{} are the same as the C standard library header \tcode{}, with the following changes: The restrictions that ISO C places on the second parameter to the \indexlibrary{\idxcode{va_start}}% \tcode{va_start} macro in header -\indexlibrary{\idxhdr{stdarg.h}}% +\indexhdr{stdarg.h}% \tcode{} are different in this document. The parameter @@ -4657,8 +4643,7 @@ \rSec2[csetjmp.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{csetjmp}}% -\indexlibrary{\idxhdr{csetjmp}}% +\indexhdr{csetjmp}% \indexlibrary{\idxcode{jmp_buf}}% \indexlibrary{\idxcode{longjmp}}% \indexlibrary{\idxcode{setjmp}}% @@ -4672,8 +4657,7 @@ \end{codeblock} \pnum -\indextext{\idxhdr{setjmp.h}}% -\indexlibrary{\idxhdr{setjmp.h}}% +\indexhdr{setjmp.h}% The contents of the header \tcode{} are the same as the C standard library header \tcode{}. @@ -4691,8 +4675,7 @@ \rSec2[csignal.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{csignal}}% -\indexlibrary{\idxhdr{csignal}}% +\indexhdr{csignal}% \indexlibrary{\idxcode{sig_atomic_t}}% \indexlibrary{\idxcode{signal}}% \indexlibrary{\idxcode{raise}}% @@ -4728,8 +4711,7 @@ \end{codeblock} \pnum -\indextext{\idxhdr{signal.h}}% -\indexlibrary{\idxhdr{signal.h}}% +\indexhdr{signal.h}% The contents of the header \tcode{} are the same as the C standard library header \tcode{}. diff --git a/source/threads.tex b/source/threads.tex index 11f5675f54..2d9cd4962f 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -291,8 +291,7 @@ \end{note} \rSec2[thread.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{thread}}% -\indexlibrary{\idxhdr{thread}}% +\indexhdr{thread}% \begin{codeblock} namespace std { @@ -823,8 +822,7 @@ programs\iref{intro.multithread}. \rSec2[mutex.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{mutex}}% -\indexlibrary{\idxhdr{mutex}}% +\indexhdr{mutex}% \begin{codeblock} namespace std { @@ -859,8 +857,7 @@ \end{codeblock} \rSec2[shared_mutex.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{shared_mutex}}% -\indexlibrary{\idxhdr{shared_mutex}}% +\indexhdr{shared_mutex}% \begin{codeblock} namespace std { @@ -2877,8 +2874,7 @@ Condition variable construction and destruction need not be synchronized. \rSec2[condition_variable.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{condition_variable}}% -\indexlibrary{\idxhdr{condition_variable}}% +\indexhdr{condition_variable}% \indexlibrary{\idxcode{cv_status}}% \begin{codeblock} @@ -3598,8 +3594,7 @@ \rSec2[future.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{future}}% -\indexlibrary{\idxhdr{future}}% +\indexhdr{future}% \indexlibrary{\idxcode{future_errc}}% \begin{codeblock} namespace std { diff --git a/source/utilities.tex b/source/utilities.tex index 2681a0e21b..3b4ce07db3 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -38,8 +38,7 @@ This subclause contains some basic function and class templates that are used throughout the rest of the library. -\indextext{\idxhdr{utility}}% -\indexlibrary{\idxhdr{utility}}% +\indexhdr{utility}% \indexlibrary{\idxcode{rel_ops}}% \rSec2[utility.syn]{Header \tcode{} synopsis} @@ -987,8 +986,7 @@ \rSec2[tuple.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{tuple}}% -\indexlibrary{\idxhdr{tuple}}% +\indexhdr{tuple}% \begin{codeblock} namespace std { // \ref{tuple.tuple}, class template \tcode{tuple} @@ -2112,8 +2110,7 @@ \rSec2[optional.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{optional}}% -\indexlibrary{\idxhdr{optional}}% +\indexhdr{optional}% \begin{codeblock} namespace std { // \ref{optional.optional}, class template \tcode{optional} @@ -3677,8 +3674,7 @@ These template arguments are called alternatives. \rSec2[variant.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{variant}}% -\indexlibrary{\idxhdr{variant}}% +\indexhdr{variant}% \begin{codeblock} namespace std { @@ -4997,8 +4993,7 @@ \rSec2[any.synop]{Header \tcode{} synopsis} -\indextext{\idxhdr{any}}% -\indexlibrary{\idxhdr{any}}% +\indexhdr{any}% \begin{codeblock} namespace std { @@ -5603,8 +5598,7 @@ \rSec2[bitset.syn]{Header \tcode{} synopsis}% -\indextext{\idxhdr{bitset}}% -\indexlibrary{\idxhdr{bitset}}% +\indexhdr{bitset}% \begin{codeblock} #include @@ -6487,8 +6481,7 @@ \tcode{unique_ptr}, \tcode{shared_ptr}, \tcode{weak_ptr}, and various function templates that operate on objects of these types\iref{smartptr}. -\indextext{\idxhdr{memory}}% -\indexlibrary{\idxhdr{memory}}% +\indexhdr{memory}% \begin{codeblock} namespace std { // \ref{pointer.traits}, pointer traits @@ -7855,7 +7848,7 @@ \rSec2[c.malloc]{C library memory allocation} \pnum -\indextext{\idxhdr{cstdlib}}% +\indexhdr{cstdlib}% \begin{note} The header \tcode{}\iref{cstdlib.syn} declares the functions described in this subclause. @@ -11129,8 +11122,7 @@ \rSec2[mem.res.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{memory_resource}}% -\indexlibrary{\idxhdr{memory_resource}}% +\indexhdr{memory_resource}% \begin{codeblock} namespace std::pmr { // \ref{mem.res.class}, class \tcode{memory_resource} @@ -12340,8 +12332,7 @@ \rSec2[allocator.adaptor.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{scoped_allocator}}% -\indexlibrary{\idxhdr{scoped_allocator}}% +\indexhdr{scoped_allocator}% \begin{codeblock} namespace std { // scoped allocator adaptor @@ -12961,8 +12952,7 @@ \rSec2[functional.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{functional}}% -\indexlibrary{\idxhdr{functional}}% +\indexhdr{functional}% \begin{codeblock} namespace std { // \ref{func.invoke}, invoke @@ -15332,8 +15322,7 @@ \rSec2[meta.type.synop]{Header \tcode{} synopsis} -\indextext{\idxhdr{type_traits}}% -\indexlibrary{\idxhdr{type_traits}}% +\indexhdr{type_traits}% \begin{codeblock} namespace std { // \ref{meta.help}, helper class @@ -17233,8 +17222,7 @@ \rSec2[ratio.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{ratio}}% -\indexlibrary{\idxhdr{ratio}}% +\indexhdr{ratio}% \begin{codeblockdigitsep} namespace std { // \ref{ratio.ratio}, class template \tcode{ratio} @@ -17461,8 +17449,7 @@ \rSec2[time.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{chrono}}% -\indexlibrary{\idxhdr{chrono}}% +\indexhdr{chrono}% \begin{codeblock} namespace std { namespace chrono { @@ -19075,8 +19062,7 @@ \rSec2[ctime.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{ctime}}% -\indexlibrary{\idxhdr{ctime}}% +\indexhdr{ctime}% \indexlibrary{\idxcode{CLOCKS_PER_SEC}}% \indexlibrary{\idxcode{NULL}}% \indexlibrary{\idxcode{TIME_UTC}}% @@ -19122,10 +19108,8 @@ \end{codeblock} \pnum -\indextext{\idxhdr{time.h}}% -\indexlibrary{\idxhdr{time.h}}% -\indextext{\idxhdr{ctime}}% -\indexlibrary{\idxhdr{ctime}}% +\indexhdr{time.h}% +\indexhdr{ctime}% The contents of the header \tcode{} are the same as the C standard library header \tcode{}.% \footnote{\tcode{strftime} supports the C conversion specifiers \tcode{C}, \tcode{D}, \tcode{e}, \tcode{F}, \tcode{g}, \tcode{G}, \tcode{h}, @@ -19143,8 +19127,7 @@ \rSec2[type.index.synopsis]{Header \tcode{} synopsis} -\indextext{\idxhdr{typeindex}}% -\indexlibrary{\idxhdr{typeindex}}% +\indexhdr{typeindex}% \begin{codeblock} namespace std { class type_index; @@ -19325,8 +19308,7 @@ \rSec2[execution.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{execution}}% -\indexlibrary{\idxhdr{execution}}% +\indexhdr{execution}% \begin{codeblock} namespace std { // \ref{execpol.type}, execution policy type trait @@ -19464,8 +19446,7 @@ \rSec2[charconv.syn]{Header \tcode{} synopsis} -\indextext{\idxhdr{charconv}}% -\indexlibrary{\idxhdr{charconv}}% +\indexhdr{charconv}% \begin{codeblock} @% \indexlibrary{\idxcode{chars_format}}% From e1b92d6c125ef43e19915ba0b031baa2c6611c62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Tue, 21 Nov 2017 18:01:18 +0000 Subject: [PATCH 117/168] [over.match.best] Remove meaningless "i.e." --- source/overloading.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/overloading.tex b/source/overloading.tex index 4b17159c66..3c03dd83da 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -1682,7 +1682,7 @@ \item the context is an initialization by conversion function for direct reference binding\iref{over.match.ref} of a reference to function type, the -return type of \tcode{F1} is the same kind of reference (i.e. lvalue or rvalue) +return type of \tcode{F1} is the same kind of reference (lvalue or rvalue) as the reference being initialized, and the return type of \tcode{F2} is not \begin{example} \begin{codeblock} From deb9fb19a039dbcd943a5955064d8c0e3d55a45c Mon Sep 17 00:00:00 2001 From: Alisdair Meredith Date: Sat, 4 Mar 2017 06:46:30 -1000 Subject: [PATCH 118/168] Consistent comma after e.g. and i.e. After grepping to determine the preferred idiom, it seems clear that the standard prefers to follow both e.g. and i.e. with a comma, rather than omit it. This patch applies that rule to the few places that were missing the comma. --- source/declarators.tex | 2 +- source/iostreams.tex | 2 +- source/lib-intro.tex | 12 ++++++++---- source/templates.tex | 2 +- source/threads.tex | 6 +++--- source/utilities.tex | 4 ++-- 6 files changed, 16 insertions(+), 12 deletions(-) diff --git a/source/declarators.tex b/source/declarators.tex index a55ed66450..2eac02e429 100644 --- a/source/declarators.tex +++ b/source/declarators.tex @@ -2251,7 +2251,7 @@ \end{example} \begin{example} -One can make a class uncopyable, i.e. move-only, by using deleted +One can make a class uncopyable, i.e., move-only, by using deleted definitions of the copy constructor and copy assignment operator, and then providing defaulted definitions of the move constructor and move assignment operator. \begin{codeblock} diff --git a/source/iostreams.tex b/source/iostreams.tex index 1e8186e521..b70845f977 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -40,7 +40,7 @@ \pnum Figure~\ref{fig:streampos} illustrates relationships among various types described in this clause. A line from \textbf{A} to \textbf{B} indicates that \textbf{A} -is an alias (e.g. a typedef) for \textbf{B} or that \textbf{A} is defined in terms of +is an alias (e.g., a typedef) for \textbf{B} or that \textbf{A} is defined in terms of \textbf{B}. \begin{importgraphic} diff --git a/source/lib-intro.tex b/source/lib-intro.tex index 574bdd709a..a242c0ecd6 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -2668,13 +2668,17 @@ \begin{note} If the parameter is a generic parameter of the form \tcode{T\&\&} and an lvalue of type \tcode{A} is bound, the argument binds to an lvalue reference\iref{temp.deduct.call} -and thus is not covered by the previous sentence. \end{note} \begin{note} If a program casts -an lvalue to an xvalue while passing that lvalue to a library function (e.g. by calling the function -with the argument \tcode{std::move(x)}), the program +and thus is not covered by the previous sentence. +\end{note} +\begin{note} +If a program casts +an lvalue to an xvalue while passing that lvalue to a library function +(e.g., by calling the function with the argument \tcode{std::move(x)}), the program is effectively asking that function to treat that lvalue as a temporary object. The implementation is free to optimize away aliasing checks which might be needed if the argument was -an lvalue. \end{note} +an lvalue. +\end{note} \end{itemize} \rSec3[res.on.objects]{Library object access} diff --git a/source/templates.tex b/source/templates.tex index 1e2fae4827..355045cd42 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -850,7 +850,7 @@ the \grammarterm{template-id}. \begin{note} The second \tcode{>} token produced by this replacement rule may terminate an enclosing \grammarterm{template-id} construct or it may be part of a different -construct (e.g. a cast).\end{note} +construct (e.g., a cast).\end{note} \begin{example} \begin{codeblock} diff --git a/source/threads.tex b/source/threads.tex index 2d9cd4962f..17b556ec52 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -99,13 +99,13 @@ \begin{itemize} \item -if $C_a > C_t$, the waiting function should wake as soon as possible, i.e. $C_a + D_i + D_m$, +if $C_a > C_t$, the waiting function should wake as soon as possible, i.e., $C_a + D_i + D_m$, since the timeout is already satisfied. \begin{note} This specification may result in the total duration of the wait decreasing when measured against a steady clock. \end{note} \item if $C_a \leq C_t$, the waiting function should not time out until \tcode{Clock::now()} returns a -time $C_n \geq C_t$, i.e. waking at $C_t + D_i + D_m$. \begin{note} When the clock is adjusted +time $C_n \geq C_t$, i.e., waking at $C_t + D_i + D_m$. \begin{note} When the clock is adjusted backwards, this specification may result in the total duration of the wait increasing when measured against a steady clock. When the clock is adjusted forwards, this specification may result in the total duration of the wait decreasing when measured against a steady clock. @@ -147,7 +147,7 @@ An \defn{execution agent} is an entity such as a thread that may perform work in parallel with other execution agents. \begin{note} Implementations or users may introduce other kinds of agents such as processes or thread-pool tasks. \end{note} The calling agent is determined by -context, e.g. the calling thread that contains the call, and so on. +context, e.g., the calling thread that contains the call, and so on. \pnum \begin{note} Some lockable objects are ``agent oblivious'' in that they work for any diff --git a/source/utilities.tex b/source/utilities.tex index 3b4ce07db3..108ae06f8b 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -4858,7 +4858,7 @@ \pnum \complexity For \tcode{sizeof...(Variants) <= 1}, the invocation of the callable object is -implemented in constant time, i.e. it does not depend on \tcode{sizeof...(Types).} +implemented in constant time, i.e., it does not depend on \tcode{sizeof...(Types).} For \tcode{sizeof...(Variants) > 1}, the invocation of the callable object has no complexity requirements. \end{itemdescr} @@ -4987,7 +4987,7 @@ \pnum \begin{note} The discriminated type may contain values of different types but does not attempt conversion between them, -i.e. \tcode{5} is held strictly as an \tcode{int} and is not implicitly convertible either to \tcode{"5"} or to \tcode{5.0}. +i.e., \tcode{5} is held strictly as an \tcode{int} and is not implicitly convertible either to \tcode{"5"} or to \tcode{5.0}. This indifference to interpretation but awareness of type effectively allows safe, generic containers of single values, with no scope for surprises from ambiguous conversions. \end{note} From 712b6ceacf81eac460d45708833f59d06f55a019 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Tue, 21 Nov 2017 20:35:29 +0000 Subject: [PATCH 119/168] Fix index entries --- source/templates.tex | 4 ++-- source/utilities.tex | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/templates.tex b/source/templates.tex index 355045cd42..4a0fd85d0f 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -1635,7 +1635,7 @@ \pnum Two atomic constraints are -\indextext{identical!atomic constraints|see{atomic constraint!identical}}% +\indextext{identical!atomic constraints|see{atomic constraint, identical}}% \defnx{identical}{atomic constraint!identical} if they are formed from the same \grammarterm{expression} @@ -3633,7 +3633,7 @@ expressions involving template parameters. \indextext{equivalent!functionally|see{functionally equivalent}}% -\indextext{template!function!functionally equivalent|see{functionally equivalent!function template}}% +\indextext{template!function!functionally equivalent|see{functionally equivalent, function template}}% Two function templates are \defnx{functionally equivalent}{functionally equivalent!function templates} if they diff --git a/source/utilities.tex b/source/utilities.tex index 108ae06f8b..d8ee519f04 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -10609,7 +10609,7 @@ \end{itemdescr}% \indextext{smart pointers|)} -\indextext{Atomic smart pointers|(}% +\indextext{atomic smart pointers|(}% \rSec2[util.smartptr.atomic]{Atomic specializations for smart pointers} \pnum From 3723f23583bed9aeca0c4fa372175e75b6587675 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 21 Nov 2017 22:48:35 +0100 Subject: [PATCH 120/168] [atomics.types.operations] Remove spurious paragraph break. (#1834) --- source/atomics.tex | 1 - 1 file changed, 1 deletion(-) diff --git a/source/atomics.tex b/source/atomics.tex index 4656ec8068..444fa94724 100644 --- a/source/atomics.tex +++ b/source/atomics.tex @@ -921,7 +921,6 @@ machines, e.g., load-locked store-conditional machines. A consequence of spurious failure is that nearly all uses of weak compare-and-exchange will be in a loop. - When a compare-and-exchange is in a loop, the weak version will yield better performance on some platforms. When a weak compare-and-exchange would require a loop and a strong one would not, the strong one is preferable. From df24226a77278d3286c950fe7f74e4ab5ffda66f Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Mon, 6 Feb 2017 10:55:20 +0100 Subject: [PATCH 121/168] [macros] Remove \xspace from macros taking a mandatory argument. Other than positively influencing kerning, this removal has no effect. --- source/macros.tex | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/source/macros.tex b/source/macros.tex index 841a6b72ff..5ed526ae6d 100644 --- a/source/macros.tex +++ b/source/macros.tex @@ -136,7 +136,7 @@ \let\omname\mname% \let\mname\idxmname% \let\oCpp\Cpp% -\let\Cpp\idxCpp +\let\Cpp\idxCpp% \let\oBreakableUnderscore\BreakableUnderscore% See the "underscore" package. \let\BreakableUnderscore\textunderscore% \edef\x{#1}% @@ -174,11 +174,11 @@ % Code and definitions embedded in text. \newcommand{\tcode}[1]{\CodeStylex{#1}} -\newcommand{\techterm}[1]{\textit{#1}\xspace} -\newcommand{\defnx}[2]{\indexdefn{#2}\textit{#1}\xspace} +\newcommand{\techterm}[1]{\textit{#1}} +\newcommand{\defnx}[2]{\indexdefn{#2}\textit{#1}} \newcommand{\defn}[1]{\defnx{#1}{#1}} -\newcommand{\term}[1]{\textit{#1}\xspace} -\newcommand{\grammarterm}[1]{\textit{#1}\xspace} +\newcommand{\term}[1]{\textit{#1}} +\newcommand{\grammarterm}[1]{\textit{#1}} \newcommand{\grammartermnc}[1]{\textit{#1}\nocorr} \newcommand{\placeholder}[1]{\textit{#1}} \newcommand{\placeholdernc}[1]{\textit{#1\nocorr}} @@ -189,11 +189,11 @@ %%-------------------------------------------------- %% Macros for funky text -\newcommand{\Cpp}{\texorpdfstring{C\kern-0.05em\protect\raisebox{.35ex}{\textsmaller[2]{+\kern-0.05em+}}}{C++}\xspace} -\newcommand{\CppIII}{\Cpp 2003\xspace} -\newcommand{\CppXI}{\Cpp 2011\xspace} -\newcommand{\CppXIV}{\Cpp 2014\xspace} -\newcommand{\CppXVII}{\Cpp 2017\xspace} +\newcommand{\Cpp}{\texorpdfstring{C\kern-0.05em\protect\raisebox{.35ex}{\textsmaller[2]{+\kern-0.05em+}}}{C++}} +\newcommand{\CppIII}{\Cpp{} 2003} +\newcommand{\CppXI}{\Cpp{} 2011} +\newcommand{\CppXIV}{\Cpp{} 2014} +\newcommand{\CppXVII}{\Cpp{} 2017} \newcommand{\opt}{{\ensuremath{_\mathit{opt}}}\xspace} \newcommand{\dcr}{-{-}} \newcommand{\bigoh}[1]{\ensuremath{\mathscr{O}(#1)}} @@ -218,12 +218,12 @@ %% Notes and examples \newcommand{\noteintro}[1]{[\,\textit{#1:}\space} \newcommand{\noteoutro}[1]{\textit{\,---\,end #1}\,]} -\newenvironment{note}[1][Note]{\noteintro{#1}}{\noteoutro{note}\xspace} -\newenvironment{example}[1][Example]{\noteintro{#1}}{\noteoutro{example}\xspace} +\newenvironment{note}[1][Note]{\noteintro{#1}}{\noteoutro{note}\space} +\newenvironment{example}[1][Example]{\noteintro{#1}}{\noteoutro{example}\space} %% Library function descriptions -\newcommand{\Fundescx}[1]{\textit{#1}\xspace} -\newcommand{\Fundesc}[1]{\Fundescx{#1:}} +\newcommand{\Fundescx}[1]{\textit{#1}} +\newcommand{\Fundesc}[1]{\Fundescx{#1:}\xspace} \newcommand{\required}{\Fundesc{Required behavior}} \newcommand{\requires}{\Fundesc{Requires}} \newcommand{\effects}{\Fundesc{Effects}} @@ -302,14 +302,14 @@ \newcommand{\commentellip}{\tcode{/* ...\ */}} %% Ranges -\newcommand{\Range}[4]{\tcode{#1#3,\penalty2000{} #4#2}\xspace} +\newcommand{\Range}[4]{\tcode{#1#3,\penalty2000{} #4#2}} \newcommand{\crange}[2]{\Range{[}{]}{#1}{#2}} \newcommand{\brange}[2]{\Range{(}{]}{#1}{#2}} \newcommand{\orange}[2]{\Range{(}{)}{#1}{#2}} \newcommand{\range}[2]{\Range{[}{)}{#1}{#2}} %% Change descriptions -\newcommand{\diffdef}[1]{\hfill\break\textbf{#1:}\xspace} +\newcommand{\diffdef}[1]{\hfill\break\textbf{#1:}\space} \newcommand{\change}{\diffdef{Change}} \newcommand{\rationale}{\diffdef{Rationale}} \newcommand{\effect}{\diffdef{Effect on original feature}} @@ -318,13 +318,13 @@ %% Miscellaneous \newcommand{\uniquens}{\placeholdernc{unique}} -\newcommand{\stage}[1]{\item{\textbf{Stage #1:}}\xspace} -\newcommand{\doccite}[1]{\textit{#1}\xspace} +\newcommand{\stage}[1]{\item{\textbf{Stage #1:}}} +\newcommand{\doccite}[1]{\textit{#1}} \newcommand{\cvqual}[1]{\textit{#1}} \newcommand{\cv}{\cvqual{cv}} -\renewcommand{\emph}[1]{\textit{#1}\xspace} -\newcommand{\numconst}[1]{\textsl{#1}\xspace} -\newcommand{\logop}[1]{{\footnotesize #1}\xspace} +\renewcommand{\emph}[1]{\textit{#1}} +\newcommand{\numconst}[1]{\textsl{#1}} +\newcommand{\logop}[1]{{\footnotesize #1}} %%-------------------------------------------------- %% Environments for code listings. @@ -420,7 +420,7 @@ \newenvironment{bnfbase} { \newcommand{\nontermdef}[1]{{\BnfNontermshape##1\itcorr}\indexgrammar{\idxgram{##1}}\textnormal{:}} - \newcommand{\terminal}[1]{{\BnfTermshape ##1}\xspace} + \newcommand{\terminal}[1]{{\BnfTermshape ##1}} \newcommand{\descr}[1]{\textnormal{##1}} \newcommand{\bnfindentfirst}{\BnfIndent} \newcommand{\bnfindentinc}{\BnfInc} @@ -558,4 +558,4 @@ \let\addcontentsline\oldcontentsline% } \newcommand{\defncontext}[1]{\textlangle#1\textrangle} -\newenvironment{defnote}{\addtocounter{termnote}{1}\noteintro{Note \thetermnote{} to entry}}{\noteoutro{note}\xspace} +\newenvironment{defnote}{\addtocounter{termnote}{1}\noteintro{Note \thetermnote{} to entry}}{\noteoutro{note}\space} From a677ee93a56b67e50b2ef90f243eac161db8131e Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 7 Feb 2017 10:14:45 +0100 Subject: [PATCH 122/168] Replace \Cpp and related macros with \Cpp{} and similar. --- source/algorithms.tex | 4 +- source/back.tex | 4 +- source/basic.tex | 42 ++--- source/compatibility.tex | 380 +++++++++++++++++++-------------------- source/containers.tex | 2 +- source/conversions.tex | 2 +- source/cover-reg.tex | 4 +- source/cover-wd.tex | 2 +- source/declarations.tex | 32 ++-- source/declarators.tex | 4 +- source/diagnostics.tex | 12 +- source/expressions.tex | 8 +- source/future.tex | 16 +- source/grammar.tex | 4 +- source/intro.tex | 32 ++-- source/iostreams.tex | 8 +- source/iterators.tex | 8 +- source/lex.tex | 12 +- source/lib-intro.tex | 198 ++++++++++---------- source/limits.tex | 2 +- source/locales.tex | 12 +- source/numerics.tex | 10 +- source/regex.tex | 4 +- source/support.tex | 22 +-- source/templates.tex | 2 +- source/threads.tex | 2 +- source/utilities.tex | 18 +- 27 files changed, 423 insertions(+), 423 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index 1f587bf280..c400feb8c0 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -4,7 +4,7 @@ \rSec1[algorithms.general]{General} \pnum -This Clause describes components that \Cpp programs may use to perform +This Clause describes components that \Cpp{} programs may use to perform algorithmic operations on containers\iref{containers} and other sequences. \pnum @@ -1278,7 +1278,7 @@ \rSec1[algorithms.parallel]{Parallel algorithms} \pnum -This subclause describes components that \Cpp programs may use to perform +This subclause describes components that \Cpp{} programs may use to perform operations on containers and other sequences in parallel. \rSec2[algorithms.parallel.defns]{Terms and definitions} diff --git a/source/back.tex b/source/back.tex index d2b5dec82b..55b85bafdc 100644 --- a/source/back.tex +++ b/source/back.tex @@ -36,9 +36,9 @@ \chapter{Bibliography} \clearpage \input{xrefdelta} -\renewcommand{\glossaryname}{Cross references from ISO \CppXVII} +\renewcommand{\glossaryname}{Cross references from ISO \CppXVII{}} \renewcommand{\preglossaryhook}{All clause and subclause labels from -ISO \CppXVII (ISO/IEC 14882:2017, \doccite{Programming Languages --- \Cpp}) +ISO \CppXVII{} (ISO/IEC 14882:2017, \doccite{Programming Languages --- \Cpp{}}) are present in this document, with the exceptions described below.\\} \renewcommand{\leftmark}{\glossaryname} { diff --git a/source/basic.tex b/source/basic.tex index 0a51b89ef6..d8483e1acf 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -4,11 +4,11 @@ \gramSec[gram.basic]{Basic concepts} \pnum -\begin{note} This Clause presents the basic concepts of the \Cpp language. +\begin{note} This Clause presents the basic concepts of the \Cpp{} language. It explains the difference between an object and a name and how they relate to the value categories for expressions. It introduces the concepts of a -declaration and a definition and presents \Cpp's +declaration and a definition and presents \Cpp{}'s notion of type, scope, linkage, and storage duration. The mechanisms for starting and terminating a program are discussed. Finally, this Clause presents the @@ -215,7 +215,7 @@ \pnum \begin{note} \indextext{implementation-generated}% -In some circumstances, \Cpp implementations implicitly define the +In some circumstances, \Cpp{} implementations implicitly define the default constructor\iref{class.ctor}, copy constructor\iref{class.copy}, move constructor\iref{class.copy}, @@ -2540,7 +2540,7 @@ identity does not require a diagnostic. \pnum -\begin{note} Linkage to non-\Cpp declarations can be achieved using a +\begin{note} Linkage to non-\Cpp{} declarations can be achieved using a \grammarterm{linkage-specification}\iref{dcl.link}. \end{note}% \indextext{linkage|)} @@ -2550,7 +2550,7 @@ \pnum \indextext{memory model|(}% -The fundamental storage unit in the \Cpp memory model is the +The fundamental storage unit in the \Cpp{} memory model is the \defn{byte}. A byte is at least large enough to contain any member of the basic \indextext{character set!basic execution}% @@ -2562,7 +2562,7 @@ the number of which is \impldef{bits in a byte}. The least significant bit is called the \defn{low-order bit}; the most significant bit is called the \defn{high-order bit}. The memory -available to a \Cpp program consists of one or more sequences of +available to a \Cpp{} program consists of one or more sequences of contiguous bytes. Every byte has a unique address. \pnum @@ -2614,7 +2614,7 @@ \pnum \indextext{object model|(}% -The constructs in a \Cpp program create, destroy, refer to, access, and +The constructs in a \Cpp{} program create, destroy, refer to, access, and manipulate objects. An \defn{object} is created by a definition\iref{basic.def}, @@ -2800,7 +2800,7 @@ \pnum \begin{note} -\Cpp provides a variety of fundamental types and several ways of composing +\Cpp{} provides a variety of fundamental types and several ways of composing new types from existing types\iref{basic.types}. \end{note}% \indextext{object model|)} @@ -3181,7 +3181,7 @@ \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -\grammarterm{delete-expression}{s}\iref{expr.delete}. A \Cpp implementation +\grammarterm{delete-expression}{s}\iref{expr.delete}. A \Cpp{} implementation provides access to, and management of, dynamic storage via the global \defn{allocation functions} \tcode{operator new} and \tcode{operator new[]} and the global \defn{deallocation functions} \tcode{operator @@ -3194,7 +3194,7 @@ \pnum The library provides default definitions for the global allocation and deallocation functions. Some global allocation and deallocation -functions are replaceable\iref{new.delete}. A \Cpp program shall +functions are replaceable\iref{new.delete}. A \Cpp{} program shall provide at most one definition of a replaceable allocation or deallocation function. Any such function definition replaces the default version provided in the library\iref{replacement.functions}. The @@ -3240,7 +3240,7 @@ class\iref{class.free}. \pnum -Any allocation and/or deallocation functions defined in a \Cpp program, +Any allocation and/or deallocation functions defined in a \Cpp{} program, including the default versions in the library, shall conform to the semantics specified in~\ref{basic.stc.dynamic.allocation} and~\ref{basic.stc.dynamic.deallocation}. @@ -3288,7 +3288,7 @@ returned as a request for zero size is undefined.\footnote{The intent is to have \tcode{operator new()} implementable by calling \tcode{std::malloc()} or \tcode{std::calloc()}, so the rules are -substantially the same. \Cpp differs from C in requiring a zero request +substantially the same. \Cpp{} differs from C in requiring a zero request to return a non-null pointer.} \pnum @@ -3311,7 +3311,7 @@ A global allocation function is only called as the result of a new expression\iref{expr.new}, or called directly using the function call syntax\iref{expr.call}, or called indirectly through calls to the -functions in the \Cpp standard library. \begin{note} In particular, a +functions in the \Cpp{} standard library. \begin{note} In particular, a global allocation function is not called to allocate storage for objects with static storage duration\iref{basic.stc.static}, for objects or references with thread storage duration\iref{basic.stc.thread}, for objects of @@ -3394,12 +3394,12 @@ A pointer value is a \defn{safely-derived pointer} to a dynamic object only if it has an object pointer type and it is one of the following: \begin{itemize} -\item the value returned by a call to the \Cpp standard library implementation of +\item the value returned by a call to the \Cpp{} standard library implementation of \tcode{::operator new(std::\brk{}size_t)} or \tcode{::operator new(std::size_t, std::align_val_t)}% ;\footnote{This subclause does not impose restrictions on indirection through pointers to memory not allocated by \tcode{::operator new}. This -maintains the ability of many \Cpp implementations to use binary libraries and +maintains the ability of many \Cpp{} implementations to use binary libraries and components written in other languages. In particular, this applies to C binaries, because indirection through pointers to memory allocated by \tcode{std::malloc} is not restricted.} @@ -3636,7 +3636,7 @@ a set of bits in the object representation that determines a \defn{value}, which is one discrete element of an \impldef{values of a trivially copyable type} set of values.\footnote{The -intent is that the memory model of \Cpp is compatible +intent is that the memory model of \Cpp{} is compatible with that of ISO/IEC 9899 Programming Language C.} \pnum @@ -4556,7 +4556,7 @@ If \placeholder{A} and \placeholder{B} would not otherwise be sequenced then they are indeterminately sequenced. \end{note} -Several contexts in \Cpp cause evaluation of a function call, even +Several contexts in \Cpp{} cause evaluation of a function call, even though no corresponding function call syntax appears in the translation unit. \begin{example} @@ -4596,7 +4596,7 @@ with automatic or thread storage duration\iref{basic.stc} is associated with one specific thread, and can be accessed by a different thread only indirectly through a pointer or reference\iref{basic.compound}.} Under a hosted -implementation, a \Cpp program can have more than one thread running +implementation, a \Cpp{} program can have more than one thread running concurrently. The execution of each thread proceeds as defined by the remainder of this document. The execution of the entire program consists of an execution of all of its threads. \begin{note} Usually the execution can be viewed as an @@ -4878,7 +4878,7 @@ \begin{note} The four preceding coherence requirements effectively disallow compiler reordering of atomic operations to a single object, even if both operations are relaxed loads. This effectively makes the cache coherence -guarantee provided by most hardware available to \Cpp atomic operations. +guarantee provided by most hardware available to \Cpp{} atomic operations. \end{note} \pnum @@ -4942,7 +4942,7 @@ \pnum \begin{note} Transformations that introduce a speculative read of a potentially -shared memory location may not preserve the semantics of the \Cpp program as +shared memory location may not preserve the semantics of the \Cpp{} program as defined in this document, since they potentially introduce a data race. However, they are typically valid in the context of an optimizing compiler that targets a specific machine with well-defined semantics for data races. They would be @@ -5174,7 +5174,7 @@ \pnum An implementation shall not predefine the \tcode{main} function. This -function shall not be overloaded. Its type shall have \Cpp language linkage +function shall not be overloaded. Its type shall have \Cpp{} language linkage and it shall have a declared return type of type \tcode{int}, but otherwise its type is \impldef{parameters to \tcode{main}}. \indextext{\idxcode{main} function!implementation-defined parameters to}% diff --git a/source/compatibility.tex b/source/compatibility.tex index ee91977cab..3d68390cb2 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -1,26 +1,26 @@ %!TEX root = std.tex \infannex{diff}{Compatibility} -\rSec1[diff.iso]{\Cpp and ISO C} +\rSec1[diff.iso]{\Cpp{} and ISO C} \pnum \indextext{summary!compatibility with ISO C}% -This subclause lists the differences between \Cpp and +This subclause lists the differences between \Cpp{} and ISO C, by the chapters of this document. \rSec2[diff.lex]{\ref{lex}: lexical conventions} \ref{lex.key} \change New Keywords\\ -New keywords are added to \Cpp; +New keywords are added to \Cpp{}; see \ref{lex.key}. \rationale These keywords were added in order to implement the new -semantics of \Cpp. +semantics of \Cpp{}. \effect Change to semantics of well-defined feature. Any ISO C programs that used any of these keywords as identifiers -are not valid \Cpp programs. +are not valid \Cpp{} programs. \difficulty Syntactic transformation. Converting one specific program is easy. @@ -53,7 +53,7 @@ sizeof('x') == sizeof(int) \end{codeblock} -will not work the same as \Cpp programs. +will not work the same as \Cpp{} programs. \difficulty Simple. \howwide @@ -82,7 +82,7 @@ Syntactic transformation. The fix is to add a cast: \begin{codeblock} -char* p = "abc"; // valid in C, invalid in \Cpp +char* p = "abc"; // valid in C, invalid in \Cpp{} void f(char*) { char* p = (char*)"abc"; // OK: cast added f(p); @@ -97,7 +97,7 @@ \rSec2[diff.basic]{\ref{basic}: basic concepts} \ref{basic.def} -\change \Cpp does not have ``tentative definitions'' as in C.\\ +\change \Cpp{} does not have ``tentative definitions'' as in C.\\ E.g., at file scope, \begin{codeblock} @@ -105,7 +105,7 @@ int i; \end{codeblock} -is valid in C, invalid in \Cpp. +is valid in C, invalid in \Cpp{}. This makes it impossible to define mutually referential file-local static objects, if initializers are restricted to the syntactic forms of C\@. @@ -126,16 +126,16 @@ Deletion of semantically well-defined feature. \difficulty Semantic transformation. -In \Cpp, the initializer for one of a set of +In \Cpp{}, the initializer for one of a set of mutually-referential file-local static objects must invoke a function call to achieve the initialization. \howwide Seldom. \ref{basic.scope} -\change A \tcode{struct} is a scope in \Cpp, not in C. +\change A \tcode{struct} is a scope in \Cpp{}, not in C. \rationale -Class scope is crucial to \Cpp, and a struct is a class. +Class scope is crucial to \Cpp{}, and a struct is a class. \effect Change to semantics of well-defined feature. \difficulty @@ -151,7 +151,7 @@ declared \tcode{extern}, has internal linkage, while in C it would have external linkage. \rationale Because const objects may be used as values during translation in -\Cpp, this feature urges programmers to provide an explicit initializer +\Cpp{}, this feature urges programmers to provide an explicit initializer for each const object. This feature allows the user to put const objects in source files that are included in more than one translation unit. @@ -175,13 +175,13 @@ Seldom. \ref{basic.types} -\change C allows ``compatible types'' in several places, \Cpp does not.\\ +\change C allows ``compatible types'' in several places, \Cpp{} does not.\\ For example, otherwise-identical \tcode{struct} types with different tag names are ``compatible'' in C but are distinctly different types -in \Cpp. +in \Cpp{}. \rationale -Stricter type checking is essential for \Cpp. +Stricter type checking is essential for \Cpp{}. \effect Deletion of semantically well-defined feature. \difficulty @@ -210,14 +210,14 @@ ISO C will accept this usage of pointer to void being assigned to a pointer to object type. -\Cpp will not. +\Cpp{} will not. \rationale -\Cpp tries harder than C to enforce compile-time type safety. +\Cpp{} tries harder than C to enforce compile-time type safety. \effect Deletion of semantically well-defined feature. \difficulty Could be automated. -Violations will be diagnosed by the \Cpp translator. +Violations will be diagnosed by the \Cpp{} translator. The fix is to add a cast. For example: @@ -237,7 +237,7 @@ \ref{expr.call} \change Implicit declaration of functions is not allowed. \rationale -The type-safe nature of \Cpp. +The type-safe nature of \Cpp{}. \effect Deletion of semantically well-defined feature. Note: the original feature was labeled as ``obsolescent'' in ISO C. @@ -280,7 +280,7 @@ \indextext{lvalue}% \change The result of a conditional expression, an assignment expression, or a comma expression may be an lvalue. \rationale -\Cpp is an object-oriented language, placing relatively +\Cpp{} is an object-oriented language, placing relatively more emphasis on lvalues. For example, functions may return lvalues. \effect @@ -295,7 +295,7 @@ yields \tcode{100} -in \Cpp and +in \Cpp{} and \tcode{sizeof(char*)} in C. \difficulty @@ -315,7 +315,7 @@ complicated runtime determination of allocation. Furthermore, any use of the uninitialized object could be a disaster. -With this simple compile-time rule, \Cpp assures that +With this simple compile-time rule, \Cpp{} assures that if an initialized variable is in scope, then it has assuredly been initialized. \effect @@ -352,14 +352,14 @@ \rSec2[diff.dcl]{\ref{dcl.dcl}: declarations} \ref{dcl.stc} -\change In \Cpp, the \tcode{static} or \tcode{extern} specifiers can only be applied to names of objects or functions.\\ -Using these specifiers with type declarations is illegal in \Cpp. +\change In \Cpp{}, the \tcode{static} or \tcode{extern} specifiers can only be applied to names of objects or functions.\\ +Using these specifiers with type declarations is illegal in \Cpp{}. In C, these specifiers are ignored when used on type declarations. Example: \begin{codeblock} -static struct S { // valid C, invalid in \Cpp +static struct S { // valid C, invalid in \Cpp{} int i; }; \end{codeblock} @@ -367,7 +367,7 @@ \rationale Storage class specifiers don't have any meaning when associated with a type. -In \Cpp, class members can be declared with the \tcode{static} storage +In \Cpp{}, class members can be declared with the \tcode{static} storage class specifier. Allowing storage class specifiers on type declarations could render the code confusing for users. @@ -379,9 +379,9 @@ Seldom. \ref{dcl.stc} -\change In \Cpp, \tcode{register} is not a storage class specifier. +\change In \Cpp{}, \tcode{register} is not a storage class specifier. \rationale -The storage class specifier had no effect in \Cpp. +The storage class specifier had no effect in \Cpp{}. \effect Deletion of semantically well-defined feature. \difficulty @@ -390,20 +390,20 @@ Common. \ref{dcl.typedef} -\change A \Cpp typedef name must be different from any class type name declared +\change A \Cpp{} typedef name must be different from any class type name declared in the same scope (except if the typedef is a synonym of the class name with the same name). In C, a typedef name and a struct tag name declared in the same scope can have the same name (because they have different name spaces). Example: \begin{codeblock} -typedef struct name1 { @\commentellip@ } name1; // valid C and \Cpp +typedef struct name1 { @\commentellip@ } name1; // valid C and \Cpp{} struct name { @\commentellip@ }; -typedef int name; // valid C, invalid \Cpp +typedef int name; // valid C, invalid \Cpp{} \end{codeblock} \rationale -For ease of use, \Cpp doesn't require that a type name be prefixed +For ease of use, \Cpp{} doesn't require that a type name be prefixed with the keywords \tcode{class}, \tcode{struct} or \tcode{union} when used in object declarations or type casts. @@ -422,7 +422,7 @@ Seldom. \ref{dcl.type} [see also \ref{basic.link}] -\change const objects must be initialized in \Cpp but can be left uninitialized in C. +\change const objects must be initialized in \Cpp{} but can be left uninitialized in C. \rationale A const object cannot be assigned to so it must be initialized to hold a useful value. @@ -436,7 +436,7 @@ \ref{dcl.type} \change Banning implicit \tcode{int}. -In \Cpp a +In \Cpp{} a \grammarterm{decl-specifier-seq} must contain a \grammarterm{type-specifier}{}, unless @@ -445,7 +445,7 @@ In the following example, the left-hand column presents valid C; the right-hand column presents -equivalent \Cpp : +equivalent \Cpp{} : \begin{codeblock} void f(const parm); void f(const int parm); @@ -455,7 +455,7 @@ \end{codeblock} \rationale -In \Cpp, implicit int creates several opportunities for +In \Cpp{}, implicit int creates several opportunities for ambiguity between expressions involving function-like casts and declarations. Explicit declaration is increasingly considered @@ -476,7 +476,7 @@ \begin{codeblock} void f() { - auto int x; // valid C, invalid \Cpp + auto int x; // valid C, invalid \Cpp{} } \end{codeblock} @@ -488,17 +488,17 @@ \howwide Rare. \ref{dcl.enum} -\change \Cpp objects of enumeration type can only be assigned values of the same enumeration type. +\change \Cpp{} objects of enumeration type can only be assigned values of the same enumeration type. In C, objects of enumeration type can be assigned values of any integral type. Example: \begin{codeblock} enum color { red, blue, green }; -enum color c = 1; // valid C, invalid \Cpp +enum color c = 1; // valid C, invalid \Cpp{} \end{codeblock} \rationale -The type-safe nature of \Cpp. +The type-safe nature of \Cpp{}. \effect Deletion of semantically well-defined feature. \difficulty @@ -509,19 +509,19 @@ Common. \ref{dcl.enum} -\change In \Cpp, the type of an enumerator is its enumeration. In C, the type of an enumerator is \tcode{int}. +\change In \Cpp{}, the type of an enumerator is its enumeration. In C, the type of an enumerator is \tcode{int}. Example: \begin{codeblock} enum e { A }; sizeof(A) == sizeof(int) // in C -sizeof(A) == sizeof(e) // in \Cpp +sizeof(A) == sizeof(e) // in \Cpp{} /* and @sizeof(int)@ is not necessarily equal to @sizeof(e)@ */ \end{codeblock} \rationale -In \Cpp, an enumeration is a distinct type. +In \Cpp{}, an enumeration is a distinct type. \effect Change to semantics of well-defined feature. \difficulty @@ -536,13 +536,13 @@ \rSec2[diff.decl]{\ref{dcl.decl}: declarators} \ref{dcl.fct} -\change In \Cpp, a function declared with an empty parameter list takes no arguments. +\change In \Cpp{}, a function declared with an empty parameter list takes no arguments. In C, an empty parameter list means that the number and type of the function arguments are unknown. Example: \begin{codeblock} -int f(); // means \tcode{int f(void)} in \Cpp +int f(); // means \tcode{int f(void)} in \Cpp{} // \tcode{int f(} unknown \tcode{)} in C \end{codeblock} @@ -563,21 +563,21 @@ Common. \ref{dcl.fct} [see \ref{expr.sizeof}] -\change In \Cpp, types may not be defined in return or parameter types. +\change In \Cpp{}, types may not be defined in return or parameter types. In C, these type definitions are allowed. Example: \begin{codeblock} -void f( struct S { int a; } arg ) {} // valid C, invalid \Cpp -enum E { A, B, C } f() {} // valid C, invalid \Cpp +void f( struct S { int a; } arg ) {} // valid C, invalid \Cpp{} +enum E { A, B, C } f() {} // valid C, invalid \Cpp{} \end{codeblock} \rationale -When comparing types in different translation units, \Cpp relies +When comparing types in different translation units, \Cpp{} relies on name equivalence when C relies on structural equivalence. Regarding parameter types: since the type defined in a parameter list -would be in the scope of the function, the only legal calls in \Cpp +would be in the scope of the function, the only legal calls in \Cpp{} would be from within the function itself. \effect Deletion of semantically well-defined feature. @@ -589,7 +589,7 @@ This style of type definition is seen as poor coding style. \ref{dcl.fct.def} -\change In \Cpp, the syntax for function definition excludes the ``old-style'' C function. +\change In \Cpp{}, the syntax for function definition excludes the ``old-style'' C function. In C, ``old-style'' syntax is allowed, but deprecated as ``obsolescent''. \rationale Prototypes are essential to type safety. @@ -602,9 +602,9 @@ \ref{dcl.init.aggr} \change -In \Cpp, designated initialization support is restricted +In \Cpp{}, designated initialization support is restricted compared to the corresponding functionality in C. -In \Cpp, +In \Cpp{}, designators for non-static data members must be specified in declaration order, designators for array elements and nested designators @@ -618,19 +618,19 @@ \begin{codeblock} struct A { int x, y; }; struct B { struct A a; }; -struct A a = {.y = 1, .x = 2}; // valid C, invalid \Cpp -int arr[3] = {[1] = 5}; // valid C, invalid \Cpp -struct B b = {.a.x = 0}; // valid C, invalid \Cpp -struct A c = {.x = 1, 2}; // valid C, invalid \Cpp +struct A a = {.y = 1, .x = 2}; // valid C, invalid \Cpp{} +int arr[3] = {[1] = 5}; // valid C, invalid \Cpp{} +struct B b = {.a.x = 0}; // valid C, invalid \Cpp{} +struct A c = {.x = 1, 2}; // valid C, invalid \Cpp{} \end{codeblock} \rationale -In \Cpp, members are destroyed in reverse construction order +In \Cpp{}, members are destroyed in reverse construction order and the elements of an initializer list are evaluated in lexical order, so field initializers must be specified in order. Array designators conflict with \grammarterm{lambda-expression} syntax. Nested designators are seldom used. \effect -Deletion of feature that is incompatible with \Cpp. +Deletion of feature that is incompatible with \Cpp{}. \difficulty Syntactic transformation. \howwide @@ -638,7 +638,7 @@ The other features are seldom used. \ref{dcl.init.string} -\change In \Cpp, when initializing an array of character with a string, the number of +\change In \Cpp{}, when initializing an array of character with a string, the number of characters in the string (including the terminating \tcode{'\textbackslash 0'}) must not exceed the number of elements in the array. In C, an array can be initialized with a string even if the array is not large enough to contain the string-terminating \tcode{'\textbackslash 0'}. @@ -646,7 +646,7 @@ Example: \begin{codeblock} -char array[4] = "abcd"; // valid C, invalid \Cpp +char array[4] = "abcd"; // valid C, invalid \Cpp{} \end{codeblock} \rationale When these non-terminated arrays are manipulated by standard @@ -664,7 +664,7 @@ \rSec2[diff.class]{\ref{class}: classes} \ref{class.name} [see also \ref{dcl.typedef}] -\change In \Cpp, a class declaration introduces the class name into the scope where it is +\change In \Cpp{}, a class declaration introduces the class name into the scope where it is declared and hides any object, function or other declaration of that name in an enclosing scope. In C, an inner scope declaration of a struct tag name never hides the name of an object or function in an outer scope. @@ -676,17 +676,17 @@ void f() { struct x { int a; }; sizeof(x); /* size of the array in C */ - /* size of the struct in @\textit{\textrm{\Cpp}}@ */ + /* size of the struct in @\textit{\textrm{\Cpp{}}}@ */ } \end{codeblock} \rationale -This is one of the few incompatibilities between C and \Cpp that -can be attributed to the new \Cpp name space definition where a +This is one of the few incompatibilities between C and \Cpp{} that +can be attributed to the new \Cpp{} name space definition where a name can be declared as a type and as a non-type in a single scope causing the non-type name to hide the type name and requiring that the keywords \tcode{class}, \tcode{struct}, \tcode{union} or \tcode{enum} be used to refer to the type name. This new name space definition provides important notational -conveniences to \Cpp programmers and helps making the use of the +conveniences to \Cpp{} programmers and helps making the use of the user-defined types as similar as possible to the use of fundamental types. The advantages of the new name space definition were judged to @@ -696,7 +696,7 @@ \difficulty Semantic transformation. If the hidden name that needs to be accessed is at global scope, -the \tcode{::} \Cpp operator can be used. +the \tcode{::} \Cpp{} operator can be used. If the hidden name is at block scope, either the type or the struct tag has to be renamed. \howwide @@ -712,14 +712,14 @@ the implementation freedom was eliminated for non-dependent types, too. \effect -The choice is implementation-defined in C, but not so in \Cpp. +The choice is implementation-defined in C, but not so in \Cpp{}. \difficulty Syntactic transformation. \howwide Seldom. \ref{class.nest} -\change In \Cpp, the name of a nested class is local to its enclosing class. In C +\change In \Cpp{}, the name of a nested class is local to its enclosing class. In C the name of the nested class belongs to the same scope as the name of the outermost enclosing class. Example: @@ -728,16 +728,16 @@ struct X { struct Y { @\commentellip@ } y; }; -struct Y yy; // valid C, invalid \Cpp +struct Y yy; // valid C, invalid \Cpp{} \end{codeblock} \rationale -\Cpp classes have member functions which require that classes +\Cpp{} classes have member functions which require that classes establish scopes. The C rule would leave classes as an incomplete scope mechanism -which would prevent \Cpp programmers from maintaining locality +which would prevent \Cpp{} programmers from maintaining locality within a class. -A coherent set of scope rules for \Cpp based on the C rule would -be very complicated and \Cpp programmers would be unable to predict +A coherent set of scope rules for \Cpp{} based on the C rule would +be very complicated and \Cpp{} programmers would be unable to predict reliably the meanings of nontrivial examples involving nested or local functions. \effect @@ -765,7 +765,7 @@ Seldom. \ref{class.nested.type} -\change In \Cpp, a typedef name may not be redeclared in a class definition after being used in that definition. +\change In \Cpp{}, a typedef name may not be redeclared in a class definition after being used in that definition. Example: @@ -773,12 +773,12 @@ typedef int I; struct S { I i; - int I; // valid C, invalid \Cpp + int I; // valid C, invalid \Cpp{} }; \end{codeblock} \rationale When classes become complicated, allowing such a redefinition -after the type has been used can create confusion for \Cpp +after the type has been used can create confusion for \Cpp{} programmers as to what the meaning of \tcode{I} really is. \effect Deletion of semantically well-defined feature. @@ -801,9 +801,9 @@ \begin{codeblock} struct X { int i; }; volatile struct X x1 = {0}; -struct X x2 = x1; // invalid \Cpp +struct X x2 = x1; // invalid \Cpp{} struct X x3; -x3 = x1; // also invalid \Cpp +x3 = x1; // also invalid \Cpp{} \end{codeblock} \rationale @@ -842,7 +842,7 @@ \change Whether \mname{STDC} is defined and if so, what its value is, are \impldef{definition and meaning of \mname{STDC}}. \rationale -\Cpp is not identical to ISO C\@. +\Cpp{} is not identical to ISO C\@. Mandating that \mname{STDC} be defined would require that translators make an incorrect claim. Each implementation must choose the behavior that will be most @@ -855,12 +855,12 @@ Programs and headers that reference \mname{STDC} are quite common. -\rSec1[diff.cpp03]{\Cpp and ISO \CppIII} +\rSec1[diff.cpp03]{\Cpp{} and ISO \CppIII{}} \pnum -\indextext{summary!compatibility with ISO \CppIII}% -This subclause lists the differences between \Cpp and -ISO \CppIII (ISO/IEC 14882:2003, \doccite{Programming Languages --- \Cpp}), +\indextext{summary!compatibility with ISO \CppIII{}}% +This subclause lists the differences between \Cpp{} and +ISO \CppIII{} (ISO/IEC 14882:2003, \doccite{Programming Languages --- \Cpp{}}), by the chapters of this document. \rSec2[diff.cpp03.lex]{\ref{lex}: lexical conventions} @@ -869,7 +869,7 @@ \change New kinds of string literals. \rationale Required for new features. \effect -Valid \CppIII code may fail to compile or produce different results in +Valid \CppIII{} code may fail to compile or produce different results in this International Standard. Specifically, macros named \tcode{R}, \tcode{u8}, \tcode{u8R}, \tcode{u}, \tcode{uR}, \tcode{U}, \tcode{UR}, or \tcode{LR} will not be expanded when adjacent to a string literal but will be interpreted as @@ -884,7 +884,7 @@ \change User-defined literal string support. \rationale Required for new features. \effect -Valid \CppIII code may fail to compile or produce different results in +Valid \CppIII{} code may fail to compile or produce different results in this International Standard, as the following example illustrates. \begin{codeblock} @@ -912,7 +912,7 @@ \tcode{static_assert}, and \tcode{thread_local}. -Valid \CppIII code using these identifiers is invalid in this International +Valid \CppIII{} code using these identifiers is invalid in this International Standard. \ref{lex.icon} @@ -928,7 +928,7 @@ \change Only literals are integer null pointer constants. \rationale Removing surprising interactions with templates and constant expressions. -\effect Valid \CppIII code may fail to compile or produce different results in +\effect Valid \CppIII{} code may fail to compile or produce different results in this International Standard, as the following example illustrates: \begin{codeblock} @@ -945,7 +945,7 @@ \change Specify rounding for results of integer \tcode{/} and \tcode{\%}. \rationale Increase portability, C99 compatibility. \effect -Valid \CppIII code that uses integer division rounds the result toward 0 or +Valid \CppIII{} code that uses integer division rounds the result toward 0 or toward negative infinity, whereas this International Standard always rounds the result toward 0. @@ -953,7 +953,7 @@ \change \tcode{\&\&} is valid in a \grammarterm{type-name}. \rationale Required for new features. \effect -Valid \CppIII code may fail to compile or produce different results in +Valid \CppIII{} code may fail to compile or produce different results in this International Standard, as the following example illustrates: \begin{codeblock} @@ -968,7 +968,7 @@ \change Remove \tcode{auto} as a storage class specifier. \rationale New feature. \effect -Valid \CppIII code that uses the keyword \tcode{auto} as a storage class +Valid \CppIII{} code that uses the keyword \tcode{auto} as a storage class specifier may be invalid in this International Standard. In this International Standard, \tcode{auto} indicates that the type of a variable is to be deduced from its initializer expression. @@ -979,8 +979,8 @@ \change Narrowing restrictions in aggregate initializers. \rationale Catches bugs. \effect -Valid \CppIII code may fail to compile in this International Standard. For -example, the following code is valid in \CppIII but invalid in this +Valid \CppIII{} code may fail to compile in this International Standard. For +example, the following code is valid in \CppIII{} but invalid in this International Standard because \tcode{double} to \tcode{int} is a narrowing conversion: @@ -995,7 +995,7 @@ when the implicit definition would have been ill-formed. \rationale Improves template argument deduction failure. \effect -A valid \CppIII program that uses one of these special member functions in a +A valid \CppIII{} program that uses one of these special member functions in a context where the definition is not required (e.g., in an expression that is not potentially evaluated) becomes ill-formed. @@ -1003,7 +1003,7 @@ \change User-declared destructors have an implicit exception specification. \rationale Clarification of destructor requirements. \effect -Valid \CppIII code may execute differently in this International Standard. In +Valid \CppIII{} code may execute differently in this International Standard. In particular, destructors that throw exceptions will call \tcode{std::terminate} (without calling \tcode{std::unexpected}) if their exception specification is non-throwing. @@ -1014,7 +1014,7 @@ \change Remove \tcode{export}. \rationale No implementation consensus. \effect -A valid \CppIII declaration containing \tcode{export} is ill-formed in this +A valid \CppIII{} declaration containing \tcode{export} is ill-formed in this International Standard. \ref{temp.arg} @@ -1023,10 +1023,10 @@ \rationale Considered a persistent but minor annoyance. Template aliases representing non-class types would exacerbate whitespace issues. \effect -Change to semantics of well-defined expression. A valid \CppIII expression +Change to semantics of well-defined expression. A valid \CppIII{} expression containing a right angle bracket (``\tcode{>}'') followed immediately by another right angle bracket may now be treated as closing two templates. -For example, the following code is valid in \CppIII because ``\tcode{>>}'' +For example, the following code is valid in \CppIII{} because ``\tcode{>>}'' is a right-shift operator, but invalid in this International Standard because ``\tcode{>>}'' closes two templates. @@ -1040,7 +1040,7 @@ \change Allow dependent calls of functions with internal linkage. \rationale Overly constrained, simplify overload resolution rules. \effect -A valid \CppIII program could get a different result than this +A valid \CppIII{} program could get a different result than this International Standard. \rSec2[diff.cpp03.library]{\ref{library}: library introduction} @@ -1049,17 +1049,17 @@ \change New reserved identifiers. \rationale Required by new features. \effect -Valid \CppIII code that uses any identifiers added to the \Cpp standard +Valid \CppIII{} code that uses any identifiers added to the \Cpp{} standard library by this International Standard may fail to compile or produce different results in this International Standard. A comprehensive list of identifiers used -by the \Cpp standard library can be found in the Index of Library Names in this +by the \Cpp{} standard library can be found in the Index of Library Names in this International Standard. \ref{headers} \change New headers. \rationale New functionality. \effect -The following \Cpp headers are new: +The following \Cpp{} headers are new: \tcode{}, \tcode{}, \tcode{}, @@ -1091,13 +1091,13 @@ \tcode{}, and \tcode{}. -Valid \CppIII code that \tcode{\#include}{s} headers with these names may be +Valid \CppIII{} code that \tcode{\#include}{s} headers with these names may be invalid in this International Standard. \ref{swappable.requirements} \effect Function \tcode{swap} moved to a different header \rationale Remove dependency on \tcode{} for \tcode{swap}. -\effect Valid \CppIII code that has been compiled expecting swap to be in +\effect Valid \CppIII{} code that has been compiled expecting swap to be in \tcode{} may have to instead include \tcode{}. \ref{namespace.posix} @@ -1105,14 +1105,14 @@ \rationale New functionality. \effect The global namespace \tcode{posix} is now reserved for standardization. Valid -\CppIII code that uses a top-level namespace \tcode{posix} may be invalid in +\CppIII{} code that uses a top-level namespace \tcode{posix} may be invalid in this International Standard. \ref{res.on.macro.definitions} \change Additional restrictions on macro names. \rationale Avoid hard to diagnose or non-portable constructs. \effect -Names of attribute identifiers may not be used as macro names. Valid \CppIII +Names of attribute identifiers may not be used as macro names. Valid \CppIII{} code that defines \tcode{override}, \tcode{final}, \tcode{carries_dependency}, or \tcode{noreturn} as macros is invalid in this International Standard. @@ -1127,7 +1127,7 @@ the other operators. This clarifies that replacing just these two signatures changes others, even if they are not explicitly changed. \effect -Valid \CppIII code that replaces global \tcode{new} or \tcode{delete} +Valid \CppIII{} code that replaces global \tcode{new} or \tcode{delete} operators may execute differently in this International Standard. For example, the following program should write \tcode{"custom deallocation"} twice, once for the single-object delete and once for the array delete. @@ -1159,7 +1159,7 @@ \tcode{std::bad_alloc}. \rationale Consistent application of \tcode{noexcept}. \effect -Valid \CppIII code that assumes that global \tcode{operator new} only +Valid \CppIII{} code that assumes that global \tcode{operator new} only throws \tcode{std::bad_alloc} may execute differently in this International Standard. @@ -1168,7 +1168,7 @@ \ref{errno} \change Thread-local error numbers. \rationale Support for new thread facilities. -\effect Valid but implementation-specific \CppIII code that relies on +\effect Valid but implementation-specific \CppIII{} code that relies on \tcode{errno} being the same across threads may change behavior in this International Standard. @@ -1178,8 +1178,8 @@ \change Minimal support for garbage-collected regions. \rationale Required by new feature. \effect -Valid \CppIII code, compiled without traceable pointer support, -that interacts with newer \Cpp code using regions declared reachable may +Valid \CppIII{} code, compiled without traceable pointer support, +that interacts with newer \Cpp{} code using regions declared reachable may have different runtime behavior. \ref{refwrap}, \ref{arithmetic.operations}, \ref{comparisons}, @@ -1189,7 +1189,7 @@ \rationale Superseded by new feature; \tcode{unary_function} and \tcode{binary_function} are no longer defined. \effect -Valid \CppIII code that depends on function object types being derived from +Valid \CppIII{} code that depends on function object types being derived from \tcode{unary_function} or \tcode{binary_function} may fail to compile in this International Standard. @@ -1201,13 +1201,13 @@ \rationale Invalidation is subtly different with reference-counted strings. This change regularizes behavior for this International Standard. \effect -Valid \CppIII code may execute differently in this International Standard. +Valid \CppIII{} code may execute differently in this International Standard. \ref{string.require} \change Loosen \tcode{basic_string} invalidation rules. \rationale Allow small-string optimization. \effect -Valid \CppIII code may execute differently in this International Standard. +Valid \CppIII{} code may execute differently in this International Standard. Some \tcode{const} member functions, such as \tcode{data} and \tcode{c_str}, no longer invalidate iterators. @@ -1218,7 +1218,7 @@ \rationale Lack of specification of complexity of \tcode{size()} resulted in divergent implementations with inconsistent performance characteristics. \effect -Some container implementations that conform to \CppIII may not conform to the +Some container implementations that conform to \CppIII{} may not conform to the specified \tcode{size()} requirements in this International Standard. Adjusting containers such as \tcode{std::list} to the stricter requirements may require incompatible changes. @@ -1227,7 +1227,7 @@ \change Requirements change: relaxation. \rationale Clarification. \effect -Valid \CppIII code that attempts to meet the specified container requirements +Valid \CppIII{} code that attempts to meet the specified container requirements may now be over-specified. Code that attempted to be portable across containers may need to be adjusted as follows: \begin{itemize} @@ -1241,7 +1241,7 @@ \change Requirements change: default constructible. \rationale Clarification of container requirements. \effect -Valid \CppIII code that attempts to explicitly instantiate a container using +Valid \CppIII{} code that attempts to explicitly instantiate a container using a user-defined type with no default constructor may fail to compile. \ref{sequence.reqmts}, \ref{associative.reqmts} @@ -1257,7 +1257,7 @@ \item \tcode{insert(pos, beg, end)} for \tcode{vector}, \tcode{deque}, \tcode{list}, \tcode{forward_list} \end{itemize} -Valid \CppIII code that relies on these functions returning \tcode{void} +Valid \CppIII{} code that relies on these functions returning \tcode{void} (e.g., code that creates a pointer to member function that points to one of these functions) will fail to compile with this International Standard. @@ -1279,7 +1279,7 @@ \item all forms of \tcode{list::merge} \end{itemize} -Valid \CppIII code that uses these functions may fail to compile with this +Valid \CppIII{} code that uses these functions may fail to compile with this International Standard. \ref{sequence.reqmts}, \ref{associative.reqmts} @@ -1289,7 +1289,7 @@ For \tcode{vector}, \tcode{deque}, and \tcode{list} the fill value passed to \tcode{resize} is now passed by reference instead of by value, and an additional overload of \tcode{resize} has been added. Valid -\CppIII code that uses this function may fail to compile with this International +\CppIII{} code that uses this function may fail to compile with this International Standard. \rSec2[diff.cpp03.algorithms]{\ref{algorithms}: algorithms library} @@ -1298,7 +1298,7 @@ \change Result state of inputs after application of some algorithms. \rationale Required by new feature. \effect -A valid \CppIII program may detect that an object with a valid but +A valid \CppIII{} program may detect that an object with a valid but unspecified state has a different valid but unspecified state with this International Standard. For example, \tcode{std::remove} and \tcode{std::remove_if} may leave the tail of the input sequence with a @@ -1310,7 +1310,7 @@ \change Specified representation of complex numbers. \rationale Compatibility with C99. \effect -Valid \CppIII code that uses implementation-specific knowledge about the +Valid \CppIII{} code that uses implementation-specific knowledge about the binary representation of the required template specializations of \tcode{std::complex} may not be compatible with this International Standard. @@ -1322,7 +1322,7 @@ \change Specify use of \tcode{explicit} in existing boolean conversion functions. \rationale Clarify intentions, avoid workarounds. \effect -Valid \CppIII code that relies on implicit boolean conversions will fail to +Valid \CppIII{} code that relies on implicit boolean conversions will fail to compile with this International Standard. Such conversions occur in the following conditions: @@ -1340,7 +1340,7 @@ \effect \tcode{std::ios_base::failure} is no longer derived directly from \tcode{std::exception}, but is now derived from \tcode{std::system_error}, -which in turn is derived from \tcode{std::runtime_error}. Valid \CppIII code +which in turn is derived from \tcode{std::runtime_error}. Valid \CppIII{} code that assumes that \tcode{std::ios_base::failure} is derived directly from \tcode{std::exception} may execute differently in this International Standard. @@ -1349,7 +1349,7 @@ defined as constexpr static members. \rationale Required for new features. \effect -Valid \CppIII code that relies on \tcode{std::ios_base} flag types being +Valid \CppIII{} code that relies on \tcode{std::ios_base} flag types being represented as \tcode{std::bitset} or as an integer type may fail to compile with this International Standard. For example: @@ -1362,12 +1362,12 @@ } \end{codeblock} -\rSec1[diff.cpp11]{\Cpp and ISO \CppXI} +\rSec1[diff.cpp11]{\Cpp{} and ISO \CppXI{}} \pnum -\indextext{summary!compatibility with ISO \CppXI}% -This subclause lists the differences between \Cpp and -ISO \CppXI (ISO/IEC 14882:2011, \doccite{Programming Languages --- \Cpp}), +\indextext{summary!compatibility with ISO \CppXI{}}% +This subclause lists the differences between \Cpp{} and +ISO \CppXI{} (ISO/IEC 14882:2011, \doccite{Programming Languages --- \Cpp{}}), by the chapters of this document. \rSec2[diff.cpp11.lex]{\ref{lex}: lexical conventions} @@ -1375,16 +1375,16 @@ \ref{lex.ppnumber} \change \grammarterm{pp-number} can contain one or more single quotes. \rationale Necessary to enable single quotes as digit separators. -\effect Valid \CppXI code may fail to compile or may change meaning in this -International Standard. For example, the following code is valid both in \CppXI and in +\effect Valid \CppXI{} code may fail to compile or may change meaning in this +International Standard. For example, the following code is valid both in \CppXI{} and in this International Standard, but the macro invocation produces different outcomes -because the single quotes delimit a character literal in \CppXI, whereas they are digit +because the single quotes delimit a character literal in \CppXI{}, whereas they are digit separators in this International Standard: \begin{codeblock} #define M(x, ...) __VA_ARGS__ int x[2] = { M(1'2,3'4, 5) }; -// \tcode{int x[2] = \{ 5 \};\ \ \ \ \ } --- \CppXI +// \tcode{int x[2] = \{ 5 \};\ \ \ \ \ } --- \CppXI{} // \tcode{int x[2] = \{ 3'4, 5 \};} --- this International Standard \end{codeblock} @@ -1393,7 +1393,7 @@ \ref{basic.stc.dynamic.deallocation} \change New usual (non-placement) deallocator. \rationale Required for sized deallocation. -\effect Valid \CppXI code could declare a global placement allocation function and +\effect Valid \CppXI{} code could declare a global placement allocation function and deallocation function as follows: \begin{codeblock} @@ -1416,7 +1416,7 @@ array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} standard conversions), especially the creation of the temporary due to lvalue-to-rvalue conversion, were considered gratuitous and surprising. -\effect Valid \CppXI code that relies on the conversions may behave differently +\effect Valid \CppXI{} code that relies on the conversions may behave differently in this International Standard: \begin{codeblock} @@ -1431,14 +1431,14 @@ } \end{codeblock} -In \CppXI, \tcode{f(true)} returns \tcode{1}. In this International Standard, +In \CppXI{}, \tcode{f(true)} returns \tcode{1}. In this International Standard, it returns \tcode{2}. \begin{codeblock} sizeof(true ? "" : throw 0) \end{codeblock} -In \CppXI, the expression yields \tcode{sizeof(const char*)}. In this +In \CppXI{}, the expression yields \tcode{sizeof(const char*)}. In this International Standard, it yields \tcode{sizeof(const char[1])}. \rSec2[diff.cpp11.dcl.dcl]{\ref{dcl.dcl}: declarations} @@ -1449,8 +1449,8 @@ \rationale Necessary to allow \tcode{constexpr} member functions to mutate the object. \effect -Valid \CppXI code may fail to compile in this International Standard. -For example, the following code is valid in \CppXI +Valid \CppXI{} code may fail to compile in this International Standard. +For example, the following code is valid in \CppXI{} but invalid in this International Standard because it declares the same member function twice with different return types: @@ -1468,9 +1468,9 @@ \rationale Necessary to allow default member initializers to be used by aggregate initialization. \effect -Valid \CppXI code may fail to compile or may change meaning in this International Standard. +Valid \CppXI{} code may fail to compile or may change meaning in this International Standard. \begin{codeblock} -struct S { // Aggregate in \CppXIV onwards. +struct S { // Aggregate in \CppXIV{} onwards. int m = 1; }; struct X { @@ -1478,7 +1478,7 @@ operator S(); }; X a{}; -S b{a}; // uses copy constructor in \CppXI, +S b{a}; // uses copy constructor in \CppXI{}, // performs aggregate initialization in this International Standard \end{codeblock} @@ -1488,8 +1488,8 @@ \change New header. \rationale New functionality. \effect -The \Cpp header \tcode{} is new. -Valid \CppXI code that \tcode{\#include}{s} a header with that name may be +The \Cpp{} header \tcode{} is new. +Valid \CppXI{} code that \tcode{\#include}{s} a header with that name may be invalid in this International Standard. \rSec2[diff.cpp11.input.output]{\ref{input.output}: input/output library} @@ -1498,15 +1498,15 @@ \change \tcode{gets} is not defined. \rationale Use of \tcode{gets} is considered dangerous. \effect -Valid \CppXI code that uses the \tcode{gets} function may fail to compile +Valid \CppXI{} code that uses the \tcode{gets} function may fail to compile in this International Standard. -\rSec1[diff.cpp14]{\Cpp and ISO \CppXIV} +\rSec1[diff.cpp14]{\Cpp{} and ISO \CppXIV{}} \pnum -\indextext{summary!compatibility with ISO \CppXIV}% -This subclause lists the differences between \Cpp and -ISO \CppXIV (ISO/IEC 14882:2014, \doccite{Programming Languages --- \Cpp}), +\indextext{summary!compatibility with ISO \CppXIV{}}% +This subclause lists the differences between \Cpp{} and +ISO \CppXIV{} (ISO/IEC 14882:2014, \doccite{Programming Languages --- \Cpp{}}), by the chapters of this document. \rSec2[diff.cpp14.lex]{\ref{lex}: lexical conventions} @@ -1516,9 +1516,9 @@ \change Removal of trigraph support as a required feature. \rationale Prevents accidental uses of trigraphs in non-raw string literals and comments. \effect -Valid \CppXIV code that uses trigraphs may not be valid or may have different +Valid \CppXIV{} code that uses trigraphs may not be valid or may have different semantics in this International Standard. Implementations may choose to -translate trigraphs as specified in \CppXIV if they appear outside of a raw +translate trigraphs as specified in \CppXIV{} if they appear outside of a raw string literal, as part of the \impldef{mapping from physical source file characters to basic source character set} mapping from physical source file characters to the basic source character set. @@ -1528,14 +1528,14 @@ \tcode{P} \grammarterm{sign}. \rationale Necessary to enable hexadecimal floating literals. \effect -Valid \CppXIV code may fail to compile or produce different results in +Valid \CppXIV{} code may fail to compile or produce different results in this International Standard. Specifically, character sequences like \tcode{0p+0} -and \tcode{0e1_p+0} are three separate tokens each in \CppXIV, but one single token +and \tcode{0e1_p+0} are three separate tokens each in \CppXIV{}, but one single token in this International Standard. \begin{codeblock} #define F(a) b ## a -int b0p = F(0p+0); // ill-formed; equivalent to ``\tcode{int b0p = b0p + 0;}\!'' in \CppXIV +int b0p = F(0p+0); // ill-formed; equivalent to ``\tcode{int b0p = b0p + 0;}\!'' in \CppXIV{} \end{codeblock} \rSec2[diff.cpp14.expr]{\ref{expr}: expressions} @@ -1544,7 +1544,7 @@ \change Remove increment operator with \tcode{bool} operand. \rationale Obsolete feature with occasionally surprising semantics. -\effect A valid \CppXIV expression utilizing the increment operator on +\effect A valid \CppXIV{} expression utilizing the increment operator on a \tcode{bool} lvalue is ill-formed in this International Standard. Note that this might occur when the lvalue has a type given by a template parameter. @@ -1552,7 +1552,7 @@ \ref{expr.new}, \ref{expr.delete} \change Dynamic allocation mechanism for over-aligned types. \rationale Simplify use of over-aligned types. -\effect In \CppXIV code that uses a \grammarterm{new-expression} +\effect In \CppXIV{} code that uses a \grammarterm{new-expression} to allocate an object with an over-aligned class type, where that class has no allocation functions of its own, \tcode{::operator new(std::size_t)} @@ -1568,7 +1568,7 @@ \change Removal of \tcode{register} \grammarterm{storage-class-specifier}. \rationale Enable repurposing of deprecated keyword in future revisions of this International Standard. \effect -A valid \CppXIV declaration utilizing the \tcode{register} +A valid \CppXIV{} declaration utilizing the \tcode{register} \grammarterm{storage-class-specifier} is ill-formed in this International Standard. The specifier can simply be removed to retain the original meaning. @@ -1576,7 +1576,7 @@ \change \tcode{auto} deduction from \grammarterm{braced-init-list}. \rationale More intuitive deduction behavior. \effect -Valid \CppXIV code may fail to compile or may change meaning +Valid \CppXIV{} code may fail to compile or may change meaning in this International Standard. For example: \begin{codeblock} auto x1{1}; // was \tcode{std::initializer_list}, now \tcode{int} @@ -1589,7 +1589,7 @@ \change Make exception specifications be part of the type system. \rationale Improve type-safety. \effect -Valid \CppXIV code may fail to compile or change meaning in this +Valid \CppXIV{} code may fail to compile or change meaning in this International Standard: \begin{codeblock} @@ -1604,7 +1604,7 @@ to apply to user-defined types with base classes. \rationale To increase convenience of aggregate initialization. \effect -Valid \CppXIV code may fail to compile or produce different results in this +Valid \CppXIV{} code may fail to compile or produce different results in this International Standard; initialization from an empty initializer list will perform aggregate initialization instead of invoking a default constructor for the affected types: @@ -1617,7 +1617,7 @@ }; struct derived : base {}; -derived d1{}; // error; the code was well-formed in \CppXIV +derived d1{}; // error; the code was well-formed in \CppXIV{} derived d2; // still OK \end{codeblock} @@ -1629,7 +1629,7 @@ \rationale Better interaction with other language features. \effect -Valid \CppXIV code that uses inheriting constructors may not be valid +Valid \CppXIV{} code that uses inheriting constructors may not be valid or may have different semantics. A \grammarterm{using-declaration} that names a constructor now makes the corresponding base class constructors visible to initializations of the derived class @@ -1656,7 +1656,7 @@ non-type template arguments with placeholder types, allows partial specializations to decompose from the type deduced for the non-type template argument. -\effect Valid \CppXIV code may fail to compile +\effect Valid \CppXIV{} code may fail to compile or produce different results in this International Standard: \begin{codeblock} template struct A; @@ -1677,7 +1677,7 @@ which became a more significant issue in this International Standard where (non-dynamic) exception specifications are part of the function type. \effect -A valid \CppXIV function declaration, +A valid \CppXIV{} function declaration, member function declaration, function pointer declaration, or function reference declaration, @@ -1694,7 +1694,7 @@ \change New headers. \rationale New functionality. \effect -The following \Cpp headers are new: +The following \Cpp{} headers are new: \tcode{}, \tcode{}, \tcode{}, @@ -1703,7 +1703,7 @@ \tcode{}, and \tcode{}. -Valid \CppXIV code that \tcode{\#include}{s} headers with these names may be +Valid \CppXIV{} code that \tcode{\#include}{s} headers with these names may be invalid in this International Standard. \ref{namespace.future} @@ -1714,7 +1714,7 @@ The global namespaces \tcode{std} followed by an arbitrary sequence of digits is reserved for future standardization. -Valid \CppXIV code that uses such a top-level namespace, +Valid \CppXIV{} code that uses such a top-level namespace, e.g., \tcode{std2}, may be invalid in this International Standard. \rSec2[diff.cpp14.utilities]{\ref{utilities}: general utilities library} @@ -1723,7 +1723,7 @@ \change Constructors taking allocators removed. \rationale No implementation consensus. \effect -Valid \CppXIV code may fail to compile or may change meaning in this +Valid \CppXIV{} code may fail to compile or may change meaning in this International Standard. Specifically, constructing a \tcode{std::function} with an allocator is ill-formed and uses-allocator construction will not pass an allocator to \tcode{std::function} constructors in this International Standard. @@ -1733,7 +1733,7 @@ \rationale Adding array support to \tcode{shared_ptr}, via the syntax \tcode{shared_ptr} and \tcode{shared_ptr}. \effect -Valid \CppXIV code may fail to compile or may change meaning in this +Valid \CppXIV{} code may fail to compile or may change meaning in this International Standard. For example: @@ -1770,7 +1770,7 @@ \change Requirements change: \rationale Increase portability, clarification of associative container requirements. \effect -Valid \CppXIV code that attempts to use associative containers +Valid \CppXIV{} code that attempts to use associative containers having a comparison object with non-const function call operator may fail to compile in this International Standard: @@ -1808,22 +1808,22 @@ \tcode{bind2nd} are not defined. \rationale Superseded by new features. -\effect Valid \CppXIV code that uses these class templates +\effect Valid \CppXIV{} code that uses these class templates and function templates may fail to compile in this International Standard. \change Remove old iostreams members [depr.ios.members]. \rationale Redundant feature for compatibility with pre-standard code has served its time. -\effect A valid \CppXIV program using these identifiers +\effect A valid \CppXIV{} program using these identifiers may be ill-formed in this International Standard. -\rSec1[diff.cpp17]{\Cpp and ISO \CppXVII} +\rSec1[diff.cpp17]{\Cpp{} and ISO \CppXVII{}} \pnum -\indextext{summary!compatibility with ISO \CppXVII}% -This subclause lists the differences between \Cpp and -ISO \CppXVII (ISO/IEC 14882:2017, \doccite{Programming Languages --- \Cpp}), +\indextext{summary!compatibility with ISO \CppXVII{}}% +This subclause lists the differences between \Cpp{} and +ISO \CppXVII{} (ISO/IEC 14882:2017, \doccite{Programming Languages --- \Cpp{}}), by the chapters of this document. \rSec2[diff.cpp17.lex]{\ref{lex}: lexical conventions} @@ -1836,13 +1836,13 @@ a \grammarterm{requires-expression}. The \tcode{concept} keyword is added to enable the definition of concepts\iref{temp.concept}. \effect -Valid ISO \CppXVII code using \tcode{concept} or \tcode{requires} +Valid ISO \CppXVII{} code using \tcode{concept} or \tcode{requires} as an identifier is not valid in this International Standard. \ref{lex.operators} \change New operator \tcode{<=>}. \rationale Necessary for new functionality. -\effect Valid \CppXVII code that contains a \tcode{<=} token +\effect Valid \CppXVII{} code that contains a \tcode{<=} token immediately followed by a \tcode{>} token may be ill-formed or have different semantics in this International Standard: \begin{codeblock} @@ -1861,7 +1861,7 @@ \rationale Rule simplification, necessary to resolve interactions with constexpr if. \effect Lambdas with a \grammarterm{capture-default} may capture local entities -that were not captured in \CppXVII +that were not captured in \CppXVII{} if those entities are only referenced in contexts that do not result in an odr-use. @@ -1903,37 +1903,37 @@ \pnum This subclause summarizes the explicit changes in headers, definitions, declarations, or behavior between the C standard library -in the C standard and the parts of the \Cpp standard library that were +in the C standard and the parts of the \Cpp{} standard library that were included from the C standard library. \rSec2[diff.mods.to.headers]{Modifications to headers} \pnum For compatibility with the C standard library\indextext{library!C standard}, -the \Cpp standard library provides the C headers enumerated -in~\ref{depr.c.headers}, but their use is deprecated in \Cpp. +the \Cpp{} standard library provides the C headers enumerated +in~\ref{depr.c.headers}, but their use is deprecated in \Cpp{}. \pnum -There are no \Cpp headers for the C headers +There are no \Cpp{} headers for the C headers \tcode{}\indexhdr{stdatomic.h}, \tcode{}\indexhdr{stdnoreturn.h}, and \tcode{}\indexhdr{threads.h}, -nor are the C headers themselves part of \Cpp. +nor are the C headers themselves part of \Cpp{}. \pnum -The \Cpp headers \tcode{}\indexhdr{ccomplex}\iref{depr.ccomplex.syn} +The \Cpp{} headers \tcode{}\indexhdr{ccomplex}\iref{depr.ccomplex.syn} and \tcode{}\indexhdr{ctgmath}\iref{depr.ctgmath.syn}, as well as their corresponding C headers \tcode{}\indexhdr{complex.h} and \tcode{}\indexhdr{tgmath.h}, do not contain any of the content from the C standard library and instead merely include other headers -from the \Cpp standard library. +from the \Cpp{} standard library. \pnum The headers \tcode{}\indexhdr{ciso646}, \tcode{}\indexhdr{cstdalign}\iref{depr.cstdalign.syn}, and \tcode{}\indexhdr{cstdbool}\iref{depr.cstdbool.syn} -are meaningless in \Cpp. Use of -the \Cpp headers \tcode{}, \tcode{}, \tcode{}, +are meaningless in \Cpp{}. Use of +the \Cpp{} headers \tcode{}, \tcode{}, \tcode{}, and \tcode{} is deprecated\iref{depr.c.headers}. \rSec2[diff.mods.to.definitions]{Modifications to definitions} @@ -2021,7 +2021,7 @@ \tcode{}\iref{cstring.syn}\indexhdr{cstring}, \tcode{}\iref{ctime.syn}\indexhdr{ctime}, or \tcode{}\iref{cwchar.syn}\indexhdr{cwchar}, -is an \impldef{definition of \tcode{NULL}} \Cpp null pointer constant in +is an \impldef{definition of \tcode{NULL}} \Cpp{} null pointer constant in this International Standard\iref{support.types}. \rSec2[diff.mods.to.declarations]{Modifications to declarations} diff --git a/source/containers.tex b/source/containers.tex index 185b538bbb..0cbb246481 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -4,7 +4,7 @@ \rSec1[containers.general]{General} \pnum -This Clause describes components that \Cpp programs may use to +This Clause describes components that \Cpp{} programs may use to organize collections of information. \pnum diff --git a/source/conversions.tex b/source/conversions.tex index ac3cc4d744..5d371bac31 100644 --- a/source/conversions.tex +++ b/source/conversions.tex @@ -129,7 +129,7 @@ is a non-class type, the type of the prvalue is the cv-unqualified version of \tcode{T}. Otherwise, the type of the prvalue is \tcode{T}.% -\footnote{In \Cpp class and array prvalues can have cv-qualified types. +\footnote{In \Cpp{} class and array prvalues can have cv-qualified types. This differs from ISO C, in which non-lvalues never have cv-qualified types.} diff --git a/source/cover-reg.tex b/source/cover-reg.tex index 783ee68ce5..91e968e150 100644 --- a/source/cover-reg.tex +++ b/source/cover-reg.tex @@ -27,9 +27,9 @@ \vfill -\textbf{\LARGE Programming Languages --- \Cpp} +\textbf{\LARGE Programming Languages --- \Cpp{}} -Langages de programmation --- \Cpp +Langages de programmation --- \Cpp{} \vfill diff --git a/source/cover-wd.tex b/source/cover-wd.tex index d2fcdb118b..949c38dc45 100644 --- a/source/cover-wd.tex +++ b/source/cover-wd.tex @@ -22,7 +22,7 @@ \vspace{2.5cm} \begin{center} \textbf{\Huge -Working Draft, Standard for Programming Language \Cpp} +Working Draft, Standard for Programming Language \Cpp{}} \end{center} \vfill \textbf{Note: this is an early draft. It's known to be incomplet and diff --git a/source/declarations.tex b/source/declarations.tex index fc59ba4855..97e1000293 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1218,7 +1218,7 @@ Furthermore, for some implementations, \tcode{volatile} might indicate that special hardware instructions are required to access the object. See~\ref{intro.execution} for detailed semantics. In general, the -semantics of \tcode{volatile} are intended to be the same in \Cpp as +semantics of \tcode{volatile} are intended to be the same in \Cpp{} as they are in C. \end{note} @@ -3359,12 +3359,12 @@ external linkage, or with a particular calling convention, etc. \end{note} The default language linkage of all function types, function names, and -variable names is \Cpp language linkage. Two function types with +variable names is \Cpp{} language linkage. Two function types with different language linkages are distinct types even if they are otherwise identical. \pnum -Linkage\iref{basic.link} between \Cpp and non-\Cpp code fragments can +Linkage\iref{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% @@ -3397,10 +3397,10 @@ Every implementation shall provide for linkage to functions written in the C programming language, \indextext{C!linkage to}% -\tcode{"C"}, and linkage to \Cpp functions, \tcode{"C++"}. +\tcode{"C"}, and linkage to \Cpp{} functions, \tcode{"C++"}. \begin{example} \begin{codeblock} -complex sqrt(complex); // \Cpp linkage by default +complex sqrt(complex); // \Cpp{} linkage by default extern "C" { double sqrt(double); // C linkage } @@ -3423,13 +3423,13 @@ void f1(void(*pf)(int)); // \tcode{pf} is a pointer to a C function extern "C" typedef void FUNC(); -FUNC f2; // the name \tcode{f2} has \Cpp language linkage and the +FUNC f2; // the name \tcode{f2} has \Cpp{} language linkage and the // function's type has C language linkage extern "C" FUNC f3; // the name of function \tcode{f3} and the function's type have C language linkage -void (*pf2)(FUNC*); // the name of the variable \tcode{pf2} has \Cpp linkage and the type - // of \tcode{pf2} is ``pointer to \Cpp function that takes one parameter of type +void (*pf2)(FUNC*); // the name of the variable \tcode{pf2} has \Cpp{} linkage and the type + // of \tcode{pf2} is ``pointer to \Cpp{} function that takes one parameter of type // pointer to C function'' extern "C" { static void f4(); // the name of the function \tcode{f4} has internal linkage (not C language linkage) @@ -3461,20 +3461,20 @@ class C { void mf1(FUNC_c*); // the name of the function \tcode{mf1} and the member function's type have - // \Cpp language linkage; the parameter has type ``pointer to C function'' + // \Cpp{} language linkage; the parameter has type ``pointer to C function'' FUNC_c mf2; // the name of the function \tcode{mf2} and the member function's type have - // \Cpp language linkage + // \Cpp{} language linkage - static FUNC_c* q; // the name of the data member \tcode{q} has \Cpp language linkage and + static FUNC_c* q; // the name of the data member \tcode{q} has \Cpp{} language linkage and // the data member's type is ``pointer to C function'' }; extern "C" { class X { void mf(); // the name of the function \tcode{mf} and the member function's type have - // \Cpp language linkage - void mf2(void(*)()); // the name of the function \tcode{mf2} has \Cpp language linkage; + // \Cpp{} language linkage + void mf2(void(*)()); // the name of the function \tcode{mf2} has \Cpp{} language linkage; // the parameter has type ``pointer to C function'' }; } @@ -3489,7 +3489,7 @@ program is ill-formed; no diagnostic is required if the declarations appear in different translation units. \indextext{consistency!linkage specification}% -Except for functions with \Cpp linkage, a function declaration without a +Except for functions with \Cpp{} linkage, a function declaration without a linkage specification shall not precede the first linkage specification for that function. A function can be declared without a linkage specification after an explicit linkage specification has been seen; the @@ -3573,8 +3573,8 @@ \pnum \indextext{object!linkage specification}% \indextext{linkage!implementation-defined object}% -Linkage from \Cpp to objects defined in other languages and to objects -defined in \Cpp from other languages is \impldef{linkage of objects between \Cpp and other languages} and +Linkage from \Cpp{} to objects defined in other languages and to objects +defined in \Cpp{} from other languages is \impldef{linkage of objects between \Cpp{} and other languages} and language-dependent. Only where the object layout strategies of two language implementations are similar enough can such linkage be achieved.% diff --git a/source/declarators.tex b/source/declarators.tex index 2eac02e429..4a5790e9a6 100644 --- a/source/declarators.tex +++ b/source/declarators.tex @@ -943,7 +943,7 @@ The type ``pointer to member'' is distinct from the type ``pointer'', that is, a pointer to member is declared only by the pointer-to-member declarator syntax, and never by the pointer declarator syntax. -There is no ``reference-to-member'' type in \Cpp. +There is no ``reference-to-member'' type in \Cpp{}. \end{note} \rSec2[dcl.array]{Arrays}% @@ -3187,7 +3187,7 @@ shall not be used as the \grammarterm{initializer-clause} for an array of unknown bound.\footnote{The syntax provides for empty \grammarterm{initializer-list}{s}, -but nonetheless \Cpp does not have zero length arrays.} +but nonetheless \Cpp{} does not have zero length arrays.} \begin{note} A default member initializer does not determine the bound for a member array of unknown bound. Since the default member initializer is diff --git a/source/diagnostics.tex b/source/diagnostics.tex index febd032749..fdebadbe27 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -4,7 +4,7 @@ \rSec1[diagnostics.general]{General} \pnum -This Clause describes components that \Cpp programs may use to detect and +This Clause describes components that \Cpp{} programs may use to detect and report error conditions. \pnum @@ -24,8 +24,8 @@ \rSec1[std.exceptions]{Exception classes} \pnum -The \Cpp standard library provides classes to be used to report certain errors\iref{res.on.exception.handling} in -\Cpp programs. +The \Cpp{} standard library provides classes to be used to report certain errors\iref{res.on.exception.handling} in +\Cpp{} programs. In the error model reflected in these classes, errors are divided into two broad categories: \term{logic} @@ -44,7 +44,7 @@ The header \tcode{} \indexhdr{stdexcept}% -defines several types of predefined exceptions for reporting errors in a \Cpp program. +defines several types of predefined exceptions for reporting errors in a \Cpp{} program. These exceptions are related by inheritance. \rSec2[stdexcept.syn]{Header \tcode{} synopsis} @@ -538,7 +538,7 @@ \pnum The header \tcode{} -provides a macro for documenting \Cpp program assertions and a mechanism +provides a macro for documenting \Cpp{} program assertions and a mechanism for disabling the assertion checks. \rSec2[cassert.syn]{Header \tcode{} synopsis} @@ -758,7 +758,7 @@ \pnum This subclause describes components that the standard library and -\Cpp programs may use to report error conditions originating from +\Cpp{} programs may use to report error conditions originating from the operating system or other low-level application program interfaces. \pnum diff --git a/source/expressions.tex b/source/expressions.tex index d36447bdce..b69f34e13b 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -1058,7 +1058,7 @@ \grammarterm{lambda-capture} whose constraints (if any) are satisfied has a conversion function to pointer to -function with \Cpp language linkage\iref{dcl.link} having +function with \Cpp{} language linkage\iref{dcl.link} having the same parameter and return types as the closure type's function call operator. The conversion is to ``pointer to \tcode{noexcept} function'' if the function call operator @@ -1272,7 +1272,7 @@ ``\tcode{this}'', or ``\tcode{* this}''. \begin{note} The form \tcode{[\&,this]} is redundant but accepted -for compatibility with ISO \CppXIV. \end{note} +for compatibility with ISO \CppXIV{}. \end{note} Ignoring appearances in \grammarterm{initializer}{s} of \grammarterm{init-capture}{s}, an identifier or \tcode{this} shall not appear more than once in a @@ -3900,7 +3900,7 @@ An implementation shall provide default definitions for the global allocation functions~(\ref{basic.stc.dynamic}, \ref{new.delete.single}, \ref{new.delete.array}). -A \Cpp program can provide alternative definitions of +A \Cpp{} program can provide alternative definitions of these functions\iref{replacement.functions} and/or class-specific versions\iref{class.free}. The set of allocation and deallocation functions that may be called @@ -4340,7 +4340,7 @@ deallocation functions \tcode{operator delete} for non-arrays\iref{new.delete.single} and \indextext{\idxcode{operator delete}}% -\tcode{operator delete[]} for arrays\iref{new.delete.array}. A \Cpp +\tcode{operator delete[]} for arrays\iref{new.delete.array}. A \Cpp{} program can provide alternative definitions of these functions\iref{replacement.functions}, and/or class-specific versions\iref{class.free}. diff --git a/source/future.tex b/source/future.tex index f1ed9437ac..2172da7d02 100644 --- a/source/future.tex +++ b/source/future.tex @@ -2,7 +2,7 @@ \normannex{depr}{Compatibility features} \pnum -This Clause describes features of the \Cpp Standard that are specified for compatibility with +This Clause describes features of the \Cpp{} Standard that are specified for compatibility with existing implementations. \pnum @@ -23,10 +23,10 @@ \begin{example} \begin{codeblock} struct A { - static constexpr int n = 5; // definition (declaration in \CppXIV) + static constexpr int n = 5; // definition (declaration in \CppXIV{}) }; -constexpr int A::n; // redundant declaration (definition in \CppXIV) +constexpr int A::n; // redundant declaration (definition in \CppXIV{}) \end{codeblock} \end{example} @@ -48,11 +48,11 @@ \pnum The \grammarterm{noexcept-specifier} \tcode{throw()} is deprecated. -\rSec1[depr.cpp.headers]{\Cpp standard library headers} +\rSec1[depr.cpp.headers]{\Cpp{} standard library headers} \pnum -For compatibility with prior \Cpp International Standards, -the \Cpp standard library provides headers +For compatibility with prior \Cpp{} International Standards, +the \Cpp{} standard library provides headers \tcode{}\iref{depr.ccomplex.syn}, \tcode{}\iref{depr.cstdalign.syn}, \tcode{}\iref{depr.cstdbool.syn}, @@ -129,7 +129,7 @@ \pnum For compatibility with the \indextext{library!C standard}% -C standard library, the \Cpp standard library provides +C standard library, the \Cpp{} standard library provides the \defnx{C headers}{headers!C library} shown in Table~\ref{tab:future.c.headers}. \begin{floattable}{C headers}{tab:future.c.headers} @@ -2218,7 +2218,7 @@ \pnum \begin{example} -If a \Cpp program wants to define a bidirectional iterator for some data +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: diff --git a/source/grammar.tex b/source/grammar.tex index 96e779c393..02135b574f 100644 --- a/source/grammar.tex +++ b/source/grammar.tex @@ -3,10 +3,10 @@ \pnum \indextext{grammar}% \indextext{summary!syntax}% -This summary of \Cpp grammar is intended to be an aid to comprehension. +This summary of \Cpp{} grammar is intended to be an aid to comprehension. It is not an exact statement of the language. In particular, the grammar described here accepts -a superset of valid \Cpp constructs. +a superset of valid \Cpp{} constructs. Disambiguation rules~(\ref{stmt.ambig}, \ref{dcl.spec}, \ref{class.member.lookup}) must be applied to distinguish expressions from declarations. Further, access control, ambiguity, and type rules must be used diff --git a/source/intro.tex b/source/intro.tex index 532ca0c471..9acf171725 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -5,17 +5,17 @@ \pnum \indextext{scope|(}% This document specifies requirements for implementations -of the \Cpp programming language. The first such requirement is that +of the \Cpp{} programming language. The first such requirement is that they implement the language, so this document also -defines \Cpp. Other requirements and relaxations of the first +defines \Cpp{}. Other requirements and relaxations of the first requirement appear at various places within this document. \pnum -\Cpp is a general purpose programming language based on the C +\Cpp{} is a general purpose programming language based on the C programming language as described in ISO/IEC 9899:2011 \doccite{Programming languages --- C} (hereinafter referred to as the \defnx{C standard}{C!standard}). In addition to -the facilities provided by C, \Cpp provides additional data types, +the facilities provided by C, \Cpp{} provides additional data types, classes, templates, exceptions, namespaces, operator overloading, function name overloading, references, free store management operators, and additional library facilities.% @@ -56,7 +56,7 @@ \defnx{C standard library}{C!standard library}.% \footnote{With the qualifications noted in \ref{\firstlibchapter} through \ref{\lastlibchapter} and in \ref{diff.library}, the C standard -library is a subset of the \Cpp standard library.} +library is a subset of the \Cpp{} standard library.} \pnum The operating system interface described in ISO/IEC 9945:2003 is @@ -319,7 +319,7 @@ \indexdefn{program!well-formed}% \definition{well-formed program}{defns.well.formed} -\Cpp program constructed according to the syntax rules, diagnosable +\Cpp{} program constructed according to the syntax rules, diagnosable semantic rules, and the one-definition rule\iref{basic.def.odr}% \indextext{definitions|)} @@ -361,7 +361,7 @@ \pnum \indextext{conformance requirements!method of description}% -Although this document states only requirements on \Cpp +Although this document states only requirements on \Cpp{} implementations, those requirements are often easier to understand if they are phrased as requirements on programs, parts of programs, or execution of programs. Such requirements have the following meaning: @@ -407,7 +407,7 @@ \pnum The names defined in the library have namespace -scope\iref{basic.namespace}. A \Cpp translation +scope\iref{basic.namespace}. A \Cpp{} translation unit\iref{lex.phases} obtains access to these names by including the appropriate standard library header\iref{cpp.include}. @@ -415,7 +415,7 @@ The templates, classes, functions, and objects in the library have external linkage\iref{basic.link}. The implementation provides definitions for standard library entities, as necessary, while combining -translation units to form a complete \Cpp program\iref{lex.phases}.% +translation units to form a complete \Cpp{} program\iref{lex.phases}.% \indextext{conformance requirements!library|)} \pnum @@ -583,14 +583,14 @@ \pnum \indextext{standard!structure of|(}% \indextext{standard!structure of}% -\ref{lex} through \ref{cpp} describe the \Cpp programming +\ref{lex} through \ref{cpp} describe the \Cpp{} programming language. That description includes detailed syntactic specifications in a form described in~\ref{syntax}. For convenience, \ref{gram} repeats all such syntactic specifications. \pnum \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr} -(the \defn{library clauses}) describe the \Cpp standard library. +(the \defn{library clauses}) describe the \Cpp{} standard library. That description includes detailed descriptions of the entities and macros that constitute the library, in a form described in \ref{library}. @@ -600,9 +600,9 @@ implementations. \pnum -\ref{diff} summarizes the evolution of \Cpp since its first +\ref{diff} summarizes the evolution of \Cpp{} since its first published description, and explains in detail the differences between -\Cpp and C\@. Certain features of \Cpp exist solely for compatibility +\Cpp{} and C\@. Certain features of \Cpp{} exist solely for compatibility purposes; \ref{depr} describes those features. \pnum @@ -651,9 +651,9 @@ \rSec1[intro.ack]{Acknowledgments} \pnum -The \Cpp programming language as described in this document +The \Cpp{} programming language as described in this document is based on the language as described in Chapter R (Reference -Manual) of Stroustrup: \doccite{The \Cpp Programming Language} (second +Manual) of Stroustrup: \doccite{The \Cpp{} Programming Language} (second edition, Addison-Wesley Publishing Company, ISBN 0-201-53992-6, copyright \copyright 1991 AT\&T). That, in turn, is based on the C programming language as described in Appendix A of Kernighan and @@ -663,7 +663,7 @@ \pnum Portions of the library Clauses of this document are based on work by P.J. Plauger, which was published as \doccite{The Draft -Standard \Cpp Library} (Prentice-Hall, ISBN 0-13-117003-1, copyright +Standard \Cpp{} Library} (Prentice-Hall, ISBN 0-13-117003-1, copyright \copyright 1995 P.J. Plauger). \pnum diff --git a/source/iostreams.tex b/source/iostreams.tex index b70845f977..d94c3b847f 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -4,7 +4,7 @@ \rSec1[input.output.general]{General} \pnum -This Clause describes components that \Cpp programs may use to perform +This Clause describes components that \Cpp{} programs may use to perform input/output operations. \pnum @@ -1355,7 +1355,7 @@ \begin{itemdescr} \pnum \returns -If no locale has been imbued, a copy of the global \Cpp locale, +If no locale has been imbued, a copy of the global \Cpp{} locale, \tcode{locale()}, in effect at the time of construction. Otherwise, returns the imbued locale, to be used to @@ -2729,7 +2729,7 @@ \pnum \begin{note} The more obvious use of \tcode{ios_base::hex} to specify hexadecimal floating-point format would -change the meaning of existing well-defined programs. \CppIII +change the meaning of existing well-defined programs. \CppIII{} gives no meaning to the combination of \tcode{fixed} and \tcode{scientific}.\end{note} @@ -11421,7 +11421,7 @@ native narrow encoding is determined by calling a Windows API function. \end{note} \begin{note} -This results in behavior identical to other C and \Cpp +This results in behavior identical to other C and \Cpp{} standard library functions that perform file operations using narrow character strings to identify paths. Changing this behavior would be surprising and error prone. diff --git a/source/iterators.tex b/source/iterators.tex index 4b8dfadce6..0c97d91873 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -4,7 +4,7 @@ \rSec1[iterators.general]{General} \pnum -This Clause describes components that \Cpp programs may use to perform +This Clause describes components that \Cpp{} programs may use to perform iterations over containers\iref{containers}, streams\iref{iostream.format}, and stream buffers\iref{stream.buffers}. @@ -32,7 +32,7 @@ \pnum \indextext{requirements!iterator}% -Iterators are a generalization of pointers that allow a \Cpp program to work with different data structures +Iterators are a generalization of pointers that allow a \Cpp{} program to work with different data structures (containers) in a uniform manner. To be able to construct template algorithms that work correctly and efficiently on different types of data structures, the library formalizes not just the interfaces but also the @@ -67,7 +67,7 @@ \pnum Since iterators are an abstraction of pointers, their semantics is -a generalization of most of the semantics of pointers in \Cpp. +a generalization of most of the semantics of pointers in \Cpp{}. This ensures that every function template that takes iterators @@ -939,7 +939,7 @@ \begin{example} To implement a generic \tcode{reverse} -function, a \Cpp program can do the following: +function, a \Cpp{} program can do the following: \begin{codeblock} template diff --git a/source/lex.tex b/source/lex.tex index 3099046d3b..8d58483eea 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -35,7 +35,7 @@ directive \tcode{\#include}, less any source lines skipped by any of the conditional inclusion\iref{cpp.cond} preprocessing directives, is called a \defn{translation unit}. -\begin{note} A \Cpp program need not all be translated at the same time. +\begin{note} A \Cpp{} program need not all be translated at the same time. \end{note} \pnum @@ -555,9 +555,9 @@ forming valid external identifiers. For example, some otherwise unused character or sequence of characters may be used to encode the \tcode{\textbackslash u} in a \grammarterm{universal-character-name}. Extended -characters may produce a long external identifier, but \Cpp does not +characters may produce a long external identifier, but \Cpp{} does not place a translation limit on significant characters for external -identifiers. In \Cpp, upper- and lower-case letters are considered +identifiers. In \Cpp{}, upper- and lower-case letters are considered different for all identifiers, including external identifiers. } \begin{floattable}{Ranges of characters allowed}{tab:charname.allowed} @@ -639,7 +639,7 @@ \indextext{\idxcode{_}|see{character, underscore}}% \indextext{character!underscore!in identifier}% \indextext{reserved identifier}% -In addition, some identifiers are reserved for use by \Cpp +In addition, some identifiers are reserved for use by \Cpp{} implementations and shall not be used otherwise; no diagnostic is required. \begin{itemize} @@ -788,7 +788,7 @@ \pnum \indextext{operator|(}% \indextext{punctuator|(}% -The lexical representation of \Cpp programs includes a number of +The lexical representation of \Cpp{} programs includes a number of preprocessing tokens which are used in the syntax of the preprocessor or are converted into tokens for operators and punctuators: @@ -1199,7 +1199,7 @@ \pnum Certain non-graphic characters, the single quote \tcode{'}, the double quote \tcode{"}, the question mark \tcode{?},\footnote{Using an escape sequence for a question mark -is supported for compatibility with ISO \CppXIV and ISO C.} +is supported for compatibility with ISO \CppXIV{} and ISO C.} and the backslash \indextext{backslash character}% \indextext{\idxcode{\textbackslash}|see{backslash character}}% diff --git a/source/lib-intro.tex b/source/lib-intro.tex index a242c0ecd6..95c08c3f6b 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -5,9 +5,9 @@ \pnum This Clause describes the contents of the -\term{\Cpp standard library}, +\term{\Cpp{} standard library}, \indextext{library!C++ standard}% -how a well-formed \Cpp program makes use of the library, and +how a well-formed \Cpp{} program makes use of the library, and how a conforming implementation may provide the entities in the library. \pnum @@ -16,7 +16,7 @@ library. \ref{requirements}, \ref{\firstlibchapter} through \ref{\lastlibchapter}, and \ref{depr} specify the contents of the library, as well as library requirements and constraints on both well-formed -\Cpp programs and conforming implementations. +\Cpp{} programs and conforming implementations. \pnum Detailed specifications for each of the components in the library are in @@ -41,19 +41,19 @@ \pnum The language support library\iref{language.support} provides components that are -required by certain parts of the \Cpp language, such as memory allocation~(\ref{expr.new}, +required by certain parts of the \Cpp{} language, such as memory allocation~(\ref{expr.new}, \ref{expr.delete}) and exception processing\iref{except}. \pnum The diagnostics library\iref{diagnostics} provides a consistent framework for -reporting errors in a \Cpp program, including predefined exception classes. +reporting errors in a \Cpp{} program, including predefined exception classes. \pnum The general utilities library\iref{utilities} includes components used by other library elements, such as a predefined storage allocator for dynamic storage management\iref{basic.stc.dynamic}, and components used as infrastructure -in \Cpp programs, +in \Cpp{} programs, such as tuples, function wrappers, and time facilities. \pnum @@ -74,7 +74,7 @@ \pnum The containers\iref{containers}, iterators\iref{iterators}, -and algorithms\iref{algorithms} libraries provide a \Cpp program with access +and algorithms\iref{algorithms} libraries provide a \Cpp{} program with access to a subset of the most widely used algorithms and data structures. \pnum @@ -91,7 +91,7 @@ \pnum The input/output library\iref{input.output} provides the \tcode{iostream} -components that are the primary mechanism for \Cpp program input and output. +components that are the primary mechanism for \Cpp{} program input and output. They can be used with other elements of the library, particularly strings, locales, and iterators. @@ -109,7 +109,7 @@ \rSec1[library.c]{The C standard library} \pnum -The \Cpp standard library also makes available the facilities of the C standard library, +The \Cpp{} standard library also makes available the facilities of the C standard library, \indextext{library!C standard}% suitably adjusted to ensure static type safety. @@ -227,10 +227,10 @@ \definition{handler function}{defns.handler} \indexdefn{function!handler}% \term{non-reserved function} -whose definition may be provided by a \Cpp program +whose definition may be provided by a \Cpp{} program \begin{defnote} -A \Cpp program may designate a handler function at various points in its execution by +A \Cpp{} program may designate a handler function at various points in its execution by supplying a pointer to the function when calling any of the library functions that install handler functions\iref{language.support}. \end{defnote} @@ -303,7 +303,7 @@ \definition{replacement function}{defns.replacement} \indexdefn{function!replacement}% non-reserved function -whose definition is provided by a \Cpp program +whose definition is provided by a \Cpp{} program \begin{defnote} Only one definition for such a function is in effect for the duration of the program's @@ -327,18 +327,18 @@ the behavior of any such function definition in the program \begin{defnote} -If such a function defined in a \Cpp program fails to meet the required +If such a function defined in a \Cpp{} program fails to meet the required behavior when it executes, the behavior is undefined.% \indextext{undefined} \end{defnote} \definition{reserved function}{defns.reserved.function} \indexdefn{function!reserved}% -function, specified as part of the \Cpp standard library, that is defined by the +function, specified as part of the \Cpp{} standard library, that is defined by the implementation \begin{defnote} -If a \Cpp program provides a definition for any reserved function, the results are undefined.% +If a \Cpp{} program provides a definition for any reserved function, the results are undefined.% \indextext{undefined} \end{defnote} @@ -372,7 +372,7 @@ \rSec1[description]{Method of description (Informative)} \pnum -This subclause describes the conventions used to specify the \Cpp standard +This subclause describes the conventions used to specify the \Cpp{} standard library. \ref{structure} describes the structure of the normative \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr}. \ref{conventions} describes other editorial conventions. @@ -421,7 +421,7 @@ \pnum \indextext{requirements}% -Requirements describe constraints that shall be met by a \Cpp program that extends the standard library. +Requirements describe constraints that shall be met by a \Cpp{} program that extends the standard library. Such extensions are generally one of the following: \begin{itemize} @@ -454,7 +454,7 @@ See~\ref{type.descriptions}. \pnum -In some cases the semantic requirements are presented as \Cpp code. +In some cases the semantic requirements are presented as \Cpp{} code. Such code is intended as a specification of equivalence of a construct to another construct, not necessarily as the way the construct @@ -531,7 +531,7 @@ describes a function definition provided by the implementation. The \defnx{required behavior}{behavior!required} describes the semantics of a function definition provided by -either the implementation or a \Cpp program. +either the implementation or a \Cpp{} program. Where no distinction is explicitly made in the description, the behavior described is the required behavior. @@ -561,7 +561,7 @@ \pnum This subclause describes several editorial conventions used to describe the contents -of the \Cpp standard library. +of the \Cpp{} standard library. These conventions are for describing implementation-defined types\iref{type.descriptions}, and member functions\iref{functions.within.classes}. @@ -582,7 +582,7 @@ \tcode{ForwardIterator}.} These names are used in library Clauses to describe the types that -may be supplied as arguments by a \Cpp program when instantiating template components from +may be supplied as arguments by a \Cpp{} program when instantiating template components from the library. \pnum @@ -969,7 +969,7 @@ \rSec1[requirements]{Library-wide requirements} \pnum -This subclause specifies requirements that apply to the entire \Cpp standard library. +This subclause specifies requirements that apply to the entire \Cpp{} standard library. \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr} specify the requirements of individual entities within the library. @@ -979,27 +979,27 @@ \pnum Within this subclause, \ref{organization} describes the library's contents and -organization, \ref{using} describes how well-formed \Cpp programs gain access to library +organization, \ref{using} describes how well-formed \Cpp{} programs gain access to library entities, \ref{utility.requirements} describes constraints on types and functions used with -the \Cpp standard library, -\ref{constraints} describes constraints on well-formed \Cpp programs, and +the \Cpp{} standard library, +\ref{constraints} describes constraints on well-formed \Cpp{} programs, and \ref{conforming} describes constraints on conforming implementations. \rSec2[organization]{Library contents and organization} \pnum -\ref{contents} describes the entities and macros defined in the \Cpp standard library. +\ref{contents} describes the entities and macros defined in the \Cpp{} standard library. \ref{headers} lists the standard library headers and some constraints on those headers. -\ref{compliance} lists requirements for a freestanding implementation of the \Cpp +\ref{compliance} lists requirements for a freestanding implementation of the \Cpp{} standard library. \rSec3[contents]{Library contents} \pnum -The \Cpp standard library provides definitions +The \Cpp{} standard library provides definitions for the entities and macros described in the synopses -of the \Cpp standard library headers\iref{headers}. +of the \Cpp{} standard library headers\iref{headers}. \pnum All library entities except @@ -1010,7 +1010,7 @@ \tcode{std} or namespaces nested within namespace \tcode{std}.\footnote{The C standard library headers\iref{depr.c.headers} also define -names within the global namespace, while the \Cpp headers for C library +names within the global namespace, while the \Cpp{} headers for C library facilities\iref{headers} may also define names within the global namespace.}% \indextext{namespace} It is unspecified whether names declared in a specific namespace are declared @@ -1031,17 +1031,17 @@ \rSec3[headers]{Headers} \pnum -Each element of the \Cpp standard library is declared or defined (as appropriate) in a +Each element of the \Cpp{} standard library is declared or defined (as appropriate) in a \term{header}.\footnote{A header is not necessarily a source file, nor are the sequences delimited by \tcode{<} and \tcode{>} in header names necessarily valid source file names\iref{cpp.include}.} \pnum -The \Cpp standard library provides the -\defnx{\Cpp library headers}{header!C++ library}, +The \Cpp{} standard library provides the +\defnx{\Cpp{} library headers}{header!C++ library}, shown in Table~\ref{tab:cpp.library.headers}. -\begin{floattable}{\Cpp library headers}{tab:cpp.library.headers} +\begin{floattable}{\Cpp{} library headers}{tab:cpp.library.headers} {llll} \topline \tcode{} & @@ -1130,7 +1130,7 @@ The facilities of the C standard library are provided in the \indextext{library!C standard}% additional headers shown in Table~\ref{tab:cpp.c.headers}.% -\footnote{It is intentional that there is no \Cpp header +\footnote{It is intentional that there is no \Cpp{} header for any of these C headers: \indexhdr{stdatomic.h}% \indexhdr{stdnoreturn.h}% @@ -1139,7 +1139,7 @@ \tcode{}, \tcode{}.} -\begin{floattable}{\Cpp headers for C library facilities}{tab:cpp.c.headers} +\begin{floattable}{\Cpp{} headers for C library facilities}{tab:cpp.c.headers} {lllll} \topline @@ -1183,7 +1183,7 @@ 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 specified in the C standard library\iref{intro.refs}. -In the \Cpp standard library, however, the +In the \Cpp{} standard library, however, the declarations (except for names which are defined as macros in C) are within namespace scope\iref{basic.scope.namespace} of the namespace \tcode{std}. It is unspecified whether these names (including any overloads added in @@ -1193,7 +1193,7 @@ \grammarterm{using-declaration}{s}\iref{namespace.udecl}. \pnum -Names which are defined as macros in C shall be defined as macros in the \Cpp +Names which are defined as macros in C shall be defined as macros in the \Cpp{} standard library, even if C grants license for implementation as functions. \begin{note} The names defined as macros in C include the following: \tcode{assert}, \tcode{offsetof}, \tcode{setjmp}, \tcode{va_arg}, @@ -1201,22 +1201,22 @@ \pnum Names that are defined as functions in C shall be defined as functions in the -\Cpp standard library.\footnote{This disallows the practice, allowed in C, of +\Cpp{} standard library.\footnote{This disallows the practice, allowed in C, of providing a masking macro in addition to the function prototype. The only way to -achieve equivalent inline behavior in \Cpp is to provide a definition as an +achieve equivalent inline behavior in \Cpp{} is to provide a definition as an extern inline function.} \pnum -Identifiers that are keywords or operators in \Cpp shall not be defined as -macros in \Cpp standard library headers.\footnote{In particular, including the +Identifiers that are keywords or operators in \Cpp{} shall not be defined as +macros in \Cpp{} standard library headers.\footnote{In particular, including the standard header \tcode{} or \tcode{} has no effect.} \pnum \ref{depr.c.headers}, C standard library headers, describes the effects of using -the \tcode{\placeholder{name}.h} (C header) form in a \Cpp program.\footnote{ The +the \tcode{\placeholder{name}.h} (C header) form in a \Cpp{} program.\footnote{ The \tcode{".h"} headers dump all their names into the global namespace, whereas the newer forms keep their names in namespace \tcode{std}. Therefore, the newer -forms are the preferred forms for all uses except for \Cpp programs which are +forms are the preferred forms for all uses except for \Cpp{} programs which are intended to be strictly compatible with C. } \pnum @@ -1229,9 +1229,9 @@ as the C library function with the unsuffixed name, but generally take an additional argument whose value is the size of the result array. -If any \Cpp header is included, +If any \Cpp{} header is included, it is \impldef{whether functions from Annex K of the C standard library -are declared when \Cpp headers are included} +are declared when \Cpp{} headers are included} whether any of these names is declared in the global namespace. (None of them is declared in namespace \tcode{std}.) @@ -1353,7 +1353,7 @@ \impldef{headers for freestanding implementation} set of headers. This set shall include at least the headers shown in Table~\ref{tab:cpp.headers.freestanding}. -\begin{libsumtab}{\Cpp headers for freestanding implementations}{tab:cpp.headers.freestanding} +\begin{libsumtab}{\Cpp{} headers for freestanding implementations}{tab:cpp.headers.freestanding} & & \tcode{} \\ \rowsep \ref{support.types} & Types & \tcode{} \\ \rowsep \ref{support.limits} & Implementation properties & \tcode{} \tcode{} \tcode{} \\ \rowsep @@ -1392,15 +1392,15 @@ \rSec3[using.overview]{Overview} \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 +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 phase 4, while~\ref{using.linkage} describes effects during phase 8\iref{lex.phases}. \rSec3[using.headers]{Headers} \pnum -The entities in the \Cpp standard library are defined in headers, +The entities in the \Cpp{} standard library are defined in headers, whose contents are made available to a translation unit when it contains the appropriate \indextext{unit!translation}% \tcode{\#include} @@ -1434,7 +1434,7 @@ \rSec3[using.linkage]{Linkage} \pnum -Entities in the \Cpp standard library have external linkage\iref{basic.link}. +Entities in the \Cpp{} standard library have external linkage\iref{basic.link}. Unless otherwise specified, objects and functions have the default \tcode{extern "C++"} linkage\iref{dcl.link}. @@ -1460,7 +1460,7 @@ \pnum Objects and functions -defined in the library and required by a \Cpp program are included in +defined in the library and required by a \Cpp{} program are included in the program prior to program startup. \indextext{startup!program}% @@ -1474,7 +1474,7 @@ \pnum \ref{utility.arg.requirements} describes requirements on types and expressions used to instantiate templates -defined in the \Cpp standard library. +defined in the \Cpp{} standard library. \ref{swappable.requirements} describes the requirements on swappable types and swappable expressions. \ref{nullablepointer.requirements} describes the requirements on pointer-like @@ -1486,11 +1486,11 @@ \rSec3[utility.arg.requirements]{Template argument requirements} \pnum -The template definitions in the \Cpp standard library +The template definitions in the \Cpp{} standard library refer to various named requirements whose details are set out in Tables~\ref{tab:equalitycomparable}--\ref{tab:destructible}. In these tables, \tcode{T} is an object or reference type to be -supplied by a \Cpp program instantiating a template; +supplied by a \Cpp{} program instantiating a template; \tcode{a}, \tcode{b}, and \tcode{c} are values of type (possibly \tcode{const}) \tcode{T}; @@ -2214,8 +2214,8 @@ \rSec3[constraints.overview]{Overview} \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 +Subclause \ref{constraints} describes restrictions on \Cpp{} programs that use the facilities of +the \Cpp{} standard library. The following subclauses specify constraints on the program's use of namespaces\iref{namespace.std}, its use of various reserved names\iref{reserved.names}, its use of headers\iref{alt.headers}, its use of standard library classes as base classes\iref{derived.classes}, its @@ -2227,7 +2227,7 @@ \rSec4[namespace.std]{Namespace \tcode{std}} \pnum -The behavior of a \Cpp program is undefined if it adds declarations or definitions to namespace +The behavior of a \Cpp{} program is undefined if it adds declarations or definitions to namespace \tcode{std} or to a namespace within namespace \tcode{std} @@ -2243,13 +2243,13 @@ that meets the minimum requirements of this document.} \pnum -The behavior of a \Cpp program is undefined +The behavior of a \Cpp{} program is undefined if it declares an explicit or partial specialization of any standard library variable template, except where explicitly permitted by the specification of that variable template. \pnum -The behavior of a \Cpp program is undefined if it declares +The behavior of a \Cpp{} program is undefined if it declares \begin{itemize} \item an explicit specialization of any member function of a standard library class template, or @@ -2273,7 +2273,7 @@ \rSec4[namespace.posix]{Namespace \tcode{posix}} \pnum -The behavior of a \Cpp program is undefined if it adds declarations or definitions to namespace +The behavior of a \Cpp{} program is undefined if it adds declarations or definitions to namespace \tcode{posix} or to a namespace within namespace \tcode{posix} @@ -2286,7 +2286,7 @@ Top level namespaces with a name starting with \tcode{std} and followed by a non-empty sequence of digits are reserved for future standardization. -The behavior of a \Cpp program is undefined if +The behavior of a \Cpp{} program is undefined if it adds declarations or definitions to such a namespace. \begin{example} The top level namespace \tcode{std2} is reserved for use by future revisions of this International Standard. \end{example} @@ -2295,7 +2295,7 @@ \indextext{name!reserved} \pnum -The \Cpp standard library reserves the following kinds of names: +The \Cpp{} standard library reserves the following kinds of names: \begin{itemize} \item macros \item global names @@ -2472,7 +2472,7 @@ \pnum If a file with a name -equivalent to the derived file name for one of the \Cpp standard library headers +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 is placed in any of the standard places for a source file to be included\iref{cpp.include}, the behavior is undefined.% @@ -2484,7 +2484,7 @@ \pnum Virtual member function signatures defined \indextext{function!virtual member}% -for a base class in the \Cpp standard +for a base class in the \Cpp{} standard \indextext{class!base}% \indextext{library!C++ standard}% library may be overridden in a derived class defined in the program\iref{class.virtual}. @@ -2495,14 +2495,14 @@ \indextext{definition!alternate}% \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr} describe the behavior of numerous functions defined by -the \Cpp standard library. +the \Cpp{} standard library. Under some circumstances, \indextext{library!C++ standard}% however, certain of these function descriptions also apply to replacement functions defined in the program\iref{definitions}. \pnum -A \Cpp program may provide the definition for any of the following +A \Cpp{} program may provide the definition for any of the following dynamic memory allocation function signatures declared in header \tcode{}~(\ref{basic.stc.dynamic}, \ref{support.dynamic}): @@ -2555,7 +2555,7 @@ \rSec3[handler.functions]{Handler functions} \pnum -The \Cpp standard library provides a default version of the following handler +The \Cpp{} standard library provides a default version of the following handler function\iref{language.support}: \begin{itemize} @@ -2565,7 +2565,7 @@ \end{itemize} \pnum -A \Cpp program may install different handler functions during execution, by +A \Cpp{} program may install different handler functions during execution, by supplying a pointer to a function defined in the program or the library as an argument to (respectively): \begin{itemize} @@ -2576,7 +2576,7 @@ Exception handling. \pnum -A \Cpp program can get a pointer to the current handler function by calling the following +A \Cpp{} program can get a pointer to the current handler function by calling the following functions: \begin{itemize} @@ -2597,8 +2597,8 @@ \pnum In certain cases (replacement functions, handler functions, operations on types used to -instantiate standard library template components), the \Cpp standard library depends on -components supplied by a \Cpp program. +instantiate standard library template components), the \Cpp{} standard library depends on +components supplied by a \Cpp{} program. If these components do not meet their requirements, this document places no requirements on the implementation. @@ -2643,7 +2643,7 @@ \indextext{argument}% Each of the following applies to all arguments \indextext{argument}% -to functions defined in the \Cpp standard library,% +to functions defined in the \Cpp{} standard library,% \indextext{library!C++ standard} unless explicitly stated otherwise. @@ -2715,7 +2715,7 @@ \rSec3[conforming.overview]{Overview} \pnum -Subclause \ref{conforming} describes the constraints upon, and latitude of, implementations of the \Cpp standard library. +Subclause \ref{conforming} describes the constraints upon, and latitude of, implementations of the \Cpp{} standard library. \pnum An implementation's use of headers is discussed in~\ref{res.on.headers}, its use @@ -2728,9 +2728,9 @@ \rSec3[res.on.headers]{Headers} \pnum -A \Cpp header may include other \Cpp headers. -A \Cpp header shall provide the declarations and definitions that appear in its -synopsis. A \Cpp header shown in its synopsis as including other \Cpp headers +A \Cpp{} header may include other \Cpp{} headers. +A \Cpp{} header shall provide the declarations and definitions that appear in its +synopsis. A \Cpp{} header shown in its synopsis as including other \Cpp{} headers shall provide the declarations and definitions that appear in the synopses of those other headers. @@ -2741,7 +2741,7 @@ \pnum The C standard library headers\iref{depr.c.headers} -shall include only their corresponding \Cpp standard library header, +shall include only their corresponding \Cpp{} standard library header, as described in~\ref{headers}. \rSec3[res.on.macro.definitions]{Restrictions on macro definitions} @@ -2767,17 +2767,17 @@ \pnum It is unspecified whether any non-member -functions in the \Cpp standard library are defined as +functions in the \Cpp{} standard library are defined as inline\iref{dcl.inline}. \pnum A call to a non-member function signature described in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr} shall behave as if the implementation declared no additional -non-member function signatures.\footnote{A valid \Cpp program always +non-member function signatures.\footnote{A valid \Cpp{} program always calls the expected library non-member function. An implementation may also define additional non-member functions that would otherwise not -be called by a valid \Cpp program.} +be called by a valid \Cpp{} program.} \pnum An implementation shall not declare a non-member function signature @@ -2807,11 +2807,11 @@ \rSec3[member.functions]{Member functions} \pnum -It is unspecified whether any member functions in the \Cpp standard library are defined as +It is unspecified whether any member functions in the \Cpp{} standard library are defined as inline\iref{dcl.inline}. \pnum -For a non-virtual member function described in the \Cpp standard library, +For a non-virtual member function described in the \Cpp{} standard library, an implementation may declare a different set of member function signatures, provided that any call to the member function that would select an overload from the set of declarations described in this document @@ -2858,7 +2858,7 @@ \pnum Except where explicitly specified in this document, it is \impldef{which functions in -the \Cpp standard library may be recursively reentered} which functions in the \Cpp standard +the \Cpp{} standard library may be recursively reentered} which functions in the \Cpp{} standard library may be recursively reentered. \rSec3[res.on.data.races]{Data race avoidance} @@ -2870,13 +2870,13 @@ Implementations may prevent data races in cases other than those specified below. \pnum -A \Cpp standard library function shall not directly or indirectly access +A \Cpp{} standard library function shall not directly or indirectly access objects\iref{intro.multithread} accessible by threads other than the current thread unless the objects are accessed directly or indirectly via the function's arguments, including \tcode{this}. \pnum -A \Cpp standard library function shall not directly or indirectly modify +A \Cpp{} standard library function shall not directly or indirectly modify objects\iref{intro.multithread} accessible by threads other than the current thread unless the objects are accessed directly or indirectly via the function's non-const arguments, including \tcode{this}. @@ -2887,7 +2887,7 @@ programs that do not explicitly share objects between threads. \end{note} \pnum -A \Cpp standard library function shall not access objects indirectly accessible via its +A \Cpp{} standard library function shall not access objects indirectly accessible via its arguments or via elements of its container arguments except by invoking functions required by its specification on those container elements. @@ -2902,7 +2902,7 @@ not visible to users and are protected against data races. \pnum -Unless otherwise specified, \Cpp standard library functions shall perform all operations +Unless otherwise specified, \Cpp{} standard library functions shall perform all operations solely within the current thread if those operations have effects that are visible\iref{intro.multithread} to users. @@ -2917,7 +2917,7 @@ \indextext{protection}% It is unspecified whether any function signature or class described in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr} is a -friend of another class in the \Cpp standard library. +friend of another class in the \Cpp{} standard library. \indextext{specifier!\idxcode{friend}} \rSec3[derivation]{Derived classes} @@ -2925,13 +2925,13 @@ \pnum \indextext{class!derived}% \indextext{class!base}% -An implementation may derive any class in the \Cpp standard library from a class with a +An implementation may derive any class in the \Cpp{} standard library from a class with a name reserved to the implementation. \pnum -Certain classes defined in the \Cpp standard library are required to be derived from +Certain classes defined in the \Cpp{} standard library are required to be derived from other classes -in the \Cpp standard library. +in the \Cpp{} standard library. \indextext{library!C++ standard}% An implementation may derive such a class directly from the required base or indirectly through a hierarchy of base classes with names reserved to the implementation. @@ -2957,7 +2957,7 @@ \end{itemize} \pnum -All types specified in the \Cpp standard library shall be non-\tcode{final} types +All types specified in the \Cpp{} standard library shall be non-\tcode{final} types unless otherwise specified. \rSec3[res.on.exception.handling]{Restrictions on exception handling}% @@ -2965,7 +2965,7 @@ \indextext{exception handling!handler} \pnum -Any of the functions defined in the \Cpp standard library +Any of the functions defined in the \Cpp{} standard library \indextext{library!C++ standard}% can report a failure by throwing an exception of a type described in its \throws @@ -2991,14 +2991,14 @@ \tcode{bsearch()}\iref{alg.c.library} meet this condition.} \pnum -Destructor operations defined in the \Cpp standard library +Destructor operations defined in the \Cpp{} standard library shall not throw exceptions. -Every destructor in the \Cpp standard library shall behave as if it had a +Every destructor in the \Cpp{} standard library shall behave as if it had a non-throwing exception specification. \pnum Functions defined in the -\Cpp standard library +\Cpp{} standard library \indextext{specifications!C++}% that do not have a \throws @@ -3039,7 +3039,7 @@ \rSec3[value.error.codes]{Value of error codes} \pnum -Certain functions in the \Cpp standard library report errors via a +Certain functions in the \Cpp{} standard library report errors via a \tcode{std::error_code}\iref{syserr.errcode.overview} object. That object's \tcode{category()} member shall return \tcode{std::system_category()} for errors originating from the operating system, or a reference to an @@ -3057,7 +3057,7 @@ \rSec3[lib.types.movedfrom]{Moved-from state of library types} \pnum -Objects of types defined in the \Cpp standard library may be moved +Objects of types defined in the \Cpp{} standard library may be moved from\iref{class.copy}. Move operations may be explicitly specified or implicitly generated. Unless otherwise specified, such moved-from objects shall be placed in a valid but unspecified state. diff --git a/source/limits.tex b/source/limits.tex index 641094677d..0bf337993e 100644 --- a/source/limits.tex +++ b/source/limits.tex @@ -2,7 +2,7 @@ \infannex{implimits}{Implementation quantities} \pnum -Because computers are finite, \Cpp implementations are inevitably +Because computers are finite, \Cpp{} implementations are inevitably limited in the size of the programs they can successfully process. Every implementation shall document those limitations where known. diff --git a/source/locales.tex b/source/locales.tex index fdc940fe66..68c7c8e1bc 100644 --- a/source/locales.tex +++ b/source/locales.tex @@ -4,7 +4,7 @@ \rSec1[localization.general]{General} \pnum -This Clause describes components that \Cpp programs may use to +This Clause describes components that \Cpp{} programs may use to encapsulate (and therefore be more portable when confronting) cultural differences. The locale facility includes internationalization @@ -214,7 +214,7 @@ locale, it throws the standard exception \tcode{bad_cast}. -A \Cpp program can check if a locale implements a particular +A \Cpp{} program can check if a locale implements a particular facet with the function template \tcode{has_facet()}. @@ -243,7 +243,7 @@ and \tcode{isspace()}, so that given a locale -object \tcode{loc} a \Cpp program can call +object \tcode{loc} a \Cpp{} program can call \tcode{isspace(c, loc)}. (This eases upgrading existing extractors\iref{istream.formatted}.) \end{itemize} @@ -5038,9 +5038,9 @@ \rSec2[facets.examples]{Program-defined facets} \pnum -A \Cpp program may define facets to be added to a locale and used identically as +A \Cpp{} program may define facets to be added to a locale and used identically as the built-in facets. -To create a new facet interface, \Cpp programs simply derive from +To create a new facet interface, \Cpp{} programs simply derive from \tcode{locale::facet} a class containing a static member: \tcode{static locale::id id}. @@ -5166,7 +5166,7 @@ A locale object may be extended with a new facet simply by constructing it with an instance of a class derived from \tcode{locale::facet}. -The only member a \Cpp program must define is the static member +The only member a \Cpp{} program must define is the static member \tcode{id}, which identifies your class interface as a new facet. diff --git a/source/numerics.tex b/source/numerics.tex index 469a050e7d..b26959a485 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -4,7 +4,7 @@ \rSec1[numerics.general]{General} \pnum -This Clause describes components that \Cpp programs may use to perform +This Clause describes components that \Cpp{} programs may use to perform seminumerical operations. \pnum @@ -59,7 +59,7 @@ and \tcode{valarray} components are parameterized by the type of information they contain and manipulate. -A \Cpp program shall instantiate these components only with a type +A \Cpp{} program shall instantiate these components only with a type \tcode{T} that satisfies the following requirements:\footnote{In other words, value types. @@ -1154,7 +1154,7 @@ The complex natural (base-$e$) logarithm of \tcode{x}. For all \tcode{x}, \tcode{imag(log(x))} lies in the interval \crange{$-\pi$}{$\pi$}. \begin{note} -The semantics of this function are intended to be the same in \Cpp +The semantics of this function are intended to be the same in \Cpp{} as they are for \tcode{clog} in C. \end{note} @@ -1234,7 +1234,7 @@ The complex square root of \tcode{x}, in the range of the right half-plane. \begin{note} -The semantics of this function are intended to be the same in \Cpp +The semantics of this function are intended to be the same in \Cpp{} as they are for \tcode{csqrt} in C. \end{note} @@ -7730,7 +7730,7 @@ Such a slice is specified by a starting index, a length, and a stride.\footnote{BLAS stands for \textit{Basic Linear Algebra Subprograms.} -\Cpp programs may instantiate this class. +\Cpp{} programs may instantiate this class. See, for example, Dongarra, Du Croz, Duff, and Hammerling: \textit{A set of Level 3 Basic Linear Algebra Subprograms}; diff --git a/source/regex.tex b/source/regex.tex index 19c93ef41d..8f1b00fa50 100644 --- a/source/regex.tex +++ b/source/regex.tex @@ -6,7 +6,7 @@ \pnum -This Clause describes components that \Cpp programs may use to +This Clause describes components that \Cpp{} programs may use to perform operations involving regular expression matching and searching. @@ -4039,7 +4039,7 @@ default-constructed instance of their \tcode{traits} template parameter, henceforth referred to as \tcode{traits_inst}. This \tcode{traits_inst} object is used to support localization of the regular expression; \tcode{basic_regex} member functions shall not call -any locale dependent C or \Cpp API, including the formatted string input functions. +any locale dependent C or \Cpp{} API, including the formatted string input functions. Instead they shall call the appropriate traits member function to achieve the required effect. \pnum diff --git a/source/support.tex b/source/support.tex index bdbf175709..35604fffee 100644 --- a/source/support.tex +++ b/source/support.tex @@ -6,7 +6,7 @@ \pnum This Clause describes the function signatures that are called implicitly, and the types of objects generated implicitly, during the execution -of some \Cpp programs. +of some \Cpp{} programs. It also describes the headers that declare these function signatures and define any related types. @@ -14,7 +14,7 @@ The following subclauses describe common type definitions used throughout the library, characteristics of the predefined types, -functions supporting start and termination of a \Cpp program, +functions supporting start and termination of a \Cpp{} program, support for dynamic memory management, support for dynamic type identification, support for exception processing, support for initializer lists, @@ -631,7 +631,7 @@ The \indexlibrary{\idxcode{numeric_limits}}% \tcode{numeric_limits} -class template provides a \Cpp program with information about various properties of +class template provides a \Cpp{} program with information about various properties of the implementation's representation of the arithmetic types. @@ -1881,9 +1881,9 @@ the behavior is undefined. \newcommand{\replaceabledesc}[1]{% -A \Cpp program may define functions with #1 of these function signatures, +A \Cpp{} program may define functions with #1 of these function signatures, and thereby displace the default versions defined by the -\Cpp standard library.% +\Cpp{} standard library.% } \rSec3[new.delete.single]{Single-object forms} @@ -1965,7 +1965,7 @@ \effects Same as above, except that these are called by a placement version of a \grammarterm{new-expression} -when a \Cpp program prefers a null pointer result as an error indication, +when a \Cpp{} program prefers a null pointer result as an error indication, instead of a \tcode{bad_alloc} exception. @@ -2228,7 +2228,7 @@ \effects Same as above, except that these are called by a placement version of a \grammarterm{new-expression} -when a \Cpp program prefers a null pointer result as an error indication, +when a \Cpp{} program prefers a null pointer result as an error indication, instead of a \tcode{bad_alloc} exception. @@ -2396,8 +2396,8 @@ \rSec3[new.delete.placement]{Non-allocating forms} \pnum -These functions are reserved; a \Cpp program may not define functions that displace -the versions in the \Cpp standard library\iref{constraints}. +These functions are reserved; a \Cpp{} program may not define functions that displace +the versions in the \Cpp{} standard library\iref{constraints}. The provisions of~\ref{basic.stc.dynamic} do not apply to these reserved placement forms of \tcode{operator new} and \tcode{operator delete}. @@ -3070,7 +3070,7 @@ \pnum The header \tcode{} -defines several types and functions related to the handling of exceptions in a \Cpp program. +defines several types and functions related to the handling of exceptions in a \Cpp{} program. \rSec2[exception.syn]{Header \tcode{} synopsis} \indexhdr{exception}% @@ -3120,7 +3120,7 @@ \tcode{exception} defines the base class for the types of objects thrown as exceptions by -\Cpp standard library components, and certain +\Cpp{} standard library components, and certain expressions, to report errors detected during program execution. \pnum diff --git a/source/templates.tex b/source/templates.tex index 4a0fd85d0f..cf88fcaf25 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -1566,7 +1566,7 @@ There are two binary logical operations on constraints: conjunction and disjunction. \begin{note} -These logical operations have no corresponding \Cpp syntax. +These logical operations have no corresponding \Cpp{} syntax. For the purpose of exposition, conjunction is spelled using the symbol $\land$ and disjunction is spelled using the symbol $\lor$. diff --git a/source/threads.tex b/source/threads.tex index 17b556ec52..d446bfaf54 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -3587,7 +3587,7 @@ \rSec2[futures.overview]{Overview} \pnum -\ref{futures} describes components that a \Cpp program can use to retrieve in one thread the +\ref{futures} describes components that a \Cpp{} program can use to retrieve in one thread the result (value or exception) from a function that has run in the same thread or another thread. \begin{note} These components are not restricted to multi-threaded programs but can be useful in single-threaded programs as well. \end{note} diff --git a/source/utilities.tex b/source/utilities.tex index d8ee519f04..9e4d07e12e 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -4,8 +4,8 @@ \rSec1[utilities.general]{General} \pnum -This Clause describes utilities that are generally useful in \Cpp programs; some -of these utilities are used by other elements of the \Cpp standard library. +This Clause describes utilities that are generally useful in \Cpp{} programs; some +of these utilities are used by other elements of the \Cpp{} standard library. These utilities are summarized in Table~\ref{tab:util.lib.summary}. \begin{libsumtab}{General utilities library summary}{tab:util.lib.summary} @@ -868,7 +868,7 @@ \begin{codeblock} return pair(5, 3.1415926); // explicit types \end{codeblock} -a \Cpp program may contain: +a \Cpp{} program may contain: \begin{codeblock} return make_pair(5, 3.1415926); // types are deduced \end{codeblock} @@ -4982,7 +4982,7 @@ \rSec1[any]{Storage for any type} \pnum -This subclause describes components that \Cpp programs may use to perform operations on objects of a discriminated type. +This subclause describes components that \Cpp{} programs may use to perform operations on objects of a discriminated type. \pnum \begin{note} @@ -13089,7 +13089,7 @@ \pnum \begin{example} -If a \Cpp program wants to have a by-element addition of two vectors \tcode{a} +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: @@ -15264,13 +15264,13 @@ \rSec1[meta]{Metaprogramming and type traits} \pnum -This subclause describes components used by \Cpp programs, particularly in +This subclause describes components used by \Cpp{} programs, particularly in templates, to support the widest possible range of types, optimise template code usage, detect type related user errors, and perform type inference and transformation at compile time. It includes type classification traits, type property inspection traits, and type transformations. The type classification traits describe a complete taxonomy -of all possible \Cpp types, and state where in that taxonomy a given +of all possible \Cpp{} types, and state where in that taxonomy a given type belongs. The type property inspection traits allow important characteristics of types or of combinations of types to be inspected. The type transformations allow certain properties of types to be manipulated. @@ -15767,7 +15767,7 @@ \pnum The primary type categories correspond to the descriptions given in -subclause~\ref{basic.types} of the \Cpp standard. +subclause~\ref{basic.types} of the \Cpp{} standard. \pnum For any given type \tcode{T}, the result of applying one of these templates to @@ -16842,7 +16842,7 @@ struct aligned_storage;} & The value of \textit{default-alignment} shall be the most - stringent alignment requirement for any \Cpp object type whose size + stringent alignment requirement for any \Cpp{} object type whose size is no greater than \tcode{Len}\iref{basic.types}. The member typedef \tcode{type} shall be a trivial type suitable for use as uninitialized storage for any object whose size From be23a2a871c22f4d0de77f2c2b6a11407165ae3a Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 7 Feb 2017 10:26:32 +0100 Subject: [PATCH 123/168] [macros] remove \xspace from \NTS --- source/macros.tex | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/source/macros.tex b/source/macros.tex index 5ed526ae6d..b25140f4ed 100644 --- a/source/macros.tex +++ b/source/macros.tex @@ -252,12 +252,13 @@ \newcommand{\iref}[1]{\nolinebreak[3] (\ref{#1})} %% NTBS, etc. -\newcommand{\NTS}[1]{\textsc{#1}\xspace} +\newcommand{\NTS}[1]{\textsc{#1}} \newcommand{\ntbs}{\NTS{ntbs}} \newcommand{\ntmbs}{\NTS{ntmbs}} -\newcommand{\ntwcs}{\NTS{ntwcs}} -\newcommand{\ntcxvis}{\NTS{ntc16s}} -\newcommand{\ntcxxxiis}{\NTS{ntc32s}} +% The following are currently unused: +% \newcommand{\ntwcs}{\NTS{ntwcs}} +% \newcommand{\ntcxvis}{\NTS{ntc16s}} +% \newcommand{\ntcxxxiis}{\NTS{ntc32s}} %% Code annotations \newcommand{\EXPO}[1]{\textit{#1}} From 5ff721d85731f0e06278bca4f7bdec438bc7f634 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 7 Feb 2017 10:26:52 +0100 Subject: [PATCH 124/168] Replace \ntbs with \ntbs{} and \ntmbs with \ntmbs{} --- source/basic.tex | 2 +- source/diagnostics.tex | 4 ++-- source/future.tex | 6 +++--- source/iostreams.tex | 4 ++-- source/lib-intro.tex | 25 +++++++++++++------------ source/support.tex | 14 +++++++------- source/threads.tex | 2 +- source/utilities.tex | 10 +++++----- 8 files changed, 34 insertions(+), 33 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index d8483e1acf..3592f08557 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -5198,7 +5198,7 @@ \tcode{argv[0]} through \tcode{argv[argc-1]} as pointers to the initial characters of null-terminated multibyte strings (\ntmbs{}s)\iref{multibyte.strings} and \tcode{argv[0]} shall be the pointer to -the initial character of a \ntmbs that represents the name used to +the initial character of a \ntmbs{} that represents the name used to invoke the program or \tcode{""}. The value of \tcode{argc} shall be non-negative. The value of \tcode{argv[argc]} shall be 0. \begin{note} It is recommended that any further (optional) parameters be added after diff --git a/source/diagnostics.tex b/source/diagnostics.tex index fdebadbe27..714f964e32 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -1792,8 +1792,8 @@ \begin{itemdescr} \pnum -\returns An \ntbs incorporating the arguments supplied in the constructor. +\returns An \ntbs{} incorporating the arguments supplied in the constructor. -\begin{note} The returned \ntbs might be the contents of \tcode{what_arg + ": " + +\begin{note} The returned \ntbs{} might be the contents of \tcode{what_arg + ": " + code.message()}.\end{note} \end{itemdescr} diff --git a/source/future.tex b/source/future.tex index 2172da7d02..f8fe7b7867 100644 --- a/source/future.tex +++ b/source/future.tex @@ -987,7 +987,7 @@ \tcode{istream(\&sb)} and initializing \tcode{sb} with \tcode{strstreambuf(s,0)}. -\tcode{s} shall designate the first element of an \ntbs.% +\tcode{s} shall designate the first element of an \ntbs{}.% \indextext{NTBS} \end{itemdescr} @@ -1114,7 +1114,7 @@ If \tcode{(mode \& app) != 0}, then \tcode{s} shall designate the first element of an array of \tcode{n} elements that -contains an \ntbs whose first element is designated by \tcode{s}. +contains an \ntbs{} whose first element is designated by \tcode{s}. \indextext{NTBS}% The constructor is \tcode{strstreambuf(s, n, s + std::strlen(s))}.\footnote{The function signature @@ -1262,7 +1262,7 @@ \tcode{(mode \& app) != 0}, then \tcode{s} shall designate the first element of an array of \tcode{n} elements that contains -an \ntbs whose first element is designated by \tcode{s}. +an \ntbs{} whose first element is designated by \tcode{s}. The constructor is \tcode{strstreambuf(s,n,s + std::strlen(s))}. \indexlibrary{\idxcode{strstream}!destructor}% diff --git a/source/iostreams.tex b/source/iostreams.tex index d94c3b847f..25861e929c 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -8653,12 +8653,12 @@ \tcode{filebuf} as required. It then opens a file, if possible, whose name is the -\ntbs \tcode{s} +\ntbs{} \tcode{s} (as if by calling \tcode{fopen(s, modstr)}). \indextext{NTBS}% \indexlibrary{\idxcode{fopen}}% -The \ntbs \tcode{modstr} is determined from +The \ntbs{} \tcode{modstr} is determined from \tcode{mode \& \~{}ios_base::ate} as indicated in Table~\ref{tab:iostreams.file.open.modes}. If \tcode{mode} is not some combination of flags shown in the table then diff --git a/source/lib-intro.tex b/source/lib-intro.tex index 95c08c3f6b..28618f59ae 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -793,7 +793,7 @@ A \indextext{NTBS}% \defnx{null-terminated byte string}{string!null-terminated byte}, -or \ntbs, +or \ntbs{}, is a character sequence whose highest-addressed element with defined content has the value zero (the @@ -809,17 +809,17 @@ \pnum The -\term{length} of an \ntbs +\term{length} of an \ntbs{} is the number of elements that precede the terminating null character. \indextext{NTBS}% An -\term{empty} \ntbs +\term{empty} \ntbs{} has a length of zero. \pnum The -\term{value} of an \ntbs +\term{value} of an \ntbs{} is the sequence of values of the elements up to and including the terminating null character. \indextext{NTBS}% @@ -827,11 +827,11 @@ \pnum A \indextext{NTBS}% -\defnx{static}{NTBS!static} \ntbs -is an \ntbs with +\defnx{static}{NTBS!static} \ntbs{} +is an \ntbs{} with static storage duration.\footnote{A string literal, such as \tcode{"abc"}, -is a static \ntbs.} +is a static \ntbs{}.} \rSec5[multibyte.strings]{Multibyte strings} @@ -839,17 +839,18 @@ \indextext{NTBS}% \indextext{NTMBS}% A \defnx{null-terminated multibyte string}{string!null-terminated multibyte}, -or \ntmbs, is an \ntbs that constitutes a +or \ntmbs{}, +is an \ntbs{} that constitutes a sequence of valid multibyte characters, beginning and ending in the initial -shift state.\footnote{An \ntbs that contains characters only from the -basic execution character set is also an \ntmbs. +shift state.\footnote{An \ntbs{} that contains characters only from the +basic execution character set is also an \ntmbs{}. Each multibyte character then consists of a single byte.} \pnum A -\defnx{static}{NTMBS!static} \ntmbs -is an \ntmbs with static storage duration. +\defnx{static}{NTMBS!static} \ntmbs{} +is an \ntmbs{} with static storage duration. \indextext{NTMBS}% \rSec3[functions.within.classes]{Functions within classes} diff --git a/source/support.tex b/source/support.tex index 35604fffee..e0409f16be 100644 --- a/source/support.tex +++ b/source/support.tex @@ -2561,7 +2561,7 @@ \begin{itemdescr} \pnum \returns -An \impldef{return value of \tcode{bad_alloc::what}} \ntbs. +An \impldef{return value of \tcode{bad_alloc::what}} \ntbs{}. \pnum \remarks @@ -2607,7 +2607,7 @@ \begin{itemdescr} \pnum \returns -An \impldef{return value of \tcode{bad_array_new_length::what}} \ntbs. +An \impldef{return value of \tcode{bad_array_new_length::what}} \ntbs{}. \pnum \remarks @@ -2922,7 +2922,7 @@ \begin{itemdescr} \pnum \returns -An \impldef{return value of \tcode{type_info::name()}} \ntbs. +An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. \pnum \remarks @@ -2989,7 +2989,7 @@ \begin{itemdescr} \pnum \returns -An \impldef{return value of \tcode{bad_cast::what}} \ntbs. +An \impldef{return value of \tcode{bad_cast::what}} \ntbs{}. \pnum \remarks @@ -3056,7 +3056,7 @@ \begin{itemdescr} \pnum \returns -An \impldef{return value of \tcode{bad_typeid::what}} \ntbs. +An \impldef{return value of \tcode{bad_typeid::what}} \ntbs{}. \pnum \remarks @@ -3182,7 +3182,7 @@ \begin{itemdescr} \pnum \returns -An \impldef{return value of \tcode{exception::what}} \ntbs. +An \impldef{return value of \tcode{exception::what}} \ntbs{}. \pnum \remarks @@ -3251,7 +3251,7 @@ \begin{itemdescr} \pnum \returns -An \impldef{return value of \tcode{bad_exception::what}} \ntbs. +An \impldef{return value of \tcode{bad_exception::what}} \ntbs{}. \pnum \remarks diff --git a/source/threads.tex b/source/threads.tex index d446bfaf54..ec92c8e90d 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -3754,7 +3754,7 @@ \begin{itemdescr} \pnum -\returns An \ntbs incorporating \tcode{code().message()}. +\returns An \ntbs{} incorporating \tcode{code().message()}. \end{itemdescr} \rSec2[futures.state]{Shared state} diff --git a/source/utilities.tex b/source/utilities.tex index 9e4d07e12e..3cf40c5e02 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -3133,7 +3133,7 @@ \postconditions \tcode{what()} returns an \impldef{return value of \tcode{bad_optional_access::what}} -\ntbs. +\ntbs{}. \end{itemdescr} \rSec2[optional.relops]{Relational operators} @@ -4951,7 +4951,7 @@ \begin{itemdescr} \pnum -\returns An \impldef{return value of \tcode{bad_variant_access::what}} \ntbs. +\returns An \impldef{return value of \tcode{bad_variant_access::what}} \ntbs{}. \end{itemdescr} \rSec2[variant.hash]{Hash support} @@ -5045,7 +5045,7 @@ \begin{itemdescr} \pnum -\returns An \impldef{return value of \tcode{bad_any_cast::what}} \ntbs. +\returns An \impldef{return value of \tcode{bad_any_cast::what}} \ntbs{}. \pnum \remarks @@ -9066,7 +9066,7 @@ \begin{itemdescr} \pnum\postconditions \tcode{what()} returns an -\impldef{return value of \tcode{bad_weak_ptr::what}} \ntbs. +\impldef{return value of \tcode{bad_weak_ptr::what}} \ntbs{}. \end{itemdescr} @@ -14519,7 +14519,7 @@ \begin{itemdescr} \pnum\postconditions \tcode{what()} returns an -\impldef{return value of \tcode{bad_function_call::what}} \ntbs. +\impldef{return value of \tcode{bad_function_call::what}} \ntbs{}. \end{itemdescr} \rSec3[func.wrap.func]{Class template \tcode{function}} From fa355b136ca3f23cdb767521910d3bfb2b990baa Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 7 Feb 2017 11:12:22 +0100 Subject: [PATCH 125/168] [rand] Remove non-macro use of \xspace --- source/numerics.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/numerics.tex b/source/numerics.tex index b26959a485..5b2910f694 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -1448,7 +1448,7 @@ \begin{enumeratea} \item - the operator \rightshift\xspace + the operator \rightshift{} denotes a bitwise right shift with zero-valued bits appearing in the high bits of the result, and From 7670c1a8e025aa464fe5bebff7ae2626fb01b07f Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 7 Feb 2017 11:10:48 +0100 Subject: [PATCH 126/168] [structure.specifications] Do not use library description macros in running text This avoids colons in running text and some bad spacing. --- source/lib-intro.tex | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/lib-intro.tex b/source/lib-intro.tex index 28618f59ae..9427ccc520 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -509,18 +509,18 @@ \end{itemize} \pnum -Whenever the \effects element specifies that the semantics of some function +Whenever the \Fundescx{Effects} element specifies that the semantics of some function \tcode{F} are \techterm{Equivalent to} some code sequence, then the various elements are -interpreted as follows. If \tcode{F}'s semantics specifies a \requires element, then +interpreted as follows. If \tcode{F}'s semantics specifies a \Fundescx{Requires} element, then that requirement is logically imposed prior to the \techterm{equivalent-to} semantics. -Next, the semantics of the code sequence are determined by the \requires, \effects, -\sync, \postconditions, \returns, \throws, \complexity, \remarks, and \errors +Next, the semantics of the code sequence are determined by the \Fundescx{Requires}, \Fundescx{Effects}, +\Fundescx{Synchronization}, \Fundescx{Postconditions}, \Fundescx{Returns}, \Fundescx{Throws}, \Fundescx{Complexity}, \Fundescx{Remarks}, and \Fundescx{Error conditions} specified for the function invocations contained in the code sequence. The value -returned from \tcode{F} is specified by \tcode{F}'s \returns element, or if \tcode{F} -has no \returns element, a non-\tcode{void} return from \tcode{F} is specified by the +returned from \tcode{F} is specified by \tcode{F}'s \Fundescx{Returns} element, or if \tcode{F} +has no \Fundescx{Returns} element, a non-\tcode{void} return from \tcode{F} is specified by the \tcode{return} statements in the code sequence. -If \tcode{F}'s semantics contains a \throws, -\postconditions, or \complexity element, then that supersedes any occurrences of that +If \tcode{F}'s semantics contains a \Fundescx{Throws}, +\Fundescx{Postconditions}, or \Fundescx{Complexity} element, then that supersedes any occurrences of that element in the code sequence. \pnum @@ -553,7 +553,7 @@ \rSec3[structure.see.also]{C library} \pnum -Paragraphs labeled ``\xref'' contain cross-references to the relevant portions +Paragraphs labeled ``\textsc{See also}'' contain cross-references to the relevant portions of the ISO C standard. \rSec2[conventions]{Other conventions} From 2351057afdcd530fa3e4929652fb5a73e384bc1b Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 7 Feb 2017 11:13:32 +0100 Subject: [PATCH 127/168] [macros] Replace \xspace with \space in library description macros --- source/macros.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/macros.tex b/source/macros.tex index b25140f4ed..b06575c903 100644 --- a/source/macros.tex +++ b/source/macros.tex @@ -223,7 +223,7 @@ %% Library function descriptions \newcommand{\Fundescx}[1]{\textit{#1}} -\newcommand{\Fundesc}[1]{\Fundescx{#1:}\xspace} +\newcommand{\Fundesc}[1]{\Fundescx{#1:}\space} \newcommand{\required}{\Fundesc{Required behavior}} \newcommand{\requires}{\Fundesc{Requires}} \newcommand{\effects}{\Fundesc{Effects}} @@ -246,7 +246,7 @@ \newcommand{\templalias}{\Fundesc{Alias template}} %% Cross reference -\newcommand{\xref}{\textsc{See also:}\xspace} +\newcommand{\xref}{\textsc{See also:}\space} %% Inline parenthesized reference \newcommand{\iref}[1]{\nolinebreak[3] (\ref{#1})} From d3a2e1050ab5aca452aab9667d59ce65b301533e Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 21 Nov 2017 20:17:32 +0100 Subject: [PATCH 128/168] [alg.merge] Add hyphenation hint to avoid overfull hbox. --- source/algorithms.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index c400feb8c0..f6f9c888fd 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -4468,10 +4468,10 @@ The resulting range shall not overlap with either of the original ranges. \pnum -\effects\ Copies all the elements of the two ranges \range{first1}{last1} and +\effects Copies all the elements of the two ranges \range{first1}{last1} and \range{first2}{last2} into the range \range{result}{result_last}, where \tcode{result_last} is \tcode{result + (last1 - first1) + (last2 - first2)}, such that the resulting range satisfies -\tcode{is_sorted(result, result_last)} or \tcode{is_sorted(result, result_last, comp)}, respectively. +\tcode{is_sorted(result, result_last)} or \tcode{is_sorted(re\-sult, result_last, comp)}, respectively. \pnum \returns From 622d3a4bc5e2e1a9101a1581e549dd72eaa022fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Tue, 21 Nov 2017 22:03:51 +0000 Subject: [PATCH 129/168] [macros] Remove unnecessary redefinition of \emph --- source/macros.tex | 1 - 1 file changed, 1 deletion(-) diff --git a/source/macros.tex b/source/macros.tex index b06575c903..d7795fc991 100644 --- a/source/macros.tex +++ b/source/macros.tex @@ -323,7 +323,6 @@ \newcommand{\doccite}[1]{\textit{#1}} \newcommand{\cvqual}[1]{\textit{#1}} \newcommand{\cv}{\cvqual{cv}} -\renewcommand{\emph}[1]{\textit{#1}} \newcommand{\numconst}[1]{\textsl{#1}} \newcommand{\logop}[1]{{\footnotesize #1}} From 703f0e455b15122e73eec20ca439039c5943d8cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Tue, 21 Nov 2017 22:48:39 +0000 Subject: [PATCH 130/168] [facet.num.put.virtuals] Move long code fragment to codeblock --- source/locales.tex | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/source/locales.tex b/source/locales.tex index 68c7c8e1bc..f7ff320461 100644 --- a/source/locales.tex +++ b/source/locales.tex @@ -2984,9 +2984,10 @@ \stage{2} Any character \tcode{c} other than a decimal point(.) is converted to a -\tcode{charT} -via -\tcode{use_facet>(loc).widen( c )} +\tcode{charT} via +\begin{codeblock} +use_facet>(loc).widen(c) +\end{codeblock} A local variable \tcode{punct} is initialized via \begin{codeblock} From b8caef615f2e3648780acde593f0c58d0c15ae17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Tue, 21 Nov 2017 22:20:30 +0000 Subject: [PATCH 131/168] [macros] Use standard description labelling for stages --- source/macros.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/macros.tex b/source/macros.tex index d7795fc991..d7afab387c 100644 --- a/source/macros.tex +++ b/source/macros.tex @@ -319,7 +319,7 @@ %% Miscellaneous \newcommand{\uniquens}{\placeholdernc{unique}} -\newcommand{\stage}[1]{\item{\textbf{Stage #1:}}} +\newcommand{\stage}[1]{\item[Stage #1:]} \newcommand{\doccite}[1]{\textit{#1}} \newcommand{\cvqual}[1]{\textit{#1}} \newcommand{\cv}{\cvqual{cv}} From 75c0adccb38301f66979cc3c3ab5cd15a0a75a17 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 21 Nov 2017 23:29:05 +0100 Subject: [PATCH 132/168] [expr, over] Add cross-references for 'usual arithmetic conversions'. (#1804) --- source/expressions.tex | 19 +++++++++---------- source/overloading.tex | 6 +++--- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/source/expressions.tex b/source/expressions.tex index b69f34e13b..dad72bbb93 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -421,11 +421,10 @@ \rSec1[expr.arith.conv]{Usual arithmetic conversions} \pnum -\indextext{conversion!usual arithmetic}% Many binary operators that expect operands of arithmetic or enumeration 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 \term{usual arithmetic conversions}, +This pattern is called the \defnx{usual arithmetic conversions}{conversion!usual arithmetic}, which are defined as follows: \begin{itemize} @@ -4684,7 +4683,7 @@ \pnum The operands of \tcode{*} and \tcode{/} shall have arithmetic or unscoped enumeration type; the operands of \tcode{\%} shall have integral or unscoped -enumeration type. The usual arithmetic conversions are performed on the +enumeration type. The usual arithmetic conversions\iref{expr.arith.conv} are performed on the operands and determine the type of the result. \pnum @@ -4709,7 +4708,7 @@ \pnum The additive operators \tcode{+} and \tcode{-} group left-to-right. The -usual arithmetic conversions are performed for operands of arithmetic or +usual arithmetic conversions\iref{expr.arith.conv} are performed for operands of arithmetic or enumeration type. \indextext{operator!addition}% @@ -5047,7 +5046,7 @@ \tcode{bool}. \pnum -The usual arithmetic conversions are performed on operands of arithmetic +The usual arithmetic conversions\iref{expr.arith.conv} are performed on operands of arithmetic or enumeration type. If both operands are pointers, pointer conversions\iref{conv.ptr} and qualification conversions\iref{conv.qual} are performed to bring @@ -5218,7 +5217,7 @@ \pnum If both operands are of arithmetic or enumeration type, the usual arithmetic -conversions are performed on both operands; each of the operators shall yield +conversions\iref{expr.arith.conv} are performed on both operands; each of the operators shall yield \tcode{true} if the specified relationship is true and \tcode{false} if it is false. @@ -5235,7 +5234,7 @@ \end{bnf} \pnum -The usual arithmetic conversions are performed; the result is the +The usual arithmetic conversions\iref{expr.arith.conv} are performed; the result is the bitwise \logop{AND} function of the operands. The operator applies only to integral or unscoped enumeration operands. @@ -5251,7 +5250,7 @@ \end{bnf} \pnum -The usual arithmetic conversions are performed; the result is the +The usual arithmetic conversions\iref{expr.arith.conv} are performed; the result is the bitwise exclusive \logop{OR} function of the operands. The operator applies only to integral or unscoped enumeration operands. @@ -5267,7 +5266,7 @@ \end{bnf} \pnum -The usual arithmetic conversions are performed; the result is the +The usual arithmetic conversions\iref{expr.arith.conv} are performed; the result is the bitwise inclusive \logop{OR} function of its operands. The operator applies only to integral or unscoped enumeration operands. @@ -5470,7 +5469,7 @@ that type and the result object is initialized using the selected operand. \item The second and third operands have arithmetic or enumeration type; -the usual arithmetic conversions are performed to bring them to a common +the usual arithmetic conversions\iref{expr.arith.conv} are performed to bring them to a common type, and the result is of that type. \item One or both of the second and third operands have pointer type; diff --git a/source/overloading.tex b/source/overloading.tex index 3c03dd83da..5306cd9cbb 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -3754,7 +3754,7 @@ where \tcode{\placeholder{LR}} -is the result of the usual arithmetic conversions between types +is the result of the usual arithmetic conversions\iref{expr.arith.conv} between types \tcode{\placeholder{L}} and \tcode{\placeholder{R}}. @@ -3846,7 +3846,7 @@ where \tcode{\placeholder{LR}} -is the result of the usual arithmetic conversions between types +is the result of the usual arithmetic conversions\iref{expr.arith.conv} between types \tcode{\placeholder{L}} and \tcode{\placeholder{R}}. @@ -3951,7 +3951,7 @@ where \tcode{\placeholder{LR}} -is the result of the usual arithmetic conversions between types +is the result of the usual arithmetic conversions\iref{expr.arith.conv} between types \tcode{\placeholder{L}} and \tcode{\placeholder{R}}. From 374252a76008ac0316320d2dd4e8652910539a97 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Wed, 22 Nov 2017 01:01:39 +0100 Subject: [PATCH 133/168] [util.sharedptr] Dissolve subclause and integrate contents into parent. (#1814) --- source/utilities.tex | 53 ++++++++++++++++++++------------------------ source/xrefdelta.tex | 3 +++ 2 files changed, 27 insertions(+), 29 deletions(-) diff --git a/source/utilities.tex b/source/utilities.tex index 3cf40c5e02..4b3ffdbc26 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -9041,9 +9041,7 @@ \end{itemdescr} \indextext{smart pointers|(}% -\rSec2[util.smartptr]{Shared-ownership pointers} - -\rSec3[util.smartptr.weak.bad]{Class \tcode{bad_weak_ptr}} +\rSec2[util.smartptr.weak.bad]{Class \tcode{bad_weak_ptr}} \indexlibrary{\idxcode{bad_weak_ptr}}% \begin{codeblock} namespace std { @@ -9070,7 +9068,7 @@ \end{itemdescr} -\rSec3[util.smartptr.shared]{Class template \tcode{shared_ptr}} +\rSec2[util.smartptr.shared]{Class template \tcode{shared_ptr}} \pnum \indexlibrary{\idxcode{shared_ptr}}% @@ -9180,14 +9178,14 @@ reflect modifications that can introduce data races. \pnum -For the purposes of subclause \ref{util.smartptr}, +For the purposes of subclause \ref{smartptr}, a pointer type \tcode{Y*} is said to be \defnx{compatible with}{compatible with!\idxcode{shared_ptr}} a pointer type \tcode{T*} when either \tcode{Y*} is convertible to \tcode{T*} or \tcode{Y} is \tcode{U[N]} and \tcode{T} is \cv{}~\tcode{U[]}. -\rSec4[util.smartptr.shared.const]{\tcode{shared_ptr} constructors} +\rSec3[util.smartptr.shared.const]{\tcode{shared_ptr} constructors} \pnum In the constructor definitions below, @@ -9395,7 +9393,7 @@ If an exception is thrown, the constructor has no effect. \end{itemdescr} -\rSec4[util.smartptr.shared.dest]{\tcode{shared_ptr} destructor} +\rSec3[util.smartptr.shared.dest]{\tcode{shared_ptr} destructor} \indexlibrary{\idxcode{shared_ptr}!destructor}% \begin{itemdecl} @@ -9426,7 +9424,7 @@ \tcode{*this} will report a \tcode{use_count()} that is one less than its previous value. \end{note} -\rSec4[util.smartptr.shared.assign]{\tcode{shared_ptr} assignment} +\rSec3[util.smartptr.shared.assign]{\tcode{shared_ptr} assignment} \indexlibrarymember{operator=}{shared_ptr}% \begin{itemdecl} @@ -9481,9 +9479,7 @@ \returns \tcode{*this}. \end{itemdescr} - - -\rSec4[util.smartptr.shared.mod]{\tcode{shared_ptr} modifiers} +\rSec3[util.smartptr.shared.mod]{\tcode{shared_ptr} modifiers} \indexlibrarymember{swap}{shared_ptr}% \begin{itemdecl} @@ -9532,7 +9528,7 @@ \effects Equivalent to \tcode{shared_ptr(p, d, a).swap(*this)}. \end{itemdescr} -\rSec4[util.smartptr.shared.obs]{\tcode{shared_ptr} observers} +\rSec3[util.smartptr.shared.obs]{\tcode{shared_ptr} observers} \indexlibrarymember{get}{shared_ptr}% \begin{itemdecl} element_type* get() const noexcept; @@ -9651,8 +9647,7 @@ \end{itemdescr} - -\rSec4[util.smartptr.shared.create]{\tcode{shared_ptr} creation} +\rSec3[util.smartptr.shared.create]{\tcode{shared_ptr} creation} \pnum The common requirements that apply to @@ -9923,7 +9918,7 @@ \end{example} \end{itemdescr} -\rSec4[util.smartptr.shared.cmp]{\tcode{shared_ptr} comparison} +\rSec3[util.smartptr.shared.cmp]{\tcode{shared_ptr} comparison} \indexlibrarymember{operator==}{shared_ptr}% \begin{itemdecl} @@ -10045,7 +10040,7 @@ The second function template returns \tcode{!(nullptr < a)}. \end{itemdescr} -\rSec4[util.smartptr.shared.spec]{\tcode{shared_ptr} specialized algorithms} +\rSec3[util.smartptr.shared.spec]{\tcode{shared_ptr} specialized algorithms} \indexlibrarymember{swap}{shared_ptr}% \begin{itemdecl} @@ -10057,7 +10052,7 @@ \pnum\effects Equivalent to \tcode{a.swap(b)}. \end{itemdescr} -\rSec4[util.smartptr.shared.cast]{\tcode{shared_ptr} casts} +\rSec3[util.smartptr.shared.cast]{\tcode{shared_ptr} casts} \indexlibrarymember{static_pointer_cast}{shared_ptr}% \begin{itemdecl} @@ -10163,7 +10158,7 @@ \end{note} \end{itemdescr} -\rSec4[util.smartptr.getdeleter]{\tcode{get_deleter}} +\rSec3[util.smartptr.getdeleter]{\tcode{get_deleter}} \indexlibrarymember{get_deleter}{shared_ptr}% \begin{itemdecl} @@ -10182,7 +10177,7 @@ \tcode{p} have been destroyed. \end{note} \end{itemdescr} -\rSec4[util.smartptr.shared.io]{\tcode{shared_ptr} I/O} +\rSec3[util.smartptr.shared.io]{\tcode{shared_ptr} I/O} \indexlibrarymember{operator<<}{shared_ptr}% \begin{itemdecl} @@ -10196,7 +10191,7 @@ \pnum\returns \tcode{os}. \end{itemdescr} -\rSec3[util.smartptr.weak]{Class template \tcode{weak_ptr}} +\rSec2[util.smartptr.weak]{Class template \tcode{weak_ptr}} \pnum \indexlibrary{\idxcode{weak_ptr}}% @@ -10264,7 +10259,7 @@ containers. The template parameter \tcode{T} of \tcode{weak_ptr} may be an incomplete type. -\rSec4[util.smartptr.weak.const]{\tcode{weak_ptr} constructors} +\rSec3[util.smartptr.weak.const]{\tcode{weak_ptr} constructors} \indexlibrary{\idxcode{weak_ptr}!constructor}% \begin{itemdecl} @@ -10312,7 +10307,7 @@ \tcode{r} shall be empty. \tcode{r.use_count() == 0}. \end{itemdescr} -\rSec4[util.smartptr.weak.dest]{\tcode{weak_ptr} destructor} +\rSec3[util.smartptr.weak.dest]{\tcode{weak_ptr} destructor} \indexlibrary{\idxcode{weak_ptr}!destructor}% \begin{itemdecl} @@ -10324,7 +10319,7 @@ effect on the object its stored pointer points to. \end{itemdescr} -\rSec4[util.smartptr.weak.assign]{\tcode{weak_ptr} assignment} +\rSec3[util.smartptr.weak.assign]{\tcode{weak_ptr} assignment} \indexlibrarymember{operator=}{weak_ptr}% \begin{itemdecl} @@ -10354,7 +10349,7 @@ \pnum\returns \tcode{*this}. \end{itemdescr} -\rSec4[util.smartptr.weak.mod]{\tcode{weak_ptr} modifiers} +\rSec3[util.smartptr.weak.mod]{\tcode{weak_ptr} modifiers} \indexlibrarymember{swap}{weak_ptr}% \begin{itemdecl} void swap(weak_ptr& r) noexcept; @@ -10373,7 +10368,7 @@ \pnum\effects Equivalent to \tcode{weak_ptr().swap(*this)}. \end{itemdescr} -\rSec4[util.smartptr.weak.obs]{\tcode{weak_ptr} observers} +\rSec3[util.smartptr.weak.obs]{\tcode{weak_ptr} observers} \indexlibrarymember{use_count}{weak_ptr}% \begin{itemdecl} long use_count() const noexcept; @@ -10425,7 +10420,7 @@ \end{itemdescr} -\rSec4[util.smartptr.weak.spec]{\tcode{weak_ptr} specialized algorithms} +\rSec3[util.smartptr.weak.spec]{\tcode{weak_ptr} specialized algorithms} \indexlibrarymember{swap}{weak_ptr}% \begin{itemdecl} @@ -10437,7 +10432,7 @@ \pnum\effects Equivalent to \tcode{a.swap(b)}. \end{itemdescr} -\rSec3[util.smartptr.ownerless]{Class template \tcode{owner_less}} +\rSec2[util.smartptr.ownerless]{Class template \tcode{owner_less}} \pnum The class template \tcode{owner_less} allows ownership-based mixed comparisons of shared @@ -10488,7 +10483,7 @@ both empty. \end{itemize} \end{note} -\rSec3[util.smartptr.enab]{Class template \tcode{enable_shared_from_this}} +\rSec2[util.smartptr.enab]{Class template \tcode{enable_shared_from_this}} \pnum \indexlibrary{\idxcode{enable_shared_from_this}}% @@ -10578,7 +10573,7 @@ \pnum\returns \tcode{weak_this}. \end{itemdescr} -\rSec3[util.smartptr.hash]{Smart pointer hash support} +\rSec2[util.smartptr.hash]{Smart pointer hash support} \indexlibrary{\idxcode{hash}!\idxcode{unique_ptr}}% \begin{itemdecl} diff --git a/source/xrefdelta.tex b/source/xrefdelta.tex index 5c7a191351..01cc0d287c 100644 --- a/source/xrefdelta.tex +++ b/source/xrefdelta.tex @@ -46,5 +46,8 @@ \movedxref{array.fill}{array.members} \movedxref{array.swap}{array.members} +% Contents of [util.smartptr] was integrated into the parent. +\removedxref{util.smartptr} + % Deprecated features. %\deprxref{old.label} (if moved to depr.old.label, otherwise use \movedxref) From 9d8d06a6601794478075b01009c82d61e7d47445 Mon Sep 17 00:00:00 2001 From: Eelis Date: Wed, 22 Nov 2017 01:13:28 +0100 Subject: [PATCH 134/168] Index additional member typedefs. (#1712) --- source/atomics.tex | 1 + source/iterators.tex | 5 +++++ source/numerics.tex | 5 +++++ source/strings.tex | 25 +++++++++++++++++++++++++ source/utilities.tex | 15 +++++++++++++++ 5 files changed, 51 insertions(+) diff --git a/source/atomics.tex b/source/atomics.tex index 444fa94724..0fbec6a48a 100644 --- a/source/atomics.tex +++ b/source/atomics.tex @@ -562,6 +562,7 @@ \rSec1[atomics.types.generic]{Class template \tcode{atomic}} \indexlibrary{\idxcode{atomic}}% +\indexlibrarymember{value_type}{atomic}% \begin{codeblock} namespace std { template struct atomic { diff --git a/source/iterators.tex b/source/iterators.tex index 0c97d91873..1f3bafc9c9 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -877,6 +877,9 @@ is the type of an iterator, the types +\indexlibrarymember{difference_type}{iterator_traits}% +\indexlibrarymember{value_type}{iterator_traits}% +\indexlibrarymember{iterator_category}{iterator_traits}% \begin{codeblock} iterator_traits::difference_type iterator_traits::value_type @@ -886,6 +889,8 @@ be defined as the iterator's difference type, value type and iterator category, respectively. In addition, the types +\indexlibrarymember{reference}{iterator_traits}% +\indexlibrarymember{pointer}{iterator_traits}% \begin{codeblock} iterator_traits::reference iterator_traits::pointer diff --git a/source/numerics.tex b/source/numerics.tex index 5b2910f694..6ff6bf8a28 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -385,6 +385,7 @@ \rSec2[complex]{Class template \tcode{complex}} \indexlibrary{\idxcode{complex}}% +\indexlibrarymember{value_type}{complex}% \begin{codeblock} namespace std { template class complex { @@ -7786,6 +7787,7 @@ \rSec3[template.slice.array.overview]{Class template \tcode{slice_array} overview} \indexlibrary{\idxcode{slice_array}}% +\indexlibrarymember{value_type}{slice_array}% \begin{codeblock} namespace std { template class slice_array { @@ -8071,6 +8073,7 @@ \rSec3[template.gslice.array.overview]{Class template \tcode{gslice_array} overview} \indexlibrary{\idxcode{gslice_array}}% +\indexlibrarymember{value_type}{gslice_array}% \begin{codeblock} namespace std { template class gslice_array { @@ -8202,6 +8205,7 @@ \rSec3[template.mask.array.overview]{Class template \tcode{mask_array} overview} \indexlibrary{\idxcode{mask_array}}% +\indexlibrarymember{value_type}{mask_array}% \begin{codeblock} namespace std { template class mask_array { @@ -8327,6 +8331,7 @@ \rSec3[template.indirect.array.overview]{Class template \tcode{indirect_array} overview} \indexlibrary{\idxcode{indirect_array}}% +\indexlibrarymember{value_type}{indirect_array}% \begin{codeblock} namespace std { template class indirect_array { diff --git a/source/strings.tex b/source/strings.tex index 9f557039e8..0ed7ea6d39 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -875,6 +875,19 @@ \end{itemize} \indexlibrary{\idxcode{basic_string}}% +\indexlibrarymember{traits_type}{basic_string}% +\indexlibrarymember{value_type}{basic_string}% +\indexlibrarymember{allocator_type}{basic_string}% +\indexlibrarymember{size_type}{basic_string}% +\indexlibrarymember{difference_type}{basic_string}% +\indexlibrarymember{pointer}{basic_string}% +\indexlibrarymember{const_pointer}{basic_string}% +\indexlibrarymember{reference}{basic_string}% +\indexlibrarymember{const_reference}{basic_string}% +\indexlibrarymember{iterator}{basic_string}% +\indexlibrarymember{const_iterator}{basic_string}% +\indexlibrarymember{reverse_iterator}{basic_string}% +\indexlibrarymember{const_reverse_iterator}{basic_string}% \begin{codeblock} namespace std { template, @@ -4677,6 +4690,18 @@ \rSec2[string.view.template]{Class template \tcode{basic_string_view}} \indexlibrary{\idxcode{basic_string_view}}% +\indexlibrarymember{traits_type}{basic_string_view}% +\indexlibrarymember{value_type}{basic_string_view}% +\indexlibrarymember{pointer}{basic_string_view}% +\indexlibrarymember{const_pointer}{basic_string_view}% +\indexlibrarymember{reference}{basic_string_view}% +\indexlibrarymember{const_reference}{basic_string_view}% +\indexlibrarymember{const_iterator}{basic_string_view}% +\indexlibrarymember{iterator}{basic_string_view}% +\indexlibrarymember{const_reverse_iterator}{basic_string_view}% +\indexlibrarymember{reverse_iterator}{basic_string_view}% +\indexlibrarymember{size_type}{basic_string_view}% +\indexlibrarymember{difference_type}{basic_string_view}% \begin{codeblock} template> class basic_string_view { diff --git a/source/utilities.tex b/source/utilities.tex index 4b3ffdbc26..1ef5bba67b 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -430,6 +430,7 @@ \rSec2[intseq.intseq]{Class template \tcode{integer_sequence}} \indexlibrary{\idxcode{integer_sequence}}% +\indexlibrarymember{value_type}{integer_sequence}% \begin{codeblock} namespace std { template @@ -2191,6 +2192,7 @@ \rSec2[optional.optional]{Class template \tcode{optional}} \indexlibrary{\idxcode{optional}}% +\indexlibrarymember{value_type}{optional}% \begin{codeblock} template class optional { @@ -7451,6 +7453,9 @@ allocator completeness requirements\iref{allocator.requirements.completeness}. \indexlibrary{\idxcode{allocator}}% +\indexlibrarymember{value_type}{allocator}% +\indexlibrarymember{propagate_on_container_move_assignment}{allocator}% +\indexlibrarymember{is_always_equal}{allocator}% \begin{codeblock} namespace std { template class allocator { @@ -11323,6 +11328,7 @@ even though they use the same static allocator type. \indexlibrary{\idxcode{polymorphic_allocator}}% +\indexlibrarymember{value_type}{polymorphic_allocator}% \begin{codeblock} namespace std::pmr { template @@ -12363,6 +12369,14 @@ expressions. \end{note} \indexlibrary{\idxcode{scoped_allocator_adaptor}}% +\indexlibrarymember{outer_allocator_type}{scoped_allocator}% +\indexlibrarymember{value_type}{scoped_allocator}% +\indexlibrarymember{size_type}{scoped_allocator}% +\indexlibrarymember{difference_type}{scoped_allocator}% +\indexlibrarymember{pointer}{scoped_allocator}% +\indexlibrarymember{const_pointer}{scoped_allocator}% +\indexlibrarymember{void_pointer}{scoped_allocator}% +\indexlibrarymember{const_void_pointer}{scoped_allocator}% \begin{codeblock} namespace std { template @@ -15719,6 +15733,7 @@ \rSec2[meta.help]{Helper classes} +\indexlibrarymember{value_type}{integral_constant}% \begin{codeblock} namespace std { template struct integral_constant { From b64354a7503c1cdc358d7f5dd1405ed903e170ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Wed, 22 Nov 2017 12:10:00 +0000 Subject: [PATCH 135/168] [depr.meta.types] Merge POD deprecation into existing type traits deprecation section and reorganize the section a bit --- source/future.tex | 99 ++++++++++++++++++++++++++--------------------- 1 file changed, 54 insertions(+), 45 deletions(-) diff --git a/source/future.tex b/source/future.tex index f8fe7b7867..9bbd71e6d7 100644 --- a/source/future.tex +++ b/source/future.tex @@ -2148,38 +2148,80 @@ \begin{codeblock} namespace std { template struct is_literal_type; - template constexpr bool is_literal_type_v = is_literal_type::value; - template struct result_of; // not defined + template struct result_of; // not defined template struct result_of; - template using result_of_t = typename result_of::type; + + template struct is_pod; + template inline constexpr bool is_pod_v = is_pod::value; } \end{codeblock} +\pnum +The behavior of a program that adds specializations for +any of the templates defined in this subclause is undefined, +unless explicitly permitted by the specification of the corresponding template. + +\begin{itemdecl} +template struct is_literal_type; +\end{itemdecl} + +\begin{itemdescr} \pnum \requires -For \tcode{is_literal_type}, \tcode{remove_all_extents_t} shall be a complete type or \cv{}~\tcode{void}. -For \tcode{result_of}, -\tcode{Fn} and all types in the parameter pack \tcode{ArgTypes} shall be complete types, -\cv{}~\tcode{void}, or arrays of unknown bound. \pnum \tcode{is_literal_type} is a \tcode{UnaryTypeTrait}\iref{meta.rqmts} with a base characteristic of \tcode{true_type} if \tcode{T} is a literal type\iref{basic.types}, and \tcode{false_type} otherwise. +\end{itemdescr} + +\begin{itemdecl} +template struct result_of; +\end{itemdecl} + +\begin{itemdescr} +\pnum +\requires +\tcode{Fn} and all types in the parameter pack \tcode{ArgTypes} shall be complete types, +\cv{}~\tcode{void}, or arrays of unknown bound. + +\pnum The partial specialization \tcode{result_of} is a -\tcode{TransformationTrait} whose member typedef \tcode{type} is defined -if and only if \tcode{invoke_result::type} is defined. +\tcode{TransformationTrait}\iref{meta.rqmts} whose member typedef \tcode{type} is defined +if and only if \tcode{invoke_result::type}\iref{func.invoke} is defined. If \tcode{type} is defined, it names the same type as \tcode{invoke_result_t}. +\end{itemdescr} + +\begin{itemdecl} +template struct is_pod; +\end{itemdecl} +\begin{itemdescr} \pnum -The behavior of a program that adds specializations for -any of the templates defined in this subclause is undefined, -unless explicitly permitted by the specification of the corresponding template. +\requires +\tcode{remove_all_extents_t} shall be a complete type or \cv{} \tcode{void}. + +\pnum +\tcode{is_pod} is a \tcode{UnaryTypeTrait}\iref{meta.rqmts} +with a base characteristic of \tcode{true_type} +if \tcode{T} is a POD type, +and \tcode{false_type} otherwise. +\indextext{POD}% +A POD class is a class that is both a trivial class and a standard-layout class, +and has no non-static data members of type non-POD class (or array thereof). +A POD type is a scalar type, a POD class, an array of such a type, +or a cv-qualified version of one of these types. + +\pnum +\begin{note} +It is unspecified whether a closure type\iref{expr.prim.lambda.closure} is a POD type. +\end{note} +\end{itemdescr} \rSec1[depr.iterator.primitives]{Deprecated iterator primitives} @@ -3016,36 +3058,3 @@ \pnum \effects The destructor shall delete \tcode{cvtptr}. \end{itemdescr} - -\rSec1[depr.ispod]{Identification of POD types} -\indexlibrary{\idxcode{is_pod}}% - -\pnum -The following type property -is defined in header \indexhdr{type_traits}\tcode{} -in addition to those defined in \ref{meta.unary.prop}: - -\begin{itemdecl} -template struct is_pod; -template inline constexpr bool is_pod_v = is_pod::value; -\end{itemdecl} - -\begin{itemdescr} -\pnum -\requires -\tcode{remove_all_extents_t} shall be a complete type or \cv{} \tcode{void}. - -\pnum -\tcode{is_pod} is a \tcode{UnaryTypeTrait}\iref{meta.rqmts} -with a base characteristic of \tcode{true_type} -if \tcode{T} is a POD type, -and \tcode{false_type} otherwise. -\indextext{POD}% -A POD class is a class that is both a trivial class and a standard-layout class, -and has no non-static data members of type non-POD class (or array thereof). -A POD type is a scalar type, a POD class, an array of such a type, -or a cv-qualified version of one of these types. -\begin{note} -It is unspecified whether a closure type\iref{expr.prim.lambda.closure} is a POD type. -\end{note} -\end{itemdescr} From 8958e953fd2cd60bd02ed4fcd2c055eded6e0f4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Tue, 21 Nov 2017 23:28:52 +0000 Subject: [PATCH 136/168] [unord.req] Spell out the behaviour of cbegin/cend, remove ambiguous note --- source/containers.tex | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/containers.tex b/source/containers.tex index 0cbb246481..a8cd4d2d8e 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -2746,8 +2746,9 @@ \tcode{b.cbegin(n)} & \tcode{const_local_iterator} & \requires \tcode{n} shall be in the range \tcode{[0, b.bucket_count())}. - Note: \tcode{[b.cbegin(n), b.cend(n))} is a valid range containing - all of the elements in the $\texttt{n}^{\textrm{ th}}$ bucket.% + \tcode{b.cbegin(n)} returns an iterator referring to the + first element in the bucket. If the bucket is empty, then + \tcode{b.cbegin(n) == b.cend(n)}.% \indextext{unordered associative containers!\idxcode{cbegin}}% \indextext{\idxcode{cbegin}!unordered associative containers}% & Constant @@ -2756,6 +2757,8 @@ \tcode{b.cend(n)} & \tcode{const_local_iterator} & \requires \tcode{n} shall be in the range \tcode{[0, b.bucket_count())}.% + \tcode{b.cend(n)} returns an iterator which is the past-the-end + value for the bucket.% \indextext{unordered associative containers!\idxcode{cend}}% \indextext{\idxcode{cend}!unordered associative containers}% & Constant From b3b8a19812829ab521958eed6b2f1a3411180cdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Sun, 19 Nov 2017 22:17:17 +0000 Subject: [PATCH 137/168] [structure.summary] Remove obsolete paragraph about Note(s): and Example(s): elements that we no longer provide Also restyle a manual Note: in [unord.req] to use the standard note environment. --- source/lib-intro.tex | 4 ---- 1 file changed, 4 deletions(-) diff --git a/source/lib-intro.tex b/source/lib-intro.tex index 9427ccc520..ad60098c19 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -401,10 +401,6 @@ Each subclause also provides a summary, listing the headers specified in the subclause and the library entities provided in each header. -\pnum -Paragraphs labeled ``Note(s):'' or ``Example(s):'' are informative, other paragraphs -are normative. - \pnum The contents of the summary and the detailed specifications include: From 9112c6aecc48e1a0deea1f9493de224a43689a87 Mon Sep 17 00:00:00 2001 From: Aaron Ballman Date: Mon, 13 Mar 2017 09:51:35 -0400 Subject: [PATCH 138/168] Use the terms "single-object delete expression" and "array delete expression" as definitions, removing the italics when not appropriate. --- source/expressions.tex | 43 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/source/expressions.tex b/source/expressions.tex index dad72bbb93..a41c43ee6c 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -4220,11 +4220,13 @@ \terminal{::}\opt{} \terminal{delete [ ]} cast-expression \end{bnf} -The first alternative is for non-array objects, and the second is for arrays. Whenever -the \tcode{delete} keyword is immediately followed by empty square brackets, it shall be -interpreted as the second alternative.\footnote{A lambda expression with a -\grammarterm{lambda-introducer} that consists of -empty square brackets can follow the \tcode{delete} keyword if the lambda expression is +The first alternative is a +\defnx{single-object delete expression}{delete!single-object}, and the +second is an \defnx{array delete expression}{delete!array}. +Whenever the \tcode{delete} keyword is immediately followed by empty square +brackets, it shall be interpreted as the second alternative.\footnote{A lambda +expression with a \grammarterm{lambda-introducer} that consists of empty square +brackets can follow the \tcode{delete} keyword if the lambda expression is enclosed in parentheses.} The operand shall be of pointer to object type or of class type. If of class type, the operand is contextually implicitly converted\iref{conv} @@ -4236,23 +4238,20 @@ \tcode{void}. \pnum -\indextext{\idxcode{delete}!object}% +\indextext{\idxcode{delete}!single-object}% If the operand has a class type, the operand is converted to a pointer type by calling the above-mentioned conversion function, and the converted operand is used in place of the original operand for the remainder of this subclause. -In the first alternative -(\defnx{delete object}{object!delete}), the value of the operand of \tcode{delete} may -be a null pointer value, a pointer to a non-array object +In a single-object delete expression, the value of the operand of +\tcode{delete} may be a null pointer value, a pointer to a non-array object created by a previous \grammarterm{new-expression}, or a pointer to a subobject\iref{intro.object} representing a base class of such an object\iref{class.derived}. If not, the behavior is undefined. \indextext{array!\idxcode{delete}}% -In the second alternative (\defnx{delete array}{\idxcode{delete}!array}), the value of the -operand of \tcode{delete} -may be a null pointer value or a pointer value -that resulted from +In an array delete expression, the value of the operand of \tcode{delete} +may be a null pointer value or a pointer value that resulted from a previous array \grammarterm{new-expression}.\footnote{For nonzero-length arrays, this is the same as a pointer to the first element of the array created by that \grammarterm{new-expression}. @@ -4272,12 +4271,12 @@ \pnum \indextext{\idxcode{delete}!undefined}% -In the first alternative (\term{delete object}), if the static type of -the object to be deleted is different from its dynamic type, the static type shall be -a base class of the dynamic type of the object to be deleted and the static type shall -have a virtual destructor or the behavior is undefined. In the second -alternative (\term{delete array}) if the dynamic type of the object to -be deleted differs from its static type, the behavior is undefined. +In a single-object delete expression, if the static type of the object to be +deleted is different from its dynamic type, the static type shall be a base +class of the dynamic type of the object to be deleted and the static type shall +have a virtual destructor or the behavior is undefined. In an array delete +expression, if the dynamic type of the object to be deleted differs from its +static type, the behavior is undefined. \pnum The \grammarterm{cast-expression} in a \grammarterm{delete-expression} shall @@ -4382,9 +4381,9 @@ \pnum When a \grammarterm{delete-expression} is executed, the selected deallocation function shall be called with -the address of the most-derived object in the \term{delete object} case, or -the address of the object suitably adjusted for -the array allocation overhead\iref{expr.new} in the \term{delete array} case, +the address of the most-derived object in a single-object delete expression, or +the address of the object suitably adjusted for the array allocation +overhead\iref{expr.new} in an array delete expression, as its first argument. If a deallocation function with a parameter of type \tcode{std::align_val_t} From 4eedcb0d29f7c3b143dc3492caecb9c608590e12 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Wed, 22 Nov 2017 19:26:28 -0800 Subject: [PATCH 139/168] [diff.cpp17.library] Add Annex C entry for new headers and added since C++17. --- source/compatibility.tex | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/source/compatibility.tex b/source/compatibility.tex index 3d68390cb2..d271f98c84 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -1896,6 +1896,19 @@ } \end{codeblock} +\rSec2[diff.cpp17.library]{\ref{library}: library introduction} + +\ref{headers} +\change New headers. +\rationale New functionality. +\effect +The following \Cpp{} headers are new: +\tcode{} +and +\tcode{}. +Valid \CppXVII{} code that \tcode{\#include}{s} headers with these names may be +invalid in this International Standard. + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \rSec1[diff.library]{C standard library} \indextext{library!C standard}% From 96246140e68fdc9e84b3364f7c8bf390040d6896 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 7 Feb 2017 10:34:22 +0100 Subject: [PATCH 140/168] Replace \opt with \opt{} --- source/access.tex | 2 +- source/basic.tex | 10 +++--- source/classes.tex | 16 ++++----- source/declarations.tex | 62 ++++++++++++++++---------------- source/declarators.tex | 80 ++++++++++++++++++++--------------------- source/derived.tex | 12 +++---- source/exceptions.tex | 8 ++--- source/expressions.tex | 36 +++++++++---------- source/iostreams.tex | 4 +-- source/lex.tex | 44 +++++++++++------------ source/overloading.tex | 4 +-- source/preprocessor.tex | 34 +++++++++--------- source/special.tex | 12 +++---- source/statements.tex | 34 +++++++++--------- source/templates.tex | 28 +++++++-------- source/utilities.tex | 2 +- 16 files changed, 194 insertions(+), 194 deletions(-) diff --git a/source/access.tex b/source/access.tex index aa3705e2d2..8545a00e6d 100644 --- a/source/access.tex +++ b/source/access.tex @@ -195,7 +195,7 @@ (\ref{class.derived}): \begin{ncbnftab} -access-specifier \terminal{:} member-specification\opt +access-specifier \terminal{:} member-specification\opt{} \end{ncbnftab} An diff --git a/source/basic.tex b/source/basic.tex index 3592f08557..b571582a38 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -776,7 +776,7 @@ \item for a declaration of the form \begin{ncbnf} -class-key attribute-specifier-seq\opt identifier \terminal{;} +class-key attribute-specifier-seq\opt{} identifier \terminal{;} \end{ncbnf} the \grammarterm{identifier} is declared to be a @@ -1775,7 +1775,7 @@ \grammarterm{qualified-id} of the form: \begin{ncbnf} -nested-name-specifier\opt class-name \terminal{::} \terminal{\tilde} class-name +nested-name-specifier\opt{} class-name \terminal{::} \terminal{\tilde} class-name \end{ncbnf} the second \grammarterm{class-name} is looked up in the same scope as the @@ -2135,7 +2135,7 @@ following form: \begin{ncbnf} -class-key attribute-specifier-seq\opt identifier \terminal{;} +class-key attribute-specifier-seq\opt{} identifier \terminal{;} \end{ncbnf} the \grammarterm{identifier} is looked up according @@ -2150,7 +2150,7 @@ form: \begin{ncbnf} -class-key attribute-specifier-seq\opt identifier \terminal{;} +class-key attribute-specifier-seq\opt{} identifier \terminal{;} \end{ncbnf} the \grammarterm{elaborated-type-specifier} is a declaration that @@ -2316,7 +2316,7 @@ \begin{bnf} \nontermdef{translation-unit}\br - declaration-seq\opt + declaration-seq\opt{} \end{bnf} \pnum diff --git a/source/classes.tex b/source/classes.tex index 065ec97003..a7e5ce4ed9 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -34,13 +34,13 @@ \begin{bnf} \nontermdef{class-head}\br - class-key attribute-specifier-seq\opt class-head-name class-virt-specifier\opt base-clause\opt\br - class-key attribute-specifier-seq\opt base-clause\opt + class-key attribute-specifier-seq\opt{} class-head-name class-virt-specifier\opt{} base-clause\opt{}\br + class-key attribute-specifier-seq\opt{} base-clause\opt{} \end{bnf} \begin{bnf} \nontermdef{class-head-name}\br - nested-name-specifier\opt class-name + nested-name-specifier\opt{} class-name \end{bnf} \begin{bnf} @@ -431,13 +431,13 @@ \begin{bnf} \nontermdef{member-specification}\br - member-declaration member-specification\opt\br - access-specifier \terminal{:} member-specification\opt + member-declaration member-specification\opt{}\br + access-specifier \terminal{:} member-specification\opt{} \end{bnf} \begin{bnf} \nontermdef{member-declaration}\br - attribute-specifier-seq\opt decl-specifier-seq\opt member-declarator-list\opt{} \terminal{;}\br + attribute-specifier-seq\opt{} decl-specifier-seq\opt{} member-declarator-list\opt{} \terminal{;}\br function-definition\br using-declaration\br static_assert-declaration\br @@ -455,9 +455,9 @@ \begin{bnf} \nontermdef{member-declarator}\br - declarator virt-specifier-seq\opt pure-specifier\opt\br + declarator virt-specifier-seq\opt{} pure-specifier\opt{}\br declarator requires-clause\br - declarator brace-or-equal-initializer\opt\br + declarator brace-or-equal-initializer\opt{}\br identifier\opt{} attribute-specifier-seq\opt{} \terminal{:} constant-expression brace-or-equal-initializer\opt{} \end{bnf} diff --git a/source/declarations.tex b/source/declarations.tex index 97e1000293..a2626c1ed4 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -45,7 +45,7 @@ \begin{bnf} \nontermdef{nodeclspec-function-declaration}\br - attribute-specifier-seq\opt declarator \terminal{;} + attribute-specifier-seq\opt{} declarator \terminal{;} \end{bnf} \begin{bnf} @@ -57,7 +57,7 @@ \nontermdef{simple-declaration}\br decl-specifier-seq init-declarator-list\opt{} \terminal{;}\br attribute-specifier-seq decl-specifier-seq init-declarator-list \terminal{;}\br - attribute-specifier-seq\opt decl-specifier-seq ref-qualifier\opt{} \terminal{[} identifier-list \terminal{]} initializer \terminal{;} + attribute-specifier-seq\opt{} decl-specifier-seq ref-qualifier\opt{} \terminal{[} identifier-list \terminal{]} initializer \terminal{;} \end{bnf} \begin{bnf} @@ -93,7 +93,7 @@ \grammarterm{nodeclspec-function-declaration} of the form \begin{ncsimplebnf} -attribute-specifier-seq\opt decl-specifier-seq\opt init-declarator-list\opt{} \terminal{;} +attribute-specifier-seq\opt{} decl-specifier-seq\opt{} init-declarator-list\opt{} \terminal{;} \end{ncsimplebnf} is divided into three parts. @@ -259,7 +259,7 @@ \begin{bnf} \nontermdef{decl-specifier-seq}\br - decl-specifier attribute-specifier-seq\opt\br + decl-specifier attribute-specifier-seq\opt{}\br decl-specifier decl-specifier-seq \end{bnf} @@ -1040,7 +1040,7 @@ \begin{bnf} \nontermdef{type-specifier-seq}\br - type-specifier attribute-specifier-seq\opt\br + type-specifier attribute-specifier-seq\opt{}\br type-specifier type-specifier-seq \end{bnf} @@ -1053,7 +1053,7 @@ \begin{bnf} \nontermdef{defining-type-specifier-seq}\br - defining-type-specifier attribute-specifier-seq\opt\br + defining-type-specifier attribute-specifier-seq\opt{}\br defining-type-specifier defining-type-specifier-seq \end{bnf} @@ -1230,9 +1230,9 @@ \begin{bnf} \nontermdef{simple-type-specifier}\br - nested-name-specifier\opt type-name\br + nested-name-specifier\opt{} type-name\br nested-name-specifier \terminal{template} simple-template-id\br - nested-name-specifier\opt template-name\br + nested-name-specifier\opt{} template-name\br \terminal{char}\br \terminal{char16_t}\br \terminal{char32_t}\br @@ -1464,10 +1464,10 @@ \begin{bnf} \nontermdef{elaborated-type-specifier}\br - class-key attribute-specifier-seq\opt nested-name-specifier\opt identifier\br + class-key attribute-specifier-seq\opt{} nested-name-specifier\opt{} identifier\br class-key simple-template-id\br - class-key nested-name-specifier \terminal{template}\opt simple-template-id\br - \terminal{enum} nested-name-specifier\opt identifier + class-key nested-name-specifier \terminal{template}\opt{} simple-template-id\br + \terminal{enum} nested-name-specifier\opt{} identifier \end{bnf} \pnum @@ -1482,11 +1482,11 @@ forms: \begin{ncsimplebnf} -class-key attribute-specifier-seq\opt identifier \terminal{;}\br -\terminal{friend} class-key \terminal{::\opt} identifier \terminal{;}\br -\terminal{friend} class-key \terminal{::\opt} simple-template-id \terminal{;}\br +class-key attribute-specifier-seq\opt{} identifier \terminal{;}\br +\terminal{friend} class-key \terminal{::\opt{}} identifier \terminal{;}\br +\terminal{friend} class-key \terminal{::\opt{}} simple-template-id \terminal{;}\br \terminal{friend} class-key nested-name-specifier identifier \terminal{;}\br -\terminal{friend} class-key nested-name-specifier \terminal{template\opt} simple-template-id \terminal{;} +\terminal{friend} class-key nested-name-specifier \terminal{template\opt{}} simple-template-id \terminal{;} \end{ncsimplebnf} In the first case, the \grammarterm{attribute-specifier-seq}, if any, appertains @@ -1917,17 +1917,17 @@ \begin{bnf} \nontermdef{enum-head}\br - enum-key attribute-specifier-seq\opt enum-head-name\opt enum-base\opt + enum-key attribute-specifier-seq\opt{} enum-head-name\opt{} enum-base\opt{} \end{bnf} \begin{bnf} \nontermdef{enum-head-name}\br - nested-name-specifier\opt identifier + nested-name-specifier\opt{} identifier \end{bnf} \begin{bnf} \nontermdef{opaque-enum-declaration}\br - enum-key attribute-specifier-seq\opt nested-name-specifier\opt identifier enum-base\opt{} \terminal{;} + enum-key attribute-specifier-seq\opt{} nested-name-specifier\opt{} identifier enum-base\opt{} \terminal{;} \end{bnf} \begin{bnf} @@ -1956,7 +1956,7 @@ \begin{bnf} \nontermdef{enumerator}\br - identifier attribute-specifier-seq\opt + identifier attribute-specifier-seq\opt{} \end{bnf} The optional \grammarterm{attribute-specifier-seq} in the \grammarterm{enum-head} and @@ -2265,12 +2265,12 @@ \begin{bnf} \nontermdef{named-namespace-definition}\br - \terminal{inline\opt} \terminal{namespace} attribute-specifier-seq\opt identifier \terminal{\{} namespace-body \terminal{\}} + \terminal{inline\opt{}} \terminal{namespace} attribute-specifier-seq\opt{} identifier \terminal{\{} namespace-body \terminal{\}} \end{bnf} \begin{bnf} \nontermdef{unnamed-namespace-definition}\br - \terminal{inline\opt} \terminal{namespace} attribute-specifier-seq\opt{} \terminal{\{} namespace-body \terminal{\}} + \terminal{inline\opt{}} \terminal{namespace} attribute-specifier-seq\opt{} \terminal{\{} namespace-body \terminal{\}} \end{bnf} \begin{bnf} @@ -2286,7 +2286,7 @@ \begin{bnf} \nontermdef{namespace-body}\br - declaration-seq\opt + declaration-seq\opt{} \end{bnf} \pnum @@ -2597,7 +2597,7 @@ \begin{bnf} \nontermdef{qualified-namespace-specifier}\br - nested-name-specifier\opt namespace-name + nested-name-specifier\opt{} namespace-name \end{bnf} \pnum @@ -2637,13 +2637,13 @@ \begin{bnf} \nontermdef{using-declarator-list}\br - using-declarator \terminal{...}\opt\br - using-declarator-list \terminal{,} using-declarator \terminal{...}\opt + using-declarator \terminal{...}\opt{}\br + using-declarator-list \terminal{,} using-declarator \terminal{...}\opt{} \end{bnf} \begin{bnf} \nontermdef{using-declarator}\br - \terminal{typename\opt} nested-name-specifier unqualified-id + \terminal{typename\opt{}} nested-name-specifier unqualified-id \end{bnf} \pnum @@ -3117,7 +3117,7 @@ \begin{bnf} \nontermdef{using-directive}\br - attribute-specifier-seq\opt{} \terminal{using namespace} nested-name-specifier\opt namespace-name \terminal{;} + attribute-specifier-seq\opt{} \terminal{using namespace} nested-name-specifier\opt{} namespace-name \terminal{;} \end{bnf} \pnum @@ -3592,7 +3592,7 @@ \begin{bnf} \nontermdef{attribute-specifier-seq}\br - attribute-specifier-seq\opt attribute-specifier + attribute-specifier-seq\opt{} attribute-specifier \end{bnf} \begin{bnf} @@ -3614,15 +3614,15 @@ \begin{bnf} \nontermdef{attribute-list}\br - attribute\opt\br - attribute-list \terminal{,} attribute\opt\br + attribute\opt{}\br + attribute-list \terminal{,} attribute\opt{}\br attribute \terminal{...}\br attribute-list \terminal{,} attribute \terminal{...} \end{bnf} \begin{bnf} \nontermdef{attribute}\br - attribute-token attribute-argument-clause\opt + attribute-token attribute-argument-clause\opt{} \end{bnf} \begin{bnf} diff --git a/source/declarators.tex b/source/declarators.tex index 4a5790e9a6..f49f160605 100644 --- a/source/declarators.tex +++ b/source/declarators.tex @@ -27,7 +27,7 @@ \begin{bnf} \nontermdef{init-declarator}\br - declarator initializer\opt\br + declarator initializer\opt{}\br declarator requires-clause \end{bnf} @@ -139,16 +139,16 @@ \begin{bnf} \nontermdef{noptr-declarator}\br - declarator-id attribute-specifier-seq\opt\br + declarator-id attribute-specifier-seq\opt{}\br noptr-declarator parameters-and-qualifiers\br - noptr-declarator \terminal{[} constant-expression\opt{} \terminal{]} attribute-specifier-seq\opt\br + noptr-declarator \terminal{[} constant-expression\opt{} \terminal{]} attribute-specifier-seq\opt{}\br \terminal{(} ptr-declarator \terminal{)} \end{bnf} \begin{bnf} \nontermdef{parameters-and-qualifiers}\br - \terminal{(} parameter-declaration-clause \terminal{)} cv-qualifier-seq\opt\br -\hspace*{\bnfindentinc}ref-qualifier\opt noexcept-specifier\opt attribute-specifier-seq\opt + \terminal{(} parameter-declaration-clause \terminal{)} cv-qualifier-seq\opt{}\br +\hspace*{\bnfindentinc}ref-qualifier\opt{} noexcept-specifier\opt{} attribute-specifier-seq\opt{} \end{bnf} \begin{bnf} @@ -158,15 +158,15 @@ \begin{bnf} \nontermdef{ptr-operator}\br - \terminal{*} attribute-specifier-seq\opt cv-qualifier-seq\opt\br - \terminal{\&} attribute-specifier-seq\opt\br - \terminal{\&\&} attribute-specifier-seq\opt\br - nested-name-specifier \terminal{*} attribute-specifier-seq\opt cv-qualifier-seq\opt + \terminal{*} attribute-specifier-seq\opt{} cv-qualifier-seq\opt{}\br + \terminal{\&} attribute-specifier-seq\opt{}\br + \terminal{\&\&} attribute-specifier-seq\opt{}\br + nested-name-specifier \terminal{*} attribute-specifier-seq\opt{} cv-qualifier-seq\opt{} \end{bnf} \begin{bnf} \nontermdef{cv-qualifier-seq}\br - cv-qualifier cv-qualifier-seq\opt + cv-qualifier cv-qualifier-seq\opt{} \end{bnf} \begin{bnf} @@ -183,7 +183,7 @@ \begin{bnf} \nontermdef{declarator-id}\br - \terminal{...}\opt id-expression + \terminal{...}\opt{} id-expression \end{bnf} \rSec1[dcl.name]{Type names} @@ -206,31 +206,31 @@ \begin{bnf} \nontermdef{type-id}\br - type-specifier-seq abstract-declarator\opt + type-specifier-seq abstract-declarator\opt{} \end{bnf} \begin{bnf} \nontermdef{defining-type-id}\br - defining-type-specifier-seq abstract-declarator\opt + defining-type-specifier-seq abstract-declarator\opt{} \end{bnf} \begin{bnf} \nontermdef{abstract-declarator}\br ptr-abstract-declarator\br - noptr-abstract-declarator\opt parameters-and-qualifiers trailing-return-type\br + noptr-abstract-declarator\opt{} parameters-and-qualifiers trailing-return-type\br abstract-pack-declarator \end{bnf} \begin{bnf} \nontermdef{ptr-abstract-declarator}\br noptr-abstract-declarator\br - ptr-operator ptr-abstract-declarator\opt + ptr-operator ptr-abstract-declarator\opt{} \end{bnf} \begin{bnf} \nontermdef{noptr-abstract-declarator}\br - noptr-abstract-declarator\opt parameters-and-qualifiers\br - noptr-abstract-declarator\opt{} \terminal{[} constant-expression\opt{} \terminal{]} attribute-specifier-seq\opt\br + noptr-abstract-declarator\opt{} parameters-and-qualifiers\br + noptr-abstract-declarator\opt{} \terminal{[} constant-expression\opt{} \terminal{]} attribute-specifier-seq\opt{}\br \terminal{(} ptr-abstract-declarator \terminal{)} \end{bnf} @@ -243,7 +243,7 @@ \begin{bnf} \nontermdef{noptr-abstract-pack-declarator}\br noptr-abstract-pack-declarator parameters-and-qualifiers\br - noptr-abstract-pack-declarator \terminal{[} constant-expression\opt{} \terminal{]} attribute-specifier-seq\opt\br + noptr-abstract-pack-declarator \terminal{[} constant-expression\opt{} \terminal{]} attribute-specifier-seq\opt{}\br \terminal{...} \end{bnf} @@ -544,7 +544,7 @@ has the form \begin{ncsimplebnf} -\terminal{*} attribute-specifier-seq\opt cv-qualifier-seq\opt{} \terminal{D1} +\terminal{*} attribute-specifier-seq\opt{} cv-qualifier-seq\opt{} \terminal{D1} \end{ncsimplebnf} and the type of the identifier in the declaration @@ -849,7 +849,7 @@ has the form \begin{ncsimplebnf} -nested-name-specifier \terminal{*} attribute-specifier-seq\opt cv-qualifier-seq\opt{} \terminal{D1} +nested-name-specifier \terminal{*} attribute-specifier-seq\opt{} cv-qualifier-seq\opt{} \terminal{D1} \end{ncsimplebnf} and the @@ -958,7 +958,7 @@ has the form \begin{ncsimplebnf} -\terminal{D1 [} constant-expression\opt{} \terminal{]} attribute-specifier-seq\opt +\terminal{D1 [} constant-expression\opt{} \terminal{]} attribute-specifier-seq\opt{} \end{ncsimplebnf} and the type of the identifier in the declaration @@ -1229,8 +1229,8 @@ \tcode{D} has the form \begin{ncsimplebnf} -\terminal{D1 (} parameter-declaration-clause \terminal{)} cv-qualifier-seq\opt\br -\hspace*{\bnfindentinc}ref-qualifier\opt noexcept-specifier\opt attribute-specifier-seq\opt +\terminal{D1 (} parameter-declaration-clause \terminal{)} cv-qualifier-seq\opt{}\br +\hspace*{\bnfindentinc}ref-qualifier\opt{} noexcept-specifier\opt{} attribute-specifier-seq\opt{} \end{ncsimplebnf} and the type of the contained \grammarterm{declarator-id} @@ -1246,7 +1246,7 @@ \tcode{D} is ``\placeholder{derived-declarator-type-list} -\tcode{noexcept}\opt +\tcode{noexcept}\opt{} function of (\grammarterm{parameter-declaration-clause}) \grammarterm{cv-qualifier-seq}\opt{} \grammarterm{ref-qualifier}\opt{} @@ -1266,8 +1266,8 @@ has the form \begin{ncsimplebnf} -\terminal{D1 (} parameter-declaration-clause \terminal{)} cv-qualifier-seq\opt\br -\hspace*{\bnfindentinc}ref-qualifier\opt noexcept-specifier\opt attribute-specifier-seq\opt trailing-return-type +\terminal{D1 (} parameter-declaration-clause \terminal{)} cv-qualifier-seq\opt{}\br +\hspace*{\bnfindentinc}ref-qualifier\opt{} noexcept-specifier\opt{} attribute-specifier-seq\opt{} trailing-return-type \end{ncsimplebnf} and the type of the contained @@ -1284,10 +1284,10 @@ \tcode{D} is ``\placeholder{derived-declarator-type-list} -\tcode{noexcept}\opt +\tcode{noexcept}\opt{} function of (\grammarterm{parameter-declaration-clause}) -\grammarterm{cv-qualifier-seq}\opt \grammarterm{ref-qualifier}\opt +\grammarterm{cv-qualifier-seq}\opt{} \grammarterm{ref-qualifier}\opt{} returning \tcode{U}'', where \tcode{U} is the type specified by the \grammarterm{trailing-return-type}, and @@ -1303,7 +1303,7 @@ \indextext{declaration!function}% \begin{bnf} \nontermdef{parameter-declaration-clause}\br - parameter-declaration-list\opt{} \terminal{...}\opt\br + parameter-declaration-list\opt{} \terminal{...}\opt{}\br parameter-declaration-list \terminal{, ...} \end{bnf} @@ -1315,10 +1315,10 @@ \begin{bnf} \nontermdef{parameter-declaration}\br - attribute-specifier-seq\opt decl-specifier-seq declarator\br - attribute-specifier-seq\opt decl-specifier-seq declarator \terminal{=} initializer-clause\br - attribute-specifier-seq\opt decl-specifier-seq abstract-declarator\opt\br - attribute-specifier-seq\opt decl-specifier-seq abstract-declarator\opt{} \terminal{=} initializer-clause + attribute-specifier-seq\opt{} decl-specifier-seq declarator\br + attribute-specifier-seq\opt{} decl-specifier-seq declarator \terminal{=} initializer-clause\br + attribute-specifier-seq\opt{} decl-specifier-seq abstract-declarator\opt{}\br + attribute-specifier-seq\opt{} decl-specifier-seq abstract-declarator\opt{} \terminal{=} initializer-clause \end{bnf} The optional \grammarterm{attribute-specifier-seq} in a \grammarterm{parameter-declaration} @@ -1986,13 +1986,13 @@ % \begin{bnf} \nontermdef{function-definition}\br - attribute-specifier-seq\opt decl-specifier-seq\opt declarator virt-specifier-seq\opt function-body\br - attribute-specifier-seq\opt decl-specifier-seq\opt declarator requires-clause function-body + attribute-specifier-seq\opt{} decl-specifier-seq\opt{} declarator virt-specifier-seq\opt{} function-body\br + attribute-specifier-seq\opt{} decl-specifier-seq\opt{} declarator requires-clause function-body \end{bnf} \begin{bnf} \nontermdef{function-body}\br - ctor-initializer\opt compound-statement\br + ctor-initializer\opt{} compound-statement\br function-try-block\br \terminal{= default ;}\br \terminal{= delete ;} @@ -2422,15 +2422,15 @@ \begin{bnf} \nontermdef{braced-init-list}\br - \terminal{\{} initializer-list \terminal{,\opt} \terminal{\}}\br - \terminal{\{} designated-initializer-list \terminal{,\opt} \terminal{\}}\br + \terminal{\{} initializer-list \terminal{,\opt{}} \terminal{\}}\br + \terminal{\{} designated-initializer-list \terminal{,\opt{}} \terminal{\}}\br \terminal{\{} \terminal{\}} \end{bnf} \begin{bnf} \nontermdef{initializer-list}\br - initializer-clause \terminal{...}\opt\br - initializer-list \terminal{,} initializer-clause \terminal{...}\opt + initializer-clause \terminal{...}\opt{}\br + initializer-list \terminal{,} initializer-clause \terminal{...}\opt{} \end{bnf} \begin{bnf} diff --git a/source/derived.tex b/source/derived.tex index d35c50bcf1..dc819d22df 100644 --- a/source/derived.tex +++ b/source/derived.tex @@ -23,20 +23,20 @@ \begin{bnf} \nontermdef{base-specifier-list}\br - base-specifier \terminal{...}\opt\br - base-specifier-list \terminal{,} base-specifier \terminal{...}\opt + base-specifier \terminal{...}\opt{}\br + base-specifier-list \terminal{,} base-specifier \terminal{...}\opt{} \end{bnf} \begin{bnf} \nontermdef{base-specifier}\br - attribute-specifier-seq\opt class-or-decltype\br - attribute-specifier-seq\opt{} \terminal{virtual} access-specifier\opt class-or-decltype\br - attribute-specifier-seq\opt access-specifier \terminal{virtual}\opt class-or-decltype + attribute-specifier-seq\opt{} class-or-decltype\br + attribute-specifier-seq\opt{} \terminal{virtual} access-specifier\opt{} class-or-decltype\br + attribute-specifier-seq\opt{} access-specifier \terminal{virtual}\opt{} class-or-decltype \end{bnf} \begin{bnf} \nontermdef{class-or-decltype}\br - nested-name-specifier\opt class-name\br + nested-name-specifier\opt{} class-name\br nested-name-specifier \terminal{template} simple-template-id\br decltype-specifier \end{bnf} diff --git a/source/exceptions.tex b/source/exceptions.tex index 7071c3e0ee..9550fbb046 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -26,12 +26,12 @@ % \begin{bnf} \nontermdef{function-try-block}\br - \terminal{try} ctor-initializer\opt compound-statement handler-seq + \terminal{try} ctor-initializer\opt{} compound-statement handler-seq \end{bnf} \begin{bnf} \nontermdef{handler-seq}\br - handler handler-seq\opt + handler handler-seq\opt{} \end{bnf} \indextext{\idxcode{catch}}% @@ -43,8 +43,8 @@ \begin{bnf} \nontermdef{exception-declaration}\br - attribute-specifier-seq\opt type-specifier-seq declarator\br - attribute-specifier-seq\opt type-specifier-seq abstract-declarator\opt\br + attribute-specifier-seq\opt{} type-specifier-seq declarator\br + attribute-specifier-seq\opt{} type-specifier-seq abstract-declarator\opt{}\br \terminal{...} \end{bnf} diff --git a/source/expressions.tex b/source/expressions.tex index a41c43ee6c..746cd94e9a 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -740,7 +740,7 @@ % \begin{bnf} \nontermdef{qualified-id}\br - nested-name-specifier \terminal{template}\opt unqualified-id + nested-name-specifier \terminal{template}\opt{} unqualified-id \end{bnf} \indextext{operator!scope resolution}% @@ -753,7 +753,7 @@ namespace-name \terminal{::}\br decltype-specifier \terminal{::}\br nested-name-specifier identifier \terminal{::}\br - nested-name-specifier \terminal{template}\opt simple-template-id \terminal{::} + nested-name-specifier \terminal{template}\opt{} simple-template-id \terminal{::} \end{bnf} \pnum @@ -835,8 +835,8 @@ \begin{bnf} \nontermdef{lambda-declarator}\br - \terminal{(} parameter-declaration-clause \terminal{)} decl-specifier-seq\opt\br - \hspace*{\bnfindentinc}noexcept-specifier\opt attribute-specifier-seq\opt trailing-return-type\opt + \terminal{(} parameter-declaration-clause \terminal{)} decl-specifier-seq\opt{}\br + \hspace*{\bnfindentinc}noexcept-specifier\opt{} attribute-specifier-seq\opt{} trailing-return-type\opt{} \end{bnf} \pnum @@ -1229,8 +1229,8 @@ \begin{bnf} \nontermdef{capture-list}\br - capture \terminal{...\opt}\br - capture-list \terminal{,} capture \terminal{...\opt} + capture \terminal{...\opt{}}\br + capture-list \terminal{,} capture \terminal{...\opt{}} \end{bnf} \begin{bnf} @@ -1883,7 +1883,7 @@ \begin{bnf} \nontermdef{type-requirement}\br - \terminal{typename} nested-name-specifier\opt type-name \terminal{;} + \terminal{typename} nested-name-specifier\opt{} type-name \terminal{;} \end{bnf} \pnum @@ -2084,8 +2084,8 @@ typename-specifier \terminal{(} expression-list\opt{} \terminal{)}\br simple-type-specifier braced-init-list\br typename-specifier braced-init-list\br - postfix-expression \terminal{. template}\opt id-expression\br - postfix-expression \terminal{-> template}\opt id-expression\br + postfix-expression \terminal{. template}\opt{} id-expression\br + postfix-expression \terminal{-> template}\opt{} id-expression\br postfix-expression \terminal{.} pseudo-destructor-name\br postfix-expression \terminal{->} pseudo-destructor-name\br postfix-expression \terminal{++}\br @@ -2107,7 +2107,7 @@ \begin{bnf} \nontermdef{pseudo-destructor-name}\br - nested-name-specifier\opt type-name \terminal{::\,\tilde} type-name\br + nested-name-specifier\opt{} type-name \terminal{::\,\tilde} type-name\br nested-name-specifier \terminal{template} simple-template-id \terminal{::\,\tilde} type-name\br \terminal{\tilde} type-name\br \terminal{\tilde} decltype-specifier @@ -2444,7 +2444,7 @@ the form \begin{ncbnf} -nested-name-specifier\opt type-name \terminal{::\,\tilde} type-name +nested-name-specifier\opt{} type-name \terminal{::\,\tilde} type-name \end{ncbnf} shall designate the same scalar type (ignoring cv-qualification). @@ -3678,8 +3678,8 @@ \begin{bnf} \nontermdef{new-expression}\br - \terminal{::}\opt{} \terminal{new} new-placement\opt new-type-id new-initializer\opt \br - \terminal{::}\opt{} \terminal{new} new-placement\opt{} \terminal{(} type-id \terminal{)} new-initializer\opt + \terminal{::}\opt{} \terminal{new} new-placement\opt{} new-type-id new-initializer\opt{} \br + \terminal{::}\opt{} \terminal{new} new-placement\opt{} \terminal{(} type-id \terminal{)} new-initializer\opt{} \end{bnf} \indextext{\idxcode{new}!storage allocation}% @@ -3691,19 +3691,19 @@ \begin{bnf} \nontermdef{new-type-id}\br - type-specifier-seq new-declarator\opt + type-specifier-seq new-declarator\opt{} \end{bnf} \begin{bnf} \nontermdef{new-declarator}\br - ptr-operator new-declarator\opt \br + ptr-operator new-declarator\opt{} \br noptr-new-declarator \end{bnf} \begin{bnf} \nontermdef{noptr-new-declarator}\br - \terminal{[} expression \terminal{]} attribute-specifier-seq\opt\br - noptr-new-declarator \terminal{[} constant-expression \terminal{]} attribute-specifier-seq\opt + \terminal{[} expression \terminal{]} attribute-specifier-seq\opt{}\br + noptr-new-declarator \terminal{[} constant-expression \terminal{]} attribute-specifier-seq\opt{} \end{bnf} \begin{bnf} @@ -5498,7 +5498,7 @@ % \begin{bnf} \nontermdef{throw-expression}\br - \terminal{throw} assignment-expression\opt + \terminal{throw} assignment-expression\opt{} \end{bnf} \pnum diff --git a/source/iostreams.tex b/source/iostreams.tex index 25861e929c..a9ea77d059 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -11215,8 +11215,8 @@ \begin{ncbnf} \nontermdef{directory-separator}\br - preferred-separator directory-separator\opt\br - fallback-separator directory-separator\opt + preferred-separator directory-separator\opt{}\br + fallback-separator directory-separator\opt{} \end{ncbnf} \begin{ncbnf} diff --git a/source/lex.tex b/source/lex.tex index 8d58483eea..3661c8866f 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -838,29 +838,29 @@ \indextext{literal!integer}% \begin{bnf} \nontermdef{integer-literal}\br - binary-literal integer-suffix\opt\br - octal-literal integer-suffix\opt\br - decimal-literal integer-suffix\opt\br - hexadecimal-literal integer-suffix\opt + binary-literal integer-suffix\opt{}\br + octal-literal integer-suffix\opt{}\br + decimal-literal integer-suffix\opt{}\br + hexadecimal-literal integer-suffix\opt{} \end{bnf} \begin{bnf} \nontermdef{binary-literal}\br \terminal{0b} binary-digit\br \terminal{0B} binary-digit\br - binary-literal \terminal{'}\opt binary-digit + binary-literal \terminal{'}\opt{} binary-digit \end{bnf} \begin{bnf} \nontermdef{octal-literal}\br \terminal{0}\br - octal-literal \terminal{'}\opt octal-digit + octal-literal \terminal{'}\opt{} octal-digit \end{bnf} \begin{bnf} \nontermdef{decimal-literal}\br nonzero-digit\br - decimal-literal \terminal{'}\opt digit + decimal-literal \terminal{'}\opt{} digit \end{bnf} \begin{bnf} @@ -892,7 +892,7 @@ \begin{bnf} \nontermdef{hexadecimal-digit-sequence}\br hexadecimal-digit\br - hexadecimal-digit-sequence \terminal{'}\opt hexadecimal-digit + hexadecimal-digit-sequence \terminal{'}\opt{} hexadecimal-digit \end{bnf} \begin{bnf} @@ -904,10 +904,10 @@ \begin{bnf} \nontermdef{integer-suffix}\br - unsigned-suffix long-suffix\opt \br - unsigned-suffix long-long-suffix\opt \br - long-suffix unsigned-suffix\opt \br - long-long-suffix unsigned-suffix\opt + unsigned-suffix long-suffix\opt{} \br + unsigned-suffix long-long-suffix\opt{} \br + long-suffix unsigned-suffix\opt{} \br + long-long-suffix unsigned-suffix\opt{} \end{bnf} \begin{bnf} @@ -1285,14 +1285,14 @@ \begin{bnf} \nontermdef{decimal-floating-literal}\br - fractional-constant exponent-part\opt floating-suffix\opt\br - digit-sequence exponent-part floating-suffix\opt + fractional-constant exponent-part\opt{} floating-suffix\opt{}\br + digit-sequence exponent-part floating-suffix\opt{} \end{bnf} \begin{bnf} \nontermdef{hexadecimal-floating-literal}\br - hexadecimal-prefix hexadecimal-fractional-constant binary-exponent-part floating-suffix\opt\br - hexadecimal-prefix hexadecimal-digit-sequence binary-exponent-part floating-suffix\opt + hexadecimal-prefix hexadecimal-fractional-constant binary-exponent-part floating-suffix\opt{}\br + hexadecimal-prefix hexadecimal-digit-sequence binary-exponent-part floating-suffix\opt{} \end{bnf} \begin{bnf} @@ -1309,14 +1309,14 @@ \begin{bnf} \nontermdef{exponent-part}\br - \terminal{e} sign\opt digit-sequence\br - \terminal{E} sign\opt digit-sequence + \terminal{e} sign\opt{} digit-sequence\br + \terminal{E} sign\opt{} digit-sequence \end{bnf} \begin{bnf} \nontermdef{binary-exponent-part}\br - \terminal{p} sign\opt digit-sequence\br - \terminal{P} sign\opt digit-sequence + \terminal{p} sign\opt{} digit-sequence\br + \terminal{P} sign\opt{} digit-sequence \end{bnf} \begin{bnf} @@ -1327,7 +1327,7 @@ \begin{bnf} \nontermdef{digit-sequence}\br digit\br - digit-sequence \terminal{'}\opt digit + digit-sequence \terminal{'}\opt{} digit \end{bnf} \begin{bnf} @@ -1739,7 +1739,7 @@ \begin{bnf} \nontermdef{user-defined-floating-literal}\br - fractional-constant exponent-part\opt ud-suffix\br + fractional-constant exponent-part\opt{} ud-suffix\br digit-sequence exponent-part ud-suffix\br hexadecimal-prefix hexadecimal-fractional-constant binary-exponent-part ud-suffix\br hexadecimal-prefix hexadecimal-digit-sequence binary-exponent-part ud-suffix diff --git a/source/overloading.tex b/source/overloading.tex index 5306cd9cbb..b2bb9e7b9f 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -816,7 +816,7 @@ form \begin{ncsimplebnf} -\terminal{operator} conversion-type-id \terminal{(\,)} cv-qualifier ref-qualifier\opt noexcept-specifier\opt attribute-specifier-seq\opt{} \terminal{;} +\terminal{operator} conversion-type-id \terminal{(\,)} cv-qualifier ref-qualifier\opt{} noexcept-specifier\opt{} attribute-specifier-seq\opt{} \terminal{;} \end{ncsimplebnf} where @@ -3382,7 +3382,7 @@ uses \tcode{->}. \begin{ncsimplebnf} -postfix-expression \terminal{->} \terminal{template\opt} id-expression\\ +postfix-expression \terminal{->} \terminal{template\opt{}} id-expression\\ postfix-expression \terminal{->} pseudo-destructor-name \end{ncsimplebnf} diff --git a/source/preprocessor.tex b/source/preprocessor.tex index 2712a8658e..1ba4525a54 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -30,7 +30,7 @@ \begin{bnf} \nontermdef{preprocessing-file}\br - group\opt + group\opt{} \end{bnf} \begin{bnf} @@ -56,21 +56,21 @@ \>\terminal{\# define}\>\>identifier lparen identifier-list \terminal{, ... )} replacement-list new-line\br \>\terminal{\# undef}\>\>identifier new-line\br \>\terminal{\# line}\>\>pp-tokens new-line\br -\>\terminal{\# error}\>\>pp-tokens\opt new-line\br -\>\terminal{\# pragma}\>\>pp-tokens\opt new-line\br +\>\terminal{\# error}\>\>pp-tokens\opt{} new-line\br +\>\terminal{\# pragma}\>\>pp-tokens\opt{} new-line\br \>\terminal{\# }new-line \end{bnftab} \begin{bnf} \nontermdef{if-section}\br - if-group elif-groups\opt else-group\opt endif-line + if-group elif-groups\opt{} else-group\opt{} endif-line \end{bnf} \begin{bnftab} \nontermdef{if-group}\br -\>\terminal{\# if}\>\>constant-expression new-line group\opt\br -\>\terminal{\# ifdef}\>\>identifier new-line group\opt\br -\>\terminal{\# ifndef}\>\>identifier new-line group\opt +\>\terminal{\# if}\>\>constant-expression new-line group\opt{}\br +\>\terminal{\# ifdef}\>\>identifier new-line group\opt{}\br +\>\terminal{\# ifndef}\>\>identifier new-line group\opt{} \end{bnftab} \begin{bnf} @@ -81,12 +81,12 @@ \begin{bnftab} \nontermdef{elif-group}\br -\>\terminal{\# elif}\>\>constant-expression new-line group\opt +\>\terminal{\# elif}\>\>constant-expression new-line group\opt{} \end{bnftab} \begin{bnftab} \nontermdef{else-group}\br -\>\terminal{\# else}\>\>new-line group\opt +\>\terminal{\# else}\>\>new-line group\opt{} \end{bnftab} \begin{bnftab} @@ -96,7 +96,7 @@ \begin{bnf} \nontermdef{text-line}\br - pp-tokens\opt new-line + pp-tokens\opt{} new-line \end{bnf} \begin{bnf} @@ -117,7 +117,7 @@ \begin{bnf} \nontermdef{replacement-list}\br - pp-tokens\opt + pp-tokens\opt{} \end{bnf} \begin{bnf} @@ -274,9 +274,9 @@ \begin{ncbnftab} \indextext{\idxcode{\#if}}% -\terminal{\# if}\>\>constant-expression new-line group\opt\br +\terminal{\# if}\>\>constant-expression new-line group\opt{}\br \indextext{\idxcode{\#elif}}% -\terminal{\# elif}\>\>constant-expression new-line group\opt +\terminal{\# elif}\>\>constant-expression new-line group\opt{} \end{ncbnftab} check whether the controlling constant expression evaluates to nonzero. @@ -369,9 +369,9 @@ Preprocessing directives of the forms \begin{ncbnftab} -\terminal{\# ifdef}\>\>identifier new-line group\opt\br +\terminal{\# ifdef}\>\>identifier new-line group\opt{}\br \indextext{\idxcode{\#ifdef}}% -\terminal{\# ifndef}\>\>identifier new-line group\opt +\terminal{\# ifndef}\>\>identifier new-line group\opt{} \indextext{\idxcode{\#ifndef}}% \end{ncbnftab} @@ -1246,7 +1246,7 @@ A preprocessing directive of the form \begin{ncsimplebnf} -\terminal{\# error} pp-tokens\opt new-line +\terminal{\# error} pp-tokens\opt{} new-line \end{ncsimplebnf} causes the implementation to produce @@ -1261,7 +1261,7 @@ A preprocessing directive of the form \begin{ncsimplebnf} -\terminal{\# pragma} pp-tokens\opt new-line +\terminal{\# pragma} pp-tokens\opt{} new-line \end{ncsimplebnf} causes the implementation to behave diff --git a/source/special.tex b/source/special.tex index edabc8a7ef..73cca33e55 100644 --- a/source/special.tex +++ b/source/special.tex @@ -78,7 +78,7 @@ function declarator\iref{dcl.fct} of the form \begin{ncbnf} -ptr-declarator \terminal{(} parameter-declaration-clause \terminal{)} noexcept-specifier\opt attribute-specifier-seq\opt +ptr-declarator \terminal{(} parameter-declaration-clause \terminal{)} noexcept-specifier\opt{} attribute-specifier-seq\opt{} \end{ncbnf} where the \grammarterm{ptr-declarator} consists solely of an @@ -883,12 +883,12 @@ \begin{bnf} \nontermdef{conversion-type-id}\br - type-specifier-seq conversion-declarator\opt + type-specifier-seq conversion-declarator\opt{} \end{bnf} \begin{bnf} \nontermdef{conversion-declarator}\br - ptr-operator conversion-declarator\opt + ptr-operator conversion-declarator\opt{} \end{bnf} specifies a conversion from @@ -1012,7 +1012,7 @@ function declarator\iref{dcl.fct} of the form \begin{ncbnf} -ptr-declarator \terminal{(} parameter-declaration-clause \terminal{)} noexcept-specifier\opt attribute-specifier-seq\opt +ptr-declarator \terminal{(} parameter-declaration-clause \terminal{)} noexcept-specifier\opt{} attribute-specifier-seq\opt{} \end{ncbnf} where the \grammarterm{ptr-declarator} consists solely of an @@ -1658,8 +1658,8 @@ \begin{bnf} \nontermdef{mem-initializer-list}\br - mem-initializer \terminal{...}\opt\br - mem-initializer-list \terminal{,} mem-initializer \terminal{...}\opt + mem-initializer \terminal{...}\opt{}\br + mem-initializer-list \terminal{,} mem-initializer \terminal{...}\opt{} \end{bnf} \begin{bnf} diff --git a/source/statements.tex b/source/statements.tex index 71d392b41b..df8f9c129a 100644 --- a/source/statements.tex +++ b/source/statements.tex @@ -12,13 +12,13 @@ \begin{bnf} \nontermdef{statement}\br labeled-statement\br - attribute-specifier-seq\opt expression-statement\br - attribute-specifier-seq\opt compound-statement\br - attribute-specifier-seq\opt selection-statement\br - attribute-specifier-seq\opt iteration-statement\br - attribute-specifier-seq\opt jump-statement\br + attribute-specifier-seq\opt{} expression-statement\br + attribute-specifier-seq\opt{} compound-statement\br + attribute-specifier-seq\opt{} selection-statement\br + attribute-specifier-seq\opt{} iteration-statement\br + attribute-specifier-seq\opt{} jump-statement\br declaration-statement\br - attribute-specifier-seq\opt try-block + attribute-specifier-seq\opt{} try-block \nontermdef{init-statement}\br expression-statement\br @@ -26,7 +26,7 @@ \nontermdef{condition}\br expression\br - attribute-specifier-seq\opt decl-specifier-seq declarator brace-or-equal-initializer + attribute-specifier-seq\opt{} decl-specifier-seq declarator brace-or-equal-initializer \end{bnf} The optional \grammarterm{attribute-specifier-seq} appertains to the respective statement. @@ -102,7 +102,7 @@ \begin{bnf} \nontermdef{labeled-statement}\br - attribute-specifier-seq\opt identifier \terminal{:} statement\br + attribute-specifier-seq\opt{} identifier \terminal{:} statement\br attribute-specifier-seq\opt{} \terminal{case} constant-expression \terminal{:} statement\br attribute-specifier-seq\opt{} \terminal{default :} statement \end{bnf} @@ -196,9 +196,9 @@ % \begin{bnf} \nontermdef{selection-statement}\br - \terminal{if constexpr\opt (} init-statement\opt condition \terminal{)} statement\br - \terminal{if constexpr\opt (} init-statement\opt condition \terminal{)} statement \terminal{else} statement\br - \terminal{switch (} init-statement\opt condition \terminal{)} statement + \terminal{if constexpr\opt{} (} init-statement\opt{} condition \terminal{)} statement\br + \terminal{if constexpr\opt{} (} init-statement\opt{} condition \terminal{)} statement \terminal{else} statement\br + \terminal{switch (} init-statement\opt{} condition \terminal{)} statement \end{bnf} See~\ref{dcl.meaning} for the optional \grammarterm{attribute-specifier-seq} in a condition. @@ -295,7 +295,7 @@ An \tcode{if} statement of the form \begin{ncbnf} -\terminal{if constexpr\opt (} init-statement condition \terminal{)} statement +\terminal{if constexpr\opt{} (} init-statement condition \terminal{)} statement \end{ncbnf} is equivalent to @@ -303,14 +303,14 @@ \begin{ncbnftab} \terminal{\{}\br \>init-statement\br -\>\terminal{if constexpr\opt (} condition \terminal{)} statement\br +\>\terminal{if constexpr\opt{} (} condition \terminal{)} statement\br \terminal{\}} \end{ncbnftab} and an \tcode{if} statement of the form \begin{ncbnf} -\terminal{if constexpr\opt (} init-statement condition \terminal{)} statement \terminal{else} statement +\terminal{if constexpr\opt{} (} init-statement condition \terminal{)} statement \terminal{else} statement \end{ncbnf} is equivalent to @@ -318,7 +318,7 @@ \begin{ncbnftab} \terminal{\{}\br \>init-statement\br -\>\terminal{if constexpr\opt (} condition \terminal{)} statement \terminal{else} statement\br +\>\terminal{if constexpr\opt{} (} condition \terminal{)} statement \terminal{else} statement\br \terminal{\}} \end{ncbnftab} @@ -436,8 +436,8 @@ \begin{bnf} \nontermdef{for-range-declaration}\br - attribute-specifier-seq\opt decl-specifier-seq declarator\br - attribute-specifier-seq\opt decl-specifier-seq ref-qualifier\opt{} \terminal{[} identifier-list \terminal{]} + attribute-specifier-seq\opt{} decl-specifier-seq declarator\br + attribute-specifier-seq\opt{} decl-specifier-seq ref-qualifier\opt{} \terminal{[} identifier-list \terminal{]} \end{bnf} \begin{bnf} diff --git a/source/templates.tex b/source/templates.tex index cf88fcaf25..30d314e1dc 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -21,7 +21,7 @@ \begin{bnf} \nontermdef{template-head}\br - \terminal{template} \terminal{<} template-parameter-list \terminal{>} requires-clause\opt + \terminal{template} \terminal{<} template-parameter-list \terminal{>} requires-clause\opt{} \end{bnf} \begin{bnf} @@ -244,9 +244,9 @@ \begin{bnf} \nontermdef{type-parameter}\br - type-parameter-key \terminal{...}\opt identifier\opt\br + type-parameter-key \terminal{...}\opt{} identifier\opt{}\br type-parameter-key identifier\opt{} \terminal{=} type-id\br - template-head type-parameter-key \terminal{...}\opt identifier\opt\br + template-head type-parameter-key \terminal{...}\opt{} identifier\opt{}\br template-head type-parameter-key identifier\opt{} \terminal{=} id-expression \end{bnf} @@ -258,8 +258,8 @@ \begin{bnf} \nontermdef{constrained-parameter}\br - qualified-concept-name \terminal{...} identifier\opt\br - qualified-concept-name identifier\opt{} default-template-argument\opt + qualified-concept-name \terminal{...} identifier\opt{}\br + qualified-concept-name identifier\opt{} default-template-argument\opt{} \end{bnf} \begin{bnf} @@ -788,8 +788,8 @@ \begin{bnf} \nontermdef{template-argument-list}\br - template-argument \terminal{...}\opt\br - template-argument-list \terminal{,} template-argument \terminal{...}\opt + template-argument \terminal{...}\opt{}\br + template-argument-list \terminal{,} template-argument \terminal{...}\opt{} \end{bnf} \begin{bnf} @@ -4047,7 +4047,7 @@ \begin{bnf} \nontermdef{typename-specifier}\br \terminal{typename} nested-name-specifier identifier\br - \terminal{typename} nested-name-specifier \terminal{template\opt} simple-template-id + \terminal{typename} nested-name-specifier \terminal{template\opt{}} simple-template-id \end{bnf} \pnum @@ -5087,8 +5087,8 @@ \begin{ncbnftab} simple-type-specifier \terminal{(} expression-list\opt{} \terminal{)}\br -\terminal{::\opt new} new-placement\opt new-type-id new-initializer\opt\br -\terminal{::\opt new} new-placement\opt{} \terminal{(} type-id \terminal{)} new-initializer\opt\br +\terminal{::\opt{} new} new-placement\opt{} new-type-id new-initializer\opt{}\br +\terminal{::\opt{} new} new-placement\opt{} \terminal{(} type-id \terminal{)} new-initializer\opt{}\br \terminal{dynamic_cast <} type-id \terminal{> (} expression \terminal{)}\br \terminal{static_cast <} type-id \terminal{> (} expression \terminal{)}\br \terminal{const_cast <} type-id \terminal{> (} expression \terminal{)}\br @@ -5110,9 +5110,9 @@ \terminal{alignof (} type-id \terminal{)}\br \terminal{typeid (} expression \terminal{)}\br \terminal{typeid (} type-id \terminal{)}\br -\terminal{::\opt delete} cast-expression\br -\terminal{::\opt delete [ ]} cast-expression\br -\terminal{throw} assignment-expression\opt\br +\terminal{::\opt{} delete} cast-expression\br +\terminal{::\opt{} delete [ ]} cast-expression\br +\terminal{throw} assignment-expression\opt{}\br \terminal{noexcept} \terminal{(} expression \terminal{)} \end{ncbnftab} @@ -6017,7 +6017,7 @@ \begin{bnf} \nontermdef{explicit-instantiation}\br - \terminal{extern\opt} \terminal{template} declaration + \terminal{extern\opt{}} \terminal{template} declaration \end{bnf} There are two forms of explicit instantiation: an explicit instantiation diff --git a/source/utilities.tex b/source/utilities.tex index 1ef5bba67b..a767a3287b 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -14739,7 +14739,7 @@ \remarks This deduction guide participates in overload resolution only if \tcode{\&F::operator()} is well-formed when treated as an unevaluated operand. In that case, if \tcode{decltype(\&F::operator())} is of the form -\tcode{R(G::*)(A...)}~\cv{}~\tcode{\&\opt{}~noexcept\opt} +\tcode{R(G::*)(A...)}~\cv{}~\tcode{\&\opt{}~noexcept\opt{}} for a class type \tcode{G}, then the deduced type is \tcode{function}. \pnum From a83e2e967f04f21335859981093cb39d8909d7f0 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 7 Feb 2017 10:34:48 +0100 Subject: [PATCH 141/168] [macros] Remove \xspace from \opt --- source/macros.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/macros.tex b/source/macros.tex index d7afab387c..e178f24bf5 100644 --- a/source/macros.tex +++ b/source/macros.tex @@ -194,7 +194,7 @@ \newcommand{\CppXI}{\Cpp{} 2011} \newcommand{\CppXIV}{\Cpp{} 2014} \newcommand{\CppXVII}{\Cpp{} 2017} -\newcommand{\opt}{{\ensuremath{_\mathit{opt}}}\xspace} +\newcommand{\opt}{{\ensuremath{_\mathit{opt}}}} \newcommand{\dcr}{-{-}} \newcommand{\bigoh}[1]{\ensuremath{\mathscr{O}(#1)}} From 2b968acf82d543c0b459692e78c73df91f56d384 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 7 Feb 2017 11:14:01 +0100 Subject: [PATCH 142/168] [std] Remove unused package 'xspace' --- source/std.tex | 1 - 1 file changed, 1 deletion(-) diff --git a/source/std.tex b/source/std.tex index 555099919e..dbcf8942da 100644 --- a/source/std.tex +++ b/source/std.tex @@ -25,7 +25,6 @@ \usepackage{mathrsfs} % mathscr font \usepackage[final]{microtype} \usepackage{multicol} -\usepackage{xspace} \usepackage{lmodern} \usepackage[T1]{fontenc} \usepackage[pdftex, final]{graphicx} From e6e89137eec0c5135b3656e9ca221f391c2f1060 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Thu, 23 Nov 2017 15:10:08 +0000 Subject: [PATCH 143/168] [mem.res] Fix whitespace around ptr-declarators and template arguments (#1840) --- source/utilities.tex | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/source/utilities.tex b/source/utilities.tex index a767a3287b..b7c11e6b0b 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -11357,16 +11357,16 @@ void construct(T* p, Args&&... args); template - void construct(pair* p, piecewise_construct_t, + void construct(pair* p, piecewise_construct_t, tuple x, tuple y); template - void construct(pair* p); + void construct(pair* p); template - void construct(pair* p, U&& x, V&& y); + void construct(pair* p, U&& x, V&& y); template - void construct(pair* p, const pair& pr); + void construct(pair* p, const pair& pr); template - void construct(pair* p, pair&& pr); + void construct(pair* p, pair&& pr); template void destroy(T* p); @@ -11496,7 +11496,7 @@ \indexlibrarymember{construct}{polymorphic_allocator}% \begin{itemdecl} template - void construct(pair* p, piecewise_construct_t, tuple x, tuple y); + void construct(pair* p, piecewise_construct_t, tuple x, tuple y); \end{itemdecl} \begin{itemdescr} @@ -11582,7 +11582,7 @@ \indexlibrarymember{construct}{polymorphic_allocator}% \begin{itemdecl} template - void construct(pair* p); + void construct(pair* p); \end{itemdecl} \begin{itemdescr} @@ -11597,7 +11597,7 @@ \indexlibrarymember{construct}{polymorphic_allocator}% \begin{itemdecl} template - void construct(pair* p, U&& x, V&& y); + void construct(pair* p, U&& x, V&& y); \end{itemdecl} \begin{itemdescr} @@ -11614,7 +11614,7 @@ \indexlibrarymember{construct}{polymorphic_allocator}% \begin{itemdecl} template - void construct(pair* p, const pair& pr); + void construct(pair* p, const pair& pr); \end{itemdecl} \begin{itemdescr} @@ -11631,7 +11631,7 @@ \indexlibrarymember{construct}{polymorphic_allocator}% \begin{itemdecl} template - void construct(pair* p, pair&& pr); + void construct(pair* p, pair&& pr); \end{itemdecl} \begin{itemdescr} @@ -11869,8 +11869,8 @@ pool_options options() const; protected: - void *do_allocate(size_t bytes, size_t alignment) override; - void do_deallocate(void *p, size_t bytes, size_t alignment) override; + void* do_allocate(size_t bytes, size_t alignment) override; + void do_deallocate(void* p, size_t bytes, size_t alignment) override; bool do_is_equal(const memory_resource& other) const noexcept override; }; @@ -11892,7 +11892,7 @@ unsynchronized_pool_resource& operator=(const unsynchronized_pool_resource&) = delete; void release(); - memory_resource *upstream_resource() const; + memory_resource* upstream_resource() const; pool_options options() const; protected: @@ -12147,20 +12147,20 @@ \begin{codeblock} namespace std::pmr { class monotonic_buffer_resource : public memory_resource { - memory_resource *upstream_rsrc; // \expos - void *current_buffer; // \expos + memory_resource* upstream_rsrc; // \expos + void* current_buffer; // \expos size_t next_buffer_size; // \expos public: - explicit monotonic_buffer_resource(memory_resource *upstream); - monotonic_buffer_resource(size_t initial_size, memory_resource *upstream); - monotonic_buffer_resource(void *buffer, size_t buffer_size, memory_resource *upstream); + explicit monotonic_buffer_resource(memory_resource* upstream); + monotonic_buffer_resource(size_t initial_size, memory_resource* upstream); + monotonic_buffer_resource(void* buffer, size_t buffer_size, memory_resource* upstream); monotonic_buffer_resource() : monotonic_buffer_resource(get_default_resource()) {} explicit monotonic_buffer_resource(size_t initial_size) : monotonic_buffer_resource(initial_size, get_default_resource()) {} - monotonic_buffer_resource(void *buffer, size_t buffer_size) + monotonic_buffer_resource(void* buffer, size_t buffer_size) : monotonic_buffer_resource(buffer, buffer_size, get_default_resource()) {} monotonic_buffer_resource(const monotonic_buffer_resource&) = delete; From 2ca4340d93ec4cd63c330303e5beef20db8604df Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Thu, 23 Nov 2017 22:48:22 +0000 Subject: [PATCH 144/168] [vector.bool] Use injected-class-name in synopsis (#1844) --- source/containers.tex | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/containers.tex b/source/containers.tex index a8cd4d2d8e..6042777ef6 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -5656,14 +5656,14 @@ vector(size_type n, const bool& value, const Allocator& = Allocator()); template vector(InputIterator first, InputIterator last, const Allocator& = Allocator()); - vector(const vector& x); - vector(vector&& x); + vector(const vector& x); + vector(vector&& x); vector(const vector&, const Allocator&); vector(vector&&, const Allocator&); vector(initializer_list, const Allocator& = Allocator())); ~vector(); - vector& operator=(const vector& x); - vector& operator=(vector&& x); + vector& operator=(const vector& x); + vector& operator=(vector&& x); vector& operator=(initializer_list); template void assign(InputIterator first, InputIterator last); @@ -5718,7 +5718,7 @@ iterator erase(const_iterator position); iterator erase(const_iterator first, const_iterator last); - void swap(vector&); + void swap(vector&); static void swap(reference x, reference y) noexcept; void flip() noexcept; // flips all bits void clear() noexcept; From 877918fdc3e5223006b782d3c5959470bd7c02a8 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Fri, 24 Nov 2017 00:57:49 +0000 Subject: [PATCH 145/168] [allocator.requirements] Fix pointer_to expression and reinstate descriptive variable 'r' (#1656) --- source/lib-intro.tex | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/lib-intro.tex b/source/lib-intro.tex index ad60098c19..daa8226bc9 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -1872,6 +1872,8 @@ by calling \tcode{a1.allocate}, where \tcode{a1 == a} \\ \rowsep \tcode{q} & a value of type \tcode{XX::const_pointer} obtained by conversion from a value \tcode{p}. \\ \rowsep +\tcode{r} & a value of type \tcode{T\&} +obtained by the expression \tcode{*p}. \\ \rowsep \tcode{w} & a value of type \tcode{XX::void_pointer} obtained by conversion from a value \tcode{p} \\ \rowsep \tcode{x} & a value of type \tcode{XX::const_void_pointer} obtained by @@ -1960,7 +1962,7 @@ \tcode{pointer_traits<\brk{}X::pointer\brk{}>::pointer_to(r)} & \tcode{X::pointer} & - & \\ \rowsep + same as \tcode{p} & \\ \rowsep \tcode{a.allocate(n)} & \tcode{X::pointer} & Memory is allocated for \tcode{n} objects of type \tcode{T} but objects From 784f8c9980a74393ceaf201b343aa232a82113a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Fri, 24 Nov 2017 01:03:52 +0000 Subject: [PATCH 146/168] [complex{,.special,.members}] Use injected-class-name in class definitions and itemdecls --- source/numerics.tex | 108 ++++++++++++++++++++++---------------------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/source/numerics.tex b/source/numerics.tex index 6ff6bf8a28..90542c29da 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -401,18 +401,18 @@ constexpr T imag() const; constexpr void imag(T); - constexpr complex& operator= (const T&); - constexpr complex& operator+=(const T&); - constexpr complex& operator-=(const T&); - constexpr complex& operator*=(const T&); - constexpr complex& operator/=(const T&); + constexpr complex& operator= (const T&); + constexpr complex& operator+=(const T&); + constexpr complex& operator-=(const T&); + constexpr complex& operator*=(const T&); + constexpr complex& operator/=(const T&); constexpr complex& operator=(const complex&); - template constexpr complex& operator= (const complex&); - template constexpr complex& operator+=(const complex&); - template constexpr complex& operator-=(const complex&); - template constexpr complex& operator*=(const complex&); - template constexpr complex& operator/=(const complex&); + template constexpr complex& operator= (const complex&); + template constexpr complex& operator+=(const complex&); + template constexpr complex& operator-=(const complex&); + template constexpr complex& operator*=(const complex&); + template constexpr complex& operator/=(const complex&); }; } \end{codeblock} @@ -445,18 +445,18 @@ constexpr float imag() const; constexpr void imag(float); - constexpr complex& operator= (float); - constexpr complex& operator+=(float); - constexpr complex& operator-=(float); - constexpr complex& operator*=(float); - constexpr complex& operator/=(float); - - constexpr complex& operator=(const complex&); - template constexpr complex& operator= (const complex&); - template constexpr complex& operator+=(const complex&); - template constexpr complex& operator-=(const complex&); - template constexpr complex& operator*=(const complex&); - template constexpr complex& operator/=(const complex&); + constexpr complex& operator= (float); + constexpr complex& operator+=(float); + constexpr complex& operator-=(float); + constexpr complex& operator*=(float); + constexpr complex& operator/=(float); + + constexpr complex& operator=(const complex&); + template constexpr complex& operator= (const complex&); + template constexpr complex& operator+=(const complex&); + template constexpr complex& operator-=(const complex&); + template constexpr complex& operator*=(const complex&); + template constexpr complex& operator/=(const complex&); }; template<> class complex { @@ -472,18 +472,18 @@ constexpr double imag() const; constexpr void imag(double); - constexpr complex& operator= (double); - constexpr complex& operator+=(double); - constexpr complex& operator-=(double); - constexpr complex& operator*=(double); - constexpr complex& operator/=(double); - - constexpr complex& operator=(const complex&); - template constexpr complex& operator= (const complex&); - template constexpr complex& operator+=(const complex&); - template constexpr complex& operator-=(const complex&); - template constexpr complex& operator*=(const complex&); - template constexpr complex& operator/=(const complex&); + constexpr complex& operator= (double); + constexpr complex& operator+=(double); + constexpr complex& operator-=(double); + constexpr complex& operator*=(double); + constexpr complex& operator/=(double); + + constexpr complex& operator=(const complex&); + template constexpr complex& operator= (const complex&); + template constexpr complex& operator+=(const complex&); + template constexpr complex& operator-=(const complex&); + template constexpr complex& operator*=(const complex&); + template constexpr complex& operator/=(const complex&); }; template<> class complex { @@ -499,18 +499,18 @@ constexpr long double imag() const; constexpr void imag(long double); - constexpr complex& operator= (long double); - constexpr complex& operator+=(long double); - constexpr complex& operator-=(long double); - constexpr complex& operator*=(long double); - constexpr complex& operator/=(long double); - - constexpr complex& operator=(const complex&); - template constexpr complex& operator= (const complex&); - template constexpr complex& operator+=(const complex&); - template constexpr complex& operator-=(const complex&); - template constexpr complex& operator*=(const complex&); - template constexpr complex& operator/=(const complex&); + constexpr complex& operator= (long double); + constexpr complex& operator+=(long double); + constexpr complex& operator-=(long double); + constexpr complex& operator*=(long double); + constexpr complex& operator/=(long double); + + constexpr complex& operator=(const complex&); + template constexpr complex& operator= (const complex&); + template constexpr complex& operator+=(const complex&); + template constexpr complex& operator-=(const complex&); + template constexpr complex& operator*=(const complex&); + template constexpr complex& operator/=(const complex&); }; } \end{codeblock} @@ -577,7 +577,7 @@ \indexlibrarymember{operator+=}{complex}% \begin{itemdecl} -constexpr complex& operator+=(const T& rhs); +constexpr complex& operator+=(const T& rhs); \end{itemdecl} \begin{itemdescr} @@ -596,7 +596,7 @@ \indexlibrarymember{operator-=}{complex}% \begin{itemdecl} -constexpr complex& operator-=(const T& rhs); +constexpr complex& operator-=(const T& rhs); \end{itemdecl} \begin{itemdescr} @@ -615,7 +615,7 @@ \indexlibrarymember{operator*=}{complex}% \begin{itemdecl} -constexpr complex& operator*=(const T& rhs); +constexpr complex& operator*=(const T& rhs); \end{itemdecl} \begin{itemdescr} @@ -633,7 +633,7 @@ \indexlibrarymember{operator/=}{complex}% \begin{itemdecl} -constexpr complex& operator/=(const T& rhs); +constexpr complex& operator/=(const T& rhs); \end{itemdecl} \begin{itemdescr} @@ -651,7 +651,7 @@ \indexlibrarymember{operator+=}{complex}% \begin{itemdecl} -template constexpr complex& operator+=(const complex& rhs); +template constexpr complex& operator+=(const complex& rhs); \end{itemdecl} \begin{itemdescr} @@ -669,7 +669,7 @@ \indexlibrarymember{operator-=}{complex}% \begin{itemdecl} -template constexpr complex& operator-=(const complex& rhs); +template constexpr complex& operator-=(const complex& rhs); \end{itemdecl} \begin{itemdescr} @@ -687,7 +687,7 @@ \indexlibrarymember{operator*=}{complex}% \begin{itemdecl} -template constexpr complex& operator*=(const complex& rhs); +template constexpr complex& operator*=(const complex& rhs); \end{itemdecl} \begin{itemdescr} @@ -705,7 +705,7 @@ \indexlibrarymember{operator/=}{complex}% \begin{itemdecl} -template constexpr complex& operator/=(const complex& rhs); +template constexpr complex& operator/=(const complex& rhs); \end{itemdecl} \begin{itemdescr} From fc15ada2723d97ce8b5da994b6b9d1253f0a2c7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johel=20Ernesto=20Guerrero=20Pe=C3=B1a?= Date: Fri, 24 Nov 2017 07:57:24 -0400 Subject: [PATCH 147/168] [tuple.tuple] Remove extra space before class scope (#1846) --- source/utilities.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/utilities.tex b/source/utilities.tex index b7c11e6b0b..1af3e28171 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -1087,7 +1087,7 @@ \begin{codeblock} namespace std { template - class tuple { + class tuple { public: // \ref{tuple.cnstr}, \tcode{tuple} construction @\EXPLICIT@ constexpr tuple(); From 9a8f4fde487200bcf4433facb0274f67d540617c Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Sat, 25 Nov 2017 03:29:09 +0100 Subject: [PATCH 148/168] [lex.ccon] Align char16_t phrasing to UTF-8 one (#1847) --- source/lex.tex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/lex.tex b/source/lex.tex index 3661c8866f..698433cc9a 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -1156,10 +1156,10 @@ \indextext{prefix!\idxcode{u}}% is a character literal of type \tcode{char16_t}. The value of a \tcode{char16_t} character literal containing a single \grammarterm{c-char} is -equal to its ISO 10646 code point value, provided that the code point is -representable with a single 16-bit code unit. (That is, provided it is a -basic multi-lingual plane code point.) If the value is not representable -within 16 bits, the program is ill-formed. A \tcode{char16_t} character literal +equal to its ISO 10646 code point value, provided that the code point value is +representable with a single 16-bit code unit (that is, provided it is in the +basic multi-lingual plane). If the value is not representable +with a single 16-bit code unit, the program is ill-formed. A \tcode{char16_t} character literal containing multiple \grammarterm{c-char}{s} is ill-formed. \pnum From 63ccd0513f6d9ac3555ca8becfcd7d15ed503522 Mon Sep 17 00:00:00 2001 From: stbergmann Date: Sat, 25 Nov 2017 03:33:31 +0100 Subject: [PATCH 149/168] [basic.types] Add missing "be" in note (#1839) --- source/basic.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/basic.tex b/source/basic.tex index b571582a38..ba73eee583 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -3751,7 +3751,7 @@ within a constant expression. It is not a guarantee that it is possible to create such an object, nor is it a guarantee that any object of that type -will usable in a constant expression. +will be usable in a constant expression. \end{note} \pnum From efdda2b9ca7f0ed78d7f134d8b1ca2e405610190 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Sat, 25 Nov 2017 22:57:08 +0100 Subject: [PATCH 150/168] [lib] Harmonize punctuation of 'Effects: Equivalent to' (#1815) --- source/atomics.tex | 2 +- source/iostreams.tex | 6 ++--- source/regex.tex | 10 ++------- source/strings.tex | 52 +++++++++----------------------------------- source/utilities.tex | 8 +++---- 5 files changed, 20 insertions(+), 58 deletions(-) diff --git a/source/atomics.tex b/source/atomics.tex index 0fbec6a48a..7c4667e7e4 100644 --- a/source/atomics.tex +++ b/source/atomics.tex @@ -747,7 +747,7 @@ \begin{itemdescr} \pnum -\effects Equivalent to: \tcode{store(desired)}. +\effects Equivalent to \tcode{store(desired)}. \pnum \returns \tcode{desired}. diff --git a/source/iostreams.tex b/source/iostreams.tex index a9ea77d059..930e0f9547 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -11821,7 +11821,7 @@ \begin{itemdescr} \pnum -\effects Equivalent to \tcode{return *this += path(first, last)}. +\effects Equivalent to: \tcode{return *this += path(first, last);} \end{itemdescr} \rSec4[fs.path.modifiers]{\tcode{path} modifiers} @@ -11982,7 +11982,7 @@ \begin{itemdescr} \pnum -\returns Equivalent to \tcode{native().c_str()}. +\effects Equivalent to: \tcode{return native().c_str();} \end{itemdescr} \indexlibrarymember{operator string_type}{path}% @@ -12590,7 +12590,7 @@ \begin{itemdescr} \pnum -\effects Equivalent to: \tcode{lhs.swap(rhs);} +\effects Equivalent to \tcode{lhs.swap(rhs)}. \end{itemdescr} \indexlibrary{\idxcode{hash_value}!\idxcode{path}}% diff --git a/source/regex.tex b/source/regex.tex index 8f1b00fa50..ed612710cc 100644 --- a/source/regex.tex +++ b/source/regex.tex @@ -1659,10 +1659,7 @@ \begin{itemdescr} \pnum -\effects Equivalent to \tcode{*this = that}. - -\pnum -\returns \tcode{*this}. +\effects Equivalent to: \tcode{return *this = that;} \end{itemdescr} \indexlibrarymember{basic_regex}{assign}% @@ -1672,10 +1669,7 @@ \begin{itemdescr} \pnum -\effects Equivalent to \tcode{*this = std::move(that)}. - -\pnum -\returns \tcode{*this}. +\effects Equivalent to: \tcode{return *this = std::move(that);} \end{itemdescr} \indexlibrarymember{basic_regex}{assign}% diff --git a/source/strings.tex b/source/strings.tex index 0ed7ea6d39..a6cc879a43 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -2110,11 +2110,7 @@ \begin{itemdescr} \pnum -\effects Equivalent to \tcode{append(basic_string(n, c))}. - -\pnum -\returns -\tcode{*this}. +\effects Equivalent to: \tcode{return append(basic_string(n, c));} \end{itemdescr} \indexlibrarymember{append}{basic_string}% @@ -2128,11 +2124,7 @@ \requires \range{first}{last} is a valid range. \pnum -\effects Equivalent to \tcode{append(basic_string(first, last, get_allocator()))}. - -\pnum -\returns -\tcode{*this}. +\effects Equivalent to: \tcode{return append(basic_string(first, last, get_allocator()));} \end{itemdescr} \indexlibrarymember{append}{basic_string}% @@ -2170,11 +2162,7 @@ \begin{itemdescr} \pnum -\effects Equivalent to \tcode{*this = str}. - -\pnum -\returns -\tcode{*this}. +\effects Equivalent to: \tcode{return *this = str;} \end{itemdescr} \indexlibrarymember{assign}{basic_string}% @@ -2186,11 +2174,7 @@ \begin{itemdescr} \pnum -\effects Equivalent to \tcode{*this = std::move(str)}. - -\pnum -\returns -\tcode{*this}. +\effects Equivalent to: \tcode{return *this = std::move(str);} \end{itemdescr} @@ -2321,11 +2305,7 @@ \begin{itemdescr} \pnum -\effects Equivalent to \tcode{assign(basic_string(n, c))}. - -\pnum -\returns -\tcode{*this}. +\effects Equivalent to: \tcode{return assign(basic_string(n, c));} \end{itemdescr} \indexlibrarymember{assign}{basic_string}% @@ -2336,11 +2316,7 @@ \begin{itemdescr} \pnum -\effects Equivalent to \tcode{assign(basic_string(first, last, get_allocator()))}. - -\pnum -\returns -\tcode{*this}. +\effects Equivalent to: \tcode{return assign(basic_string(first, last, get_allocator()));} \end{itemdescr} \rSec4[string.insert]{\tcode{basic_string::insert}} @@ -2472,11 +2448,7 @@ \begin{itemdescr} \pnum -\effects Equivalent to \tcode{insert(pos, basic_string(n, c))}. - -\pnum -\returns -\tcode{*this}. +\effects Equivalent to: \tcode{return insert(pos, basic_string(n, c));} \end{itemdescr} \indexlibrarymember{insert}{basic_string}% @@ -2800,11 +2772,7 @@ \begin{itemdescr} \pnum -\effects Equivalent to \tcode{replace(pos1, n1, basic_string(n2, c))}. - -\pnum -\returns -\tcode{*this}. +\effects Equivalent to: \tcode{return replace(pos1, n1, basic_string(n2, c));} \end{itemdescr} \indexlibrarymember{replace}{basic_string}% @@ -2958,7 +2926,7 @@ \pnum \effects -Equivalent to: \tcode{traits::copy(s, data() + pos, rlen)}. +Equivalent to \tcode{traits::copy(s, data() + pos, rlen)}. \begin{note} This does not terminate \tcode{s} with a null object. \end{note} \pnum @@ -4176,7 +4144,7 @@ \begin{itemdescr} \pnum \effects -Equivalent to: \tcode{lhs.swap(rhs);} +Equivalent to \tcode{lhs.swap(rhs)}. \end{itemdescr} \rSec3[string.io]{Inserters and extractors} diff --git a/source/utilities.tex b/source/utilities.tex index 1af3e28171..75051e1b75 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -11216,7 +11216,7 @@ \begin{itemdescr} \pnum \effects -Equivalent to: \tcode{do_deallocate(p, bytes, alignment);} +Equivalent to \tcode{do_deallocate(p, bytes, alignment)}. \end{itemdescr} \indexlibrarymember{is_equal}{memory_resource}% @@ -11437,8 +11437,8 @@ \begin{itemdescr} \pnum -\returns -Equivalent to +\effects +Equivalent to: \begin{codeblock} return static_cast(memory_rsrc->allocate(n * sizeof(Tp), alignof(Tp))); \end{codeblock} @@ -14163,7 +14163,7 @@ \begin{itemdescr} \pnum \effects -Equivalent to \tcode{return \placeholder{call_wrapper}(std::forward(f));} +Equivalent to: \tcode{return \placeholder{call_wrapper}(std::forward(f));} where \tcode{\placeholder{call_wrapper}} is an exposition only class defined as follows: \begin{codeblock} class @\placeholder{call_wrapper}@ { From 742f04d540e3c2d393a8f58d8a386a6452c764de Mon Sep 17 00:00:00 2001 From: Eelis Date: Sat, 25 Nov 2017 23:34:56 +0100 Subject: [PATCH 151/168] [allocator.adaptor.syn] Fix index entries for scoped_allocator_adaptor member typedefs. (#1850) --- source/utilities.tex | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/source/utilities.tex b/source/utilities.tex index 75051e1b75..bf706ac55f 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -12369,14 +12369,14 @@ expressions. \end{note} \indexlibrary{\idxcode{scoped_allocator_adaptor}}% -\indexlibrarymember{outer_allocator_type}{scoped_allocator}% -\indexlibrarymember{value_type}{scoped_allocator}% -\indexlibrarymember{size_type}{scoped_allocator}% -\indexlibrarymember{difference_type}{scoped_allocator}% -\indexlibrarymember{pointer}{scoped_allocator}% -\indexlibrarymember{const_pointer}{scoped_allocator}% -\indexlibrarymember{void_pointer}{scoped_allocator}% -\indexlibrarymember{const_void_pointer}{scoped_allocator}% +\indexlibrarymember{outer_allocator_type}{scoped_allocator_adaptor}% +\indexlibrarymember{value_type}{scoped_allocator_adaptor}% +\indexlibrarymember{size_type}{scoped_allocator_adaptor}% +\indexlibrarymember{difference_type}{scoped_allocator_adaptor}% +\indexlibrarymember{pointer}{scoped_allocator_adaptor}% +\indexlibrarymember{const_pointer}{scoped_allocator_adaptor}% +\indexlibrarymember{void_pointer}{scoped_allocator_adaptor}% +\indexlibrarymember{const_void_pointer}{scoped_allocator_adaptor}% \begin{codeblock} namespace std { template From 9dbbf9cbbe6994f7d4ad19098029e995eb34e1c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johel=20Ernesto=20Guerrero=20Pe=C3=B1a?= Date: Sat, 25 Nov 2017 19:04:08 -0400 Subject: [PATCH 152/168] [unord.req, fs.path.io] Fix "Effects: Equivalent to" styles (#1806) --- source/containers.tex | 6 +++--- source/iostreams.tex | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/containers.tex b/source/containers.tex index 6042777ef6..51e38e8f0f 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -2509,7 +2509,7 @@ & \requires\ If \tcode{t} is a non-const rvalue expression, \tcode{value_type} shall be \tcode{MoveInsertable} into \tcode{X}; otherwise, \tcode{value_type} shall be \tcode{CopyInsertable} into \tcode{X}.\br - \effects\ Equivalent to a.insert(t). Return value is an iterator pointing + \effects Equivalent to \tcode{a.insert(t)}. Return value is an iterator pointing to the element with the key equivalent to that of \tcode{t}. The iterator \tcode{p} is a hint pointing to where the search should start. Implementations are permitted to ignore the hint.% @@ -2521,8 +2521,8 @@ \tcode{a.insert(i, j)} & \tcode{void} & \requires\ \tcode{value_type} shall be \tcode{EmplaceConstructible} into \tcode{X} from \tcode{*i}.\br - \requires \tcode{i} and \tcode{j} are not iterators in \tcode{a}. - Equivalent to \tcode{a.insert(t)} for each element in \tcode{[i,j)}.% + \requires \tcode{i} and \tcode{j} are not iterators in \tcode{a}.\br + \effects Equivalent to \tcode{a.insert(t)} for each element in \tcode{[i,j)}.% \indextext{unordered associative containers!\idxcode{insert}}% \indextext{\idxcode{insert}!unordered associative containers}% & Average case \bigoh{N}, where $N$ is \tcode{distance(i, j)}. diff --git a/source/iostreams.tex b/source/iostreams.tex index 930e0f9547..b715c12c8b 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -12702,7 +12702,7 @@ \begin{itemdescr} \pnum -\effects Equivalent to: \tcode{os << quoted(p.string());} +\effects Equivalent to \tcode{os << quoted(p.string())}. \begin{note} The \tcode{quoted} function is described in~\ref{quoted.manip}. \end{note} \pnum From 4764fc9a512107979178f71e48c5402561d298f8 Mon Sep 17 00:00:00 2001 From: Eelis Date: Sun, 26 Nov 2017 00:12:09 +0100 Subject: [PATCH 153/168] Remove \tilde in favour of \~. (#1851) --- source/basic.tex | 2 +- source/declarations.tex | 2 +- source/expressions.tex | 24 ++++++++++++------------ source/lex.tex | 2 +- source/macros.tex | 2 -- source/special.tex | 2 +- 6 files changed, 16 insertions(+), 18 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index ba73eee583..364db1091f 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -1775,7 +1775,7 @@ \grammarterm{qualified-id} of the form: \begin{ncbnf} -nested-name-specifier\opt{} class-name \terminal{::} \terminal{\tilde} class-name +nested-name-specifier\opt{} class-name \terminal{::} \terminal{\~} class-name \end{ncbnf} the second \grammarterm{class-name} is looked up in the same scope as the diff --git a/source/declarations.tex b/source/declarations.tex index a2626c1ed4..36274c343c 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1442,7 +1442,7 @@ -> void; auto g() -> void { f(42); // OK: calls \#2. (\#1 is not a viable candidate: type deduction - // fails\iref{temp.deduct} because \tcode{A::\tilde{}A()} is implicitly used in its + // fails\iref{temp.deduct} because \tcode{A::\~{}A()} is implicitly used in its // \grammarterm{decltype-specifier}) } template auto q(T) diff --git a/source/expressions.tex b/source/expressions.tex index 746cd94e9a..9040a85a88 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -671,8 +671,8 @@ operator-function-id\br conversion-function-id\br literal-operator-id\br - \terminal{\tilde} class-name\br - \terminal{\tilde} decltype-specifier\br + \terminal{\~} class-name\br + \terminal{\~} decltype-specifier\br template-id \end{bnf} @@ -686,7 +686,7 @@ \grammarterm{literal-operator-id}{s}, see~\ref{over.literal}; for \grammarterm{template-id}{s}, see~\ref{temp.names}. A \grammarterm{class-name} or \grammarterm{decltype-specifier} -prefixed by \tcode{\tilde} denotes a destructor; see~\ref{class.dtor}. +prefixed by \tcode{\~} denotes a destructor; see~\ref{class.dtor}. Within the definition of a non-static member function, an \grammarterm{identifier} that names a non-static member is transformed to a class member access expression~(\ref{class.mfct.non-static}). @@ -777,10 +777,10 @@ point in its potential scope\iref{basic.scope.class}. \end{note} Where -\grammarterm{class-name} \tcode{::\tilde}~\grammarterm{class-name} is used, +\grammarterm{class-name} \tcode{::\~}~\grammarterm{class-name} is used, the two \grammarterm{class-name}{s} shall refer to the same class; this notation names the destructor\iref{class.dtor}. -The form \tcode{\tilde}~\grammarterm{decltype-specifier} also denotes the destructor, +The form \tcode{\~}~\grammarterm{decltype-specifier} also denotes the destructor, but it shall not be used as the \grammarterm{unqualified-id} in a \grammarterm{qualified-id}. \begin{note} A \grammarterm{typedef-name} that names a class is a @@ -2107,10 +2107,10 @@ \begin{bnf} \nontermdef{pseudo-destructor-name}\br - nested-name-specifier\opt{} type-name \terminal{::\,\tilde} type-name\br - nested-name-specifier \terminal{template} simple-template-id \terminal{::\,\tilde} type-name\br - \terminal{\tilde} type-name\br - \terminal{\tilde} decltype-specifier + nested-name-specifier\opt{} type-name \terminal{::\,\~} type-name\br + nested-name-specifier \terminal{template} simple-template-id \terminal{::\,\~} type-name\br + \terminal{\~} type-name\br + \terminal{\~} decltype-specifier \end{bnf} \pnum @@ -2444,7 +2444,7 @@ the form \begin{ncbnf} -nested-name-specifier\opt{} type-name \terminal{::\,\tilde} type-name +nested-name-specifier\opt{} type-name \terminal{::\,\~} type-name \end{ncbnf} shall designate the same scalar type (ignoring cv-qualification). @@ -3385,13 +3385,13 @@ \indextext{operator!logical negation}% \indextext{\idxcode{"!}|see{operator, logical negation}}% \indextext{operator!ones' complement}% -\indextext{~@\tcode{\tilde}|see{operator, ones' complement}}% +\indextext{~@\tcode{\~}|see{operator, ones' complement}}% \indextext{operator!increment}% \indextext{operator!decrement}% % \begin{bnf} \nontermdef{unary-operator} \textnormal{one of}\br - \terminal{* \& + - ! \tilde} + \terminal{* \& + - ! \~} \end{bnf} \rSec3[expr.unary.op]{Unary operators} diff --git a/source/lex.tex b/source/lex.tex index 698433cc9a..674fafa31f 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -796,7 +796,7 @@ \nontermdef{preprocessing-op-or-punc} \textnormal{one of}\br \>\{ \>\} \>[ \>] \>\# \>\#\# \>( \>)\br \><: \>:> \><\% \>\%> \>\%: \>\%:\%: \>; \>: \>.{..}\br -\>new \>delete \>? \>:: \>. \>.* \>-> \>->* \>\tilde\br +\>new \>delete \>? \>:: \>. \>.* \>-> \>->* \>\~\br \>! \>+ \>- \>* \>/ \>\% \>\caret \>\& \>|\br \>= \>+= \>-= \>*= \>/= \>\%= \>\caret= \>\&= \>|=\br \>== \>!= \>< \>> \><= \>>= \><=> \>\&\& \>||\br diff --git a/source/macros.tex b/source/macros.tex index e178f24bf5..f1df68ec67 100644 --- a/source/macros.tex +++ b/source/macros.tex @@ -199,8 +199,6 @@ \newcommand{\bigoh}[1]{\ensuremath{\mathscr{O}(#1)}} % Make all tildes a little larger to avoid visual similarity with hyphens. -% FIXME: Remove \tilde in favour of \~. -\renewcommand{\tilde}{\textasciitilde} \renewcommand{\~}{\textasciitilde} \let\OldTextAsciiTilde\textasciitilde \renewcommand{\textasciitilde}{\protect\raisebox{-0.17ex}{\larger\OldTextAsciiTilde}} diff --git a/source/special.tex b/source/special.tex index 73cca33e55..bbc93bd913 100644 --- a/source/special.tex +++ b/source/special.tex @@ -4,7 +4,7 @@ \gramSec[gram.special]{Special member functions} \indextext{\idxcode{X(X\&)}|see{constructor, copy}}% -\indextext{~@\tcode{\tilde}|see{destructor}}% +\indextext{~@\tcode{\~}|see{destructor}}% \indextext{assignment!copy|see{assignment operator, copy}}% \indextext{assignment!move|see{assignment operator, move}}% \indextext{implicitly-declared default constructor|see{constructor, default}} From 1d467a8a06cabd314e250a04ca9a4c81591d035a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johel=20Ernesto=20Guerrero=20Pe=C3=B1a?= Date: Thu, 23 Nov 2017 15:31:45 -0400 Subject: [PATCH 154/168] [func.require] Clarify which assignment operators --- source/utilities.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/utilities.tex b/source/utilities.tex index bf706ac55f..5793c1449d 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -13197,8 +13197,8 @@ and lvalue arguments are delivered as lvalue references. A \defn{simple call wrapper} is a forwarding call wrapper that is \tcode{CopyConstructible} and \tcode{CopyAssignable} and -whose copy constructor, move constructor, and assignment operator -do not throw exceptions. +whose copy constructor, move constructor, copy assignment operator, +and move assignment operator do not throw exceptions. \begin{note} In a typical implementation forwarding call wrappers have an overloaded function call From d1125303456c2305a72baebbb51d80151722f8ab Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Thu, 23 Nov 2017 14:33:32 +0000 Subject: [PATCH 155/168] [basic.life],[mem.res.private],[mem.res.pool.mem],[mem.res.monotonic.buffer] fix cross-references --- source/basic.tex | 4 ++-- source/utilities.tex | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index 364db1091f..387be2db84 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -2877,7 +2877,7 @@ For an object under construction or destruction, see~\ref{class.cdtor}. Otherwise, such a pointer refers to allocated -storage\iref{basic.stc.dynamic.deallocation}, and using the pointer as +storage\iref{basic.stc.dynamic.allocation}, and using the pointer as if the pointer were of type \tcode{void*}, is well-defined. Indirection through such a pointer is permitted but the resulting lvalue may only be used in limited ways, as described below. The @@ -2943,7 +2943,7 @@ For an object under construction or destruction, see~\ref{class.cdtor}. Otherwise, such a glvalue refers to -allocated storage\iref{basic.stc.dynamic.deallocation}, and using the +allocated storage\iref{basic.stc.dynamic.allocation}, and using the properties of the glvalue that do not depend on its value is well-defined. The program has undefined behavior if: \begin{itemize} diff --git a/source/utilities.tex b/source/utilities.tex index 5793c1449d..54978813f0 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -11245,7 +11245,7 @@ \pnum \returns -A derived class shall implement this function to return a pointer to allocated storage\iref{basic.stc.dynamic.deallocation} with a size of at least \tcode{bytes}. +A derived class shall implement this function to return a pointer to allocated storage\iref{basic.stc.dynamic.allocation} with a size of at least \tcode{bytes}. The returned storage is aligned to the specified alignment, if such alignment is supported\iref{basic.align}; otherwise it is aligned to \tcode{max_align}. @@ -12052,7 +12052,7 @@ \begin{itemdescr} \pnum \returns -A pointer to allocated storage\iref{basic.stc.dynamic.deallocation} +A pointer to allocated storage\iref{basic.stc.dynamic.allocation} with a size of at least \tcode{bytes}. The size and alignment of the allocated memory shall meet the requirements for a class derived from \tcode{memory_resource}\iref{mem.res}. @@ -12276,7 +12276,7 @@ \begin{itemdescr} \pnum \returns -A pointer to allocated storage\iref{basic.stc.dynamic.deallocation} +A pointer to allocated storage\iref{basic.stc.dynamic.allocation} with a size of at least \tcode{bytes}. The size and alignment of the allocated memory shall meet the requirements for a class derived from \tcode{memory_resource}\iref{mem.res}. From bd2ce5c2d4ec26a5c412160ce5983149c510a131 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 21 Nov 2017 23:35:02 +0100 Subject: [PATCH 156/168] Create a new index for library headers and remove them from the index of library names. --- source/Makefile | 1 + source/back.tex | 9 +++++++++ source/macros.tex | 2 +- source/std.tex | 1 + 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/source/Makefile b/source/Makefile index a3f9033b4b..faa325f681 100644 --- a/source/Makefile +++ b/source/Makefile @@ -38,6 +38,7 @@ reindex: $(STDPDF) $(STDPDF) makeindex generalindex + makeindex headerindex makeindex libraryindex makeindex grammarindex makeindex impldefindex diff --git a/source/back.tex b/source/back.tex index 55b85bafdc..8d57a19ecb 100644 --- a/source/back.tex +++ b/source/back.tex @@ -64,6 +64,15 @@ \chapter{Bibliography} \printindex[grammarindex] } +\clearpage +\renewcommand{\preindexhook}{} +\renewcommand{\indexname}{Index of library headers} +\renewcommand{\leftmark}{\indexname} +{ +\raggedright +\printindex[headerindex] +} + \clearpage \renewcommand{\preindexhook}{} \renewcommand{\indexname}{Index of library names} diff --git a/source/macros.tex b/source/macros.tex index f1df68ec67..ded339958f 100644 --- a/source/macros.tex +++ b/source/macros.tex @@ -113,7 +113,7 @@ % locations \newcommand{\indextext}[1]{\index[generalindex]{#1}} \newcommand{\indexlibrary}[1]{\index[libraryindex]{#1}} -\newcommand{\indexhdr}[1]{\indextext{\idxhdr{#1}}\indexlibrary{\idxhdr{#1}}} +\newcommand{\indexhdr}[1]{\indextext{\idxhdr{#1}}\index[headerindex]{\idxhdr{#1}}} \newcommand{\indexgram}[1]{\index[grammarindex]{#1}} % Collation helper: When building an index key, replace all macro definitions diff --git a/source/std.tex b/source/std.tex index dbcf8942da..1e6106fe99 100644 --- a/source/std.tex +++ b/source/std.tex @@ -57,6 +57,7 @@ \input{tables} \makeindex[generalindex] +\makeindex[headerindex] \makeindex[libraryindex] \makeindex[grammarindex] \makeindex[impldefindex] From e2457df32a6ee70417681de10be78eb815a0b22f Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Mon, 20 Nov 2017 10:23:18 +0100 Subject: [PATCH 157/168] [complex.numbers] Use \xref for references to the C standard. --- source/numerics.tex | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/source/numerics.tex b/source/numerics.tex index 90542c29da..30f7aa42f8 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -991,7 +991,8 @@ \pnum \remarks -Behaves the same as the C function \tcode{cproj}, defined in 7.3.9.4. +Behaves the same as the C function \tcode{cproj}. +\xref ISO C 7.3.9.5 \end{itemdescr} \indexlibrary{\idxcode{polar}!\idxcode{complex}}% @@ -1027,8 +1028,8 @@ \pnum \remarks -Behaves the same as C function \tcode{cacos}, -defined in 7.3.5.1. +Behaves the same as the C function \tcode{cacos}. +\xref ISO C 7.3.5.1 \end{itemdescr} \indexlibrary{\idxcode{asin}!\idxcode{complex}}% @@ -1043,8 +1044,8 @@ \pnum \remarks -Behaves the same as C function \tcode{casin}, -defined in 7.3.5.2. +Behaves the same as the C function \tcode{casin}. +\xref ISO C 7.3.5.2 \end{itemdescr} \indexlibrary{\idxcode{atan}!\idxcode{complex}}% @@ -1059,8 +1060,8 @@ \pnum \remarks -Behaves the same as C function \tcode{catan}, -defined in 7.3.5.3. +Behaves the same as the C function \tcode{catan}. +\xref ISO C 7.3.5.3 \end{itemdescr} \indexlibrary{\idxcode{acosh}!\idxcode{complex}}% @@ -1075,8 +1076,8 @@ \pnum \remarks -Behaves the same as C function \tcode{cacosh}, -defined in 7.3.6.1. +Behaves the same as the C function \tcode{cacosh}. +\xref ISO C 7.3.6.1 \end{itemdescr} \indexlibrary{\idxcode{asinh}!\idxcode{complex}}% @@ -1091,8 +1092,8 @@ \pnum \remarks -Behaves the same as C function \tcode{casinh}, -defined in 7.3.6.2. +Behaves the same as the C function \tcode{casinh}. +\xref ISO C 7.3.6.2 \end{itemdescr} \indexlibrary{\idxcode{atanh}!\idxcode{complex}}% @@ -1107,8 +1108,8 @@ \pnum \remarks -Behaves the same as C function \tcode{catanh}, -defined in 7.3.6.3. +Behaves the same as the C function \tcode{catanh}. +\xref ISO C 7.3.6.3 \end{itemdescr} \indexlibrary{\idxcode{cos}!\idxcode{complex}}% From d29bd8c6591fe74b095e5bd277f986462ba40b24 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Sun, 26 Nov 2017 18:36:42 +0100 Subject: [PATCH 158/168] [fs.op.funcs] Separate effects from returns. (#1848) --- source/iostreams.tex | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex index b715c12c8b..b87012bc1a 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -14956,13 +14956,15 @@ \end{itemdecl} \begin{itemdescr} +\pnum +\effects +If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. + \pnum \returns \begin{itemize} \item - If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. -\item - Otherwise, if \tcode{is_regular_file(p)}, the size in bytes of the file + 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} structure member \tcode{st_size} obtained as if by POSIX \tcode{stat()}. \item @@ -15751,8 +15753,14 @@ \begin{itemdescr} \pnum -\returns An unspecified directory path suitable for temporary files. An error shall be reported if -\tcode{exists(p)} is \tcode{false} or \tcode{is_directory(p)} is \tcode{false}, where \tcode{p} is the path to be returned. +Let \tcode{p} be an unspecified directory path suitable for temporary files. + +\pnum +\effects If \tcode{exists(p)} is \tcode{false} or \tcode{is_directory(p)} is + \tcode{false}, an error is reported\iref{fs.err.report}. + +\pnum +\returns The path \tcode{p}. The signature with argument \tcode{ec} returns \tcode{path()} if an error occurs. From 0e003d82fc1f30d3cb8fa3dfc1a429910784206c Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Tue, 7 Feb 2017 10:43:07 +0100 Subject: [PATCH 159/168] Use \opt{arg} instead of suffix \opt{} --- source/access.tex | 2 +- source/basic.tex | 10 ++--- source/classes.tex | 22 +++++----- source/declarations.tex | 94 ++++++++++++++++++++--------------------- source/declarators.tex | 92 ++++++++++++++++++++-------------------- source/derived.tex | 12 +++--- source/exceptions.tex | 8 ++-- source/expressions.tex | 68 ++++++++++++++--------------- source/intro.tex | 4 +- source/iostreams.tex | 10 ++--- source/lex.tex | 58 ++++++++++++------------- source/macros.tex | 4 +- source/overloading.tex | 8 ++-- source/preprocessor.tex | 40 +++++++++--------- source/special.tex | 14 +++--- source/statements.tex | 54 +++++++++++------------ source/templates.tex | 52 +++++++++++------------ source/utilities.tex | 2 +- 18 files changed, 278 insertions(+), 276 deletions(-) diff --git a/source/access.tex b/source/access.tex index 8545a00e6d..c94a55d832 100644 --- a/source/access.tex +++ b/source/access.tex @@ -195,7 +195,7 @@ (\ref{class.derived}): \begin{ncbnftab} -access-specifier \terminal{:} member-specification\opt{} +access-specifier \terminal{:} \opt{member-specification} \end{ncbnftab} An diff --git a/source/basic.tex b/source/basic.tex index 387be2db84..00c7ede9cc 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -776,7 +776,7 @@ \item for a declaration of the form \begin{ncbnf} -class-key attribute-specifier-seq\opt{} identifier \terminal{;} +class-key \opt{attribute-specifier-seq} identifier \terminal{;} \end{ncbnf} the \grammarterm{identifier} is declared to be a @@ -1775,7 +1775,7 @@ \grammarterm{qualified-id} of the form: \begin{ncbnf} -nested-name-specifier\opt{} class-name \terminal{::} \terminal{\~} class-name +\opt{nested-name-specifier} class-name \terminal{::} \terminal{\~} class-name \end{ncbnf} the second \grammarterm{class-name} is looked up in the same scope as the @@ -2135,7 +2135,7 @@ following form: \begin{ncbnf} -class-key attribute-specifier-seq\opt{} identifier \terminal{;} +class-key \opt{attribute-specifier-seq} identifier \terminal{;} \end{ncbnf} the \grammarterm{identifier} is looked up according @@ -2150,7 +2150,7 @@ form: \begin{ncbnf} -class-key attribute-specifier-seq\opt{} identifier \terminal{;} +class-key \opt{attribute-specifier-seq} identifier \terminal{;} \end{ncbnf} the \grammarterm{elaborated-type-specifier} is a declaration that @@ -2316,7 +2316,7 @@ \begin{bnf} \nontermdef{translation-unit}\br - declaration-seq\opt{} + \opt{declaration-seq} \end{bnf} \pnum diff --git a/source/classes.tex b/source/classes.tex index a7e5ce4ed9..6501d65396 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -29,18 +29,18 @@ \begin{bnf} \nontermdef{class-specifier}\br - class-head \terminal{\{} member-specification\opt{} \terminal{\}} + class-head \terminal{\{} \opt{member-specification} \terminal{\}} \end{bnf} \begin{bnf} \nontermdef{class-head}\br - class-key attribute-specifier-seq\opt{} class-head-name class-virt-specifier\opt{} base-clause\opt{}\br - class-key attribute-specifier-seq\opt{} base-clause\opt{} + class-key \opt{attribute-specifier-seq} class-head-name \opt{class-virt-specifier} \opt{base-clause}\br + class-key \opt{attribute-specifier-seq} \opt{base-clause} \end{bnf} \begin{bnf} \nontermdef{class-head-name}\br - nested-name-specifier\opt{} class-name + \opt{nested-name-specifier} class-name \end{bnf} \begin{bnf} @@ -431,13 +431,13 @@ \begin{bnf} \nontermdef{member-specification}\br - member-declaration member-specification\opt{}\br - access-specifier \terminal{:} member-specification\opt{} + member-declaration \opt{member-specification}\br + access-specifier \terminal{:} \opt{member-specification} \end{bnf} \begin{bnf} \nontermdef{member-declaration}\br - attribute-specifier-seq\opt{} decl-specifier-seq\opt{} member-declarator-list\opt{} \terminal{;}\br + \opt{attribute-specifier-seq} \opt{decl-specifier-seq} \opt{member-declarator-list} \terminal{;}\br function-definition\br using-declaration\br static_assert-declaration\br @@ -455,10 +455,10 @@ \begin{bnf} \nontermdef{member-declarator}\br - declarator virt-specifier-seq\opt{} pure-specifier\opt{}\br + declarator \opt{virt-specifier-seq} \opt{pure-specifier}\br declarator requires-clause\br - declarator brace-or-equal-initializer\opt{}\br - identifier\opt{} attribute-specifier-seq\opt{} \terminal{:} constant-expression brace-or-equal-initializer\opt{} + declarator \opt{brace-or-equal-initializer}\br + \opt{identifier} \opt{attribute-specifier-seq} \terminal{:} constant-expression \opt{brace-or-equal-initializer} \end{bnf} \begin{bnf} @@ -1304,7 +1304,7 @@ A \grammarterm{member-declarator} of the form \begin{ncbnftab} -identifier\opt{} attribute-specifier-seq\opt{} \terminal{:} constant-expression brace-or-equal-initializer\opt{} +\opt{identifier} \opt{attribute-specifier-seq} \terminal{:} constant-expression \opt{brace-or-equal-initializer} \end{ncbnftab} \indextext{\idxcode{:}!bit-field declaration}% diff --git a/source/declarations.tex b/source/declarations.tex index 36274c343c..d4375702ae 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -45,19 +45,19 @@ \begin{bnf} \nontermdef{nodeclspec-function-declaration}\br - attribute-specifier-seq\opt{} declarator \terminal{;} + \opt{attribute-specifier-seq} declarator \terminal{;} \end{bnf} \begin{bnf} \nontermdef{alias-declaration}\br - \terminal{using} identifier attribute-specifier-seq\opt{} \terminal{=} defining-type-id \terminal{;} + \terminal{using} identifier \opt{attribute-specifier-seq} \terminal{=} defining-type-id \terminal{;} \end{bnf} \begin{bnf} \nontermdef{simple-declaration}\br - decl-specifier-seq init-declarator-list\opt{} \terminal{;}\br + decl-specifier-seq \opt{init-declarator-list} \terminal{;}\br attribute-specifier-seq decl-specifier-seq init-declarator-list \terminal{;}\br - attribute-specifier-seq\opt{} decl-specifier-seq ref-qualifier\opt{} \terminal{[} identifier-list \terminal{]} initializer \terminal{;} + \opt{attribute-specifier-seq} decl-specifier-seq \opt{ref-qualifier} \terminal{[} identifier-list \terminal{]} initializer \terminal{;} \end{bnf} \begin{bnf} @@ -93,7 +93,7 @@ \grammarterm{nodeclspec-function-declaration} of the form \begin{ncsimplebnf} -attribute-specifier-seq\opt{} decl-specifier-seq\opt{} init-declarator-list\opt{} \terminal{;} +\opt{attribute-specifier-seq} \opt{decl-specifier-seq} \opt{init-declarator-list} \terminal{;} \end{ncsimplebnf} is divided into three parts. @@ -259,7 +259,7 @@ \begin{bnf} \nontermdef{decl-specifier-seq}\br - decl-specifier attribute-specifier-seq\opt{}\br + decl-specifier \opt{attribute-specifier-seq}\br decl-specifier decl-specifier-seq \end{bnf} @@ -1040,7 +1040,7 @@ \begin{bnf} \nontermdef{type-specifier-seq}\br - type-specifier attribute-specifier-seq\opt{}\br + type-specifier \opt{attribute-specifier-seq}\br type-specifier type-specifier-seq \end{bnf} @@ -1053,7 +1053,7 @@ \begin{bnf} \nontermdef{defining-type-specifier-seq}\br - defining-type-specifier attribute-specifier-seq\opt{}\br + defining-type-specifier \opt{attribute-specifier-seq}\br defining-type-specifier defining-type-specifier-seq \end{bnf} @@ -1230,9 +1230,9 @@ \begin{bnf} \nontermdef{simple-type-specifier}\br - nested-name-specifier\opt{} type-name\br + \opt{nested-name-specifier} type-name\br nested-name-specifier \terminal{template} simple-template-id\br - nested-name-specifier\opt{} template-name\br + \opt{nested-name-specifier} template-name\br \terminal{char}\br \terminal{char16_t}\br \terminal{char32_t}\br @@ -1287,7 +1287,7 @@ a type to be deduced\iref{dcl.spec.auto}. \indextext{deduction!class template arguments}% A \grammarterm{type-specifier} of the form -\tcode{typename}\opt{} \grammarterm{nested-name-specifier}\opt{} \grammarterm{template-name} +\opt{\tcode{typename}} \opt{\grammarterm{nested-name-specifier}} \grammarterm{template-name} is a placeholder for a deduced class type\iref{dcl.type.class.deduct}. The \grammarterm{template-name} shall name a class template @@ -1464,10 +1464,10 @@ \begin{bnf} \nontermdef{elaborated-type-specifier}\br - class-key attribute-specifier-seq\opt{} nested-name-specifier\opt{} identifier\br + class-key \opt{attribute-specifier-seq} \opt{nested-name-specifier} identifier\br class-key simple-template-id\br - class-key nested-name-specifier \terminal{template}\opt{} simple-template-id\br - \terminal{enum} nested-name-specifier\opt{} identifier + class-key nested-name-specifier \opt{\terminal{template}} simple-template-id\br + \terminal{enum} \opt{nested-name-specifier} identifier \end{bnf} \pnum @@ -1482,11 +1482,11 @@ forms: \begin{ncsimplebnf} -class-key attribute-specifier-seq\opt{} identifier \terminal{;}\br -\terminal{friend} class-key \terminal{::\opt{}} identifier \terminal{;}\br -\terminal{friend} class-key \terminal{::\opt{}} simple-template-id \terminal{;}\br +class-key \opt{attribute-specifier-seq} identifier \terminal{;}\br +\terminal{friend} class-key \terminal{\opt{::}} identifier \terminal{;}\br +\terminal{friend} class-key \terminal{\opt{::}} simple-template-id \terminal{;}\br \terminal{friend} class-key nested-name-specifier identifier \terminal{;}\br -\terminal{friend} class-key nested-name-specifier \terminal{template\opt{}} simple-template-id \terminal{;} +\terminal{friend} class-key nested-name-specifier \terminal{\opt{template}} simple-template-id \terminal{;} \end{ncsimplebnf} In the first case, the \grammarterm{attribute-specifier-seq}, if any, appertains @@ -1911,23 +1911,23 @@ \begin{bnf} \nontermdef{enum-specifier}\br - enum-head \terminal{\{} enumerator-list\opt{} \terminal{\}}\br + enum-head \terminal{\{} \opt{enumerator-list} \terminal{\}}\br enum-head \terminal{\{} enumerator-list \terminal{, \}} \end{bnf} \begin{bnf} \nontermdef{enum-head}\br - enum-key attribute-specifier-seq\opt{} enum-head-name\opt{} enum-base\opt{} + enum-key \opt{attribute-specifier-seq} \opt{enum-head-name} \opt{enum-base} \end{bnf} \begin{bnf} \nontermdef{enum-head-name}\br - nested-name-specifier\opt{} identifier + \opt{nested-name-specifier} identifier \end{bnf} \begin{bnf} \nontermdef{opaque-enum-declaration}\br - enum-key attribute-specifier-seq\opt{} nested-name-specifier\opt{} identifier enum-base\opt{} \terminal{;} + enum-key \opt{attribute-specifier-seq} \opt{nested-name-specifier} identifier \opt{enum-base} \terminal{;} \end{bnf} \begin{bnf} @@ -1956,7 +1956,7 @@ \begin{bnf} \nontermdef{enumerator}\br - identifier attribute-specifier-seq\opt{} + identifier \opt{attribute-specifier-seq} \end{bnf} The optional \grammarterm{attribute-specifier-seq} in the \grammarterm{enum-head} and @@ -1964,7 +1964,7 @@ in that \grammarterm{attribute-specifier-seq} are thereafter considered attributes of the enumeration whenever it is named. A \tcode{:} following -``\tcode{enum} \grammarterm{nested-name-specifier}\opt{} \grammarterm{identifier}'' +``\tcode{enum} \opt{\grammarterm{nested-name-specifier}} \grammarterm{identifier}'' within the \grammarterm{decl-specifier-seq} of a \grammarterm{member-declaration} is parsed as part of an \grammarterm{enum-base}. \begin{note} This resolves a potential ambiguity between the declaration of an enumeration @@ -2265,12 +2265,12 @@ \begin{bnf} \nontermdef{named-namespace-definition}\br - \terminal{inline\opt{}} \terminal{namespace} attribute-specifier-seq\opt{} identifier \terminal{\{} namespace-body \terminal{\}} + \terminal{\opt{inline}} \terminal{namespace} \opt{attribute-specifier-seq} identifier \terminal{\{} namespace-body \terminal{\}} \end{bnf} \begin{bnf} \nontermdef{unnamed-namespace-definition}\br - \terminal{inline\opt{}} \terminal{namespace} attribute-specifier-seq\opt{} \terminal{\{} namespace-body \terminal{\}} + \terminal{\opt{inline}} \terminal{namespace} \opt{attribute-specifier-seq} \terminal{\{} namespace-body \terminal{\}} \end{bnf} \begin{bnf} @@ -2286,7 +2286,7 @@ \begin{bnf} \nontermdef{namespace-body}\br - declaration-seq\opt{} + \opt{declaration-seq} \end{bnf} \pnum @@ -2423,7 +2423,7 @@ replaced by \begin{ncsimplebnf} -\terminal{inline}\opt{} \terminal{namespace} \terminal{\uniquens} \terminal{\{ /* empty body */ \}}\br +\opt{\terminal{inline}} \terminal{namespace} \terminal{\uniquens} \terminal{\{ /* empty body */ \}}\br \terminal{using namespace} \terminal{\uniquens} \terminal{;}\br \terminal{namespace} \terminal{\uniquens} \terminal{\{} namespace-body \terminal{\}} \end{ncsimplebnf} @@ -2468,7 +2468,7 @@ whose \grammarterm{class-head-name}\iref{class} or \grammarterm{enum-head-name}\iref{dcl.enum} is an \grammarterm{identifier}, or whose \grammarterm{elaborated-type-specifier} is of the form \grammarterm{class-key} -\grammarterm{attribute-specifier-seq}\opt{} \grammarterm{identifier}\iref{dcl.type.elab}, or +\opt{\grammarterm{attribute-specifier-seq}} \grammarterm{identifier}\iref{dcl.type.elab}, or that is an \grammarterm{opaque-enum-declaration}, declares (or redeclares) its \grammarterm{unqualified-id} or \grammarterm{identifier} as a member of \tcode{N}. @@ -2597,7 +2597,7 @@ \begin{bnf} \nontermdef{qualified-namespace-specifier}\br - nested-name-specifier\opt{} namespace-name + \opt{nested-name-specifier} namespace-name \end{bnf} \pnum @@ -2637,13 +2637,13 @@ \begin{bnf} \nontermdef{using-declarator-list}\br - using-declarator \terminal{...}\opt{}\br - using-declarator-list \terminal{,} using-declarator \terminal{...}\opt{} + using-declarator \opt{\terminal{...}}\br + using-declarator-list \terminal{,} using-declarator \opt{\terminal{...}} \end{bnf} \begin{bnf} \nontermdef{using-declarator}\br - \terminal{typename\opt{}} nested-name-specifier unqualified-id + \terminal{\opt{typename}} nested-name-specifier unqualified-id \end{bnf} \pnum @@ -3117,7 +3117,7 @@ \begin{bnf} \nontermdef{using-directive}\br - attribute-specifier-seq\opt{} \terminal{using namespace} nested-name-specifier\opt{} namespace-name \terminal{;} + \opt{attribute-specifier-seq} \terminal{using namespace} \opt{nested-name-specifier} namespace-name \terminal{;} \end{bnf} \pnum @@ -3333,7 +3333,7 @@ \begin{bnf} \nontermdef{asm-definition}\br - attribute-specifier-seq\opt{} \terminal{asm (} string-literal \terminal{) ;} + \opt{attribute-specifier-seq} \terminal{asm (} string-literal \terminal{) ;} \end{bnf} The \tcode{asm} declaration is conditionally-supported; its meaning is @@ -3372,7 +3372,7 @@ % \begin{bnf} \nontermdef{linkage-specification}\br - \terminal{extern} string-literal \terminal{\{} declaration-seq\opt{} \terminal{\}}\br + \terminal{extern} string-literal \terminal{\{} \opt{declaration-seq} \terminal{\}}\br \terminal{extern} string-literal declaration \end{bnf} @@ -3592,19 +3592,19 @@ \begin{bnf} \nontermdef{attribute-specifier-seq}\br - attribute-specifier-seq\opt{} attribute-specifier + \opt{attribute-specifier-seq} attribute-specifier \end{bnf} \begin{bnf} \nontermdef{attribute-specifier}\br - \terminal{[} \terminal{[} attribute-using-prefix\opt{} attribute-list \terminal{]} \terminal{]}\br + \terminal{[} \terminal{[} \opt{attribute-using-prefix} attribute-list \terminal{]} \terminal{]}\br alignment-specifier \end{bnf} \begin{bnf} \nontermdef{alignment-specifier}\br - \terminal{alignas (} type-id \terminal{...}\opt{} \terminal{)}\br - \terminal{alignas (} constant-expression \terminal{...}\opt{} \terminal{)} + \terminal{alignas (} type-id \opt{\terminal{...}} \terminal{)}\br + \terminal{alignas (} constant-expression \opt{\terminal{...}} \terminal{)} \end{bnf} \begin{bnf} @@ -3614,15 +3614,15 @@ \begin{bnf} \nontermdef{attribute-list}\br - attribute\opt{}\br - attribute-list \terminal{,} attribute\opt{}\br + \opt{attribute}\br + attribute-list \terminal{,} \opt{attribute}\br attribute \terminal{...}\br attribute-list \terminal{,} attribute \terminal{...} \end{bnf} \begin{bnf} \nontermdef{attribute}\br - attribute-token attribute-argument-clause\opt{} + attribute-token \opt{attribute-argument-clause} \end{bnf} \begin{bnf} @@ -3643,7 +3643,7 @@ \begin{bnf} \nontermdef{attribute-argument-clause}\br - \terminal{(} balanced-token-seq\opt{} \terminal{)} + \terminal{(} \opt{balanced-token-seq} \terminal{)} \end{bnf} \begin{bnf} @@ -3654,9 +3654,9 @@ \begin{bnf} \nontermdef{balanced-token}\br - \terminal{(} balanced-token-seq\opt{} \terminal{)}\br - \terminal{[} balanced-token-seq\opt{} \terminal{]}\br - \terminal{\{} balanced-token-seq\opt{} \terminal{\}}\br + \terminal{(} \opt{balanced-token-seq} \terminal{)}\br + \terminal{[} \opt{balanced-token-seq} \terminal{]}\br + \terminal{\{} \opt{balanced-token-seq} \terminal{\}}\br \textnormal{any \grammarterm{token} other than a parenthesis, a bracket, or a brace} \end{bnf} diff --git a/source/declarators.tex b/source/declarators.tex index f49f160605..dfb448b639 100644 --- a/source/declarators.tex +++ b/source/declarators.tex @@ -27,7 +27,7 @@ \begin{bnf} \nontermdef{init-declarator}\br - declarator initializer\opt{}\br + declarator \opt{initializer}\br declarator requires-clause \end{bnf} @@ -139,16 +139,16 @@ \begin{bnf} \nontermdef{noptr-declarator}\br - declarator-id attribute-specifier-seq\opt{}\br + declarator-id \opt{attribute-specifier-seq}\br noptr-declarator parameters-and-qualifiers\br - noptr-declarator \terminal{[} constant-expression\opt{} \terminal{]} attribute-specifier-seq\opt{}\br + noptr-declarator \terminal{[} \opt{constant-expression} \terminal{]} \opt{attribute-specifier-seq}\br \terminal{(} ptr-declarator \terminal{)} \end{bnf} \begin{bnf} \nontermdef{parameters-and-qualifiers}\br - \terminal{(} parameter-declaration-clause \terminal{)} cv-qualifier-seq\opt{}\br -\hspace*{\bnfindentinc}ref-qualifier\opt{} noexcept-specifier\opt{} attribute-specifier-seq\opt{} + \terminal{(} parameter-declaration-clause \terminal{)} \opt{cv-qualifier-seq}\br +\hspace*{\bnfindentinc}\opt{ref-qualifier} \opt{noexcept-specifier} \opt{attribute-specifier-seq} \end{bnf} \begin{bnf} @@ -158,15 +158,15 @@ \begin{bnf} \nontermdef{ptr-operator}\br - \terminal{*} attribute-specifier-seq\opt{} cv-qualifier-seq\opt{}\br - \terminal{\&} attribute-specifier-seq\opt{}\br - \terminal{\&\&} attribute-specifier-seq\opt{}\br - nested-name-specifier \terminal{*} attribute-specifier-seq\opt{} cv-qualifier-seq\opt{} + \terminal{*} \opt{attribute-specifier-seq} \opt{cv-qualifier-seq}\br + \terminal{\&} \opt{attribute-specifier-seq}\br + \terminal{\&\&} \opt{attribute-specifier-seq}\br + nested-name-specifier \terminal{*} \opt{attribute-specifier-seq} \opt{cv-qualifier-seq} \end{bnf} \begin{bnf} \nontermdef{cv-qualifier-seq}\br - cv-qualifier cv-qualifier-seq\opt{} + cv-qualifier \opt{cv-qualifier-seq} \end{bnf} \begin{bnf} @@ -183,7 +183,7 @@ \begin{bnf} \nontermdef{declarator-id}\br - \terminal{...}\opt{} id-expression + \opt{\terminal{...}} id-expression \end{bnf} \rSec1[dcl.name]{Type names} @@ -206,31 +206,31 @@ \begin{bnf} \nontermdef{type-id}\br - type-specifier-seq abstract-declarator\opt{} + type-specifier-seq \opt{abstract-declarator} \end{bnf} \begin{bnf} \nontermdef{defining-type-id}\br - defining-type-specifier-seq abstract-declarator\opt{} + defining-type-specifier-seq \opt{abstract-declarator} \end{bnf} \begin{bnf} \nontermdef{abstract-declarator}\br ptr-abstract-declarator\br - noptr-abstract-declarator\opt{} parameters-and-qualifiers trailing-return-type\br + \opt{noptr-abstract-declarator} parameters-and-qualifiers trailing-return-type\br abstract-pack-declarator \end{bnf} \begin{bnf} \nontermdef{ptr-abstract-declarator}\br noptr-abstract-declarator\br - ptr-operator ptr-abstract-declarator\opt{} + ptr-operator \opt{ptr-abstract-declarator} \end{bnf} \begin{bnf} \nontermdef{noptr-abstract-declarator}\br - noptr-abstract-declarator\opt{} parameters-and-qualifiers\br - noptr-abstract-declarator\opt{} \terminal{[} constant-expression\opt{} \terminal{]} attribute-specifier-seq\opt{}\br + \opt{noptr-abstract-declarator} parameters-and-qualifiers\br + \opt{noptr-abstract-declarator} \terminal{[} \opt{constant-expression} \terminal{]} \opt{attribute-specifier-seq}\br \terminal{(} ptr-abstract-declarator \terminal{)} \end{bnf} @@ -243,7 +243,7 @@ \begin{bnf} \nontermdef{noptr-abstract-pack-declarator}\br noptr-abstract-pack-declarator parameters-and-qualifiers\br - noptr-abstract-pack-declarator \terminal{[} constant-expression\opt{} \terminal{]} attribute-specifier-seq\opt{}\br + noptr-abstract-pack-declarator \terminal{[} \opt{constant-expression} \terminal{]} \opt{attribute-specifier-seq}\br \terminal{...} \end{bnf} @@ -458,7 +458,7 @@ where \tcode{T} -is of the form \grammarterm{attribute-specifier-seq}\opt{} +is of the form \opt{\grammarterm{attribute-specifier-seq}} \grammarterm{decl-specifier-seq} and \tcode{D} @@ -499,7 +499,7 @@ \pnum In a declaration -\grammarterm{attribute-specifier-seq}\opt{} +\opt{\grammarterm{attribute-specifier-seq}} \tcode{T} \tcode{D} where @@ -544,7 +544,7 @@ has the form \begin{ncsimplebnf} -\terminal{*} attribute-specifier-seq\opt{} cv-qualifier-seq\opt{} \terminal{D1} +\terminal{*} \opt{attribute-specifier-seq} \opt{cv-qualifier-seq} \terminal{D1} \end{ncsimplebnf} and the type of the identifier in the declaration @@ -657,8 +657,8 @@ has either of the forms \begin{ncsimplebnf} -\terminal{\&} attribute-specifier-seq\opt{} \terminal{D1}\br -\terminal{\&\&} attribute-specifier-seq\opt{} \terminal{D1} +\terminal{\&} \opt{attribute-specifier-seq} \terminal{D1}\br +\terminal{\&\&} \opt{attribute-specifier-seq} \terminal{D1} \end{ncsimplebnf} and the type of the identifier in the declaration @@ -849,7 +849,7 @@ has the form \begin{ncsimplebnf} -nested-name-specifier \terminal{*} attribute-specifier-seq\opt{} cv-qualifier-seq\opt{} \terminal{D1} +nested-name-specifier \terminal{*} \opt{attribute-specifier-seq} \opt{cv-qualifier-seq} \terminal{D1} \end{ncsimplebnf} and the @@ -958,7 +958,7 @@ has the form \begin{ncsimplebnf} -\terminal{D1 [} constant-expression\opt{} \terminal{]} attribute-specifier-seq\opt{} +\terminal{D1 [} \opt{constant-expression} \terminal{]} \opt{attribute-specifier-seq} \end{ncsimplebnf} and the type of the identifier in the declaration @@ -1229,8 +1229,8 @@ \tcode{D} has the form \begin{ncsimplebnf} -\terminal{D1 (} parameter-declaration-clause \terminal{)} cv-qualifier-seq\opt{}\br -\hspace*{\bnfindentinc}ref-qualifier\opt{} noexcept-specifier\opt{} attribute-specifier-seq\opt{} +\terminal{D1 (} parameter-declaration-clause \terminal{)} \opt{cv-qualifier-seq}\br +\hspace*{\bnfindentinc}\opt{ref-qualifier} \opt{noexcept-specifier} \opt{attribute-specifier-seq} \end{ncsimplebnf} and the type of the contained \grammarterm{declarator-id} @@ -1246,10 +1246,10 @@ \tcode{D} is ``\placeholder{derived-declarator-type-list} -\tcode{noexcept}\opt{} +\opt{\tcode{noexcept}} function of (\grammarterm{parameter-declaration-clause}) -\grammarterm{cv-qualifier-seq}\opt{} \grammarterm{ref-qualifier}\opt{} +\opt{\grammarterm{cv-qualifier-seq}} \opt{\grammarterm{ref-qualifier}} returning \tcode{T}'', where the optional \tcode{noexcept} is present if and only if @@ -1266,8 +1266,8 @@ has the form \begin{ncsimplebnf} -\terminal{D1 (} parameter-declaration-clause \terminal{)} cv-qualifier-seq\opt{}\br -\hspace*{\bnfindentinc}ref-qualifier\opt{} noexcept-specifier\opt{} attribute-specifier-seq\opt{} trailing-return-type +\terminal{D1 (} parameter-declaration-clause \terminal{)} \opt{cv-qualifier-seq}\br +\hspace*{\bnfindentinc}\opt{ref-qualifier} \opt{noexcept-specifier} \opt{attribute-specifier-seq} trailing-return-type \end{ncsimplebnf} and the type of the contained @@ -1284,10 +1284,10 @@ \tcode{D} is ``\placeholder{derived-declarator-type-list} -\tcode{noexcept}\opt{} +\opt{\tcode{noexcept}} function of (\grammarterm{parameter-declaration-clause}) -\grammarterm{cv-qualifier-seq}\opt{} \grammarterm{ref-qualifier}\opt{} +\opt{\grammarterm{cv-qualifier-seq}} \opt{\grammarterm{ref-qualifier}} returning \tcode{U}'', where \tcode{U} is the type specified by the \grammarterm{trailing-return-type}, and @@ -1303,7 +1303,7 @@ \indextext{declaration!function}% \begin{bnf} \nontermdef{parameter-declaration-clause}\br - parameter-declaration-list\opt{} \terminal{...}\opt{}\br + \opt{parameter-declaration-list} \opt{\terminal{...}}\br parameter-declaration-list \terminal{, ...} \end{bnf} @@ -1315,10 +1315,10 @@ \begin{bnf} \nontermdef{parameter-declaration}\br - attribute-specifier-seq\opt{} decl-specifier-seq declarator\br - attribute-specifier-seq\opt{} decl-specifier-seq declarator \terminal{=} initializer-clause\br - attribute-specifier-seq\opt{} decl-specifier-seq abstract-declarator\opt{}\br - attribute-specifier-seq\opt{} decl-specifier-seq abstract-declarator\opt{} \terminal{=} initializer-clause + \opt{attribute-specifier-seq} decl-specifier-seq declarator\br + \opt{attribute-specifier-seq} decl-specifier-seq declarator \terminal{=} initializer-clause\br + \opt{attribute-specifier-seq} decl-specifier-seq \opt{abstract-declarator}\br + \opt{attribute-specifier-seq} decl-specifier-seq \opt{abstract-declarator} \terminal{=} initializer-clause \end{bnf} The optional \grammarterm{attribute-specifier-seq} in a \grammarterm{parameter-declaration} @@ -1986,13 +1986,13 @@ % \begin{bnf} \nontermdef{function-definition}\br - attribute-specifier-seq\opt{} decl-specifier-seq\opt{} declarator virt-specifier-seq\opt{} function-body\br - attribute-specifier-seq\opt{} decl-specifier-seq\opt{} declarator requires-clause function-body + \opt{attribute-specifier-seq} \opt{decl-specifier-seq} declarator \opt{virt-specifier-seq} function-body\br + \opt{attribute-specifier-seq} \opt{decl-specifier-seq} declarator requires-clause function-body \end{bnf} \begin{bnf} \nontermdef{function-body}\br - ctor-initializer\opt{} compound-statement\br + \opt{ctor-initializer} compound-statement\br function-try-block\br \terminal{= default ;}\br \terminal{= delete ;} @@ -2308,7 +2308,7 @@ is defined as-if by \begin{ncbnf} -attribute-specifier-seq\opt{} decl-specifier-seq ref-qualifier\opt{} \terminal{e} initializer \terminal{;} +\opt{attribute-specifier-seq} decl-specifier-seq \opt{ref-qualifier} \terminal{e} initializer \terminal{;} \end{ncbnf} where @@ -2422,15 +2422,15 @@ \begin{bnf} \nontermdef{braced-init-list}\br - \terminal{\{} initializer-list \terminal{,\opt{}} \terminal{\}}\br - \terminal{\{} designated-initializer-list \terminal{,\opt{}} \terminal{\}}\br + \terminal{\{} initializer-list \opt{\terminal{,}} \terminal{\}}\br + \terminal{\{} designated-initializer-list \opt{\terminal{,}} \terminal{\}}\br \terminal{\{} \terminal{\}} \end{bnf} \begin{bnf} \nontermdef{initializer-list}\br - initializer-clause \terminal{...}\opt{}\br - initializer-list \terminal{,} initializer-clause \terminal{...}\opt{} + initializer-clause \opt{\terminal{...}}\br + initializer-list \terminal{,} initializer-clause \opt{\terminal{...}} \end{bnf} \begin{bnf} diff --git a/source/derived.tex b/source/derived.tex index dc819d22df..f4846210c5 100644 --- a/source/derived.tex +++ b/source/derived.tex @@ -23,20 +23,20 @@ \begin{bnf} \nontermdef{base-specifier-list}\br - base-specifier \terminal{...}\opt{}\br - base-specifier-list \terminal{,} base-specifier \terminal{...}\opt{} + base-specifier \opt{\terminal{...}}\br + base-specifier-list \terminal{,} base-specifier \opt{\terminal{...}} \end{bnf} \begin{bnf} \nontermdef{base-specifier}\br - attribute-specifier-seq\opt{} class-or-decltype\br - attribute-specifier-seq\opt{} \terminal{virtual} access-specifier\opt{} class-or-decltype\br - attribute-specifier-seq\opt{} access-specifier \terminal{virtual}\opt{} class-or-decltype + \opt{attribute-specifier-seq} class-or-decltype\br + \opt{attribute-specifier-seq} \terminal{virtual} \opt{access-specifier} class-or-decltype\br + \opt{attribute-specifier-seq} access-specifier \opt{\terminal{virtual}} class-or-decltype \end{bnf} \begin{bnf} \nontermdef{class-or-decltype}\br - nested-name-specifier\opt{} class-name\br + \opt{nested-name-specifier} class-name\br nested-name-specifier \terminal{template} simple-template-id\br decltype-specifier \end{bnf} diff --git a/source/exceptions.tex b/source/exceptions.tex index 9550fbb046..76e6ca95be 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -26,12 +26,12 @@ % \begin{bnf} \nontermdef{function-try-block}\br - \terminal{try} ctor-initializer\opt{} compound-statement handler-seq + \terminal{try} \opt{ctor-initializer} compound-statement handler-seq \end{bnf} \begin{bnf} \nontermdef{handler-seq}\br - handler handler-seq\opt{} + handler \opt{handler-seq} \end{bnf} \indextext{\idxcode{catch}}% @@ -43,8 +43,8 @@ \begin{bnf} \nontermdef{exception-declaration}\br - attribute-specifier-seq\opt{} type-specifier-seq declarator\br - attribute-specifier-seq\opt{} type-specifier-seq abstract-declarator\opt{}\br + \opt{attribute-specifier-seq} type-specifier-seq declarator\br + \opt{attribute-specifier-seq} type-specifier-seq \opt{abstract-declarator}\br \terminal{...} \end{bnf} diff --git a/source/expressions.tex b/source/expressions.tex index 9040a85a88..8db845096a 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -740,7 +740,7 @@ % \begin{bnf} \nontermdef{qualified-id}\br - nested-name-specifier \terminal{template}\opt{} unqualified-id + nested-name-specifier \opt{\terminal{template}} unqualified-id \end{bnf} \indextext{operator!scope resolution}% @@ -753,7 +753,7 @@ namespace-name \terminal{::}\br decltype-specifier \terminal{::}\br nested-name-specifier identifier \terminal{::}\br - nested-name-specifier \terminal{template}\opt{} simple-template-id \terminal{::} + nested-name-specifier \opt{\terminal{template}} simple-template-id \terminal{::} \end{bnf} \pnum @@ -822,21 +822,21 @@ \begin{bnf} \nontermdef{lambda-expression}\br lambda-introducer compound-statement\br - lambda-introducer lambda-declarator requires-clause\opt{} compound-statement\br - lambda-introducer \terminal{<} template-parameter-list \terminal{>} requires-clause\opt{} compound-statement\br - lambda-introducer \terminal{<} template-parameter-list \terminal{>} requires-clause\opt{}\br - \hspace*{\bnfindentinc}lambda-declarator requires-clause\opt{} compound-statement + lambda-introducer lambda-declarator \opt{requires-clause} compound-statement\br + lambda-introducer \terminal{<} template-parameter-list \terminal{>} \opt{requires-clause} compound-statement\br + lambda-introducer \terminal{<} template-parameter-list \terminal{>} \opt{requires-clause}\br + \hspace*{\bnfindentinc}lambda-declarator \opt{requires-clause} compound-statement \end{bnf} \begin{bnf} \nontermdef{lambda-introducer}\br - \terminal{[} lambda-capture\opt{} \terminal{]} + \terminal{[} \opt{lambda-capture} \terminal{]} \end{bnf} \begin{bnf} \nontermdef{lambda-declarator}\br - \terminal{(} parameter-declaration-clause \terminal{)} decl-specifier-seq\opt{}\br - \hspace*{\bnfindentinc}noexcept-specifier\opt{} attribute-specifier-seq\opt{} trailing-return-type\opt{} + \terminal{(} parameter-declaration-clause \terminal{)} \opt{decl-specifier-seq}\br + \hspace*{\bnfindentinc}\opt{noexcept-specifier} \opt{attribute-specifier-seq} \opt{trailing-return-type} \end{bnf} \pnum @@ -1229,8 +1229,8 @@ \begin{bnf} \nontermdef{capture-list}\br - capture \terminal{...\opt{}}\br - capture-list \terminal{,} capture \terminal{...\opt{}} + capture \opt{\terminal{...}}\br + capture-list \terminal{,} capture \opt{\terminal{...}} \end{bnf} \begin{bnf} @@ -1738,12 +1738,12 @@ \begin{bnf} \nontermdef{requires-expression}\br - \terminal{requires} requirement-parameter-list\opt{} requirement-body + \terminal{requires} \opt{requirement-parameter-list} requirement-body \end{bnf} \begin{bnf} \nontermdef{requirement-parameter-list}\br - \terminal{(} parameter-declaration-clause\opt{} \terminal{)} + \terminal{(} \opt{parameter-declaration-clause} \terminal{)} \end{bnf} \begin{bnf} @@ -1883,7 +1883,7 @@ \begin{bnf} \nontermdef{type-requirement}\br - \terminal{typename} nested-name-specifier\opt{} type-name \terminal{;} + \terminal{typename} \opt{nested-name-specifier} type-name \terminal{;} \end{bnf} \pnum @@ -1914,13 +1914,13 @@ \begin{bnf} \nontermdef{compound-requirement}\br - \terminal{\{} expression \terminal{\}} \terminal{noexcept}\opt{} return-type-requirement\opt{} \terminal{;} + \terminal{\{} expression \terminal{\}} \opt{\terminal{noexcept}} \opt{return-type-requirement} \terminal{;} \end{bnf} \begin{bnf} \nontermdef{return-type-requirement}\br trailing-return-type\br - \terminal{->} cv-qualifier-seq\opt{} constrained-parameter cv-qualifier-seq\opt{} abstract-declarator\opt{} + \terminal{->} \opt{cv-qualifier-seq} constrained-parameter \opt{cv-qualifier-seq} \opt{abstract-declarator} \end{bnf} \pnum @@ -2079,13 +2079,13 @@ \nontermdef{postfix-expression}\br primary-expression\br postfix-expression \terminal{[} expr-or-braced-init-list \terminal{]}\br - postfix-expression \terminal{(} expression-list\opt{} \terminal{)}\br - simple-type-specifier \terminal{(} expression-list\opt{} \terminal{)}\br - typename-specifier \terminal{(} expression-list\opt{} \terminal{)}\br + postfix-expression \terminal{(} \opt{expression-list} \terminal{)}\br + simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br + typename-specifier \terminal{(} \opt{expression-list} \terminal{)}\br simple-type-specifier braced-init-list\br typename-specifier braced-init-list\br - postfix-expression \terminal{. template}\opt{} id-expression\br - postfix-expression \terminal{-> template}\opt{} id-expression\br + postfix-expression \opt{\terminal{. template}} id-expression\br + postfix-expression \opt{\terminal{-> template}} id-expression\br postfix-expression \terminal{.} pseudo-destructor-name\br postfix-expression \terminal{->} pseudo-destructor-name\br postfix-expression \terminal{++}\br @@ -2107,7 +2107,7 @@ \begin{bnf} \nontermdef{pseudo-destructor-name}\br - nested-name-specifier\opt{} type-name \terminal{::\,\~} type-name\br + \opt{nested-name-specifier} type-name \terminal{::\,\~} type-name\br nested-name-specifier \terminal{template} simple-template-id \terminal{::\,\~} type-name\br \terminal{\~} type-name\br \terminal{\~} decltype-specifier @@ -2444,7 +2444,7 @@ the form \begin{ncbnf} -nested-name-specifier\opt{} type-name \terminal{::\,\~} type-name +\opt{nested-name-specifier} type-name \terminal{::\,\~} type-name \end{ncbnf} shall designate the same scalar type (ignoring cv-qualification). @@ -2557,7 +2557,7 @@ \item Otherwise, if \tcode{E1.E2} refers to a non-static member function and the type of \tcode{E2} is ``function of -parameter-type-list \cvqual{cv} \grammarterm{ref-qualifier}\opt{} returning \tcode{T}'', then +parameter-type-list \cvqual{cv} \opt{\grammarterm{ref-qualifier}} returning \tcode{T}'', then \tcode{E1.E2} is a prvalue. The expression designates a non-static member function. The expression can be used only as the left-hand operand of a member function call\iref{class.mfct}. @@ -3678,8 +3678,8 @@ \begin{bnf} \nontermdef{new-expression}\br - \terminal{::}\opt{} \terminal{new} new-placement\opt{} new-type-id new-initializer\opt{} \br - \terminal{::}\opt{} \terminal{new} new-placement\opt{} \terminal{(} type-id \terminal{)} new-initializer\opt{} + \opt{\terminal{::}} \terminal{new} \opt{new-placement} new-type-id \opt{new-initializer} \br + \opt{\terminal{::}} \terminal{new} \opt{new-placement} \terminal{(} type-id \terminal{)} \opt{new-initializer} \end{bnf} \indextext{\idxcode{new}!storage allocation}% @@ -3691,24 +3691,24 @@ \begin{bnf} \nontermdef{new-type-id}\br - type-specifier-seq new-declarator\opt{} + type-specifier-seq \opt{new-declarator} \end{bnf} \begin{bnf} \nontermdef{new-declarator}\br - ptr-operator new-declarator\opt{} \br + ptr-operator \opt{new-declarator} \br noptr-new-declarator \end{bnf} \begin{bnf} \nontermdef{noptr-new-declarator}\br - \terminal{[} expression \terminal{]} attribute-specifier-seq\opt{}\br - noptr-new-declarator \terminal{[} constant-expression \terminal{]} attribute-specifier-seq\opt{} + \terminal{[} expression \terminal{]} \opt{attribute-specifier-seq}\br + noptr-new-declarator \terminal{[} constant-expression \terminal{]} \opt{attribute-specifier-seq} \end{bnf} \begin{bnf} \nontermdef{new-initializer}\br - \terminal{(} expression-list\opt{} \terminal{)}\br + \terminal{(} \opt{expression-list} \terminal{)}\br braced-init-list \end{bnf} @@ -4216,8 +4216,8 @@ \begin{bnf} \nontermdef{delete-expression}\br - \terminal{::}\opt{} \terminal{delete} cast-expression\br - \terminal{::}\opt{} \terminal{delete [ ]} cast-expression + \opt{\terminal{::}} \terminal{delete} cast-expression\br + \opt{\terminal{::}} \terminal{delete [ ]} cast-expression \end{bnf} The first alternative is a @@ -5498,7 +5498,7 @@ % \begin{bnf} \nontermdef{throw-expression}\br - \terminal{throw} assignment-expression\opt{} + \terminal{throw} \opt{assignment-expression} \end{bnf} \pnum diff --git a/source/intro.tex b/source/intro.tex index 9acf171725..0a06541b6f 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -622,10 +622,10 @@ listed on separate lines except in a few cases where a long set of alternatives is marked by the phrase ``one of''. If the text of an alternative is too long to fit on a line, the text is continued on subsequent lines indented from the first one. An optional terminal or non-terminal symbol is indicated by the subscript -``\opt'', so +``\opt{\relax}'', so \begin{ncbnf} -\terminal{\{} expression\opt{} \terminal{\}} +\terminal{\{} \opt{expression} \terminal{\}} \end{ncbnf} indicates an optional expression enclosed in braces.% diff --git a/source/iostreams.tex b/source/iostreams.tex index b87012bc1a..7995ee50d3 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -10984,8 +10984,8 @@ a sequence of elements that identify the location of a file within a filesystem. The elements are the -\grammarterm{root-name}\opt{}, -\grammarterm{root-directory}\opt{}, +\opt{\grammarterm{root-name}}, +\opt{\grammarterm{root-directory}}, and an optional sequence of \grammarterm{filename}{s}\iref{fs.path.generic}. The maximum number of elements in the sequence is operating system dependent\iref{fs.conform.os}. @@ -11187,7 +11187,7 @@ \begin{ncbnf} \nontermdef{pathname}\br - root-name\opt{} root-directory\opt{} relative-path + \opt{root-name} \opt{root-directory} relative-path \end{ncbnf} \begin{ncbnf} @@ -11215,8 +11215,8 @@ \begin{ncbnf} \nontermdef{directory-separator}\br - preferred-separator directory-separator\opt{}\br - fallback-separator directory-separator\opt{} + preferred-separator \opt{directory-separator}\br + fallback-separator \opt{directory-separator} \end{ncbnf} \begin{ncbnf} diff --git a/source/lex.tex b/source/lex.tex index 674fafa31f..12e8e80da5 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -302,7 +302,7 @@ of characters that matches the raw-string pattern \begin{ncbnf} -encoding-prefix\opt{} \terminal{R} raw-string +\opt{encoding-prefix} \terminal{R} raw-string \end{ncbnf} \item Otherwise, if the next three characters are \tcode{<::} and the subsequent character @@ -838,29 +838,29 @@ \indextext{literal!integer}% \begin{bnf} \nontermdef{integer-literal}\br - binary-literal integer-suffix\opt{}\br - octal-literal integer-suffix\opt{}\br - decimal-literal integer-suffix\opt{}\br - hexadecimal-literal integer-suffix\opt{} + binary-literal \opt{integer-suffix}\br + octal-literal \opt{integer-suffix}\br + decimal-literal \opt{integer-suffix}\br + hexadecimal-literal \opt{integer-suffix} \end{bnf} \begin{bnf} \nontermdef{binary-literal}\br \terminal{0b} binary-digit\br \terminal{0B} binary-digit\br - binary-literal \terminal{'}\opt{} binary-digit + binary-literal \opt{\terminal{'}} binary-digit \end{bnf} \begin{bnf} \nontermdef{octal-literal}\br \terminal{0}\br - octal-literal \terminal{'}\opt{} octal-digit + octal-literal \opt{\terminal{'}} octal-digit \end{bnf} \begin{bnf} \nontermdef{decimal-literal}\br nonzero-digit\br - decimal-literal \terminal{'}\opt{} digit + decimal-literal \opt{\terminal{'}} digit \end{bnf} \begin{bnf} @@ -892,7 +892,7 @@ \begin{bnf} \nontermdef{hexadecimal-digit-sequence}\br hexadecimal-digit\br - hexadecimal-digit-sequence \terminal{'}\opt{} hexadecimal-digit + hexadecimal-digit-sequence \opt{\terminal{'}} hexadecimal-digit \end{bnf} \begin{bnf} @@ -904,10 +904,10 @@ \begin{bnf} \nontermdef{integer-suffix}\br - unsigned-suffix long-suffix\opt{} \br - unsigned-suffix long-long-suffix\opt{} \br - long-suffix unsigned-suffix\opt{} \br - long-long-suffix unsigned-suffix\opt{} + unsigned-suffix \opt{long-suffix} \br + unsigned-suffix \opt{long-long-suffix} \br + long-suffix \opt{unsigned-suffix} \br + long-long-suffix \opt{unsigned-suffix} \end{bnf} \begin{bnf} @@ -1051,7 +1051,7 @@ \indextext{literal!character}% \begin{bnf} \nontermdef{character-literal}\br - encoding-prefix\opt{} \terminal{'} c-char-sequence \terminal{'} + \opt{encoding-prefix} \terminal{'} c-char-sequence \terminal{'} \end{bnf} \begin{bnf} @@ -1285,38 +1285,38 @@ \begin{bnf} \nontermdef{decimal-floating-literal}\br - fractional-constant exponent-part\opt{} floating-suffix\opt{}\br - digit-sequence exponent-part floating-suffix\opt{} + fractional-constant \opt{exponent-part} \opt{floating-suffix}\br + digit-sequence exponent-part \opt{floating-suffix} \end{bnf} \begin{bnf} \nontermdef{hexadecimal-floating-literal}\br - hexadecimal-prefix hexadecimal-fractional-constant binary-exponent-part floating-suffix\opt{}\br - hexadecimal-prefix hexadecimal-digit-sequence binary-exponent-part floating-suffix\opt{} + hexadecimal-prefix hexadecimal-fractional-constant binary-exponent-part \opt{floating-suffix}\br + hexadecimal-prefix hexadecimal-digit-sequence binary-exponent-part \opt{floating-suffix} \end{bnf} \begin{bnf} \nontermdef{fractional-constant}\br - digit-sequence\opt{} \terminal{.} digit-sequence\br + \opt{digit-sequence} \terminal{.} digit-sequence\br digit-sequence \terminal{.} \end{bnf} \begin{bnf} \nontermdef{hexadecimal-fractional-constant}\br - hexadecimal-digit-sequence\opt{} \terminal{.} hexadecimal-digit-sequence\br + \opt{hexadecimal-digit-sequence} \terminal{.} hexadecimal-digit-sequence\br hexadecimal-digit-sequence \terminal{.} \end{bnf} \begin{bnf} \nontermdef{exponent-part}\br - \terminal{e} sign\opt{} digit-sequence\br - \terminal{E} sign\opt{} digit-sequence + \terminal{e} \opt{sign} digit-sequence\br + \terminal{E} \opt{sign} digit-sequence \end{bnf} \begin{bnf} \nontermdef{binary-exponent-part}\br - \terminal{p} sign\opt{} digit-sequence\br - \terminal{P} sign\opt{} digit-sequence + \terminal{p} \opt{sign} digit-sequence\br + \terminal{P} \opt{sign} digit-sequence \end{bnf} \begin{bnf} @@ -1327,7 +1327,7 @@ \begin{bnf} \nontermdef{digit-sequence}\br digit\br - digit-sequence \terminal{'}\opt{} digit + digit-sequence \opt{\terminal{'}} digit \end{bnf} \begin{bnf} @@ -1398,8 +1398,8 @@ \indextext{literal!string}% \begin{bnf} \nontermdef{string-literal}\br - encoding-prefix\opt{} \terminal{"} s-char-sequence\opt{} \terminal{"}\br - encoding-prefix\opt{} \terminal{R} raw-string + \opt{encoding-prefix} \terminal{"} \opt{s-char-sequence} \terminal{"}\br + \opt{encoding-prefix} \terminal{R} raw-string \end{bnf} \begin{bnf} @@ -1418,7 +1418,7 @@ \begin{bnf} \nontermdef{raw-string}\br - \terminal{"} d-char-sequence\opt{} \terminal{(} r-char-sequence\opt{} \terminal{)} d-char-sequence\opt{} \terminal{"} + \terminal{"} \opt{d-char-sequence} \terminal{(} \opt{r-char-sequence} \terminal{)} \opt{d-char-sequence} \terminal{"} \end{bnf} \begin{bnf} @@ -1739,7 +1739,7 @@ \begin{bnf} \nontermdef{user-defined-floating-literal}\br - fractional-constant exponent-part\opt{} ud-suffix\br + fractional-constant \opt{exponent-part} ud-suffix\br digit-sequence exponent-part ud-suffix\br hexadecimal-prefix hexadecimal-fractional-constant binary-exponent-part ud-suffix\br hexadecimal-prefix hexadecimal-digit-sequence binary-exponent-part ud-suffix diff --git a/source/macros.tex b/source/macros.tex index ded339958f..fd2b4655a4 100644 --- a/source/macros.tex +++ b/source/macros.tex @@ -194,7 +194,9 @@ \newcommand{\CppXI}{\Cpp{} 2011} \newcommand{\CppXIV}{\Cpp{} 2014} \newcommand{\CppXVII}{\Cpp{} 2017} -\newcommand{\opt}{{\ensuremath{_\mathit{opt}}}} +\newcommand{\opt}[1]{\ifthenelse{\equal{#1}{}} + {\PackageError{main}{argument must not be empty}{}} + {#1\ensuremath{_\mathit{opt}}}} \newcommand{\dcr}{-{-}} \newcommand{\bigoh}[1]{\ensuremath{\mathscr{O}(#1)}} diff --git a/source/overloading.tex b/source/overloading.tex index b2bb9e7b9f..7753a39db7 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -647,7 +647,7 @@ In a function call\iref{expr.call} \begin{ncsimplebnf} -postfix-expression \terminal{(} expression-list\opt{} \terminal{)} +postfix-expression \terminal{(} \opt{expression-list} \terminal{)} \end{ncsimplebnf} if the \grammarterm{postfix-expression} denotes a set of overloaded functions and/or @@ -816,7 +816,7 @@ form \begin{ncsimplebnf} -\terminal{operator} conversion-type-id \terminal{(\,)} cv-qualifier ref-qualifier\opt{} noexcept-specifier\opt{} attribute-specifier-seq\opt{} \terminal{;} +\terminal{operator} conversion-type-id \terminal{(\,)} cv-qualifier \opt{ref-qualifier} \opt{noexcept-specifier} \opt{attribute-specifier-seq} \terminal{;} \end{ncsimplebnf} where @@ -3309,7 +3309,7 @@ It implements the function call syntax \begin{ncsimplebnf} -postfix-expression \terminal{(} expression-list\opt{} \terminal{)} +postfix-expression \terminal{(} \opt{expression-list} \terminal{)} \end{ncsimplebnf} where the @@ -3382,7 +3382,7 @@ uses \tcode{->}. \begin{ncsimplebnf} -postfix-expression \terminal{->} \terminal{template\opt{}} id-expression\\ +postfix-expression \terminal{->} \terminal{\opt{template}} id-expression\\ postfix-expression \terminal{->} pseudo-destructor-name \end{ncsimplebnf} diff --git a/source/preprocessor.tex b/source/preprocessor.tex index 1ba4525a54..5418ba61f5 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -30,7 +30,7 @@ \begin{bnf} \nontermdef{preprocessing-file}\br - group\opt{} + \opt{group} \end{bnf} \begin{bnf} @@ -51,26 +51,26 @@ \nontermdef{control-line}\br \>\terminal{\# include}\>\>pp-tokens new-line\br \>\terminal{\# define}\>\>identifier replacement-list new-line\br -\>\terminal{\# define}\>\>identifier lparen identifier-list\opt{} \terminal{)} replacement-list new-line\br +\>\terminal{\# define}\>\>identifier lparen \opt{identifier-list} \terminal{)} replacement-list new-line\br \>\terminal{\# define}\>\>identifier lparen \terminal{... )} replacement-list new-line\br \>\terminal{\# define}\>\>identifier lparen identifier-list \terminal{, ... )} replacement-list new-line\br \>\terminal{\# undef}\>\>identifier new-line\br \>\terminal{\# line}\>\>pp-tokens new-line\br -\>\terminal{\# error}\>\>pp-tokens\opt{} new-line\br -\>\terminal{\# pragma}\>\>pp-tokens\opt{} new-line\br +\>\terminal{\# error}\>\>\opt{pp-tokens} new-line\br +\>\terminal{\# pragma}\>\>\opt{pp-tokens} new-line\br \>\terminal{\# }new-line \end{bnftab} \begin{bnf} \nontermdef{if-section}\br - if-group elif-groups\opt{} else-group\opt{} endif-line + if-group \opt{elif-groups} \opt{else-group} endif-line \end{bnf} \begin{bnftab} \nontermdef{if-group}\br -\>\terminal{\# if}\>\>constant-expression new-line group\opt{}\br -\>\terminal{\# ifdef}\>\>identifier new-line group\opt{}\br -\>\terminal{\# ifndef}\>\>identifier new-line group\opt{} +\>\terminal{\# if}\>\>constant-expression new-line \opt{group}\br +\>\terminal{\# ifdef}\>\>identifier new-line \opt{group}\br +\>\terminal{\# ifndef}\>\>identifier new-line \opt{group} \end{bnftab} \begin{bnf} @@ -81,12 +81,12 @@ \begin{bnftab} \nontermdef{elif-group}\br -\>\terminal{\# elif}\>\>constant-expression new-line group\opt{} +\>\terminal{\# elif}\>\>constant-expression new-line \opt{group} \end{bnftab} \begin{bnftab} \nontermdef{else-group}\br -\>\terminal{\# else}\>\>new-line group\opt{} +\>\terminal{\# else}\>\>new-line \opt{group} \end{bnftab} \begin{bnftab} @@ -96,7 +96,7 @@ \begin{bnf} \nontermdef{text-line}\br - pp-tokens\opt{} new-line + \opt{pp-tokens} new-line \end{bnf} \begin{bnf} @@ -117,7 +117,7 @@ \begin{bnf} \nontermdef{replacement-list}\br - pp-tokens\opt{} + \opt{pp-tokens} \end{bnf} \begin{bnf} @@ -274,9 +274,9 @@ \begin{ncbnftab} \indextext{\idxcode{\#if}}% -\terminal{\# if}\>\>constant-expression new-line group\opt{}\br +\terminal{\# if}\>\>constant-expression new-line \opt{group}\br \indextext{\idxcode{\#elif}}% -\terminal{\# elif}\>\>constant-expression new-line group\opt{} +\terminal{\# elif}\>\>constant-expression new-line \opt{group} \end{ncbnftab} check whether the controlling constant expression evaluates to nonzero. @@ -369,9 +369,9 @@ Preprocessing directives of the forms \begin{ncbnftab} -\terminal{\# ifdef}\>\>identifier new-line group\opt{}\br +\terminal{\# ifdef}\>\>identifier new-line \opt{group}\br \indextext{\idxcode{\#ifdef}}% -\terminal{\# ifndef}\>\>identifier new-line group\opt{} +\terminal{\# ifndef}\>\>identifier new-line \opt{group} \indextext{\idxcode{\#ifndef}}% \end{ncbnftab} @@ -688,7 +688,7 @@ \pnum A preprocessing directive of the form \begin{ncsimplebnf} -\terminal{\# define} identifier lparen identifier-list\opt{} \terminal{)} replacement-list new-line\br +\terminal{\# define} identifier lparen \opt{identifier-list} \terminal{)} replacement-list new-line\br \terminal{\# define} identifier lparen \terminal{...} \terminal{)} replacement-list new-line\br \terminal{\# define} identifier lparen identifier-list \terminal{, ...} \terminal{)} replacement-list new-line \end{ncsimplebnf} @@ -1213,7 +1213,7 @@ A preprocessing directive of the form \begin{ncsimplebnf} -\terminal{\# line} digit-sequence \terminal{"} s-char-sequence\opt{} \terminal{"} new-line +\terminal{\# line} digit-sequence \terminal{"} \opt{s-char-sequence} \terminal{"} new-line \end{ncsimplebnf} sets the presumed line number similarly and changes the @@ -1246,7 +1246,7 @@ A preprocessing directive of the form \begin{ncsimplebnf} -\terminal{\# error} pp-tokens\opt{} new-line +\terminal{\# error} \opt{pp-tokens} new-line \end{ncsimplebnf} causes the implementation to produce @@ -1261,7 +1261,7 @@ A preprocessing directive of the form \begin{ncsimplebnf} -\terminal{\# pragma} pp-tokens\opt{} new-line +\terminal{\# pragma} \opt{pp-tokens} new-line \end{ncsimplebnf} causes the implementation to behave diff --git a/source/special.tex b/source/special.tex index bbc93bd913..c068719d68 100644 --- a/source/special.tex +++ b/source/special.tex @@ -78,7 +78,7 @@ function declarator\iref{dcl.fct} of the form \begin{ncbnf} -ptr-declarator \terminal{(} parameter-declaration-clause \terminal{)} noexcept-specifier\opt{} attribute-specifier-seq\opt{} +ptr-declarator \terminal{(} parameter-declaration-clause \terminal{)} \opt{noexcept-specifier} \opt{attribute-specifier-seq} \end{ncbnf} where the \grammarterm{ptr-declarator} consists solely of an @@ -883,12 +883,12 @@ \begin{bnf} \nontermdef{conversion-type-id}\br - type-specifier-seq conversion-declarator\opt{} + type-specifier-seq \opt{conversion-declarator} \end{bnf} \begin{bnf} \nontermdef{conversion-declarator}\br - ptr-operator conversion-declarator\opt{} + ptr-operator \opt{conversion-declarator} \end{bnf} specifies a conversion from @@ -1012,7 +1012,7 @@ function declarator\iref{dcl.fct} of the form \begin{ncbnf} -ptr-declarator \terminal{(} parameter-declaration-clause \terminal{)} noexcept-specifier\opt{} attribute-specifier-seq\opt{} +ptr-declarator \terminal{(} parameter-declaration-clause \terminal{)} \opt{noexcept-specifier} \opt{attribute-specifier-seq} \end{ncbnf} where the \grammarterm{ptr-declarator} consists solely of an @@ -1658,13 +1658,13 @@ \begin{bnf} \nontermdef{mem-initializer-list}\br - mem-initializer \terminal{...}\opt{}\br - mem-initializer-list \terminal{,} mem-initializer \terminal{...}\opt{} + mem-initializer \opt{\terminal{...}}\br + mem-initializer-list \terminal{,} mem-initializer \opt{\terminal{...}} \end{bnf} \begin{bnf} \nontermdef{mem-initializer}\br - mem-initializer-id \terminal{(} expression-list\opt{} \terminal{)}\br + mem-initializer-id \terminal{(} \opt{expression-list} \terminal{)}\br mem-initializer-id braced-init-list \end{bnf} diff --git a/source/statements.tex b/source/statements.tex index df8f9c129a..03b745a433 100644 --- a/source/statements.tex +++ b/source/statements.tex @@ -12,13 +12,13 @@ \begin{bnf} \nontermdef{statement}\br labeled-statement\br - attribute-specifier-seq\opt{} expression-statement\br - attribute-specifier-seq\opt{} compound-statement\br - attribute-specifier-seq\opt{} selection-statement\br - attribute-specifier-seq\opt{} iteration-statement\br - attribute-specifier-seq\opt{} jump-statement\br + \opt{attribute-specifier-seq} expression-statement\br + \opt{attribute-specifier-seq} compound-statement\br + \opt{attribute-specifier-seq} selection-statement\br + \opt{attribute-specifier-seq} iteration-statement\br + \opt{attribute-specifier-seq} jump-statement\br declaration-statement\br - attribute-specifier-seq\opt{} try-block + \opt{attribute-specifier-seq} try-block \nontermdef{init-statement}\br expression-statement\br @@ -26,7 +26,7 @@ \nontermdef{condition}\br expression\br - attribute-specifier-seq\opt{} decl-specifier-seq declarator brace-or-equal-initializer + \opt{attribute-specifier-seq} decl-specifier-seq declarator brace-or-equal-initializer \end{bnf} The optional \grammarterm{attribute-specifier-seq} appertains to the respective statement. @@ -102,9 +102,9 @@ \begin{bnf} \nontermdef{labeled-statement}\br - attribute-specifier-seq\opt{} identifier \terminal{:} statement\br - attribute-specifier-seq\opt{} \terminal{case} constant-expression \terminal{:} statement\br - attribute-specifier-seq\opt{} \terminal{default :} statement + \opt{attribute-specifier-seq} identifier \terminal{:} statement\br + \opt{attribute-specifier-seq} \terminal{case} constant-expression \terminal{:} statement\br + \opt{attribute-specifier-seq} \terminal{default :} statement \end{bnf} The optional \grammarterm{attribute-specifier-seq} appertains to the label. An @@ -139,7 +139,7 @@ \begin{bnf} \nontermdef{expression-statement}\br - expression\opt{} \terminal{;} + \opt{expression} \terminal{;} \end{bnf} The expression is @@ -171,7 +171,7 @@ \begin{bnf} \nontermdef{compound-statement}\br - \terminal{\{} statement-seq\opt{} \terminal{\}} + \terminal{\{} \opt{statement-seq} \terminal{\}} \end{bnf} \begin{bnf} @@ -196,9 +196,9 @@ % \begin{bnf} \nontermdef{selection-statement}\br - \terminal{if constexpr\opt{} (} init-statement\opt{} condition \terminal{)} statement\br - \terminal{if constexpr\opt{} (} init-statement\opt{} condition \terminal{)} statement \terminal{else} statement\br - \terminal{switch (} init-statement\opt{} condition \terminal{)} statement + \terminal{if \opt{constexpr} (} \opt{init-statement} condition \terminal{)} statement\br + \terminal{if \opt{constexpr} (} \opt{init-statement} condition \terminal{)} statement \terminal{else} statement\br + \terminal{switch (} \opt{init-statement} condition \terminal{)} statement \end{bnf} See~\ref{dcl.meaning} for the optional \grammarterm{attribute-specifier-seq} in a condition. @@ -295,7 +295,7 @@ An \tcode{if} statement of the form \begin{ncbnf} -\terminal{if constexpr\opt{} (} init-statement condition \terminal{)} statement +\terminal{if \opt{constexpr} (} init-statement condition \terminal{)} statement \end{ncbnf} is equivalent to @@ -303,14 +303,14 @@ \begin{ncbnftab} \terminal{\{}\br \>init-statement\br -\>\terminal{if constexpr\opt{} (} condition \terminal{)} statement\br +\>\terminal{if \opt{constexpr} (} condition \terminal{)} statement\br \terminal{\}} \end{ncbnftab} and an \tcode{if} statement of the form \begin{ncbnf} -\terminal{if constexpr\opt{} (} init-statement condition \terminal{)} statement \terminal{else} statement +\terminal{if \opt{constexpr} (} init-statement condition \terminal{)} statement \terminal{else} statement \end{ncbnf} is equivalent to @@ -318,7 +318,7 @@ \begin{ncbnftab} \terminal{\{}\br \>init-statement\br -\>\terminal{if constexpr\opt{} (} condition \terminal{)} statement \terminal{else} statement\br +\>\terminal{if \opt{constexpr} (} condition \terminal{)} statement \terminal{else} statement\br \terminal{\}} \end{ncbnftab} @@ -430,14 +430,14 @@ \nontermdef{iteration-statement}\br \terminal{while (} condition \terminal{)} statement\br \terminal{do} statement \terminal{while (} expression \terminal{) ;}\br - \terminal{for (} init-statement condition\opt{} \terminal{;} expression\opt{} \terminal{)} statement\br - \terminal{for (} init-statement\opt{} for-range-declaration \terminal{:} for-range-initializer \terminal{)} statement + \terminal{for (} init-statement \opt{condition} \terminal{;} \opt{expression} \terminal{)} statement\br + \terminal{for (} \opt{init-statement} for-range-declaration \terminal{:} for-range-initializer \terminal{)} statement \end{bnf} \begin{bnf} \nontermdef{for-range-declaration}\br - attribute-specifier-seq\opt{} decl-specifier-seq declarator\br - attribute-specifier-seq\opt{} decl-specifier-seq ref-qualifier\opt{} \terminal{[} identifier-list \terminal{]} + \opt{attribute-specifier-seq} decl-specifier-seq declarator\br + \opt{attribute-specifier-seq} decl-specifier-seq \opt{ref-qualifier} \terminal{[} identifier-list \terminal{]} \end{bnf} \begin{bnf} @@ -568,7 +568,7 @@ The \tcode{for} statement \begin{ncbnf} -\terminal{for (} init-statement condition\opt{} \terminal{;} expression\opt{} \terminal{)} statement +\terminal{for (} init-statement \opt{condition} \terminal{;} \opt{expression} \terminal{)} statement \end{ncbnf} is equivalent to @@ -630,14 +630,14 @@ The range-based \tcode{for} statement \begin{ncbnf} -\terminal{for (} init-statement\opt{} for-range-declaration \terminal{:} for-range-initializer \terminal{)} statement +\terminal{for (} \opt{init-statement} for-range-declaration \terminal{:} for-range-initializer \terminal{)} statement \end{ncbnf} is equivalent to \begin{ncbnftab} \terminal{\{}\br -\>init-statement\opt{}\br +\>\opt{init-statement}\br \>\terminal{auto \&\&__range =} for-range-initializer \terminal{;}\br \>\terminal{auto __begin =} begin-expr \terminal{;}\br \>\terminal{auto __end =} end-expr \terminal{;}\br @@ -717,7 +717,7 @@ \nontermdef{jump-statement}\br \terminal{break ;}\br \terminal{continue ;}\br - \terminal{return} expr-or-braced-init-list\opt{} \terminal{;}\br + \terminal{return} \opt{expr-or-braced-init-list} \terminal{;}\br \terminal{goto} identifier \terminal{;} \end{bnf} diff --git a/source/templates.tex b/source/templates.tex index 30d314e1dc..bfdd28f2d1 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -21,7 +21,7 @@ \begin{bnf} \nontermdef{template-head}\br - \terminal{template} \terminal{<} template-parameter-list \terminal{>} requires-clause\opt{} + \terminal{template} \terminal{<} template-parameter-list \terminal{>} \opt{requires-clause} \end{bnf} \begin{bnf} @@ -244,10 +244,10 @@ \begin{bnf} \nontermdef{type-parameter}\br - type-parameter-key \terminal{...}\opt{} identifier\opt{}\br - type-parameter-key identifier\opt{} \terminal{=} type-id\br - template-head type-parameter-key \terminal{...}\opt{} identifier\opt{}\br - template-head type-parameter-key identifier\opt{} \terminal{=} id-expression + type-parameter-key \opt{\terminal{...}} \opt{identifier}\br + type-parameter-key \opt{identifier} \terminal{=} type-id\br + template-head type-parameter-key \opt{\terminal{...}} \opt{identifier}\br + template-head type-parameter-key \opt{identifier} \terminal{=} id-expression \end{bnf} \begin{bnf} @@ -258,19 +258,19 @@ \begin{bnf} \nontermdef{constrained-parameter}\br - qualified-concept-name \terminal{...} identifier\opt{}\br - qualified-concept-name identifier\opt{} default-template-argument\opt{} + qualified-concept-name \terminal{...} \opt{identifier}\br + qualified-concept-name \opt{identifier} \opt{default-template-argument} \end{bnf} \begin{bnf} \nontermdef{qualified-concept-name}\br - nested-name-specifier\opt{} concept-name\br - nested-name-specifier\opt{} partial-concept-id + \opt{nested-name-specifier} concept-name\br + \opt{nested-name-specifier} partial-concept-id \end{bnf} \begin{bnf} \nontermdef{partial-concept-id}\br - concept-name \terminal{<} template-argument-list\opt{} \terminal{>} + concept-name \terminal{<} \opt{template-argument-list} \terminal{>} \end{bnf} \begin{bnf} @@ -771,14 +771,14 @@ \begin{bnf} \nontermdef{simple-template-id}\br - template-name \terminal{<} template-argument-list\opt{} \terminal{>} + template-name \terminal{<} \opt{template-argument-list} \terminal{>} \end{bnf} \begin{bnf} \nontermdef{template-id}\br simple-template-id\br - operator-function-id \terminal{<} template-argument-list\opt{} \terminal{>}\br - literal-operator-id \terminal{<} template-argument-list\opt{} \terminal{>} + operator-function-id \terminal{<} \opt{template-argument-list} \terminal{>}\br + literal-operator-id \terminal{<} \opt{template-argument-list} \terminal{>} \end{bnf} \begin{bnf} @@ -788,8 +788,8 @@ \begin{bnf} \nontermdef{template-argument-list}\br - template-argument \terminal{...}\opt{}\br - template-argument-list \terminal{,} template-argument \terminal{...}\opt{} + template-argument \opt{\terminal{...}}\br + template-argument-list \terminal{,} template-argument \opt{\terminal{...}} \end{bnf} \begin{bnf} @@ -4047,7 +4047,7 @@ \begin{bnf} \nontermdef{typename-specifier}\br \terminal{typename} nested-name-specifier identifier\br - \terminal{typename} nested-name-specifier \terminal{template\opt{}} simple-template-id + \terminal{typename} nested-name-specifier \terminal{\opt{template}} simple-template-id \end{bnf} \pnum @@ -4570,7 +4570,7 @@ In an expression of the form: \begin{ncbnftab} -postfix-expression \terminal{(} expression-list\opt{} \terminal{)} +postfix-expression \terminal{(} \opt{expression-list} \terminal{)} \end{ncbnftab} where the @@ -5086,9 +5086,9 @@ is dependent, even if any subexpression is type-dependent: \begin{ncbnftab} -simple-type-specifier \terminal{(} expression-list\opt{} \terminal{)}\br -\terminal{::\opt{} new} new-placement\opt{} new-type-id new-initializer\opt{}\br -\terminal{::\opt{} new} new-placement\opt{} \terminal{(} type-id \terminal{)} new-initializer\opt{}\br +simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br +\terminal{\opt{::} new} \opt{new-placement} new-type-id \opt{new-initializer}\br +\terminal{\opt{::} new} \opt{new-placement} \terminal{(} type-id \terminal{)} \opt{new-initializer}\br \terminal{dynamic_cast <} type-id \terminal{> (} expression \terminal{)}\br \terminal{static_cast <} type-id \terminal{> (} expression \terminal{)}\br \terminal{const_cast <} type-id \terminal{> (} expression \terminal{)}\br @@ -5110,9 +5110,9 @@ \terminal{alignof (} type-id \terminal{)}\br \terminal{typeid (} expression \terminal{)}\br \terminal{typeid (} type-id \terminal{)}\br -\terminal{::\opt{} delete} cast-expression\br -\terminal{::\opt{} delete [ ]} cast-expression\br -\terminal{throw} assignment-expression\opt{}\br +\terminal{\opt{::} delete} cast-expression\br +\terminal{\opt{::} delete [ ]} cast-expression\br +\terminal{throw} \opt{assignment-expression}\br \terminal{noexcept} \terminal{(} expression \terminal{)} \end{ncbnftab} @@ -5217,7 +5217,7 @@ is value-dependent: \begin{ncbnftab} -simple-type-specifier \terminal{(} expression-list\opt{} \terminal{)}\br +simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br \terminal{static_cast <} type-id \terminal{> (} expression \terminal{)}\br \terminal{const_cast <} type-id \terminal{> (} expression \terminal{)}\br \terminal{reinterpret_cast <} type-id \terminal{> (} expression \terminal{)}\br @@ -6017,7 +6017,7 @@ \begin{bnf} \nontermdef{explicit-instantiation}\br - \terminal{extern\opt{}} \terminal{template} declaration + \terminal{\opt{extern}} \terminal{template} declaration \end{bnf} There are two forms of explicit instantiation: an explicit instantiation @@ -8828,7 +8828,7 @@ \begin{bnf} \nontermdef{deduction-guide}\br - \terminal{explicit}\opt{} template-name \terminal{(} parameter-declaration-clause \terminal{) ->} simple-template-id \terminal{;} + \opt{\terminal{explicit}} template-name \terminal{(} parameter-declaration-clause \terminal{) ->} simple-template-id \terminal{;} \end{bnf} \pnum diff --git a/source/utilities.tex b/source/utilities.tex index 54978813f0..6c0495651d 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -14739,7 +14739,7 @@ \remarks This deduction guide participates in overload resolution only if \tcode{\&F::operator()} is well-formed when treated as an unevaluated operand. In that case, if \tcode{decltype(\&F::operator())} is of the form -\tcode{R(G::*)(A...)}~\cv{}~\tcode{\&\opt{}~noexcept\opt{}} +\tcode{R(G::*)(A...)}~\cv{}~\tcode{\opt{\&}~\opt{noexcept}} for a class type \tcode{G}, then the deduced type is \tcode{function}. \pnum From fc16d3133817701a780092cf6456722a40e27d28 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Sun, 19 Nov 2017 23:11:51 +0100 Subject: [PATCH 160/168] [temp.arg.explicit] Remove note obsoleted by P0846R0 --- source/templates.tex | 39 --------------------------------------- 1 file changed, 39 deletions(-) diff --git a/source/templates.tex b/source/templates.tex index bfdd28f2d1..11c4a91817 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -6905,45 +6905,6 @@ function name, there is no way to provide an explicit template argument list for these function templates. \end{note} -% L7048 USA Core3 1.18 / 14.8.1 [temp.arg.explicit] -% WG21 decided not to address this issue except to document that -% argument-dependent lookup does not apply in this context. - -\pnum -\begin{note} -For simple function names, argument dependent lookup\iref{basic.lookup.argdep} -applies even when the function name is not visible within the scope of the call. -This is because the call still has the syntactic form of a function call\iref{basic.lookup.unqual}. -But when a function template with explicit template arguments is used, -the call does not have the correct syntactic form unless there is a function -template with that name visible at the point of the call. -If no such name is visible, -the call is not syntactically well-formed and argument-dependent lookup -does not apply. -If some such name is visible, -argument dependent lookup applies and additional function templates -may be found in other namespaces. -\begin{example} - -% Argument added to f per Usenet posting from martin von Loewis, 6 Sep 1998 -\begin{codeblock} -namespace A { - struct B { }; - template void f(B); -} -namespace C { - template void f(T t); -} -void g(A::B b) { - f<3>(b); // ill-formed: not a function call - A::f<3>(b); // well-formed - C::f<3>(b); // ill-formed; argument dependent lookup applies only to unqualified names - using C::f; - f<3>(b); // well-formed because \tcode{C::f} is visible; then \tcode{A::f} is found by argument dependent lookup -} -\end{codeblock} -\end{example} -\end{note} \pnum Template argument deduction can extend the sequence of template From b73e56f7a2b92449d9ec4938b01fa7014edad33a Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Wed, 15 Nov 2017 23:26:11 +0100 Subject: [PATCH 161/168] [basic.link] Entities declared in an unnamed namespace never have external linkage. --- source/basic.tex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index 00c7ede9cc..21b07dafc0 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -2449,7 +2449,10 @@ \indextext{linkage!no}% Names not covered by these rules have no linkage. Moreover, except as noted, a name declared at block scope\iref{basic.scope.block} has no -linkage. A type is said to have linkage if and only if: +linkage. + +\pnum +A type is said to have linkage if and only if: \begin{itemize} \item it is a class or enumeration type that is named (or has a name for linkage purposes\iref{dcl.typedef}) and the name has linkage; or @@ -2475,9 +2478,6 @@ \begin{itemize} \item the entity has C language linkage\iref{dcl.link}, or -\item the entity is declared within an unnamed -namespace\iref{namespace.def}, or - \item the entity is not odr-used\iref{basic.def.odr} or is defined in the same translation unit. \end{itemize} From e543af304e195ad301da272caa7ef12107077ac0 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Sat, 25 Nov 2017 00:01:36 +0100 Subject: [PATCH 162/168] [lib] Harmonize spacing for template headers. Use 'template'. Also remove space between two closing template brackets. --- source/algorithms.tex | 2 +- source/atomics.tex | 50 +- source/containers.tex | 988 ++++++++-------- source/diagnostics.tex | 42 +- source/future.tex | 138 +-- source/iostreams.tex | 322 +++--- source/iterators.tex | 336 +++--- source/lib-intro.tex | 12 +- source/locales.tex | 164 +-- source/numerics.tex | 106 +- source/regex.tex | 348 +++--- source/strings.tex | 2 +- source/support.tex | 34 +- source/threads.tex | 232 ++-- source/utilities.tex | 2452 ++++++++++++++++++++-------------------- 15 files changed, 2614 insertions(+), 2614 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index f6f9c888fd..5eee152e6a 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -1890,7 +1890,7 @@ ForwardIterator2 first2, ForwardIterator2 last2); template + class BinaryPredicate> constexpr InputIterator find_first_of(InputIterator first1, InputIterator last1, ForwardIterator first2, ForwardIterator last2, diff --git a/source/atomics.tex b/source/atomics.tex index 7c4667e7e4..849e7ff63f 100644 --- a/source/atomics.tex +++ b/source/atomics.tex @@ -33,7 +33,7 @@ namespace std { // \ref{atomics.order}, order and consistency enum class memory_order : @\unspec@; - template + template T kill_dependency(T y) noexcept; // \ref{atomics.lockfree}, lock-free property @@ -127,54 +127,54 @@ typename atomic::value_type, memory_order, memory_order) noexcept; - template + template T atomic_fetch_add(volatile atomic*, typename atomic::difference_type) noexcept; - template + template T atomic_fetch_add(atomic*, typename atomic::difference_type) noexcept; - template + template T atomic_fetch_add_explicit(volatile atomic*, typename atomic::difference_type, memory_order) noexcept; - template + template T atomic_fetch_add_explicit(atomic*, typename atomic::difference_type, memory_order) noexcept; - template + template T atomic_fetch_sub(volatile atomic*, typename atomic::difference_type) noexcept; - template + template T atomic_fetch_sub(atomic*, typename atomic::difference_type) noexcept; - template + template T atomic_fetch_sub_explicit(volatile atomic*, typename atomic::difference_type, memory_order) noexcept; - template + template T atomic_fetch_sub_explicit(atomic*, typename atomic::difference_type, memory_order) noexcept; - template + template T atomic_fetch_and(volatile atomic*, typename atomic::value_type) noexcept; - template + template T atomic_fetch_and(atomic*, typename atomic::value_type) noexcept; - template + template T atomic_fetch_and_explicit(volatile atomic*, typename atomic::value_type, memory_order) noexcept; - template + template T atomic_fetch_and_explicit(atomic*, typename atomic::value_type, memory_order) noexcept; - template + template T atomic_fetch_or(volatile atomic*, typename atomic::value_type) noexcept; - template + template T atomic_fetch_or(atomic*, typename atomic::value_type) noexcept; - template + template T atomic_fetch_or_explicit(volatile atomic*, typename atomic::value_type, memory_order) noexcept; - template + template T atomic_fetch_or_explicit(atomic*, typename atomic::value_type, memory_order) noexcept; - template + template T atomic_fetch_xor(volatile atomic*, typename atomic::value_type) noexcept; - template + template T atomic_fetch_xor(atomic*, typename atomic::value_type) noexcept; - template + template T atomic_fetch_xor_explicit(volatile atomic*, typename atomic::value_type, memory_order) noexcept; - template + template T atomic_fetch_xor_explicit(atomic*, typename atomic::value_type, memory_order) noexcept; @@ -493,7 +493,7 @@ \indexlibrary{\idxcode{kill_dependency}}% \begin{itemdecl} -template +template T kill_dependency(T y) noexcept; \end{itemdecl} @@ -565,7 +565,7 @@ \indexlibrarymember{value_type}{atomic}% \begin{codeblock} namespace std { - template struct atomic { + template struct atomic { using value_type = T; static constexpr bool is_always_lock_free = @\impdefx{whether a given \tcode{atomic} type's operations are always lock free}@; bool is_lock_free() const volatile noexcept; @@ -963,7 +963,7 @@ \begin{codeblock} namespace std { - template <> struct atomic<@\placeholder{integral}@> { + template<> struct atomic<@\placeholder{integral}@> { using value_type = @\placeholder{integral}@; using difference_type = value_type; static constexpr bool is_always_lock_free = @\impdefx{whether a given \tcode{atomic} type's operations are always lock free}@; @@ -1278,7 +1278,7 @@ \begin{codeblock} namespace std { - template struct atomic { + template struct atomic { using value_type = T*; using difference_type = ptrdiff_t; static constexpr bool is_always_lock_free = @\impdefx{whether a given \tcode{atomic} type's operations are always lock free}@; diff --git a/source/containers.tex b/source/containers.tex index 51e38e8f0f..1cc00dc7fd 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -994,7 +994,7 @@ \begin{itemize} \item If the constructor \begin{codeblock} -template +template X(InputIterator first, InputIterator last, const allocator_type& alloc = allocator_type()); \end{codeblock} @@ -1004,14 +1004,14 @@ \item If the member functions of the forms: \begin{codeblock} -template +template @\placeholdernc{return-type}@ @\placeholdernc{F}@(const_iterator p, InputIterator first, InputIterator last); // such as \tcode{insert} -template +template @\placeholdernc{return-type}@ @\placeholdernc{F}@(InputIterator first, InputIterator last); // such as \tcode{append}, \tcode{assign} -template +template @\placeholdernc{return-type}@ @\placeholdernc{F}@(const_iterator i1, const_iterator i2, InputIterator first, InputIterator last); // such as \tcode{replace} \end{codeblock} @@ -1457,7 +1457,7 @@ That return type is a specialization of the type specified in this subclause. \begin{codeblock} -template +template struct @\placeholder{INSERT_RETURN_TYPE}@ { Iterator position; @@ -2932,36 +2932,36 @@ namespace std { // \ref{array}, class template \tcode{array} - template struct array; + template struct array; - template + template bool operator==(const array& x, const array& y); - template + template bool operator!=(const array& x, const array& y); - template + template bool operator< (const array& x, const array& y); - template + template bool operator> (const array& x, const array& y); - template + template bool operator<=(const array& x, const array& y); - template + template bool operator>=(const array& x, const array& y); - template + template void swap(array& x, array& y) noexcept(noexcept(x.swap(y))); - template class tuple_size; - template class tuple_element; - template + template class tuple_size; + template class tuple_element; + template struct tuple_size>; - template + template struct tuple_element>; - template + template constexpr T& get(array&) noexcept; - template + template constexpr T&& get(array&&) noexcept; - template + template constexpr const T& get(const array&) noexcept; - template + template constexpr const T&& get(const array&&) noexcept; } \end{codeblock} @@ -2975,27 +2975,27 @@ namespace std { // \ref{deque}, class template \tcode{deque} - template > class deque; + template> class deque; - template + template bool operator==(const deque& x, const deque& y); - template + template bool operator< (const deque& x, const deque& y); - template + template bool operator!=(const deque& x, const deque& y); - template + template bool operator> (const deque& x, const deque& y); - template + template bool operator>=(const deque& x, const deque& y); - template + template bool operator<=(const deque& x, const deque& y); - template + template void swap(deque& x, deque& y) noexcept(noexcept(x.swap(y))); namespace pmr { - template + template using deque = std::deque>; } } @@ -3010,27 +3010,27 @@ namespace std { // \ref{forwardlist}, class template \tcode{forward_list} - template > class forward_list; + template> class forward_list; - template + template bool operator==(const forward_list& x, const forward_list& y); - template + template bool operator< (const forward_list& x, const forward_list& y); - template + template bool operator!=(const forward_list& x, const forward_list& y); - template + template bool operator> (const forward_list& x, const forward_list& y); - template + template bool operator>=(const forward_list& x, const forward_list& y); - template + template bool operator<=(const forward_list& x, const forward_list& y); - template + template void swap(forward_list& x, forward_list& y) noexcept(noexcept(x.swap(y))); namespace pmr { - template + template using forward_list = std::forward_list>; } } @@ -3045,27 +3045,27 @@ namespace std { // \ref{list}, class template \tcode{list} - template > class list; + template> class list; - template + template bool operator==(const list& x, const list& y); - template + template bool operator< (const list& x, const list& y); - template + template bool operator!=(const list& x, const list& y); - template + template bool operator> (const list& x, const list& y); - template + template bool operator>=(const list& x, const list& y); - template + template bool operator<=(const list& x, const list& y); - template + template void swap(list& x, list& y) noexcept(noexcept(x.swap(y))); namespace pmr { - template + template using list = std::list>; } } @@ -3080,34 +3080,34 @@ namespace std { // \ref{vector}, class template \tcode{vector} - template > class vector; + template> class vector; - template + template bool operator==(const vector& x, const vector& y); - template + template bool operator< (const vector& x, const vector& y); - template + template bool operator!=(const vector& x, const vector& y); - template + template bool operator> (const vector& x, const vector& y); - template + template bool operator>=(const vector& x, const vector& y); - template + template bool operator<=(const vector& x, const vector& y); - template + template void swap(vector& x, vector& y) noexcept(noexcept(x.swap(y))); // \ref{vector.bool}, class \tcode{vector} - template class vector; + template class vector; // hash support - template struct hash; - template struct hash>; + template struct hash; + template struct hash>; namespace pmr { - template + template using vector = std::vector>; } } @@ -3152,7 +3152,7 @@ \indexlibrarymember{array}{max_size}% \begin{codeblock} namespace std { - template + template struct array { // types using value_type = T; @@ -3289,7 +3289,7 @@ \indexlibrarymember{array}{swap}% \begin{itemdecl} -template +template void swap(array& x, array& y) noexcept(noexcept(x.swap(y))); \end{itemdecl} @@ -3327,7 +3327,7 @@ \indextext{\idxcode{array}!tuple interface to}% \indexlibrary{\idxcode{tuple_size}}% \begin{itemdecl} -template +template struct tuple_size> : integral_constant { }; \end{itemdecl} @@ -3346,13 +3346,13 @@ \indexlibrarymember{array}{get}% \begin{itemdecl} -template +template constexpr T& get(array& a) noexcept; -template +template constexpr T&& get(array&& a) noexcept; -template +template constexpr const T& get(const array& a) noexcept; -template +template constexpr const T&& get(const array&& a) noexcept; \end{itemdecl} @@ -3392,7 +3392,7 @@ \begin{codeblock} namespace std { - template > + template> class deque { public: // types @@ -3414,7 +3414,7 @@ explicit deque(const Allocator&); explicit deque(size_type n, const Allocator& = Allocator()); deque(size_type n, const T& value, const Allocator& = Allocator()); - template + template deque(InputIterator first, InputIterator last, const Allocator& = Allocator()); deque(const deque& x); deque(deque&&); @@ -3427,7 +3427,7 @@ deque& operator=(deque&& x) noexcept(allocator_traits::is_always_equal::value); deque& operator=(initializer_list); - template + template void assign(InputIterator first, InputIterator last); void assign(size_type n, const T& t); void assign(initializer_list); @@ -3467,9 +3467,9 @@ const_reference back() const; // \ref{deque.modifiers}, modifiers - template reference emplace_front(Args&&... args); - template reference emplace_back(Args&&... args); - template iterator emplace(const_iterator position, Args&&... args); + template reference emplace_front(Args&&... args); + template reference emplace_back(Args&&... args); + template iterator emplace(const_iterator position, Args&&... args); void push_front(const T& x); void push_front(T&& x); @@ -3479,7 +3479,7 @@ iterator insert(const_iterator position, const T& x); iterator insert(const_iterator position, T&& x); iterator insert(const_iterator position, size_type n, const T& x); - template + template iterator insert(const_iterator position, InputIterator first, InputIterator last); iterator insert(const_iterator position, initializer_list); @@ -3499,7 +3499,7 @@ -> deque::value_type, Allocator>; // \ref{deque.special}, specialized algorithms - template + template void swap(deque& x, deque& y) noexcept(noexcept(x.swap(y))); } @@ -3564,7 +3564,7 @@ \indexlibrary{\idxcode{deque}!constructor}% \begin{itemdecl} -template +template deque(InputIterator first, InputIterator last, const Allocator& = Allocator()); \end{itemdecl} @@ -3649,14 +3649,14 @@ iterator insert(const_iterator position, const T& x); iterator insert(const_iterator position, T&& x); iterator insert(const_iterator position, size_type n, const T& x); -template +template iterator insert(const_iterator position, InputIterator first, InputIterator last); iterator insert(const_iterator position, initializer_list); -template reference emplace_front(Args&&... args); -template reference emplace_back(Args&&... args); -template iterator emplace(const_iterator position, Args&&... args); +template reference emplace_front(Args&&... args); +template reference emplace_back(Args&&... args); +template iterator emplace(const_iterator position, Args&&... args); void push_front(const T& x); void push_front(T&& x); void push_back(const T& x); @@ -3729,7 +3729,7 @@ \indexlibrarymember{swap}{deque}% \begin{itemdecl} -template +template void swap(deque& x, deque& y) noexcept(noexcept(x.swap(y))); \end{itemdecl} @@ -3773,7 +3773,7 @@ \begin{codeblock} namespace std { - template > + template> class forward_list { public: // types @@ -3793,7 +3793,7 @@ explicit forward_list(const Allocator&); explicit forward_list(size_type n, const Allocator& = Allocator()); forward_list(size_type n, const T& value, const Allocator& = Allocator()); - template + template forward_list(InputIterator first, InputIterator last, const Allocator& = Allocator()); forward_list(const forward_list& x); forward_list(forward_list&& x); @@ -3805,7 +3805,7 @@ forward_list& operator=(forward_list&& x) noexcept(allocator_traits::is_always_equal::value); forward_list& operator=(initializer_list); - template + template void assign(InputIterator first, InputIterator last); void assign(size_type n, const T& t); void assign(initializer_list); @@ -3832,17 +3832,17 @@ const_reference front() const; // \ref{forwardlist.modifiers}, modifiers - template reference emplace_front(Args&&... args); + template reference emplace_front(Args&&... args); void push_front(const T& x); void push_front(T&& x); void pop_front(); - template iterator emplace_after(const_iterator position, Args&&... args); + template iterator emplace_after(const_iterator position, Args&&... args); iterator insert_after(const_iterator position, const T& x); iterator insert_after(const_iterator position, T&& x); iterator insert_after(const_iterator position, size_type n, const T& x); - template + template iterator insert_after(const_iterator position, InputIterator first, InputIterator last); iterator insert_after(const_iterator position, initializer_list il); @@ -3866,18 +3866,18 @@ const_iterator first, const_iterator last); void remove(const T& value); - template void remove_if(Predicate pred); + template void remove_if(Predicate pred); void unique(); - template void unique(BinaryPredicate binary_pred); + template void unique(BinaryPredicate binary_pred); void merge(forward_list& x); void merge(forward_list&& x); - template void merge(forward_list& x, Compare comp); - template void merge(forward_list&& x, Compare comp); + template void merge(forward_list& x, Compare comp); + template void merge(forward_list&& x, Compare comp); void sort(); - template void sort(Compare comp); + template void sort(Compare comp); void reverse() noexcept; }; @@ -3888,7 +3888,7 @@ -> forward_list::value_type, Allocator>; // \ref{forwardlist.spec}, specialized algorithms - template + template void swap(forward_list& x, forward_list& y) noexcept(noexcept(x.swap(y))); } @@ -3951,7 +3951,7 @@ \indexlibrary{\idxcode{forward_list}!constructor}% \begin{itemdecl} -template +template forward_list(InputIterator first, InputIterator last, const Allocator& = Allocator()); \end{itemdecl} @@ -4013,7 +4013,7 @@ \indexlibrarymember{emplace_front}{forward_list}% \begin{itemdecl} -template reference emplace_front(Args&&... args); +template reference emplace_front(Args&&... args); \end{itemdecl} \begin{itemdescr} @@ -4082,7 +4082,7 @@ \indexlibrarymember{insert_after}{forward_list}% \begin{itemdecl} -template +template iterator insert_after(const_iterator position, InputIterator first, InputIterator last); \end{itemdecl} @@ -4117,7 +4117,7 @@ \indexlibrarymember{emplace_after}{forward_list}% \begin{itemdecl} -template +template iterator emplace_after(const_iterator position, Args&&... args); \end{itemdecl} @@ -4312,7 +4312,7 @@ \indexlibrarymember{remove_if}{forward_list}% \begin{itemdecl} void remove(const T& value); -template void remove_if(Predicate pred); +template void remove_if(Predicate pred); \end{itemdecl} \begin{itemdescr} @@ -4337,7 +4337,7 @@ \indexlibrarymember{unique}{forward_list}% \begin{itemdecl} void unique(); -template void unique(BinaryPredicate pred); +template void unique(BinaryPredicate pred); \end{itemdecl} \begin{itemdescr} @@ -4359,8 +4359,8 @@ \begin{itemdecl} void merge(forward_list& x); void merge(forward_list&& x); -template void merge(forward_list& x, Compare comp); -template void merge(forward_list&& x, Compare comp); +template void merge(forward_list& x, Compare comp); +template void merge(forward_list&& x, Compare comp); \end{itemdecl} \begin{itemdescr} @@ -4391,7 +4391,7 @@ \indexlibrarymember{sort}{forward_list}% \begin{itemdecl} void sort(); -template void sort(Compare comp); +template void sort(Compare comp); \end{itemdecl} \begin{itemdescr} @@ -4425,7 +4425,7 @@ \indexlibrarymember{swap}{forward_list}% \begin{itemdecl} -template +template void swap(forward_list& x, forward_list& y) noexcept(noexcept(x.swap(y))); \end{itemdecl} @@ -4472,7 +4472,7 @@ \begin{codeblock} namespace std { - template > + template> class list { public: // types @@ -4494,7 +4494,7 @@ explicit list(const Allocator&); explicit list(size_type n, const Allocator& = Allocator()); list(size_type n, const T& value, const Allocator& = Allocator()); - template + template list(InputIterator first, InputIterator last, const Allocator& = Allocator()); list(const list& x); list(list&& x); @@ -4506,7 +4506,7 @@ list& operator=(list&& x) noexcept(allocator_traits::is_always_equal::value); list& operator=(initializer_list); - template + template void assign(InputIterator first, InputIterator last); void assign(size_type n, const T& t); void assign(initializer_list); @@ -4541,8 +4541,8 @@ const_reference back() const; // \ref{list.modifiers}, modifiers - template reference emplace_front(Args&&... args); - template reference emplace_back(Args&&... args); + template reference emplace_front(Args&&... args); + template reference emplace_back(Args&&... args); void push_front(const T& x); void push_front(T&& x); void pop_front(); @@ -4550,11 +4550,11 @@ void push_back(T&& x); void pop_back(); - template iterator emplace(const_iterator position, Args&&... args); + template iterator emplace(const_iterator position, Args&&... args); iterator insert(const_iterator position, const T& x); iterator insert(const_iterator position, T&& x); iterator insert(const_iterator position, size_type n, const T& x); - template + template iterator insert(const_iterator position, InputIterator first, InputIterator last); iterator insert(const_iterator position, initializer_list il); @@ -4572,19 +4572,19 @@ void splice(const_iterator position, list&& x, const_iterator first, const_iterator last); void remove(const T& value); - template void remove_if(Predicate pred); + template void remove_if(Predicate pred); void unique(); - template + template void unique(BinaryPredicate binary_pred); void merge(list& x); void merge(list&& x); - template void merge(list& x, Compare comp); - template void merge(list&& x, Compare comp); + template void merge(list& x, Compare comp); + template void merge(list&& x, Compare comp); void sort(); - template void sort(Compare comp); + template void sort(Compare comp); void reverse() noexcept; }; @@ -4595,7 +4595,7 @@ -> list::value_type, Allocator>; // \ref{list.special}, specialized algorithms - template + template void swap(list& x, list& y) noexcept(noexcept(x.swap(y))); } @@ -4671,7 +4671,7 @@ \indexlibrary{\idxcode{list}!constructor}% \begin{itemdecl} -template +template list(InputIterator first, InputIterator last, const Allocator& = Allocator()); \end{itemdecl} @@ -4748,14 +4748,14 @@ iterator insert(const_iterator position, const T& x); iterator insert(const_iterator position, T&& x); iterator insert(const_iterator position, size_type n, const T& x); -template +template iterator insert(const_iterator position, InputIterator first, InputIterator last); iterator insert(const_iterator position, initializer_list); -template reference emplace_front(Args&&... args); -template reference emplace_back(Args&&... args); -template iterator emplace(const_iterator position, Args&&... args); +template reference emplace_front(Args&&... args); +template reference emplace_back(Args&&... args); +template iterator emplace(const_iterator position, Args&&... args); void push_front(const T& x); void push_front(T&& x); void push_back(const T& x); @@ -4960,7 +4960,7 @@ \indexlibrary{\idxcode{remove}!\idxcode{list}}% \begin{itemdecl} void remove(const T& value); -template void remove_if(Predicate pred); +template void remove_if(Predicate pred); \end{itemdecl} \begin{itemdescr} @@ -4990,7 +4990,7 @@ \indexlibrary{\idxcode{unique}!\idxcode{list}}% \begin{itemdecl} void unique(); -template void unique(BinaryPredicate binary_pred); +template void unique(BinaryPredicate binary_pred); \end{itemdecl} \begin{itemdescr} @@ -5024,8 +5024,8 @@ \begin{itemdecl} void merge(list& x); void merge(list&& x); -template void merge(list& x, Compare comp); -template void merge(list&& x, Compare comp); +template void merge(list& x, Compare comp); +template void merge(list&& x, Compare comp); \end{itemdecl} \begin{itemdescr} @@ -5083,7 +5083,7 @@ \indexlibrary{\idxcode{sort}!\idxcode{list}}% \begin{itemdecl} void sort(); -template void sort(Compare comp); +template void sort(Compare comp); \end{itemdecl} \begin{itemdescr} @@ -5109,7 +5109,7 @@ \indexlibrarymember{swap}{list}% \begin{itemdecl} -template +template void swap(list& x, list& y) noexcept(noexcept(x.swap(y))); \end{itemdecl} @@ -5150,7 +5150,7 @@ \begin{codeblock} namespace std { - template > + template> class vector { public: // types @@ -5172,7 +5172,7 @@ explicit vector(const Allocator&) noexcept; explicit vector(size_type n, const Allocator& = Allocator()); vector(size_type n, const T& value, const Allocator& = Allocator()); - template + template vector(InputIterator first, InputIterator last, const Allocator& = Allocator()); vector(const vector& x); vector(vector&&) noexcept; @@ -5185,7 +5185,7 @@ noexcept(allocator_traits::propagate_on_container_move_assignment::value || allocator_traits::is_always_equal::value); vector& operator=(initializer_list); - template + template void assign(InputIterator first, InputIterator last); void assign(size_type n, const T& u); void assign(initializer_list); @@ -5231,16 +5231,16 @@ const T* data() const noexcept; // \ref{vector.modifiers}, modifiers - template reference emplace_back(Args&&... args); + template reference emplace_back(Args&&... args); void push_back(const T& x); void push_back(T&& x); void pop_back(); - template iterator emplace(const_iterator position, Args&&... args); + template iterator emplace(const_iterator position, Args&&... args); iterator insert(const_iterator position, const T& x); iterator insert(const_iterator position, T&& x); iterator insert(const_iterator position, size_type n, const T& x); - template + template iterator insert(const_iterator position, InputIterator first, InputIterator last); iterator insert(const_iterator position, initializer_list il); iterator erase(const_iterator position); @@ -5257,7 +5257,7 @@ -> vector::value_type, Allocator>; // \ref{vector.special}, specialized algorithms - template + template void swap(vector& x, vector& y) noexcept(noexcept(x.swap(y))); } @@ -5326,7 +5326,7 @@ \indexlibrary{\idxcode{vector}!constructor} \begin{itemdecl} -template +template vector(InputIterator first, InputIterator last, const Allocator& = Allocator()); \end{itemdecl} @@ -5536,12 +5536,12 @@ iterator insert(const_iterator position, const T& x); iterator insert(const_iterator position, T&& x); iterator insert(const_iterator position, size_type n, const T& x); -template +template iterator insert(const_iterator position, InputIterator first, InputIterator last); iterator insert(const_iterator position, initializer_list); -template reference emplace_back(Args&&... args); -template iterator emplace(const_iterator position, Args&&... args); +template reference emplace_back(Args&&... args); +template iterator emplace(const_iterator position, Args&&... args); void push_back(const T& x); void push_back(T&& x); \end{itemdecl} @@ -5600,7 +5600,7 @@ \indexlibrarymember{swap}{vector}% \begin{itemdecl} -template +template void swap(vector& x, vector& y) noexcept(noexcept(x.swap(y))); \end{itemdecl} @@ -5621,7 +5621,7 @@ \begin{codeblock} namespace std { - template + template class vector { public: // types @@ -5654,7 +5654,7 @@ explicit vector(const Allocator&); explicit vector(size_type n, const Allocator& = Allocator()); vector(size_type n, const bool& value, const Allocator& = Allocator()); - template + template vector(InputIterator first, InputIterator last, const Allocator& = Allocator()); vector(const vector& x); vector(vector&& x); @@ -5665,7 +5665,7 @@ vector& operator=(const vector& x); vector& operator=(vector&& x); vector& operator=(initializer_list); - template + template void assign(InputIterator first, InputIterator last); void assign(size_type n, const bool& t); void assign(initializer_list); @@ -5706,13 +5706,13 @@ const_reference back() const; // modifiers - template reference emplace_back(Args&&... args); + template reference emplace_back(Args&&... args); void push_back(const bool& x); void pop_back(); - template iterator emplace(const_iterator position, Args&&... args); + template iterator emplace(const_iterator position, Args&&... args); iterator insert(const_iterator position, const bool& x); iterator insert(const_iterator position, size_type n, const bool& x); - template + template iterator insert(const_iterator position, InputIterator first, InputIterator last); iterator insert(const_iterator position, initializer_list il); @@ -5775,7 +5775,7 @@ \end{itemdescr} \begin{itemdecl} -template struct hash>; +template struct hash>; \end{itemdecl} \begin{itemdescr} @@ -5816,69 +5816,69 @@ namespace std { // \ref{map}, class template \tcode{map} - template , - class Allocator = allocator>> + template, + class Allocator = allocator>> class map; - template + template bool operator==(const map& x, const map& y); - template + template bool operator< (const map& x, const map& y); - template + template bool operator!=(const map& x, const map& y); - template + template bool operator> (const map& x, const map& y); - template + template bool operator>=(const map& x, const map& y); - template + template bool operator<=(const map& x, const map& y); - template + template void swap(map& x, map& y) noexcept(noexcept(x.swap(y))); // \ref{multimap}, class template \tcode{multimap} - template , - class Allocator = allocator>> + template, + class Allocator = allocator>> class multimap; - template + template bool operator==(const multimap& x, const multimap& y); - template + template bool operator< (const multimap& x, const multimap& y); - template + template bool operator!=(const multimap& x, const multimap& y); - template + template bool operator> (const multimap& x, const multimap& y); - template + template bool operator>=(const multimap& x, const multimap& y); - template + template bool operator<=(const multimap& x, const multimap& y); - template + template void swap(multimap& x, multimap& y) noexcept(noexcept(x.swap(y))); namespace pmr { - template > + template> using map = std::map>>; - template > + template> using multimap = std::multimap>>; } @@ -5894,66 +5894,66 @@ namespace std { // \ref{set}, class template \tcode{set} - template , class Allocator = allocator> + template, class Allocator = allocator> class set; - template + template bool operator==(const set& x, const set& y); - template + template bool operator< (const set& x, const set& y); - template + template bool operator!=(const set& x, const set& y); - template + template bool operator> (const set& x, const set& y); - template + template bool operator>=(const set& x, const set& y); - template + template bool operator<=(const set& x, const set& y); - template + template void swap(set& x, set& y) noexcept(noexcept(x.swap(y))); // \ref{multiset}, class template \tcode{multiset} - template , class Allocator = allocator> + template, class Allocator = allocator> class multiset; - template + template bool operator==(const multiset& x, const multiset& y); - template + template bool operator< (const multiset& x, const multiset& y); - template + template bool operator!=(const multiset& x, const multiset& y); - template + template bool operator> (const multiset& x, const multiset& y); - template + template bool operator>=(const multiset& x, const multiset& y); - template + template bool operator<=(const multiset& x, const multiset& y); - template + template void swap(multiset& x, multiset& y) noexcept(noexcept(x.swap(y))); namespace pmr { - template > + template> using set = std::set>; - template > + template> using multiset = std::multiset>; } } @@ -6004,8 +6004,8 @@ \begin{codeblock} namespace std { - template , - class Allocator = allocator>> + template, + class Allocator = allocator>> class map { public: // types @@ -6041,7 +6041,7 @@ // \ref{map.cons}, construct/copy/destroy map() : map(Compare()) { } explicit map(const Compare& comp, const Allocator& = Allocator()); - template + template map(InputIterator first, InputIterator last, const Compare& comp = Compare(), const Allocator& = Allocator()); map(const map& x); @@ -6052,7 +6052,7 @@ map(initializer_list, const Compare& = Compare(), const Allocator& = Allocator()); - template + template map(InputIterator first, InputIterator last, const Allocator& a) : map(first, last, Compare(), a) { } map(initializer_list il, const Allocator& a) @@ -6093,16 +6093,16 @@ const T& at(const key_type& x) const; // \ref{map.modifiers}, modifiers - template pair emplace(Args&&... args); - template iterator emplace_hint(const_iterator position, Args&&... args); + template pair emplace(Args&&... args); + template iterator emplace_hint(const_iterator position, Args&&... args); pair insert(const value_type& x); pair insert(value_type&& x); - template pair insert(P&& x); + template pair insert(P&& x); iterator insert(const_iterator position, const value_type& x); iterator insert(const_iterator position, value_type&& x); - template + template iterator insert(const_iterator position, P&&); - template + template void insert(InputIterator first, InputIterator last); void insert(initializer_list); @@ -6111,21 +6111,21 @@ insert_return_type insert(node_type&& nh); iterator insert(const_iterator hint, node_type&& nh); - template + template pair try_emplace(const key_type& k, Args&&... args); - template + template pair try_emplace(key_type&& k, Args&&... args); - template + template iterator try_emplace(const_iterator hint, const key_type& k, Args&&... args); - template + template iterator try_emplace(const_iterator hint, key_type&& k, Args&&... args); - template + template pair insert_or_assign(const key_type& k, M&& obj); - template + template pair insert_or_assign(key_type&& k, M&& obj); - template + template iterator insert_or_assign(const_iterator hint, const key_type& k, M&& obj); - template + template iterator insert_or_assign(const_iterator hint, key_type&& k, M&& obj); iterator erase(iterator position); @@ -6153,27 +6153,27 @@ // map operations iterator find(const key_type& x); const_iterator find(const key_type& x) const; - template iterator find(const K& x); - template const_iterator find(const K& x) const; + template iterator find(const K& x); + template const_iterator find(const K& x) const; size_type count(const key_type& x) const; - template size_type count(const K& x) const; + template size_type count(const K& x) const; iterator lower_bound(const key_type& x); const_iterator lower_bound(const key_type& x) const; - template iterator lower_bound(const K& x); - template const_iterator lower_bound(const K& x) const; + template iterator lower_bound(const K& x); + template const_iterator lower_bound(const K& x) const; iterator upper_bound(const key_type& x); const_iterator upper_bound(const key_type& x) const; - template iterator upper_bound(const K& x); - template const_iterator upper_bound(const K& x) const; + template iterator upper_bound(const K& x); + template const_iterator upper_bound(const K& x) const; pair equal_range(const key_type& x); pair equal_range(const key_type& x) const; - template + template pair equal_range(const K& x); - template + template pair equal_range(const K& x) const; }; @@ -6187,7 +6187,7 @@ map(initializer_list>, Compare = Compare(), Allocator = Allocator()) -> map; - template + template map(InputIterator, InputIterator, Allocator) -> map, iter_val_t, less>, Allocator>; @@ -6196,7 +6196,7 @@ map(initializer_list>, Allocator) -> map, Allocator>; // \ref{map.special}, specialized algorithms - template + template void swap(map& x, map& y) noexcept(noexcept(x.swap(y))); @@ -6227,7 +6227,7 @@ \indexlibrary{\idxcode{map}!constructor}% \begin{itemdecl} -template +template map(InputIterator first, InputIterator last, const Compare& comp = Compare(), const Allocator& = Allocator()); \end{itemdecl} @@ -6298,9 +6298,9 @@ \indexlibrarymember{insert}{map}% \begin{itemdecl} -template +template pair insert(P&& x); -template +template iterator insert(const_iterator position, P&& x); \end{itemdecl} @@ -6320,9 +6320,9 @@ \indexlibrarymember{try_emplace}{map}% \begin{itemdecl} -template +template pair try_emplace(const key_type& k, Args&&... args); -template +template iterator try_emplace(const_iterator hint, const key_type& k, Args&&... args); \end{itemdecl} @@ -6358,9 +6358,9 @@ \indexlibrarymember{try_emplace}{map}% \begin{itemdecl} -template +template pair try_emplace(key_type&& k, Args&&... args); -template +template iterator try_emplace(const_iterator hint, key_type&& k, Args&&... args); \end{itemdecl} @@ -6396,9 +6396,9 @@ \indexlibrarymember{insert_or_assign}{map}% \begin{itemdecl} -template +template pair insert_or_assign(const key_type& k, M&& obj); -template +template iterator insert_or_assign(const_iterator hint, const key_type& k, M&& obj); \end{itemdecl} @@ -6433,9 +6433,9 @@ \indexlibrarymember{insert_or_assign}{map}% \begin{itemdecl} -template +template pair insert_or_assign(key_type&& k, M&& obj); -template +template iterator insert_or_assign(const_iterator hint, key_type&& k, M&& obj); \end{itemdecl} @@ -6472,7 +6472,7 @@ \indexlibrarymember{swap}{map}% \begin{itemdecl} -template +template void swap(map& x, map& y) noexcept(noexcept(x.swap(y))); @@ -6536,8 +6536,8 @@ \begin{codeblock} namespace std { - template , - class Allocator = allocator>> + template, + class Allocator = allocator>> class multimap { public: // types @@ -6572,7 +6572,7 @@ // \ref{multimap.cons}, construct/copy/destroy multimap() : multimap(Compare()) { } explicit multimap(const Compare& comp, const Allocator& = Allocator()); - template + template multimap(InputIterator first, InputIterator last, const Compare& comp = Compare(), const Allocator& = Allocator()); @@ -6584,7 +6584,7 @@ multimap(initializer_list, const Compare& = Compare(), const Allocator& = Allocator()); - template + template multimap(InputIterator first, InputIterator last, const Allocator& a) : multimap(first, last, Compare(), a) { } multimap(initializer_list il, const Allocator& a) @@ -6619,15 +6619,15 @@ size_type max_size() const noexcept; // \ref{multimap.modifiers}, modifiers - template iterator emplace(Args&&... args); - template iterator emplace_hint(const_iterator position, Args&&... args); + template iterator emplace(Args&&... args); + template iterator emplace_hint(const_iterator position, Args&&... args); iterator insert(const value_type& x); iterator insert(value_type&& x); - template iterator insert(P&& x); + template iterator insert(P&& x); iterator insert(const_iterator position, const value_type& x); iterator insert(const_iterator position, value_type&& x); - template iterator insert(const_iterator position, P&& x); - template + template iterator insert(const_iterator position, P&& x); + template void insert(InputIterator first, InputIterator last); void insert(initializer_list); @@ -6661,27 +6661,27 @@ // map operations iterator find(const key_type& x); const_iterator find(const key_type& x) const; - template iterator find(const K& x); - template const_iterator find(const K& x) const; + template iterator find(const K& x); + template const_iterator find(const K& x) const; size_type count(const key_type& x) const; - template size_type count(const K& x) const; + template size_type count(const K& x) const; iterator lower_bound(const key_type& x); const_iterator lower_bound(const key_type& x) const; - template iterator lower_bound(const K& x); - template const_iterator lower_bound(const K& x) const; + template iterator lower_bound(const K& x); + template const_iterator lower_bound(const K& x) const; iterator upper_bound(const key_type& x); const_iterator upper_bound(const key_type& x) const; - template iterator upper_bound(const K& x); - template const_iterator upper_bound(const K& x) const; + template iterator upper_bound(const K& x); + template const_iterator upper_bound(const K& x) const; pair equal_range(const key_type& x); pair equal_range(const key_type& x) const; - template + template pair equal_range(const K& x); - template + template pair equal_range(const K& x) const; }; @@ -6705,7 +6705,7 @@ -> multimap, Allocator>; // \ref{multimap.special}, specialized algorithms - template + template void swap(multimap& x, multimap& y) noexcept(noexcept(x.swap(y))); @@ -6735,7 +6735,7 @@ \indexlibrary{\idxcode{multimap}!constructor}% \begin{itemdecl} -template +template multimap(InputIterator first, InputIterator last, const Compare& comp = Compare(), const Allocator& = Allocator()); @@ -6764,8 +6764,8 @@ \indexlibrarymember{insert}{multimap}% \begin{itemdecl} -template iterator insert(P&& x); -template iterator insert(const_iterator position, P&& x); +template iterator insert(P&& x); +template iterator insert(const_iterator position, P&& x); \end{itemdecl} \begin{itemdescr} @@ -6786,7 +6786,7 @@ \indexlibrarymember{swap}{multimap}% \begin{itemdecl} -template +template void swap(multimap& x, multimap& y) noexcept(noexcept(x.swap(y))); @@ -6844,8 +6844,8 @@ \begin{codeblock} namespace std { - template , - class Allocator = allocator> + template, + class Allocator = allocator> class set { public: // types @@ -6870,7 +6870,7 @@ // \ref{set.cons}, construct/copy/destroy set() : set(Compare()) { } explicit set(const Compare& comp, const Allocator& = Allocator()); - template + template set(InputIterator first, InputIterator last, const Compare& comp = Compare(), const Allocator& = Allocator()); set(const set& x); @@ -6880,7 +6880,7 @@ set(set&&, const Allocator&); set(initializer_list, const Compare& = Compare(), const Allocator& = Allocator()); - template + template set(InputIterator first, InputIterator last, const Allocator& a) : set(first, last, Compare(), a) { } set(initializer_list il, const Allocator& a) @@ -6915,13 +6915,13 @@ size_type max_size() const noexcept; // modifiers - template pair emplace(Args&&... args); - template iterator emplace_hint(const_iterator position, Args&&... args); + template pair emplace(Args&&... args); + template iterator emplace_hint(const_iterator position, Args&&... args); pair insert(const value_type& x); pair insert(value_type&& x); iterator insert(const_iterator position, const value_type& x); iterator insert(const_iterator position, value_type&& x); - template + template void insert(InputIterator first, InputIterator last); void insert(initializer_list); @@ -6955,27 +6955,27 @@ // set operations iterator find(const key_type& x); const_iterator find(const key_type& x) const; - template iterator find(const K& x); - template const_iterator find(const K& x) const; + template iterator find(const K& x); + template const_iterator find(const K& x) const; size_type count(const key_type& x) const; - template size_type count(const K& x) const; + template size_type count(const K& x) const; iterator lower_bound(const key_type& x); const_iterator lower_bound(const key_type& x) const; - template iterator lower_bound(const K& x); - template const_iterator lower_bound(const K& x) const; + template iterator lower_bound(const K& x); + template const_iterator lower_bound(const K& x) const; iterator upper_bound(const key_type& x); const_iterator upper_bound(const key_type& x) const; - template iterator upper_bound(const K& x); - template const_iterator upper_bound(const K& x) const; + template iterator upper_bound(const K& x); + template const_iterator upper_bound(const K& x) const; pair equal_range(const key_type& x); pair equal_range(const key_type& x) const; - template + template pair equal_range(const K& x); - template + template pair equal_range(const K& x) const; }; @@ -6999,7 +6999,7 @@ set(initializer_list, Allocator) -> set, Allocator>; // \ref{set.special}, specialized algorithms - template + template void swap(set& x, set& y) noexcept(noexcept(x.swap(y))); @@ -7027,7 +7027,7 @@ \indexlibrary{\idxcode{set}!constructor}% \begin{itemdecl} -template +template set(InputIterator first, InputIterator last, const Compare& comp = Compare(), const Allocator& = Allocator()); \end{itemdecl} @@ -7055,7 +7055,7 @@ \indexlibrarymember{swap}{set}% \begin{itemdecl} -template +template void swap(set& x, set& y) noexcept(noexcept(x.swap(y))); @@ -7112,8 +7112,8 @@ \begin{codeblock} namespace std { - template , - class Allocator = allocator> + template, + class Allocator = allocator> class multiset { public: // types @@ -7137,7 +7137,7 @@ // \ref{multiset.cons}, construct/copy/destroy multiset() : multiset(Compare()) { } explicit multiset(const Compare& comp, const Allocator& = Allocator()); - template + template multiset(InputIterator first, InputIterator last, const Compare& comp = Compare(), const Allocator& = Allocator()); multiset(const multiset& x); @@ -7147,7 +7147,7 @@ multiset(multiset&&, const Allocator&); multiset(initializer_list, const Compare& = Compare(), const Allocator& = Allocator()); - template + template multiset(InputIterator first, InputIterator last, const Allocator& a) : multiset(first, last, Compare(), a) { } multiset(initializer_list il, const Allocator& a) @@ -7182,13 +7182,13 @@ size_type max_size() const noexcept; // modifiers - template iterator emplace(Args&&... args); - template iterator emplace_hint(const_iterator position, Args&&... args); + template iterator emplace(Args&&... args); + template iterator emplace_hint(const_iterator position, Args&&... args); iterator insert(const value_type& x); iterator insert(value_type&& x); iterator insert(const_iterator position, const value_type& x); iterator insert(const_iterator position, value_type&& x); - template + template void insert(InputIterator first, InputIterator last); void insert(initializer_list); @@ -7222,27 +7222,27 @@ // set operations iterator find(const key_type& x); const_iterator find(const key_type& x) const; - template iterator find(const K& x); - template const_iterator find(const K& x) const; + template iterator find(const K& x); + template const_iterator find(const K& x) const; size_type count(const key_type& x) const; - template size_type count(const K& x) const; + template size_type count(const K& x) const; iterator lower_bound(const key_type& x); const_iterator lower_bound(const key_type& x) const; - template iterator lower_bound(const K& x); - template const_iterator lower_bound(const K& x) const; + template iterator lower_bound(const K& x); + template const_iterator lower_bound(const K& x) const; iterator upper_bound(const key_type& x); const_iterator upper_bound(const key_type& x) const; - template iterator upper_bound(const K& x); - template const_iterator upper_bound(const K& x) const; + template iterator upper_bound(const K& x); + template const_iterator upper_bound(const K& x) const; pair equal_range(const key_type& x); pair equal_range(const key_type& x) const; - template + template pair equal_range(const K& x); - template + template pair equal_range(const K& x) const; }; @@ -7266,7 +7266,7 @@ multiset(initializer_list, Allocator) -> multiset, Allocator>; // \ref{multiset.special}, specialized algorithms - template + template void swap(multiset& x, multiset& y) noexcept(noexcept(x.swap(y))); @@ -7294,7 +7294,7 @@ \indexlibrary{\idxcode{multiset}!constructor}% \begin{itemdecl} -template +template multiset(InputIterator first, InputIterator last, const Compare& comp = Compare(), const Allocator& = Allocator()); \end{itemdecl} @@ -7322,7 +7322,7 @@ \indexlibrarymember{swap}{multiset}% \begin{itemdecl} -template +template void swap(multiset& x, multiset& y) noexcept(noexcept(x.swap(y))); @@ -7357,57 +7357,57 @@ namespace std { // \ref{unord.map}, class template \tcode{unordered_map} - template , - class Pred = equal_to, - class Alloc = allocator>> + template, + class Pred = equal_to, + class Alloc = allocator>> class unordered_map; // \ref{unord.multimap}, class template \tcode{unordered_multimap} - template , - class Pred = equal_to, - class Alloc = allocator>> + template, + class Pred = equal_to, + class Alloc = allocator>> class unordered_multimap; - template + template bool operator==(const unordered_map& a, const unordered_map& b); - template + template bool operator!=(const unordered_map& a, const unordered_map& b); - template + template bool operator==(const unordered_multimap& a, const unordered_multimap& b); - template + template bool operator!=(const unordered_multimap& a, const unordered_multimap& b); - template + template void swap(unordered_map& x, unordered_map& y) noexcept(noexcept(x.swap(y))); - template + template void swap(unordered_multimap& x, unordered_multimap& y) noexcept(noexcept(x.swap(y))); namespace pmr { - template , - class Pred = equal_to> + template, + class Pred = equal_to> using unordered_map = std::unordered_map>>; - template , - class Pred = equal_to> + template, + class Pred = equal_to> using unordered_multimap = std::unordered_multimap>>; @@ -7425,53 +7425,53 @@ namespace std { // \ref{unord.set}, class template \tcode{unordered_set} - template , - class Pred = equal_to, - class Alloc = allocator> + template, + class Pred = equal_to, + class Alloc = allocator> class unordered_set; // \ref{unord.multiset}, class template \tcode{unordered_multiset} - template , - class Pred = equal_to, - class Alloc = allocator> + template, + class Pred = equal_to, + class Alloc = allocator> class unordered_multiset; - template + template bool operator==(const unordered_set& a, const unordered_set& b); - template + template bool operator!=(const unordered_set& a, const unordered_set& b); - template + template bool operator==(const unordered_multiset& a, const unordered_multiset& b); - template + template bool operator!=(const unordered_multiset& a, const unordered_multiset& b); - template + template void swap(unordered_set& x, unordered_set& y) noexcept(noexcept(x.swap(y))); - template + template void swap(unordered_multiset& x, unordered_multiset& y) noexcept(noexcept(x.swap(y))); namespace pmr { - template , - class Pred = equal_to> + template, + class Pred = equal_to> using unordered_set = std::unordered_set>; - template , - class Pred = equal_to> + template, + class Pred = equal_to> using unordered_multiset = std::unordered_multiset>; } @@ -7504,11 +7504,11 @@ \indexlibrary{\idxcode{unordered_map}}% \begin{codeblock} namespace std { - template , - class Pred = equal_to, - class Allocator = allocator>> + template, + class Pred = equal_to, + class Allocator = allocator>> class unordered_map { public: // types @@ -7538,7 +7538,7 @@ const hasher& hf = hasher(), const key_equal& eql = key_equal(), const allocator_type& a = allocator_type()); - template + template unordered_map(InputIterator f, InputIterator l, size_type n = @\seebelow@, const hasher& hf = hasher(), @@ -7558,10 +7558,10 @@ : unordered_map(n, hasher(), key_equal(), a) { } unordered_map(size_type n, const hasher& hf, const allocator_type& a) : unordered_map(n, hf, key_equal(), a) { } - template + template unordered_map(InputIterator f, InputIterator l, size_type n, const allocator_type& a) : unordered_map(f, l, n, hasher(), key_equal(), a) { } - template + template unordered_map(InputIterator f, InputIterator l, size_type n, const hasher& hf, const allocator_type& a) : unordered_map(f, l, n, hf, key_equal(), a) { } @@ -7593,15 +7593,15 @@ size_type max_size() const noexcept; // \ref{unord.map.modifiers}, modifiers - template pair emplace(Args&&... args); - template iterator emplace_hint(const_iterator position, Args&&... args); + template pair emplace(Args&&... args); + template iterator emplace_hint(const_iterator position, Args&&... args); pair insert(const value_type& obj); pair insert(value_type&& obj); - template pair insert(P&& obj); + template pair insert(P&& obj); iterator insert(const_iterator hint, const value_type& obj); iterator insert(const_iterator hint, value_type&& obj); - template iterator insert(const_iterator hint, P&& obj); - template void insert(InputIterator first, InputIterator last); + template iterator insert(const_iterator hint, P&& obj); + template void insert(InputIterator first, InputIterator last); void insert(initializer_list); node_type extract(const_iterator position); @@ -7609,21 +7609,21 @@ insert_return_type insert(node_type&& nh); iterator insert(const_iterator hint, node_type&& nh); - template + template pair try_emplace(const key_type& k, Args&&... args); - template + template pair try_emplace(key_type&& k, Args&&... args); - template + template iterator try_emplace(const_iterator hint, const key_type& k, Args&&... args); - template + template iterator try_emplace(const_iterator hint, key_type&& k, Args&&... args); - template + template pair insert_or_assign(const key_type& k, M&& obj); - template + template pair insert_or_assign(key_type&& k, M&& obj); - template + template iterator insert_or_assign(const_iterator hint, const key_type& k, M&& obj); - template + template iterator insert_or_assign(const_iterator hint, key_type&& k, M&& obj); iterator erase(iterator position); @@ -7715,12 +7715,12 @@ -> unordered_map, iter_val_t, Hash, equal_to>, Allocator>; - template + template unordered_map(initializer_list>, typename @\seebelow@::size_type, Allocator) -> unordered_map, equal_to, Allocator>; - template + template unordered_map(initializer_list>, Allocator) -> unordered_map, equal_to, Allocator>; @@ -7730,7 +7730,7 @@ -> unordered_map, Allocator>; // \ref{unord.map.swap}, swap - template + template void swap(unordered_map& x, unordered_map& y) noexcept(noexcept(x.swap(y))); @@ -7767,7 +7767,7 @@ \indexlibrary{\idxcode{unordered_map}!constructor}% \begin{itemdecl} -template +template unordered_map(InputIterator f, InputIterator l, size_type n = @\seebelow@, const hasher& hf = hasher(), @@ -7839,7 +7839,7 @@ \indexlibrarymember{unordered_map}{insert}% \begin{itemdecl} -template +template pair insert(P&& obj); \end{itemdecl} @@ -7854,7 +7854,7 @@ \indexlibrarymember{unordered_map}{insert}% \begin{itemdecl} -template +template iterator insert(const_iterator hint, P&& obj); \end{itemdecl} @@ -7870,9 +7870,9 @@ \indexlibrarymember{try_emplace}{unordered_map}% \begin{itemdecl} -template +template pair try_emplace(const key_type& k, Args&&... args); -template +template iterator try_emplace(const_iterator hint, const key_type& k, Args&&... args); \end{itemdecl} @@ -7908,9 +7908,9 @@ \indexlibrarymember{try_emplace}{unordered_map}% \begin{itemdecl} -template +template pair try_emplace(key_type&& k, Args&&... args); -template +template iterator try_emplace(const_iterator hint, key_type&& k, Args&&... args); \end{itemdecl} @@ -7946,9 +7946,9 @@ \indexlibrarymember{insert_or_assign}{unordered_map}% \begin{itemdecl} -template +template pair insert_or_assign(const key_type& k, M&& obj); -template +template iterator insert_or_assign(const_iterator hint, const key_type& k, M&& obj); \end{itemdecl} @@ -7983,9 +7983,9 @@ \indexlibrarymember{insert_or_assign}{unordered_map}% \begin{itemdecl} -template +template pair insert_or_assign(key_type&& k, M&& obj); -template +template iterator insert_or_assign(const_iterator hint, key_type&& k, M&& obj); \end{itemdecl} @@ -8022,7 +8022,7 @@ \indexlibrarymember{unordered_map}{swap}% \begin{itemdecl} -template +template void swap(unordered_map& x, unordered_map& y) noexcept(noexcept(x.swap(y))); @@ -8064,11 +8064,11 @@ \indexlibrary{\idxcode{unordered_multimap}}% \begin{codeblock} namespace std { - template , - class Pred = equal_to, - class Allocator = allocator>> + template, + class Pred = equal_to, + class Allocator = allocator>> class unordered_multimap { public: // types @@ -8097,7 +8097,7 @@ const hasher& hf = hasher(), const key_equal& eql = key_equal(), const allocator_type& a = allocator_type()); - template + template unordered_multimap(InputIterator f, InputIterator l, size_type n = @\seebelow@, const hasher& hf = hasher(), @@ -8117,10 +8117,10 @@ : unordered_multimap(n, hasher(), key_equal(), a) { } unordered_multimap(size_type n, const hasher& hf, const allocator_type& a) : unordered_multimap(n, hf, key_equal(), a) { } - template + template unordered_multimap(InputIterator f, InputIterator l, size_type n, const allocator_type& a) : unordered_multimap(f, l, n, hasher(), key_equal(), a) { } - template + template unordered_multimap(InputIterator f, InputIterator l, size_type n, const hasher& hf, const allocator_type& a) : unordered_multimap(f, l, n, hf, key_equal(), a) { } @@ -8152,15 +8152,15 @@ size_type max_size() const noexcept; // \ref{unord.multimap.modifiers}, modifiers - template iterator emplace(Args&&... args); - template iterator emplace_hint(const_iterator position, Args&&... args); + template iterator emplace(Args&&... args); + template iterator emplace_hint(const_iterator position, Args&&... args); iterator insert(const value_type& obj); iterator insert(value_type&& obj); - template iterator insert(P&& obj); + template iterator insert(P&& obj); iterator insert(const_iterator hint, const value_type& obj); iterator insert(const_iterator hint, value_type&& obj); - template iterator insert(const_iterator hint, P&& obj); - template void insert(InputIterator first, InputIterator last); + template iterator insert(const_iterator hint, P&& obj); + template void insert(InputIterator first, InputIterator last); void insert(initializer_list); node_type extract(const_iterator position); @@ -8253,12 +8253,12 @@ -> unordered_multimap, iter_val_t, Hash, equal_to>, Allocator>; - template + template unordered_multimap(initializer_list>, typename @\seebelow@::size_type, Allocator) -> unordered_multimap, equal_to, Allocator>; - template + template unordered_multimap(initializer_list>, Allocator) -> unordered_multimap, equal_to, Allocator>; @@ -8268,7 +8268,7 @@ -> unordered_multimap, Allocator>; // \ref{unord.multimap.swap}, swap - template + template void swap(unordered_multimap& x, unordered_multimap& y) noexcept(noexcept(x.swap(y))); @@ -8305,7 +8305,7 @@ \indexlibrary{\idxcode{unordered_multimap}!constructor}% \begin{itemdecl} -template +template unordered_multimap(InputIterator f, InputIterator l, size_type n = @\seebelow@, const hasher& hf = hasher(), @@ -8338,7 +8338,7 @@ \indexlibrarymember{unordered_multimap}{insert}% \begin{itemdecl} -template +template iterator insert(P&& obj); \end{itemdecl} @@ -8353,7 +8353,7 @@ \indexlibrarymember{unordered_multimap}{insert}% \begin{itemdecl} -template +template iterator insert(const_iterator hint, P&& obj); \end{itemdecl} @@ -8371,7 +8371,7 @@ \indexlibrarymember{unordered_multimap}{swap}% \begin{itemdecl} -template +template void swap(unordered_multimap& x, unordered_multimap& y) noexcept(noexcept(x.swap(y))); @@ -8408,10 +8408,10 @@ \indexlibrary{\idxcode{unordered_set}}% \begin{codeblock} namespace std { - template , - class Pred = equal_to, - class Allocator = allocator> + template, + class Pred = equal_to, + class Allocator = allocator> class unordered_set { public: // types @@ -8440,7 +8440,7 @@ const hasher& hf = hasher(), const key_equal& eql = key_equal(), const allocator_type& a = allocator_type()); - template + template unordered_set(InputIterator f, InputIterator l, size_type n = @\seebelow@, const hasher& hf = hasher(), @@ -8460,10 +8460,10 @@ : unordered_set(n, hasher(), key_equal(), a) { } unordered_set(size_type n, const hasher& hf, const allocator_type& a) : unordered_set(n, hf, key_equal(), a) { } - template + template unordered_set(InputIterator f, InputIterator l, size_type n, const allocator_type& a) : unordered_set(f, l, n, hasher(), key_equal(), a) { } - template + template unordered_set(InputIterator f, InputIterator l, size_type n, const hasher& hf, const allocator_type& a) : unordered_set(f, l, n, hf, key_equal(), a) { } @@ -8495,13 +8495,13 @@ size_type max_size() const noexcept; // modifiers - template pair emplace(Args&&... args); - template iterator emplace_hint(const_iterator position, Args&&... args); + template pair emplace(Args&&... args); + template iterator emplace_hint(const_iterator position, Args&&... args); pair insert(const value_type& obj); pair insert(value_type&& obj); iterator insert(const_iterator hint, const value_type& obj); iterator insert(const_iterator hint, value_type&& obj); - template void insert(InputIterator first, InputIterator last); + template void insert(InputIterator first, InputIterator last); void insert(initializer_list); node_type extract(const_iterator position); @@ -8597,7 +8597,7 @@ -> unordered_set, Allocator>; // \ref{unord.set.swap}, swap - template + template void swap(unordered_set& x, unordered_set& y) noexcept(noexcept(x.swap(y))); @@ -8635,7 +8635,7 @@ \indexlibrary{\idxcode{unordered_set}!constructor}% \begin{itemdecl} -template +template unordered_set(InputIterator f, InputIterator l, size_type n = @\seebelow@, const hasher& hf = hasher(), @@ -8668,7 +8668,7 @@ \indexlibrarymember{unordered_set}{swap}% \begin{itemdecl} -template +template void swap(unordered_set& x, unordered_set& y) noexcept(noexcept(x.swap(y))); @@ -8711,10 +8711,10 @@ \indexlibrary{\idxcode{unordered_multiset}}% \begin{codeblock} namespace std { - template , - class Pred = equal_to, - class Allocator = allocator> + template, + class Pred = equal_to, + class Allocator = allocator> class unordered_multiset { public: // types @@ -8742,7 +8742,7 @@ const hasher& hf = hasher(), const key_equal& eql = key_equal(), const allocator_type& a = allocator_type()); - template + template unordered_multiset(InputIterator f, InputIterator l, size_type n = @\seebelow@, const hasher& hf = hasher(), @@ -8762,10 +8762,10 @@ : unordered_multiset(n, hasher(), key_equal(), a) { } unordered_multiset(size_type n, const hasher& hf, const allocator_type& a) : unordered_multiset(n, hf, key_equal(), a) { } - template + template unordered_multiset(InputIterator f, InputIterator l, size_type n, const allocator_type& a) : unordered_multiset(f, l, n, hasher(), key_equal(), a) { } - template + template unordered_multiset(InputIterator f, InputIterator l, size_type n, const hasher& hf, const allocator_type& a) : unordered_multiset(f, l, n, hf, key_equal(), a) { } @@ -8797,13 +8797,13 @@ size_type max_size() const noexcept; // modifiers - template iterator emplace(Args&&... args); - template iterator emplace_hint(const_iterator position, Args&&... args); + template iterator emplace(Args&&... args); + template iterator emplace_hint(const_iterator position, Args&&... args); iterator insert(const value_type& obj); iterator insert(value_type&& obj); iterator insert(const_iterator hint, const value_type& obj); iterator insert(const_iterator hint, value_type&& obj); - template void insert(InputIterator first, InputIterator last); + template void insert(InputIterator first, InputIterator last); void insert(initializer_list); node_type extract(const_iterator position); @@ -8899,7 +8899,7 @@ -> unordered_multiset, Allocator>; // \ref{unord.multiset.swap}, swap - template + template void swap(unordered_multiset& x, unordered_multiset& y) noexcept(noexcept(x.swap(y))); @@ -8937,7 +8937,7 @@ \indexlibrary{\idxcode{unordered_multiset}!constructor}% \begin{itemdecl} -template +template unordered_multiset(InputIterator f, InputIterator l, size_type n = @\seebelow@, const hasher& hf = hasher(), @@ -8969,7 +8969,7 @@ \indexlibrarymember{unordered_multiset}{swap}% \begin{itemdecl} -template +template void swap(unordered_multiset& x, unordered_multiset& y) noexcept(noexcept(x.swap(y))); @@ -9018,27 +9018,27 @@ #include namespace std { - template > class queue; - template , - class Compare = less> + template> class queue; + template, + class Compare = less> class priority_queue; - template + template bool operator==(const queue& x, const queue& y); - template + template bool operator< (const queue& x, const queue& y); - template + template bool operator!=(const queue& x, const queue& y); - template + template bool operator> (const queue& x, const queue& y); - template + template bool operator>=(const queue& x, const queue& y); - template + template bool operator<=(const queue& x, const queue& y); - template + template void swap(queue& x, queue& y) noexcept(noexcept(x.swap(y))); - template + template void swap(priority_queue& x, priority_queue& y) noexcept(noexcept(x.swap(y))); } @@ -9051,22 +9051,22 @@ #include namespace std { - template > class stack; + template> class stack; - template + template bool operator==(const stack& x, const stack& y); - template + template bool operator< (const stack& x, const stack& y); - template + template bool operator!=(const stack& x, const stack& y); - template + template bool operator> (const stack& x, const stack& y); - template + template bool operator>=(const stack& x, const stack& y); - template + template bool operator<=(const stack& x, const stack& y); - template + template void swap(stack& x, stack& y) noexcept(noexcept(x.swap(y))); } \end{codeblock} @@ -9093,7 +9093,7 @@ \begin{codeblock} namespace std { - template > + template> class queue { public: using value_type = typename Container::value_type; @@ -9108,11 +9108,11 @@ public: explicit queue(const Container&); explicit queue(Container&& = Container()); - template explicit queue(const Alloc&); - template queue(const Container&, const Alloc&); - template queue(Container&&, const Alloc&); - template queue(const queue&, const Alloc&); - template queue(queue&&, const Alloc&); + template explicit queue(const Alloc&); + template queue(const Container&, const Alloc&); + template queue(Container&&, const Alloc&); + template queue(const queue&, const Alloc&); + template queue(queue&&, const Alloc&); [[nodiscard]] bool empty() const { return c.empty(); } size_type size() const { return c.size(); } @@ -9122,7 +9122,7 @@ const_reference back() const { return c.back(); } void push(const value_type& x) { c.push_back(x); } void push(value_type&& x) { c.push_back(std::move(x)); } - template + template decltype(auto) emplace(Args&&... args) { return c.emplace_back(std::forward(args)...); } void pop() { c.pop_front(); } @@ -9136,10 +9136,10 @@ template queue(Container, Allocator) -> queue; - template + template void swap(queue& x, queue& y) noexcept(noexcept(x.swap(y))); - template + template struct uses_allocator, Alloc> : uses_allocator::type { }; } @@ -9172,7 +9172,7 @@ the constructors in this subclause shall not participate in overload resolution. \begin{itemdecl} -template explicit queue(const Alloc& a); +template explicit queue(const Alloc& a); \end{itemdecl} \begin{itemdescr} @@ -9181,7 +9181,7 @@ \end{itemdescr} \begin{itemdecl} -template queue(const container_type& cont, const Alloc& a); +template queue(const container_type& cont, const Alloc& a); \end{itemdecl} \begin{itemdescr} @@ -9191,7 +9191,7 @@ \end{itemdescr} \begin{itemdecl} -template queue(container_type&& cont, const Alloc& a); +template queue(container_type&& cont, const Alloc& a); \end{itemdecl} \begin{itemdescr} @@ -9201,7 +9201,7 @@ \end{itemdescr} \begin{itemdecl} -template queue(const queue& q, const Alloc& a); +template queue(const queue& q, const Alloc& a); \end{itemdecl} \begin{itemdescr} @@ -9211,7 +9211,7 @@ \end{itemdescr} \begin{itemdecl} -template queue(queue&& q, const Alloc& a); +template queue(queue&& q, const Alloc& a); \end{itemdecl} \begin{itemdescr} @@ -9224,7 +9224,7 @@ \indexlibrary{\idxcode{operator==}!\idxcode{queue}}% \begin{itemdecl} -template +template bool operator==(const queue& x, const queue& y); \end{itemdecl} @@ -9236,7 +9236,7 @@ \indexlibrary{\idxcode{operator"!=}!\idxcode{queue}}% \begin{itemdecl} -template +template bool operator!=(const queue& x, const queue& y); \end{itemdecl} @@ -9248,7 +9248,7 @@ \indexlibrary{\idxcode{operator<}!\idxcode{queue}}% \begin{itemdecl} -template +template bool operator< (const queue& x, const queue& y); \end{itemdecl} @@ -9260,7 +9260,7 @@ \indexlibrary{\idxcode{operator<=}!\idxcode{queue}}% \begin{itemdecl} -template +template bool operator<=(const queue& x, const queue& y); \end{itemdecl} @@ -9272,7 +9272,7 @@ \indexlibrary{\idxcode{operator>}!\idxcode{queue}}% \begin{itemdecl} -template +template bool operator> (const queue& x, const queue& y); \end{itemdecl} @@ -9284,7 +9284,7 @@ \indexlibrary{\idxcode{operator>=}!\idxcode{queue}}% \begin{itemdecl} -template +template bool operator>=(const queue& x, const queue& y); \end{itemdecl} @@ -9299,7 +9299,7 @@ \indexlibrarymember{swap}{queue}% \begin{itemdecl} -template +template void swap(queue& x, queue& y) noexcept(noexcept(x.swap(y))); \end{itemdecl} @@ -9337,8 +9337,8 @@ \begin{codeblock} namespace std { - template , - class Compare = less> + template, + class Compare = less> class priority_queue { public: using value_type = typename Container::value_type; @@ -9355,25 +9355,25 @@ public: priority_queue(const Compare& x, const Container&); explicit priority_queue(const Compare& x = Compare(), Container&& = Container()); - template + template priority_queue(InputIterator first, InputIterator last, const Compare& x, const Container&); - template + template priority_queue(InputIterator first, InputIterator last, const Compare& x = Compare(), Container&& = Container()); - template explicit priority_queue(const Alloc&); - template priority_queue(const Compare&, const Alloc&); - template priority_queue(const Compare&, const Container&, const Alloc&); - template priority_queue(const Compare&, Container&&, const Alloc&); - template priority_queue(const priority_queue&, const Alloc&); - template priority_queue(priority_queue&&, const Alloc&); + template explicit priority_queue(const Alloc&); + template priority_queue(const Compare&, const Alloc&); + template priority_queue(const Compare&, const Container&, const Alloc&); + template priority_queue(const Compare&, Container&&, const Alloc&); + template priority_queue(const priority_queue&, const Alloc&); + template priority_queue(priority_queue&&, const Alloc&); [[nodiscard]] bool empty() const { return c.empty(); } size_type size() const { return c.size(); } const_reference top() const { return c.front(); } void push(const value_type& x); void push(value_type&& x); - template void emplace(Args&&... args); + template void emplace(Args&&... args); void pop(); void swap(priority_queue& q) noexcept(is_nothrow_swappable_v && is_nothrow_swappable_v) @@ -9396,11 +9396,11 @@ // no equality is provided - template + template void swap(priority_queue& x, priority_queue& y) noexcept(noexcept(x.swap(y))); - template + template struct uses_allocator, Alloc> : uses_allocator::type { }; } @@ -9432,9 +9432,9 @@ \indexlibrary{\idxcode{priority_queue}!constructor}% \begin{itemdecl} -template +template priority_queue(InputIterator first, InputIterator last, const Compare& x, const Container& y); -template +template priority_queue(InputIterator first, InputIterator last, const Compare& x = Compare(), Container&& y = Container()); \end{itemdecl} @@ -9465,7 +9465,7 @@ \indexlibrary{\idxcode{priority_queue}!constructor}% \begin{itemdecl} -template explicit priority_queue(const Alloc& a); +template explicit priority_queue(const Alloc& a); \end{itemdecl} \begin{itemdescr} @@ -9475,7 +9475,7 @@ \indexlibrary{\idxcode{priority_queue}!constructor}% \begin{itemdecl} -template priority_queue(const Compare& compare, const Alloc& a); +template priority_queue(const Compare& compare, const Alloc& a); \end{itemdecl} \begin{itemdescr} @@ -9485,7 +9485,7 @@ \indexlibrary{\idxcode{priority_queue}!constructor}% \begin{itemdecl} -template +template priority_queue(const Compare& compare, const Container& cont, const Alloc& a); \end{itemdecl} @@ -9498,7 +9498,7 @@ \indexlibrary{\idxcode{priority_queue}!constructor}% \begin{itemdecl} -template +template priority_queue(const Compare& compare, Container&& cont, const Alloc& a); \end{itemdecl} @@ -9511,7 +9511,7 @@ \indexlibrary{\idxcode{priority_queue}!constructor}% \begin{itemdecl} -template priority_queue(const priority_queue& q, const Alloc& a); +template priority_queue(const priority_queue& q, const Alloc& a); \end{itemdecl} \begin{itemdescr} @@ -9522,7 +9522,7 @@ \indexlibrary{\idxcode{priority_queue}!constructor}% \begin{itemdecl} -template priority_queue(priority_queue&& q, const Alloc& a); +template priority_queue(priority_queue&& q, const Alloc& a); \end{itemdecl} \begin{itemdescr} @@ -9565,7 +9565,7 @@ \indexlibrarymember{emplace}{priority_queue}% \begin{itemdecl} -template void emplace(Args&&... args) +template void emplace(Args&&... args) \end{itemdecl} \begin{itemdescr} @@ -9598,7 +9598,7 @@ \indexlibrarymember{swap}{priority_queue}% \begin{itemdecl} -template +template void swap(priority_queue& x, priority_queue& y) noexcept(noexcept(x.swap(y))); \end{itemdecl} @@ -9636,7 +9636,7 @@ \begin{codeblock} namespace std { - template > + template> class stack { public: using value_type = typename Container::value_type; @@ -9651,11 +9651,11 @@ public: explicit stack(const Container&); explicit stack(Container&& = Container()); - template explicit stack(const Alloc&); - template stack(const Container&, const Alloc&); - template stack(Container&&, const Alloc&); - template stack(const stack&, const Alloc&); - template stack(stack&&, const Alloc&); + template explicit stack(const Alloc&); + template stack(const Container&, const Alloc&); + template stack(Container&&, const Alloc&); + template stack(const stack&, const Alloc&); + template stack(stack&&, const Alloc&); [[nodiscard]] bool empty() const { return c.empty(); } size_type size() const { return c.size(); } @@ -9663,7 +9663,7 @@ const_reference top() const { return c.back(); } void push(const value_type& x) { c.push_back(x); } void push(value_type&& x) { c.push_back(std::move(x)); } - template + template decltype(auto) emplace(Args&&... args) { return c.emplace_back(std::forward(args)...); } void pop() { c.pop_back(); } @@ -9677,7 +9677,7 @@ template stack(Container, Allocator) -> stack; - template + template struct uses_allocator, Alloc> : uses_allocator::type { }; } @@ -9713,7 +9713,7 @@ \indexlibrary{\idxcode{stack}!constructor}% \begin{itemdecl} -template explicit stack(const Alloc& a); +template explicit stack(const Alloc& a); \end{itemdecl} \begin{itemdescr} @@ -9723,7 +9723,7 @@ \indexlibrary{\idxcode{stack}!constructor}% \begin{itemdecl} -template stack(const container_type& cont, const Alloc& a); +template stack(const container_type& cont, const Alloc& a); \end{itemdecl} \begin{itemdescr} @@ -9734,7 +9734,7 @@ \indexlibrary{\idxcode{stack}!constructor}% \begin{itemdecl} -template stack(container_type&& cont, const Alloc& a); +template stack(container_type&& cont, const Alloc& a); \end{itemdecl} \begin{itemdescr} @@ -9745,7 +9745,7 @@ \indexlibrary{\idxcode{stack}!constructor}% \begin{itemdecl} -template stack(const stack& s, const Alloc& a); +template stack(const stack& s, const Alloc& a); \end{itemdecl} \begin{itemdescr} @@ -9756,7 +9756,7 @@ \indexlibrary{\idxcode{stack}!constructor}% \begin{itemdecl} -template stack(stack&& s, const Alloc& a); +template stack(stack&& s, const Alloc& a); \end{itemdecl} \begin{itemdescr} @@ -9769,7 +9769,7 @@ \indexlibrary{\idxcode{operator==}!\idxcode{stack}}% \begin{itemdecl} -template +template bool operator==(const stack& x, const stack& y); \end{itemdecl} @@ -9781,7 +9781,7 @@ \indexlibrary{\idxcode{operator"!=}!\idxcode{stack}}% \begin{itemdecl} -template +template bool operator!=(const stack& x, const stack& y); \end{itemdecl} @@ -9793,7 +9793,7 @@ \indexlibrary{\idxcode{operator<}!\idxcode{stack}}% \begin{itemdecl} -template +template bool operator< (const stack& x, const stack& y); \end{itemdecl} @@ -9805,7 +9805,7 @@ \indexlibrary{\idxcode{operator<=}!\idxcode{stack}}% \begin{itemdecl} -template +template bool operator<=(const stack& x, const stack& y); \end{itemdecl} @@ -9817,7 +9817,7 @@ \indexlibrary{\idxcode{operator>}!\idxcode{stack}}% \begin{itemdecl} -template +template bool operator> (const stack& x, const stack& y); \end{itemdecl} @@ -9829,7 +9829,7 @@ \indexlibrary{\idxcode{operator>=}!\idxcode{stack}}% \begin{itemdecl} -template +template bool operator>=(const stack& x, const stack& y); \end{itemdecl} @@ -9843,7 +9843,7 @@ \indexlibrarymember{swap}{stack}% \begin{itemdecl} -template +template void swap(stack& x, stack& y) noexcept(noexcept(x.swap(y))); \end{itemdecl} diff --git a/source/diagnostics.tex b/source/diagnostics.tex index 714f964e32..220bdd6ad8 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -787,10 +787,10 @@ class error_condition; class system_error; - template + template struct is_error_code_enum : public false_type {}; - template + template struct is_error_condition_enum : public false_type {}; enum class errc { @@ -874,12 +874,12 @@ wrong_protocol_type, // \tcode{EPROTOTYPE} }; - template <> struct is_error_condition_enum : true_type {}; + template<> struct is_error_condition_enum : true_type {}; // \ref{syserr.errcode.nonmembers}, non-member functions error_code make_error_code(errc e) noexcept; - template + template basic_ostream& operator<<(basic_ostream& os, const error_code& ec); @@ -899,14 +899,14 @@ bool operator!=(const error_condition& lhs, const error_condition& rhs) noexcept; // \ref{syserr.hash}, hash support - template struct hash; - template <> struct hash; - template <> struct hash; + template struct hash; + template<> struct hash; + template<> struct hash; // \ref{syserr}, system error support - template + template inline constexpr bool is_error_code_enum_v = is_error_code_enum::value; - template + template inline constexpr bool is_error_condition_enum_v = is_error_condition_enum::value; } \end{codeblock} @@ -1173,12 +1173,12 @@ // \ref{syserr.errcode.constructors}, constructors error_code() noexcept; error_code(int val, const error_category& cat) noexcept; - template + template error_code(ErrorCodeEnum e) noexcept; // \ref{syserr.errcode.modifiers}, modifiers void assign(int val, const error_category& cat) noexcept; - template + template error_code& operator=(ErrorCodeEnum e) noexcept; void clear() noexcept; @@ -1197,7 +1197,7 @@ // \ref{syserr.errcode.nonmembers}, non-member functions error_code make_error_code(errc e) noexcept; - template + template basic_ostream& operator<<(basic_ostream& os, const error_code& ec); } @@ -1233,7 +1233,7 @@ \indexlibrary{\idxcode{error_code}!constructor}% \begin{itemdecl} -template +template error_code(ErrorCodeEnum e) noexcept; \end{itemdecl} @@ -1263,7 +1263,7 @@ \indexlibrarymember{operator=}{error_code}% \begin{itemdecl} -template +template error_code& operator=(ErrorCodeEnum e) noexcept; \end{itemdecl} @@ -1356,7 +1356,7 @@ \indexlibrarymember{operator<<}{error_code}% \begin{itemdecl} -template +template basic_ostream& operator<<(basic_ostream& os, const error_code& ec); \end{itemdecl} @@ -1384,12 +1384,12 @@ // \ref{syserr.errcondition.constructors}, constructors error_condition() noexcept; error_condition(int val, const error_category& cat) noexcept; - template + template error_condition(ErrorConditionEnum e) noexcept; // \ref{syserr.errcondition.modifiers}, modifiers void assign(int val, const error_category& cat) noexcept; - template + template error_condition& operator=(ErrorConditionEnum e) noexcept; void clear() noexcept; @@ -1436,7 +1436,7 @@ \indexlibrary{\idxcode{error_condition}!constructor}% \begin{itemdecl} -template +template error_condition(ErrorConditionEnum e) noexcept; \end{itemdecl} @@ -1467,7 +1467,7 @@ \indexlibrarymember{operator=}{error_condition}% \begin{itemdecl} -template +template error_condition& operator=(ErrorConditionEnum e) noexcept; \end{itemdecl} @@ -1649,8 +1649,8 @@ \indexlibrary{\idxcode{hash}!\idxcode{error_code}}% \begin{itemdecl} -template <> struct hash; -template <> struct hash; +template<> struct hash; +template<> struct hash; \end{itemdecl} \begin{itemdescr} diff --git a/source/future.tex b/source/future.tex index 9bbd71e6d7..72c7630fae 100644 --- a/source/future.tex +++ b/source/future.tex @@ -233,7 +233,7 @@ \indexlibrary{\idxcode{operator"!=}}% \begin{itemdecl} -template bool operator!=(const T& x, const T& y); +template bool operator!=(const T& x, const T& y); \end{itemdecl} \begin{itemdescr} @@ -248,7 +248,7 @@ \indexlibrary{\idxcode{operator>}}% \begin{itemdecl} -template bool operator>(const T& x, const T& y); +template bool operator>(const T& x, const T& y); \end{itemdecl} \begin{itemdescr} @@ -263,7 +263,7 @@ \indexlibrary{\idxcode{operator<=}}% \begin{itemdecl} -template bool operator<=(const T& x, const T& y); +template bool operator<=(const T& x, const T& y); \end{itemdecl} \begin{itemdescr} @@ -278,7 +278,7 @@ \indexlibrary{\idxcode{operator>=}}% \begin{itemdecl} -template bool operator>=(const T& x, const T& y); +template bool operator>=(const T& x, const T& y); \end{itemdecl} \begin{itemdescr} @@ -1466,7 +1466,7 @@ using second_argument_type = weak_ptr; }; - template class reference_wrapper { + template class reference_wrapper { public: using result_type = @\seebelow@; // not always defined using argument_type = @\seebelow@; // not always defined @@ -1474,113 +1474,113 @@ using second_argument_type = @\seebelow@; // not always defined }; - template struct plus { + template struct plus { using first_argument_type = T; using second_argument_type = T; using result_type = T; }; - template struct minus { + template struct minus { using first_argument_type = T; using second_argument_type = T; using result_type = T; }; - template struct multiplies { + template struct multiplies { using first_argument_type = T; using second_argument_type = T; using result_type = T; }; - template struct divides { + template struct divides { using first_argument_type = T; using second_argument_type = T; using result_type = T; }; - template struct modulus { + template struct modulus { using first_argument_type = T; using second_argument_type = T; using result_type = T; }; - template struct negate { + template struct negate { using argument_type = T; using result_type = T; }; - template struct equal_to { + template struct equal_to { using first_argument_type = T; using second_argument_type = T; using result_type = bool; }; - template struct not_equal_to { + template struct not_equal_to { using first_argument_type = T; using second_argument_type = T; using result_type = bool; }; - template struct greater { + template struct greater { using first_argument_type = T; using second_argument_type = T; using result_type = bool; }; - template struct less { + template struct less { using first_argument_type = T; using second_argument_type = T; using result_type = bool; }; - template struct greater_equal { + template struct greater_equal { using first_argument_type = T; using second_argument_type = T; using result_type = bool; }; - template struct less_equal { + template struct less_equal { using first_argument_type = T; using second_argument_type = T; using result_type = bool; }; - template struct logical_and { + template struct logical_and { using first_argument_type = T; using second_argument_type = T; using result_type = bool; }; - template struct logical_or { + template struct logical_or { using first_argument_type = T; using second_argument_type = T; using result_type = bool; }; - template struct logical_not { + template struct logical_not { using argument_type = T; using result_type = bool; }; - template struct bit_and { + template struct bit_and { using first_argument_type = T; using second_argument_type = T; using result_type = T; }; - template struct bit_or { + template struct bit_or { using first_argument_type = T; using second_argument_type = T; using result_type = T; }; - template struct bit_xor { + template struct bit_xor { using first_argument_type = T; using second_argument_type = T; using result_type = T; }; - template struct bit_not { + template struct bit_not { using argument_type = T; using result_type = T; }; @@ -1701,7 +1701,7 @@ \indexlibrarymember{second_argument_type}{multimap::value_compare}% \begin{codeblock} namespace std { - template + template class map::value_compare { public: using result_type = bool; @@ -1709,7 +1709,7 @@ using second_argument_type = value_type; }; - template + template class multimap::value_compare { public: using result_type = bool; @@ -1732,11 +1732,11 @@ \indexlibrary{\idxcode{not2}}% \begin{codeblock} namespace std { - template class unary_negate; - template + template class unary_negate; + template constexpr unary_negate not1(const Predicate&); - template class binary_negate; - template + template class binary_negate; + template constexpr binary_negate not2(const Predicate&); } \end{codeblock} @@ -1750,7 +1750,7 @@ \indexlibrarymember{argument_type}{unary_negate}% \indexlibrarymember{result_type}{unary_negate}% \begin{codeblock} -template +template class unary_negate { public: constexpr explicit unary_negate(const Predicate& pred); @@ -1771,7 +1771,7 @@ \indexlibrary{\idxcode{not1}}% \begin{itemdecl} -template +template constexpr unary_negate not1(const Predicate& pred); \end{itemdecl} @@ -1784,7 +1784,7 @@ \indexlibrarymember{second_argument_type}{binary_negate}% \indexlibrarymember{result_type}{binary_negate}% \begin{codeblock} -template +template class binary_negate { public: constexpr explicit binary_negate(const Predicate& pred); @@ -1809,7 +1809,7 @@ \indexlibrary{\idxcode{not2}}% \begin{itemdecl} -template +template constexpr binary_negate not2(const Predicate& pred); \end{itemdecl} @@ -1827,17 +1827,17 @@ \begin{codeblock} namespace std { // specialization for \tcode{void} - template <> class allocator { + template<> class allocator { public: using value_type = void; using pointer = void*; using const_pointer = const void*; // reference-to-\tcode{void} members are impossible. - template struct rebind { using other = allocator; }; + template struct rebind { using other = allocator; }; }; - template class allocator { + template class allocator { public: using size_type = size_t; using difference_type = ptrdiff_t; @@ -1845,7 +1845,7 @@ using const_pointer = const T*; using reference = T&; using const_reference = const T&; - template struct rebind { using other = allocator; }; + template struct rebind { using other = allocator; }; T* address(T& x) const noexcept; const T* address(const T& x) const noexcept; @@ -1854,7 +1854,7 @@ template void construct(U* p, Args&&... args); - template + template void destroy(U* p); size_t max_size() const noexcept; @@ -1898,7 +1898,7 @@ \indexlibrarymember{construct}{allocator}% \begin{itemdecl} -template +template void construct(U* p, Args&&... args); \end{itemdecl} @@ -1910,7 +1910,7 @@ \indexlibrarymember{destroy}{allocator}% \begin{itemdecl} -template +template void destroy(U* p); \end{itemdecl} @@ -1942,7 +1942,7 @@ \indexlibrary{\idxcode{raw_storage_iterator}}% \begin{codeblock} namespace std { - template + template class raw_storage_iterator { public: using iterator_category = output_iterator_tag; @@ -2075,16 +2075,16 @@ \begin{codeblock} namespace std { - template + template pair get_temporary_buffer(ptrdiff_t n) noexcept; - template + template void return_temporary_buffer(T* p); } \end{codeblock} \indexlibrary{\idxcode{get_temporary_buffer}}% \begin{itemdecl} -template +template pair get_temporary_buffer(ptrdiff_t n) noexcept; \end{itemdecl} @@ -2118,7 +2118,7 @@ \indexlibrary{\idxcode{return_temporary_buffer}}% \begin{itemdecl} -template void return_temporary_buffer(T* p); +template void return_temporary_buffer(T* p); \end{itemdecl} \begin{itemdescr} @@ -2147,15 +2147,15 @@ \indexlibrary{\idxcode{is_literal_type}}% \begin{codeblock} namespace std { - template struct is_literal_type; - template constexpr bool is_literal_type_v = is_literal_type::value; + template struct is_literal_type; + template constexpr bool is_literal_type_v = is_literal_type::value; - template struct result_of; // not defined - template struct result_of; - template using result_of_t = typename result_of::type; + template struct result_of; // not defined + template struct result_of; + template using result_of_t = typename result_of::type; - template struct is_pod; - template inline constexpr bool is_pod_v = is_pod::value; + template struct is_pod; + template inline constexpr bool is_pod_v = is_pod::value; } \end{codeblock} @@ -2165,7 +2165,7 @@ unless explicitly permitted by the specification of the corresponding template. \begin{itemdecl} -template struct is_literal_type; +template struct is_literal_type; \end{itemdecl} \begin{itemdescr} @@ -2181,7 +2181,7 @@ \end{itemdescr} \begin{itemdecl} -template struct result_of; +template struct result_of; \end{itemdecl} \begin{itemdescr} @@ -2198,7 +2198,7 @@ \end{itemdescr} \begin{itemdecl} -template struct is_pod; +template struct is_pod; \end{itemdecl} \begin{itemdescr} @@ -2236,7 +2236,7 @@ \begin{codeblock} namespace std { template + class Pointer = T*, class Reference = T&> struct iterator { using iterator_category = Category; using value_type = T; @@ -2559,21 +2559,21 @@ little_endian = 1 }; - template + template class codecvt_utf8 : public codecvt { public: explicit codecvt_utf8(size_t refs = 0); ~codecvt_utf8(); }; - template + template class codecvt_utf16 : public codecvt { public: explicit codecvt_utf16(size_t refs = 0); ~codecvt_utf16(); }; - template + template class codecvt_utf8_utf16 : public codecvt { public: explicit codecvt_utf8_utf16(size_t refs = 0); @@ -2657,13 +2657,13 @@ \begin{codeblock} namespace std { - template , - class Byte_alloc = allocator> + template, + class Byte_alloc = allocator> class wstring_convert; - template > + template> class wbuffer_convert; } \end{codeblock} @@ -2688,9 +2688,9 @@ \indexlibrary{\idxcode{wstring_convert}}% \begin{codeblock} namespace std { - template , - class Byte_alloc = allocator> + template, + class Byte_alloc = allocator> class wstring_convert { public: using byte_string = basic_string, Byte_alloc>; @@ -2941,7 +2941,7 @@ \indexlibrary{\idxcode{wbuffer_convert}}% \begin{codeblock} namespace std { - template > + template> class wbuffer_convert : public basic_streambuf { public: using state_type = typename Codecvt::state_type; diff --git a/source/iostreams.tex b/source/iostreams.tex index 7995ee50d3..688f2ed2ef 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -172,49 +172,49 @@ template class allocator; - template > + template> class basic_ios; - template > + template> class basic_streambuf; - template > + template> class basic_istream; - template > + template> class basic_ostream; - template > + template> class basic_iostream; - template , - class Allocator = allocator> + template, + class Allocator = allocator> class basic_stringbuf; - template , - class Allocator = allocator> + template, + class Allocator = allocator> class basic_istringstream; - template , - class Allocator = allocator> + template, + class Allocator = allocator> class basic_ostringstream; - template , - class Allocator = allocator> + template, + class Allocator = allocator> class basic_stringstream; - template > + template> class basic_filebuf; - template > + template> class basic_ifstream; - template > + template> class basic_ofstream; - template > + template> class basic_fstream; - template , - class Allocator = allocator> + template, + class Allocator = allocator> class basic_syncbuf; - template , - class Allocator = allocator> + template, + class Allocator = allocator> class basic_osyncstream; - template > + template> class istreambuf_iterator; - template > + template> class ostreambuf_iterator; using ios = basic_ios; @@ -256,7 +256,7 @@ using wsyncbuf = basic_syncbuf; using wosyncstream = basic_osyncstream; - template class fpos; + template class fpos; using streampos = fpos::state_type>; using wstreampos = fpos::state_type>; } @@ -641,10 +641,10 @@ namespace std { using streamoff = @\impdef@; using streamsize = @\impdef@; - template class fpos; + template class fpos; class ios_base; - template > + template> class basic_ios; // \ref{std.ios.manip}, manipulators @@ -690,7 +690,7 @@ stream = 1 }; - template <> struct is_error_code_enum : public true_type { }; + template<> struct is_error_code_enum : public true_type { }; error_code make_error_code(io_errc e) noexcept; error_condition make_error_condition(io_errc e) noexcept; const error_category& iostream_category() noexcept; @@ -1619,7 +1619,7 @@ \indexlibrary{\idxcode{fpos}}% \begin{codeblock} namespace std { - template class fpos { + template class fpos { public: // \ref{fpos.members}, members stateT state() const; @@ -1764,7 +1764,7 @@ \indexlibrary{\idxcode{basic_ios}}% \begin{codeblock} namespace std { - template > + template> class basic_ios : public ios_base { public: using char_type = charT; @@ -2795,7 +2795,7 @@ \indexlibrary{\idxcode{basic_streambuf}}% \begin{codeblock} namespace std { - template > + template> class basic_streambuf; using streambuf = basic_streambuf; using wstreambuf = basic_streambuf; @@ -2914,7 +2914,7 @@ \indexlibrary{\idxcode{basic_streambuf}}% \begin{codeblock} namespace std { - template > + template> class basic_streambuf { public: using char_type = charT; @@ -4046,22 +4046,22 @@ \begin{codeblock} namespace std { - template > + template> class basic_istream; using istream = basic_istream; using wistream = basic_istream; - template > + template> class basic_iostream; using iostream = basic_iostream; using wiostream = basic_iostream; - template + template basic_istream& ws(basic_istream& is); - template + template basic_istream& operator>>(basic_istream&& is, T&& x); } \end{codeblock} @@ -4076,20 +4076,20 @@ \begin{codeblock} namespace std { - template > + template> class basic_ostream; using ostream = basic_ostream; using wostream = basic_ostream; - template + template basic_ostream& endl(basic_ostream& os); - template + template basic_ostream& ends(basic_ostream& os); - template + template basic_ostream& flush(basic_ostream& os); - template + template basic_ostream& operator<<(basic_ostream&& os, const T& x); } \end{codeblock} @@ -4111,23 +4111,23 @@ template @\textit{T4}@ setfill(charT c); @\textit{T5}@ setprecision(int n); @\textit{T6}@ setw(int n); - template @\textit{T7}@ get_money(moneyT& mon, bool intl = false); - template @\textit{T8}@ put_money(const moneyT& mon, bool intl = false); - template @\textit{T9}@ get_time(struct tm* tmb, const charT* fmt); - template @\textit{T10}@ put_time(const struct tm* tmb, const charT* fmt); + template @\textit{T7}@ get_money(moneyT& mon, bool intl = false); + template @\textit{T8}@ put_money(const moneyT& mon, bool intl = false); + template @\textit{T9}@ get_time(struct tm* tmb, const charT* fmt); + template @\textit{T10}@ put_time(const struct tm* tmb, const charT* fmt); - template + template @\textit{T11}@ quoted(const charT* s, charT delim = charT('"'), charT escape = charT('\\')); - template + template @\textit{T12}@ quoted(const basic_string& s, @\itcorr@ charT delim = charT('"'), charT escape = charT('\\')); - template + template @\textit{T13}@ quoted(basic_string& s, @\itcorr@ charT delim = charT('"'), charT escape = charT('\\')); - template + template @\textit{T14}@ quoted(basic_string_view s, @\itcorr@ charT delim = charT('"'), charT escape = charT('\\')); } @@ -4146,7 +4146,7 @@ \indexlibrary{\idxcode{basic_istream}}% \begin{codeblock} namespace std { - template > + template> class basic_istream : virtual public basic_ios { public: // types (inherited from \tcode{basic_ios}\iref{ios}) @@ -4377,7 +4377,7 @@ \indexlibrary{\idxcode{sentry}!\idxcode{basic_istream}}% \begin{codeblock} namespace std { - template > + template> class basic_istream::sentry { using traits_type = traits; bool ok_; // \expos @@ -5528,7 +5528,7 @@ \indexlibrary{\idxcode{ws}}% \begin{itemdecl} -template +template basic_istream& ws(basic_istream& is); \end{itemdecl} @@ -5557,7 +5557,7 @@ \indexlibrarymember{operator>>}{basic_istream}% \begin{itemdecl} -template +template basic_istream& operator>>(basic_istream&& is, T&& x); \end{itemdecl} @@ -5579,7 +5579,7 @@ \indexlibrary{\idxcode{basic_iostream}}% \begin{codeblock} namespace std { - template > + template> class basic_iostream : public basic_istream, public basic_ostream { @@ -5706,7 +5706,7 @@ \indexlibrary{\idxcode{basic_ostream}}% \begin{codeblock} namespace std { - template > + template> class basic_ostream : virtual public basic_ios { public: // types (inherited from \tcode{basic_ios}\iref{ios}) @@ -5922,7 +5922,7 @@ \indexlibrary{\idxcode{sentry}!\idxcode{basic_ostream}}% \begin{codeblock} namespace std { - template > + template> class basic_ostream::sentry { bool ok_; // \expos public: @@ -6599,7 +6599,7 @@ \indexlibrary{\idxcode{endl}}% \begin{itemdecl} -template +template basic_ostream& endl(basic_ostream& os); \end{itemdecl} @@ -6618,7 +6618,7 @@ \indexlibrary{\idxcode{ends}}% \begin{itemdecl} -template +template basic_ostream& ends(basic_ostream& os); \end{itemdecl} @@ -6636,7 +6636,7 @@ \indexlibrary{\idxcode{flush}}% \begin{itemdecl} -template +template basic_ostream& flush(basic_ostream& os); \end{itemdecl} @@ -6655,7 +6655,7 @@ \indexlibrarymember{operator<<}{basic_ostream}% \begin{itemdecl} -template +template basic_ostream& operator<<(basic_ostream&& os, const T& x); \end{itemdecl} @@ -6944,7 +6944,7 @@ \indexlibrary{\idxcode{get_money}}% \begin{itemdecl} -template @\unspec@ get_money(moneyT& mon, bool intl = false); +template @\unspec@ get_money(moneyT& mon, bool intl = false); \end{itemdecl} \begin{itemdescr} @@ -6963,7 +6963,7 @@ \tcode{f(in, mon, intl)}, where the function \tcode{f} is defined as: \begin{codeblock} -template +template void f(basic_ios& str, moneyT& mon, bool intl) { using Iter = istreambuf_iterator; using MoneyGet = money_get; @@ -6984,7 +6984,7 @@ \indexlibrary{\idxcode{put_money}}% \begin{itemdecl} -template @\unspec@ put_money(const moneyT& mon, bool intl = false); +template @\unspec@ put_money(const moneyT& mon, bool intl = false); \end{itemdecl} \begin{itemdescr} @@ -7000,7 +7000,7 @@ \tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as: \begin{codeblock} -template +template void f(basic_ios& str, const moneyT& mon, bool intl) { using Iter = ostreambuf_iterator; using MoneyPut = money_put; @@ -7020,7 +7020,7 @@ \indexlibrary{\idxcode{get_time}}% \begin{itemdecl} -template @\unspec@ get_time(struct tm* tmb, const charT* fmt); +template @\unspec@ get_time(struct tm* tmb, const charT* fmt); \end{itemdecl} \begin{itemdescr} @@ -7035,7 +7035,7 @@ defined as: \begin{codeblock} -template +template void f(basic_ios& str, struct tm* tmb, const charT* fmt) { using Iter = istreambuf_iterator; using TimeGet = time_get; @@ -7057,7 +7057,7 @@ \indexlibrary{\idxcode{put_time}}% \begin{itemdecl} -template @\unspec@ put_time(const struct tm* tmb, const charT* fmt); +template @\unspec@ put_time(const struct tm* tmb, const charT* fmt); \end{itemdecl} \begin{itemdescr} @@ -7074,7 +7074,7 @@ where the function \tcode{f} is defined as: \begin{codeblock} -template +template void f(basic_ios& str, const struct tm* tmb, const charT* fmt) { using Iter = ostreambuf_iterator; using TimePut = time_put; @@ -7099,12 +7099,12 @@ \indexlibrary{\idxcode{quoted}}% \begin{itemdecl} -template +template @\unspec@ quoted(const charT* s, charT delim = charT('"'), charT escape = charT('\\')); -template +template @\unspec@ quoted(const basic_string& s, @\itcorr@ charT delim = charT('"'), charT escape = charT('\\')); -template +template @\unspec@ quoted(basic_string_view s, @\itcorr@ charT delim = charT('"'), charT escape = charT('\\')); \end{itemdecl} @@ -7137,7 +7137,7 @@ \indexlibrary{\idxcode{quoted}}% \begin{itemdecl} -template +template @\unspec@ quoted(basic_string& s, @\itcorr@ charT delim = charT('"'), charT escape = charT('\\')); \end{itemdecl} @@ -7204,28 +7204,28 @@ \indexlibrary{\idxcode{basic_stringstream}}% \begin{codeblock} namespace std { - template , - class Allocator = allocator> + template, + class Allocator = allocator> class basic_stringbuf; using stringbuf = basic_stringbuf; using wstringbuf = basic_stringbuf; - template , - class Allocator = allocator> + template, + class Allocator = allocator> class basic_istringstream; using istringstream = basic_istringstream; using wistringstream = basic_istringstream; - template , - class Allocator = allocator> + template, + class Allocator = allocator> class basic_ostringstream; using ostringstream = basic_ostringstream; using wostringstream = basic_ostringstream; - template , - class Allocator = allocator> + template, + class Allocator = allocator> class basic_stringstream; using stringstream = basic_stringstream; using wstringstream = basic_stringstream; @@ -7246,8 +7246,8 @@ \indexlibrary{\idxcode{basic_stringbuf}}% \begin{codeblock} namespace std { - template , - class Allocator = allocator> + template, + class Allocator = allocator> class basic_stringbuf : public basic_streambuf { public: using char_type = charT; @@ -7293,7 +7293,7 @@ ios_base::openmode mode; // \expos }; - template + template void swap(basic_stringbuf& x, basic_stringbuf& y); } @@ -7431,7 +7431,7 @@ \indexlibrarymember{swap}{basic_stringbuf}% \begin{itemdecl} -template +template void swap(basic_stringbuf& x, basic_stringbuf& y); \end{itemdecl} @@ -7766,8 +7766,8 @@ \indexlibrary{\idxcode{basic_istringstream}}% \begin{codeblock} namespace std { - template , - class Allocator = allocator> + template, + class Allocator = allocator> class basic_istringstream : public basic_istream { public: using char_type = charT; @@ -7800,7 +7800,7 @@ basic_stringbuf sb; // \expos }; - template + template void swap(basic_istringstream& x, basic_istringstream& y); } @@ -7902,7 +7902,7 @@ \indexlibrarymember{swap}{basic_istringstream}% \begin{itemdecl} -template +template void swap(basic_istringstream& x, basic_istringstream& y); \end{itemdecl} @@ -7953,8 +7953,8 @@ \indexlibrary{\idxcode{basic_ostringstream}}% \begin{codeblock} namespace std { - template , - class Allocator = allocator> + template, + class Allocator = allocator> class basic_ostringstream : public basic_ostream { public: using char_type = charT; @@ -7987,7 +7987,7 @@ basic_stringbuf sb; // \expos }; - template + template void swap(basic_ostringstream& x, basic_ostringstream& y); } @@ -8090,7 +8090,7 @@ \indexlibrarymember{swap}{basic_ostringstream}% \begin{itemdecl} -template +template void swap(basic_ostringstream& x, basic_ostringstream& y); \end{itemdecl} @@ -8141,8 +8141,8 @@ \indexlibrary{\idxcode{basic_stringstream}}% \begin{codeblock} namespace std { - template , - class Allocator = allocator> + template, + class Allocator = allocator> class basic_stringstream : public basic_iostream { public: using char_type = charT; @@ -8175,7 +8175,7 @@ basic_stringbuf sb; // \expos }; - template + template void swap(basic_stringstream& x, basic_stringstream& y); } @@ -8283,7 +8283,7 @@ \indexlibrarymember{swap}{basic_stringstream}% \begin{itemdecl} -template +template void swap(basic_stringstream& x, basic_stringstream& y); \end{itemdecl} @@ -8351,22 +8351,22 @@ \indexlibrary{\idxcode{basic_fstream}}% \begin{codeblock} namespace std { - template > + template> class basic_filebuf; using filebuf = basic_filebuf; using wfilebuf = basic_filebuf; - template > + template> class basic_ifstream; using ifstream = basic_ifstream; using wifstream = basic_ifstream; - template > + template> class basic_ofstream; using ofstream = basic_ofstream; using wofstream = basic_ofstream; - template > + template> class basic_fstream; using fstream = basic_fstream; using wfstream = basic_fstream; @@ -8399,7 +8399,7 @@ \indexlibrary{\idxcode{basic_filebuf}}% \begin{codeblock} namespace std { - template > + template> class basic_filebuf : public basic_streambuf { public: using char_type = charT; @@ -8450,7 +8450,7 @@ void imbue(const locale& loc) override; }; - template + template void swap(basic_filebuf& x, basic_filebuf& y); } @@ -8608,7 +8608,7 @@ \indexlibrarymember{swap}{basic_filebuf}% \begin{itemdecl} -template +template void swap(basic_filebuf& x, basic_filebuf& y); \end{itemdecl} @@ -9168,7 +9168,7 @@ \indexlibrary{\idxcode{basic_ifstream}}% \begin{codeblock} namespace std { - template > + template> class basic_ifstream : public basic_istream { public: using char_type = charT; @@ -9209,7 +9209,7 @@ basic_filebuf sb; // \expos }; - template + template void swap(basic_ifstream& x, basic_ifstream& y); } @@ -9329,7 +9329,7 @@ \indexlibrarymember{swap}{basic_ifstream}% \begin{itemdecl} -template +template void swap(basic_ifstream& x, basic_ifstream& y); \end{itemdecl} @@ -9417,7 +9417,7 @@ \indexlibrary{\idxcode{basic_ofstream}}% \begin{codeblock} namespace std { - template > + template> class basic_ofstream : public basic_ostream { public: using char_type = charT; @@ -9458,7 +9458,7 @@ basic_filebuf sb; // \expos }; - template + template void swap(basic_ofstream& x, basic_ofstream& y); } @@ -9577,7 +9577,7 @@ \indexlibrarymember{swap}{basic_ofstream}% \begin{itemdecl} -template +template void swap(basic_ofstream& x, basic_ofstream& y); \end{itemdecl} @@ -9663,7 +9663,7 @@ \indexlibrary{\idxcode{basic_fstream}}% \begin{codeblock} namespace std { - template > + template> class basic_fstream : public basic_iostream { public: using char_type = charT; @@ -9715,7 +9715,7 @@ basic_filebuf sb; // \expos }; - template + template void swap(basic_fstream& x, basic_fstream& y); } @@ -9842,7 +9842,7 @@ \indexlibrarymember{swap}{basic_fstream}% \begin{itemdecl} -template +template void swap(basic_fstream& x, basic_fstream& y); \end{itemdecl} @@ -9942,13 +9942,13 @@ \indexlibrary{\idxcode{wosyncstream}}% \begin{codeblock} namespace std { - template + template class basic_syncbuf; using syncbuf = basic_syncbuf; using wsyncbuf = basic_syncbuf; - template + template class basic_osyncstream; using osyncstream = basic_osyncstream; @@ -9967,7 +9967,7 @@ \indexlibrary{\idxcode{basic_syncbuf}}% \begin{codeblock} namespace std { - template + template class basic_syncbuf : public basic_streambuf { public: using char_type = charT; @@ -10006,7 +10006,7 @@ }; // \ref{syncstream.syncbuf.special}, specialized algorithms - template + template void swap(basic_syncbuf&, basic_syncbuf&); } @@ -10270,7 +10270,7 @@ \indexlibrarymember{swap}{basic_syncbuf}% \begin{itemdecl} -template +template void swap(basic_syncbuf& a, basic_syncbuf& b) noexcept; \end{itemdecl} @@ -10288,7 +10288,7 @@ \indexlibrary{\idxcode{basic_osyncstream}}% \begin{codeblock} namespace std { - template + template class basic_osyncstream : public basic_ostream { public: using char_type = charT; @@ -10700,17 +10700,17 @@ path operator/ (const path& lhs, const path& rhs); // \ref{fs.path.io}, \tcode{path} inserter and extractor - template + template basic_ostream& operator<<(basic_ostream& os, const path& p); - template + template basic_istream& operator>>(basic_istream& is, path& p); // \ref{fs.path.factory}, \tcode{path} factory functions - template + template path u8path(const Source& source); - template + template path u8path(InputIterator first, InputIterator last); // \ref{fs.class.filesystem_error}, filesystem errors @@ -11036,13 +11036,13 @@ path(const path& p); path(path&& p) noexcept; path(string_type&& source, format fmt = auto_format); - template + template path(const Source& source, format fmt = auto_format); - template + template path(InputIterator first, InputIterator last, format fmt = auto_format); - template + template path(const Source& source, const locale& loc, format fmt = auto_format); - template + template path(InputIterator first, InputIterator last, const locale& loc, format fmt = auto_format); ~path(); @@ -11051,20 +11051,20 @@ path& operator=(path&& p) noexcept; path& operator=(string_type&& source); path& assign(string_type&& source); - template + template path& operator=(const Source& source); - template + template path& assign(const Source& source); - template + template path& assign(InputIterator first, InputIterator last); // \ref{fs.path.append}, appends path& operator/=(const path& p); - template + template path& operator/=(const Source& source); - template + template path& append(const Source& source); - template + template path& append(InputIterator first, InputIterator last); // \ref{fs.path.concat}, concatenation @@ -11073,13 +11073,13 @@ path& operator+=(basic_string_view x); path& operator+=(const value_type* x); path& operator+=(value_type x); - template + template path& operator+=(const Source& x); - template + template path& operator+=(EcharT x); - template + template path& concat(const Source& x); - template + template path& concat(InputIterator first, InputIterator last); // \ref{fs.path.modifiers}, modifiers @@ -11095,8 +11095,8 @@ const value_type* c_str() const noexcept; operator string_type() const; - template , - class Allocator = allocator> + template, + class Allocator = allocator> basic_string string(const Allocator& a = Allocator()) const; std::string string() const; @@ -11106,8 +11106,8 @@ std::u32string u32string() const; // \ref{fs.path.generic.obs}, generic format observers - template , - class Allocator = allocator> + template, + class Allocator = allocator> basic_string generic_string(const Allocator& a = Allocator()) const; std::string generic_string() const; @@ -11544,9 +11544,9 @@ \indexlibrary{\idxcode{path}!constructor}% \begin{itemdecl} -template +template path(const Source& source, format fmt = auto_format); -template +template path(InputIterator first, InputIterator last, format fmt = auto_format); \end{itemdecl} @@ -11561,9 +11561,9 @@ \indexlibrary{\idxcode{path}!constructor}% \begin{itemdecl} -template +template path(const Source& source, const locale& loc, format fmt = auto_format); -template +template path(InputIterator first, InputIterator last, const locale& loc, format fmt = auto_format); \end{itemdecl} @@ -11680,11 +11680,11 @@ \indexlibrarymember{operator=}{path}% \indexlibrarymember{assign}{path}% \begin{itemdecl} -template +template path& operator=(const Source& source); -template +template path& assign(const Source& source); -template +template path& assign(InputIterator first, InputIterator last); \end{itemdecl} @@ -11760,9 +11760,9 @@ \indexlibrarymember{operator/=}{path}% \indexlibrarymember{append}{path}% \begin{itemdecl} -template +template path& operator/=(const Source& source); -template +template path& append(const Source& source); \end{itemdecl} @@ -11774,7 +11774,7 @@ \indexlibrarymember{operator/=}{path}% \indexlibrarymember{append}{path}% \begin{itemdecl} -template +template path& append(InputIterator first, InputIterator last); \end{itemdecl} @@ -11793,11 +11793,11 @@ path& operator+=(basic_string_view x); path& operator+=(const value_type* x); path& operator+=(value_type x); -template +template path& operator+=(const Source& x); -template +template path& operator+=(EcharT x); -template +template path& concat(const Source& x); \end{itemdecl} @@ -11815,7 +11815,7 @@ \indexlibrarymember{concat}{path}% \begin{itemdecl} -template +template path& concat(InputIterator first, InputIterator last); \end{itemdecl} @@ -12002,8 +12002,8 @@ \indexlibrarymember{string}{path}% \begin{itemdecl} -template , - class Allocator = allocator> +template, + class Allocator = allocator> basic_string string(const Allocator& a = Allocator()) const; \end{itemdecl} @@ -12060,8 +12060,8 @@ \indexlibrarymember{generic_string}{path}% \begin{itemdecl} -template , - class Allocator = allocator> +template, + class Allocator = allocator> basic_string generic_string(const Allocator& a = Allocator()) const; \end{itemdecl} @@ -12695,7 +12695,7 @@ \indexlibrarymember{operator<<}{path}% \begin{itemdecl} -template +template basic_ostream& operator<<(basic_ostream& os, const path& p); \end{itemdecl} @@ -12711,7 +12711,7 @@ \indexlibrarymember{operator>>}{path}% \begin{itemdecl} -template +template basic_istream& operator>>(basic_istream& is, path& p); \end{itemdecl} @@ -12734,9 +12734,9 @@ \indexlibrary{\idxcode{u8path}}% \begin{itemdecl} -template +template path u8path(const Source& source); -template +template path u8path(InputIterator first, InputIterator last); \end{itemdecl} diff --git a/source/iterators.tex b/source/iterators.tex index 1f3bafc9c9..dbd9d44930 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -700,162 +700,162 @@ struct random_access_iterator_tag: public bidirectional_iterator_tag { }; // \ref{iterator.operations}, iterator operations - template + template constexpr void advance(InputIterator& i, Distance n); - template + template constexpr typename iterator_traits::difference_type distance(InputIterator first, InputIterator last); - template + template constexpr InputIterator next(InputIterator x, typename iterator_traits::difference_type n = 1); - template + template constexpr BidirectionalIterator prev(BidirectionalIterator x, typename iterator_traits::difference_type n = 1); // \ref{predef.iterators}, predefined iterators - template class reverse_iterator; + template class reverse_iterator; - template + template constexpr bool operator==( const reverse_iterator& x, const reverse_iterator& y); - template + template constexpr bool operator<( const reverse_iterator& x, const reverse_iterator& y); - template + template constexpr bool operator!=( const reverse_iterator& x, const reverse_iterator& y); - template + template constexpr bool operator>( const reverse_iterator& x, const reverse_iterator& y); - template + template constexpr bool operator>=( const reverse_iterator& x, const reverse_iterator& y); - template + template constexpr bool operator<=( const reverse_iterator& x, const reverse_iterator& y); - template + template constexpr auto operator-( const reverse_iterator& x, const reverse_iterator& y) -> decltype(y.base() - x.base()); - template + template constexpr reverse_iterator operator+( typename reverse_iterator::difference_type n, const reverse_iterator& x); - template + template constexpr reverse_iterator make_reverse_iterator(Iterator i); - template class back_insert_iterator; - template + template class back_insert_iterator; + template back_insert_iterator back_inserter(Container& x); - template class front_insert_iterator; - template + template class front_insert_iterator; + template front_insert_iterator front_inserter(Container& x); - template class insert_iterator; - template + template class insert_iterator; + template insert_iterator inserter(Container& x, typename Container::iterator i); - template class move_iterator; - template + template class move_iterator; + template constexpr bool operator==( const move_iterator& x, const move_iterator& y); - template + template constexpr bool operator!=( const move_iterator& x, const move_iterator& y); - template + template constexpr bool operator<( const move_iterator& x, const move_iterator& y); - template + template constexpr bool operator<=( const move_iterator& x, const move_iterator& y); - template + template constexpr bool operator>( const move_iterator& x, const move_iterator& y); - template + template constexpr bool operator>=( const move_iterator& x, const move_iterator& y); - template + template constexpr auto operator-( const move_iterator& x, const move_iterator& y) -> decltype(x.base() - y.base()); - template + template constexpr move_iterator operator+( typename move_iterator::difference_type n, const move_iterator& x); - template + template constexpr move_iterator make_move_iterator(Iterator i); // \ref{stream.iterators}, stream iterators - template , - class Distance = ptrdiff_t> + template, + class Distance = ptrdiff_t> class istream_iterator; - template + template bool operator==(const istream_iterator& x, const istream_iterator& y); - template + template bool operator!=(const istream_iterator& x, const istream_iterator& y); - template > + template> class ostream_iterator; template> class istreambuf_iterator; - template + template bool operator==(const istreambuf_iterator& a, const istreambuf_iterator& b); - template + template bool operator!=(const istreambuf_iterator& a, const istreambuf_iterator& b); - template > + template> class ostreambuf_iterator; // \ref{iterator.range}, range access - template constexpr auto begin(C& c) -> decltype(c.begin()); - template constexpr auto begin(const C& c) -> decltype(c.begin()); - template constexpr auto end(C& c) -> decltype(c.end()); - template constexpr auto end(const C& c) -> decltype(c.end()); - template constexpr T* begin(T (&array)[N]) noexcept; - template constexpr T* end(T (&array)[N]) noexcept; - template constexpr auto cbegin(const C& c) noexcept(noexcept(std::begin(c))) + template constexpr auto begin(C& c) -> decltype(c.begin()); + template constexpr auto begin(const C& c) -> decltype(c.begin()); + template constexpr auto end(C& c) -> decltype(c.end()); + template constexpr auto end(const C& c) -> decltype(c.end()); + template constexpr T* begin(T (&array)[N]) noexcept; + template constexpr T* end(T (&array)[N]) noexcept; + template constexpr auto cbegin(const C& c) noexcept(noexcept(std::begin(c))) -> decltype(std::begin(c)); - template constexpr auto cend(const C& c) noexcept(noexcept(std::end(c))) + template constexpr auto cend(const C& c) noexcept(noexcept(std::end(c))) -> decltype(std::end(c)); - template constexpr auto rbegin(C& c) -> decltype(c.rbegin()); - template constexpr auto rbegin(const C& c) -> decltype(c.rbegin()); - template constexpr auto rend(C& c) -> decltype(c.rend()); - template constexpr auto rend(const C& c) -> decltype(c.rend()); - template constexpr reverse_iterator rbegin(T (&array)[N]); - template constexpr reverse_iterator rend(T (&array)[N]); - template constexpr reverse_iterator rbegin(initializer_list il); - template constexpr reverse_iterator rend(initializer_list il); - template constexpr auto crbegin(const C& c) -> decltype(std::rbegin(c)); - template constexpr auto crend(const C& c) -> decltype(std::rend(c)); + template constexpr auto rbegin(C& c) -> decltype(c.rbegin()); + template constexpr auto rbegin(const C& c) -> decltype(c.rbegin()); + template constexpr auto rend(C& c) -> decltype(c.rend()); + template constexpr auto rend(const C& c) -> decltype(c.rend()); + template constexpr reverse_iterator rbegin(T (&array)[N]); + template constexpr reverse_iterator rend(T (&array)[N]); + template constexpr reverse_iterator rbegin(initializer_list il); + template constexpr reverse_iterator rend(initializer_list il); + template constexpr auto crbegin(const C& c) -> decltype(std::rbegin(c)); + template constexpr auto crend(const C& c) -> decltype(std::rend(c)); // \ref{iterator.container}, container access - template constexpr auto size(const C& c) -> decltype(c.size()); - template constexpr size_t size(const T (&array)[N]) noexcept; - template [[nodiscard]] constexpr auto empty(const C& c) -> decltype(c.empty()); - template [[nodiscard]] constexpr bool empty(const T (&array)[N]) noexcept; - template [[nodiscard]] constexpr bool empty(initializer_list il) noexcept; - template constexpr auto data(C& c) -> decltype(c.data()); - template constexpr auto data(const C& c) -> decltype(c.data()); - template constexpr T* data(T (&array)[N]) noexcept; - template constexpr const E* data(initializer_list il) noexcept; + template constexpr auto size(const C& c) -> decltype(c.size()); + template constexpr size_t size(const T (&array)[N]) noexcept; + template [[nodiscard]] constexpr auto empty(const C& c) -> decltype(c.empty()); + template [[nodiscard]] constexpr bool empty(const T (&array)[N]) noexcept; + template [[nodiscard]] constexpr bool empty(initializer_list il) noexcept; + template constexpr auto data(C& c) -> decltype(c.data()); + template constexpr auto data(const C& c) -> decltype(c.data()); + template constexpr T* data(T (&array)[N]) noexcept; + template constexpr const E* data(initializer_list il) noexcept; } \end{codeblock} @@ -947,7 +947,7 @@ function, a \Cpp{} program can do the following: \begin{codeblock} -template +template void reverse(BidirectionalIterator first, BidirectionalIterator last) { typename iterator_traits::difference_type n = distance(first, last); @@ -1036,20 +1036,20 @@ efficiently for random access iterators, then the implementation is as follows: \begin{codeblock} -template +template inline void evolve(BidirectionalIterator first, BidirectionalIterator last) { evolve(first, last, typename iterator_traits::iterator_category()); } -template +template void evolve(BidirectionalIterator first, BidirectionalIterator last, bidirectional_iterator_tag) { // more generic, but less efficient algorithm } -template +template void evolve(RandomAccessIterator first, RandomAccessIterator last, random_access_iterator_tag) { // more efficient, but less generic algorithm @@ -1083,7 +1083,7 @@ \indexlibrary{\idxcode{advance}}% \begin{itemdecl} -template +template constexpr void advance(InputIterator& i, Distance n); \end{itemdecl} @@ -1105,7 +1105,7 @@ \indexlibrary{\idxcode{distance}}% \begin{itemdecl} -template +template constexpr typename iterator_traits::difference_type distance(InputIterator first, InputIterator last); \end{itemdecl} @@ -1132,7 +1132,7 @@ \indexlibrary{\idxcode{next}}% \begin{itemdecl} -template +template constexpr InputIterator next(InputIterator x, typename iterator_traits::difference_type n = 1); \end{itemdecl} @@ -1144,7 +1144,7 @@ \indexlibrary{\idxcode{prev}}% \begin{itemdecl} -template +template constexpr BidirectionalIterator prev(BidirectionalIterator x, typename iterator_traits::difference_type n = 1); \end{itemdecl} @@ -1170,7 +1170,7 @@ \indexlibrary{\idxcode{reverse_iterator}}% \begin{codeblock} namespace std { - template + template class reverse_iterator { public: using iterator_type = Iterator; @@ -1182,8 +1182,8 @@ constexpr reverse_iterator(); constexpr explicit reverse_iterator(Iterator x); - template constexpr reverse_iterator(const reverse_iterator& u); - template constexpr reverse_iterator& operator=(const reverse_iterator& u); + template constexpr reverse_iterator(const reverse_iterator& u); + template constexpr reverse_iterator& operator=(const reverse_iterator& u); constexpr Iterator base() const; // explicit constexpr reference operator*() const; @@ -1204,40 +1204,40 @@ Iterator current; }; - template + template constexpr bool operator==( const reverse_iterator& x, const reverse_iterator& y); - template + template constexpr bool operator<( const reverse_iterator& x, const reverse_iterator& y); - template + template constexpr bool operator!=( const reverse_iterator& x, const reverse_iterator& y); - template + template constexpr bool operator>( const reverse_iterator& x, const reverse_iterator& y); - template + template constexpr bool operator>=( const reverse_iterator& x, const reverse_iterator& y); - template + template constexpr bool operator<=( const reverse_iterator& x, const reverse_iterator& y); - template + template constexpr auto operator-( const reverse_iterator& x, const reverse_iterator& y) -> decltype(y.base() - x.base()); - template + template constexpr reverse_iterator operator+( typename reverse_iterator::difference_type n, const reverse_iterator& x); - template + template constexpr reverse_iterator make_reverse_iterator(Iterator i); } \end{codeblock} @@ -1303,7 +1303,7 @@ \indexlibrary{\idxcode{reverse_iterator}!constructor}% \begin{itemdecl} -template constexpr reverse_iterator(const reverse_iterator& u); +template constexpr reverse_iterator(const reverse_iterator& u); \end{itemdecl} \begin{itemdescr} @@ -1319,7 +1319,7 @@ \indexlibrarymember{operator=}{reverse_iterator}% \begin{itemdecl} -template +template constexpr reverse_iterator& operator=(const reverse_iterator& u); \end{itemdecl} @@ -1520,7 +1520,7 @@ \indexlibrarymember{operator==}{reverse_iterator}% \begin{itemdecl} -template +template constexpr bool operator==( const reverse_iterator& x, const reverse_iterator& y); @@ -1536,7 +1536,7 @@ \indexlibrarymember{operator<}{reverse_iterator}% \begin{itemdecl} -template +template constexpr bool operator<( const reverse_iterator& x, const reverse_iterator& y); @@ -1552,7 +1552,7 @@ \indexlibrarymember{operator"!=}{reverse_iterator}% \begin{itemdecl} -template +template constexpr bool operator!=( const reverse_iterator& x, const reverse_iterator& y); @@ -1568,7 +1568,7 @@ \indexlibrarymember{operator>}{reverse_iterator}% \begin{itemdecl} -template +template constexpr bool operator>( const reverse_iterator& x, const reverse_iterator& y); @@ -1584,7 +1584,7 @@ \indexlibrarymember{operator>=}{reverse_iterator}% \begin{itemdecl} -template +template constexpr bool operator>=( const reverse_iterator& x, const reverse_iterator& y); @@ -1600,7 +1600,7 @@ \indexlibrarymember{operator<=}{reverse_iterator}% \begin{itemdecl} -template +template constexpr bool operator<=( const reverse_iterator& x, const reverse_iterator& y); @@ -1616,7 +1616,7 @@ \indexlibrarymember{operator-}{reverse_iterator}% \begin{itemdecl} -template +template constexpr auto operator-( const reverse_iterator& x, const reverse_iterator& y) -> decltype(y.base() - x.base()); @@ -1632,7 +1632,7 @@ \indexlibrarymember{operator+}{reverse_iterator}% \begin{itemdecl} -template +template constexpr reverse_iterator operator+( typename reverse_iterator::difference_type n, const reverse_iterator& x); @@ -1649,7 +1649,7 @@ \indexlibrary{\idxcode{reverse_iterator}!\idxcode{make_reverse_iterator} non-member function}% \indexlibrary{\idxcode{make_reverse_iterator}}% \begin{itemdecl} -template +template constexpr reverse_iterator make_reverse_iterator(Iterator i); \end{itemdecl} @@ -1713,7 +1713,7 @@ \indexlibrary{\idxcode{back_insert_iterator}}% \begin{codeblock} namespace std { - template + template class back_insert_iterator { protected: Container* container; @@ -1735,7 +1735,7 @@ back_insert_iterator operator++(int); }; - template + template back_insert_iterator back_inserter(Container& x); } \end{codeblock} @@ -1820,7 +1820,7 @@ \indexlibrary{\idxcode{back_inserter}}% \begin{itemdecl} -template +template back_insert_iterator back_inserter(Container& x); \end{itemdecl} @@ -1835,7 +1835,7 @@ \indexlibrary{\idxcode{front_insert_iterator}}% \begin{codeblock} namespace std { - template + template class front_insert_iterator { protected: Container* container; @@ -1857,7 +1857,7 @@ front_insert_iterator operator++(int); }; - template + template front_insert_iterator front_inserter(Container& x); } \end{codeblock} @@ -1942,7 +1942,7 @@ \indexlibrary{\idxcode{front_inserter}}% \begin{itemdecl} -template +template front_insert_iterator front_inserter(Container& x); \end{itemdecl} @@ -1957,7 +1957,7 @@ \indexlibrary{\idxcode{insert_iterator}}% \begin{codeblock} namespace std { - template + template class insert_iterator { protected: Container* container; @@ -1980,7 +1980,7 @@ insert_iterator& operator++(int); }; - template + template insert_iterator inserter(Container& x, typename Container::iterator i); } \end{codeblock} @@ -2075,7 +2075,7 @@ \indexlibrary{\idxcode{inserter}}% \begin{itemdecl} -template +template insert_iterator inserter(Container& x, typename Container::iterator i); \end{itemdecl} @@ -2113,7 +2113,7 @@ \indexlibrary{\idxcode{move_iterator}}% \begin{codeblock} namespace std { - template + template class move_iterator { public: using iterator_type = Iterator; @@ -2125,8 +2125,8 @@ constexpr move_iterator(); constexpr explicit move_iterator(Iterator i); - template constexpr move_iterator(const move_iterator& u); - template constexpr move_iterator& operator=(const move_iterator& u); + template constexpr move_iterator(const move_iterator& u); + template constexpr move_iterator& operator=(const move_iterator& u); constexpr iterator_type base() const; constexpr reference operator*() const; @@ -2147,33 +2147,33 @@ Iterator current; // \expos }; - template + template constexpr bool operator==( const move_iterator& x, const move_iterator& y); - template + template constexpr bool operator!=( const move_iterator& x, const move_iterator& y); - template + template constexpr bool operator<( const move_iterator& x, const move_iterator& y); - template + template constexpr bool operator<=( const move_iterator& x, const move_iterator& y); - template + template constexpr bool operator>( const move_iterator& x, const move_iterator& y); - template + template constexpr bool operator>=( const move_iterator& x, const move_iterator& y); - template + template constexpr auto operator-( const move_iterator& x, const move_iterator& y) -> decltype(x.base() - y.base()); - template + template constexpr move_iterator operator+( typename move_iterator::difference_type n, const move_iterator& x); - template + template constexpr move_iterator make_move_iterator(Iterator i); } \end{codeblock} @@ -2228,7 +2228,7 @@ \indexlibrary{\idxcode{move_iterator}!constructor}% \begin{itemdecl} -template constexpr move_iterator(const move_iterator& u); +template constexpr move_iterator(const move_iterator& u); \end{itemdecl} \begin{itemdescr} @@ -2245,7 +2245,7 @@ \indexlibrarymember{operator=}{move_iterator}% \begin{itemdecl} -template constexpr move_iterator& operator=(const move_iterator& u); +template constexpr move_iterator& operator=(const move_iterator& u); \end{itemdecl} \begin{itemdescr} @@ -2426,7 +2426,7 @@ \indexlibrarymember{operator==}{move_iterator}% \begin{itemdecl} -template +template constexpr bool operator==(const move_iterator& x, const move_iterator& y); \end{itemdecl} @@ -2437,7 +2437,7 @@ \indexlibrarymember{operator"!=}{move_iterator}% \begin{itemdecl} -template +template constexpr bool operator!=(const move_iterator& x, const move_iterator& y); \end{itemdecl} @@ -2448,7 +2448,7 @@ \indexlibrarymember{operator<}{move_iterator}% \begin{itemdecl} -template +template constexpr bool operator<(const move_iterator& x, const move_iterator& y); \end{itemdecl} @@ -2459,7 +2459,7 @@ \indexlibrarymember{operator<=}{move_iterator}% \begin{itemdecl} -template +template constexpr bool operator<=(const move_iterator& x, const move_iterator& y); \end{itemdecl} @@ -2470,7 +2470,7 @@ \indexlibrarymember{operator>}{move_iterator}% \begin{itemdecl} -template +template constexpr bool operator>(const move_iterator& x, const move_iterator& y); \end{itemdecl} @@ -2481,7 +2481,7 @@ \indexlibrarymember{operator>=}{move_iterator}% \begin{itemdecl} -template +template constexpr bool operator>=(const move_iterator& x, const move_iterator& y); \end{itemdecl} @@ -2494,7 +2494,7 @@ \indexlibrarymember{operator-}{move_iterator}% \begin{itemdecl} -template +template constexpr auto operator-( const move_iterator& x, const move_iterator& y) -> decltype(x.base() - y.base()); @@ -2507,7 +2507,7 @@ \indexlibrarymember{operator+}{move_iterator}% \begin{itemdecl} -template +template constexpr move_iterator operator+( typename move_iterator::difference_type n, const move_iterator& x); \end{itemdecl} @@ -2519,7 +2519,7 @@ \indexlibrary{\idxcode{make_move_iterator}}% \begin{itemdecl} -template +template constexpr move_iterator make_move_iterator(Iterator i); \end{itemdecl} @@ -2601,8 +2601,8 @@ \begin{codeblock} namespace std { - template , - class Distance = ptrdiff_t> + template, + class Distance = ptrdiff_t> class istream_iterator { public: using iterator_category = input_iterator_tag; @@ -2629,10 +2629,10 @@ T value; // \expos }; - template + template bool operator==(const istream_iterator& x, const istream_iterator& y); - template + template bool operator!=(const istream_iterator& x, const istream_iterator& y); } @@ -2767,7 +2767,7 @@ \indexlibrarymember{operator==}{istream_iterator}% \begin{itemdecl} -template +template bool operator==(const istream_iterator& x, const istream_iterator& y); \end{itemdecl} @@ -2780,7 +2780,7 @@ \indexlibrarymember{operator"!=}{istream_iterator}% \begin{itemdecl} -template +template bool operator!=(const istream_iterator& x, const istream_iterator& y); \end{itemdecl} @@ -2820,7 +2820,7 @@ \begin{codeblock} namespace std { - template > + template> class ostream_iterator { public: using iterator_category = output_iterator_tag; @@ -3015,10 +3015,10 @@ streambuf_type* sbuf_; // \expos }; - template + template bool operator==(const istreambuf_iterator& a, const istreambuf_iterator& b); - template + template bool operator!=(const istreambuf_iterator& a, const istreambuf_iterator& b); } @@ -3029,7 +3029,7 @@ \indexlibrary{\idxcode{proxy}!\idxcode{istreambuf_iterator}}% \begin{codeblock} namespace std { - template > + template> class istreambuf_iterator::proxy { // \expos charT keep_; basic_streambuf* sbuf_; @@ -3169,7 +3169,7 @@ \indexlibrarymember{operator==}{istreambuf_iterator}% \begin{itemdecl} -template +template bool operator==(const istreambuf_iterator& a, const istreambuf_iterator& b); \end{itemdecl} @@ -3182,7 +3182,7 @@ \indexlibrarymember{operator"!=}{istreambuf_iterator}% \begin{itemdecl} -template +template bool operator!=(const istreambuf_iterator& a, const istreambuf_iterator& b); \end{itemdecl} @@ -3198,7 +3198,7 @@ \indexlibrary{\idxcode{ostreambuf_iterator}}% \begin{codeblock} namespace std { - template > + template> class ostreambuf_iterator { public: using iterator_category = output_iterator_tag; @@ -3348,8 +3348,8 @@ \indexlibrary{\idxcode{begin(C\&)}}% \begin{itemdecl} -template constexpr auto begin(C& c) -> decltype(c.begin()); -template constexpr auto begin(const C& c) -> decltype(c.begin()); +template constexpr auto begin(C& c) -> decltype(c.begin()); +template constexpr auto begin(const C& c) -> decltype(c.begin()); \end{itemdecl} \begin{itemdescr} @@ -3359,8 +3359,8 @@ \indexlibrary{\idxcode{end(C\&)}}% \begin{itemdecl} -template constexpr auto end(C& c) -> decltype(c.end()); -template constexpr auto end(const C& c) -> decltype(c.end()); +template constexpr auto end(C& c) -> decltype(c.end()); +template constexpr auto end(const C& c) -> decltype(c.end()); \end{itemdecl} \begin{itemdescr} @@ -3370,7 +3370,7 @@ \indexlibrary{\idxcode{begin(T (\&)[N])}}% \begin{itemdecl} -template constexpr T* begin(T (&array)[N]) noexcept; +template constexpr T* begin(T (&array)[N]) noexcept; \end{itemdecl} \begin{itemdescr} @@ -3380,7 +3380,7 @@ \indexlibrary{\idxcode{end(T (\&)[N])}}% \begin{itemdecl} -template constexpr T* end(T (&array)[N]) noexcept; +template constexpr T* end(T (&array)[N]) noexcept; \end{itemdecl} \begin{itemdescr} @@ -3390,7 +3390,7 @@ \indexlibrary{\idxcode{cbegin(const C\&)}}% \begin{itemdecl} -template constexpr auto cbegin(const C& c) noexcept(noexcept(std::begin(c))) +template constexpr auto cbegin(const C& c) noexcept(noexcept(std::begin(c))) -> decltype(std::begin(c)); \end{itemdecl} \begin{itemdescr} @@ -3399,7 +3399,7 @@ \indexlibrary{\idxcode{cend(const C\&)}}% \begin{itemdecl} -template constexpr auto cend(const C& c) noexcept(noexcept(std::end(c))) +template constexpr auto cend(const C& c) noexcept(noexcept(std::end(c))) -> decltype(std::end(c)); \end{itemdecl} \begin{itemdescr} @@ -3408,8 +3408,8 @@ \indexlibrary{\idxcode{rbegin(C\&)}}% \begin{itemdecl} -template constexpr auto rbegin(C& c) -> decltype(c.rbegin()); -template constexpr auto rbegin(const C& c) -> decltype(c.rbegin()); +template constexpr auto rbegin(C& c) -> decltype(c.rbegin()); +template constexpr auto rbegin(const C& c) -> decltype(c.rbegin()); \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{c.rbegin()}. @@ -3417,8 +3417,8 @@ \indexlibrary{\idxcode{rend(C\&)}}% \begin{itemdecl} -template constexpr auto rend(C& c) -> decltype(c.rend()); -template constexpr auto rend(const C& c) -> decltype(c.rend()); +template constexpr auto rend(C& c) -> decltype(c.rend()); +template constexpr auto rend(const C& c) -> decltype(c.rend()); \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{c.rend()}. @@ -3426,7 +3426,7 @@ \indexlibrary{\idxcode{rbegin(T (\&array)[N])}}% \begin{itemdecl} -template constexpr reverse_iterator rbegin(T (&array)[N]); +template constexpr reverse_iterator rbegin(T (&array)[N]); \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{reverse_iterator(array + N)}. @@ -3434,7 +3434,7 @@ \indexlibrary{\idxcode{rend(T (\&array)[N])}}% \begin{itemdecl} -template constexpr reverse_iterator rend(T (&array)[N]); +template constexpr reverse_iterator rend(T (&array)[N]); \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{reverse_iterator(array)}. @@ -3442,7 +3442,7 @@ \indexlibrary{\idxcode{rbegin(initializer_list)}}% \begin{itemdecl} -template constexpr reverse_iterator rbegin(initializer_list il); +template constexpr reverse_iterator rbegin(initializer_list il); \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{reverse_iterator(il.end())}. @@ -3450,7 +3450,7 @@ \indexlibrary{\idxcode{rend(initializer_list)}}% \begin{itemdecl} -template constexpr reverse_iterator rend(initializer_list il); +template constexpr reverse_iterator rend(initializer_list il); \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{reverse_iterator(il.begin())}. @@ -3458,7 +3458,7 @@ \indexlibrary{\idxcode{crbegin(const C\& c)}}% \begin{itemdecl} -template constexpr auto crbegin(const C& c) -> decltype(std::rbegin(c)); +template constexpr auto crbegin(const C& c) -> decltype(std::rbegin(c)); \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{std::rbegin(c)}. @@ -3466,7 +3466,7 @@ \indexlibrary{\idxcode{crend(const C\& c)}}% \begin{itemdecl} -template constexpr auto crend(const C& c) -> decltype(std::rend(c)); +template constexpr auto crend(const C& c) -> decltype(std::rend(c)); \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{std::rend(c)}. @@ -3484,7 +3484,7 @@ \indexlibrary{\idxcode{size(C\& c)}}% \begin{itemdecl} -template constexpr auto size(const C& c) -> decltype(c.size()); +template constexpr auto size(const C& c) -> decltype(c.size()); \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{c.size()}. @@ -3492,7 +3492,7 @@ \indexlibrary{\idxcode{size(T (\&array)[N])}}% \begin{itemdecl} -template constexpr size_t size(const T (&array)[N]) noexcept; +template constexpr size_t size(const T (&array)[N]) noexcept; \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{N}. @@ -3500,7 +3500,7 @@ \indexlibrary{\idxcode{empty(C\& c)}}% \begin{itemdecl} -template [[nodiscard]] constexpr auto empty(const C& c) -> decltype(c.empty()); +template [[nodiscard]] constexpr auto empty(const C& c) -> decltype(c.empty()); \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{c.empty()}. @@ -3508,7 +3508,7 @@ \indexlibrary{\idxcode{empty(T (\&array)[N])}}% \begin{itemdecl} -template [[nodiscard]] constexpr bool empty(const T (&array)[N]) noexcept; +template [[nodiscard]] constexpr bool empty(const T (&array)[N]) noexcept; \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{false}. @@ -3516,7 +3516,7 @@ \indexlibrary{\idxcode{empty(initializer_list)}}% \begin{itemdecl} -template [[nodiscard]] constexpr bool empty(initializer_list il) noexcept; +template [[nodiscard]] constexpr bool empty(initializer_list il) noexcept; \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{il.size() == 0}. @@ -3524,8 +3524,8 @@ \indexlibrary{\idxcode{data(C\& c)}}% \begin{itemdecl} -template constexpr auto data(C& c) -> decltype(c.data()); -template constexpr auto data(const C& c) -> decltype(c.data()); +template constexpr auto data(C& c) -> decltype(c.data()); +template constexpr auto data(const C& c) -> decltype(c.data()); \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{c.data()}. @@ -3533,7 +3533,7 @@ \indexlibrary{\idxcode{data(T (\&array)[N])}}% \begin{itemdecl} -template constexpr T* data(T (&array)[N]) noexcept; +template constexpr T* data(T (&array)[N]) noexcept; \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{array}. @@ -3541,7 +3541,7 @@ \indexlibrary{\idxcode{data(initializer_list)}}% \begin{itemdecl} -template constexpr const E* data(initializer_list il) noexcept; +template constexpr const E* data(initializer_list il) noexcept; \end{itemdecl} \begin{itemdescr} \pnum \returns \tcode{il.begin()}. diff --git a/source/lib-intro.tex b/source/lib-intro.tex index daa8226bc9..71bd00d2df 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -1662,7 +1662,7 @@ #include // Requires: \tcode{std::forward(t)} shall be swappable with \tcode{std::forward(u)}. -template +template void value_swap(T&& t, U&& u) { using std::swap; swap(std::forward(t), std::forward(u)); // OK: uses ``swappable with'' conditions @@ -1670,7 +1670,7 @@ } // Requires: lvalues of \tcode{T} shall be swappable. -template +template void lv_swap(T& t1, T& t2) { using std::swap; swap(t1, t2); // OK: uses swappable conditions for lvalues of type \tcode{T} @@ -2169,20 +2169,20 @@ Table~\ref{tab:utilities.allocator.requirements}: \begin{codeblock} -template +template struct SimpleAllocator { typedef Tp value_type; SimpleAllocator(@\textit{ctor args}@); - template SimpleAllocator(const SimpleAllocator& other); + template SimpleAllocator(const SimpleAllocator& other); [[nodiscard]] Tp* allocate(std::size_t n); void deallocate(Tp* p, std::size_t n); }; -template +template bool operator==(const SimpleAllocator&, const SimpleAllocator&); -template +template bool operator!=(const SimpleAllocator&, const SimpleAllocator&); \end{codeblock} \end{example} diff --git a/source/locales.tex b/source/locales.tex index f7ff320461..6de8b6398a 100644 --- a/source/locales.tex +++ b/source/locales.tex @@ -29,74 +29,74 @@ namespace std { // \ref{locale}, locale class locale; - template const Facet& use_facet(const locale&); - template bool has_facet(const locale&) noexcept; + template const Facet& use_facet(const locale&); + template bool has_facet(const locale&) noexcept; // \ref{locale.convenience}, convenience interfaces - template bool isspace (charT c, const locale& loc); - template bool isprint (charT c, const locale& loc); - template bool iscntrl (charT c, const locale& loc); - template bool isupper (charT c, const locale& loc); - template bool islower (charT c, const locale& loc); - template bool isalpha (charT c, const locale& loc); - template bool isdigit (charT c, const locale& loc); - template bool ispunct (charT c, const locale& loc); - template bool isxdigit(charT c, const locale& loc); - template bool isalnum (charT c, const locale& loc); - template bool isgraph (charT c, const locale& loc); - template bool isblank (charT c, const locale& loc); - template charT toupper(charT c, const locale& loc); - template charT tolower(charT c, const locale& loc); + template bool isspace (charT c, const locale& loc); + template bool isprint (charT c, const locale& loc); + template bool iscntrl (charT c, const locale& loc); + template bool isupper (charT c, const locale& loc); + template bool islower (charT c, const locale& loc); + template bool isalpha (charT c, const locale& loc); + template bool isdigit (charT c, const locale& loc); + template bool ispunct (charT c, const locale& loc); + template bool isxdigit(charT c, const locale& loc); + template bool isalnum (charT c, const locale& loc); + template bool isgraph (charT c, const locale& loc); + template bool isblank (charT c, const locale& loc); + template charT toupper(charT c, const locale& loc); + template charT tolower(charT c, const locale& loc); // \ref{category.ctype}, ctype class ctype_base; - template class ctype; - template <> class ctype; // specialization - template class ctype_byname; + template class ctype; + template<> class ctype; // specialization + template class ctype_byname; class codecvt_base; - template class codecvt; - template class codecvt_byname; + template class codecvt; + template class codecvt_byname; // \ref{category.numeric}, numeric - template > + template> class num_get; - template > + template> class num_put; - template + template class numpunct; - template + template class numpunct_byname; // \ref{category.collate}, collation - template class collate; - template class collate_byname; + template class collate; + template class collate_byname; // \ref{category.time}, date and time class time_base; - template > + template> class time_get; - template > + template> class time_get_byname; - template > + template> class time_put; - template > + template> class time_put_byname; // \ref{category.monetary}, money class money_base; - template > + template> class money_get; - template > + template> class money_put; - template + template class moneypunct; - template + template class moneypunct_byname; // \ref{category.messages}, message retrieval class messages_base; - template class messages; - template class messages_byname; + template class messages; + template class messages_byname; } \end{codeblock} @@ -137,11 +137,11 @@ explicit locale(const string& std_name); locale(const locale& other, const char* std_name, category); locale(const locale& other, const string& std_name, category); - template locale(const locale& other, Facet* f); + template locale(const locale& other, Facet* f); locale(const locale& other, const locale& one, category); ~locale(); // not virtual const locale& operator=(const locale& other) noexcept; - template locale combine(const locale& other) const; + template locale combine(const locale& other) const; // locale operations basic_string name() const; @@ -149,7 +149,7 @@ bool operator==(const locale& other) const; bool operator!=(const locale& other) const; - template + template bool operator()(const basic_string& s1, const basic_string& s2) const; @@ -187,14 +187,14 @@ \tcode{ostreambuf_iterator}.} \begin{codeblock} -template +template basic_ostream& operator<< (basic_ostream& s, Date d) { typename basic_ostream::sentry cerberos(s); if (cerberos) { ios_base::iostate err = ios_base::iostate::goodbit; tm tmbuf; d.extract(tmbuf); - use_facet> >( + use_facet>>( s.getloc()).put(s, s, s.fill(), err, &tmbuf, 'x'); s.setstate(err); // might throw } @@ -681,7 +681,7 @@ \indexlibrary{\idxcode{locale}!constructor}% \begin{itemdecl} -template locale(const locale& other, Facet* f); +template locale(const locale& other, Facet* f); \end{itemdecl} \begin{itemdescr} @@ -747,7 +747,7 @@ \indexlibrarymember{locale}{combine}% \begin{itemdecl} -template locale combine(const locale& other) const; +template locale combine(const locale& other) const; \end{itemdecl} \begin{itemdescr} @@ -819,7 +819,7 @@ \indexlibrarymember{locale}{operator()}% \begin{itemdecl} -template +template bool operator()(const basic_string& s1, const basic_string& s2) const; \end{itemdecl} @@ -920,7 +920,7 @@ \indexlibrarymember{locale}{use_facet}% \begin{itemdecl} -template const Facet& use_facet(const locale& loc); +template const Facet& use_facet(const locale& loc); \end{itemdecl} \begin{itemdescr} @@ -951,7 +951,7 @@ \indexlibrarymember{locale}{has_facet}% \begin{itemdecl} -template bool has_facet(const locale& loc) noexcept; +template bool has_facet(const locale& loc) noexcept; \end{itemdecl} \begin{itemdescr} @@ -977,18 +977,18 @@ \indexlibrary{\idxcode{isgraph}}% \indexlibrary{\idxcode{isblank}}% \begin{itemdecl} -template bool isspace (charT c, const locale& loc); -template bool isprint (charT c, const locale& loc); -template bool iscntrl (charT c, const locale& loc); -template bool isupper (charT c, const locale& loc); -template bool islower (charT c, const locale& loc); -template bool isalpha (charT c, const locale& loc); -template bool isdigit (charT c, const locale& loc); -template bool ispunct (charT c, const locale& loc); -template bool isxdigit(charT c, const locale& loc); -template bool isalnum (charT c, const locale& loc); -template bool isgraph (charT c, const locale& loc); -template bool isblank (charT c, const locale& loc); +template bool isspace (charT c, const locale& loc); +template bool isprint (charT c, const locale& loc); +template bool iscntrl (charT c, const locale& loc); +template bool isupper (charT c, const locale& loc); +template bool islower (charT c, const locale& loc); +template bool isalpha (charT c, const locale& loc); +template bool isdigit (charT c, const locale& loc); +template bool ispunct (charT c, const locale& loc); +template bool isxdigit(charT c, const locale& loc); +template bool isalnum (charT c, const locale& loc); +template bool isgraph (charT c, const locale& loc); +template bool isblank (charT c, const locale& loc); \end{itemdecl} \pnum @@ -1014,7 +1014,7 @@ \indexlibrary{\idxcode{toupper}}% \begin{itemdecl} -template charT toupper(charT c, const locale& loc); +template charT toupper(charT c, const locale& loc); \end{itemdecl} \begin{itemdescr} @@ -1025,7 +1025,7 @@ \indexlibrary{\idxcode{tolower}}% \begin{itemdecl} -template charT tolower(charT c, const locale& loc); +template charT tolower(charT c, const locale& loc); \end{itemdecl} \begin{itemdescr} @@ -1119,7 +1119,7 @@ \indexlibrary{\idxcode{ctype}}% \begin{codeblock} namespace std { - template + template class ctype : public locale::facet, public ctype_base { public: using char_type = charT; @@ -1512,7 +1512,7 @@ \indexlibrary{\idxcode{ctype_byname}}% \begin{codeblock} namespace std { - template + template class ctype_byname : public ctype { public: using mask = typename ctype::mask; @@ -1530,7 +1530,7 @@ \indexlibrary{\idxcode{ctype}}% \begin{codeblock} namespace std { - template <> + template<> class ctype : public locale::facet, public ctype_base { public: using char_type = char; @@ -1828,7 +1828,7 @@ enum result { ok, partial, error, noconv }; }; - template + template class codecvt : public locale::facet, public codecvt_base { public: using intern_type = internT; @@ -2282,7 +2282,7 @@ \indexlibrary{\idxcode{codecvt_byname}}% \begin{codeblock} namespace std { - template + template class codecvt_byname : public codecvt { public: explicit codecvt_byname(const char*, size_t refs = 0); @@ -2348,7 +2348,7 @@ \indexlibrary{\idxcode{num_get}}% \begin{codeblock} namespace std { - template > + template> class num_get : public locale::facet { public: using char_type = charT; @@ -2762,7 +2762,7 @@ \indexlibrary{\idxcode{num_put}}% \begin{codeblock} namespace std { - template > + template> class num_put : public locale::facet { public: using char_type = charT; @@ -3095,7 +3095,7 @@ \indexlibrary{\idxcode{numpunct}}% \begin{codeblock} namespace std { - template + template class numpunct : public locale::facet { public: using char_type = charT; @@ -3310,7 +3310,7 @@ \indexlibrary{\idxcode{numpunct_byname}}% \begin{codeblock} namespace std { - template + template class numpunct_byname : public numpunct { // this class is specialized for \tcode{char} and \tcode{wchar_t}. public: @@ -3333,7 +3333,7 @@ \indexlibrary{\idxcode{collate}}% \begin{codeblock} namespace std { - template + template class collate : public locale::facet { public: using char_type = charT; @@ -3481,7 +3481,7 @@ \indexlibrary{\idxcode{collate_byname}}% \begin{codeblock} namespace std { - template + template class collate_byname : public collate { public: using string_type = basic_string; @@ -3529,7 +3529,7 @@ enum dateorder { no_order, dmy, mdy, ymd, ydm }; }; - template > + template> class time_get : public locale::facet, public time_base { public: using char_type = charT; @@ -3936,7 +3936,7 @@ \indexlibrary{\idxcode{time_get_byname}}% \begin{codeblock} namespace std { - template > + template> class time_get_byname : public time_get { public: using dateorder = time_base::dateorder; @@ -3956,7 +3956,7 @@ \indexlibrary{\idxcode{time_put}}% \begin{codeblock} namespace std { - template > + template> class time_put : public locale::facet { public: using char_type = charT; @@ -4089,7 +4089,7 @@ \indexlibrary{\idxcode{time_put_byname}}% \begin{codeblock} namespace std { - template > + template> class time_put_byname : public time_put { public: using char_type = charT; @@ -4135,7 +4135,7 @@ \indexlibrary{\idxcode{money_get}}% \begin{codeblock} namespace std { - template > + template> class money_get : public locale::facet { public: using char_type = charT; @@ -4361,7 +4361,7 @@ \indexlibrary{\idxcode{money_put}}% \begin{codeblock} namespace std { - template > + template> class money_put : public locale::facet { public: using char_type = charT; @@ -4515,7 +4515,7 @@ struct pattern { char field[4]; }; }; - template + template class moneypunct : public locale::facet, public money_base { public: using char_type = charT; @@ -4845,7 +4845,7 @@ \indexlibrary{\idxcode{moneypunct_byname}}% \begin{codeblock} namespace std { - template + template class moneypunct_byname : public moneypunct { public: using pattern = money_base::pattern; @@ -4877,7 +4877,7 @@ using catalog = @\textit{unspecified signed integer type}@; }; - template + template class messages : public locale::facet, public messages_base { public: using char_type = charT; @@ -5021,7 +5021,7 @@ \indexlibrary{\idxcode{messages_byname}}% \begin{codeblock} namespace std { - template + template class messages_byname : public messages { public: using catalog = messages_base::catalog; diff --git a/source/numerics.tex b/source/numerics.tex index 30f7aa42f8..317d8fb342 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -2708,7 +2708,7 @@ \item if the constructor \begin{codeblock} -template explicit X(Sseq& q); +template explicit X(Sseq& q); \end{codeblock} is called with a type \tcode{Sseq} that does not qualify as a seed sequence, then this constructor shall not participate in overload resolution; @@ -2716,7 +2716,7 @@ \item if the member function \begin{codeblock} -template void seed(Sseq& q); +template void seed(Sseq& q); \end{codeblock} is called with a type \tcode{Sseq} that does not qualify as a seed sequence, then this function shall not participate in overload resolution. @@ -6534,10 +6534,10 @@ template valarray tan (const valarray&); template valarray tanh (const valarray&); - template @\unspec{1}@ begin(valarray& v); - template @\unspec{2}@ begin(const valarray& v); - template @\unspec{1}@ end(valarray& v); - template @\unspec{2}@ end(const valarray& v); + template @\unspec{1}@ begin(valarray& v); + template @\unspec{2}@ begin(const valarray& v); + template @\unspec{1}@ end(valarray& v); + template @\unspec{2}@ end(const valarray& v); } \end{codeblock} @@ -7698,7 +7698,7 @@ \indexlibrarymember{swap}{valarray}% \begin{itemdecl} -template void swap(valarray& x, valarray& y) noexcept; +template void swap(valarray& x, valarray& y) noexcept; \end{itemdecl} \begin{itemdescr} @@ -7791,7 +7791,7 @@ \indexlibrarymember{value_type}{slice_array}% \begin{codeblock} namespace std { - template class slice_array { + template class slice_array { public: using value_type = T; @@ -8077,7 +8077,7 @@ \indexlibrarymember{value_type}{gslice_array}% \begin{codeblock} namespace std { - template class gslice_array { + template class gslice_array { public: using value_type = T; @@ -8209,7 +8209,7 @@ \indexlibrarymember{value_type}{mask_array}% \begin{codeblock} namespace std { - template class mask_array { + template class mask_array { public: using value_type = T; @@ -8335,7 +8335,7 @@ \indexlibrarymember{value_type}{indirect_array}% \begin{codeblock} namespace std { - template class indirect_array { + template class indirect_array { public: using value_type = T; @@ -8504,8 +8504,8 @@ \indexlibrary{\idxcode{begin}!\idxcode{valarray}}% \begin{itemdecl} -template @\unspec{1}@ begin(valarray& v); -template @\unspec{2}@ begin(const valarray& v); +template @\unspec{1}@ begin(valarray& v); +template @\unspec{2}@ begin(const valarray& v); \end{itemdecl} \begin{itemdescr} @@ -8515,8 +8515,8 @@ \indexlibrary{\idxcode{end}!\idxcode{valarray}}% \begin{itemdecl} -template @\unspec{1}@ end(valarray& v); -template @\unspec{2}@ end(const valarray& v); +template @\unspec{1}@ end(valarray& v); +template @\unspec{2}@ end(const valarray& v); \end{itemdecl} \begin{itemdescr} @@ -8533,9 +8533,9 @@ \begin{codeblock} namespace std { // \ref{accumulate}, accumulate - template + template T accumulate(InputIterator first, InputIterator last, T init); - template + template T accumulate(InputIterator first, InputIterator last, T init, BinaryOperation binary_op); // \ref{reduce}, reduce @@ -8558,11 +8558,11 @@ ForwardIterator first, ForwardIterator last, T init, BinaryOperation binary_op); // \ref{inner.product}, inner product - template + template T inner_product(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, T init); - template + template T inner_product(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, T init, BinaryOperation1 binary_op1, @@ -8609,11 +8609,11 @@ BinaryOperation binary_op, UnaryOperation unary_op); // \ref{partial.sum}, partial sum - template + template OutputIterator partial_sum(InputIterator first, InputIterator last, OutputIterator result); - template + template OutputIterator partial_sum(InputIterator first, InputIterator last, OutputIterator result, @@ -8720,22 +8720,22 @@ T init); // \ref{adjacent.difference}, adjacent difference - template + template OutputIterator adjacent_difference(InputIterator first, InputIterator last, OutputIterator result); - template + template OutputIterator adjacent_difference(InputIterator first, InputIterator last, OutputIterator result, BinaryOperation binary_op); - template + template ForwardIterator2 adjacent_difference(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first, ForwardIterator1 last, ForwardIterator2 result); - template + template ForwardIterator2 adjacent_difference(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator1 first, ForwardIterator1 last, @@ -8743,15 +8743,15 @@ BinaryOperation binary_op); // \ref{numeric.iota}, iota - template + template void iota(ForwardIterator first, ForwardIterator last, T value); // \ref{numeric.ops.gcd}, greatest common divisor - template + template constexpr common_type_t gcd(M m, N n); // \ref{numeric.ops.lcm}, least common multiple - template + template constexpr common_type_t lcm(M m, N n); } \end{codeblock} @@ -8780,9 +8780,9 @@ \indexlibrary{\idxcode{accumulate}}% \begin{itemdecl} -template +template T accumulate(InputIterator first, InputIterator last, T init); -template +template T accumulate(InputIterator first, InputIterator last, T init, BinaryOperation binary_op); \end{itemdecl} @@ -8926,11 +8926,11 @@ \indexlibrary{\idxcode{inner_product}}% \begin{itemdecl} -template +template T inner_product(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, T init); -template +template T inner_product(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, T init, BinaryOperation1 binary_op1, @@ -8974,12 +8974,12 @@ \rSec2[transform.reduce]{Transform reduce} \indexlibrary{\idxcode{transform_reduce}}% \begin{itemdecl} -template +template T transform_reduce(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, T init); -template +template T transform_reduce(ExecutionPolicy&& exec, ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, @@ -8996,16 +8996,16 @@ \indexlibrary{\idxcode{transform_reduce}}% \begin{itemdecl} -template +template T transform_reduce(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, T init, BinaryOperation1 binary_op1, BinaryOperation2 binary_op2); -template +template T transform_reduce(ExecutionPolicy&& exec, ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2, @@ -9097,11 +9097,11 @@ \indexlibrary{\idxcode{partial_sum}}% \begin{itemdecl} -template +template OutputIterator partial_sum( InputIterator first, InputIterator last, OutputIterator result); -template +template OutputIterator partial_sum( InputIterator first, InputIterator last, OutputIterator result, BinaryOperation binary_op); @@ -9508,20 +9508,20 @@ \indexlibrary{\idxcode{adjacent_difference}}% \begin{itemdecl} -template +template OutputIterator adjacent_difference(InputIterator first, InputIterator last, OutputIterator result); -template +template ForwardIterator2 adjacent_difference(ExecutionPolicy&& exec, ForwardIterator1 first, ForwardIterator1 last, ForwardIterator2 result); -template +template OutputIterator adjacent_difference(InputIterator first, InputIterator last, OutputIterator result, BinaryOperation binary_op); -template +template ForwardIterator2 adjacent_difference(ExecutionPolicy&& exec, ForwardIterator1 first, ForwardIterator1 last, @@ -9600,7 +9600,7 @@ \indexlibrary{\idxcode{iota}}% \begin{itemdecl} -template +template void iota(ForwardIterator first, ForwardIterator last, T value); \end{itemdecl} @@ -9623,7 +9623,7 @@ \indexlibrary{\idxcode{gcd}}% \begin{itemdecl} -template +template constexpr common_type_t gcd(M m, N n); \end{itemdecl} @@ -9654,7 +9654,7 @@ \indexlibrary{\idxcode{lcm}}% \begin{itemdecl} -template +template constexpr common_type_t lcm(M m, N n); \end{itemdecl} diff --git a/source/regex.tex b/source/regex.tex index ed612710cc..0a7126aab5 100644 --- a/source/regex.tex +++ b/source/regex.tex @@ -273,20 +273,20 @@ class regex_error; // \ref{re.traits}, class template \tcode{regex_traits} - template struct regex_traits; + template struct regex_traits; // \ref{re.regex}, class template \tcode{basic_regex} - template > class basic_regex; + template> class basic_regex; using regex = basic_regex; using wregex = basic_regex; // \ref{re.regex.swap}, \tcode{basic_regex} swap - template + template void swap(basic_regex& e1, basic_regex& e2); // \ref{re.submatch}, class template \tcode{sub_match} - template + template class sub_match; using csub_match = sub_match; @@ -295,152 +295,152 @@ using wssub_match = sub_match; // \ref{re.submatch.op}, \tcode{sub_match} non-member operators - template + template bool operator==(const sub_match& lhs, const sub_match& rhs); - template + template bool operator!=(const sub_match& lhs, const sub_match& rhs); - template + template bool operator<(const sub_match& lhs, const sub_match& rhs); - template + template bool operator<=(const sub_match& lhs, const sub_match& rhs); - template + template bool operator>=(const sub_match& lhs, const sub_match& rhs); - template + template bool operator>(const sub_match& lhs, const sub_match& rhs); - template + template bool operator==( const basic_string::value_type, ST, SA>& lhs, const sub_match& rhs); - template + template bool operator!=( const basic_string::value_type, ST, SA>& lhs, const sub_match& rhs); - template + template bool operator<( const basic_string::value_type, ST, SA>& lhs, const sub_match& rhs); - template + template bool operator>( const basic_string::value_type, ST, SA>& lhs, const sub_match& rhs); - template + template bool operator>=( const basic_string::value_type, ST, SA>& lhs, const sub_match& rhs); - template + template bool operator<=( const basic_string::value_type, ST, SA>& lhs, const sub_match& rhs); - template + template bool operator==( const sub_match& lhs, const basic_string::value_type, ST, SA>& rhs); - template + template bool operator!=( const sub_match& lhs, const basic_string::value_type, ST, SA>& rhs); - template + template bool operator<( const sub_match& lhs, const basic_string::value_type, ST, SA>& rhs); - template + template bool operator>( const sub_match& lhs, const basic_string::value_type, ST, SA>& rhs); - template + template bool operator>=( const sub_match& lhs, const basic_string::value_type, ST, SA>& rhs); - template + template bool operator<=( const sub_match& lhs, const basic_string::value_type, ST, SA>& rhs); - template + template bool operator==(const typename iterator_traits::value_type* lhs, const sub_match& rhs); - template + template bool operator!=(const typename iterator_traits::value_type* lhs, const sub_match& rhs); - template + template bool operator<(const typename iterator_traits::value_type* lhs, const sub_match& rhs); - template + template bool operator>(const typename iterator_traits::value_type* lhs, const sub_match& rhs); - template + template bool operator>=(const typename iterator_traits::value_type* lhs, const sub_match& rhs); - template + template bool operator<=(const typename iterator_traits::value_type* lhs, const sub_match& rhs); - template + template bool operator==(const sub_match& lhs, const typename iterator_traits::value_type* rhs); - template + template bool operator!=(const sub_match& lhs, const typename iterator_traits::value_type* rhs); - template + template bool operator<(const sub_match& lhs, const typename iterator_traits::value_type* rhs); - template + template bool operator>(const sub_match& lhs, const typename iterator_traits::value_type* rhs); - template + template bool operator>=(const sub_match& lhs, const typename iterator_traits::value_type* rhs); - template + template bool operator<=(const sub_match& lhs, const typename iterator_traits::value_type* rhs); - template + template bool operator==(const typename iterator_traits::value_type& lhs, const sub_match& rhs); - template + template bool operator!=(const typename iterator_traits::value_type& lhs, const sub_match& rhs); - template + template bool operator<(const typename iterator_traits::value_type& lhs, const sub_match& rhs); - template + template bool operator>(const typename iterator_traits::value_type& lhs, const sub_match& rhs); - template + template bool operator>=(const typename iterator_traits::value_type& lhs, const sub_match& rhs); - template + template bool operator<=(const typename iterator_traits::value_type& lhs, const sub_match& rhs); - template + template bool operator==(const sub_match& lhs, const typename iterator_traits::value_type& rhs); - template + template bool operator!=(const sub_match& lhs, const typename iterator_traits::value_type& rhs); - template + template bool operator<(const sub_match& lhs, const typename iterator_traits::value_type& rhs); - template + template bool operator>(const sub_match& lhs, const typename iterator_traits::value_type& rhs); - template + template bool operator>=(const sub_match& lhs, const typename iterator_traits::value_type& rhs); - template + template bool operator<=(const sub_match& lhs, const typename iterator_traits::value_type& rhs); - template + template basic_ostream& operator<<(basic_ostream& os, const sub_match& m); // \ref{re.results}, class template \tcode{match_results} - template >> + template>> class match_results; using cmatch = match_results; @@ -449,83 +449,83 @@ using wsmatch = match_results; // \tcode{match_results} comparisons - template + template bool operator==(const match_results& m1, const match_results& m2); - template + template bool operator!=(const match_results& m1, const match_results& m2); // \ref{re.results.swap}, \tcode{match_results} swap - template + template void swap(match_results& m1, match_results& m2); // \ref{re.alg.match}, function template \tcode{regex_match} - template + template bool regex_match(BidirectionalIterator first, BidirectionalIterator last, match_results& m, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); - template + template bool regex_match(BidirectionalIterator first, BidirectionalIterator last, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); - template + template bool regex_match(const charT* str, match_results& m, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); - template + template bool regex_match(const basic_string& s, match_results::const_iterator, Allocator>& m, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); - template + template bool regex_match(const basic_string&&, match_results::const_iterator, Allocator>&, const basic_regex&, regex_constants::match_flag_type = regex_constants::match_default) = delete; - template + template bool regex_match(const charT* str, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); - template + template bool regex_match(const basic_string& s, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); // \ref{re.alg.search}, function template \tcode{regex_search} - template + template bool regex_search(BidirectionalIterator first, BidirectionalIterator last, match_results& m, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); - template + template bool regex_search(BidirectionalIterator first, BidirectionalIterator last, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); - template + template bool regex_search(const charT* str, match_results& m, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); - template + template bool regex_search(const charT* str, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); - template + template bool regex_search(const basic_string& s, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); - template + template bool regex_search(const basic_string& s, match_results::const_iterator, Allocator>& m, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); - template + template bool regex_search(const basic_string&&, match_results::const_iterator, Allocator>&, @@ -534,7 +534,7 @@ = regex_constants::match_default) = delete; // \ref{re.alg.replace}, function template \tcode{regex_replace} - template OutputIterator regex_replace(OutputIterator out, @@ -542,32 +542,32 @@ const basic_regex& e, const basic_string& fmt, regex_constants::match_flag_type flags = regex_constants::match_default); - template + template OutputIterator regex_replace(OutputIterator out, BidirectionalIterator first, BidirectionalIterator last, const basic_regex& e, const charT* fmt, regex_constants::match_flag_type flags = regex_constants::match_default); - template + template basic_string regex_replace(const basic_string& s, const basic_regex& e, const basic_string& fmt, regex_constants::match_flag_type flags = regex_constants::match_default); - template + template basic_string regex_replace(const basic_string& s, const basic_regex& e, const charT* fmt, regex_constants::match_flag_type flags = regex_constants::match_default); - template + template basic_string regex_replace(const charT* s, const basic_regex& e, const basic_string& fmt, regex_constants::match_flag_type flags = regex_constants::match_default); - template + template basic_string regex_replace(const charT* s, const basic_regex& e, @@ -575,7 +575,7 @@ regex_constants::match_flag_type flags = regex_constants::match_default); // \ref{re.regiter}, class template \tcode{regex_iterator} - template ::value_type, class traits = regex_traits> class regex_iterator; @@ -586,7 +586,7 @@ using wsregex_iterator = regex_iterator; // \ref{re.tokiter}, class template \tcode{regex_token_iterator} - template ::value_type, class traits = regex_traits> class regex_token_iterator; @@ -597,7 +597,7 @@ using wsregex_token_iterator = regex_token_iterator; namespace pmr { - template + template using match_results = std::match_results>>; @@ -1016,7 +1016,7 @@ \indexlibrary{\idxcode{regex_traits}}% \begin{codeblock} namespace std { - template + template struct regex_traits { using char_type = charT; using string_type = basic_string; @@ -1027,15 +1027,15 @@ static size_t length(const char_type* p); charT translate(charT c) const; charT translate_nocase(charT c) const; - template + template string_type transform(ForwardIterator first, ForwardIterator last) const; - template + template string_type transform_primary( ForwardIterator first, ForwardIterator last) const; - template + template string_type lookup_collatename( ForwardIterator first, ForwardIterator last) const; - template + template char_class_type lookup_classname( ForwardIterator first, ForwardIterator last, bool icase = false) const; bool isctype(charT c, char_class_type f) const; @@ -1095,7 +1095,7 @@ \indexlibrarymember{regex_traits}{transform}% \begin{itemdecl} -template +template string_type transform(ForwardIterator first, ForwardIterator last) const; \end{itemdecl} @@ -1111,7 +1111,7 @@ \indexlibrarymember{regex_traits}{transform_primary}% \begin{itemdecl} -template +template string_type transform_primary(ForwardIterator first, ForwardIterator last) const; \end{itemdecl} @@ -1130,7 +1130,7 @@ \indexlibrarymember{regex_traits}{lookup_collatename}% \begin{itemdecl} -template +template string_type lookup_collatename(ForwardIterator first, ForwardIterator last) const; \end{itemdecl} @@ -1144,7 +1144,7 @@ \indexlibrarymember{regex_traits}{lookup_classname}% \begin{itemdecl} -template +template char_class_type lookup_classname( ForwardIterator first, ForwardIterator last, bool icase = false) const; \end{itemdecl} @@ -1326,7 +1326,7 @@ \indexlibrary{\idxcode{basic_regex}}% \begin{codeblock} namespace std { - template > + template> class basic_regex { public: // types @@ -1366,10 +1366,10 @@ basic_regex(const charT* p, size_t len, flag_type f = regex_constants::ECMAScript); basic_regex(const basic_regex&); basic_regex(basic_regex&&) noexcept; - template + template explicit basic_regex(const basic_string& p, flag_type f = regex_constants::ECMAScript); - template + template basic_regex(ForwardIterator first, ForwardIterator last, flag_type f = regex_constants::ECMAScript); basic_regex(initializer_list, flag_type = regex_constants::ECMAScript); @@ -1380,7 +1380,7 @@ basic_regex& operator=(basic_regex&&) noexcept; basic_regex& operator=(const charT* ptr); basic_regex& operator=(initializer_list il); - template + template basic_regex& operator=(const basic_string& p); // \ref{re.regex.assign}, assign @@ -1388,10 +1388,10 @@ basic_regex& assign(basic_regex&& that) noexcept; basic_regex& assign(const charT* ptr, flag_type f = regex_constants::ECMAScript); basic_regex& assign(const charT* p, size_t len, flag_type f); - template + template basic_regex& assign(const basic_string& s, flag_type f = regex_constants::ECMAScript); - template + template basic_regex& assign(InputIterator first, InputIterator last, flag_type f = regex_constants::ECMAScript); basic_regex& assign(initializer_list, @@ -1532,7 +1532,7 @@ \indexlibrary{\idxcode{basic_regex}!constructor}% \begin{itemdecl} -template +template explicit basic_regex(const basic_string& s, flag_type f = regex_constants::ECMAScript); \end{itemdecl} @@ -1555,7 +1555,7 @@ \indexlibrary{\idxcode{basic_regex}!constructor}% \begin{itemdecl} -template +template basic_regex(ForwardIterator first, ForwardIterator last, flag_type f = regex_constants::ECMAScript); \end{itemdecl} @@ -1643,7 +1643,7 @@ \indexlibrarymember{basic_regex}{operator=}% \begin{itemdecl} -template +template basic_regex& operator=(const basic_string& p); \end{itemdecl} @@ -1694,7 +1694,7 @@ \indexlibrarymember{basic_regex}{assign}% \begin{itemdecl} -template +template basic_regex& assign(const basic_string& s, flag_type f = regex_constants::ECMAScript); \end{itemdecl} @@ -1720,7 +1720,7 @@ \indexlibrarymember{basic_regex}{assign}% \begin{itemdecl} -template +template basic_regex& assign(InputIterator first, InputIterator last, flag_type f = regex_constants::ECMAScript); \end{itemdecl} @@ -1824,7 +1824,7 @@ \rSec3[re.regex.nmswap]{\tcode{basic_regex} non-member swap} \indexlibrarymember{basic_regex}{swap}% \begin{itemdecl} -template +template void swap(basic_regex& lhs, basic_regex& rhs); \end{itemdecl} @@ -1840,7 +1840,7 @@ \begin{codeblock} namespace std { - template + template class sub_match : public pair { public: using value_type = @@ -1937,7 +1937,7 @@ \indexlibrarymember{sub_match}{operator==}% \begin{itemdecl} -template +template bool operator==(const sub_match& lhs, const sub_match& rhs); \end{itemdecl} @@ -1947,7 +1947,7 @@ \indexlibrarymember{sub_match}{operator"!=}% \begin{itemdecl} -template +template bool operator!=(const sub_match& lhs, const sub_match& rhs); \end{itemdecl} @@ -1957,7 +1957,7 @@ \indexlibrarymember{sub_match}{operator<}% \begin{itemdecl} -template +template bool operator<(const sub_match& lhs, const sub_match& rhs); \end{itemdecl} @@ -1967,7 +1967,7 @@ \indexlibrarymember{sub_match}{operator<=}% \begin{itemdecl} -template +template bool operator<=(const sub_match& lhs, const sub_match& rhs); \end{itemdecl} @@ -1977,7 +1977,7 @@ \indexlibrarymember{sub_match}{operator>=}% \begin{itemdecl} -template +template bool operator>=(const sub_match& lhs, const sub_match& rhs); \end{itemdecl} @@ -1987,7 +1987,7 @@ \indexlibrarymember{sub_match}{operator>}% \begin{itemdecl} -template +template bool operator>(const sub_match& lhs, const sub_match& rhs); \end{itemdecl} @@ -1997,7 +1997,7 @@ \indexlibrarymember{sub_match}{operator==}% \begin{itemdecl} -template +template bool operator==( const basic_string::value_type, ST, SA>& lhs, const sub_match& rhs); @@ -2013,7 +2013,7 @@ \indexlibrarymember{sub_match}{operator"!=}% \begin{itemdecl} -template +template bool operator!=( const basic_string::value_type, ST, SA>& lhs, const sub_match& rhs); @@ -2025,7 +2025,7 @@ \indexlibrarymember{sub_match}{operator<}% \begin{itemdecl} -template +template bool operator<( const basic_string::value_type, ST, SA>& lhs, const sub_match& rhs); @@ -2041,7 +2041,7 @@ \indexlibrarymember{sub_match}{operator>}% \begin{itemdecl} -template +template bool operator>( const basic_string::value_type, ST, SA>& lhs, const sub_match& rhs); @@ -2053,7 +2053,7 @@ \indexlibrarymember{sub_match}{operator>=}% \begin{itemdecl} -template +template bool operator>=( const basic_string::value_type, ST, SA>& lhs, const sub_match& rhs); @@ -2065,7 +2065,7 @@ \indexlibrarymember{sub_match}{operator<=}% \begin{itemdecl} -template +template bool operator<=( const basic_string::value_type, ST, SA>& lhs, const sub_match& rhs); @@ -2077,7 +2077,7 @@ \indexlibrarymember{operator==}{sub_match}% \begin{itemdecl} -template +template bool operator==( const sub_match& lhs, const basic_string::value_type, ST, SA>& rhs); @@ -2094,7 +2094,7 @@ \indexlibrary{\idxcode{operator"!=}!\idxcode{sub_match}}% \indexlibrary{\idxcode{sub_match}!\idxcode{operator"!=}}% \begin{itemdecl} -template +template bool operator!=( const sub_match& lhs, const basic_string::value_type, ST, SA>& rhs); @@ -2107,7 +2107,7 @@ \indexlibrary{\idxcode{operator>}!\idxcode{sub_match}}% \indexlibrary{\idxcode{sub_match}!\idxcode{operator<}}% \begin{itemdecl} -template +template bool operator<( const sub_match& lhs, const basic_string::value_type, ST, SA>& rhs); @@ -2123,7 +2123,7 @@ \indexlibrarymember{operator>}{sub_match}% \begin{itemdecl} -template +template bool operator>( const sub_match& lhs, const basic_string::value_type, ST, SA>& rhs); @@ -2135,7 +2135,7 @@ \indexlibrarymember{operator>=}{sub_match}% \begin{itemdecl} -template +template bool operator>=( const sub_match& lhs, const basic_string::value_type, ST, SA>& rhs); @@ -2147,7 +2147,7 @@ \indexlibrarymember{operator<=}{sub_match}% \begin{itemdecl} -template +template bool operator<=( const sub_match& lhs, const basic_string::value_type, ST, SA>& rhs); @@ -2159,7 +2159,7 @@ \indexlibrarymember{sub_match}{operator==}% \begin{itemdecl} -template +template bool operator==(const typename iterator_traits::value_type* lhs, const sub_match& rhs); \end{itemdecl} @@ -2170,7 +2170,7 @@ \indexlibrarymember{sub_match}{operator"!=}% \begin{itemdecl} -template +template bool operator!=(const typename iterator_traits::value_type* lhs, const sub_match& rhs); \end{itemdecl} @@ -2181,7 +2181,7 @@ \indexlibrarymember{sub_match}{operator<}% \begin{itemdecl} -template +template bool operator<(const typename iterator_traits::value_type* lhs, const sub_match& rhs); \end{itemdecl} @@ -2192,7 +2192,7 @@ \indexlibrarymember{sub_match}{operator>}% \begin{itemdecl} -template +template bool operator>(const typename iterator_traits::value_type* lhs, const sub_match& rhs); \end{itemdecl} @@ -2203,7 +2203,7 @@ \indexlibrarymember{sub_match}{operator>=}% \begin{itemdecl} -template +template bool operator>=(const typename iterator_traits::value_type* lhs, const sub_match& rhs); \end{itemdecl} @@ -2214,7 +2214,7 @@ \indexlibrarymember{sub_match}{operator<=}% \begin{itemdecl} -template +template bool operator<=(const typename iterator_traits::value_type* lhs, const sub_match& rhs); \end{itemdecl} @@ -2225,7 +2225,7 @@ \indexlibrarymember{sub_match}{operator==}% \begin{itemdecl} -template +template bool operator==(const sub_match& lhs, const typename iterator_traits::value_type* rhs); \end{itemdecl} @@ -2236,7 +2236,7 @@ \indexlibrarymember{sub_match}{operator"!=}% \begin{itemdecl} -template +template bool operator!=(const sub_match& lhs, const typename iterator_traits::value_type* rhs); \end{itemdecl} @@ -2247,7 +2247,7 @@ \indexlibrarymember{sub_match}{operator<}% \begin{itemdecl} -template +template bool operator<(const sub_match& lhs, const typename iterator_traits::value_type* rhs); \end{itemdecl} @@ -2258,7 +2258,7 @@ \indexlibrarymember{sub_match}{operator>}% \begin{itemdecl} -template +template bool operator>(const sub_match& lhs, const typename iterator_traits::value_type* rhs); \end{itemdecl} @@ -2269,7 +2269,7 @@ \indexlibrarymember{sub_match}{operator>=}% \begin{itemdecl} -template +template bool operator>=(const sub_match& lhs, const typename iterator_traits::value_type* rhs); \end{itemdecl} @@ -2280,7 +2280,7 @@ \indexlibrarymember{sub_match}{operator<=}% \begin{itemdecl} -template +template bool operator<=(const sub_match& lhs, const typename iterator_traits::value_type* rhs); \end{itemdecl} @@ -2292,7 +2292,7 @@ \indexlibrarymember{sub_match}{operator==}% \begin{itemdecl} -template +template bool operator==(const typename iterator_traits::value_type& lhs, const sub_match& rhs); \end{itemdecl} @@ -2304,7 +2304,7 @@ \indexlibrarymember{sub_match}{operator"!=}% \begin{itemdecl} -template +template bool operator!=(const typename iterator_traits::value_type& lhs, const sub_match& rhs); \end{itemdecl} @@ -2316,7 +2316,7 @@ \indexlibrarymember{sub_match}{operator<}% \begin{itemdecl} -template +template bool operator<(const typename iterator_traits::value_type& lhs, const sub_match& rhs); \end{itemdecl} @@ -2328,7 +2328,7 @@ \indexlibrarymember{sub_match}{operator>}% \begin{itemdecl} -template +template bool operator>(const typename iterator_traits::value_type& lhs, const sub_match& rhs); \end{itemdecl} @@ -2340,7 +2340,7 @@ \indexlibrarymember{sub_match}{operator>=}% \begin{itemdecl} -template +template bool operator>=(const typename iterator_traits::value_type& lhs, const sub_match& rhs); \end{itemdecl} @@ -2352,7 +2352,7 @@ \indexlibrarymember{sub_match}{operator<=}% \begin{itemdecl} -template +template bool operator<=(const typename iterator_traits::value_type& lhs, const sub_match& rhs); \end{itemdecl} @@ -2364,7 +2364,7 @@ \indexlibrarymember{sub_match}{operator==}% \begin{itemdecl} -template +template bool operator==(const sub_match& lhs, const typename iterator_traits::value_type& rhs); \end{itemdecl} @@ -2376,7 +2376,7 @@ \indexlibrarymember{sub_match}{operator"!=}% \begin{itemdecl} -template +template bool operator!=(const sub_match& lhs, const typename iterator_traits::value_type& rhs); \end{itemdecl} @@ -2388,7 +2388,7 @@ \indexlibrarymember{sub_match}{operator<}% \begin{itemdecl} -template +template bool operator<(const sub_match& lhs, const typename iterator_traits::value_type& rhs); \end{itemdecl} @@ -2400,7 +2400,7 @@ \indexlibrarymember{sub_match}{operator>}% \begin{itemdecl} -template +template bool operator>(const sub_match& lhs, const typename iterator_traits::value_type& rhs); \end{itemdecl} @@ -2412,7 +2412,7 @@ \indexlibrarymember{sub_match}{operator>=}% \begin{itemdecl} -template +template bool operator>=(const sub_match& lhs, const typename iterator_traits::value_type& rhs); \end{itemdecl} @@ -2424,7 +2424,7 @@ \indexlibrarymember{sub_match}{operator<=}% \begin{itemdecl} -template +template bool operator<=(const sub_match& lhs, const typename iterator_traits::value_type& rhs); \end{itemdecl} @@ -2437,7 +2437,7 @@ \indexlibrary{\idxcode{basic_ostream}}% \indexlibrarymember{sub_match}{operator<<}% \begin{itemdecl} -template +template basic_ostream& operator<<(basic_ostream& os, const sub_match& m); \end{itemdecl} @@ -2491,8 +2491,8 @@ \begin{codeblock} namespace std { - template >> + template>> class match_results { public: using value_type = sub_match; @@ -2538,17 +2538,17 @@ const_iterator cend() const; // \ref{re.results.form}, format - template + template OutputIter format(OutputIter out, const char_type* fmt_first, const char_type* fmt_last, regex_constants::match_flag_type flags = regex_constants::format_default) const; - template + template OutputIter format(OutputIter out, const basic_string& fmt, regex_constants::match_flag_type flags = regex_constants::format_default) const; - template + template basic_string format(const basic_string& fmt, regex_constants::match_flag_type flags = regex_constants::format_default) const; @@ -2814,7 +2814,7 @@ \indexlibrarymember{match_results}{format}% \begin{itemdecl} -template +template OutputIter format( OutputIter out, const char_type* fmt_first, const char_type* fmt_last, @@ -2840,7 +2840,7 @@ \indexlibrarymember{match_results}{format}% \begin{itemdecl} -template +template OutputIter format( OutputIter out, const basic_string& fmt, @@ -2857,7 +2857,7 @@ \indexlibrarymember{match_results}{format}% \begin{itemdecl} -template +template basic_string format( const basic_string& fmt, regex_constants::match_flag_type flags = regex_constants::format_default) const; @@ -2934,7 +2934,7 @@ \indexlibrarymember{match_results}{swap}% \begin{itemdecl} -template +template void swap(match_results& m1, match_results& m2); \end{itemdecl} @@ -2945,7 +2945,7 @@ \indexlibrarymember{operator==}{match_results}% \begin{itemdecl} -template +template bool operator==(const match_results& m1, const match_results& m2); \end{itemdecl} @@ -2980,7 +2980,7 @@ \indexlibrary{\idxcode{operator"!=}!\idxcode{match_results}}% \indexlibrary{\idxcode{match_results}!\idxcode{operator"!=}}% \begin{itemdecl} -template +template bool operator!=(const match_results& m1, const match_results& m2); \end{itemdecl} @@ -3002,7 +3002,7 @@ \rSec2[re.alg.match]{\tcode{regex_match}} \indexlibrary{\idxcode{regex_match}}% \begin{itemdecl} -template +template bool regex_match(BidirectionalIterator first, BidirectionalIterator last, match_results& m, const basic_regex& e, @@ -3112,7 +3112,7 @@ \indexlibrary{\idxcode{regex_match}}% \begin{itemdecl} -template +template bool regex_match(BidirectionalIterator first, BidirectionalIterator last, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); @@ -3128,7 +3128,7 @@ \indexlibrary{\idxcode{regex_match}}% \begin{itemdecl} -template +template bool regex_match(const charT* str, match_results& m, const basic_regex& e, @@ -3142,7 +3142,7 @@ \indexlibrary{\idxcode{regex_match}}% \begin{itemdecl} -template +template bool regex_match(const basic_string& s, match_results::const_iterator, Allocator>& m, @@ -3157,7 +3157,7 @@ \indexlibrary{\idxcode{regex_match}}% \begin{itemdecl} -template +template bool regex_match(const charT* str, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); @@ -3170,7 +3170,7 @@ \indexlibrary{\idxcode{regex_match}}% \begin{itemdecl} -template +template bool regex_match(const basic_string& s, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); @@ -3185,7 +3185,7 @@ \indexlibrary{\idxcode{regex_search}}% \begin{itemdecl} -template +template bool regex_search(BidirectionalIterator first, BidirectionalIterator last, match_results& m, const basic_regex& e, @@ -3280,7 +3280,7 @@ \indexlibrary{\idxcode{regex_search}}% \begin{itemdecl} -template +template bool regex_search(const charT* str, match_results& m, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); @@ -3293,7 +3293,7 @@ \indexlibrary{\idxcode{regex_search}}% \begin{itemdecl} -template +template bool regex_search(const basic_string& s, match_results::const_iterator, Allocator>& m, @@ -3308,7 +3308,7 @@ \indexlibrary{\idxcode{regex_search}}% \begin{itemdecl} -template +template bool regex_search(BidirectionalIterator first, BidirectionalIterator last, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); @@ -3323,7 +3323,7 @@ \indexlibrary{\idxcode{regex_search}}% \begin{itemdecl} -template +template bool regex_search(const charT* str, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); @@ -3336,7 +3336,7 @@ \indexlibrary{\idxcode{regex_search}}% \begin{itemdecl} -template +template bool regex_search(const basic_string& s, const basic_regex& e, regex_constants::match_flag_type flags = regex_constants::match_default); @@ -3350,7 +3350,7 @@ \indexlibrary{\idxcode{regex_replace}}% \begin{itemdecl} -template OutputIterator regex_replace(OutputIterator out, @@ -3358,7 +3358,7 @@ const basic_regex& e, const basic_string& fmt, regex_constants::match_flag_type flags = regex_constants::match_default); -template +template OutputIterator regex_replace(OutputIterator out, BidirectionalIterator first, BidirectionalIterator last, @@ -3419,13 +3419,13 @@ \indexlibrary{\idxcode{regex_replace}}% \begin{itemdecl} -template +template basic_string regex_replace(const basic_string& s, const basic_regex& e, const basic_string& fmt, regex_constants::match_flag_type flags = regex_constants::match_default); -template +template basic_string regex_replace(const basic_string& s, const basic_regex& e, @@ -3446,13 +3446,13 @@ \indexlibrary{\idxcode{regex_replace}}% \begin{itemdecl} -template +template basic_string regex_replace(const charT* s, const basic_regex& e, const basic_string& fmt, regex_constants::match_flag_type flags = regex_constants::match_default); -template +template basic_string regex_replace(const charT* s, const basic_regex& e, @@ -3503,7 +3503,7 @@ \begin{codeblock} namespace std { - template ::value_type, class traits = regex_traits> class regex_iterator { @@ -3764,7 +3764,7 @@ \begin{codeblock} namespace std { - template ::value_type, class traits = regex_traits> class regex_token_iterator { @@ -3792,7 +3792,7 @@ initializer_list submatches, regex_constants::match_flag_type m = regex_constants::match_default); - template + template regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re, const int (&submatches)[N], @@ -3813,7 +3813,7 @@ initializer_list submatches, regex_constants::match_flag_type m = regex_constants::match_default) = delete; - template + template regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type&& re, const int (&submatches)[N], @@ -3889,7 +3889,7 @@ initializer_list submatches, regex_constants::match_flag_type m = regex_constants::match_default); -template +template regex_token_iterator(BidirectionalIterator a, BidirectionalIterator b, const regex_type& re, const int (&submatches)[N], diff --git a/source/strings.tex b/source/strings.tex index a6cc879a43..d308efda0a 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -791,7 +791,7 @@ wstring to_wstring(long double val); namespace pmr { - template > + template> using basic_string = std::basic_string>; using string = basic_string; diff --git a/source/support.tex b/source/support.tex index e0409f16be..f456688cac 100644 --- a/source/support.tex +++ b/source/support.tex @@ -61,13 +61,13 @@ enum class byte : unsigned char {}; // \ref{support.types.byteops}, \tcode{byte} type operations - template + template constexpr byte& operator<<=(byte& b, IntType shift) noexcept; - template + template constexpr byte operator<<(byte b, IntType shift) noexcept; - template + template constexpr byte& operator>>=(byte& b, IntType shift) noexcept; - template + template constexpr byte operator>>(byte b, IntType shift) noexcept; constexpr byte& operator|=(byte& l, byte r) noexcept; constexpr byte operator|(byte l, byte r) noexcept; @@ -76,7 +76,7 @@ constexpr byte& operator^=(byte& l, byte r) noexcept; constexpr byte operator^(byte l, byte r) noexcept; constexpr byte operator~(byte b) noexcept; - template + template constexpr IntType to_integer(byte b) noexcept; } @@ -341,7 +341,7 @@ \indexlibrarymember{operator<<=}{byte}% \begin{itemdecl} -template +template constexpr byte& operator<<=(byte& b, IntType shift) noexcept; \end{itemdecl} @@ -355,7 +355,7 @@ \indexlibrarymember{operator<<}{byte}% \begin{itemdecl} -template +template constexpr byte operator<<(byte b, IntType shift) noexcept; \end{itemdecl} @@ -372,7 +372,7 @@ \indexlibrarymember{operator>>=}{byte}% \begin{itemdecl} -template +template constexpr byte& operator>>=(byte& b, IntType shift) noexcept; \end{itemdecl} @@ -386,7 +386,7 @@ \indexlibrarymember{operator>>}{byte}% \begin{itemdecl} -template +template constexpr byte operator>>(byte b, IntType shift) noexcept; \end{itemdecl} @@ -482,7 +482,7 @@ \indexlibrarymember{to_integer}{byte}% \begin{itemdecl} -template +template constexpr IntType to_integer(byte b) noexcept; \end{itemdecl} @@ -1830,7 +1830,7 @@ new_handler set_new_handler(new_handler new_p) noexcept; // \ref{ptr.launder}, pointer optimization barrier - template [[nodiscard]] constexpr T* launder(T* p) noexcept; + template [[nodiscard]] constexpr T* launder(T* p) noexcept; // \ref{hardware.interference}, hardware interference size inline constexpr size_t hardware_destructive_interference_size = @\impdef{}@; @@ -2691,7 +2691,7 @@ \indexlibrary{\idxcode{launder}}% \begin{itemdecl} -template [[nodiscard]] constexpr T* launder(T* p) noexcept; +template [[nodiscard]] constexpr T* launder(T* p) noexcept; \end{itemdecl} \begin{itemdescr} @@ -3094,8 +3094,8 @@ [[noreturn]] void rethrow_exception(exception_ptr p); template exception_ptr make_exception_ptr(E e) noexcept; - template [[noreturn]] void throw_with_nested(T&& t); - template void rethrow_if_nested(const E& e); + template [[noreturn]] void throw_with_nested(T&& t); + template void rethrow_if_nested(const E& e); } \end{codeblock} @@ -3489,7 +3489,7 @@ }; template [[noreturn]] void throw_with_nested(T&& t); - template void rethrow_if_nested(const E& e); + template void rethrow_if_nested(const E& e); } \end{codeblock} @@ -3536,7 +3536,7 @@ \indexlibrarymember{throw_with_nested}{nested_exception}% \begin{itemdecl} -template [[noreturn]] void throw_with_nested(T&& t); +template [[noreturn]] void throw_with_nested(T&& t); \end{itemdecl} \begin{itemdescr} @@ -3558,7 +3558,7 @@ \indexlibrarymember{rethrow_if_nested}{nested_exception}% \begin{itemdecl} -template void rethrow_if_nested(const E& e); +template void rethrow_if_nested(const E& e); \end{itemdecl} \begin{itemdescr} diff --git a/source/threads.tex b/source/threads.tex index ec92c8e90d..6442c5a3f4 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -279,7 +279,7 @@ result, where \tcode{decay_copy} is defined as follows: \begin{codeblock} -template decay_t decay_copy(T&& v) +template decay_t decay_copy(T&& v) { return std::forward(v); } \end{codeblock} @@ -303,9 +303,9 @@ thread::id get_id() noexcept; void yield() noexcept; - template + template void sleep_until(const chrono::time_point& abs_time); - template + template void sleep_for(const chrono::duration& rel_time); } } @@ -336,7 +336,7 @@ // construct/copy/destroy thread() noexcept; - template explicit thread(F&& f, Args&&... args); + template explicit thread(F&& f, Args&&... args); ~thread(); thread(const thread&) = delete; thread(thread&&) noexcept; @@ -380,8 +380,8 @@ operator<<(basic_ostream& out, thread::id id); // hash support - template struct hash; - template <> struct hash; + template struct hash; + template<> struct hash; } \end{codeblock} @@ -490,7 +490,7 @@ \indexlibrary{\idxcode{hash}!\idxcode{thread::id}}% \begin{itemdecl} -template <> struct hash; +template<> struct hash; \end{itemdecl} \begin{itemdescr} @@ -512,7 +512,7 @@ \indexlibrary{\idxcode{thread}!constructor}% \begin{itemdecl} -template explicit thread(F&& f, Args&&... args); +template explicit thread(F&& f, Args&&... args); \end{itemdecl} \begin{itemdescr} @@ -745,9 +745,9 @@ thread::id get_id() noexcept; void yield() noexcept; - template + template void sleep_until(const chrono::time_point& abs_time); - template + template void sleep_for(const chrono::duration& rel_time); } \end{codeblock} @@ -780,7 +780,7 @@ \indexlibrarymember{sleep_until}{this_thread}% \begin{itemdecl} -template +template void sleep_until(const chrono::time_point& abs_time); \end{itemdecl} @@ -798,7 +798,7 @@ \indexlibrarymember{sleep_for}{this_thread}% \begin{itemdecl} -template +template void sleep_for(const chrono::duration& rel_time); \end{itemdecl} @@ -839,15 +839,15 @@ inline constexpr try_to_lock_t try_to_lock { }; inline constexpr adopt_lock_t adopt_lock { }; - template class lock_guard; - template class scoped_lock; - template class unique_lock; + template class lock_guard; + template class scoped_lock; + template class unique_lock; - template + template void swap(unique_lock& x, unique_lock& y) noexcept; - template int try_lock(L1&, L2&, L3&...); - template void lock(L1&, L2&, L3&...); + template int try_lock(L1&, L2&, L3&...); + template void lock(L1&, L2&, L3&...); struct once_flag; @@ -863,8 +863,8 @@ namespace std { class shared_mutex; class shared_timed_mutex; - template class shared_lock; - template + template class shared_lock; + template void swap(shared_lock& x, shared_lock& y) noexcept; } \end{codeblock} @@ -1222,9 +1222,9 @@ void lock(); // blocking bool try_lock(); - template + template bool try_lock_for(const chrono::duration& rel_time); - template + template bool try_lock_until(const chrono::time_point& abs_time); void unlock(); @@ -1273,9 +1273,9 @@ void lock(); // blocking bool try_lock() noexcept; - template + template bool try_lock_for(const chrono::duration& rel_time); - template + template bool try_lock_until(const chrono::time_point& abs_time); void unlock(); @@ -1578,18 +1578,18 @@ // exclusive ownership void lock(); // blocking bool try_lock(); - template + template bool try_lock_for(const chrono::duration& rel_time); - template + template bool try_lock_until(const chrono::time_point& abs_time); void unlock(); // shared ownership void lock_shared(); // blocking bool try_lock_shared(); - template + template bool try_lock_shared_for(const chrono::duration& rel_time); - template + template bool try_lock_shared_until(const chrono::time_point& abs_time); void unlock_shared(); }; @@ -1653,7 +1653,7 @@ \indexlibrary{\idxcode{lock_guard}}% \begin{codeblock} namespace std { - template + template class lock_guard { public: using mutex_type = Mutex; @@ -1729,7 +1729,7 @@ \indexlibrary{\idxcode{scoped_lock}}% \begin{codeblock} namespace std { - template + template class scoped_lock { public: using mutex_type = Mutex; // If \tcode{MutexTypes...} consists of the single type \tcode{Mutex} @@ -1809,7 +1809,7 @@ \indexlibrary{\idxcode{unique_lock}}% \begin{codeblock} namespace std { - template + template class unique_lock { public: using mutex_type = Mutex; @@ -1820,9 +1820,9 @@ unique_lock(mutex_type& m, defer_lock_t) noexcept; unique_lock(mutex_type& m, try_to_lock_t); unique_lock(mutex_type& m, adopt_lock_t); - template + template unique_lock(mutex_type& m, const chrono::time_point& abs_time); - template + template unique_lock(mutex_type& m, const chrono::duration& rel_time); ~unique_lock(); @@ -1836,9 +1836,9 @@ void lock(); bool try_lock(); - template + template bool try_lock_for(const chrono::duration& rel_time); - template + template bool try_lock_until(const chrono::time_point& abs_time); void unlock(); @@ -1857,7 +1857,7 @@ bool owns; // \expos }; - template + template void swap(unique_lock& x, unique_lock& y) noexcept; } \end{codeblock} @@ -1967,7 +1967,7 @@ \indexlibrary{\idxcode{unique_lock}!constructor}% \begin{itemdecl} -template +template unique_lock(mutex_type& m, const chrono::time_point& abs_time); \end{itemdecl} @@ -1988,7 +1988,7 @@ \indexlibrary{\idxcode{unique_lock}!constructor}% \begin{itemdecl} -template +template unique_lock(mutex_type& m, const chrono::duration& rel_time); \end{itemdecl} @@ -2103,7 +2103,7 @@ \indexlibrarymember{try_lock_until}{unique_lock}% \begin{itemdecl} -template +template bool try_lock_until(const chrono::time_point& abs_time); \end{itemdecl} @@ -2137,7 +2137,7 @@ \indexlibrarymember{try_lock_for}{unique_lock}% \begin{itemdecl} -template +template bool try_lock_for(const chrono::duration& rel_time); \end{itemdecl} @@ -2210,7 +2210,7 @@ \indexlibrarymember{swap}{unique_lock}% \begin{itemdecl} -template +template void swap(unique_lock& x, unique_lock& y) noexcept; \end{itemdecl} @@ -2252,7 +2252,7 @@ \indexlibrary{\idxcode{shared_lock}}% \begin{codeblock} namespace std { - template + template class shared_lock { public: using mutex_type = Mutex; @@ -2263,9 +2263,9 @@ shared_lock(mutex_type& m, defer_lock_t) noexcept; shared_lock(mutex_type& m, try_to_lock_t); shared_lock(mutex_type& m, adopt_lock_t); - template + template shared_lock(mutex_type& m, const chrono::time_point& abs_time); - template + template shared_lock(mutex_type& m, const chrono::duration& rel_time); ~shared_lock(); @@ -2278,9 +2278,9 @@ // \ref{thread.lock.shared.locking}, locking void lock(); // blocking bool try_lock(); - template + template bool try_lock_for(const chrono::duration& rel_time); - template + template bool try_lock_until(const chrono::time_point& abs_time); void unlock(); @@ -2298,7 +2298,7 @@ bool owns; // \expos }; - template + template void swap(shared_lock& x, shared_lock& y) noexcept; } \end{codeblock} @@ -2399,7 +2399,7 @@ \indexlibrary{\idxcode{shared_lock}!constructor}% \begin{itemdecl} -template +template shared_lock(mutex_type& m, const chrono::time_point& abs_time); \end{itemdecl} @@ -2420,7 +2420,7 @@ \indexlibrary{\idxcode{shared_lock}!constructor}% \begin{itemdecl} -template +template shared_lock(mutex_type& m, const chrono::duration& rel_time); \end{itemdecl} @@ -2534,7 +2534,7 @@ \indexlibrarymember{try_lock_until}{shared_lock}% \begin{itemdecl} -template +template bool try_lock_until(const chrono::time_point& abs_time); \end{itemdecl} @@ -2565,7 +2565,7 @@ \indexlibrarymember{try_lock_for}{shared_lock}% \begin{itemdecl} -template +template bool try_lock_for(const chrono::duration& rel_time); \end{itemdecl} @@ -2641,7 +2641,7 @@ \indexlibrarymember{swap}{shared_lock}% \begin{itemdecl} -template +template void swap(shared_lock& x, shared_lock& y) noexcept; \end{itemdecl} @@ -2686,7 +2686,7 @@ \indexlibrary{\idxcode{try_lock}}% \begin{itemdecl} -template int try_lock(L1&, L2&, L3&...); +template int try_lock(L1&, L2&, L3&...); \end{itemdecl} \begin{itemdescr} @@ -2710,7 +2710,7 @@ \indexlibrary{\idxcode{lock}}% \begin{itemdecl} -template void lock(L1&, L2&, L3&...); +template void lock(L1&, L2&, L3&...); \end{itemdecl} \begin{itemdescr} @@ -2954,19 +2954,19 @@ void notify_one() noexcept; void notify_all() noexcept; void wait(unique_lock& lock); - template + template void wait(unique_lock& lock, Predicate pred); - template + template cv_status wait_until(unique_lock& lock, const chrono::time_point& abs_time); - template + template bool wait_until(unique_lock& lock, const chrono::time_point& abs_time, Predicate pred); - template + template cv_status wait_for(unique_lock& lock, const chrono::duration& rel_time); - template + template bool wait_for(unique_lock& lock, const chrono::duration& rel_time, Predicate pred); @@ -3078,7 +3078,7 @@ \indexlibrarymember{wait}{condition_variable}% \begin{itemdecl} -template +template void wait(unique_lock& lock, Predicate pred); \end{itemdecl} @@ -3118,7 +3118,7 @@ \indexlibrarymember{wait_until}{condition_variable}% \begin{itemdecl} -template +template cv_status wait_until(unique_lock& lock, const chrono::time_point& abs_time); \end{itemdecl} @@ -3174,7 +3174,7 @@ \indexlibrarymember{wait_for}{condition_variable}% \begin{itemdecl} -template +template cv_status wait_for(unique_lock& lock, const chrono::duration& rel_time); \end{itemdecl} @@ -3219,7 +3219,7 @@ \indexlibrarymember{wait_until}{condition_variable}% \begin{itemdecl} -template +template bool wait_until(unique_lock& lock, const chrono::time_point& abs_time, Predicate pred); @@ -3268,7 +3268,7 @@ \indexlibrarymember{wait_for}{condition_variable}% \begin{itemdecl} -template +template bool wait_for(unique_lock& lock, const chrono::duration& rel_time, Predicate pred); @@ -3342,19 +3342,19 @@ void notify_one() noexcept; void notify_all() noexcept; - template + template void wait(Lock& lock); - template + template void wait(Lock& lock, Predicate pred); - template + template cv_status wait_until(Lock& lock, const chrono::time_point& abs_time); - template + template bool wait_until(Lock& lock, const chrono::time_point& abs_time, Predicate pred); - template + template cv_status wait_for(Lock& lock, const chrono::duration& rel_time); - template + template bool wait_for(Lock& lock, const chrono::duration& rel_time, Predicate pred); }; } @@ -3424,7 +3424,7 @@ \indexlibrarymember{wait}{condition_variable_any}% \begin{itemdecl} -template +template void wait(Lock& lock); \end{itemdecl} @@ -3452,7 +3452,7 @@ \indexlibrarymember{wait}{condition_variable_any}% \begin{itemdecl} -template +template void wait(Lock& lock, Predicate pred); \end{itemdecl} @@ -3467,7 +3467,7 @@ \indexlibrarymember{wait_until}{condition_variable_any}% \begin{itemdecl} -template +template cv_status wait_until(Lock& lock, const chrono::time_point& abs_time); \end{itemdecl} @@ -3512,7 +3512,7 @@ \indexlibrarymember{wait_for}{condition_variable_any}% \begin{itemdecl} -template +template cv_status wait_for(Lock& lock, const chrono::duration& rel_time); \end{itemdecl} @@ -3545,7 +3545,7 @@ \indexlibrarymember{wait_until}{condition_variable_any}% \begin{itemdecl} -template +template bool wait_until(Lock& lock, const chrono::time_point& abs_time, Predicate pred); \end{itemdecl} @@ -3570,7 +3570,7 @@ \indexlibrarymember{wait_for}{condition_variable_any}% \begin{itemdecl} -template +template bool wait_for(Lock& lock, const chrono::duration& rel_time, Predicate pred); \end{itemdecl} @@ -3617,7 +3617,7 @@ deferred }; - template <> struct is_error_code_enum : public true_type { }; + template<> struct is_error_code_enum : public true_type { }; error_code make_error_code(future_errc e) noexcept; error_condition make_error_condition(future_errc e) noexcept; @@ -3625,35 +3625,35 @@ class future_error; - template class promise; - template class promise; - template <> class promise; + template class promise; + template class promise; + template<> class promise; - template + template void swap(promise& x, promise& y) noexcept; - template + template struct uses_allocator, Alloc>; - template class future; - template class future; - template <> class future; + template class future; + template class future; + template<> class future; - template class shared_future; - template class shared_future; - template <> class shared_future; + template class shared_future; + template class shared_future; + template<> class shared_future; - template class packaged_task; // not defined - template + template class packaged_task; // not defined + template class packaged_task; - template + template void swap(packaged_task&, packaged_task&) noexcept; - template + template [[nodiscard]] future, decay_t...>> async(F&& f, Args&&... args); - template + template [[nodiscard]] future, decay_t...>> async(launch policy, F&& f, Args&&... args); } @@ -3874,11 +3874,11 @@ \indexlibrary{\idxcode{promise}}% \begin{codeblock} namespace std { - template + template class promise { public: promise(); - template + template promise(allocator_arg_t, const Allocator& a); promise(promise&& rhs) noexcept; promise(const promise& rhs) = delete; @@ -3901,10 +3901,10 @@ void set_exception_at_thread_exit(exception_ptr p); }; - template + template void swap(promise& x, promise& y) noexcept; - template + template struct uses_allocator, Alloc>; } \end{codeblock} @@ -3923,7 +3923,7 @@ \indexlibrary{\idxcode{uses_allocator}!\idxcode{promise}}% \begin{itemdecl} -template +template struct uses_allocator, Alloc> : true_type { }; \end{itemdecl} @@ -3937,7 +3937,7 @@ \indexlibrary{\idxcode{promise}!constructor}% \begin{itemdecl} promise(); -template +template promise(allocator_arg_t, const Allocator& a); \end{itemdecl} @@ -4151,7 +4151,7 @@ \indexlibrarymember{swap}{promise}% \begin{itemdecl} -template +template void swap(promise& x, promise& y) noexcept; \end{itemdecl} @@ -4194,7 +4194,7 @@ \indexlibrary{\idxcode{future}}% \begin{codeblock} namespace std { - template + template class future { public: future() noexcept; @@ -4212,9 +4212,9 @@ bool valid() const noexcept; void wait() const; - template + template future_status wait_for(const chrono::duration& rel_time) const; - template + template future_status wait_until(const chrono::time_point& abs_time) const; }; } @@ -4382,7 +4382,7 @@ \indexlibrarymember{wait_for}{future}% \begin{itemdecl} -template +template future_status wait_for(const chrono::duration& rel_time) const; \end{itemdecl} @@ -4415,7 +4415,7 @@ \indexlibrarymember{wait_until}{future}% \begin{itemdecl} -template +template future_status wait_until(const chrono::time_point& abs_time) const; \end{itemdecl} @@ -4479,7 +4479,7 @@ \indexlibrary{\idxcode{shared_future}}% \begin{codeblock} namespace std { - template + template class shared_future { public: shared_future() noexcept; @@ -4497,9 +4497,9 @@ bool valid() const noexcept; void wait() const; - template + template future_status wait_for(const chrono::duration& rel_time) const; - template + template future_status wait_until(const chrono::time_point& abs_time) const; }; } @@ -4695,7 +4695,7 @@ \indexlibrarymember{wait_for}{shared_future}% \begin{itemdecl} -template +template future_status wait_for(const chrono::duration& rel_time) const; \end{itemdecl} @@ -4729,7 +4729,7 @@ \indexlibrarymember{wait_until}{shared_future}% \begin{itemdecl} -template +template future_status wait_until(const chrono::time_point& abs_time) const; \end{itemdecl} @@ -4770,10 +4770,10 @@ \indexlibrary{\idxcode{async}}% \begin{itemdecl} -template +template [[nodiscard]] future, decay_t...>> async(F&& f, Args&&... args); -template +template [[nodiscard]] future, decay_t...>> async(launch policy, F&& f, Args&&... args); \end{itemdecl} @@ -4957,7 +4957,7 @@ public: // construction and destruction packaged_task() noexcept; - template + template explicit packaged_task(F&& f); ~packaged_task(); @@ -4982,7 +4982,7 @@ void reset(); }; - template + template void swap(packaged_task& x, packaged_task& y) noexcept; } \end{codeblock} @@ -5001,7 +5001,7 @@ \indexlibrary{\idxcode{packaged_task}!constructor}% \begin{itemdecl} -template +template packaged_task(F&& f); \end{itemdecl} @@ -5204,7 +5204,7 @@ \indexlibrarymember{swap}{packaged_task}% \begin{itemdecl} -template +template void swap(packaged_task& x, packaged_task& y) noexcept; \end{itemdecl} diff --git a/source/utilities.tex b/source/utilities.tex index 6c0495651d..b955a9d1f7 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -47,35 +47,35 @@ namespace std { // \ref{utility.swap}, swap - template + template void swap(T& a, T& b) noexcept(@\seebelow@); - template + template void swap(T (&a)[N], T (&b)[N]) noexcept(is_nothrow_swappable_v); // \ref{utility.exchange}, exchange - template + template constexpr T exchange(T& obj, U&& new_val); // \ref{forward}, forward/move - template + template constexpr T&& forward(remove_reference_t& t) noexcept; - template + template constexpr T&& forward(remove_reference_t&& t) noexcept; - template + template constexpr remove_reference_t&& move(T&&) noexcept; - template + template constexpr conditional_t< !is_nothrow_move_constructible_v && is_copy_constructible_v, const T&, T&&> move_if_noexcept(T& x) noexcept; // \ref{utility.as_const}, \tcode{as_const} - template + template constexpr add_const_t& as_const(T& t) noexcept; - template + template void as_const(const T&&) = delete; // \ref{declval}, declval - template + template add_rvalue_reference_t declval() noexcept; // as unevaluated operand @% \indexlibrary{\idxcode{index_sequence}}% @@ -97,35 +97,35 @@ using index_sequence_for = make_index_sequence; // \ref{pairs}, class template \tcode{pair} - template + template struct pair; // \ref{pairs.spec}, pair specialized algorithms - template + template constexpr bool operator==(const pair&, const pair&); - template + template constexpr bool operator< (const pair&, const pair&); - template + template constexpr bool operator!=(const pair&, const pair&); - template + template constexpr bool operator> (const pair&, const pair&); - template + template constexpr bool operator>=(const pair&, const pair&); - template + template constexpr bool operator<=(const pair&, const pair&); - template + template void swap(pair& x, pair& y) noexcept(noexcept(x.swap(y))); - template + template constexpr @\seebelow@ make_pair(T1&&, T2&&); // \ref{pair.astuple}, tuple-like access to pair - template class tuple_size; - template class tuple_element; + template class tuple_size; + template class tuple_element; - template struct tuple_size>; - template struct tuple_element>; + template struct tuple_size>; + template struct tuple_element>; template constexpr tuple_element_t>& get(pair&) noexcept; @@ -135,21 +135,21 @@ constexpr const tuple_element_t>& get(const pair&) noexcept; template constexpr const tuple_element_t>&& get(const pair&&) noexcept; - template + template constexpr T1& get(pair& p) noexcept; - template + template constexpr const T1& get(const pair& p) noexcept; - template + template constexpr T1&& get(pair&& p) noexcept; - template + template constexpr const T1&& get(const pair&& p) noexcept; - template + template constexpr T2& get(pair& p) noexcept; - template + template constexpr const T2& get(const pair& p) noexcept; - template + template constexpr T2&& get(pair&& p) noexcept; - template + template constexpr const T2&& get(const pair&& p) noexcept; // \ref{pair.piecewise}, pair piecewise construction @@ -157,23 +157,23 @@ explicit piecewise_construct_t() = default; }; inline constexpr piecewise_construct_t piecewise_construct{}; - template class tuple; // defined in \tcode{}\iref{tuple.syn} + template class tuple; // defined in \tcode{}\iref{tuple.syn} // in-place construction struct in_place_t { explicit in_place_t() = default; }; inline constexpr in_place_t in_place{}; - template + template struct in_place_type_t { explicit in_place_type_t() = default; }; - template inline constexpr in_place_type_t in_place_type{}; - template + template inline constexpr in_place_type_t in_place_type{}; + template struct in_place_index_t { explicit in_place_index_t() = default; }; - template inline constexpr in_place_index_t in_place_index{}; + template inline constexpr in_place_index_t in_place_index{}; } \end{codeblock} @@ -194,7 +194,7 @@ \indexlibrary{\idxcode{swap}}% \begin{itemdecl} -template +template void swap(T& a, T& b) noexcept(@\seebelow@); \end{itemdecl} @@ -225,7 +225,7 @@ \indexlibrary{\idxcode{swap}}% \begin{itemdecl} -template +template void swap(T (&a)[N], T (&b)[N]) noexcept(is_nothrow_swappable_v); \end{itemdecl} @@ -248,7 +248,7 @@ \indexlibrary{\idxcode{exchange}}% \begin{itemdecl} -template +template constexpr T exchange(T& obj, U&& new_val); \end{itemdecl} @@ -278,8 +278,8 @@ \indexlibrary{\idxcode{forward}}% \indextext{\idxcode{forward}}% \begin{itemdecl} -template constexpr T&& forward(remove_reference_t& t) noexcept; -template constexpr T&& forward(remove_reference_t&& t) noexcept; +template constexpr T&& forward(remove_reference_t& t) noexcept; +template constexpr T&& forward(remove_reference_t&& t) noexcept; \end{itemdecl} \begin{itemdescr} @@ -292,7 +292,7 @@ \pnum \begin{example} \begin{codeblock} -template +template shared_ptr factory(A1&& a1, A2&& a2) { return shared_ptr(new T(std::forward(a1), std::forward(a2))); } @@ -321,7 +321,7 @@ \indexlibrary{\idxcode{move}!function}% \indextext{\idxcode{move}}% \begin{itemdecl} -template constexpr remove_reference_t&& move(T&& t) noexcept; +template constexpr remove_reference_t&& move(T&& t) noexcept; \end{itemdecl} \begin{itemdescr} @@ -332,7 +332,7 @@ \pnum \begin{example} \begin{codeblock} -template +template shared_ptr factory(A1&& a1) { return shared_ptr(new T(std::forward(a1))); } @@ -363,7 +363,7 @@ \indexlibrary{\idxcode{move_if_noexcept}}% \begin{itemdecl} -template constexpr conditional_t< +template constexpr conditional_t< !is_nothrow_move_constructible_v && is_copy_constructible_v, const T&, T&&> move_if_noexcept(T& x) noexcept; \end{itemdecl} @@ -377,7 +377,7 @@ \indexlibrary{\idxcode{as_const}}% \begin{itemdecl} -template constexpr add_const_t& as_const(T& t) noexcept; +template constexpr add_const_t& as_const(T& t) noexcept; \end{itemdecl} \begin{itemdescr} @@ -393,7 +393,7 @@ \indexlibrary{\idxcode{declval}}% \begin{itemdecl} -template add_rvalue_reference_t declval() noexcept; // as unevaluated operand +template add_rvalue_reference_t declval() noexcept; // as unevaluated operand \end{itemdecl} \begin{itemdescr} @@ -407,7 +407,7 @@ \pnum \begin{example} \begin{codeblock} -template decltype(static_cast(declval())) convert(From&&); +template decltype(static_cast(declval())) convert(From&&); \end{codeblock} declares a function template \tcode{convert} which only participates in overloading if the type \tcode{From} can be explicitly converted to type \tcode{To}. For another example see class @@ -482,7 +482,7 @@ \indexlibrary{\idxcode{pair}}% \begin{codeblock} namespace std { - template + template struct pair { using first_type = T1; using second_type = T2; @@ -497,7 +497,7 @@ template @\EXPLICIT@ constexpr pair(U1&& x, U2&& y); template @\EXPLICIT@ constexpr pair(const pair& p); template @\EXPLICIT@ constexpr pair(pair&& p); - template + template pair(piecewise_construct_t, tuple first_args, tuple second_args); pair& operator=(const pair& p); @@ -764,7 +764,7 @@ \indexlibrarymember{operator==}{pair}% \begin{itemdecl} -template +template constexpr bool operator==(const pair& x, const pair& y); \end{itemdecl} @@ -776,7 +776,7 @@ \indexlibrarymember{operator<}{pair}% \begin{itemdecl} -template +template constexpr bool operator<(const pair& x, const pair& y); \end{itemdecl} @@ -788,7 +788,7 @@ \indexlibrarymember{operator"!=}{pair}% \begin{itemdecl} -template +template constexpr bool operator!=(const pair& x, const pair& y); \end{itemdecl} @@ -799,7 +799,7 @@ \indexlibrarymember{operator>}{pair}% \begin{itemdecl} -template +template constexpr bool operator>(const pair& x, const pair& y); \end{itemdecl} @@ -810,7 +810,7 @@ \indexlibrarymember{operator>=}{pair}% \begin{itemdecl} -template +template constexpr bool operator>=(const pair& x, const pair& y); \end{itemdecl} @@ -821,7 +821,7 @@ \indexlibrarymember{operator<=}{pair}% \begin{itemdecl} -template +template constexpr bool operator<=(const pair& x, const pair& y); \end{itemdecl} @@ -850,7 +850,7 @@ \indexlibrary{\idxcode{make_pair}}% \begin{itemdecl} -template +template constexpr pair make_pair(T1&& x, T2&& y); \end{itemdecl} @@ -879,7 +879,7 @@ \indexlibrary{\idxcode{tuple_size}}% \begin{itemdecl} -template +template struct tuple_size> : integral_constant { }; \end{itemdecl} @@ -916,13 +916,13 @@ \indexlibrarymember{get}{pair}% \begin{itemdecl} -template +template constexpr T1& get(pair& p) noexcept; -template +template constexpr const T1& get(const pair& p) noexcept; -template +template constexpr T1&& get(pair&& p) noexcept; -template +template constexpr const T1&& get(const pair&& p) noexcept; \end{itemdecl} \begin{itemdescr} @@ -935,13 +935,13 @@ \indexlibrarymember{get}{pair}% \begin{itemdecl} -template +template constexpr T2& get(pair& p) noexcept; -template +template constexpr const T2& get(const pair& p) noexcept; -template +template constexpr T2&& get(pair&& p) noexcept; -template +template constexpr const T2&& get(const pair&& p) noexcept; \end{itemdecl} \begin{itemdescr} @@ -991,66 +991,66 @@ \begin{codeblock} namespace std { // \ref{tuple.tuple}, class template \tcode{tuple} - template + template class tuple; // \ref{tuple.creation}, tuple creation functions inline constexpr @\unspec@ ignore; - template + template constexpr tuple make_tuple(TTypes&&...); - template + template constexpr tuple forward_as_tuple(TTypes&&...) noexcept; template constexpr tuple tie(TTypes&...) noexcept; - template + template constexpr tuple tuple_cat(Tuples&&...); // \ref{tuple.apply}, calling a function with a tuple of arguments - template + template constexpr decltype(auto) apply(F&& f, Tuple&& t); - template + template constexpr T make_from_tuple(Tuple&& t); // \ref{tuple.helper}, tuple helper classes - template class tuple_size; // not defined - template class tuple_size; - template class tuple_size; - template class tuple_size; + template class tuple_size; // not defined + template class tuple_size; + template class tuple_size; + template class tuple_size; - template class tuple_size>; + template class tuple_size>; - template class tuple_element; // not defined - template class tuple_element; - template class tuple_element; - template class tuple_element; + template class tuple_element; // not defined + template class tuple_element; + template class tuple_element; + template class tuple_element; - template + template class tuple_element>; - template + template using tuple_element_t = typename tuple_element::type; // \ref{tuple.elem}, element access - template + template constexpr tuple_element_t>& get(tuple&) noexcept; - template + template constexpr tuple_element_t>&& get(tuple&&) noexcept; - template + template constexpr const tuple_element_t>& get(const tuple&) noexcept; - template + template constexpr const tuple_element_t>&& get(const tuple&&) noexcept; - template + template constexpr T& get(tuple& t) noexcept; - template + template constexpr T&& get(tuple&& t) noexcept; - template + template constexpr const T& get(const tuple& t) noexcept; - template + template constexpr const T&& get(const tuple&& t) noexcept; // \ref{tuple.rel}, relational operators @@ -1068,15 +1068,15 @@ constexpr bool operator>=(const tuple&, const tuple&); // \ref{tuple.traits}, allocator-related traits - template + template struct uses_allocator, Alloc>; // \ref{tuple.special}, specialized algorithms - template + template void swap(tuple& x, tuple& y) noexcept(@\seebelow@); // \ref{tuple.helper}, tuple helper classes - template + template inline constexpr size_t tuple_size_v = tuple_size::value; } \end{codeblock} @@ -1086,60 +1086,60 @@ \begin{codeblock} namespace std { - template + template class tuple { public: // \ref{tuple.cnstr}, \tcode{tuple} construction @\EXPLICIT@ constexpr tuple(); @\EXPLICIT@ constexpr tuple(const Types&...); // only if \tcode{sizeof...(Types) >= 1} - template + template @\EXPLICIT@ constexpr tuple(UTypes&&...); // only if \tcode{sizeof...(Types) >= 1} tuple(const tuple&) = default; tuple(tuple&&) = default; - template + template @\EXPLICIT@ constexpr tuple(const tuple&); - template + template @\EXPLICIT@ constexpr tuple(tuple&&); - template + template @\EXPLICIT@ constexpr tuple(const pair&); // only if \tcode{sizeof...(Types) == 2} - template + template @\EXPLICIT@ constexpr tuple(pair&&); // only if \tcode{sizeof...(Types) == 2} // allocator-extended constructors - template + template tuple(allocator_arg_t, const Alloc& a); - template + template @\EXPLICIT@ tuple(allocator_arg_t, const Alloc& a, const Types&...); - template + template @\EXPLICIT@ tuple(allocator_arg_t, const Alloc& a, UTypes&&...); - template + template tuple(allocator_arg_t, const Alloc& a, const tuple&); - template + template tuple(allocator_arg_t, const Alloc& a, tuple&&); - template + template @\EXPLICIT@ tuple(allocator_arg_t, const Alloc& a, const tuple&); - template + template @\EXPLICIT@ tuple(allocator_arg_t, const Alloc& a, tuple&&); - template + template @\EXPLICIT@ tuple(allocator_arg_t, const Alloc& a, const pair&); - template + template @\EXPLICIT@ tuple(allocator_arg_t, const Alloc& a, pair&&); // \ref{tuple.assign}, \tcode{tuple} assignment tuple& operator=(const tuple&); tuple& operator=(tuple&&) noexcept(@\seebelow@); - template + template tuple& operator=(const tuple&); - template + template tuple& operator=(tuple&&); - template + template tuple& operator=(const pair&); // only if \tcode{sizeof...(Types) == 2} - template + template tuple& operator=(pair&&); // only if \tcode{sizeof...(Types) == 2} // \ref{tuple.swap}, \tcode{tuple} swap @@ -1226,7 +1226,7 @@ \indexlibrary{\idxcode{tuple}!constructor}% \begin{itemdecl} -template @\EXPLICIT@ constexpr tuple(UTypes&&... u); +template @\EXPLICIT@ constexpr tuple(UTypes&&... u); \end{itemdecl} \begin{itemdescr} @@ -1273,7 +1273,7 @@ \indexlibrary{\idxcode{tuple}!constructor}% \begin{itemdecl} -template @\EXPLICIT@ constexpr tuple(const tuple& u); +template @\EXPLICIT@ constexpr tuple(const tuple& u); \end{itemdecl} \begin{itemdescr} @@ -1301,7 +1301,7 @@ \indexlibrary{\idxcode{tuple}!constructor}% \begin{itemdecl} -template @\EXPLICIT@ constexpr tuple(tuple&& u); +template @\EXPLICIT@ constexpr tuple(tuple&& u); \end{itemdecl} \begin{itemdescr} @@ -1333,7 +1333,7 @@ \indexlibrary{\idxcode{tuple}!constructor}% \indexlibrary{\idxcode{pair}}% \begin{itemdecl} -template @\EXPLICIT@ constexpr tuple(const pair& u); +template @\EXPLICIT@ constexpr tuple(const pair& u); \end{itemdecl} \begin{itemdescr} @@ -1356,7 +1356,7 @@ \indexlibrary{\idxcode{tuple}!constructor}% \indexlibrary{\idxcode{pair}}% \begin{itemdecl} -template @\EXPLICIT@ constexpr tuple(pair&& u); +template @\EXPLICIT@ constexpr tuple(pair&& u); \end{itemdecl} \begin{itemdescr} @@ -1379,23 +1379,23 @@ \indexlibrary{\idxcode{tuple}!constructor}% \begin{itemdecl} -template +template tuple(allocator_arg_t, const Alloc& a); -template +template @\EXPLICIT@ tuple(allocator_arg_t, const Alloc& a, const Types&...); -template +template @\EXPLICIT@ tuple(allocator_arg_t, const Alloc& a, UTypes&&...); -template +template tuple(allocator_arg_t, const Alloc& a, const tuple&); -template +template tuple(allocator_arg_t, const Alloc& a, tuple&&); -template +template @\EXPLICIT@ tuple(allocator_arg_t, const Alloc& a, const tuple&); -template +template @\EXPLICIT@ tuple(allocator_arg_t, const Alloc& a, tuple&&); -template +template @\EXPLICIT@ tuple(allocator_arg_t, const Alloc& a, const pair&); -template +template @\EXPLICIT@ tuple(allocator_arg_t, const Alloc& a, pair&&); \end{itemdecl} @@ -1466,7 +1466,7 @@ \indexlibrarymember{operator=}{tuple}% \begin{itemdecl} -template tuple& operator=(const tuple& u); +template tuple& operator=(const tuple& u); \end{itemdecl} \begin{itemdescr} @@ -1485,7 +1485,7 @@ \indexlibrarymember{operator=}{tuple}% \begin{itemdecl} -template tuple& operator=(tuple&& u); +template tuple& operator=(tuple&& u); \end{itemdecl} \begin{itemdescr} @@ -1505,7 +1505,7 @@ \indexlibrarymember{operator=}{tuple}% \indexlibrary{\idxcode{pair}}% \begin{itemdecl} -template tuple& operator=(const pair& u); +template tuple& operator=(const pair& u); \end{itemdecl} \begin{itemdescr} @@ -1527,7 +1527,7 @@ \indexlibrarymember{operator=}{tuple}% \indexlibrary{\idxcode{pair}}% \begin{itemdecl} -template tuple& operator=(pair&& u); +template tuple& operator=(pair&& u); \end{itemdecl} \begin{itemdescr} @@ -1660,7 +1660,7 @@ \indexlibrary{\idxcode{tuple_cat}} \begin{itemdecl} -template +template constexpr tuple tuple_cat(Tuples&&... tpls); \end{itemdecl} @@ -1712,7 +1712,7 @@ \indexlibrary{\idxcode{apply}}% \begin{itemdecl} -template +template constexpr decltype(auto) apply(F&& f, Tuple&& t); \end{itemdecl} @@ -1721,7 +1721,7 @@ \effects Given the exposition-only function: \begin{codeblock} -template +template constexpr decltype(auto) apply_impl(F&& f, Tuple&& t, index_sequence) { // exposition only return @\placeholdernc{INVOKE}@(std::forward(f), std::get(std::forward(t))...); // see \ref{func.require} @@ -1736,7 +1736,7 @@ \indexlibrary{\idxcode{make_from_tuple}}% \begin{itemdecl} -template +template constexpr T make_from_tuple(Tuple&& t); \end{itemdecl} @@ -1745,7 +1745,7 @@ \effects Given the exposition-only function: \begin{codeblock} -template +template constexpr T make_from_tuple_impl(Tuple&& t, index_sequence) { // exposition only return T(get(std::forward(t))...); } @@ -1765,7 +1765,7 @@ \indexlibrary{\idxcode{tuple_size}!in general}% \begin{itemdecl} -template struct tuple_size; +template struct tuple_size; \end{itemdecl} \begin{itemdescr} @@ -1778,13 +1778,13 @@ \indexlibrary{\idxcode{tuple_size}}% \begin{itemdecl} -template +template class tuple_size> : public integral_constant { }; \end{itemdecl} \indexlibrary{\idxcode{tuple_element}}% \begin{itemdecl} -template +template class tuple_element> { public: using type = TI; @@ -1804,9 +1804,9 @@ \indexlibrary{\idxcode{tuple_size}}% \begin{itemdecl} -template class tuple_size; -template class tuple_size; -template class tuple_size; +template class tuple_size; +template class tuple_size; +template class tuple_size; \end{itemdecl} \begin{itemdescr} @@ -1841,9 +1841,9 @@ \indexlibrary{\idxcode{tuple_element}}% \begin{itemdecl} -template class tuple_element; -template class tuple_element; -template class tuple_element; +template class tuple_element; +template class tuple_element; +template class tuple_element; \end{itemdecl} \begin{itemdescr} @@ -1872,16 +1872,16 @@ \indexlibrarymember{get}{tuple}% \begin{itemdecl} -template +template constexpr tuple_element_t>& get(tuple& t) noexcept; -template +template constexpr tuple_element_t>&& get(tuple&& t) noexcept; // Note A -template +template constexpr const tuple_element_t>& get(const tuple& t) noexcept; // Note B -template +template constexpr const tuple_element_t>&& get(const tuple&& t) noexcept; \end{itemdecl} @@ -1916,13 +1916,13 @@ \indexlibrarymember{get}{tuple}% \begin{itemdecl} -template +template constexpr T& get(tuple& t) noexcept; -template +template constexpr T&& get(tuple&& t) noexcept; -template +template constexpr const T& get(const tuple& t) noexcept; -template +template constexpr const T&& get(const tuple&& t) noexcept; \end{itemdecl} @@ -2058,7 +2058,7 @@ \indexlibrary{\idxcode{uses_allocator}}% \begin{itemdecl} -template +template struct uses_allocator, Alloc> : true_type { }; \end{itemdecl} @@ -2076,7 +2076,7 @@ \indexlibrary{\idxcode{swap}}% \begin{itemdecl} -template +template void swap(tuple& x, tuple& y) noexcept(@\seebelow@); \end{itemdecl} @@ -2115,7 +2115,7 @@ \begin{codeblock} namespace std { // \ref{optional.optional}, class template \tcode{optional} - template + template class optional; // \ref{optional.nullopt}, no-value state indicator @@ -2126,61 +2126,61 @@ class bad_optional_access; // \ref{optional.relops}, relational operators - template + template constexpr bool operator==(const optional&, const optional&); - template + template constexpr bool operator!=(const optional&, const optional&); - template + template constexpr bool operator<(const optional&, const optional&); - template + template constexpr bool operator>(const optional&, const optional&); - template + template constexpr bool operator<=(const optional&, const optional&); - template + template constexpr bool operator>=(const optional&, const optional&); // \ref{optional.nullops}, comparison with \tcode{nullopt} - template constexpr bool operator==(const optional&, nullopt_t) noexcept; - template constexpr bool operator==(nullopt_t, const optional&) noexcept; - template constexpr bool operator!=(const optional&, nullopt_t) noexcept; - template constexpr bool operator!=(nullopt_t, const optional&) noexcept; - template constexpr bool operator<(const optional&, nullopt_t) noexcept; - template constexpr bool operator<(nullopt_t, const optional&) noexcept; - template constexpr bool operator<=(const optional&, nullopt_t) noexcept; - template constexpr bool operator<=(nullopt_t, const optional&) noexcept; - template constexpr bool operator>(const optional&, nullopt_t) noexcept; - template constexpr bool operator>(nullopt_t, const optional&) noexcept; - template constexpr bool operator>=(const optional&, nullopt_t) noexcept; - template constexpr bool operator>=(nullopt_t, const optional&) noexcept; + template constexpr bool operator==(const optional&, nullopt_t) noexcept; + template constexpr bool operator==(nullopt_t, const optional&) noexcept; + template constexpr bool operator!=(const optional&, nullopt_t) noexcept; + template constexpr bool operator!=(nullopt_t, const optional&) noexcept; + template constexpr bool operator<(const optional&, nullopt_t) noexcept; + template constexpr bool operator<(nullopt_t, const optional&) noexcept; + template constexpr bool operator<=(const optional&, nullopt_t) noexcept; + template constexpr bool operator<=(nullopt_t, const optional&) noexcept; + template constexpr bool operator>(const optional&, nullopt_t) noexcept; + template constexpr bool operator>(nullopt_t, const optional&) noexcept; + template constexpr bool operator>=(const optional&, nullopt_t) noexcept; + template constexpr bool operator>=(nullopt_t, const optional&) noexcept; // \ref{optional.comp_with_t}, comparison with \tcode{T} - template constexpr bool operator==(const optional&, const U&); - template constexpr bool operator==(const T&, const optional&); - template constexpr bool operator!=(const optional&, const U&); - template constexpr bool operator!=(const T&, const optional&); - template constexpr bool operator<(const optional&, const U&); - template constexpr bool operator<(const T&, const optional&); - template constexpr bool operator<=(const optional&, const U&); - template constexpr bool operator<=(const T&, const optional&); - template constexpr bool operator>(const optional&, const U&); - template constexpr bool operator>(const T&, const optional&); - template constexpr bool operator>=(const optional&, const U&); - template constexpr bool operator>=(const T&, const optional&); + template constexpr bool operator==(const optional&, const U&); + template constexpr bool operator==(const T&, const optional&); + template constexpr bool operator!=(const optional&, const U&); + template constexpr bool operator!=(const T&, const optional&); + template constexpr bool operator<(const optional&, const U&); + template constexpr bool operator<(const T&, const optional&); + template constexpr bool operator<=(const optional&, const U&); + template constexpr bool operator<=(const T&, const optional&); + template constexpr bool operator>(const optional&, const U&); + template constexpr bool operator>(const T&, const optional&); + template constexpr bool operator>=(const optional&, const U&); + template constexpr bool operator>=(const T&, const optional&); // \ref{optional.specalg}, specialized algorithms - template + template void swap(optional&, optional&) noexcept(@\seebelow@); - template + template constexpr optional<@\seebelow@> make_optional(T&&); - template + template constexpr optional make_optional(Args&&... args); - template + template constexpr optional make_optional(initializer_list il, Args&&... args); // \ref{optional.hash}, hash support - template struct hash; - template struct hash>; + template struct hash; + template struct hash>; } \end{codeblock} @@ -2194,7 +2194,7 @@ \indexlibrary{\idxcode{optional}}% \indexlibrarymember{value_type}{optional}% \begin{codeblock} -template +template class optional { public: using value_type = T; @@ -2204,15 +2204,15 @@ constexpr optional(nullopt_t) noexcept; constexpr optional(const optional&); constexpr optional(optional&&) noexcept(@\seebelow@); - template + template constexpr explicit optional(in_place_t, Args&&...); - template + template constexpr explicit optional(in_place_t, initializer_list, Args&&...); - template + template @\EXPLICIT@ constexpr optional(U&&); - template + template @\EXPLICIT@ optional(const optional&); - template + template @\EXPLICIT@ optional(optional&&); // \ref{optional.dtor}, destructor @@ -2222,11 +2222,11 @@ optional& operator=(nullopt_t) noexcept; optional& operator=(const optional&); optional& operator=(optional&&) noexcept(@\seebelow@); - template optional& operator=(U&&); - template optional& operator=(const optional&); - template optional& operator=(optional&&); - template T& emplace(Args&&...); - template T& emplace(initializer_list, Args&&...); + template optional& operator=(U&&); + template optional& operator=(const optional&); + template optional& operator=(optional&&); + template T& emplace(Args&&...); + template T& emplace(initializer_list, Args&&...); // \ref{optional.swap}, swap void swap(optional&) noexcept(@\seebelow@); @@ -2244,8 +2244,8 @@ constexpr T& value() &; constexpr T&& value() &&; constexpr const T&& value() const&&; - template constexpr T value_or(U&&) const&; - template constexpr T value_or(U&&) &&; + template constexpr T value_or(U&&) const&; + template constexpr T value_or(U&&) &&; // \ref{optional.mod}, modifiers void reset() noexcept; @@ -2352,7 +2352,7 @@ \indexlibrary{\idxcode{optional}!constructor}% \begin{itemdecl} -template constexpr explicit optional(in_place_t, Args&&... args); +template constexpr explicit optional(in_place_t, Args&&... args); \end{itemdecl} \begin{itemdescr} @@ -2377,7 +2377,7 @@ \indexlibrary{\idxcode{optional}!constructor}% \begin{itemdecl} -template +template constexpr explicit optional(in_place_t, initializer_list il, Args&&... args); \end{itemdecl} @@ -2409,7 +2409,7 @@ \indexlibrary{\idxcode{optional}!constructor}% \begin{itemdecl} -template @\EXPLICIT@ constexpr optional(U&& v); +template @\EXPLICIT@ constexpr optional(U&& v); \end{itemdecl} \begin{itemdescr} @@ -2440,7 +2440,7 @@ \indexlibrary{\idxcode{optional}!constructor}% \begin{itemdecl} -template @\EXPLICIT@ optional(const optional& rhs); +template @\EXPLICIT@ optional(const optional& rhs); \end{itemdecl} \begin{itemdescr} @@ -2478,7 +2478,7 @@ \indexlibrary{\idxcode{optional}!constructor}% \begin{itemdecl} -template @\EXPLICIT@ optional(optional&& rhs); +template @\EXPLICIT@ optional(optional&& rhs); \end{itemdecl} \begin{itemdescr} @@ -2650,7 +2650,7 @@ \indexlibrarymember{operator=}{optional}% \begin{itemdecl} -template optional& operator=(U&& v); +template optional& operator=(U&& v); \end{itemdecl} \begin{itemdescr} @@ -2678,7 +2678,7 @@ \indexlibrarymember{operator=}{optional}% \begin{itemdecl} -template optional& operator=(const optional& rhs); +template optional& operator=(const optional& rhs); \end{itemdecl} \begin{itemdescr} @@ -2739,7 +2739,7 @@ \indexlibrarymember{operator=}{optional}% \begin{itemdecl} -template optional& operator=(optional&& rhs); +template optional& operator=(optional&& rhs); \end{itemdecl} \begin{itemdescr} @@ -2801,7 +2801,7 @@ \indexlibrarymember{emplace}{optional}% \begin{itemdecl} -template T& emplace(Args&&... args); +template T& emplace(Args&&... args); \end{itemdecl} \begin{itemdescr} @@ -2832,7 +2832,7 @@ \indexlibrarymember{emplace}{optional}% \begin{itemdecl} -template T& emplace(initializer_list il, Args&&... args); +template T& emplace(initializer_list il, Args&&... args); \end{itemdecl} \begin{itemdescr} @@ -3037,7 +3037,7 @@ \indexlibrarymember{value_or}{optional}% \begin{itemdecl} -template constexpr T value_or(U&& v) const&; +template constexpr T value_or(U&& v) const&; \end{itemdecl} \begin{itemdescr} @@ -3056,7 +3056,7 @@ \indexlibrarymember{value_or}{optional}% \begin{itemdecl} -template constexpr T value_or(U&& v) &&; +template constexpr T value_or(U&& v) &&; \end{itemdecl} \begin{itemdescr} @@ -3142,7 +3142,7 @@ \indexlibrarymember{operator==}{optional}% \begin{itemdecl} -template constexpr bool operator==(const optional& x, const optional& y); +template constexpr bool operator==(const optional& x, const optional& y); \end{itemdecl} \begin{itemdescr} @@ -3165,7 +3165,7 @@ \indexlibrarymember{operator"!=}{optional}% \begin{itemdecl} -template constexpr bool operator!=(const optional& x, const optional& y); +template constexpr bool operator!=(const optional& x, const optional& y); \end{itemdecl} \begin{itemdescr} @@ -3189,7 +3189,7 @@ \indexlibrarymember{operator<}{optional}% \begin{itemdecl} -template constexpr bool operator<(const optional& x, const optional& y); +template constexpr bool operator<(const optional& x, const optional& y); \end{itemdecl} \begin{itemdescr} @@ -3213,7 +3213,7 @@ \indexlibrarymember{operator>}{optional}% \begin{itemdecl} -template constexpr bool operator>(const optional& x, const optional& y); +template constexpr bool operator>(const optional& x, const optional& y); \end{itemdecl} \begin{itemdescr} @@ -3237,7 +3237,7 @@ \indexlibrarymember{operator<=}{optional}% \begin{itemdecl} -template constexpr bool operator<=(const optional& x, const optional& y); +template constexpr bool operator<=(const optional& x, const optional& y); \end{itemdecl} \begin{itemdescr} @@ -3261,7 +3261,7 @@ \indexlibrarymember{operator>=}{optional}% \begin{itemdecl} -template constexpr bool operator>=(const optional& x, const optional& y); +template constexpr bool operator>=(const optional& x, const optional& y); \end{itemdecl} \begin{itemdescr} @@ -3287,8 +3287,8 @@ \indexlibrarymember{operator==}{optional}% \begin{itemdecl} -template constexpr bool operator==(const optional& x, nullopt_t) noexcept; -template constexpr bool operator==(nullopt_t, const optional& x) noexcept; +template constexpr bool operator==(const optional& x, nullopt_t) noexcept; +template constexpr bool operator==(nullopt_t, const optional& x) noexcept; \end{itemdecl} \begin{itemdescr} @@ -3299,8 +3299,8 @@ \indexlibrarymember{operator"!=}{optional}% \begin{itemdecl} -template constexpr bool operator!=(const optional& x, nullopt_t) noexcept; -template constexpr bool operator!=(nullopt_t, const optional& x) noexcept; +template constexpr bool operator!=(const optional& x, nullopt_t) noexcept; +template constexpr bool operator!=(nullopt_t, const optional& x) noexcept; \end{itemdecl} \begin{itemdescr} @@ -3311,7 +3311,7 @@ \indexlibrarymember{operator<}{optional}% \begin{itemdecl} -template constexpr bool operator<(const optional& x, nullopt_t) noexcept; +template constexpr bool operator<(const optional& x, nullopt_t) noexcept; \end{itemdecl} \begin{itemdescr} @@ -3322,7 +3322,7 @@ \indexlibrarymember{operator<}{optional}% \begin{itemdecl} -template constexpr bool operator<(nullopt_t, const optional& x) noexcept; +template constexpr bool operator<(nullopt_t, const optional& x) noexcept; \end{itemdecl} \begin{itemdescr} @@ -3333,7 +3333,7 @@ \indexlibrarymember{operator<=}{optional}% \begin{itemdecl} -template constexpr bool operator<=(const optional& x, nullopt_t) noexcept; +template constexpr bool operator<=(const optional& x, nullopt_t) noexcept; \end{itemdecl} \begin{itemdescr} @@ -3344,7 +3344,7 @@ \indexlibrarymember{operator<=}{optional}% \begin{itemdecl} -template constexpr bool operator<=(nullopt_t, const optional& x) noexcept; +template constexpr bool operator<=(nullopt_t, const optional& x) noexcept; \end{itemdecl} \begin{itemdescr} @@ -3355,7 +3355,7 @@ \indexlibrarymember{operator>}{optional}% \begin{itemdecl} -template constexpr bool operator>(const optional& x, nullopt_t) noexcept; +template constexpr bool operator>(const optional& x, nullopt_t) noexcept; \end{itemdecl} \begin{itemdescr} @@ -3366,7 +3366,7 @@ \indexlibrarymember{operator>}{optional}% \begin{itemdecl} -template constexpr bool operator>(nullopt_t, const optional& x) noexcept; +template constexpr bool operator>(nullopt_t, const optional& x) noexcept; \end{itemdecl} \begin{itemdescr} @@ -3377,7 +3377,7 @@ \indexlibrarymember{operator>=}{optional}% \begin{itemdecl} -template constexpr bool operator>=(const optional& x, nullopt_t) noexcept; +template constexpr bool operator>=(const optional& x, nullopt_t) noexcept; \end{itemdecl} \begin{itemdescr} @@ -3388,7 +3388,7 @@ \indexlibrarymember{operator>=}{optional}% \begin{itemdecl} -template constexpr bool operator>=(nullopt_t, const optional& x) noexcept; +template constexpr bool operator>=(nullopt_t, const optional& x) noexcept; \end{itemdecl} \begin{itemdescr} @@ -3401,7 +3401,7 @@ \indexlibrarymember{operator==}{optional}% \begin{itemdecl} -template constexpr bool operator==(const optional& x, const U& v); +template constexpr bool operator==(const optional& x, const U& v); \end{itemdecl} \begin{itemdescr} @@ -3420,7 +3420,7 @@ \indexlibrarymember{operator==}{optional}% \begin{itemdecl} -template constexpr bool operator==(const T& v, const optional& x); +template constexpr bool operator==(const T& v, const optional& x); \end{itemdecl} \begin{itemdescr} @@ -3436,7 +3436,7 @@ \indexlibrarymember{operator"!=}{optional}% \begin{itemdecl} -template constexpr bool operator!=(const optional& x, const U& v); +template constexpr bool operator!=(const optional& x, const U& v); \end{itemdecl} \begin{itemdescr} @@ -3452,7 +3452,7 @@ \indexlibrarymember{operator"!=}{optional}% \begin{itemdecl} -template constexpr bool operator!=(const T& v, const optional& x); +template constexpr bool operator!=(const T& v, const optional& x); \end{itemdecl} \begin{itemdescr} @@ -3468,7 +3468,7 @@ \indexlibrarymember{operator<}{optional}% \begin{itemdecl} -template constexpr bool operator<(const optional& x, const U& v); +template constexpr bool operator<(const optional& x, const U& v); \end{itemdecl} \begin{itemdescr} @@ -3484,7 +3484,7 @@ \indexlibrarymember{operator<}{optional}% \begin{itemdecl} -template constexpr bool operator<(const T& v, const optional& x); +template constexpr bool operator<(const T& v, const optional& x); \end{itemdecl} \begin{itemdescr} @@ -3500,7 +3500,7 @@ \indexlibrarymember{operator<=}{optional}% \begin{itemdecl} -template constexpr bool operator<=(const optional& x, const U& v); +template constexpr bool operator<=(const optional& x, const U& v); \end{itemdecl} \begin{itemdescr} @@ -3516,7 +3516,7 @@ \indexlibrarymember{operator<=}{optional}% \begin{itemdecl} -template constexpr bool operator<=(const T& v, const optional& x); +template constexpr bool operator<=(const T& v, const optional& x); \end{itemdecl} \begin{itemdescr} @@ -3532,7 +3532,7 @@ \indexlibrarymember{operator>}{optional}% \begin{itemdecl} -template constexpr bool operator>(const optional& x, const U& v); +template constexpr bool operator>(const optional& x, const U& v); \end{itemdecl} \begin{itemdescr} @@ -3548,7 +3548,7 @@ \indexlibrarymember{operator>}{optional}% \begin{itemdecl} -template constexpr bool operator>(const T& v, const optional& x); +template constexpr bool operator>(const T& v, const optional& x); \end{itemdecl} \begin{itemdescr} @@ -3564,7 +3564,7 @@ \indexlibrarymember{operator>=}{optional}% \begin{itemdecl} -template constexpr bool operator>=(const optional& x, const U& v); +template constexpr bool operator>=(const optional& x, const U& v); \end{itemdecl} \begin{itemdescr} @@ -3580,7 +3580,7 @@ \indexlibrarymember{operator>=}{optional}% \begin{itemdecl} -template constexpr bool operator>=(const T& v, const optional& x); +template constexpr bool operator>=(const T& v, const optional& x); \end{itemdecl} \begin{itemdescr} @@ -3599,7 +3599,7 @@ \indexlibrary{\idxcode{swap}!\idxcode{optional}}% \begin{itemdecl} -template void swap(optional& x, optional& y) noexcept(noexcept(x.swap(y))); +template void swap(optional& x, optional& y) noexcept(noexcept(x.swap(y))); \end{itemdecl} \begin{itemdescr} @@ -3615,7 +3615,7 @@ \indexlibrary{\idxcode{make_optional}}% \begin{itemdecl} -template constexpr optional> make_optional(T&& v); +template constexpr optional> make_optional(T&& v); \end{itemdecl} \begin{itemdescr} @@ -3626,7 +3626,7 @@ \indexlibrary{\idxcode{make_optional}}% \begin{itemdecl} -template +template constexpr optional make_optional(Args&&... args); \end{itemdecl} @@ -3637,7 +3637,7 @@ \indexlibrary{\idxcode{make_optional}}% \begin{itemdecl} -template +template constexpr optional make_optional(initializer_list il, Args&&... args); \end{itemdecl} @@ -3650,7 +3650,7 @@ \indexlibrary{\idxcode{hash}!\idxcode{optional}}% \begin{itemdecl} -template struct hash>; +template struct hash>; \end{itemdecl} \begin{itemdescr} @@ -3681,84 +3681,84 @@ \begin{codeblock} namespace std { // \ref{variant.variant}, class template \tcode{variant} - template + template class variant; // \ref{variant.helper}, variant helper classes - template struct variant_size; // not defined - template struct variant_size; - template struct variant_size; - template struct variant_size; - template + template struct variant_size; // not defined + template struct variant_size; + template struct variant_size; + template struct variant_size; + template inline constexpr size_t variant_size_v = variant_size::value; - template + template struct variant_size>; - template struct variant_alternative; // not defined - template struct variant_alternative; - template struct variant_alternative; - template struct variant_alternative; - template + template struct variant_alternative; // not defined + template struct variant_alternative; + template struct variant_alternative; + template struct variant_alternative; + template using variant_alternative_t = typename variant_alternative::type; - template + template struct variant_alternative>; inline constexpr size_t variant_npos = -1; // \ref{variant.get}, value access - template + template constexpr bool holds_alternative(const variant&) noexcept; - template + template constexpr variant_alternative_t>& get(variant&); - template + template constexpr variant_alternative_t>&& get(variant&&); - template + template constexpr const variant_alternative_t>& get(const variant&); - template + template constexpr const variant_alternative_t>&& get(const variant&&); - template + template constexpr T& get(variant&); - template + template constexpr T&& get(variant&&); - template + template constexpr const T& get(const variant&); - template + template constexpr const T&& get(const variant&&); - template + template constexpr add_pointer_t>> get_if(variant*) noexcept; - template + template constexpr add_pointer_t>> get_if(const variant*) noexcept; - template + template constexpr add_pointer_t get_if(variant*) noexcept; - template + template constexpr add_pointer_t get_if(const variant*) noexcept; // \ref{variant.relops}, relational operators - template + template constexpr bool operator==(const variant&, const variant&); - template + template constexpr bool operator!=(const variant&, const variant&); - template + template constexpr bool operator<(const variant&, const variant&); - template + template constexpr bool operator>(const variant&, const variant&); - template + template constexpr bool operator<=(const variant&, const variant&); - template + template constexpr bool operator>=(const variant&, const variant&); // \ref{variant.visit}, visitation - template + template constexpr @\seebelow@ visit(Visitor&&, Variants&&...); // \ref{variant.monostate}, class \tcode{monostate} @@ -3773,16 +3773,16 @@ constexpr bool operator!=(monostate, monostate) noexcept; // \ref{variant.specalg}, specialized algorithms - template + template void swap(variant&, variant&) noexcept(@\seebelow@); // \ref{variant.bad.access}, class \tcode{bad_variant_access} class bad_variant_access; // \ref{variant.hash}, hash support - template struct hash; - template struct hash>; - template <> struct hash; + template struct hash; + template struct hash>; + template<> struct hash; } \end{codeblock} @@ -3791,7 +3791,7 @@ \begin{codeblock} namespace std { - template + template class variant { public: // \ref{variant.ctor}, constructors @@ -3799,17 +3799,17 @@ variant(const variant&); variant(variant&&) noexcept(@\seebelow@); - template + template constexpr variant(T&&) noexcept(@\seebelow@); - template + template constexpr explicit variant(in_place_type_t, Args&&...); - template + template constexpr explicit variant(in_place_type_t, initializer_list, Args&&...); - template + template constexpr explicit variant(in_place_index_t, Args&&...); - template + template constexpr explicit variant(in_place_index_t, initializer_list, Args&&...); // \ref{variant.dtor}, destructor @@ -3819,16 +3819,16 @@ variant& operator=(const variant&); variant& operator=(variant&&) noexcept(@\seebelow@); - template variant& operator=(T&&) noexcept(@\seebelow@); + template variant& operator=(T&&) noexcept(@\seebelow@); // \ref{variant.mod}, modifiers - template + template T& emplace(Args&&...); - template + template T& emplace(initializer_list, Args&&...); - template + template variant_alternative_t>& emplace(Args&&...); - template + template variant_alternative_t>& emplace(initializer_list, Args&&...); // \ref{variant.status}, value status @@ -3949,7 +3949,7 @@ \indexlibrary{\idxcode{variant}!constructor}% \begin{itemdecl} -template constexpr variant(T&& t) noexcept(@\seebelow@); +template constexpr variant(T&& t) noexcept(@\seebelow@); \end{itemdecl} \begin{itemdescr} @@ -4015,7 +4015,7 @@ \indexlibrary{\idxcode{variant}!constructor}% \begin{itemdecl} -template constexpr explicit variant(in_place_type_t, Args&&... args); +template constexpr explicit variant(in_place_type_t, Args&&... args); \end{itemdecl} \begin{itemdescr} @@ -4044,7 +4044,7 @@ \indexlibrary{\idxcode{variant}!constructor}% \begin{itemdecl} -template +template constexpr explicit variant(in_place_type_t, initializer_list il, Args&&... args); \end{itemdecl} @@ -4074,7 +4074,7 @@ \indexlibrary{\idxcode{variant}!constructor}% \begin{itemdecl} -template constexpr explicit variant(in_place_index_t, Args&&... args); +template constexpr explicit variant(in_place_index_t, Args&&... args); \end{itemdecl} \begin{itemdescr} @@ -4107,7 +4107,7 @@ \indexlibrary{\idxcode{variant}!constructor}% \begin{itemdecl} -template +template constexpr explicit variant(in_place_index_t, initializer_list il, Args&&... args); \end{itemdecl} @@ -4244,7 +4244,7 @@ \indexlibrarymember{operator=}{variant}% \begin{itemdecl} -template variant& operator=(T&& t) noexcept(@\seebelow@); +template variant& operator=(T&& t) noexcept(@\seebelow@); \end{itemdecl} \begin{itemdescr} @@ -4323,7 +4323,7 @@ \indexlibrarymember{emplace}{variant}% \begin{itemdecl} -template T& emplace(Args&&... args); +template T& emplace(Args&&... args); \end{itemdecl} \begin{itemdescr} @@ -4343,7 +4343,7 @@ \indexlibrarymember{emplace}{variant}% \begin{itemdecl} -template T& emplace(initializer_list il, Args&&... args); +template T& emplace(initializer_list il, Args&&... args); \end{itemdecl} \begin{itemdescr} @@ -4363,7 +4363,7 @@ \indexlibrarymember{emplace}{variant}% \begin{itemdecl} -template +template variant_alternative_t>& emplace(Args&&... args); \end{itemdecl} @@ -4402,7 +4402,7 @@ \indexlibrarymember{emplace}{variant}% \begin{itemdecl} -template +template variant_alternative_t>& emplace(initializer_list il, Args&&... args); \end{itemdecl} @@ -4526,7 +4526,7 @@ \indexlibrary{\idxcode{variant_size}}% \begin{itemdecl} -template struct variant_size; +template struct variant_size; \end{itemdecl} \begin{itemdescr} @@ -4539,9 +4539,9 @@ \indexlibrary{\idxcode{variant_size}}% \begin{itemdecl} -template class variant_size; -template class variant_size; -template class variant_size; +template class variant_size; +template class variant_size; +template class variant_size; \end{itemdecl} \begin{itemdescr} @@ -4554,16 +4554,16 @@ \indexlibrary{\idxcode{variant_size}}% \begin{itemdecl} -template +template struct variant_size> : integral_constant { }; \end{itemdecl} % No itemdescr needed for variant_size> \indexlibrary{\idxcode{variant_alternative}}% \begin{itemdecl} -template class variant_alternative; -template class variant_alternative; -template class variant_alternative; +template class variant_alternative; +template class variant_alternative; +template class variant_alternative; \end{itemdecl} \begin{itemdescr} @@ -4598,7 +4598,7 @@ \indexlibrary{\idxcode{holds_alternative}} \indexlibrary{\idxcode{variant}!\idxcode{holds_alternative}} \begin{itemdecl} -template +template constexpr bool holds_alternative(const variant& v) noexcept; \end{itemdecl} @@ -4615,13 +4615,13 @@ \indexlibrarymember{get}{variant}% \begin{itemdecl} -template +template constexpr variant_alternative_t>& get(variant& v); -template +template constexpr variant_alternative_t>&& get(variant&& v); -template +template constexpr const variant_alternative_t>& get(const variant& v); -template +template constexpr const variant_alternative_t>&& get(const variant&& v); \end{itemdecl} @@ -4639,10 +4639,10 @@ \indexlibrarymember{get}{variant}% \begin{itemdecl} -template constexpr T& get(variant& v); -template constexpr T&& get(variant&& v); -template constexpr const T& get(const variant& v); -template constexpr const T&& get(const variant&& v); +template constexpr T& get(variant& v); +template constexpr T&& get(variant&& v); +template constexpr const T& get(const variant& v); +template constexpr const T&& get(const variant&& v); \end{itemdecl} \begin{itemdescr} @@ -4660,10 +4660,10 @@ \indexlibrary{\idxcode{get_if}}% \indexlibrary{\idxcode{variant}!\idxcode{get_if}}% \begin{itemdecl} -template +template constexpr add_pointer_t>> get_if(variant* v) noexcept; -template +template constexpr add_pointer_t>> get_if(const variant* v) noexcept; \end{itemdecl} @@ -4683,10 +4683,10 @@ \indexlibrary{\idxcode{get_if}}% \indexlibrary{\idxcode{variant}!\idxcode{get_if}}% \begin{itemdecl} -template +template constexpr add_pointer_t get_if(variant* v) noexcept; -template +template constexpr add_pointer_t get_if(const variant* v) noexcept; \end{itemdecl} @@ -4707,7 +4707,7 @@ \indexlibrarymember{operator==}{variant}% \begin{itemdecl} -template +template constexpr bool operator==(const variant& v, const variant& w); \end{itemdecl} @@ -4726,7 +4726,7 @@ \indexlibrarymember{operator"!=}{variant}% \begin{itemdecl} -template +template constexpr bool operator!=(const variant& v, const variant& w); \end{itemdecl} @@ -4745,7 +4745,7 @@ \indexlibrarymember{operator<}{variant}% \begin{itemdecl} -template +template constexpr bool operator<(const variant& v, const variant& w); \end{itemdecl} @@ -4766,7 +4766,7 @@ \indexlibrarymember{operator>}{variant}% \begin{itemdecl} -template +template constexpr bool operator>(const variant& v, const variant& w); \end{itemdecl} @@ -4787,7 +4787,7 @@ \indexlibrarymember{operator<=}{variant}% \begin{itemdecl} -template +template constexpr bool operator<=(const variant& v, const variant& w); \end{itemdecl} @@ -4808,7 +4808,7 @@ \indexlibrarymember{operator>=}{variant}% \begin{itemdecl} -template +template constexpr bool operator>=(const variant& v, const variant& w); \end{itemdecl} @@ -4832,7 +4832,7 @@ \indexlibrary{\idxcode{visit}}% \indexlibrary{\idxcode{variant}!\idxcode{visit}}% \begin{itemdecl} -template +template constexpr @\seebelow@ visit(Visitor&& vis, Variants&&... vars); \end{itemdecl} @@ -4906,7 +4906,7 @@ \indexlibrary{\idxcode{swap}!\idxcode{variant}}% \begin{itemdecl} -template +template void swap(variant& v, variant& w) noexcept(@\seebelow@); \end{itemdecl} @@ -4960,7 +4960,7 @@ \indexlibrary{\idxcode{hash}!\idxcode{variant}}% \begin{itemdecl} -template struct hash>; +template struct hash>; \end{itemdecl} \begin{itemdescr} @@ -4972,7 +4972,7 @@ \indexlibrary{\idxcode{hash}!\idxcode{monostate}}% \begin{itemdecl} -template <> struct hash; +template<> struct hash; \end{itemdecl} \begin{itemdescr} @@ -5008,9 +5008,9 @@ // \ref{any.nonmembers}, non-member functions void swap(any& x, any& y) noexcept; - template + template any make_any(Args&& ...args); - template + template any make_any(initializer_list il, Args&& ...args); template @@ -5066,11 +5066,11 @@ any(const any& other); any(any&& other) noexcept; - template any(T&& value); + template any(T&& value); - template + template explicit any(in_place_type_t, Args&&...); - template + template explicit any(in_place_type_t, initializer_list, Args&&...); ~any(); @@ -5079,12 +5079,12 @@ any& operator=(const any& rhs); any& operator=(any&& rhs) noexcept; - template any& operator=(T&& rhs); + template any& operator=(T&& rhs); // \ref{any.modifiers}, modifiers - template + template decay_t& emplace(Args&& ...); - template + template decay_t& emplace(initializer_list, Args&&...); void reset() noexcept; void swap(any& rhs) noexcept; @@ -5193,7 +5193,7 @@ \indexlibrary{\idxcode{any}!constructor}% \begin{itemdecl} -template +template explicit any(in_place_type_t, Args&&... args); \end{itemdecl} @@ -5223,7 +5223,7 @@ \indexlibrary{\idxcode{any}!constructor}% \begin{itemdecl} -template +template explicit any(in_place_type_t, initializer_list il, Args&&... args); \end{itemdecl} @@ -5342,7 +5342,7 @@ \indexlibrarymember{emplace}{any}% \begin{itemdecl} -template +template decay_t& emplace(Args&&... args); \end{itemdecl} @@ -5380,7 +5380,7 @@ \indexlibrarymember{emplace}{any}% \begin{itemdecl} -template +template decay_t& emplace(initializer_list il, Args&&... args); \end{itemdecl} @@ -5488,7 +5488,7 @@ \indexlibrary{\idxcode{make_any}}% \begin{itemdecl} -template +template any make_any(Args&& ...args); \end{itemdecl} @@ -5500,7 +5500,7 @@ \indexlibrary{\idxcode{make_any}}% \begin{itemdecl} -template +template any make_any(initializer_list il, Args&& ...args); \end{itemdecl} @@ -5607,19 +5607,19 @@ #include // for \tcode{istream}\iref{istream.syn}, \tcode{ostream}\iref{ostream.syn}, see \ref{iosfwd.syn} namespace std { - template class bitset; + template class bitset; // \ref{bitset.operators}, bitset operators - template + template bitset operator&(const bitset&, const bitset&) noexcept; - template + template bitset operator|(const bitset&, const bitset&) noexcept; - template + template bitset operator^(const bitset&, const bitset&) noexcept; - template + template basic_istream& operator>>(basic_istream& is, bitset& x); - template + template basic_ostream& operator<<(basic_ostream& os, const bitset& x); } @@ -5664,7 +5664,7 @@ = basic_string::npos, charT zero = charT('0'), charT one = charT('1')); - template + template explicit bitset( const charT* str, typename basic_string::size_type n = basic_string::npos, @@ -5691,7 +5691,7 @@ unsigned long to_ulong() const; unsigned long long to_ullong() const; - template , class Allocator = allocator> basic_string @@ -5710,8 +5710,8 @@ }; // \ref{bitset.hash}, hash support - template struct hash; - template struct hash>; + template struct hash; + template struct hash>; } \end{codeblock} @@ -5797,7 +5797,7 @@ \indexlibrary{\idxcode{bitset}!constructor}% \begin{itemdecl} -template +template explicit bitset( const basic_string& str, typename basic_string::size_type pos = 0, @@ -5853,7 +5853,7 @@ \indexlibrary{\idxcode{bitset}!constructor}% \begin{itemdecl} -template +template explicit bitset( const charT* str, typename basic_string::size_type n = basic_string::npos, @@ -6153,7 +6153,7 @@ \indexlibrarymember{to_string}{bitset}% \begin{itemdecl} -template , class Allocator = allocator> basic_string @@ -6355,7 +6355,7 @@ \indexlibrary{\idxcode{hash_code}}% \begin{itemdecl} -template struct hash>; +template struct hash>; \end{itemdecl} \begin{itemdescr} @@ -6400,7 +6400,7 @@ \indexlibrarymember{operator>>}{bitset}% \begin{itemdecl} -template +template basic_istream& operator>>(basic_istream& is, bitset& x); \end{itemdecl} @@ -6445,7 +6445,7 @@ \indexlibrarymember{operator<<}{bitset}% \begin{itemdecl} -template +template basic_ostream& operator<<(basic_ostream& os, const bitset& x); \end{itemdecl} @@ -6487,19 +6487,19 @@ \begin{codeblock} namespace std { // \ref{pointer.traits}, pointer traits - template struct pointer_traits; - template struct pointer_traits; + template struct pointer_traits; + template struct pointer_traits; // \ref{pointer.conversion}, pointer conversion - template + template auto to_address(const Ptr& p) noexcept; - template + template constexpr T* to_address(T* p) noexcept; // \ref{util.dynamic.safety}, pointer safety enum class pointer_safety { relaxed, preferred, strict }; void declare_reachable(void* p); - template + template T* undeclare_reachable(T* p); void declare_no_pointers(char* p, size_t n); void undeclare_no_pointers(char* p, size_t n); @@ -6513,146 +6513,146 @@ inline constexpr allocator_arg_t allocator_arg{}; // \ref{allocator.uses}, \tcode{uses_allocator} - template struct uses_allocator; + template struct uses_allocator; // \ref{allocator.traits}, allocator traits - template struct allocator_traits; + template struct allocator_traits; // \ref{default.allocator}, the default allocator - template class allocator; - template + template class allocator; + template bool operator==(const allocator&, const allocator&) noexcept; - template + template bool operator!=(const allocator&, const allocator&) noexcept; // \ref{specialized.algorithms}, specialized algorithms - template + template constexpr T* addressof(T& r) noexcept; - template + template const T* addressof(const T&&) = delete; - template + template void uninitialized_default_construct(ForwardIterator first, ForwardIterator last); - template + template void uninitialized_default_construct(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last); - template + template ForwardIterator uninitialized_default_construct_n(ForwardIterator first, Size n); - template + template ForwardIterator uninitialized_default_construct_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, Size n); - template + template void uninitialized_value_construct(ForwardIterator first, ForwardIterator last); - template + template void uninitialized_value_construct(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last); - template + template ForwardIterator uninitialized_value_construct_n(ForwardIterator first, Size n); - template + template ForwardIterator uninitialized_value_construct_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, Size n); - template + template ForwardIterator uninitialized_copy(InputIterator first, InputIterator last, ForwardIterator result); - template + template ForwardIterator uninitialized_copy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} InputIterator first, InputIterator last, ForwardIterator result); - template + template ForwardIterator uninitialized_copy_n(InputIterator first, Size n, ForwardIterator result); - template + template ForwardIterator uninitialized_copy_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} InputIterator first, Size n, ForwardIterator result); - template + template ForwardIterator uninitialized_move(InputIterator first, InputIterator last, ForwardIterator result); - template + template ForwardIterator uninitialized_move(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} InputIterator first, InputIterator last, ForwardIterator result); - template + template pair uninitialized_move_n(InputIterator first, Size n, ForwardIterator result); - template + template pair uninitialized_move_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} InputIterator first, Size n, ForwardIterator result); - template + template void uninitialized_fill(ForwardIterator first, ForwardIterator last, const T& x); - template + template void uninitialized_fill(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last, const T& x); - template + template ForwardIterator uninitialized_fill_n(ForwardIterator first, Size n, const T& x); - template + template ForwardIterator uninitialized_fill_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, Size n, const T& x); - template + template void destroy_at(T* location); - template + template void destroy(ForwardIterator first, ForwardIterator last); - template + template void destroy(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, ForwardIterator last); - template + template ForwardIterator destroy_n(ForwardIterator first, Size n); - template + template ForwardIterator destroy_n(ExecutionPolicy&& exec, // see \ref{algorithms.parallel.overloads} ForwardIterator first, Size n); // \ref{unique.ptr}, class template \tcode{unique_ptr} - template struct default_delete; - template struct default_delete; - template > class unique_ptr; - template class unique_ptr; + template struct default_delete; + template struct default_delete; + template> class unique_ptr; + template class unique_ptr; - template unique_ptr + template unique_ptr make_unique(Args&&... args); // \tcode{T} is not array - template unique_ptr + template unique_ptr make_unique(size_t n); // \tcode{T} is \tcode{U[]} - template + template @\unspecnc@ make_unique(Args&&...) = delete; // \tcode{T} is \tcode{U[N]} - template + template void swap(unique_ptr& x, unique_ptr& y) noexcept; - template + template bool operator==(const unique_ptr& x, const unique_ptr& y); - template + template bool operator!=(const unique_ptr& x, const unique_ptr& y); - template + template bool operator<(const unique_ptr& x, const unique_ptr& y); - template + template bool operator<=(const unique_ptr& x, const unique_ptr& y); - template + template bool operator>(const unique_ptr& x, const unique_ptr& y); - template + template bool operator>=(const unique_ptr& x, const unique_ptr& y); - template + template bool operator==(const unique_ptr& x, nullptr_t) noexcept; - template + template bool operator==(nullptr_t, const unique_ptr& y) noexcept; - template + template bool operator!=(const unique_ptr& x, nullptr_t) noexcept; - template + template bool operator!=(nullptr_t, const unique_ptr& y) noexcept; - template + template bool operator<(const unique_ptr& x, nullptr_t); - template + template bool operator<(nullptr_t, const unique_ptr& y); - template + template bool operator<=(const unique_ptr& x, nullptr_t); - template + template bool operator<=(nullptr_t, const unique_ptr& y); - template + template bool operator>(const unique_ptr& x, nullptr_t); - template + template bool operator>(nullptr_t, const unique_ptr& y); - template + template bool operator>=(const unique_ptr& x, nullptr_t); - template + template bool operator>=(nullptr_t, const unique_ptr& y); template @@ -6705,29 +6705,29 @@ template bool operator>=(const shared_ptr& a, const shared_ptr& b) noexcept; - template + template bool operator==(const shared_ptr& x, nullptr_t) noexcept; - template + template bool operator==(nullptr_t, const shared_ptr& y) noexcept; - template + template bool operator!=(const shared_ptr& x, nullptr_t) noexcept; - template + template bool operator!=(nullptr_t, const shared_ptr& y) noexcept; - template + template bool operator<(const shared_ptr& x, nullptr_t) noexcept; - template + template bool operator<(nullptr_t, const shared_ptr& y) noexcept; - template + template bool operator<=(const shared_ptr& x, nullptr_t) noexcept; - template + template bool operator<=(nullptr_t, const shared_ptr& y) noexcept; - template + template bool operator>(const shared_ptr& x, nullptr_t) noexcept; - template + template bool operator>(nullptr_t, const shared_ptr& y) noexcept; - template + template bool operator>=(const shared_ptr& x, nullptr_t) noexcept; - template + template bool operator>=(nullptr_t, const shared_ptr& y) noexcept; // \ref{util.smartptr.shared.spec}, \tcode{shared_ptr} specialized algorithms @@ -6765,16 +6765,16 @@ template class enable_shared_from_this; // \ref{util.smartptr.hash}, hash support - template struct hash; - template struct hash>; - template struct hash>; + template struct hash; + template struct hash>; + template struct hash>; // \ref{util.smartptr.atomic}, atomic smart pointers - template struct atomic>; - template struct atomic>; + template struct atomic>; + template struct atomic>; // \ref{allocator.uses.trait}, \tcode{uses_allocator} - template + template inline constexpr bool uses_allocator_v = uses_allocator::value; } \end{codeblock} @@ -6788,22 +6788,22 @@ \indexlibrary{\idxcode{pointer_traits}}% \begin{codeblock} namespace std { - template struct pointer_traits { + template struct pointer_traits { using pointer = Ptr; using element_type = @\seebelow@; using difference_type = @\seebelow@; - template using rebind = @\seebelow@; + template using rebind = @\seebelow@; static pointer pointer_to(@\seebelow@ r); }; - template struct pointer_traits { + template struct pointer_traits { using pointer = T*; using element_type = T; using difference_type = ptrdiff_t; - template using rebind = U*; + template using rebind = U*; static pointer pointer_to(@\seebelow@ r) noexcept; }; @@ -6842,7 +6842,7 @@ \indexlibrarymember{rebind}{pointer_traits}% \begin{itemdecl} -template using rebind = @\seebelow@; +template using rebind = @\seebelow@; \end{itemdecl} \begin{itemdescr} @@ -6907,7 +6907,7 @@ \indexlibrary{\idxcode{to_address}}% \begin{itemdecl} -template auto to_address(const Ptr& p) noexcept; +template auto to_address(const Ptr& p) noexcept; \end{itemdecl} \begin{itemdescr} @@ -6920,7 +6920,7 @@ \indexlibrary{\idxcode{to_address}}% \begin{itemdecl} -template constexpr T* to_address(T* p) noexcept; +template constexpr T* to_address(T* p) noexcept; \end{itemdecl} \begin{itemdescr} @@ -6960,7 +6960,7 @@ \indexlibrary{\idxcode{undeclare_reachable}}% \begin{itemdecl} -template T* undeclare_reachable(T* p); +template T* undeclare_reachable(T* p); \end{itemdecl} \begin{itemdescr} @@ -7115,7 +7115,7 @@ \indexlibrary{\idxcode{uses_allocator}}% \begin{itemdecl} -template struct uses_allocator; +template struct uses_allocator; \end{itemdecl} \begin{itemdescr} @@ -7179,7 +7179,7 @@ \indexlibrary{\idxcode{allocator_traits}}% \begin{codeblock} namespace std { - template struct allocator_traits { + template struct allocator_traits { using allocator_type = Alloc; using value_type = typename Alloc::value_type; @@ -7197,18 +7197,18 @@ using propagate_on_container_swap = @\seebelow@; using is_always_equal = @\seebelow@; - template using rebind_alloc = @\seebelow@; - template using rebind_traits = allocator_traits>; + template using rebind_alloc = @\seebelow@; + template using rebind_traits = allocator_traits>; [[nodiscard]] static pointer allocate(Alloc& a, size_type n); [[nodiscard]] static pointer allocate(Alloc& a, size_type n, const_void_pointer hint); static void deallocate(Alloc& a, pointer p, size_type n); - template + template static void construct(Alloc& a, T* p, Args&&... args); - template + template static void destroy(Alloc& a, T* p); static size_type max_size(const Alloc& a) noexcept; @@ -7351,7 +7351,7 @@ \indexlibrarymember{rebind_alloc}{allocator_traits}% \begin{itemdecl} -template using rebind_alloc = @\seebelow@; +template using rebind_alloc = @\seebelow@; \end{itemdecl} \begin{itemdescr} @@ -7401,7 +7401,7 @@ \indexlibrarymember{construct}{allocator_traits}% \begin{itemdecl} -template +template static void construct(Alloc& a, T* p, Args&&... args); \end{itemdecl} @@ -7414,7 +7414,7 @@ \indexlibrarymember{destroy}{allocator_traits}% \begin{itemdecl} -template +template static void destroy(Alloc& a, T* p); \end{itemdecl} @@ -7458,7 +7458,7 @@ \indexlibrarymember{is_always_equal}{allocator}% \begin{codeblock} namespace std { - template class allocator { + template class allocator { public: using value_type = T; using propagate_on_container_move_assignment = true_type; @@ -7466,7 +7466,7 @@ allocator() noexcept; allocator(const allocator&) noexcept; - template allocator(const allocator&) noexcept; + template allocator(const allocator&) noexcept; ~allocator(); [[nodiscard]] T* allocate(size_t n); @@ -7534,7 +7534,7 @@ \indexlibrarymember{operator==}{allocator}% \begin{itemdecl} -template +template bool operator==(const allocator&, const allocator&) noexcept; \end{itemdecl} @@ -7546,7 +7546,7 @@ \indexlibrarymember{operator"!=}{allocator}% \begin{itemdecl} -template +template bool operator!=(const allocator&, const allocator&) noexcept; \end{itemdecl} @@ -7580,7 +7580,7 @@ \indexlibrary{\idxcode{addressof}}% \begin{itemdecl} -template constexpr T* addressof(T& r) noexcept; +template constexpr T* addressof(T& r) noexcept; \end{itemdecl} \begin{itemdescr} @@ -7598,7 +7598,7 @@ \indexlibrary{\idxcode{uninitialized_default_construct}}% \begin{itemdecl} -template +template void uninitialized_default_construct(ForwardIterator first, ForwardIterator last); \end{itemdecl} @@ -7615,7 +7615,7 @@ \indexlibrary{\idxcode{uninitialized_default_construct_n}}% \begin{itemdecl} -template +template ForwardIterator uninitialized_default_construct_n(ForwardIterator first, Size n); \end{itemdecl} @@ -7635,7 +7635,7 @@ \indexlibrary{\idxcode{uninitialized_value_construct}}% \begin{itemdecl} -template +template void uninitialized_value_construct(ForwardIterator first, ForwardIterator last); \end{itemdecl} @@ -7652,7 +7652,7 @@ \indexlibrary{\idxcode{uninitialized_value_construct_n}}% \begin{itemdecl} -template +template ForwardIterator uninitialized_value_construct_n(ForwardIterator first, Size n); \end{itemdecl} @@ -7672,7 +7672,7 @@ \indexlibrary{\idxcode{uninitialized_copy}}% \begin{itemdecl} -template +template ForwardIterator uninitialized_copy(InputIterator first, InputIterator last, ForwardIterator result); \end{itemdecl} @@ -7694,7 +7694,7 @@ \indexlibrary{\idxcode{uninitialized_copy_n}}% \begin{itemdecl} -template +template ForwardIterator uninitialized_copy_n(InputIterator first, Size n, ForwardIterator result); \end{itemdecl} @@ -7717,7 +7717,7 @@ \indexlibrary{\idxcode{uninitialized_move}}% \begin{itemdecl} -template +template ForwardIterator uninitialized_move(InputIterator first, InputIterator last, ForwardIterator result); \end{itemdecl} @@ -7741,7 +7741,7 @@ \indexlibrary{\idxcode{uninitialized_move_n}}% \begin{itemdecl} -template +template pair uninitialized_move_n(InputIterator first, Size n, ForwardIterator result); \end{itemdecl} @@ -7767,7 +7767,7 @@ \indexlibrary{\idxcode{uninitialized_fill}}% \begin{itemdecl} -template +template void uninitialized_fill(ForwardIterator first, ForwardIterator last, const T& x); \end{itemdecl} @@ -7784,7 +7784,7 @@ \indexlibrary{\idxcode{uninitialized_fill_n}}% \begin{itemdecl} -template +template ForwardIterator uninitialized_fill_n(ForwardIterator first, Size n, const T& x); \end{itemdecl} @@ -7804,7 +7804,7 @@ \indexlibrary{\idxcode{destroy_at}}% \begin{itemdecl} -template +template void destroy_at(T* location); \end{itemdecl} @@ -7819,7 +7819,7 @@ \indexlibrary{\idxcode{destroy}}% \begin{itemdecl} -template +template void destroy(ForwardIterator first, ForwardIterator last); \end{itemdecl} @@ -7835,7 +7835,7 @@ \indexlibrary{\idxcode{destroy_n}}% \begin{itemdecl} -template +template ForwardIterator destroy_n(ForwardIterator first, Size n); \end{itemdecl} @@ -7989,9 +7989,9 @@ \begin{codeblock} namespace std { - template struct default_delete { + template struct default_delete { constexpr default_delete() noexcept = default; - template default_delete(const default_delete&) noexcept; + template default_delete(const default_delete&) noexcept; void operator()(T*) const; }; } @@ -7999,7 +7999,7 @@ \indexlibrary{\idxcode{default_delete}!constructor}% \begin{itemdecl} -template default_delete(const default_delete& other) noexcept; +template default_delete(const default_delete& other) noexcept; \end{itemdecl} \begin{itemdescr} @@ -8029,17 +8029,17 @@ \begin{codeblock} namespace std { - template struct default_delete { + template struct default_delete { constexpr default_delete() noexcept = default; - template default_delete(const default_delete&) noexcept; - template void operator()(U* ptr) const; + template default_delete(const default_delete&) noexcept; + template void operator()(U* ptr) const; }; } \end{codeblock} \indexlibrary{\idxcode{default_delete}!constructor} \begin{itemdecl} -template default_delete(const default_delete& other) noexcept; +template default_delete(const default_delete& other) noexcept; \end{itemdecl} \begin{itemdescr} @@ -8055,7 +8055,7 @@ \indexlibrarymember{operator()}{default_delete}% \begin{itemdecl} -template void operator()(U* ptr) const; +template void operator()(U* ptr) const; \end{itemdecl} \begin{itemdescr} @@ -8074,7 +8074,7 @@ \indexlibrary{\idxcode{unique_ptr}}% \begin{codeblock} namespace std { - template > class unique_ptr { + template> class unique_ptr { public: using pointer = @\seebelow@; using element_type = T; @@ -8087,7 +8087,7 @@ unique_ptr(pointer p, @\seebelow@ d2) noexcept; unique_ptr(unique_ptr&& u) noexcept; constexpr unique_ptr(nullptr_t) noexcept; - template + template unique_ptr(unique_ptr&& u) noexcept; // \ref{unique.ptr.single.dtor}, destructor @@ -8095,7 +8095,7 @@ // \ref{unique.ptr.single.asgn}, assignment unique_ptr& operator=(unique_ptr&& u) noexcept; - template + template unique_ptr& operator=(unique_ptr&& u) noexcept; unique_ptr& operator=(nullptr_t) noexcept; @@ -8314,7 +8314,7 @@ \indexlibrary{\idxcode{unique_ptr}!constructor}% \begin{itemdecl} -template unique_ptr(unique_ptr&& u) noexcept; +template unique_ptr(unique_ptr&& u) noexcept; \end{itemdecl} \begin{itemdescr} @@ -8398,7 +8398,7 @@ \indexlibrarymember{operator=}{unique_ptr}% \begin{itemdecl} -template unique_ptr& operator=(unique_ptr&& u) noexcept; +template unique_ptr& operator=(unique_ptr&& u) noexcept; \end{itemdecl} \begin{itemdescr} @@ -8568,7 +8568,7 @@ \indexlibrary{\idxcode{unique_ptr}}% \begin{codeblock} namespace std { - template class unique_ptr { + template class unique_ptr { public: using pointer = @\seebelow@; using element_type = T; @@ -8576,11 +8576,11 @@ // \ref{unique.ptr.runtime.ctor}, constructors constexpr unique_ptr() noexcept; - template explicit unique_ptr(U p) noexcept; - template unique_ptr(U p, @\seebelow@ d) noexcept; - template unique_ptr(U p, @\seebelow@ d) noexcept; + template explicit unique_ptr(U p) noexcept; + template unique_ptr(U p, @\seebelow@ d) noexcept; + template unique_ptr(U p, @\seebelow@ d) noexcept; unique_ptr(unique_ptr&& u) noexcept; - template + template unique_ptr(unique_ptr&& u) noexcept; constexpr unique_ptr(nullptr_t) noexcept; @@ -8589,7 +8589,7 @@ // assignment unique_ptr& operator=(unique_ptr&& u) noexcept; - template + template unique_ptr& operator=(unique_ptr&& u) noexcept; unique_ptr& operator=(nullptr_t) noexcept; @@ -8602,7 +8602,7 @@ // \ref{unique.ptr.runtime.modifiers}, modifiers pointer release() noexcept; - template void reset(U p) noexcept; + template void reset(U p) noexcept; void reset(nullptr_t = nullptr) noexcept; void swap(unique_ptr& u) noexcept; @@ -8646,7 +8646,7 @@ \indexlibrary{\idxcode{unique_ptr}!constructor}% \begin{itemdecl} -template explicit unique_ptr(U p) noexcept; +template explicit unique_ptr(U p) noexcept; \end{itemdecl} \begin{itemdescr} @@ -8667,8 +8667,8 @@ \indexlibrary{\idxcode{unique_ptr}!constructor}% \begin{itemdecl} -template unique_ptr(U p, @\seebelow@ d) noexcept; -template unique_ptr(U p, @\seebelow@ d) noexcept; +template unique_ptr(U p, @\seebelow@ d) noexcept; +template unique_ptr(U p, @\seebelow@ d) noexcept; \end{itemdecl} \begin{itemdescr} @@ -8690,7 +8690,7 @@ \indexlibrary{\idxcode{unique_ptr}!constructor}% \begin{itemdecl} -template unique_ptr(unique_ptr&& u) noexcept; +template unique_ptr(unique_ptr&& u) noexcept; \end{itemdecl} \begin{itemdescr} @@ -8718,7 +8718,7 @@ \indexlibrarymember{operator=}{unique_ptr}% \begin{itemdecl} -template unique_ptr& operator=(unique_ptr&& u)noexcept; +template unique_ptr& operator=(unique_ptr&& u)noexcept; \end{itemdecl} \begin{itemdescr} @@ -8772,7 +8772,7 @@ \indexlibrarymember{reset}{unique_ptr}% \begin{itemdecl} -template void reset(U p) noexcept; +template void reset(U p) noexcept; \end{itemdecl} \begin{itemdescr} @@ -8794,7 +8794,7 @@ \indexlibrary{\idxcode{make_unique}}% \begin{itemdecl} -template unique_ptr make_unique(Args&&... args); +template unique_ptr make_unique(Args&&... args); \end{itemdecl} \begin{itemdescr} @@ -8808,7 +8808,7 @@ \indexlibrary{\idxcode{make_unique}}% \begin{itemdecl} -template unique_ptr make_unique(size_t n); +template unique_ptr make_unique(size_t n); \end{itemdecl} \begin{itemdescr} @@ -8822,7 +8822,7 @@ \indexlibrary{\idxcode{make_unique}}% \begin{itemdecl} -template @\unspec@ make_unique(Args&&...) = delete; +template @\unspec@ make_unique(Args&&...) = delete; \end{itemdecl} \begin{itemdescr} @@ -8835,7 +8835,7 @@ \indexlibrary{\idxcode{swap(unique_ptr\&, unique_ptr\&)}}% \begin{itemdecl} -template void swap(unique_ptr& x, unique_ptr& y) noexcept; +template void swap(unique_ptr& x, unique_ptr& y) noexcept; \end{itemdecl} \begin{itemdescr} @@ -8849,7 +8849,7 @@ \indexlibrarymember{operator==}{unique_ptr}% \begin{itemdecl} -template +template bool operator==(const unique_ptr& x, const unique_ptr& y); \end{itemdecl} @@ -8860,7 +8860,7 @@ \indexlibrarymember{operator"!=}{unique_ptr}% \begin{itemdecl} -template +template bool operator!=(const unique_ptr& x, const unique_ptr& y); \end{itemdecl} @@ -8871,7 +8871,7 @@ \indexlibrarymember{operator<}{unique_ptr}% \begin{itemdecl} -template +template bool operator<(const unique_ptr& x, const unique_ptr& y); \end{itemdecl} @@ -8897,7 +8897,7 @@ \indexlibrarymember{operator<=}{unique_ptr}% \begin{itemdecl} -template +template bool operator<=(const unique_ptr& x, const unique_ptr& y); \end{itemdecl} @@ -8908,7 +8908,7 @@ \indexlibrarymember{operator>}{unique_ptr}% \begin{itemdecl} -template +template bool operator>(const unique_ptr& x, const unique_ptr& y); \end{itemdecl} @@ -8919,7 +8919,7 @@ \indexlibrarymember{operator>=}{unique_ptr}% \begin{itemdecl} -template +template bool operator>=(const unique_ptr& x, const unique_ptr& y); \end{itemdecl} @@ -8930,9 +8930,9 @@ \indexlibrarymember{operator==}{unique_ptr}% \begin{itemdecl} -template +template bool operator==(const unique_ptr& x, nullptr_t) noexcept; -template +template bool operator==(nullptr_t, const unique_ptr& x) noexcept; \end{itemdecl} @@ -8943,9 +8943,9 @@ \indexlibrarymember{operator"!=}{unique_ptr}% \begin{itemdecl} -template +template bool operator!=(const unique_ptr& x, nullptr_t) noexcept; -template +template bool operator!=(nullptr_t, const unique_ptr& x) noexcept; \end{itemdecl} @@ -8956,9 +8956,9 @@ \indexlibrarymember{operator<}{unique_ptr}% \begin{itemdecl} -template +template bool operator<(const unique_ptr& x, nullptr_t); -template +template bool operator<(nullptr_t, const unique_ptr& x); \end{itemdecl} @@ -8982,9 +8982,9 @@ \indexlibrarymember{operator>}{unique_ptr}% \begin{itemdecl} -template +template bool operator>(const unique_ptr& x, nullptr_t); -template +template bool operator>(nullptr_t, const unique_ptr& x); \end{itemdecl} @@ -8997,9 +8997,9 @@ \indexlibrarymember{operator<=}{unique_ptr}% \begin{itemdecl} -template +template bool operator<=(const unique_ptr& x, nullptr_t); -template +template bool operator<=(nullptr_t, const unique_ptr& x); \end{itemdecl} @@ -9012,9 +9012,9 @@ \indexlibrarymember{operator>=}{unique_ptr}% \begin{itemdecl} -template +template bool operator>=(const unique_ptr& x, nullptr_t); -template +template bool operator>=(nullptr_t, const unique_ptr& x); \end{itemdecl} @@ -9085,7 +9085,7 @@ \begin{codeblock} namespace std { - template class shared_ptr { + template class shared_ptr { public: using element_type = remove_extent_t; using weak_type = weak_ptr; @@ -9093,27 +9093,27 @@ // \ref{util.smartptr.shared.const}, constructors constexpr shared_ptr() noexcept; constexpr shared_ptr(nullptr_t) noexcept : shared_ptr() { } - template + template explicit shared_ptr(Y* p); - template + template shared_ptr(Y* p, D d); - template + template shared_ptr(Y* p, D d, A a); - template + template shared_ptr(nullptr_t p, D d); - template + template shared_ptr(nullptr_t p, D d, A a); - template + template shared_ptr(const shared_ptr& r, element_type* p) noexcept; shared_ptr(const shared_ptr& r) noexcept; - template + template shared_ptr(const shared_ptr& r) noexcept; shared_ptr(shared_ptr&& r) noexcept; - template + template shared_ptr(shared_ptr&& r) noexcept; - template + template explicit shared_ptr(const weak_ptr& r); - template + template shared_ptr(unique_ptr&& r); // \ref{util.smartptr.shared.dest}, destructor @@ -9121,22 +9121,22 @@ // \ref{util.smartptr.shared.assign}, assignment shared_ptr& operator=(const shared_ptr& r) noexcept; - template + template shared_ptr& operator=(const shared_ptr& r) noexcept; shared_ptr& operator=(shared_ptr&& r) noexcept; - template + template shared_ptr& operator=(shared_ptr&& r) noexcept; - template + template shared_ptr& operator=(unique_ptr&& r); // \ref{util.smartptr.shared.mod}, modifiers void swap(shared_ptr& r) noexcept; void reset() noexcept; - template + template void reset(Y* p); - template + template void reset(Y* p, D d); - template + template void reset(Y* p, D d, A a); // \ref{util.smartptr.shared.obs}, observers @@ -9146,15 +9146,15 @@ element_type& operator[](ptrdiff_t i) const; long use_count() const noexcept; explicit operator bool() const noexcept; - template + template bool owner_before(const shared_ptr& b) const noexcept; - template + template bool owner_before(const weak_ptr& b) const noexcept; }; - template + template shared_ptr(weak_ptr) -> shared_ptr; - template + template shared_ptr(unique_ptr) -> shared_ptr; } \end{codeblock} @@ -9220,7 +9220,7 @@ \indexlibrary{\idxcode{shared_ptr}!constructor}% \begin{itemdecl} -template explicit shared_ptr(Y* p); +template explicit shared_ptr(Y* p); \end{itemdecl} \begin{itemdescr} @@ -9259,10 +9259,10 @@ \indexlibrary{\idxcode{shared_ptr}!constructor}% \begin{itemdecl} -template shared_ptr(Y* p, D d); -template shared_ptr(Y* p, D d, A a); -template shared_ptr(nullptr_t p, D d); -template shared_ptr(nullptr_t p, D d, A a); +template shared_ptr(Y* p, D d); +template shared_ptr(Y* p, D d, A a); +template shared_ptr(nullptr_t p, D d); +template shared_ptr(nullptr_t p, D d, A a); \end{itemdecl} \begin{itemdescr} @@ -9302,7 +9302,7 @@ \indexlibrary{\idxcode{shared_ptr}!constructor}% \begin{itemdecl} -template shared_ptr(const shared_ptr& r, element_type* p) noexcept; +template shared_ptr(const shared_ptr& r, element_type* p) noexcept; \end{itemdecl} \begin{itemdescr} @@ -9326,7 +9326,7 @@ \indexlibrary{\idxcode{shared_ptr}!constructor}% \begin{itemdecl} shared_ptr(const shared_ptr& r) noexcept; -template shared_ptr(const shared_ptr& r) noexcept; +template shared_ptr(const shared_ptr& r) noexcept; \end{itemdecl} \begin{itemdescr} @@ -9344,7 +9344,7 @@ \indexlibrary{\idxcode{shared_ptr}!constructor}% \begin{itemdecl} shared_ptr(shared_ptr&& r) noexcept; -template shared_ptr(shared_ptr&& r) noexcept; +template shared_ptr(shared_ptr&& r) noexcept; \end{itemdecl} \begin{itemdescr} @@ -9363,7 +9363,7 @@ \indexlibrary{\idxcode{shared_ptr}!constructor}% \indexlibrary{\idxcode{weak_ptr}}% \begin{itemdecl} -template explicit shared_ptr(const weak_ptr& r); +template explicit shared_ptr(const weak_ptr& r); \end{itemdecl} \begin{itemdescr} @@ -9382,7 +9382,7 @@ \indexlibrary{\idxcode{shared_ptr}!constructor}% \indexlibrary{\idxcode{unique_ptr}}% \begin{itemdecl} -template shared_ptr(unique_ptr&& r); +template shared_ptr(unique_ptr&& r); \end{itemdecl} \begin{itemdescr} @@ -9434,7 +9434,7 @@ \indexlibrarymember{operator=}{shared_ptr}% \begin{itemdecl} shared_ptr& operator=(const shared_ptr& r) noexcept; -template shared_ptr& operator=(const shared_ptr& r) noexcept; +template shared_ptr& operator=(const shared_ptr& r) noexcept; \end{itemdecl} \begin{itemdescr} @@ -9460,7 +9460,7 @@ \indexlibrarymember{operator=}{shared_ptr}% \begin{itemdecl} shared_ptr& operator=(shared_ptr&& r) noexcept; -template shared_ptr& operator=(shared_ptr&& r) noexcept; +template shared_ptr& operator=(shared_ptr&& r) noexcept; \end{itemdecl} \begin{itemdescr} @@ -9473,7 +9473,7 @@ \indexlibrarymember{operator=}{shared_ptr}% \begin{itemdecl} -template shared_ptr& operator=(unique_ptr&& r); +template shared_ptr& operator=(unique_ptr&& r); \end{itemdecl} \begin{itemdescr} @@ -9507,7 +9507,7 @@ \indexlibrarymember{reset}{shared_ptr}% \begin{itemdecl} -template void reset(Y* p); +template void reset(Y* p); \end{itemdecl} \begin{itemdescr} @@ -9516,7 +9516,7 @@ \indexlibrarymember{reset}{shared_ptr}% \begin{itemdecl} -template void reset(Y* p, D d); +template void reset(Y* p, D d); \end{itemdecl} \begin{itemdescr} @@ -9525,7 +9525,7 @@ \indexlibrarymember{reset}{shared_ptr}% \begin{itemdecl} -template void reset(Y* p, D d, A a); +template void reset(Y* p, D d, A a); \end{itemdecl} \begin{itemdescr} @@ -9633,8 +9633,8 @@ \indexlibrarymember{owner_before}{shared_ptr}% \begin{itemdecl} -template bool owner_before(const shared_ptr& b) const noexcept; -template bool owner_before(const weak_ptr& b) const noexcept; +template bool owner_before(const shared_ptr& b) const noexcept; +template bool owner_before(const weak_ptr& b) const noexcept; \end{itemdecl} \begin{itemdescr} @@ -9662,9 +9662,9 @@ \indexlibrary{\idxcode{make_shared}}% \indexlibrary{\idxcode{allocate_shared}}% \begin{itemdecl} -template +template shared_ptr make_shared(@\placeholdernc{args}@); -template +template shared_ptr allocate_shared(const A& a, @\placeholdernc{args}@); \end{itemdecl} @@ -9769,9 +9769,9 @@ \indexlibrary{\idxcode{make_shared}}% \indexlibrary{\idxcode{allocate_shared}}% \begin{itemdecl} -template +template shared_ptr make_shared(Args&&... args); // \tcode{T} is not array -template +template shared_ptr allocate_shared(const A& a, Args&&... args); // \tcode{T} is not array \end{itemdecl} @@ -9800,9 +9800,9 @@ \indexlibrary{\idxcode{make_shared}}% \indexlibrary{\idxcode{allocate_shared}}% \begin{itemdecl} -template shared_ptr +template shared_ptr make_shared(size_t N); // \tcode{T} is \tcode{U[]} -template +template shared_ptr allocate_shared(const A& a, size_t N); // \tcode{T} is \tcode{U[]} \end{itemdecl} @@ -9830,9 +9830,9 @@ \indexlibrary{\idxcode{make_shared}}% \indexlibrary{\idxcode{allocate_shared}}% \begin{itemdecl} -template +template shared_ptr make_shared(); // \tcode{T} is \tcode{U[N]} -template +template shared_ptr allocate_shared(const A& a); // \tcode{T} is \tcode{U[N]} \end{itemdecl} @@ -9927,7 +9927,7 @@ \indexlibrarymember{operator==}{shared_ptr}% \begin{itemdecl} -template +template bool operator==(const shared_ptr& a, const shared_ptr& b) noexcept; \end{itemdecl} @@ -9938,7 +9938,7 @@ \indexlibrarymember{operator<}{shared_ptr}% \begin{itemdecl} -template +template bool operator<(const shared_ptr& a, const shared_ptr& b) noexcept; \end{itemdecl} @@ -9955,9 +9955,9 @@ \indexlibrarymember{operator==}{shared_ptr}% \begin{itemdecl} -template +template bool operator==(const shared_ptr& a, nullptr_t) noexcept; -template +template bool operator==(nullptr_t, const shared_ptr& a) noexcept; \end{itemdecl} @@ -9968,9 +9968,9 @@ \indexlibrarymember{operator"!=}{shared_ptr}% \begin{itemdecl} -template +template bool operator!=(const shared_ptr& a, nullptr_t) noexcept; -template +template bool operator!=(nullptr_t, const shared_ptr& a) noexcept; \end{itemdecl} @@ -9981,9 +9981,9 @@ \indexlibrarymember{operator<}{shared_ptr}% \begin{itemdecl} -template +template bool operator<(const shared_ptr& a, nullptr_t) noexcept; -template +template bool operator<(nullptr_t, const shared_ptr& a) noexcept; \end{itemdecl} @@ -10002,9 +10002,9 @@ \indexlibrarymember{operator>}{shared_ptr}% \begin{itemdecl} -template +template bool operator>(const shared_ptr& a, nullptr_t) noexcept; -template +template bool operator>(nullptr_t, const shared_ptr& a) noexcept; \end{itemdecl} @@ -10017,9 +10017,9 @@ \indexlibrarymember{operator<=}{shared_ptr}% \begin{itemdecl} -template +template bool operator<=(const shared_ptr& a, nullptr_t) noexcept; -template +template bool operator<=(nullptr_t, const shared_ptr& a) noexcept; \end{itemdecl} @@ -10032,9 +10032,9 @@ \indexlibrarymember{operator>=}{shared_ptr}% \begin{itemdecl} -template +template bool operator>=(const shared_ptr& a, nullptr_t) noexcept; -template +template bool operator>=(nullptr_t, const shared_ptr& a) noexcept; \end{itemdecl} @@ -10049,7 +10049,7 @@ \indexlibrarymember{swap}{shared_ptr}% \begin{itemdecl} -template +template void swap(shared_ptr& a, shared_ptr& b) noexcept; \end{itemdecl} @@ -10061,7 +10061,7 @@ \indexlibrarymember{static_pointer_cast}{shared_ptr}% \begin{itemdecl} -template +template shared_ptr static_pointer_cast(const shared_ptr& r) noexcept; \end{itemdecl} @@ -10087,7 +10087,7 @@ \indexlibrarymember{dynamic_pointer_cast}{shared_ptr}% \begin{itemdecl} -template +template shared_ptr dynamic_pointer_cast(const shared_ptr& r) noexcept; \end{itemdecl} @@ -10116,7 +10116,7 @@ \indexlibrarymember{const_pointer_cast}{shared_ptr}% \begin{itemdecl} -template +template shared_ptr const_pointer_cast(const shared_ptr& r) noexcept; \end{itemdecl} @@ -10141,7 +10141,7 @@ \indexlibrarymember{reinterpret_pointer_cast}{shared_ptr}% \begin{itemdecl} -template +template shared_ptr reinterpret_pointer_cast(const shared_ptr& r) noexcept; \end{itemdecl} @@ -10167,7 +10167,7 @@ \indexlibrarymember{get_deleter}{shared_ptr}% \begin{itemdecl} -template +template D* get_deleter(const shared_ptr& p) noexcept; \end{itemdecl} @@ -10186,7 +10186,7 @@ \indexlibrarymember{operator<<}{shared_ptr}% \begin{itemdecl} -template +template basic_ostream& operator<<(basic_ostream& os, const shared_ptr& p); \end{itemdecl} @@ -10582,7 +10582,7 @@ \indexlibrary{\idxcode{hash}!\idxcode{unique_ptr}}% \begin{itemdecl} -template struct hash>; +template struct hash>; \end{itemdecl} \begin{itemdescr} @@ -10598,7 +10598,7 @@ \indexlibrary{\idxcode{hash}!\idxcode{shared_ptr}}% \begin{itemdecl} -template struct hash>; +template struct hash>; \end{itemdecl} \begin{itemdescr} @@ -10642,7 +10642,7 @@ \indexlibrary{\idxcode{atomic>}}% \begin{codeblock} namespace std { - template struct atomic> { + template struct atomic> { using value_type = shared_ptr; static constexpr bool is_always_lock_free = @\impdefx{whether a given \tcode{atomic} type's operations are always lock free}@; @@ -10882,7 +10882,7 @@ \indexlibrary{\idxcode{atomic>}}% \begin{codeblock} namespace std { - template struct atomic> { + template struct atomic> { using value_type = weak_ptr; static constexpr bool is_always_lock_free = @\impdefx{whether a given \tcode{atomic} type's operations are always lock free}@; @@ -11132,12 +11132,12 @@ bool operator!=(const memory_resource& a, const memory_resource& b) noexcept; // \ref{mem.poly.allocator.class}, class template \tcode{polymorphic_allocator} - template class polymorphic_allocator; + template class polymorphic_allocator; - template + template bool operator==(const polymorphic_allocator& a, const polymorphic_allocator& b) noexcept; - template + template bool operator!=(const polymorphic_allocator& a, const polymorphic_allocator& b) noexcept; @@ -11331,7 +11331,7 @@ \indexlibrarymember{value_type}{polymorphic_allocator}% \begin{codeblock} namespace std::pmr { - template + template class polymorphic_allocator { memory_resource* memory_rsrc; // \expos @@ -11344,7 +11344,7 @@ polymorphic_allocator(const polymorphic_allocator& other) = default; - template + template polymorphic_allocator(const polymorphic_allocator& other) noexcept; polymorphic_allocator& operator=(const polymorphic_allocator& rhs) = delete; @@ -11353,22 +11353,22 @@ [[nodiscard]] Tp* allocate(size_t n); void deallocate(Tp* p, size_t n); - template + template void construct(T* p, Args&&... args); - template + template void construct(pair* p, piecewise_construct_t, tuple x, tuple y); - template + template void construct(pair* p); - template + template void construct(pair* p, U&& x, V&& y); - template + template void construct(pair* p, const pair& pr); - template + template void construct(pair* p, pair&& pr); - template + template void destroy(T* p); polymorphic_allocator select_on_container_copy_construction() const; @@ -11417,7 +11417,7 @@ \indexlibrary{\idxcode{polymorphic_allocator}!constructor}% \begin{itemdecl} -template +template polymorphic_allocator(const polymorphic_allocator& other) noexcept; \end{itemdecl} @@ -11467,7 +11467,7 @@ \indexlibrarymember{construct}{polymorphic_allocator}% \begin{itemdecl} -template +template void construct(T* p, Args&&... args); \end{itemdecl} @@ -11495,7 +11495,7 @@ \indexlibrarymember{construct}{polymorphic_allocator}% \begin{itemdecl} -template +template void construct(pair* p, piecewise_construct_t, tuple x, tuple y); \end{itemdecl} @@ -11581,7 +11581,7 @@ \indexlibrarymember{construct}{polymorphic_allocator}% \begin{itemdecl} -template +template void construct(pair* p); \end{itemdecl} @@ -11596,7 +11596,7 @@ \indexlibrarymember{construct}{polymorphic_allocator}% \begin{itemdecl} -template +template void construct(pair* p, U&& x, V&& y); \end{itemdecl} @@ -11613,7 +11613,7 @@ \indexlibrarymember{construct}{polymorphic_allocator}% \begin{itemdecl} -template +template void construct(pair* p, const pair& pr); \end{itemdecl} @@ -11630,7 +11630,7 @@ \indexlibrarymember{construct}{polymorphic_allocator}% \begin{itemdecl} -template +template void construct(pair* p, pair&& pr); \end{itemdecl} @@ -11647,7 +11647,7 @@ \indexlibrarymember{destroy}{polymorphic_allocator}% \begin{itemdecl} -template +template void destroy(T* p); \end{itemdecl} @@ -11688,7 +11688,7 @@ \indexlibrarymember{operator==}{polymorphic_allocator}% \begin{itemdecl} -template +template bool operator==(const polymorphic_allocator& a, const polymorphic_allocator& b) noexcept; \end{itemdecl} @@ -11701,7 +11701,7 @@ \indexlibrarymember{operator"!=}{polymorphic_allocator}% \begin{itemdecl} -template +template bool operator!=(const polymorphic_allocator& a, const polymorphic_allocator& b) noexcept; \end{itemdecl} @@ -12337,13 +12337,13 @@ \begin{codeblock} namespace std { // scoped allocator adaptor - template + template class scoped_allocator_adaptor; - template + template bool operator==(const scoped_allocator_adaptor& a, const scoped_allocator_adaptor& b) noexcept; - template + template bool operator!=(const scoped_allocator_adaptor& a, const scoped_allocator_adaptor& b) noexcept; } @@ -12379,7 +12379,7 @@ \indexlibrarymember{const_void_pointer}{scoped_allocator_adaptor}% \begin{codeblock} namespace std { - template + template class scoped_allocator_adaptor : public OuterAlloc { private: using OuterTraits = allocator_traits; // \expos @@ -12402,24 +12402,24 @@ using propagate_on_container_swap = @\seebelow@; using is_always_equal = @\seebelow@; - template + template struct rebind { using other = scoped_allocator_adaptor< OuterTraits::template rebind_alloc, InnerAllocs...>; }; scoped_allocator_adaptor(); - template + template scoped_allocator_adaptor(OuterA2&& outerAlloc, const InnerAllocs&... innerAllocs) noexcept; scoped_allocator_adaptor(const scoped_allocator_adaptor& other) noexcept; scoped_allocator_adaptor(scoped_allocator_adaptor&& other) noexcept; - template + template scoped_allocator_adaptor( const scoped_allocator_adaptor& other) noexcept; - template + template scoped_allocator_adaptor( scoped_allocator_adaptor&& other) noexcept; @@ -12438,21 +12438,21 @@ void deallocate(pointer p, size_type n); size_type max_size() const; - template + template void construct(T* p, Args&&... args); - template + template void construct(pair* p, piecewise_construct_t, tuple x, tuple y); - template + template void construct(pair* p); - template + template void construct(pair* p, U&& x, V&& y); - template + template void construct(pair* p, const pair& x); - template + template void construct(pair* p, pair&& x); - template + template void destroy(T* p); scoped_allocator_adaptor select_on_container_copy_construction() const; @@ -12462,10 +12462,10 @@ scoped_allocator_adaptor(OuterAlloc, InnerAllocs...) -> scoped_allocator_adaptor; - template + template bool operator==(const scoped_allocator_adaptor& a, const scoped_allocator_adaptor& b) noexcept; - template + template bool operator!=(const scoped_allocator_adaptor& a, const scoped_allocator_adaptor& b) noexcept; } @@ -12551,7 +12551,7 @@ \indexlibrary{\idxcode{scoped_allocator_adaptor}!constructor}% \begin{itemdecl} -template +template scoped_allocator_adaptor(OuterA2&& outerAlloc, const InnerAllocs&... innerAllocs) noexcept; \end{itemdecl} @@ -12591,7 +12591,7 @@ \indexlibrary{\idxcode{scoped_allocator_adaptor}!constructor}% \begin{itemdecl} -template +template scoped_allocator_adaptor( const scoped_allocator_adaptor& other) noexcept; \end{itemdecl} @@ -12608,7 +12608,7 @@ \indexlibrary{\idxcode{scoped_allocator_adaptor}!constructor}% \begin{itemdecl} -template +template scoped_allocator_adaptor(scoped_allocator_adaptor&& other) noexcept; \end{itemdecl} @@ -12713,7 +12713,7 @@ \indexlibrarymember{construct}{scoped_allocator_adaptor}% \begin{itemdecl} -template +template void construct(T* p, Args&&... args); \end{itemdecl} @@ -12754,7 +12754,7 @@ \indexlibrarymember{construct}{scoped_allocator_adaptor}% \begin{itemdecl} -template +template void construct(pair* p, piecewise_construct_t, tuple x, tuple y); \end{itemdecl} @@ -12827,7 +12827,7 @@ \indexlibrarymember{construct}{scoped_allocator_adaptor}% \begin{itemdecl} -template +template void construct(pair* p); \end{itemdecl} @@ -12841,7 +12841,7 @@ \indexlibrarymember{construct}{scoped_allocator_adaptor}% \begin{itemdecl} -template +template void construct(pair* p, U&& x, V&& y); \end{itemdecl} @@ -12857,7 +12857,7 @@ \indexlibrarymember{construct}{scoped_allocator_adaptor}% \begin{itemdecl} -template +template void construct(pair* p, const pair& x); \end{itemdecl} @@ -12873,7 +12873,7 @@ \indexlibrarymember{construct}{scoped_allocator_adaptor}% \begin{itemdecl} -template +template void construct(pair* p, pair&& x); \end{itemdecl} @@ -12889,7 +12889,7 @@ \indexlibrarymember{destroy}{scoped_allocator_adaptor}% \begin{itemdecl} -template +template void destroy(T* p); \end{itemdecl} @@ -12915,7 +12915,7 @@ \indexlibrarymember{operator==}{scoped_allocator_adaptor}% \begin{itemdecl} -template +template bool operator==(const scoped_allocator_adaptor& a, const scoped_allocator_adaptor& b) noexcept; \end{itemdecl} @@ -12934,7 +12934,7 @@ \indexlibrarymember{operator"!=}{scoped_allocator_adaptor}% \begin{itemdecl} -template +template bool operator!=(const scoped_allocator_adaptor& a, const scoped_allocator_adaptor& b) noexcept; \end{itemdecl} @@ -12965,69 +12965,69 @@ \begin{codeblock} namespace std { // \ref{func.invoke}, invoke - template + template invoke_result_t invoke(F&& f, Args&&... args) noexcept(is_nothrow_invocable_v); // \ref{refwrap}, \tcode{reference_wrapper} - template class reference_wrapper; + template class reference_wrapper; - template reference_wrapper ref(T&) noexcept; - template reference_wrapper cref(const T&) noexcept; - template void ref(const T&&) = delete; - template void cref(const T&&) = delete; + template reference_wrapper ref(T&) noexcept; + template reference_wrapper cref(const T&) noexcept; + template void ref(const T&&) = delete; + template void cref(const T&&) = delete; - template reference_wrapper ref(reference_wrapper) noexcept; - template reference_wrapper cref(reference_wrapper) noexcept; + template reference_wrapper ref(reference_wrapper) noexcept; + template reference_wrapper cref(reference_wrapper) noexcept; // \ref{arithmetic.operations}, arithmetic operations - template struct plus; - template struct minus; - template struct multiplies; - template struct divides; - template struct modulus; - template struct negate; - template <> struct plus; - template <> struct minus; - template <> struct multiplies; - template <> struct divides; - template <> struct modulus; - template <> struct negate; + template struct plus; + template struct minus; + template struct multiplies; + template struct divides; + template struct modulus; + template struct negate; + template<> struct plus; + template<> struct minus; + template<> struct multiplies; + template<> struct divides; + template<> struct modulus; + template<> struct negate; // \ref{comparisons}, comparisons - template struct equal_to; - template struct not_equal_to; - template struct greater; - template struct less; - template struct greater_equal; - template struct less_equal; - template <> struct equal_to; - template <> struct not_equal_to; - template <> struct greater; - template <> struct less; - template <> struct greater_equal; - template <> struct less_equal; + template struct equal_to; + template struct not_equal_to; + template struct greater; + template struct less; + template struct greater_equal; + template struct less_equal; + template<> struct equal_to; + template<> struct not_equal_to; + template<> struct greater; + template<> struct less; + template<> struct greater_equal; + template<> struct less_equal; // \ref{logical.operations}, logical operations - template struct logical_and; - template struct logical_or; - template struct logical_not; - template <> struct logical_and; - template <> struct logical_or; - template <> struct logical_not; + template struct logical_and; + template struct logical_or; + template struct logical_not; + template<> struct logical_and; + template<> struct logical_or; + template<> struct logical_not; // \ref{bitwise.operations}, bitwise operations - template struct bit_and; - template struct bit_or; - template struct bit_xor; - template struct bit_not; - template <> struct bit_and; - template <> struct bit_or; - template <> struct bit_xor; - template <> struct bit_not; + template struct bit_and; + template struct bit_or; + template struct bit_xor; + template struct bit_not; + template<> struct bit_and; + template<> struct bit_or; + template<> struct bit_xor; + template<> struct bit_not; // \ref{func.not_fn}, function template \tcode{not_fn} - template @\unspec@ not_fn(F&& f); + template @\unspec@ not_fn(F&& f); // \ref{func.bind}, bind template struct is_bind_expression; @@ -13085,13 +13085,13 @@ class boyer_moore_horspool_searcher; // \ref{unord.hash}, hash function primary template - template + template struct hash; // \ref{func.bind}, function object binders - template + template inline constexpr bool is_bind_expression_v = is_bind_expression::value; - template + template inline constexpr int is_placeholder_v = is_placeholder::value; } \end{codeblock} @@ -13214,7 +13214,7 @@ \indexlibrary{\idxcode{invoke}}% \indexlibrary{invoke@\tcode{\placeholder{INVOKE}}}% \begin{itemdecl} -template +template invoke_result_t invoke(F&& f, Args&&... args) noexcept(is_nothrow_invocable_v); \end{itemdecl} @@ -13231,13 +13231,13 @@ \indextext{function object!\idxcode{reference_wrapper}}% \begin{codeblock} namespace std { - template class reference_wrapper { + template class reference_wrapper { public: // types using type = T; // construct/copy/destroy - template + template reference_wrapper(U&&) noexcept(@\seebelow@); reference_wrapper(const reference_wrapper& x) noexcept; @@ -13249,10 +13249,10 @@ T& get() const noexcept; // invocation - template + template invoke_result_t operator()(ArgTypes&&...) const; }; - template + template reference_wrapper(T&) -> reference_wrapper; } \end{codeblock} @@ -13338,7 +13338,7 @@ \indexlibrarymember{operator()}{reference_wrapper}% \begin{itemdecl} -template +template invoke_result_t operator()(ArgTypes&&... args) const; \end{itemdecl} @@ -13352,7 +13352,7 @@ \indexlibrarymember{ref}{reference_wrapper}% \begin{itemdecl} -template reference_wrapper ref(T& t) noexcept; +template reference_wrapper ref(T& t) noexcept; \end{itemdecl} \begin{itemdescr} @@ -13361,7 +13361,7 @@ \indexlibrarymember{ref}{reference_wrapper}% \begin{itemdecl} -template reference_wrapper ref(reference_wrapper t) noexcept; +template reference_wrapper ref(reference_wrapper t) noexcept; \end{itemdecl} \begin{itemdescr} @@ -13370,7 +13370,7 @@ \indexlibrarymember{cref}{reference_wrapper}% \begin{itemdecl} -template reference_wrapper cref(const T& t) noexcept; +template reference_wrapper cref(const T& t) noexcept; \end{itemdecl} \begin{itemdescr} @@ -13379,7 +13379,7 @@ \indexlibrarymember{cref}{reference_wrapper}% \begin{itemdecl} -template reference_wrapper cref(reference_wrapper t) noexcept; +template reference_wrapper cref(reference_wrapper t) noexcept; \end{itemdecl} \begin{itemdescr} @@ -13396,7 +13396,7 @@ \indexlibrary{\idxcode{plus}}% \begin{itemdecl} -template struct plus { +template struct plus { constexpr T operator()(const T& x, const T& y) const; }; \end{itemdecl} @@ -13412,8 +13412,8 @@ \indexlibrary{\idxcode{plus<>}}% \begin{itemdecl} -template <> struct plus { - template constexpr auto operator()(T&& t, U&& u) const +template<> struct plus { + template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) + std::forward(u)); using is_transparent = @\unspec@; @@ -13422,7 +13422,7 @@ \indexlibrarymember{operator()}{plus<>}% \begin{itemdecl} -template constexpr auto operator()(T&& t, U&& u) const +template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) + std::forward(u)); \end{itemdecl} @@ -13434,7 +13434,7 @@ \indexlibrary{\idxcode{minus}}% \begin{itemdecl} -template struct minus { +template struct minus { constexpr T operator()(const T& x, const T& y) const; }; \end{itemdecl} @@ -13450,8 +13450,8 @@ \indexlibrary{\idxcode{minus<>}}% \begin{itemdecl} -template <> struct minus { - template constexpr auto operator()(T&& t, U&& u) const +template<> struct minus { + template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) - std::forward(u)); using is_transparent = @\unspec@; @@ -13460,7 +13460,7 @@ \indexlibrarymember{operator()}{minus<>}% \begin{itemdecl} -template constexpr auto operator()(T&& t, U&& u) const +template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) - std::forward(u)); \end{itemdecl} @@ -13472,7 +13472,7 @@ \indexlibrary{\idxcode{multiplies}}% \begin{itemdecl} -template struct multiplies { +template struct multiplies { constexpr T operator()(const T& x, const T& y) const; }; \end{itemdecl} @@ -13488,8 +13488,8 @@ \indexlibrary{\idxcode{multiplies<>}}% \begin{itemdecl} -template <> struct multiplies { - template constexpr auto operator()(T&& t, U&& u) const +template<> struct multiplies { + template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) * std::forward(u)); using is_transparent = @\unspec@; @@ -13498,7 +13498,7 @@ \indexlibrarymember{operator()}{multiplies<>}% \begin{itemdecl} -template constexpr auto operator()(T&& t, U&& u) const +template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) * std::forward(u)); \end{itemdecl} @@ -13510,7 +13510,7 @@ \indexlibrary{\idxcode{divides}}% \begin{itemdecl} -template struct divides { +template struct divides { constexpr T operator()(const T& x, const T& y) const; }; \end{itemdecl} @@ -13526,8 +13526,8 @@ \indexlibrary{\idxcode{divides<>}}% \begin{itemdecl} -template <> struct divides { - template constexpr auto operator()(T&& t, U&& u) const +template<> struct divides { + template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) / std::forward(u)); using is_transparent = @\unspec@; @@ -13536,7 +13536,7 @@ \indexlibrarymember{operator()}{divides<>}% \begin{itemdecl} -template constexpr auto operator()(T&& t, U&& u) const +template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) / std::forward(u)); \end{itemdecl} @@ -13548,7 +13548,7 @@ \indexlibrary{\idxcode{modulus}}% \begin{itemdecl} -template struct modulus { +template struct modulus { constexpr T operator()(const T& x, const T& y) const; }; \end{itemdecl} @@ -13564,8 +13564,8 @@ \indexlibrary{\idxcode{modulus<>}}% \begin{itemdecl} -template <> struct modulus { - template constexpr auto operator()(T&& t, U&& u) const +template<> struct modulus { + template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) % std::forward(u)); using is_transparent = @\unspec@; @@ -13574,7 +13574,7 @@ \indexlibrarymember{operator()}{modulus<>}% \begin{itemdecl} -template constexpr auto operator()(T&& t, U&& u) const +template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) % std::forward(u)); \end{itemdecl} @@ -13586,7 +13586,7 @@ \indexlibrary{\idxcode{negate}}% \begin{itemdecl} -template struct negate { +template struct negate { constexpr T operator()(const T& x) const; }; \end{itemdecl} @@ -13602,8 +13602,8 @@ \indexlibrary{\idxcode{negate<>}}% \begin{itemdecl} -template <> struct negate { - template constexpr auto operator()(T&& t) const +template<> struct negate { + template constexpr auto operator()(T&& t) const -> decltype(-std::forward(t)); using is_transparent = @\unspec@; @@ -13612,7 +13612,7 @@ \indexlibrarymember{operator()}{negate<>}% \begin{itemdecl} -template constexpr auto operator()(T&& t) const +template constexpr auto operator()(T&& t) const -> decltype(-std::forward(t)); \end{itemdecl} @@ -13648,7 +13648,7 @@ \indexlibrary{\idxcode{equal_to}}% \begin{itemdecl} -template struct equal_to { +template struct equal_to { constexpr bool operator()(const T& x, const T& y) const; }; \end{itemdecl} @@ -13664,8 +13664,8 @@ \indexlibrary{\idxcode{equal_to<>}}% \begin{itemdecl} -template <> struct equal_to { - template constexpr auto operator()(T&& t, U&& u) const +template<> struct equal_to { + template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) == std::forward(u)); using is_transparent = @\unspec@; @@ -13674,7 +13674,7 @@ \indexlibrarymember{operator()}{equal_to<>}% \begin{itemdecl} -template constexpr auto operator()(T&& t, U&& u) const +template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) == std::forward(u)); \end{itemdecl} @@ -13686,7 +13686,7 @@ \indexlibrary{\idxcode{not_equal_to}}% \begin{itemdecl} -template struct not_equal_to { +template struct not_equal_to { constexpr bool operator()(const T& x, const T& y) const; }; \end{itemdecl} @@ -13702,8 +13702,8 @@ \indexlibrary{\idxcode{not_equal_to<>}}% \begin{itemdecl} -template <> struct not_equal_to { - template constexpr auto operator()(T&& t, U&& u) const +template<> struct not_equal_to { + template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) != std::forward(u)); using is_transparent = @\unspec@; @@ -13712,7 +13712,7 @@ \indexlibrarymember{operator()}{not_equal_to<>}% \begin{itemdecl} -template constexpr auto operator()(T&& t, U&& u) const +template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) != std::forward(u)); \end{itemdecl} @@ -13724,7 +13724,7 @@ \indexlibrary{\idxcode{greater}}% \begin{itemdecl} -template struct greater { +template struct greater { constexpr bool operator()(const T& x, const T& y) const; }; \end{itemdecl} @@ -13740,8 +13740,8 @@ \indexlibrary{\idxcode{greater<>}}% \begin{itemdecl} -template <> struct greater { - template constexpr auto operator()(T&& t, U&& u) const +template<> struct greater { + template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) > std::forward(u)); using is_transparent = @\unspec@; @@ -13750,7 +13750,7 @@ \indexlibrarymember{operator()}{greater<>}% \begin{itemdecl} -template constexpr auto operator()(T&& t, U&& u) const +template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) > std::forward(u)); \end{itemdecl} @@ -13762,7 +13762,7 @@ \indexlibrary{\idxcode{less}}% \begin{itemdecl} -template struct less { +template struct less { constexpr bool operator()(const T& x, const T& y) const; }; \end{itemdecl} @@ -13778,8 +13778,8 @@ \indexlibrary{\idxcode{less<>}}% \begin{itemdecl} -template <> struct less { - template constexpr auto operator()(T&& t, U&& u) const +template<> struct less { + template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) < std::forward(u)); using is_transparent = @\unspec@; @@ -13788,7 +13788,7 @@ \indexlibrarymember{operator()}{less<>}% \begin{itemdecl} -template constexpr auto operator()(T&& t, U&& u) const +template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) < std::forward(u)); \end{itemdecl} @@ -13800,7 +13800,7 @@ \indexlibrary{\idxcode{greater_equal}}% \begin{itemdecl} -template struct greater_equal { +template struct greater_equal { constexpr bool operator()(const T& x, const T& y) const; }; \end{itemdecl} @@ -13816,8 +13816,8 @@ \indexlibrary{\idxcode{greater_equal<>}}% \begin{itemdecl} -template <> struct greater_equal { - template constexpr auto operator()(T&& t, U&& u) const +template<> struct greater_equal { + template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) >= std::forward(u)); using is_transparent = @\unspec@; @@ -13826,7 +13826,7 @@ \indexlibrarymember{operator()}{greater_equal<>}% \begin{itemdecl} -template constexpr auto operator()(T&& t, U&& u) const +template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) >= std::forward(u)); \end{itemdecl} @@ -13838,7 +13838,7 @@ \indexlibrary{\idxcode{less_equal}}% \begin{itemdecl} -template struct less_equal { +template struct less_equal { constexpr bool operator()(const T& x, const T& y) const; }; \end{itemdecl} @@ -13854,8 +13854,8 @@ \indexlibrary{\idxcode{less_equal<>}}% \begin{itemdecl} -template <> struct less_equal { - template constexpr auto operator()(T&& t, U&& u) const +template<> struct less_equal { + template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) <= std::forward(u)); using is_transparent = @\unspec@; @@ -13864,7 +13864,7 @@ \indexlibrarymember{operator()}{less_equal<>}% \begin{itemdecl} -template constexpr auto operator()(T&& t, U&& u) const +template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) <= std::forward(u)); \end{itemdecl} @@ -13883,7 +13883,7 @@ \indexlibrary{\idxcode{logical_and}}% \begin{itemdecl} -template struct logical_and { +template struct logical_and { constexpr bool operator()(const T& x, const T& y) const; }; \end{itemdecl} @@ -13899,8 +13899,8 @@ \indexlibrary{\idxcode{logical_and<>}}% \begin{itemdecl} -template <> struct logical_and { - template constexpr auto operator()(T&& t, U&& u) const +template<> struct logical_and { + template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) && std::forward(u)); using is_transparent = @\unspec@; @@ -13909,7 +13909,7 @@ \indexlibrarymember{operator()}{logical_and<>}% \begin{itemdecl} -template constexpr auto operator()(T&& t, U&& u) const +template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) && std::forward(u)); \end{itemdecl} @@ -13921,7 +13921,7 @@ \indexlibrary{\idxcode{logical_or}}% \begin{itemdecl} -template struct logical_or { +template struct logical_or { constexpr bool operator()(const T& x, const T& y) const; }; \end{itemdecl} @@ -13937,8 +13937,8 @@ \indexlibrary{\idxcode{logical_or<>}}% \begin{itemdecl} -template <> struct logical_or { - template constexpr auto operator()(T&& t, U&& u) const +template<> struct logical_or { + template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) || std::forward(u)); using is_transparent = @\unspec@; @@ -13947,7 +13947,7 @@ \indexlibrarymember{operator()}{logical_or<>}% \begin{itemdecl} -template constexpr auto operator()(T&& t, U&& u) const +template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) || std::forward(u)); \end{itemdecl} @@ -13959,7 +13959,7 @@ \indexlibrary{\idxcode{logical_not}}% \begin{itemdecl} -template struct logical_not { +template struct logical_not { constexpr bool operator()(const T& x) const; }; \end{itemdecl} @@ -13975,8 +13975,8 @@ \indexlibrary{\idxcode{logical_not<>}}% \begin{itemdecl} -template <> struct logical_not { - template constexpr auto operator()(T&& t) const +template<> struct logical_not { + template constexpr auto operator()(T&& t) const -> decltype(!std::forward(t)); using is_transparent = @\unspec@; @@ -13985,7 +13985,7 @@ \indexlibrarymember{operator()}{logical_not<>}% \begin{itemdecl} -template constexpr auto operator()(T&& t) const +template constexpr auto operator()(T&& t) const -> decltype(!std::forward(t)); \end{itemdecl} @@ -14005,7 +14005,7 @@ \indexlibrary{\idxcode{bit_and}}% \begin{itemdecl} -template struct bit_and { +template struct bit_and { constexpr T operator()(const T& x, const T& y) const; }; \end{itemdecl} @@ -14021,8 +14021,8 @@ \indexlibrary{\idxcode{bit_and<>}}% \begin{itemdecl} -template <> struct bit_and { - template constexpr auto operator()(T&& t, U&& u) const +template<> struct bit_and { + template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) & std::forward(u)); using is_transparent = @\unspec@; @@ -14031,7 +14031,7 @@ \indexlibrarymember{operator()}{bit_and<>}% \begin{itemdecl} -template constexpr auto operator()(T&& t, U&& u) const +template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) & std::forward(u)); \end{itemdecl} @@ -14043,7 +14043,7 @@ \indexlibrary{\idxcode{bit_or}}% \begin{itemdecl} -template struct bit_or { +template struct bit_or { constexpr T operator()(const T& x, const T& y) const; }; \end{itemdecl} @@ -14059,8 +14059,8 @@ \indexlibrary{\idxcode{bit_or<>}}% \begin{itemdecl} -template <> struct bit_or { - template constexpr auto operator()(T&& t, U&& u) const +template<> struct bit_or { + template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) | std::forward(u)); using is_transparent = @\unspec@; @@ -14069,7 +14069,7 @@ \indexlibrarymember{operator()}{bit_or<>}% \begin{itemdecl} -template constexpr auto operator()(T&& t, U&& u) const +template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) | std::forward(u)); \end{itemdecl} @@ -14081,7 +14081,7 @@ \indexlibrary{\idxcode{bit_xor}}% \begin{itemdecl} -template struct bit_xor { +template struct bit_xor { constexpr T operator()(const T& x, const T& y) const; }; \end{itemdecl} @@ -14097,8 +14097,8 @@ \indexlibrary{\idxcode{bit_xor<>}}% \begin{itemdecl} -template <> struct bit_xor { - template constexpr auto operator()(T&& t, U&& u) const +template<> struct bit_xor { + template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) ^ std::forward(u)); using is_transparent = @\unspec@; @@ -14107,7 +14107,7 @@ \indexlibrarymember{operator()}{bit_xor<>}% \begin{itemdecl} -template constexpr auto operator()(T&& t, U&& u) const +template constexpr auto operator()(T&& t, U&& u) const -> decltype(std::forward(t) ^ std::forward(u)); \end{itemdecl} @@ -14118,7 +14118,7 @@ \rSec3[bitwise.operations.not]{Class template \tcode{bit_not}} \begin{itemdecl} -template struct bit_not { +template struct bit_not { constexpr T operator()(const T& x) const; }; \end{itemdecl} @@ -14134,8 +14134,8 @@ \indexlibrary{\idxcode{bit_not<>}}% \begin{itemdecl} -template <> struct bit_not { - template constexpr auto operator()(T&& t) const +template<> struct bit_not { + template constexpr auto operator()(T&& t) const -> decltype(~std::forward(t)); using is_transparent = @\unspec@; @@ -14144,7 +14144,7 @@ \indexlibrarymember{operator()}{bit_not<>}% \begin{itemdecl} -template constexpr auto operator()(T&&) const +template constexpr auto operator()(T&&) const -> decltype(~std::forward(t)); \end{itemdecl} @@ -14157,7 +14157,7 @@ \indexlibrary{\idxcode{not_fn}}% \begin{itemdecl} -template @\unspec@ not_fn(F&& f); +template @\unspec@ not_fn(F&& f); \end{itemdecl} \begin{itemdescr} @@ -14579,20 +14579,20 @@ template function(F) -> function<@\seebelow@>; // \ref{func.wrap.func.nullptr}, Null pointer comparisons - template + template bool operator==(const function&, nullptr_t) noexcept; - template + template bool operator==(nullptr_t, const function&) noexcept; - template + template bool operator!=(const function&, nullptr_t) noexcept; - template + template bool operator!=(nullptr_t, const function&) noexcept; // \ref{func.wrap.func.alg}, specialized algorithms - template + template void swap(function&, function&) noexcept; } \end{codeblock} @@ -14898,9 +14898,9 @@ \indexlibrarymember{operator==}{function}% \begin{itemdecl} -template +template bool operator==(const function& f, nullptr_t) noexcept; -template +template bool operator==(nullptr_t, const function& f) noexcept; \end{itemdecl} @@ -14910,9 +14910,9 @@ \indexlibrarymember{operator"!=}{function}% \begin{itemdecl} -template +template bool operator!=(const function& f, nullptr_t) noexcept; -template +template bool operator!=(nullptr_t, const function& f) noexcept; \end{itemdecl} @@ -14969,13 +14969,13 @@ \indexlibrary{\idxcode{default_searcher}}% \begin{codeblock} -template > +template> class default_searcher { public: default_searcher(ForwardIterator1 pat_first, ForwardIterator1 pat_last, BinaryPredicate pred = BinaryPredicate()); - template + template pair operator()(ForwardIterator2 first, ForwardIterator2 last) const; @@ -15028,9 +15028,9 @@ \indexlibrary{\idxcode{boyer_moore_searcher}}% \begin{codeblock} -template ::value_type>, - class BinaryPredicate = equal_to<>> +template::value_type>, + class BinaryPredicate = equal_to<>> class boyer_moore_searcher { public: boyer_moore_searcher(RandomAccessIterator1 pat_first, @@ -15038,7 +15038,7 @@ Hash hf = Hash(), BinaryPredicate pred = BinaryPredicate()); - template + template pair operator()(RandomAccessIterator2 first, RandomAccessIterator2 last) const; @@ -15084,7 +15084,7 @@ \indexlibrarymember{operator()}{boyer_moore_searcher}% \begin{itemdecl} -template +template pair operator()(RandomAccessIterator2 first, RandomAccessIterator2 last) const; \end{itemdecl} @@ -15121,9 +15121,9 @@ \indexlibrary{\idxcode{boyer_moore_horspool_searcher}}% \begin{codeblock} -template ::value_type>, - class BinaryPredicate = equal_to<>> +template::value_type>, + class BinaryPredicate = equal_to<>> class boyer_moore_horspool_searcher { public: boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, @@ -15131,7 +15131,7 @@ Hash hf = Hash(), BinaryPredicate pred = BinaryPredicate()); - template + template pair operator()(RandomAccessIterator2 first, RandomAccessIterator2 last) const; @@ -15177,7 +15177,7 @@ \indexlibrarymember{operator()}{boyer_moore_horspool_searcher}% \begin{itemdecl} -template +template pair operator()(RandomAccessIterator2 first, RandomAccessIterator2 last) const; \end{itemdecl} @@ -15335,202 +15335,202 @@ \begin{codeblock} namespace std { // \ref{meta.help}, helper class - template struct integral_constant; + template struct integral_constant; - template + template using bool_constant = integral_constant; using true_type = bool_constant; using false_type = bool_constant; // \ref{meta.unary.cat}, primary type categories - template struct is_void; - template struct is_null_pointer; - template struct is_integral; - template struct is_floating_point; - template struct is_array; - template struct is_pointer; - template struct is_lvalue_reference; - template struct is_rvalue_reference; - template struct is_member_object_pointer; - template struct is_member_function_pointer; - template struct is_enum; - template struct is_union; - template struct is_class; - template struct is_function; + template struct is_void; + template struct is_null_pointer; + template struct is_integral; + template struct is_floating_point; + template struct is_array; + template struct is_pointer; + template struct is_lvalue_reference; + template struct is_rvalue_reference; + template struct is_member_object_pointer; + template struct is_member_function_pointer; + template struct is_enum; + template struct is_union; + template struct is_class; + template struct is_function; // \ref{meta.unary.comp}, composite type categories - template struct is_reference; - template struct is_arithmetic; - template struct is_fundamental; - template struct is_object; - template struct is_scalar; - template struct is_compound; - template struct is_member_pointer; + template struct is_reference; + template struct is_arithmetic; + template struct is_fundamental; + template struct is_object; + template struct is_scalar; + template struct is_compound; + template struct is_member_pointer; // \ref{meta.unary.prop}, type properties - template struct is_const; - template struct is_volatile; - template struct is_trivial; - template struct is_trivially_copyable; - template struct is_standard_layout; - template struct is_empty; - template struct is_polymorphic; - template struct is_abstract; - template struct is_final; - template struct is_aggregate; + template struct is_const; + template struct is_volatile; + template struct is_trivial; + template struct is_trivially_copyable; + template struct is_standard_layout; + template struct is_empty; + template struct is_polymorphic; + template struct is_abstract; + template struct is_final; + template struct is_aggregate; - template struct is_signed; - template struct is_unsigned; + template struct is_signed; + template struct is_unsigned; - template struct is_constructible; - template struct is_default_constructible; - template struct is_copy_constructible; - template struct is_move_constructible; + template struct is_constructible; + template struct is_default_constructible; + template struct is_copy_constructible; + template struct is_move_constructible; - template struct is_assignable; - template struct is_copy_assignable; - template struct is_move_assignable; + template struct is_assignable; + template struct is_copy_assignable; + template struct is_move_assignable; - template struct is_swappable_with; - template struct is_swappable; + template struct is_swappable_with; + template struct is_swappable; - template struct is_destructible; + template struct is_destructible; - template struct is_trivially_constructible; - template struct is_trivially_default_constructible; - template struct is_trivially_copy_constructible; - template struct is_trivially_move_constructible; + template struct is_trivially_constructible; + template struct is_trivially_default_constructible; + template struct is_trivially_copy_constructible; + template struct is_trivially_move_constructible; - template struct is_trivially_assignable; - template struct is_trivially_copy_assignable; - template struct is_trivially_move_assignable; - template struct is_trivially_destructible; + template struct is_trivially_assignable; + template struct is_trivially_copy_assignable; + template struct is_trivially_move_assignable; + template struct is_trivially_destructible; - template struct is_nothrow_constructible; - template struct is_nothrow_default_constructible; - template struct is_nothrow_copy_constructible; - template struct is_nothrow_move_constructible; + template struct is_nothrow_constructible; + template struct is_nothrow_default_constructible; + template struct is_nothrow_copy_constructible; + template struct is_nothrow_move_constructible; - template struct is_nothrow_assignable; - template struct is_nothrow_copy_assignable; - template struct is_nothrow_move_assignable; + template struct is_nothrow_assignable; + template struct is_nothrow_copy_assignable; + template struct is_nothrow_move_assignable; - template struct is_nothrow_swappable_with; - template struct is_nothrow_swappable; + template struct is_nothrow_swappable_with; + template struct is_nothrow_swappable; - template struct is_nothrow_destructible; + template struct is_nothrow_destructible; - template struct has_virtual_destructor; + template struct has_virtual_destructor; - template struct has_unique_object_representations; + template struct has_unique_object_representations; // \ref{meta.unary.prop.query}, type property queries - template struct alignment_of; - template struct rank; - template struct extent; + template struct alignment_of; + template struct rank; + template struct extent; // \ref{meta.rel}, type relations - template struct is_same; - template struct is_base_of; - template struct is_convertible; + template struct is_same; + template struct is_base_of; + template struct is_convertible; - template struct is_invocable; - template struct is_invocable_r; + template struct is_invocable; + template struct is_invocable_r; - template struct is_nothrow_invocable; - template struct is_nothrow_invocable_r; + template struct is_nothrow_invocable; + template struct is_nothrow_invocable_r; // \ref{meta.trans.cv}, const-volatile modifications - template struct remove_const; - template struct remove_volatile; - template struct remove_cv; - template struct add_const; - template struct add_volatile; - template struct add_cv; - - template + template struct remove_const; + template struct remove_volatile; + template struct remove_cv; + template struct add_const; + template struct add_volatile; + template struct add_cv; + + template using remove_const_t = typename remove_const::type; - template + template using remove_volatile_t = typename remove_volatile::type; - template + template using remove_cv_t = typename remove_cv::type; - template + template using add_const_t = typename add_const::type; - template + template using add_volatile_t = typename add_volatile::type; - template + template using add_cv_t = typename add_cv::type; // \ref{meta.trans.ref}, reference modifications - template struct remove_reference; - template struct add_lvalue_reference; - template struct add_rvalue_reference; + template struct remove_reference; + template struct add_lvalue_reference; + template struct add_rvalue_reference; - template + template using remove_reference_t = typename remove_reference::type; - template + template using add_lvalue_reference_t = typename add_lvalue_reference::type; - template + template using add_rvalue_reference_t = typename add_rvalue_reference::type; // \ref{meta.trans.sign}, sign modifications - template struct make_signed; - template struct make_unsigned; + template struct make_signed; + template struct make_unsigned; - template + template using make_signed_t = typename make_signed::type; - template + template using make_unsigned_t = typename make_unsigned::type; // \ref{meta.trans.arr}, array modifications - template struct remove_extent; - template struct remove_all_extents; + template struct remove_extent; + template struct remove_all_extents; - template + template using remove_extent_t = typename remove_extent::type; - template + template using remove_all_extents_t = typename remove_all_extents::type; // \ref{meta.trans.ptr}, pointer modifications - template struct remove_pointer; - template struct add_pointer; + template struct remove_pointer; + template struct add_pointer; - template + template using remove_pointer_t = typename remove_pointer::type; - template + template using add_pointer_t = typename add_pointer::type; // \ref{meta.trans.other}, other transformations - template // see \ref{meta.trans.other} + template // see \ref{meta.trans.other} struct aligned_storage; - template struct aligned_union; - template struct remove_cvref; - template struct decay; - template struct enable_if; - template struct conditional; - template struct common_type; - template struct underlying_type; - template struct invoke_result; - - template // see \ref{meta.trans.other} + template struct aligned_union; + template struct remove_cvref; + template struct decay; + template struct enable_if; + template struct conditional; + template struct common_type; + template struct underlying_type; + template struct invoke_result; + + template // see \ref{meta.trans.other} using aligned_storage_t = typename aligned_storage::type; - template + template using aligned_union_t = typename aligned_union::type; - template + template using remove_cvref_t = typename remove_cvref::type; - template + template using decay_t = typename decay::type; - template + template using enable_if_t = typename enable_if::type; - template + template using conditional_t = typename conditional::type; - template + template using common_type_t = typename common_type::type; - template + template using underlying_type_t = typename underlying_type::type; - template + template using invoke_result_t = typename invoke_result::type; - template + template using void_t = void; // \ref{meta.logical}, logical operator traits @@ -15546,170 +15546,170 @@ }; // \ref{meta.unary.cat}, primary type categories - template + template inline constexpr bool is_void_v = is_void::value; - template + template inline constexpr bool is_null_pointer_v = is_null_pointer::value; - template + template inline constexpr bool is_integral_v = is_integral::value; - template + template inline constexpr bool is_floating_point_v = is_floating_point::value; - template + template inline constexpr bool is_array_v = is_array::value; - template + template inline constexpr bool is_pointer_v = is_pointer::value; - template + template inline constexpr bool is_lvalue_reference_v = is_lvalue_reference::value; - template + template inline constexpr bool is_rvalue_reference_v = is_rvalue_reference::value; - template + template inline constexpr bool is_member_object_pointer_v = is_member_object_pointer::value; - template + template inline constexpr bool is_member_function_pointer_v = is_member_function_pointer::value; - template + template inline constexpr bool is_enum_v = is_enum::value; - template + template inline constexpr bool is_union_v = is_union::value; - template + template inline constexpr bool is_class_v = is_class::value; - template + template inline constexpr bool is_function_v = is_function::value; // \ref{meta.unary.comp}, composite type categories - template + template inline constexpr bool is_reference_v = is_reference::value; - template + template inline constexpr bool is_arithmetic_v = is_arithmetic::value; - template + template inline constexpr bool is_fundamental_v = is_fundamental::value; - template + template inline constexpr bool is_object_v = is_object::value; - template + template inline constexpr bool is_scalar_v = is_scalar::value; - template + template inline constexpr bool is_compound_v = is_compound::value; - template + template inline constexpr bool is_member_pointer_v = is_member_pointer::value; // \ref{meta.unary.prop}, type properties - template + template inline constexpr bool is_const_v = is_const::value; - template + template inline constexpr bool is_volatile_v = is_volatile::value; - template + template inline constexpr bool is_trivial_v = is_trivial::value; - template + template inline constexpr bool is_trivially_copyable_v = is_trivially_copyable::value; - template + template inline constexpr bool is_standard_layout_v = is_standard_layout::value; - template + template inline constexpr bool is_empty_v = is_empty::value; - template + template inline constexpr bool is_polymorphic_v = is_polymorphic::value; - template + template inline constexpr bool is_abstract_v = is_abstract::value; - template + template inline constexpr bool is_final_v = is_final::value; - template + template inline constexpr bool is_aggregate_v = is_aggregate::value; - template + template inline constexpr bool is_signed_v = is_signed::value; - template + template inline constexpr bool is_unsigned_v = is_unsigned::value; - template + template inline constexpr bool is_constructible_v = is_constructible::value; - template + template inline constexpr bool is_default_constructible_v = is_default_constructible::value; - template + template inline constexpr bool is_copy_constructible_v = is_copy_constructible::value; - template + template inline constexpr bool is_move_constructible_v = is_move_constructible::value; - template + template inline constexpr bool is_assignable_v = is_assignable::value; - template + template inline constexpr bool is_copy_assignable_v = is_copy_assignable::value; - template + template inline constexpr bool is_move_assignable_v = is_move_assignable::value; - template + template inline constexpr bool is_swappable_with_v = is_swappable_with::value; - template + template inline constexpr bool is_swappable_v = is_swappable::value; - template + template inline constexpr bool is_destructible_v = is_destructible::value; - template + template inline constexpr bool is_trivially_constructible_v = is_trivially_constructible::value; - template + template inline constexpr bool is_trivially_default_constructible_v = is_trivially_default_constructible::value; - template + template inline constexpr bool is_trivially_copy_constructible_v = is_trivially_copy_constructible::value; - template + template inline constexpr bool is_trivially_move_constructible_v = is_trivially_move_constructible::value; - template + template inline constexpr bool is_trivially_assignable_v = is_trivially_assignable::value; - template + template inline constexpr bool is_trivially_copy_assignable_v = is_trivially_copy_assignable::value; - template + template inline constexpr bool is_trivially_move_assignable_v = is_trivially_move_assignable::value; - template + template inline constexpr bool is_trivially_destructible_v = is_trivially_destructible::value; - template + template inline constexpr bool is_nothrow_constructible_v = is_nothrow_constructible::value; - template + template inline constexpr bool is_nothrow_default_constructible_v = is_nothrow_default_constructible::value; - template + template inline constexpr bool is_nothrow_copy_constructible_v = is_nothrow_copy_constructible::value; - template + template inline constexpr bool is_nothrow_move_constructible_v = is_nothrow_move_constructible::value; - template + template inline constexpr bool is_nothrow_assignable_v = is_nothrow_assignable::value; - template + template inline constexpr bool is_nothrow_copy_assignable_v = is_nothrow_copy_assignable::value; - template + template inline constexpr bool is_nothrow_move_assignable_v = is_nothrow_move_assignable::value; - template + template inline constexpr bool is_nothrow_swappable_with_v = is_nothrow_swappable_with::value; - template + template inline constexpr bool is_nothrow_swappable_v = is_nothrow_swappable::value; - template + template inline constexpr bool is_nothrow_destructible_v = is_nothrow_destructible::value; - template + template inline constexpr bool has_virtual_destructor_v = has_virtual_destructor::value; - template + template inline constexpr bool has_unique_object_representations_v = has_unique_object_representations::value; // \ref{meta.unary.prop.query}, type property queries - template + template inline constexpr size_t alignment_of_v = alignment_of::value; - template + template inline constexpr size_t rank_v = rank::value; - template + template inline constexpr size_t extent_v = extent::value; // \ref{meta.rel}, type relations - template + template inline constexpr bool is_same_v = is_same::value; - template + template inline constexpr bool is_base_of_v = is_base_of::value; - template + template inline constexpr bool is_convertible_v = is_convertible::value; - template + template inline constexpr bool is_invocable_v = is_invocable::value; - template + template inline constexpr bool is_invocable_r_v = is_invocable_r::value; - template + template inline constexpr bool is_nothrow_invocable_v = is_nothrow_invocable::value; - template + template inline constexpr bool is_nothrow_invocable_r_v = is_nothrow_invocable_r::value; @@ -15736,7 +15736,7 @@ \indexlibrarymember{value_type}{integral_constant}% \begin{codeblock} namespace std { - template struct integral_constant { + template struct integral_constant { static constexpr T value = v; using value_type = T; @@ -15798,63 +15798,63 @@ \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead \indexlibrary{\idxcode{is_void}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_void;} & \tcode{T} is \tcode{void} & \\ \rowsep \indexlibrary{\idxcode{is_null_pointer}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_null_pointer;} & \tcode{T} is \tcode{nullptr_t}\iref{basic.fundamental} & \\ \rowsep \indexlibrary{\idxcode{is_integral}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_integral;} & \tcode{T} is an integral type\iref{basic.fundamental} & \\ \rowsep \indexlibrary{\idxcode{is_floating_point}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_floating_point;} & \tcode{T} is a floating-point type\iref{basic.fundamental} & \\ \rowsep \indexlibrary{\idxcode{is_array}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_array;} & \tcode{T} is an array type\iref{basic.compound} of known or unknown extent & Class template \tcode{array}\iref{array} is not an array type. \\ \rowsep \indexlibrary{\idxcode{is_pointer}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_pointer;} & \tcode{T} is a pointer type\iref{basic.compound} & Includes pointers to functions but not pointers to non-static members. \\ \rowsep \indexlibrary{\idxcode{is_lvalue_reference}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_lvalue_reference;} & \tcode{T} is an lvalue reference type\iref{dcl.ref} & \\ \rowsep \indexlibrary{\idxcode{is_rvalue_reference}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_rvalue_reference;} & \tcode{T} is an rvalue reference type\iref{dcl.ref} & \\ \rowsep \indexlibrary{\idxcode{is_member_object_pointer}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_member_object_pointer;}& \tcode{T} is a pointer to data member & \\ \rowsep \indexlibrary{\idxcode{is_member_function_pointer}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_member_function_pointer;}& \tcode{T} is a pointer to member function & \\ \rowsep \indexlibrary{\idxcode{is_enum}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_enum;} & \tcode{T} is an enumeration type\iref{basic.compound} & \\ \rowsep \indexlibrary{\idxcode{is_union}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_union;} & \tcode{T} is a union type\iref{basic.compound} & \\ \rowsep \indexlibrary{\idxcode{is_class}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_class;} & \tcode{T} is a non-union class type\iref{basic.compound} & \\ \rowsep \indexlibrary{\idxcode{is_function}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_function;} & \tcode{T} is a function type\iref{basic.compound} & \\ \end{libreqtab3e} @@ -15878,31 +15878,31 @@ \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead \indexlibrary{\idxcode{is_reference}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_reference;} & \tcode{T} is an lvalue reference or an rvalue reference & \\ \rowsep \indexlibrary{\idxcode{is_arithmetic}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_arithmetic;} & \tcode{T} is an arithmetic type\iref{basic.fundamental} & \\ \rowsep \indexlibrary{\idxcode{is_fundamental}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_fundamental;} & \tcode{T} is a fundamental type\iref{basic.fundamental} & \\ \rowsep \indexlibrary{\idxcode{is_object}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_object;} & \tcode{T} is an object type\iref{basic.types} & \\ \rowsep \indexlibrary{\idxcode{is_scalar}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_scalar;} & \tcode{T} is a scalar type\iref{basic.types} & \\ \rowsep \indexlibrary{\idxcode{is_compound}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_compound;} & \tcode{T} is a compound type\iref{basic.compound} & \\ \rowsep \indexlibrary{\idxcode{is_member_pointer}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_member_pointer;} & \tcode{T} is a pointer-to-member type\iref{basic.compound} & \\ \end{libreqtab3b} @@ -15942,39 +15942,39 @@ \endhead \indexlibrary{\idxcode{is_const}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_const;} & \tcode{T} is const-qualified\iref{basic.type.qualifier} & \\ \rowsep \indexlibrary{\idxcode{is_volatile}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_volatile;} & \tcode{T} is volatile-qualified\iref{basic.type.qualifier} & \\ \rowsep \indexlibrary{\idxcode{is_trivial}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_trivial;} & \tcode{T} is a trivial type\iref{basic.types} & \tcode{remove_all_extents_t} shall be a complete type or \cv{}~\tcode{void}. \\ \rowsep \indexlibrary{\idxcode{is_trivially_copyable}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_trivially_copyable;} & \tcode{T} is a trivially copyable type\iref{basic.types} & \tcode{remove_all_extents_t} shall be a complete type or \cv{}~\tcode{void}. \\ \rowsep \indexlibrary{\idxcode{is_standard_layout}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_standard_layout;} & \tcode{T} is a standard-layout type\iref{basic.types} & \tcode{remove_all_extents_t} shall be a complete type or \cv{}~\tcode{void}. \\ \rowsep \indexlibrary{\idxcode{is_empty}!class}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_empty;} & \tcode{T} is a class type, but not a union type, with no non-static data members other than bit-fields of length 0, no virtual member functions, @@ -15983,19 +15983,19 @@ If \tcode{T} is a non-union class type, \tcode{T} shall be a complete type. \\ \rowsep \indexlibrary{\idxcode{is_polymorphic}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_polymorphic;} & \tcode{T} is a polymorphic class\iref{class.virtual} & If \tcode{T} is a non-union class type, \tcode{T} shall be a complete type. \\ \rowsep \indexlibrary{\idxcode{is_abstract}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_abstract;} & \tcode{T} is an abstract class\iref{class.abstract} & If \tcode{T} is a non-union class type, \tcode{T} shall be a complete type. \\ \rowsep \indexlibrary{\idxcode{is_final}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_final;} & \tcode{T} is a class type marked with the \grammarterm{class-virt-specifier} \tcode{final}\iref{class}. \begin{note} A union is a class type that @@ -16003,27 +16003,27 @@ If \tcode{T} is a class type, \tcode{T} shall be a complete type. \\ \rowsep \indexlibrary{\idxcode{is_aggregate}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_aggregate;} & \tcode{T} is an aggregate type\iref{dcl.init.aggr} & \tcode{remove_all_extents_t} shall be a complete type or \cv~\tcode{void}. \\ \rowsep \indexlibrary{\idxcode{is_signed}!class}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_signed;} & If \tcode{is_arithmetic_v} is \tcode{true}, the same result as \tcode{T(-1) < T(0)}; otherwise, \tcode{false} & \\ \rowsep \indexlibrary{\idxcode{is_unsigned}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_unsigned;} & If \tcode{is_arithmetic_v} is \tcode{true}, the same result as \tcode{T(0) < T(-1)}; otherwise, \tcode{false} & \\ \rowsep \indexlibrary{\idxcode{is_constructible}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_constructible;} & For a function type \tcode{T} or for a \cv{}~\tcode{void} type \tcode{T}, @@ -16034,14 +16034,14 @@ or arrays of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_default_constructible}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_default_constructible;} & \tcode{is_constructible_v} is \tcode{true}. & \tcode{T} shall be a complete type, \cv{}~\tcode{void}, or an array of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_copy_constructible}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_copy_constructible;} & For a referenceable type \tcode{T}\iref{defns.referenceable}, the same result as \tcode{is_constructible_v}, otherwise \tcode{false}. & @@ -16049,7 +16049,7 @@ or an array of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_move_constructible}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_move_constructible;} & For a referenceable type \tcode{T}, the same result as \tcode{is_constructible_v}, otherwise \tcode{false}. & @@ -16057,7 +16057,7 @@ or an array of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_assignable}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_assignable;} & The expression \tcode{declval() =} \tcode{declval()} is well-formed when treated as an unevaluated @@ -16072,7 +16072,7 @@ or arrays of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_copy_assignable}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_copy_assignable;} & For a referenceable type \tcode{T}, the same result as \tcode{is_assignable_v}, otherwise \tcode{false}. & @@ -16080,7 +16080,7 @@ or an array of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_move_assignable}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_move_assignable;} & For a referenceable type \tcode{T}, the same result as \tcode{is_assignable_v}, otherwise \tcode{false}. & @@ -16088,7 +16088,7 @@ or an array of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_swappable_with}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_swappable_with;} & The expressions \tcode{swap(declval(), declval())} and \tcode{swap(declval(), declval())} are each well-formed @@ -16112,7 +16112,7 @@ arrays of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_swappable}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_swappable;} & For a referenceable type \tcode{T}, the same result as \tcode{is_swappable_with_v}, @@ -16122,7 +16122,7 @@ an array of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_destructible}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_destructible;} & Either \tcode{T} is a reference type, or \tcode{T} is a complete object type @@ -16136,7 +16136,7 @@ or an array of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_trivially_constructible}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct}\br \tcode{is_trivially_constructible;} & \tcode{is_constructible_v}\br +\tcode{template}\br \tcode{struct is_trivially_default_constructible;} & \tcode{is_trivially_constructible_v} is \tcode{true}. & \tcode{T} shall be a complete type, @@ -16155,7 +16155,7 @@ bound. \\ \rowsep \indexlibrary{\idxcode{is_trivially_copy_constructible}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_trivially_copy_constructible;} & For a referenceable type \tcode{T}, the same result as \tcode{is_trivially_constructible_v}, otherwise \tcode{false}. & @@ -16164,7 +16164,7 @@ bound. \\ \rowsep \indexlibrary{\idxcode{is_trivially_move_constructible}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_trivially_move_constructible;} & For a referenceable type \tcode{T}, the same result as \tcode{is_trivially_constructible_v}, otherwise \tcode{false}. & @@ -16173,7 +16173,7 @@ bound. \\ \rowsep \indexlibrary{\idxcode{is_trivially_assignable}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_trivially_assignable;} & \tcode{is_assignable_v} is \tcode{true} and the assignment, as defined by \tcode{is_assignable}, is known to call no operation that is not trivial @@ -16182,7 +16182,7 @@ or arrays of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_trivially_copy_assignable}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_trivially_copy_assignable;} & For a referenceable type \tcode{T}, the same result as \tcode{is_trivially_assignable_v}, otherwise \tcode{false}. & @@ -16191,7 +16191,7 @@ bound. \\ \rowsep \indexlibrary{\idxcode{is_trivially_move_assignable}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_trivially_move_assignable;} & For a referenceable type \tcode{T}, the same result as \tcode{is_trivially_assignable_v}, otherwise \tcode{false}. & @@ -16199,7 +16199,7 @@ \cv{}~\tcode{void}, or an array of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_trivially_destructible}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_trivially_destructible;} & \tcode{is_destructible_v} is \tcode{true} and \tcode{remove_all_extents_t} is either a non-class type or @@ -16209,7 +16209,7 @@ bound. \\ \rowsep \indexlibrary{\idxcode{is_nothrow_constructible}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_nothrow_constructible;} & \tcode{is_constructible_v} is \tcode{true} and the @@ -16221,7 +16221,7 @@ or arrays of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_nothrow_default_constructible}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_nothrow_default_constructible;} & \tcode{is_nothrow_constructible_v} is \tcode{true}. & \tcode{T} shall be a complete type, @@ -16229,7 +16229,7 @@ bound. \\ \rowsep \indexlibrary{\idxcode{is_nothrow_copy_constructible}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_nothrow_copy_constructible;} & For a referenceable type \tcode{T}, the same result as \tcode{is_nothrow_constructible_v}, otherwise \tcode{false}. & @@ -16238,7 +16238,7 @@ bound. \\ \rowsep \indexlibrary{\idxcode{is_nothrow_move_constructible}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_nothrow_move_constructible;} & For a referenceable type \tcode{T}, the same result as \tcode{is_nothrow_constructible_v}, otherwise \tcode{false}. & @@ -16246,7 +16246,7 @@ \cv{}~\tcode{void}, or an array of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_nothrow_assignable}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_nothrow_assignable;} & \tcode{is_assignable_v} is \tcode{true} and the assignment is known not to throw any exceptions\iref{expr.unary.noexcept}. & @@ -16254,7 +16254,7 @@ or arrays of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_nothrow_copy_assignable}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_nothrow_copy_assignable;} & For a referenceable type \tcode{T}, the same result as \tcode{is_nothrow_assignable_v}, otherwise \tcode{false}. & @@ -16263,7 +16263,7 @@ bound. \\ \rowsep \indexlibrary{\idxcode{is_nothrow_move_assignable}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_nothrow_move_assignable;} & For a referenceable type \tcode{T}, the same result as \tcode{is_nothrow_assignable_v}, otherwise \tcode{false}. & @@ -16272,7 +16272,7 @@ bound. \\ \rowsep \indexlibrary{\idxcode{is_nothrow_swappable_with}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_nothrow_swappable_with;} & \tcode{is_swappable_with_v} is \tcode{true} and each \tcode{swap} expression of the definition of @@ -16283,7 +16283,7 @@ arrays of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_nothrow_swappable}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_nothrow_swappable;} & For a referenceable type \tcode{T}, the same result as \tcode{is_nothrow_swappable_with_v}, @@ -16293,7 +16293,7 @@ an array of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_nothrow_destructible}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_nothrow_destructible;} & \tcode{is_destructible_v} is \tcode{true} and the indicated destructor is known not to throw any exceptions\iref{expr.unary.noexcept}. & @@ -16302,13 +16302,13 @@ bound. \\ \rowsep \indexlibrary{\idxcode{has_virtual_destructor}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct has_virtual_destructor;} & \tcode{T} has a virtual destructor\iref{class.dtor} & If \tcode{T} is a non-union class type, \tcode{T} shall be a complete type. \\ \rowsep \indexlibrary{\idxcode{has_unique_object_representations}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct has_unique_object_representations;} & For an array type \tcode{T}, the same result as \tcode{has_unique_object_representations_v>}, @@ -16409,20 +16409,20 @@ \endhead \indexlibrary{\idxcode{alignment_of}}% -\tcode{template \br +\tcode{template\br struct alignment_of;} & \tcode{alignof(T)}.\br \requires{} \tcode{alignof(T)} shall be a valid expression\iref{expr.alignof} \\ \rowsep \indexlibrary{\idxcode{rank}}% -\tcode{template \br +\tcode{template\br struct rank;} & If \tcode{T} names an array type, an integer value representing the number of dimensions of \tcode{T}; otherwise, 0. \\ \rowsep \indexlibrary{\idxcode{extent}}% -\tcode{template \br struct extent;} & If \tcode{T} is not an array type, or if it has rank less @@ -16482,12 +16482,12 @@ \topline \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead -\tcode{template }\br +\tcode{template}\br \tcode{struct is_same;} & \tcode{T} and \tcode{U} name the same type with the same cv-qualifications & \\ \rowsep \indexlibrary{\idxcode{is_base_of}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_base_of;} & \tcode{Base} is a base class of \tcode{Derived}\iref{class.derived} without regard to cv-qualifiers @@ -16503,7 +16503,7 @@ are, nonetheless, base classes. \end{note} \\ \rowsep \indexlibrary{\idxcode{is_convertible}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_convertible;} & \seebelow & \tcode{From} and \tcode{To} shall be complete @@ -16511,7 +16511,7 @@ bound, or \cv{}~\tcode{void} types. \\ \rowsep \indexlibrary{\idxcode{is_invocable}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_invocable;} & The expression \tcode{\placeholdernc{INVOKE}(declval(), declval()...)} is well-formed when treated as an unevaluated operand & @@ -16520,7 +16520,7 @@ arrays of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_invocable_r}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_invocable_r;} & The expression \tcode{\placeholdernc{INVOKE}(declval(), declval()...)} is well-formed when treated as an unevaluated operand & @@ -16529,7 +16529,7 @@ arrays of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_nothrow_invocable}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_nothrow_invocable;} & \tcode{is_invocable_v<}\br\tcode{Fn, ArgTypes...>} is \tcode{true} and the expression \tcode{\placeholdernc{INVOKE}(declval(), declval()...)} @@ -16539,7 +16539,7 @@ arrays of unknown bound. \\ \rowsep \indexlibrary{\idxcode{is_nothrow_invocable_r}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct is_nothrow_invocable_r;} & \tcode{is_invocable_r_v<}\br\tcode{R, Fn, ArgTypes...>} is \tcode{true} and the expression \tcode{\placeholdernc{INVOKE}(declval(), declval()...)} @@ -16620,7 +16620,7 @@ \endhead \indexlibrary{\idxcode{remove_const}}% -\tcode{template \br +\tcode{template\br struct remove_const;} & The member typedef \tcode{type} names the same type as \tcode{T} @@ -16630,7 +16630,7 @@ \tcode{const int*}. \end{example} \\ \rowsep \indexlibrary{\idxcode{remove_volatile}}% -\tcode{template \br +\tcode{template\br struct remove_volatile;} & The member typedef \tcode{type} names the same type as \tcode{T} @@ -16641,7 +16641,7 @@ \end{example} \\ \rowsep \indexlibrary{\idxcode{remove_cv}}% -\tcode{template \br +\tcode{template\br struct remove_cv;} & The member typedef \tcode{type} shall be the same as \tcode{T} except that any top-level cv-qualifier has been removed. @@ -16650,7 +16650,7 @@ evaluates to \tcode{const volatile int*}. \end{example} \\ \rowsep \indexlibrary{\idxcode{add_const}}% -\tcode{template \br +\tcode{template\br struct add_const;} & If \tcode{T} is a reference, function, or top-level const-qualified type, then \tcode{type} names @@ -16658,7 +16658,7 @@ \tcode{T const}. \\ \rowsep \indexlibrary{\idxcode{add_volatile}}% -\tcode{template \br +\tcode{template\br struct add_volatile;} & If \tcode{T} is a reference, function, or top-level volatile-qualified type, then \tcode{type} names @@ -16666,7 +16666,7 @@ \tcode{T volatile}. \\ \rowsep \indexlibrary{\idxcode{add_cv}}% -\tcode{template \br +\tcode{template\br struct add_cv;} & The member typedef \tcode{type} names the same type as @@ -16685,14 +16685,14 @@ \endhead \indexlibrary{\idxcode{remove_reference}}% -\tcode{template \br +\tcode{template\br struct remove_reference;} & If \tcode{T} has type ``reference to \tcode{T1}'' then the member typedef \tcode{type} names \tcode{T1}; otherwise, \tcode{type} names \tcode{T}.\\ \rowsep \indexlibrary{\idxcode{add_lvalue_reference}}% -\tcode{template \br +\tcode{template\br struct add_lvalue_reference;} & If \tcode{T} names a referenceable type\iref{defns.referenceable} then the member typedef \tcode{type} names \tcode{T\&}; @@ -16702,7 +16702,7 @@ \end{note}\\ \rowsep \indexlibrary{\idxcode{add_rvalue_reference}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct add_rvalue_reference;} & If \tcode{T} names a referenceable type then the member typedef \tcode{type} names \tcode{T\&\&}; @@ -16724,7 +16724,7 @@ \endhead \indexlibrary{\idxcode{make_signed}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct make_signed;} & If \tcode{T} names a (possibly cv-qualified) signed integer type\iref{basic.fundamental} then the member typedef @@ -16741,7 +16741,7 @@ but not a \tcode{bool} type.\\ \rowsep \indexlibrary{\idxcode{make_unsigned}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct make_unsigned;} & If \tcode{T} names a (possibly cv-qualified) unsigned integer type\iref{basic.fundamental} then the member typedef @@ -16769,7 +16769,7 @@ \endhead \indexlibrary{\idxcode{remove_extent}}% -\tcode{template \br +\tcode{template\br struct remove_extent;} & If \tcode{T} names a type ``array of \tcode{U}'', the member typedef \tcode{type} shall @@ -16779,7 +16779,7 @@ \tcode{const U}. \end{note} \\ \rowsep \indexlibrary{\idxcode{remove_all_extents}}% -\tcode{template \br +\tcode{template\br struct remove_all_extents;} & If \tcode{T} is ``multi-dimensional array of \tcode{U}'', the resulting member typedef \tcode{type} is \tcode{U}, otherwise \tcode{T}. \\ @@ -16818,14 +16818,14 @@ \endhead \indexlibrary{\idxcode{remove_pointer}}% -\tcode{template \br +\tcode{template\br struct remove_pointer;} & If \tcode{T} has type ``(possibly cv-qualified) pointer to \tcode{T1}'' then the member typedef \tcode{type} names \tcode{T1}; otherwise, it names \tcode{T}.\\ \rowsep \indexlibrary{\idxcode{add_pointer}}% -\tcode{template \br +\tcode{template\br struct add_pointer;} & If \tcode{T} names a referenceable type\iref{defns.referenceable} or a \cv{}~\tcode{void} type then @@ -16846,7 +16846,7 @@ \endhead \indexlibrary{\idxcode{aligned_storage}}% -\tcode{template \br struct aligned_storage;} @@ -16861,7 +16861,7 @@ \tcode{alignof(T)} for some type \tcode{T} or to \textit{default-alignment}.\\ \rowsep \indexlibrary{\idxcode{aligned_union}}% -\tcode{template \br struct aligned_union;} & @@ -16875,14 +16875,14 @@ \\ \rowsep \indexlibrary{\idxcode{remove_cvref}}% -\tcode{template \br struct remove_cvref;} +\tcode{template\br struct remove_cvref;} & The member typedef \tcode{type} names the same type as \tcode{remove_cv_t>}. \\ \rowsep \indexlibrary{\idxcode{decay}}% -\tcode{template \br struct decay;} +\tcode{template\br struct decay;} & Let \tcode{U} be \tcode{remove_reference_t}. If \tcode{is_array_v} is \tcode{true}, the member typedef \tcode{type} shall equal @@ -16897,20 +16897,20 @@ \\ \rowsep \indexlibrary{\idxcode{enable_if}}% -\tcode{template } \tcode{struct enable_if;} +\tcode{template} \tcode{struct enable_if;} & If \tcode{B} is \tcode{true}, the member typedef \tcode{type} shall equal \tcode{T}; otherwise, there shall be no member \tcode{type}. \\ \rowsep -\tcode{template }\br \tcode{struct conditional;} & If \tcode{B} is \tcode{true}, the member typedef \tcode{type} shall equal \tcode{T}. If \tcode{B} is \tcode{false}, the member typedef \tcode{type} shall equal \tcode{F}. \\ \rowsep - \tcode{template } \tcode{struct common_type;} + \tcode{template} \tcode{struct common_type;} & Unless this trait is specialized (as specified in Note B, below), the member \tcode{type} shall be defined or omitted as specified in Note A, below. @@ -16919,14 +16919,14 @@ complete, \cv{}~\tcode{void}, or an array of unknown bound. \\ \rowsep \indexlibrary{\idxcode{underlying_type}}% -\tcode{template }\br +\tcode{template}\br \tcode{struct underlying_type;} & The member typedef \tcode{type} names the underlying type of \tcode{T}.\br \requires{} \tcode{T} shall be a complete enumeration type\iref{dcl.enum} \\ \rowsep -\tcode{template }\br \tcode{struct invoke_result;} & @@ -16955,7 +16955,7 @@ \begin{note} A typical implementation would define \tcode{aligned_storage} as: \begin{codeblock} -template +template struct aligned_storage { typedef struct { alignas(Alignment) unsigned char __data[Len]; @@ -17236,33 +17236,33 @@ \begin{codeblockdigitsep} namespace std { // \ref{ratio.ratio}, class template \tcode{ratio} - template class ratio; + template class ratio; // \ref{ratio.arithmetic}, ratio arithmetic - template using ratio_add = @\seebelow@; - template using ratio_subtract = @\seebelow@; - template using ratio_multiply = @\seebelow@; - template using ratio_divide = @\seebelow@; + template using ratio_add = @\seebelow@; + template using ratio_subtract = @\seebelow@; + template using ratio_multiply = @\seebelow@; + template using ratio_divide = @\seebelow@; // \ref{ratio.comparison}, ratio comparison - template struct ratio_equal; - template struct ratio_not_equal; - template struct ratio_less; - template struct ratio_less_equal; - template struct ratio_greater; - template struct ratio_greater_equal; - - template + template struct ratio_equal; + template struct ratio_not_equal; + template struct ratio_less; + template struct ratio_less_equal; + template struct ratio_greater; + template struct ratio_greater_equal; + + template inline constexpr bool ratio_equal_v = ratio_equal::value; - template + template inline constexpr bool ratio_not_equal_v = ratio_not_equal::value; - template + template inline constexpr bool ratio_less_v = ratio_less::value; - template + template inline constexpr bool ratio_less_equal_v = ratio_less_equal::value; - template + template inline constexpr bool ratio_greater_v = ratio_greater::value; - template + template inline constexpr bool ratio_greater_equal_v = ratio_greater_equal::value; // \ref{ratio.si}, convenience SI typedefs @@ -17294,7 +17294,7 @@ \indexlibrary{\idxcode{ratio}}% \begin{codeblock} namespace std { - template class ratio { + template class ratio { public: static constexpr intmax_t num; static constexpr intmax_t den; @@ -17395,19 +17395,19 @@ \indexlibrary{\idxcode{ratio_equal}}% \begin{itemdecl} -template +template struct ratio_equal : bool_constant { }; \end{itemdecl} \indexlibrary{\idxcode{ratio_not_equal}}% \begin{itemdecl} -template +template struct ratio_not_equal : bool_constant> { }; \end{itemdecl} \indexlibrary{\idxcode{ratio_less}}% \begin{itemdecl} -template +template struct ratio_less : bool_constant<@\seebelow@> { }; \end{itemdecl} @@ -17422,19 +17422,19 @@ \indexlibrary{\idxcode{ratio_less_equal}}% \begin{itemdecl} -template +template struct ratio_less_equal : bool_constant> { }; \end{itemdecl} \indexlibrary{\idxcode{ratio_greater}}% \begin{itemdecl} -template +template struct ratio_greater : bool_constant> { }; \end{itemdecl} \indexlibrary{\idxcode{ratio_greater_equal}}% \begin{itemdecl} -template +template struct ratio_greater_equal : bool_constant> { }; \end{itemdecl} @@ -17464,82 +17464,82 @@ namespace std { namespace chrono { // \ref{time.duration}, class template \tcode{duration} - template > class duration; + template> class duration; // \ref{time.point}, class template \tcode{time_point} - template class time_point; + template class time_point; } // \ref{time.traits.specializations}, \tcode{common_type} specializations - template + template struct common_type, chrono::duration>; - template + template struct common_type, chrono::time_point>; namespace chrono { // \ref{time.traits}, customization traits - template struct treat_as_floating_point; - template struct duration_values; - template + template struct treat_as_floating_point; + template struct duration_values; + template inline constexpr bool treat_as_floating_point_v = treat_as_floating_point::value; // \ref{time.duration.nonmember}, \tcode{duration} arithmetic - template + template constexpr common_type_t, duration> operator+(const duration& lhs, const duration& rhs); - template + template constexpr common_type_t, duration> operator-(const duration& lhs, const duration& rhs); - template + template constexpr duration, Period> operator*(const duration& d, const Rep2& s); - template + template constexpr duration, Period> operator*(const Rep1& s, const duration& d); - template + template constexpr duration, Period> operator/(const duration& d, const Rep2& s); - template + template constexpr common_type_t operator/(const duration& lhs, const duration& rhs); - template + template constexpr duration, Period> operator%(const duration& d, const Rep2& s); - template + template constexpr common_type_t, duration> operator%(const duration& lhs, const duration& rhs); // \ref{time.duration.comparisons}, \tcode{duration} comparisons - template + template constexpr bool operator==(const duration& lhs, const duration& rhs); - template + template constexpr bool operator!=(const duration& lhs, const duration& rhs); - template + template constexpr bool operator< (const duration& lhs, const duration& rhs); - template + template constexpr bool operator<=(const duration& lhs, const duration& rhs); - template + template constexpr bool operator> (const duration& lhs, const duration& rhs); - template + template constexpr bool operator>=(const duration& lhs, const duration& rhs); // \ref{time.duration.cast}, \tcode{duration_cast} - template + template constexpr ToDuration duration_cast(const duration& d); - template + template constexpr ToDuration floor(const duration& d); - template + template constexpr ToDuration ceil(const duration& d); - template + template constexpr ToDuration round(const duration& d); // convenience typedefs @@ -17551,53 +17551,53 @@ using hours = duration<@\term{signed integer type of at least 23 bits}@, ratio<3600>>; // \ref{time.point.nonmember}, \tcode{time_point} arithmetic - template + template constexpr time_point>> operator+(const time_point& lhs, const duration& rhs); - template + template constexpr time_point, Duration2>> operator+(const duration& lhs, const time_point& rhs); - template + template constexpr time_point>> operator-(const time_point& lhs, const duration& rhs); - template + template constexpr common_type_t operator-(const time_point& lhs, const time_point& rhs); // \ref{time.point.comparisons}, \tcode{time_point} comparisons - template + template constexpr bool operator==(const time_point& lhs, const time_point& rhs); - template + template constexpr bool operator!=(const time_point& lhs, const time_point& rhs); - template + template constexpr bool operator< (const time_point& lhs, const time_point& rhs); - template + template constexpr bool operator<=(const time_point& lhs, const time_point& rhs); - template + template constexpr bool operator> (const time_point& lhs, const time_point& rhs); - template + template constexpr bool operator>=(const time_point& lhs, const time_point& rhs); // \ref{time.point.cast}, \tcode{time_point_cast} - template + template constexpr time_point time_point_cast(const time_point& t); - template + template constexpr time_point floor(const time_point& tp); - template + template constexpr time_point ceil(const time_point& tp); - template + template constexpr time_point round(const time_point& tp); // \ref{time.duration.alg}, specialized algorithms - template + template constexpr duration abs(duration d); // \ref{time.clock}, clocks @@ -17721,7 +17721,7 @@ \indexlibrary{\idxcode{treat_as_floating_point}}% \begin{itemdecl} -template struct treat_as_floating_point : is_floating_point { }; +template struct treat_as_floating_point : is_floating_point { }; \end{itemdecl} \pnum @@ -17742,7 +17742,7 @@ \indexlibrary{\idxcode{duration_values}}% \begin{itemdecl} -template +template struct duration_values { public: static constexpr Rep zero(); @@ -17804,7 +17804,7 @@ \indexlibrary{\idxcode{common_type}}% \begin{itemdecl} -template +template struct common_type, chrono::duration> { using type = chrono::duration, @\seebelow@>; }; @@ -17828,7 +17828,7 @@ \indexlibrary{\idxcode{common_type}}% \begin{itemdecl} -template +template struct common_type, chrono::time_point> { using type = chrono::time_point>; }; @@ -17849,7 +17849,7 @@ \indexlibrary{\idxcode{duration}}% \begin{codeblock} namespace std::chrono { - template > + template> class duration { public: using rep = Rep; @@ -17861,9 +17861,9 @@ public: // \ref{time.duration.cons}, construct/copy/destroy constexpr duration() = default; - template + template constexpr explicit duration(const Rep2& r); - template + template constexpr duration(const duration& d); ~duration() = default; duration(const duration&) = default; @@ -17929,7 +17929,7 @@ \indexlibrary{\idxcode{duration}!constructor}% \begin{itemdecl} -template +template constexpr explicit duration(const Rep2& r); \end{itemdecl} @@ -17958,7 +17958,7 @@ \indexlibrary{\idxcode{duration}!constructor}% \begin{itemdecl} -template +template constexpr duration(const duration& d); \end{itemdecl} @@ -18184,7 +18184,7 @@ \indexlibrary{\idxcode{common_type}}% \begin{itemdecl} -template +template constexpr common_type_t, duration> operator+(const duration& lhs, const duration& rhs); \end{itemdecl} @@ -18196,7 +18196,7 @@ \indexlibrary{\idxcode{common_type}}% \begin{itemdecl} -template +template constexpr common_type_t, duration> operator-(const duration& lhs, const duration& rhs); \end{itemdecl} @@ -18208,7 +18208,7 @@ \indexlibrarymember{operator*}{duration}% \begin{itemdecl} -template +template constexpr duration, Period> operator*(const duration& d, const Rep2& s); \end{itemdecl} @@ -18224,7 +18224,7 @@ \indexlibrarymember{operator*}{duration}% \begin{itemdecl} -template +template constexpr duration, Period> operator*(const Rep1& s, const duration& d); \end{itemdecl} @@ -18240,7 +18240,7 @@ \indexlibrarymember{operator/}{duration}% \begin{itemdecl} -template +template constexpr duration, Period> operator/(const duration& d, const Rep2& s); \end{itemdecl} @@ -18257,7 +18257,7 @@ \indexlibrarymember{operator/}{duration}% \begin{itemdecl} -template +template constexpr common_type_t operator/(const duration& lhs, const duration& rhs); \end{itemdecl} @@ -18269,7 +18269,7 @@ \indexlibrarymember{operator\%}{duration}% \begin{itemdecl} -template +template constexpr duration, Period> operator%(const duration& d, const Rep2& s); \end{itemdecl} @@ -18286,7 +18286,7 @@ \indexlibrarymember{operator\%}{duration}% \begin{itemdecl} -template +template constexpr common_type_t, duration> operator%(const duration& lhs, const duration& rhs); \end{itemdecl} @@ -18306,7 +18306,7 @@ \indexlibrarymember{operator==}{duration}% \begin{itemdecl} -template +template constexpr bool operator==(const duration& lhs, const duration& rhs); \end{itemdecl} @@ -18318,7 +18318,7 @@ \indexlibrarymember{operator"!=}{duration}% \begin{itemdecl} -template +template constexpr bool operator!=(const duration& lhs, const duration& rhs); \end{itemdecl} @@ -18330,7 +18330,7 @@ \indexlibrarymember{operator<}{duration}% \begin{itemdecl} -template +template constexpr bool operator<(const duration& lhs, const duration& rhs); \end{itemdecl} @@ -18342,7 +18342,7 @@ \indexlibrarymember{operator<=}{duration}% \begin{itemdecl} -template +template constexpr bool operator<=(const duration& lhs, const duration& rhs); \end{itemdecl} @@ -18354,7 +18354,7 @@ \indexlibrarymember{operator>}{duration}% \begin{itemdecl} -template +template constexpr bool operator>(const duration& lhs, const duration& rhs); \end{itemdecl} @@ -18366,7 +18366,7 @@ \indexlibrarymember{operator>=}{duration}% \begin{itemdecl} -template +template constexpr bool operator>=(const duration& lhs, const duration& rhs); \end{itemdecl} @@ -18381,7 +18381,7 @@ \indexlibrary{\idxcode{duration}!\idxcode{duration_cast}}% \indexlibrary{\idxcode{duration_cast}}% \begin{itemdecl} -template +template constexpr ToDuration duration_cast(const duration& d); \end{itemdecl} @@ -18431,7 +18431,7 @@ \indexlibrarymember{floor}{duration}% \begin{itemdecl} -template +template constexpr ToDuration floor(const duration& d); \end{itemdecl} @@ -18447,7 +18447,7 @@ \indexlibrarymember{ceil}{duration}% \begin{itemdecl} -template +template constexpr ToDuration ceil(const duration& d); \end{itemdecl} @@ -18463,7 +18463,7 @@ \indexlibrarymember{round}{duration}% \begin{itemdecl} -template +template constexpr ToDuration round(const duration& d); \end{itemdecl} @@ -18592,7 +18592,7 @@ \indexlibrarymember{abs}{duration}% \begin{itemdecl} -template +template constexpr duration abs(duration d); \end{itemdecl} @@ -18611,7 +18611,7 @@ \indexlibrary{\idxcode{time_point}}% \begin{codeblock} namespace std::chrono { - template + template class time_point { public: using clock = Clock; @@ -18626,7 +18626,7 @@ // \ref{time.point.cons}, construct constexpr time_point(); // has value epoch constexpr explicit time_point(const duration& d); // same as \tcode{time_point() + d} - template + template constexpr time_point(const time_point& t); // \ref{time.point.observer}, observer @@ -18678,7 +18678,7 @@ \indexlibrary{\idxcode{time_point}!constructor}% \begin{itemdecl} -template +template constexpr time_point(const time_point& t); \end{itemdecl} @@ -18759,7 +18759,7 @@ \indexlibrarymember{operator+}{time_point}% \indexlibrarymember{operator+}{duration}% \begin{itemdecl} -template +template constexpr time_point>> operator+(const time_point& lhs, const duration& rhs); \end{itemdecl} @@ -18772,7 +18772,7 @@ \indexlibrarymember{operator+}{time_point}% \indexlibrarymember{operator+}{duration}% \begin{itemdecl} -template +template constexpr time_point, Duration2>> operator+(const duration& lhs, const time_point& rhs); \end{itemdecl} @@ -18785,7 +18785,7 @@ \indexlibrarymember{operator-}{time_point}% \indexlibrarymember{operator-}{duration}% \begin{itemdecl} -template +template constexpr time_point>> operator-(const time_point& lhs, const duration& rhs); \end{itemdecl} @@ -18798,7 +18798,7 @@ \indexlibrarymember{operator-}{time_point}% \begin{itemdecl} -template +template constexpr common_type_t operator-(const time_point& lhs, const time_point& rhs); \end{itemdecl} @@ -18812,7 +18812,7 @@ \indexlibrarymember{operator==}{time_point}% \begin{itemdecl} -template +template constexpr bool operator==(const time_point& lhs, const time_point& rhs); \end{itemdecl} @@ -18824,7 +18824,7 @@ \indexlibrarymember{operator"!=}{time_point}% \begin{itemdecl} -template +template constexpr bool operator!=(const time_point& lhs, const time_point& rhs); \end{itemdecl} @@ -18836,7 +18836,7 @@ \indexlibrarymember{operator<}{time_point}% \begin{itemdecl} -template +template constexpr bool operator<(const time_point& lhs, const time_point& rhs); \end{itemdecl} @@ -18848,7 +18848,7 @@ \indexlibrarymember{operator<=}{time_point}% \begin{itemdecl} -template +template constexpr bool operator<=(const time_point& lhs, const time_point& rhs); \end{itemdecl} @@ -18860,7 +18860,7 @@ \indexlibrarymember{operator>}{time_point}% \begin{itemdecl} -template +template constexpr bool operator>(const time_point& lhs, const time_point& rhs); \end{itemdecl} @@ -18872,7 +18872,7 @@ \indexlibrarymember{operator>=}{time_point}% \begin{itemdecl} -template +template constexpr bool operator>=(const time_point& lhs, const time_point& rhs); \end{itemdecl} @@ -18887,7 +18887,7 @@ \indexlibrary{\idxcode{time_point}!\idxcode{time_point_cast}}% \indexlibrary{\idxcode{time_point_cast}}% \begin{itemdecl} -template +template constexpr time_point time_point_cast(const time_point& t); \end{itemdecl} @@ -18905,7 +18905,7 @@ \indexlibrarymember{floor}{time_point}% \begin{itemdecl} -template +template constexpr time_point floor(const time_point& tp); \end{itemdecl} @@ -18920,7 +18920,7 @@ \indexlibrarymember{ceil}{time_point}% \begin{itemdecl} -template +template constexpr time_point ceil(const time_point& tp); \end{itemdecl} @@ -18935,7 +18935,7 @@ \indexlibrarymember{round}{time_point}% \begin{itemdecl} -template +template constexpr time_point round(const time_point& tp); \end{itemdecl} @@ -19141,7 +19141,7 @@ \begin{codeblock} namespace std { class type_index; - template struct hash; + template struct hash; template<> struct hash; } \end{codeblock} @@ -19274,7 +19274,7 @@ \indexlibrary{\idxcode{hash}!\idxcode{type_index}}% \begin{itemdecl} -template <> struct hash; +template<> struct hash; \end{itemdecl} \begin{itemdescr} From 74df95e9e3fad1aa5844c281614bbfffb1cc6189 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Wed, 22 Nov 2017 23:45:18 +0100 Subject: [PATCH 163/168] [diff] Introduce numbered paragraphs --- source/compatibility.tex | 200 +++++++++++++++++++-------------------- source/macros.tex | 1 + 2 files changed, 100 insertions(+), 101 deletions(-) diff --git a/source/compatibility.tex b/source/compatibility.tex index d271f98c84..85e5119db0 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -10,7 +10,7 @@ \rSec2[diff.lex]{\ref{lex}: lexical conventions} -\ref{lex.key} +\diffref{lex.key} \change New Keywords\\ New keywords are added to \Cpp{}; see \ref{lex.key}. @@ -29,7 +29,7 @@ \howwide Common. -\ref{lex.ccon} +\diffref{lex.ccon} \change Type of character literal is changed from \tcode{int} to \tcode{char}. \rationale This is needed for improved overloaded function argument type @@ -59,7 +59,7 @@ \howwide Programs which depend upon \tcode{sizeof('x')} are probably rare. -Subclause \ref{lex.string}: +\diffref{lex.string} \change String literals made const.\\ The type of a string literal is changed from ``array of \tcode{char}'' @@ -96,7 +96,7 @@ \rSec2[diff.basic]{\ref{basic}: basic concepts} -\ref{basic.def} +\diffref{basic.def} \change \Cpp{} does not have ``tentative definitions'' as in C.\\ E.g., at file scope, @@ -132,7 +132,7 @@ \howwide Seldom. -\ref{basic.scope} +\diffref{basic.scope} \change A \tcode{struct} is a scope in \Cpp{}, not in C. \rationale Class scope is crucial to \Cpp{}, and a struct is a class. @@ -146,7 +146,7 @@ names are referred to outside the \tcode{struct}. The latter is probably rare. -\ref{basic.link} [also \ref{dcl.type}] +\diffref{basic.link} [also \ref{dcl.type}] \change A name of file scope that is explicitly declared \tcode{const}, and not explicitly declared \tcode{extern}, has internal linkage, while in C it would have external linkage. \rationale @@ -162,7 +162,7 @@ \howwide Seldom. -\ref{basic.start.main} +\diffref{basic.start.main} \change The \tcode{main} function cannot be called recursively and cannot have its address taken. \rationale The \tcode{main} function may require special actions. @@ -174,7 +174,7 @@ \howwide Seldom. -\ref{basic.types} +\diffref{basic.types} \change C allows ``compatible types'' in several places, \Cpp{} does not.\\ For example, otherwise-identical \tcode{struct} types with different tag names @@ -197,7 +197,7 @@ \rSec2[diff.conv]{\ref{conv}: standard conversions} -\ref{conv.ptr} +\diffref{conv.ptr} \change Converting \tcode{void*} to a pointer-to-object type requires casting. \begin{codeblock} @@ -234,7 +234,7 @@ \rSec2[diff.expr]{\ref{expr}: expressions} -\ref{expr.call} +\diffref{expr.call} \change Implicit declaration of functions is not allowed. \rationale The type-safe nature of \Cpp{}. @@ -248,7 +248,7 @@ \howwide Common. -\ref{expr.post.incr}, \ref{expr.pre.incr} +\diffref{expr.post.incr}, \ref{expr.pre.incr} \change Decrement operator is not allowed with \tcode{bool} operand. \rationale Feature with surprising semantics. @@ -256,7 +256,7 @@ a \tcode{bool} lvalue (for instance, via the C typedef in \tcode{}) is ill-formed in this International Standard. -\ref{expr.sizeof}, \ref{expr.cast} +\diffref{expr.sizeof}, \ref{expr.cast} \change Types must be defined in declarations, not in expressions.\\ In C, a sizeof expression or cast expression may define a new type. For example, @@ -274,7 +274,7 @@ \howwide Seldom. -\ref{expr.cond}, \ref{expr.ass}, \ref{expr.comma} +\diffref{expr.cond}, \ref{expr.ass}, \ref{expr.comma} \indextext{conversion!lvalue-to-rvalue}% \indextext{rvalue!lvalue conversion to}% \indextext{lvalue}% @@ -305,7 +305,7 @@ \rSec2[diff.stat]{\ref{stmt.stmt}: statements} -\ref{stmt.switch}, \ref{stmt.goto} +\diffref{stmt.switch}, \ref{stmt.goto} \change It is now invalid to jump past a declaration with explicit or implicit initializer (except across entire block not entered). \rationale Constructors used in initializers may allocate @@ -325,7 +325,7 @@ \howwide Seldom. -\ref{stmt.return} +\diffref{stmt.return} \change It is now invalid to return (explicitly or implicitly) from a function which is declared to return a value without actually returning a value. \rationale @@ -351,7 +351,7 @@ \rSec2[diff.dcl]{\ref{dcl.dcl}: declarations} -\ref{dcl.stc} +\diffref{dcl.stc} \change In \Cpp{}, the \tcode{static} or \tcode{extern} specifiers can only be applied to names of objects or functions.\\ Using these specifiers with type declarations is illegal in \Cpp{}. In C, these specifiers are ignored when used on type declarations. @@ -378,7 +378,7 @@ \howwide Seldom. -\ref{dcl.stc} +\diffref{dcl.stc} \change In \Cpp{}, \tcode{register} is not a storage class specifier. \rationale The storage class specifier had no effect in \Cpp{}. @@ -389,7 +389,7 @@ \howwide Common. -\ref{dcl.typedef} +\diffref{dcl.typedef} \change A \Cpp{} typedef name must be different from any class type name declared in the same scope (except if the typedef is a synonym of the class name with the same name). In C, a typedef name and a struct tag name declared in the same scope @@ -421,7 +421,7 @@ \howwide Seldom. -\ref{dcl.type} [see also \ref{basic.link}] +\diffref{dcl.type} [see also \ref{basic.link}] \change const objects must be initialized in \Cpp{} but can be left uninitialized in C. \rationale A const object cannot be assigned to so it must be initialized @@ -433,7 +433,7 @@ \howwide Seldom. -\ref{dcl.type} +\diffref{dcl.type} \change Banning implicit \tcode{int}. In \Cpp{} a @@ -470,7 +470,7 @@ \howwide Common. -\ref{dcl.spec.auto} +\diffref{dcl.spec.auto} \change The keyword \tcode{auto} cannot be used as a storage class specifier. @@ -487,7 +487,7 @@ \difficulty Syntactic transformation. \howwide Rare. -\ref{dcl.enum} +\diffref{dcl.enum} \change \Cpp{} objects of enumeration type can only be assigned values of the same enumeration type. In C, objects of enumeration type can be assigned values of any integral type. @@ -508,7 +508,7 @@ \howwide Common. -\ref{dcl.enum} +\diffref{dcl.enum} \change In \Cpp{}, the type of an enumerator is its enumeration. In C, the type of an enumerator is \tcode{int}. Example: @@ -535,7 +535,7 @@ \rSec2[diff.decl]{\ref{dcl.decl}: declarators} -\ref{dcl.fct} +\diffref{dcl.fct} \change In \Cpp{}, a function declared with an empty parameter list takes no arguments. In C, an empty parameter list means that the number and type of the function arguments are unknown. @@ -562,7 +562,7 @@ \howwide Common. -\ref{dcl.fct} [see \ref{expr.sizeof}] +\diffref{dcl.fct} [see \ref{expr.sizeof}] \change In \Cpp{}, types may not be defined in return or parameter types. In C, these type definitions are allowed. @@ -588,7 +588,7 @@ Seldom. This style of type definition is seen as poor coding style. -\ref{dcl.fct.def} +\diffref{dcl.fct.def} \change In \Cpp{}, the syntax for function definition excludes the ``old-style'' C function. In C, ``old-style'' syntax is allowed, but deprecated as ``obsolescent''. \rationale @@ -600,7 +600,7 @@ \howwide Common in old programs, but already known to be obsolescent. -\ref{dcl.init.aggr} +\diffref{dcl.init.aggr} \change In \Cpp{}, designated initialization support is restricted compared to the corresponding functionality in C. @@ -637,7 +637,7 @@ Out-of-order initializers are common. The other features are seldom used. -\ref{dcl.init.string} +\diffref{dcl.init.string} \change In \Cpp{}, when initializing an array of character with a string, the number of characters in the string (including the terminating \tcode{'\textbackslash 0'}) must not exceed the number of elements in the array. In C, an array can be initialized with a string even if @@ -663,7 +663,7 @@ \rSec2[diff.class]{\ref{class}: classes} -\ref{class.name} [see also \ref{dcl.typedef}] +\diffref{class.name} [see also \ref{dcl.typedef}] \change In \Cpp{}, a class declaration introduces the class name into the scope where it is declared and hides any object, function or other declaration of that name in an enclosing scope. In C, an inner scope declaration of a struct tag name never hides the name of an @@ -702,7 +702,7 @@ \howwide Seldom. -\ref{class.bit} +\diffref{class.bit} \change \indextext{bit-field!implementation-defined sign of}% Bit-fields of type plain \tcode{int} are signed. @@ -718,7 +718,7 @@ \howwide Seldom. -\ref{class.nest} +\diffref{class.nest} \change In \Cpp{}, the name of a nested class is local to its enclosing class. In C the name of the nested class belongs to the same scope as the name of the outermost enclosing class. @@ -764,7 +764,7 @@ \howwide Seldom. -\ref{class.nested.type} +\diffref{class.nested.type} \change In \Cpp{}, a typedef name may not be redeclared in a class definition after being used in that definition. Example: @@ -790,7 +790,7 @@ \rSec2[diff.special]{\ref{special}: special member functions} -\ref{class.copy} +\diffref{class.copy} \change Copying volatile objects. The implicitly-declared copy constructor and @@ -838,7 +838,7 @@ \rSec2[diff.cpp]{\ref{cpp}: preprocessing directives} -\ref{cpp.predefined} +\diffref{cpp.predefined} \change Whether \mname{STDC} is defined and if so, what its value is, are \impldef{definition and meaning of \mname{STDC}}. \rationale @@ -865,7 +865,7 @@ \rSec2[diff.cpp03.lex]{\ref{lex}: lexical conventions} -\ref{lex.pptoken} +\diffref{lex.pptoken} \change New kinds of string literals. \rationale Required for new features. \effect @@ -880,7 +880,7 @@ const char* s = u8"def"; // Previously \tcode{"abcdef"}, now \tcode{"def"} \end{codeblock} -\ref{lex.pptoken} +\diffref{lex.pptoken} \change User-defined literal string support. \rationale Required for new features. \effect @@ -896,7 +896,7 @@ the macro \tcode{_x} would have been expanded. In this International Standard, \#1 consists of a single preprocessing token, so the macro is not expanded. -\ref{lex.key} +\diffref{lex.key} \change New keywords. \rationale Required for new features. \effect @@ -915,7 +915,7 @@ Valid \CppIII{} code using these identifiers is invalid in this International Standard. -\ref{lex.icon} +\diffref{lex.icon} \change Type of integer literals. \rationale C99 compatibility. \effect @@ -924,7 +924,7 @@ \rSec2[diff.cpp03.conv]{\ref{conv}: standard conversions} -\ref{conv.ptr} +\diffref{conv.ptr} \change Only literals are integer null pointer constants. \rationale Removing surprising interactions with templates and constant expressions. @@ -941,7 +941,7 @@ \rSec2[diff.cpp03.expr]{\ref{expr}: expressions} -\ref{expr.mul} +\diffref{expr.mul} \change Specify rounding for results of integer \tcode{/} and \tcode{\%}. \rationale Increase portability, C99 compatibility. \effect @@ -949,7 +949,7 @@ toward negative infinity, whereas this International Standard always rounds the result toward 0. -\ref{expr.log.and} +\diffref{expr.log.and} \change \tcode{\&\&} is valid in a \grammarterm{type-name}. \rationale Required for new features. \effect @@ -964,7 +964,7 @@ \rSec2[diff.cpp03.dcl.dcl]{\ref{dcl.dcl}: declarations} -\ref{dcl.spec} +\diffref{dcl.spec} \change Remove \tcode{auto} as a storage class specifier. \rationale New feature. \effect @@ -975,7 +975,7 @@ \rSec2[diff.cpp03.dcl.decl]{\ref{dcl.decl}: declarators} -\ref{dcl.init.list} +\diffref{dcl.init.list} \change Narrowing restrictions in aggregate initializers. \rationale Catches bugs. \effect @@ -990,7 +990,7 @@ \rSec2[diff.cpp03.special]{\ref{special}: special member functions} -\ref{class.ctor}, \ref{class.dtor}, \ref{class.copy} +\diffref{class.ctor}, \ref{class.dtor}, \ref{class.copy} \change Implicitly-declared special member functions are defined as deleted when the implicit definition would have been ill-formed. \rationale Improves template argument deduction failure. @@ -999,7 +999,7 @@ context where the definition is not required (e.g., in an expression that is not potentially evaluated) becomes ill-formed. -\ref{class.dtor} (destructors) +\diffref{class.dtor} \change User-declared destructors have an implicit exception specification. \rationale Clarification of destructor requirements. \effect @@ -1010,14 +1010,14 @@ \rSec2[diff.cpp03.temp]{\ref{temp}: templates} -\ref{temp.param} +\diffref{temp.param} \change Remove \tcode{export}. \rationale No implementation consensus. \effect A valid \CppIII{} declaration containing \tcode{export} is ill-formed in this International Standard. -\ref{temp.arg} +\diffref{temp.arg} \change Remove whitespace requirement for nested closing template right angle brackets. \rationale Considered a persistent but minor annoyance. Template aliases @@ -1036,7 +1036,7 @@ X< Y< 1 >> 2 > > x; \end{codeblock} -\ref{temp.dep.candidate} +\diffref{temp.dep.candidate} \change Allow dependent calls of functions with internal linkage. \rationale Overly constrained, simplify overload resolution rules. \effect @@ -1045,7 +1045,7 @@ \rSec2[diff.cpp03.library]{\ref{library}: library introduction} -\ref{library} -- \ref{\lastlibchapter} +\pnum\textbf{Affected:} \ref{library} -- \ref{\lastlibchapter} \change New reserved identifiers. \rationale Required by new features. \effect @@ -1055,7 +1055,7 @@ by the \Cpp{} standard library can be found in the Index of Library Names in this International Standard. -\ref{headers} +\diffref{headers} \change New headers. \rationale New functionality. \effect @@ -1094,13 +1094,13 @@ Valid \CppIII{} code that \tcode{\#include}{s} headers with these names may be invalid in this International Standard. -\ref{swappable.requirements} +\diffref{swappable.requirements} \effect Function \tcode{swap} moved to a different header \rationale Remove dependency on \tcode{} for \tcode{swap}. \effect Valid \CppIII{} code that has been compiled expecting swap to be in \tcode{} may have to instead include \tcode{}. -\ref{namespace.posix} +\diffref{namespace.posix} \change New reserved namespace. \rationale New functionality. \effect @@ -1108,7 +1108,7 @@ \CppIII{} code that uses a top-level namespace \tcode{posix} may be invalid in this International Standard. -\ref{res.on.macro.definitions} +\diffref{res.on.macro.definitions} \change Additional restrictions on macro names. \rationale Avoid hard to diagnose or non-portable constructs. \effect @@ -1120,7 +1120,7 @@ \rSec2[diff.cpp03.language.support]{\ref{language.support}: language support library} -\ref{new.delete.single} +\diffref{new.delete.single} \change Linking \tcode{new} and \tcode{delete} operators. \rationale The two throwing single-object signatures of \tcode{operator new} and \tcode{operator delete} are now specified to form the base functionality for @@ -1154,7 +1154,7 @@ } \end{codeblock} -\ref{new.delete.single} +\diffref{new.delete.single} \change \tcode{operator new} may throw exceptions other than \tcode{std::bad_alloc}. \rationale Consistent application of \tcode{noexcept}. @@ -1165,7 +1165,7 @@ \rSec2[diff.cpp03.diagnostics]{\ref{diagnostics}: diagnostics library} -\ref{errno} +\diffref{errno} \change Thread-local error numbers. \rationale Support for new thread facilities. \effect Valid but implementation-specific \CppIII{} code that relies on @@ -1174,7 +1174,7 @@ \rSec2[diff.cpp03.utilities]{\ref{utilities}: general utilities library} -\ref{util.dynamic.safety} +\diffref{util.dynamic.safety} \change Minimal support for garbage-collected regions. \rationale Required by new feature. \effect @@ -1182,7 +1182,7 @@ that interacts with newer \Cpp{} code using regions declared reachable may have different runtime behavior. -\ref{refwrap}, \ref{arithmetic.operations}, \ref{comparisons}, +\diffref{refwrap}, \ref{arithmetic.operations}, \ref{comparisons}, \ref{logical.operations}, \ref{bitwise.operations}, \ref{depr.negators} \change Standard function object types no longer derived from \tcode{std::unary_function} or \tcode{std::binary_function}. @@ -1195,7 +1195,7 @@ \rSec2[diff.cpp03.strings]{\ref{strings}: strings library} -\ref{string.classes} +\diffref{string.classes} \change \tcode{basic_string} requirements no longer allow reference-counted strings. \rationale Invalidation is subtly different with reference-counted strings. @@ -1203,7 +1203,7 @@ \effect Valid \CppIII{} code may execute differently in this International Standard. -\ref{string.require} +\diffref{string.require} \change Loosen \tcode{basic_string} invalidation rules. \rationale Allow small-string optimization. \effect @@ -1213,7 +1213,7 @@ \rSec2[diff.cpp03.containers]{\ref{containers}: containers library} -\ref{container.requirements} +\diffref{container.requirements} \change Complexity of \tcode{size()} member functions now constant. \rationale Lack of specification of complexity of \tcode{size()} resulted in divergent implementations with inconsistent performance characteristics. @@ -1223,7 +1223,7 @@ containers such as \tcode{std::list} to the stricter requirements may require incompatible changes. -\ref{container.requirements} +\diffref{container.requirements} \change Requirements change: relaxation. \rationale Clarification. \effect @@ -1237,14 +1237,14 @@ \item not all containers have constant complexity for \tcode{swap()} (\tcode{array}). \end{itemize} -\ref{container.requirements} +\diffref{container.requirements} \change Requirements change: default constructible. \rationale Clarification of container requirements. \effect Valid \CppIII{} code that attempts to explicitly instantiate a container using a user-defined type with no default constructor may fail to compile. -\ref{sequence.reqmts}, \ref{associative.reqmts} +\diffref{sequence.reqmts}, \ref{associative.reqmts} \change Signature changes: from \tcode{void} return types. \rationale Old signature threw away useful information that may be expensive to recalculate. @@ -1261,7 +1261,7 @@ (e.g., code that creates a pointer to member function that points to one of these functions) will fail to compile with this International Standard. -\ref{sequence.reqmts}, \ref{associative.reqmts} +\diffref{sequence.reqmts}, \ref{associative.reqmts} \change Signature changes: from \tcode{iterator} to \tcode{const_iterator} parameters. \rationale Overspecification. @@ -1282,7 +1282,7 @@ Valid \CppIII{} code that uses these functions may fail to compile with this International Standard. -\ref{sequence.reqmts}, \ref{associative.reqmts} +\diffref{sequence.reqmts}, \ref{associative.reqmts} \change Signature changes: \tcode{resize}. \rationale Performance, compatibility with move semantics. \effect @@ -1294,7 +1294,7 @@ \rSec2[diff.cpp03.algorithms]{\ref{algorithms}: algorithms library} -\ref{algorithms.general} +\diffref{algorithms.general} \change Result state of inputs after application of some algorithms. \rationale Required by new feature. \effect @@ -1306,7 +1306,7 @@ \rSec2[diff.cpp03.numerics]{\ref{numerics}: numerics library} -\ref{complex.numbers} +\diffref{complex.numbers} \change Specified representation of complex numbers. \rationale Compatibility with C99. \effect @@ -1316,9 +1316,7 @@ \rSec2[diff.cpp03.input.output]{\ref{input.output}: input/output library} -\ref{istream::sentry}, -\ref{ostream::sentry}, -\ref{iostate.flags} +\diffref{istream::sentry}, \ref{ostream::sentry}, \ref{iostate.flags} \change Specify use of \tcode{explicit} in existing boolean conversion functions. \rationale Clarify intentions, avoid workarounds. \effect @@ -1334,7 +1332,7 @@ \item initializing a \tcode{const bool\&} which would bind to a temporary object. \end{itemize} -\ref{ios::failure} +\diffref{ios::failure} \change Change base class of \tcode{std::ios_base::failure}. \rationale More detailed error messages. \effect @@ -1344,7 +1342,7 @@ that assumes that \tcode{std::ios_base::failure} is derived directly from \tcode{std::exception} may execute differently in this International Standard. -\ref{ios.base} +\diffref{ios.base} \change Flag types in \tcode{std::ios_base} are now bitmasks with values defined as constexpr static members. \rationale Required for new features. @@ -1372,7 +1370,7 @@ \rSec2[diff.cpp11.lex]{\ref{lex}: lexical conventions} -\ref{lex.ppnumber} +\diffref{lex.ppnumber} \change \grammarterm{pp-number} can contain one or more single quotes. \rationale Necessary to enable single quotes as digit separators. \effect Valid \CppXI{} code may fail to compile or may change meaning in this @@ -1390,7 +1388,7 @@ \rSec2[diff.cpp11.basic]{\ref{basic}: basic concepts} -\ref{basic.stc.dynamic.deallocation} +\diffref{basic.stc.dynamic.deallocation} \change New usual (non-placement) deallocator. \rationale Required for sized deallocation. \effect Valid \CppXI{} code could declare a global placement allocation function and @@ -1409,7 +1407,7 @@ \rSec2[diff.cpp11.expr]{\ref{expr}: expressions} -\ref{expr.cond} +\diffref{expr.cond} \change A conditional expression with a throw expression as its second or third operand keeps the type and value category of the other operand. \rationale Formerly mandated conversions (lvalue-to-rvalue\iref{conv.lval}, @@ -1443,7 +1441,7 @@ \rSec2[diff.cpp11.dcl.dcl]{\ref{dcl.dcl}: declarations} -\ref{dcl.constexpr} +\diffref{dcl.constexpr} \change \tcode{constexpr} non-static member functions are not implicitly \tcode{const} member functions. \rationale Necessary to allow \tcode{constexpr} member functions to mutate @@ -1463,7 +1461,7 @@ \rSec2[diff.cpp11.dcl.decl]{\ref{dcl.decl}: declarators} -\ref{dcl.init.aggr} +\diffref{dcl.init.aggr} \change Classes with default member initializers can be aggregates. \rationale Necessary to allow default member initializers to be used by aggregate initialization. @@ -1484,7 +1482,7 @@ \rSec2[diff.cpp11.library]{\ref{library}: library introduction} -\ref{headers} +\diffref{headers} \change New header. \rationale New functionality. \effect @@ -1494,7 +1492,7 @@ \rSec2[diff.cpp11.input.output]{\ref{input.output}: input/output library} -\ref{c.files} +\diffref{c.files} \change \tcode{gets} is not defined. \rationale Use of \tcode{gets} is considered dangerous. \effect @@ -1511,7 +1509,7 @@ \rSec2[diff.cpp14.lex]{\ref{lex}: lexical conventions} -\ref{lex.phases} +\diffref{lex.phases} \indextext{trigraph sequence}% \change Removal of trigraph support as a required feature. \rationale Prevents accidental uses of trigraphs in non-raw string literals and comments. @@ -1523,7 +1521,7 @@ to basic source character set} mapping from physical source file characters to the basic source character set. -\ref{lex.ppnumber} +\diffref{lex.ppnumber} \change \grammarterm{pp-number} can contain \tcode{p} \grammarterm{sign} and \tcode{P} \grammarterm{sign}. \rationale Necessary to enable hexadecimal floating literals. @@ -1540,7 +1538,7 @@ \rSec2[diff.cpp14.expr]{\ref{expr}: expressions} -\ref{expr.post.incr}, \ref{expr.pre.incr} +\diffref{expr.post.incr}, \ref{expr.pre.incr} \change Remove increment operator with \tcode{bool} operand. \rationale Obsolete feature with occasionally surprising semantics. @@ -1549,7 +1547,7 @@ Note that this might occur when the lvalue has a type given by a template parameter. -\ref{expr.new}, \ref{expr.delete} +\diffref{expr.new}, \ref{expr.delete} \change Dynamic allocation mechanism for over-aligned types. \rationale Simplify use of over-aligned types. \effect In \CppXIV{} code that uses a \grammarterm{new-expression} @@ -1563,7 +1561,7 @@ \rSec2[diff.cpp14.dcl.dcl]{\ref{dcl.dcl}: declarations} -\ref{dcl.stc} +\diffref{dcl.stc} \indextext{\idxcode{register} storage class}% \change Removal of \tcode{register} \grammarterm{storage-class-specifier}. \rationale Enable repurposing of deprecated keyword in future revisions of this International Standard. @@ -1572,7 +1570,7 @@ \grammarterm{storage-class-specifier} is ill-formed in this International Standard. The specifier can simply be removed to retain the original meaning. -\ref{dcl.spec.auto} +\diffref{dcl.spec.auto} \change \tcode{auto} deduction from \grammarterm{braced-init-list}. \rationale More intuitive deduction behavior. \effect @@ -1585,7 +1583,7 @@ \rSec2[diff.cpp14.decl]{\ref{dcl.decl}: declarators} -\ref{dcl.fct} +\diffref{dcl.fct} \change Make exception specifications be part of the type system. \rationale Improve type-safety. \effect @@ -1599,7 +1597,7 @@ int x = f(g1, g2); // ill-formed; previously well-formed \end{codeblock} -\ref{dcl.init.aggr} +\diffref{dcl.init.aggr} \change Definition of an aggregate is extended to apply to user-defined types with base classes. \rationale To increase convenience of aggregate initialization. @@ -1623,7 +1621,7 @@ \rSec2[diff.cpp14.special]{\ref{special}: special member functions} -\ref{class.inhctor.init} +\diffref{class.inhctor.init} \change Inheriting a constructor no longer injects a constructor into the derived class. \rationale @@ -1650,7 +1648,7 @@ \rSec2[diff.cpp14.temp]{\ref{temp}: templates} -\ref{temp.deduct.type} +\diffref{temp.deduct.type} \change Allowance to deduce from the type of a non-type template argument. \rationale In combination with the ability to declare non-type template arguments with placeholder types, @@ -1669,7 +1667,7 @@ \rSec2[diff.cpp14.except]{\ref{except}: exception handling} -\ref{except.spec} +\diffref{except.spec} \change Remove dynamic exception specifications. \rationale Dynamic exception specifications were a deprecated feature that was complex and brittle in use. @@ -1690,7 +1688,7 @@ \rSec2[diff.cpp14.library]{\ref{library}: library introduction} -\ref{headers} +\diffref{headers} \change New headers. \rationale New functionality. \effect @@ -1706,7 +1704,7 @@ Valid \CppXIV{} code that \tcode{\#include}{s} headers with these names may be invalid in this International Standard. -\ref{namespace.future} +\diffref{namespace.future} \change New reserved namespaces. \rationale Reserve namespaces for future revisions of the standard library that might otherwise be incompatible with existing programs. @@ -1719,7 +1717,7 @@ \rSec2[diff.cpp14.utilities]{\ref{utilities}: general utilities library} -\ref{func.wrap} +\diffref{func.wrap} \change Constructors taking allocators removed. \rationale No implementation consensus. \effect @@ -1728,7 +1726,7 @@ an allocator is ill-formed and uses-allocator construction will not pass an allocator to \tcode{std::function} constructors in this International Standard. -\ref{util.smartptr.shared} +\diffref{util.smartptr.shared} \change Different constraint on conversions from \tcode{unique_ptr}. \rationale Adding array support to \tcode{shared_ptr}, via the syntax \tcode{shared_ptr} and \tcode{shared_ptr}. @@ -1745,7 +1743,7 @@ \rSec2[diff.cpp14.string]{\ref{strings}: strings library} -\ref{basic.string} +\diffref{basic.string} \change Non-const \tcode{.data()} member added. \rationale The lack of a non-const \tcode{.data()} differed from the similar member of \tcode{std::vector}. @@ -1766,7 +1764,7 @@ \rSec2[diff.cpp14.containers]{\ref{containers}: containers library} -\ref{associative.reqmts} +\diffref{associative.reqmts} \change Requirements change: \rationale Increase portability, clarification of associative container requirements. \effect @@ -1828,7 +1826,7 @@ \rSec2[diff.cpp17.lex]{\ref{lex}: lexical conventions} -\ref{lex.key} +\diffref{lex.key} \change New keywords. \rationale Required for new features. The \tcode{requires} keyword is added @@ -1839,7 +1837,7 @@ Valid ISO \CppXVII{} code using \tcode{concept} or \tcode{requires} as an identifier is not valid in this International Standard. -\ref{lex.operators} +\diffref{lex.operators} \change New operator \tcode{<=>}. \rationale Necessary for new functionality. \effect Valid \CppXVII{} code that contains a \tcode{<=} token @@ -1856,7 +1854,7 @@ \rSec2[diff.cpp17.expr]{\ref{expr}: expressions} -\ref{expr.prim.lambda.capture} +\diffref{expr.prim.lambda.capture} \change Implicit lambda capture may capture additional entities. \rationale Rule simplification, necessary to resolve interactions with constexpr if. \effect Lambdas with a \grammarterm{capture-default} @@ -1867,7 +1865,7 @@ \rSec2[diff.cpp17.temp]{\ref{temp}: templates} -\ref{temp.names} +\diffref{temp.names} \change An \grammarterm{unqualified-id} that is followed by a \tcode{<} diff --git a/source/macros.tex b/source/macros.tex index fd2b4655a4..5330322bb0 100644 --- a/source/macros.tex +++ b/source/macros.tex @@ -311,6 +311,7 @@ %% Change descriptions \newcommand{\diffdef}[1]{\hfill\break\textbf{#1:}\space} +\newcommand{\diffref}[1]{\pnum\textbf{Affected subclause:} \ref{#1}} \newcommand{\change}{\diffdef{Change}} \newcommand{\rationale}{\diffdef{Rationale}} \newcommand{\effect}{\diffdef{Effect on original feature}} From cebfe0a09fb56ec33726559c8b6d006dc19e4ab7 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Wed, 15 Nov 2017 23:18:22 +0100 Subject: [PATCH 164/168] [temp.constr.order] In definition of 'subsumes', remove confusing introductory paragraph. --- source/templates.tex | 52 +++++++++++++++----------------------------- 1 file changed, 18 insertions(+), 34 deletions(-) diff --git a/source/templates.tex b/source/templates.tex index 11c4a91817..1e5a934e1a 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -1861,50 +1861,34 @@ \indextext{subsume|see{constraint, subsumption}} \pnum -A constraint $P$ is said to subsume another constraint $Q$ -if it can be determined that $P$ implies $Q$, up to -the identity\iref{temp.constr.atomic} -of atomic constraints in $P$ and $Q$, -as described below. -\begin{example} -Subsumption does not determine if the atomic constraint -\tcode{N >= 0}\iref{temp.constr.atomic} subsumes \tcode{N > 0} for some -integral template argument \tcode{N}. -\end{example} - -\pnum -In order to determine if a constraint $P$ subsumes a constraint $Q$, -$P$ is transformed into disjunctive normal form, and -$Q$ is transformed into conjunctive normal form.\footnote{% +A constraint $P$ \defnx{subsumes}{constraint!subsumption} a constraint $Q$ +if and only if, +for every disjunctive clause $P_i$ +in the disjunctive normal form\footnote{ A constraint is in disjunctive normal form when it is a disjunction of clauses where each clause is a conjunction of atomic constraints. -% -Similarly, a constraint is in conjunctive normal form when it is a conjunction -of clauses where each clause is a disjunction of atomic constraints. -% \begin{example} -Let $A$, $B$, and $C$ be atomic constraints, which can be grouped -using parentheses. -% -The constraint $A \land (B \lor C)$ is in -conjunctive normal form. -% -Its conjunctive clauses are $A$ and $(B \lor C)$. -% -The disjunctive normal form of the constraint +For atomic constraints $A$, $B$, and $C$, the disjunctive normal form +of the constraint $A \land (B \lor C)$ is $(A \land B) \lor (A \land C)$. % -Its disjunctive clauses are $(A \land B)$ and -$(A \land C)$. +Its disjunctive clauses are $(A \land B)$ and $(A \land C)$. \end{example}% } +of $P$, $P_i$ subsumes every conjunctive clause $Q_j$ +in the conjuctive normal form\footnote{ +A constraint is in conjunctive normal form when it is a conjunction +of clauses where each clause is a disjunction of atomic constraints. +\begin{example} +For atomic constraints $A$, $B$, and $C$, the constraint +$A \land (B \lor C)$ is in conjunctive normal form. % -Then, $P$ \defnx{subsumes}{constraint!subsumption} $Q$ if and only if, -for every disjunctive clause $P_i$ in the disjunctive normal -form of $P$, $P_i$ subsumes every conjunctive clause $Q_j$ -in the conjuctive normal form of $Q$, where +Its conjunctive clauses are $A$ and $(B \lor C)$. +\end{example}% +} +of $Q$, where \begin{itemize} \item From 903df06f3e67c9a52539892cb6844b55392c5331 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Mon, 27 Nov 2017 22:00:03 +0000 Subject: [PATCH 165/168] [allocator.adaptor.syn] Delete duplicate declarations of relational operators --- source/utilities.tex | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/source/utilities.tex b/source/utilities.tex index b955a9d1f7..59a09a3d45 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -12336,10 +12336,11 @@ \indexhdr{scoped_allocator}% \begin{codeblock} namespace std { - // scoped allocator adaptor + // class template \tcode{scoped allocator adaptor} template class scoped_allocator_adaptor; + // \ref{scoped.adaptor.operators}, scoped allocator operators template bool operator==(const scoped_allocator_adaptor& a, const scoped_allocator_adaptor& b) noexcept; @@ -12461,13 +12462,6 @@ template scoped_allocator_adaptor(OuterAlloc, InnerAllocs...) -> scoped_allocator_adaptor; - - template - bool operator==(const scoped_allocator_adaptor& a, - const scoped_allocator_adaptor& b) noexcept; - template - bool operator!=(const scoped_allocator_adaptor& a, - const scoped_allocator_adaptor& b) noexcept; } \end{codeblock} From 4221ec99c16334eb5743c227c49e0a8e7110fd6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6ppe?= Date: Mon, 27 Nov 2017 23:07:52 +0000 Subject: [PATCH 166/168] [basic] Minor whitespace improvements: align comments better and fit comments on fewer lines --- source/basic.tex | 84 ++++++++++++++++++++++-------------------------- 1 file changed, 39 insertions(+), 45 deletions(-) diff --git a/source/basic.tex b/source/basic.tex index 21b07dafc0..1ae3ad0626 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -221,14 +221,14 @@ move constructor\iref{class.copy}, copy assignment operator\iref{class.copy}, move assignment operator\iref{class.copy}, -or destructor\iref{class.dtor} member functions. \end{note} +or destructor\iref{class.dtor} member functions. +\end{note} \begin{example} Given - \begin{codeblock} #include struct C { - std::string s; // \tcode{std::string} is the standard library class\iref{strings} + std::string s; // \tcode{std::string} is the standard library class\iref{strings} }; int main() { @@ -237,27 +237,26 @@ b = a; } \end{codeblock} - the implementation will implicitly define functions to make the definition of \tcode{C} equivalent to - \begin{codeblock} struct C { std::string s; C() : s() { } C(const C& x): s(x.s) { } C(C&& x): s(static_cast(x.s)) { } - // \tcode{: s(std::move(x.s)) \{ \}} + @\rlap{\normalfont\itshape //}@ : s(std::move(x.s)) { } C& operator=(const C& x) { s = x.s; return *this; } C& operator=(C&& x) { s = static_cast(x.s); return *this; } - // \tcode{\{ s = std::move(x.s); return *this; \}} + @\rlap{\normalfont\itshape //}@ { s = std::move(x.s); return *this; } ~C() { } }; \end{codeblock} \end{example} \pnum -\begin{note} A class name can also be implicitly declared by an +\begin{note} +A class name can also be implicitly declared by an \grammarterm{elaborated-type-specifier}\iref{dcl.type.elab}. \end{note} @@ -315,8 +314,8 @@ \begin{codeblock} struct S { static const int x = 0; }; const int &f(const int &r); -int n = b ? (1, S::x) // \tcode{S::x} is not odr-used here - : f(S::x); // \tcode{S::x} is odr-used here, so a definition is required +int n = b ? (1, S::x) // \tcode{S::x} is not odr-used here + : f(S::x); // \tcode{S::x} is odr-used here, so a definition is required \end{codeblock} \end{example} \end{note} @@ -1251,11 +1250,9 @@ template int h(T); } -int x = f(N::A()); // OK: lookup of \tcode{f} finds nothing, - // \tcode{f} treated as template name -int y = g(N::A()); // OK: lookup of \tcode{g} finds a function, - // \tcode{g} treated as template name -int z = h(N::A()); // error: \tcode{h<} does not begin a \grammarterm{template-id} +int x = f(N::A()); // OK: lookup of \tcode{f} finds nothing, \tcode{f} treated as template name +int y = g(N::A()); // OK: lookup of \tcode{g} finds a function, \tcode{g} treated as template name +int z = h(N::A()); // error: \tcode{h<} does not begin a \grammarterm{template-id} \end{codeblock} The rules in~\ref{basic.lookup.argdep} have no effect on @@ -1268,7 +1265,7 @@ friend void f(A &); operator int(); void g(A a) { - int i = f(a); // \tcode{f} is the typedef, not the friend function: equivalent to \tcode{int(a)} + int i = f(a); // \tcode{f} is the typedef, not the friend function: equivalent to \tcode{int(a)} } }; } @@ -2168,8 +2165,7 @@ \begin{codeblock} struct Node { struct Node* Next; // OK: Refers to \tcode{Node} at global scope - struct Data* Data; // OK: Declares type \tcode{Data} - // at global scope and member \tcode{Data} + struct Data* Data; // OK: Declares type \tcode{Data} at global scope and member \tcode{Data} }; struct Data { @@ -2675,11 +2671,11 @@ union U { X x; float f; }; void tong() { U u = {{ 1 }}; - u.f = 5.f; // OK, creates new subobject of \tcode{u}\iref{class.union} - X *p = new (&u.x) X {2}; // OK, creates new subobject of \tcode{u} - assert(p->n == 2); // OK - assert(*std::launder(&u.x.n) == 2); // OK - assert(u.x.n == 2); // undefined behavior, \tcode{u.x} does not name new subobject + u.f = 5.f; // OK, creates new subobject of \tcode{u}\iref{class.union} + X *p = new (&u.x) X {2}; // OK, creates new subobject of \tcode{u} + assert(p->n == 2); // OK + assert(*std::launder(&u.x.n) == 2); // OK + assert(u.x.n == 2); // undefined behavior, \tcode{u.x} does not name new subobject } \end{codeblock} \end{example} @@ -2714,8 +2710,8 @@ }; int f() { AlignedUnion au; - int *p = new (au.data) int; // OK, \tcode{au.data} provides storage - char *c = new (au.data) char(); // OK, ends lifetime of \tcode{*p} + int *p = new (au.data) int; // OK, \tcode{au.data} provides storage + char *c = new (au.data) char(); // OK, ends lifetime of \tcode{*p} char *d = new (au.data + 1) char(); return *c + *d; // OK } @@ -2723,10 +2719,10 @@ struct A { unsigned char a[32]; }; struct B { unsigned char b[16]; }; A a; -B *b = new (a.a + 8) B; // \tcode{a.a} provides storage for \tcode{*b} -int *p = new (b->b + 4) int; // \tcode{b->b} provides storage for \tcode{*p} - // \tcode{a.a} does not provide storage for \tcode{*p} (directly), - // but \tcode{*p} is nested within \tcode{a} (see below) +B *b = new (a.a + 8) B; // \tcode{a.a} provides storage for \tcode{*b} +int *p = new (b->b + 4) int; // \tcode{b->b} provides storage for \tcode{*p} + // \tcode{a.a} does not provide storage for \tcode{*p} (directly), + // but \tcode{*p} is nested within \tcode{a} (see below) \end{codeblock} \end{example} @@ -2789,12 +2785,11 @@ implementation is allowed to store two objects at the same machine address or not store an object at all if the program cannot observe the difference\iref{intro.execution}.} - \begin{example} \begin{codeblock} static const char test1 = 'x'; static const char test2 = 'x'; -const bool b = &test1 != &test2; // always \tcode{true} +const bool b = &test1 != &test2; // always \tcode{true} \end{codeblock} \end{example} @@ -4415,29 +4410,28 @@ \begin{example} \begin{codeblock} struct S { - S(int i): I(i) { } // full-expression is initialization of \tcode{I} + S(int i): I(i) { } // full-expression is initialization of \tcode{I} int& v() { return I; } ~S() noexcept(false) { } private: int I; }; -S s1(1); // full-expression comprises call of \tcode{S::S(int)} +S s1(1); // full-expression comprises call of \tcode{S::S(int)} void f() { - S s2 = 2; // full-expression comprises call of \tcode{S::S(int)} - if (S(3).v()) // full-expression includes lvalue-to-rvalue and - // \tcode{int} to \tcode{bool} conversions, performed before - // temporary is deleted at end of full-expression + S s2 = 2; // full-expression comprises call of \tcode{S::S(int)} + if (S(3).v()) // full-expression includes lvalue-to-rvalue and \tcode{int} to \tcode{bool} conversions, + // performed before temporary is deleted at end of full-expression { } - bool b = noexcept(S()); // exception specification of destructor of \tcode{S} - // considered for \tcode{noexcept} + bool b = noexcept(S()); // exception specification of destructor of \tcode{S} considered for \tcode{noexcept} + // full-expression is destruction of \tcode{s2} at end of block } struct B { B(S = S(0)); }; -B b[2] = { B(), B() }; // full-expression is the entire initialization - // including the destruction of temporaries +B b[2] = { B(), B() }; // full-expression is the entire initialization + // including the destruction of temporaries \end{codeblock} \end{example} @@ -4527,11 +4521,11 @@ \begin{codeblock} void g(int i) { - i = 7, i++, i++; // \tcode{i} becomes \tcode{9} + i = 7, i++, i++; // \tcode{i} becomes \tcode{9} - i = i++ + 1; // the value of \tcode{i} is incremented - i = i++ + i; // the behavior is undefined - i = i + 1; // the value of \tcode{i} is incremented + i = i++ + 1; // the value of \tcode{i} is incremented + i = i++ + i; // the behavior is undefined + i = i + 1; // the value of \tcode{i} is incremented } \end{codeblock} \end{example} From 213364dd9b633a1ad84358450ec1585c5a45d729 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Mon, 27 Nov 2017 18:24:09 -0800 Subject: [PATCH 167/168] Update Makefile to rebuild xrefdelta. --- source/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/source/Makefile b/source/Makefile index faa325f681..62957b3d6a 100644 --- a/source/Makefile +++ b/source/Makefile @@ -43,6 +43,7 @@ reindex: makeindex grammarindex makeindex impldefindex makeindex -s basic.gst -o xrefindex.gls xrefindex.glo + makeindex -s basic.gst -o xrefdelta.gls xrefdelta.glo $(STDPDF) $(STDPDF) From 17a995317d4a5464f2397e11c177803f2557fa15 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Mon, 27 Nov 2017 18:29:36 -0800 Subject: [PATCH 168/168] Update configuration to build new working draft n4713. Add new papers n4713 and n4714 (editors' report). --- papers/n4713.pdf | Bin 0 -> 5630363 bytes papers/n4714.html | 732 ++++++++++++++++++++++++++++++++++++++++++++++ papers/n4714.md | 591 +++++++++++++++++++++++++++++++++++++ source/config.tex | 2 +- 4 files changed, 1324 insertions(+), 1 deletion(-) create mode 100644 papers/n4713.pdf create mode 100644 papers/n4714.html create mode 100644 papers/n4714.md diff --git a/papers/n4713.pdf b/papers/n4713.pdf new file mode 100644 index 0000000000000000000000000000000000000000..254570829e30882caa8736ab7c8e08e53f80ee96 GIT binary patch literal 5630363 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ᵱW@o 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�DPT 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

(vl` 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

2ls# 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�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

-AQPp3?gP%MnC6+e|KmYy`{Mzk|S61ROEjDA0#C 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�WQ8xP(vmI>O^~H9B_kbm;SHGded5 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 `Q1HJ5Y`sK;F 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

    %!PTM;5 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%0A?Uo<`=}`~q?t*OnMfaiR~uyx-rCZo=OFBzKB$ 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�K$0I}U5|Dkw^@-ah(uk&9=gH8@cL^Ci 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

    @K};&yZ0c0mrJ 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]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⋘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

    k==zirMnC6Yr?LGTgR=^FmimlD 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%0DaCE+Y${>_}+Y%m&JRIybzuQ3O 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 z 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

    @*v#wZnZ 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

    JW)oJ0t%ZrC1YW9(CES_Xek_t9vC)fV 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%0AEf~;m#x1qw<3AS)CBW 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

    ay=0VW0 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

    jsD^&8cP1`u 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 >_`fQzKV^juQV|xxU0yM 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%0ArVUNt8ufAx67W$$ zjB#U}4Y8r`cy>fHr3*Paiwo@)MxcNJC2Tzt(%446e2(&F4?yukn{+IRE5AdPRt>xC z30Azl^u$SJ(iB5>gu~6`K&iH1ZU~AbvJ){Y*x`mIbh%0~PnctK8Wg3mR6MAP{2dhe zquZkt3SfFPL?Wb8ZY;+%v^%YA6I2Kev1xrVyh1_{gow984_NDP%MN-`}7h2o4%3VeAYmR`bteMO?ArCOEzGBn#*uge>O zMTAL&#j>bqB>zk*qdJB`(Tr>=MI6@*fbb8D#%-F@v>{KJ1kg+3hsf{Bq9QSjt+j^i zHg2d89EVJpCE+}XWhs5w>hv1K=@AXB zTFL~i2QXtGl#b&wOzy~)#G?`uhaWB%0}TPTaa;KpMGa}d&n^kI&O5PiU-!JoCkmiZO#QGtx~5oS5fEe`e$ zd0(9ydz{J0Y&|TCQyyJcCira!0UMno~yL^gyvD(Qv!v_ z%XBvpz+A>kym=V-Wp`$R9Vb&yGvR90Qg5bc^m^D`CfO?KQg1|W*?vBo2ZG%Es!%6S z*9I+pJmxFhHv0_UEM4l`Ie+Rp)>8hBe40GnFLs(`(%noY@xyu~38*D`m)q4JbUKAw zko1&yS8|oR$n}uQ`g1VTZ&{@cvCG0KozA}`zB%*w@w`9t>ne52c@Nl+U zj)jezY>%mtrMhSijyFT~khPcejV4$@dNH??_OWmHV1nXJ*FfCeUu6LPpC5I?_sr0t zELA=jfK0?uu$=JMp=y}SI0&&%K6gKSof|Gze4Xsvw4Et(tCuiGIlnyLl8qctn0ob| z9#6mZ5k5c7pLTWL%`89d>{gY5&EvSq+?3hbG8pMbxHV)>Kf4hM-MqlOB@Hmi6p8_U z9vfTt>l8lg9c%2a*X`lu4=CxcCJnED_y>zGrX@IZOgwo2SN^wD07!d#jD zaXB?gYlm-s;5|e?WPPKLKk(EHo|wtrV&8ayw_`sL_VTmL<}j2;RybSu42mMhy&BX2 zELA$+y)~}kvP-c09F}6)jjr^lG4#f<>tg5``;sE@N5ND3oEkj5)+>H^sL+4GkfAxc zBrJvd#f|oWX()yT?1xkbpjWH9$u}ZeM|G=Aq1a)R{-~LPvyV68sy4sFHzp!>AE4%+ z;aoLGEJcR~mBdwEHb!>K0_*yS?=1&iU^_sWVFF2w>}P=0N7k7Cmt^&1gdl;F<1Qc zg^F2XrkERhH*jTG_t3h%o{-6XYgU*b?{O}SIjDgLgtJIAT@^*#@I@9Uyw|)o0&2id z`iS+%m`1FgRPl;~tzG(_(75J;X6~f2x7`eZlPfBNWB=>g*Zm?IR<%gB0F0h6?JlHG zxRg4u+u_UmF5a=t#?y0GQtssi$%MSaZgneD1~cB35ZNl{>>304OjEX}$_DQfcyak? z@LC+Ey}h_E!j4Aw7qowV#p|*hg6#ye1C|GZz=hAW{`5+VY^~e=gWUQc;kX?1z5hjd0Ergp>yUQV# zO8X4e@p>|@cay{Yqxm2rh&cUpVB0#EAYV@(K@!Y+}@97~#k5t+&{U~FN*aFR$3I?g|3Ic|k`zJ#IsFOrfidbDLKYY%#9u+k9 z&KS;PIcssyvbsΦ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

    ;iCCCIvHfCFj4MV8+MjWB7L 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%0A(z+j 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