From 1f1057df7edabb3a78ffd17ce3b2d566409ea8e8 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Thu, 31 Oct 2024 01:14:53 -0500 Subject: [PATCH 01/36] Update --- cxxdraft-htmlgen | 2 +- draft | 2 +- gen_html.sh | 2 +- gen_html_std.sh | 11 +- gh-pages | 2 +- htmlgen.patch | 5824 +++++++++++++++++++++++++++++----------------- lastbuild.sig | 6 +- 7 files changed, 3689 insertions(+), 2160 deletions(-) diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen index f07f492411..dc6b69f5e4 160000 --- a/cxxdraft-htmlgen +++ b/cxxdraft-htmlgen @@ -1 +1 @@ -Subproject commit f07f4924114021f350a3294cdcc56ab6f2e41dc5 +Subproject commit dc6b69f5e4843cb603137f3dda69b9bf3e035d3d diff --git a/draft b/draft index 9243ba5bef..bf43925ff0 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 9243ba5befaea8fd3e878e6114942db8d556a6e0 +Subproject commit bf43925ff0d9e80997918e98989892b4c7bf15f7 diff --git a/gen_html.sh b/gen_html.sh index 2637016d31..dea7f5a73c 100755 --- a/gen_html.sh +++ b/gen_html.sh @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/sh -e git submodule foreach 'git pull origin || :' diff --git a/gen_html_std.sh b/gen_html_std.sh index e8811bd628..c887cd029b 100755 --- a/gen_html_std.sh +++ b/gen_html_std.sh @@ -46,13 +46,12 @@ latexmk -pdf std cp std.pdf std_orig.pdf # create the "annex-f" file that maps stable names to section numbers - grep newlabel *.aux \ -| sed 's/\\newlabel{\([^}]*\)}.*TitleReference {\([^}]*\)}.*/\1 \2/' \ -| sed 's/\\newlabel{\([^}]*\)}{{\(Clause\|Annex\) \([^}]*\)}.*/\1 \3/' \ -| grep -v "aux:tab:" \ -| grep -v "aux:fig:" \ -| sed 's/\(.*\).aux://' \ + grep '^\\newlabel{' *.aux \ +| grep -v '\\newlabel{\(fig\|tab\):' \ +| sed 's/^.*\.aux://' \ +| sed 's/^\\newlabel{\([^}]*\)}{{\([^}]*\)}.*/\1 \2/' \ | grep -v '^\\' \ +| sed 's/\(Clause\|Annex\) //' \ | sort > annex-f if [ -f ../../htmlgen.patch ] diff --git a/gh-pages b/gh-pages index d450062edb..5fde7c50be 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit d450062edb14dcb41d6eadea9f7603c8ccf8a476 +Subproject commit 5fde7c50bee1e8b35d2284c7c787c600962314a0 diff --git a/htmlgen.patch b/htmlgen.patch index 4c219415d7..347eea8f3b 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,298 +1,17 @@ -From 0c012bd532f590e4a42346ce12466c9283004742 Mon Sep 17 00:00:00 2001 +From f63094e68c8868dfcc6c7d83f4c237eba79ab940 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 09:22:46 +0200 -Subject: [PATCH 01/18] [exec] Index many library names. +Subject: [PATCH 01/14] [exec] Index many library names. --- - source/exec.tex | 202 ++++++++++++++++++++++++------------------------ - 1 file changed, 101 insertions(+), 101 deletions(-) + source/exec.tex | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/exec.tex b/source/exec.tex -index 2b9c50a4..b33f50a2 100644 +index 142f9c1e..921ec28c 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -434,13 +434,13 @@ namespace std { - concept @\exposconceptnc{queryable}@ = @\seebelownc@; // \expos - - // \ref{exec.queries}, queries -- struct forwarding_query_t { @\unspec@ }; -- struct get_allocator_t { @\unspec@ }; -- struct get_stop_token_t { @\unspec@ }; -+ struct @\libglobal{forwarding_query_t}@ { @\unspec@ }; -+ struct @\libglobal{get_allocator_t}@ { @\unspec@ }; -+ struct @\libglobal{get_stop_token_t}@ { @\unspec@ }; - -- inline constexpr forwarding_query_t forwarding_query{}; -- inline constexpr get_allocator_t get_allocator{}; -- inline constexpr get_stop_token_t get_stop_token{}; -+ inline constexpr forwarding_query_t @\libglobal{forwarding_query}@{}; -+ inline constexpr get_allocator_t @\libglobal{get_allocator}@{}; -+ inline constexpr get_stop_token_t @\libglobal{get_stop_token}@{}; - - template - using stop_token_of_t = remove_cvref_t()))>; -@@ -451,39 +451,39 @@ namespace std { - - namespace std::execution { - // \ref{exec.queries}, queries -- struct get_domain_t { @\unspec@ }; -- struct get_scheduler_t { @\unspec@ }; -- struct get_delegation_scheduler_t { @\unspec@ }; -- struct get_forward_progress_guarantee_t { @\unspec@ }; -+ struct @\libglobal{get_domain_t}@ { @\unspec@ }; -+ struct @\libglobal{get_scheduler_t}@ { @\unspec@ }; -+ struct @\libglobal{get_delegation_scheduler_t}@ { @\unspec@ }; -+ struct @\libglobal{get_forward_progress_guarantee_t}@ { @\unspec@ }; - template -- struct get_completion_scheduler_t { @\unspec@ }; -+ struct @\libglobal{get_completion_scheduler_t}@ { @\unspec@ }; - -- inline constexpr get_domain_t get_domain{}; -- inline constexpr get_scheduler_t get_scheduler{}; -- inline constexpr get_delegation_scheduler_t get_delegation_scheduler{}; -+ inline constexpr get_domain_t @\libglobal{get_domain}@{}; -+ inline constexpr get_scheduler_t @\libglobal{get_scheduler}@{}; -+ inline constexpr get_delegation_scheduler_t @\libglobal{get_delegation_scheduler}@{}; - enum class forward_progress_guarantee; -- inline constexpr get_forward_progress_guarantee_t get_forward_progress_guarantee{}; -+ inline constexpr get_forward_progress_guarantee_t @\libglobal{get_forward_progress_guarantee}@{}; - template -- constexpr get_completion_scheduler_t get_completion_scheduler{}; -+ constexpr get_completion_scheduler_t @\libglobal{get_completion_scheduler}@{}; - -- struct empty_env {}; -- struct get_env_t { @\unspec@ }; -- inline constexpr get_env_t get_env{}; -+ struct @\libglobal{empty_env}@ {}; -+ struct @\libglobal{get_env_t}@ { @\unspec@ }; -+ inline constexpr get_env_t @\libglobal{get_env}@{}; - - template -- using env_of_t = decltype(get_env(declval())); -+ using @\libglobal{env_of_t}@ = decltype(get_env(declval())); - - // \ref{exec.domain.default}, execution domains - struct default_domain; - - // \ref{exec.sched}, schedulers -- struct scheduler_t {}; -+ struct @\libglobal{scheduler_t}@ {}; - - template - concept @\libconcept{scheduler}@ = @\seebelow@; - - // \ref{exec.recv}, receivers -- struct receiver_t {}; -+ struct @\libglobal{receiver_t}@ {}; - - template - concept @\libconcept{receiver}@ = @\seebelow@; -@@ -491,25 +491,25 @@ namespace std::execution { - template - concept @\libconcept{receiver_of}@ = @\seebelow@; - -- struct set_value_t { @\unspec@ }; -- struct set_error_t { @\unspec@ }; -- struct set_stopped_t { @\unspec@ }; -+ struct @\libglobal{set_value_t}@ { @\unspec@ }; -+ struct @\libglobal{set_error_t}@ { @\unspec@ }; -+ struct @\libglobal{set_stopped_t}@ { @\unspec@ }; - -- inline constexpr set_value_t set_value{}; -- inline constexpr set_error_t set_error{}; -- inline constexpr set_stopped_t set_stopped{}; -+ inline constexpr set_value_t @\libglobal{set_value}@{}; -+ inline constexpr set_error_t @\libglobal{set_error}@{}; -+ inline constexpr set_stopped_t @\libglobal{set_stopped}@{}; - - // \ref{exec.opstate}, operation states -- struct operation_state_t {}; -+ struct @\libglobal{operation_state_t}@ {}; - - template - concept @\libconcept{operation_state}@ = @\seebelow@; - -- struct start_t; -- inline constexpr start_t start{}; -+ struct @\libglobal{start_t}@; -+ inline constexpr start_t @\libglobal{start}@{}; - - // \ref{exec.snd}, senders -- struct sender_t {}; -+ struct @\libglobal{sender_t}@ {}; - - template - concept @\libconcept{sender}@ = @\seebelow@; -@@ -578,67 +578,67 @@ namespace std::execution { - Domain dom, Tag, Sndr&& sndr, Args&&... args) noexcept(@\seebelow@); - - // \ref{exec.connect}, the connect sender algorithm -- struct connect_t; -- inline constexpr connect_t connect{}; -+ struct @\libglobal{connect_t}@; -+ inline constexpr connect_t @\libglobal{connect}@{}; - - template -- using connect_result_t = -+ using @\libglobal{connect_result_t}@ = - decltype(connect(declval(), declval())); - - // \ref{exec.factories}, sender factories -- struct just_t { @\unspec@ }; -- struct just_error_t { @\unspec@ }; -- struct just_stopped_t { @\unspec@ }; -- struct schedule_t { @\unspec@ }; -+ struct @\libglobal{just_t}@ { @\unspec@ }; -+ struct @\libglobal{just_error_t}@ { @\unspec@ }; -+ struct @\libglobal{just_stopped_t}@ { @\unspec@ }; -+ struct @\libglobal{schedule_t}@ { @\unspec@ }; - -- inline constexpr just_t just{}; -- inline constexpr just_error_t just_error{}; -- inline constexpr just_stopped_t just_stopped{}; -- inline constexpr schedule_t schedule{}; -- inline constexpr @\unspec@ read_env{}; -+ inline constexpr just_t @\libglobal{just}@{}; -+ inline constexpr just_error_t @\libglobal{just_error}@{}; -+ inline constexpr just_stopped_t @\libglobal{just_stopped}@{}; -+ inline constexpr schedule_t @\libglobal{schedule}@{}; -+ inline constexpr @\unspec@ @\libglobal{read_env}@{}; - - template<@\libconcept{scheduler}@ Sndr> -- using schedule_result_t = decltype(schedule(declval())); -+ using @\libglobal{schedule_result_t}@ = decltype(schedule(declval())); - - // \ref{exec.adapt}, sender adaptors - template<@\exposconcept{class-type}@ D> -- struct sender_adaptor_closure { }; -- -- struct starts_on_t { @\unspec@ }; -- struct continues_on_t { @\unspec@ }; -- struct on_t { @\unspec@ }; -- struct schedule_from_t { @\unspec@ }; -- struct then_t { @\unspec@ }; -- struct upon_error_t { @\unspec@ }; -- struct upon_stopped_t { @\unspec@ }; -- struct let_value_t { @\unspec@ }; -- struct let_error_t { @\unspec@ }; -- struct let_stopped_t { @\unspec@ }; -- struct bulk_t { @\unspec@ }; -- struct split_t { @\unspec@ }; -- struct when_all_t { @\unspec@ }; -- struct when_all_with_variant_t { @\unspec@ }; -- struct into_variant_t { @\unspec@ }; -- struct stopped_as_optional_t { @\unspec@ }; -- struct stopped_as_error_t { @\unspec@ }; -- -- inline constexpr starts_on_t starts_on{}; -- inline constexpr continues_on_t continues_on{}; -- inline constexpr on_t on{}; -- inline constexpr schedule_from_t schedule_from{}; -- inline constexpr then_t then{}; -- inline constexpr upon_error_t upon_error{}; -- inline constexpr upon_stopped_t upon_stopped{}; -- inline constexpr let_value_t let_value{}; -- inline constexpr let_error_t let_error{}; -- inline constexpr let_stopped_t let_stopped{}; -- inline constexpr bulk_t bulk{}; -- inline constexpr split_t split{}; -- inline constexpr when_all_t when_all{}; -- inline constexpr when_all_with_variant_t when_all_with_variant{}; -- inline constexpr into_variant_t into_variant{}; -- inline constexpr stopped_as_optional_t stopped_as_optional{}; -- inline constexpr stopped_as_error_t stopped_as_error{}; -+ struct @\libglobal{sender_adaptor_closure}@ { }; -+ -+ struct @\libglobal{starts_on_t}@ { @\unspec@ }; -+ struct @\libglobal{continues_on_t}@ { @\unspec@ }; -+ struct @\libglobal{on_t}@ { @\unspec@ }; -+ struct @\libglobal{schedule_from_t}@ { @\unspec@ }; -+ struct @\libglobal{then_t}@ { @\unspec@ }; -+ struct @\libglobal{upon_error_t}@ { @\unspec@ }; -+ struct @\libglobal{upon_stopped_t}@ { @\unspec@ }; -+ struct @\libglobal{let_value_t}@ { @\unspec@ }; -+ struct @\libglobal{let_error_t}@ { @\unspec@ }; -+ struct @\libglobal{let_stopped_t}@ { @\unspec@ }; -+ struct @\libglobal{bulk_t}@ { @\unspec@ }; -+ struct @\libglobal{split_t}@ { @\unspec@ }; -+ struct @\libglobal{when_all_t}@ { @\unspec@ }; -+ struct @\libglobal{when_all_with_variant_t}@ { @\unspec@ }; -+ struct @\libglobal{into_variant_t}@ { @\unspec@ }; -+ struct @\libglobal{stopped_as_optional_t}@ { @\unspec@ }; -+ struct @\libglobal{stopped_as_error_t}@ { @\unspec@ }; -+ -+ inline constexpr starts_on_t @\libglobal{starts_on}@{}; -+ inline constexpr continues_on_t @\libglobal{continues_on}@{}; -+ inline constexpr on_t @\libglobal{on}@{}; -+ inline constexpr schedule_from_t @\libglobal{schedule_from}@{}; -+ inline constexpr then_t @\libglobal{then}@{}; -+ inline constexpr upon_error_t @\libglobal{upon_error}@{}; -+ inline constexpr upon_stopped_t @\libglobal{upon_stopped}@{}; -+ inline constexpr let_value_t @\libglobal{let_value}@{}; -+ inline constexpr let_error_t @\libglobal{let_error}@{}; -+ inline constexpr let_stopped_t @\libglobal{let_stopped}@{}; -+ inline constexpr bulk_t @\libglobal{bulk}@{}; -+ inline constexpr split_t @\libglobal{split}@{}; -+ inline constexpr when_all_t @\libglobal{when_all}@{}; -+ inline constexpr when_all_with_variant_t @\libglobal{when_all_with_variant}@{}; -+ inline constexpr into_variant_t @\libglobal{into_variant}@{}; -+ inline constexpr stopped_as_optional_t @\libglobal{stopped_as_optional}@{}; -+ inline constexpr stopped_as_error_t @\libglobal{stopped_as_error}@{}; - - // \ref{exec.util}, sender and receiver utilities - // \ref{exec.util.cmplsig} -@@ -646,7 +646,7 @@ namespace std::execution { - concept @\exposconceptnc{completion-signature}@ = @\seebelownc@; // \expos - - template<@\exposconcept{completion-signature}@... Fns> -- struct completion_signatures {}; -+ struct @\libglobal{completion_signatures}@ {}; - - template - concept @\exposconceptnc{valid-completion-signatures}@ = @\seebelownc@; // \expos -@@ -679,17 +679,17 @@ namespace std::execution { - - namespace std::this_thread { - // \ref{exec.consumers}, consumers -- struct sync_wait_t { @\unspec@ }; -- struct sync_wait_with_variant_t { @\unspec@ }; -+ struct @\libglobal{sync_wait_t}@ { @\unspec@ }; -+ struct @\libglobal{sync_wait_with_variant_t}@ { @\unspec@ }; - -- inline constexpr sync_wait_t sync_wait{}; -- inline constexpr sync_wait_with_variant_t sync_wait_with_variant{}; -+ inline constexpr sync_wait_t @\libglobal{sync_wait}@{}; -+ inline constexpr sync_wait_with_variant_t @\libglobal{sync_wait_with_variant}@{}; - } - - namespace std::execution { - // \ref{exec.as.awaitable} -- struct as_awaitable_t { @\unspec@ }; -- inline constexpr as_awaitable_t as_awaitable{}; -+ struct @\libglobal{as_awaitable_t}@ { @\unspec@ }; -+ inline constexpr as_awaitable_t @\libglobal{as_awaitable}@{}; - - // \ref{exec.with.awaitable.senders} - template<@\exposconcept{class-type}@ Promise> -@@ -908,7 +908,7 @@ a core constant expression and has value \tcode{true}. - - \begin{codeblock} - namespace std::execution { -- enum class forward_progress_guarantee { -+ enum class @\libglobal{forward_progress_guarantee}@ { - concurrent, - parallel, - weakly_parallel -@@ -2145,7 +2145,7 @@ its members need not be defined. - \pnum - \begin{codeblock} - namespace std::execution { -- struct default_domain { -+ struct @\libglobal{default_domain}@ { - template<@\libconcept{sender}@ Sndr, @\exposconcept{queryable}@... Env> - requires (sizeof...(Env) <= 1) - static constexpr @\libconcept{sender}@ decltype(auto) transform_sender(Sndr&& sndr, const Env&... env) -@@ -2164,7 +2164,7 @@ namespace std::execution { +@@ -2165,7 +2165,7 @@ namespace std::execution { \begin{itemdecl} template<@\libconcept{sender}@ Sndr, @\exposconcept{queryable}@... Env> requires (sizeof...(Env) <= 1) @@ -301,8 +20,8 @@ index 2b9c50a4..b33f50a2 100644 noexcept(@\seebelow@); \end{itemdecl} -@@ -2187,7 +2187,7 @@ The exception specification is equivalent to \tcode{noexcept(e)}. - +@@ -2190,7 +2190,7 @@ The exception specification is equivalent to \tcode{noexcept(e)}. + \indexlibrarymember{transform_env}{default_domain}% \begin{itemdecl} template<@\libconcept{sender}@ Sndr, @\exposconcept{queryable}@ Env> - constexpr @\exposconcept{queryable}@ decltype(auto) transform_env(Sndr&& sndr, Env&& env) noexcept; @@ -310,8 +29,8 @@ index 2b9c50a4..b33f50a2 100644 \end{itemdecl} \begin{itemdescr} -@@ -2210,7 +2210,7 @@ otherwise, \tcode{static_cast(std::forward(env))}. - +@@ -2214,7 +2214,7 @@ otherwise, \tcode{static_cast(std::forward(env))}. + \indexlibrarymember{apply_sender}{default_domain}% \begin{itemdecl} template -constexpr decltype(auto) apply_sender(Tag, Sndr&& sndr, Args&&... args) @@ -319,7 +38,7 @@ index 2b9c50a4..b33f50a2 100644 noexcept(@\seebelow@); \end{itemdecl} -@@ -2240,7 +2240,7 @@ The exception specification is equivalent to \tcode{noexcept(e)}. +@@ -2245,7 +2245,7 @@ The exception specification is equivalent to \tcode{noexcept(e)}. namespace std::execution { template requires (sizeof...(Env) <= 1) @@ -328,7 +47,7 @@ index 2b9c50a4..b33f50a2 100644 noexcept(@\seebelow@); } \end{itemdecl} -@@ -2276,7 +2276,7 @@ The exception specification is equivalent to +@@ -2282,7 +2282,7 @@ The exception specification is equivalent to \begin{itemdecl} namespace std::execution { template @@ -337,34 +56,7 @@ index 2b9c50a4..b33f50a2 100644 } \end{itemdecl} -@@ -2305,7 +2305,7 @@ default_domain().transform_env(std::forward(sndr), std::forward(env)) - \begin{itemdecl} - namespace std::execution { - template -- constexpr decltype(auto) apply_sender(Domain dom, Tag, Sndr&& sndr, Args&&... args) -+ constexpr decltype(auto) @\libglobal{apply_sender}@(Domain dom, Tag, Sndr&& sndr, Args&&... args) - noexcept(@\seebelow@); - } - \end{itemdecl} -@@ -4966,7 +4966,7 @@ to hold the work units to make scheduling allocation-free. - - \begin{codeblock} - namespace std::execution { -- class run_loop { -+ class @\libglobal{run_loop}@ { - // \ref{exec.run.loop.types}, associated types - class @\exposid{run-loop-scheduler}@; // \expos - class @\exposid{run-loop-sender}@; // \expos -@@ -5396,7 +5396,7 @@ the \tcode{unhandled_stopped} of the coroutine caller's promise type is called. - \begin{codeblock} - namespace std::execution { - template<@\exposconcept{class-type}@ Promise> -- struct with_awaitable_senders { -+ struct @\libglobal{with_awaitable_senders}@ { - template - requires (!@\libconcept{same_as}@) - void set_continuation(coroutine_handle h) noexcept; -@@ -5425,7 +5425,7 @@ namespace std::execution { +@@ -5438,7 +5438,7 @@ namespace std::execution { \begin{itemdecl} template requires (!@\libconcept{same_as}@) @@ -373,8 +65,8 @@ index 2b9c50a4..b33f50a2 100644 \end{itemdecl} \begin{itemdescr} -@@ -5447,7 +5447,7 @@ if constexpr ( requires(OtherPromise& other) { other.unhandled_stopped(); } ) { - +@@ -5461,7 +5461,7 @@ if constexpr ( requires(OtherPromise& other) { other.unhandled_stopped(); } ) { + \indexlibrarymember{await_transform}{with_awaitable_senders}% \begin{itemdecl} template -@\exposid{call-result-t}@ await_transform(Value&& value); @@ -386,74 +78,21 @@ index 2b9c50a4..b33f50a2 100644 2.34.1 -From c2a545c674dc40d4088aae725f0b56e385b0ae15 Mon Sep 17 00:00:00 2001 -From: Eelis van der Weegen -Date: Sun, 28 Jul 2024 10:46:28 +0200 -Subject: [PATCH 02/18] Use \libglobal more. - ---- - source/meta.tex | 12 ++++-------- - 1 file changed, 4 insertions(+), 8 deletions(-) - -diff --git a/source/meta.tex b/source/meta.tex -index 8903d5be..a3e8f74f 100644 ---- a/source/meta.tex -+++ b/source/meta.tex -@@ -1907,21 +1907,18 @@ perform other modifications of a type. - \lhdr{Template} & \rhdr{Comments} \\ \capsep - \endhead - --\indexlibraryglobal{type_identity}% - \tcode{template\br -- struct type_identity;} -+ struct @\libglobal{type_identity}@;} - & - The member typedef \tcode{type} denotes \tcode{T}. \\ \rowsep - --\indexlibraryglobal{remove_cvref}% --\tcode{template\br struct remove_cvref;} -+\tcode{template\br struct @\libglobal{remove_cvref}@;} - & - The member typedef \tcode{type} denotes - \tcode{remove_cv_t>}. - \\ \rowsep - --\indexlibraryglobal{decay}% --\tcode{template\br struct decay;} -+\tcode{template\br struct @\libglobal{decay}@;} - & - Let \tcode{U} be \tcode{remove_reference_t}. If \tcode{is_array_v} is - \tcode{true}, the member typedef \tcode{type} denotes -@@ -1937,8 +1934,7 @@ argument passing. - \end{tailnote} - \\ \rowsep - --\indexlibraryglobal{enable_if}% --\tcode{template} \tcode{struct enable_if;} -+\tcode{template} \tcode{struct @\libglobal{enable_if}@;} - & - If \tcode{B} is \tcode{true}, the member typedef \tcode{type} - denotes \tcode{T}; otherwise, there shall be no member --- -2.34.1 - - -From 9abb92714a9fccd120439a532ae22d160faba12d Mon Sep 17 00:00:00 2001 +From 930e470e04a01db269936a4a3f4292da6002314e Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 5 Dec 2018 01:09:09 +0100 -Subject: [PATCH 03/18] Use \range where appropriate. +Subject: [PATCH 02/14] Use \range where appropriate. --- source/algorithms.tex | 6 +++--- - source/regex.tex | 2 +- source/strings.tex | 8 ++++---- - 3 files changed, 8 insertions(+), 8 deletions(-) + 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 62f32fb3..61093cce 100644 +index d723b7e1..94b6ff03 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -7417,7 +7417,7 @@ The elements \tcode{e} of \range{first}{last} +@@ -7584,7 +7584,7 @@ The elements \tcode{e} of \range{first}{last} are partitioned with respect to the expressions \tcode{bool(invoke(comp, invoke(proj, e), value))} and \tcode{!bool(invoke(comp, value, invoke(proj, e)))}. @@ -462,7 +101,7 @@ index 62f32fb3..61093cce 100644 \tcode{bool(comp(e, value))} implies \tcode{!bool(comp(\brk{}value, e))} for the overloads in namespace \tcode{std}. -@@ -7484,7 +7484,7 @@ The elements \tcode{e} of \range{first}{last} +@@ -7651,7 +7651,7 @@ The elements \tcode{e} of \range{first}{last} are partitioned with respect to the expressions \tcode{bool(invoke(comp, invoke(proj, e), value))} and \tcode{!bool(invoke(comp, value, invoke(proj, e)))}. @@ -471,7 +110,7 @@ index 62f32fb3..61093cce 100644 \tcode{bool(comp(e, value))} implies \tcode{!bool(comp(\brk{}value, e))} for the overloads in namespace \tcode{std}. -@@ -10670,7 +10670,7 @@ move assigns from \tcode{val} to \tcode{acc}. +@@ -10837,7 +10837,7 @@ move assigns from \tcode{val} to \tcode{acc}. \pnum For the overloads with an \tcode{ExecutionPolicy} and a non-empty range, performs \tcode{*result = *first}. @@ -480,24 +119,11 @@ index 62f32fb3..61093cce 100644 performs \tcode{*(result + d) = binary_op(*(first + d), *(first + (d - 1)))}. \pnum -diff --git a/source/regex.tex b/source/regex.tex -index d9a53ba8..cae1466d 100644 ---- a/source/regex.tex -+++ b/source/regex.tex -@@ -3430,7 +3430,7 @@ iterator then returns \tcode{*this}. - In all cases in which the call to \tcode{regex_search} returns \tcode{true}, - \tcode{match.prefix().first} shall be equal to the previous value of - \tcode{match[0].second}, and for each index \tcode{i} in the half-open range --\tcode{[0, match.size())} for which \tcode{match[i].matched} is \tcode{true}, -+\range{0}{match.size()} for which \tcode{match[i].matched} is \tcode{true}, - \tcode{match.position(i)} - shall return \tcode{distance(begin, match[i].\brk{}first)}. - diff --git a/source/strings.tex b/source/strings.tex -index 2dd8539b..4e991305 100644 +index c0dc123c..7b6a11a4 100644 --- a/source/strings.tex +++ b/source/strings.tex -@@ -153,19 +153,19 @@ the smallest \tcode{i} such that \tcode{X::eq(p[i],charT())} is \tcode{true}. & +@@ -151,19 +151,19 @@ the smallest \tcode{i} such that \tcode{X::eq(p[i],charT())} is \tcode{true}. & the smallest \tcode{q} in \tcode{[p,p+n)} such that \tcode{X::eq(*q,c)} is \tcode{true}, \tcode{nullptr} otherwise. & linear \\ \rowsep \tcode{X::move(s,p,n)} & \tcode{X::char_type*} & @@ -525,10 +151,10 @@ index 2dd8539b..4e991305 100644 2.34.1 -From 74898a9dacd6491e67c920922b87a1a33628074a Mon Sep 17 00:00:00 2001 +From b8f3bb8597c30f14d3b3ebfc427b335623b6d568 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sat, 7 Jan 2017 01:59:05 +0100 -Subject: [PATCH 04/18] [rand.req.eng] Omit superfluous dollar-math wrapping +Subject: [PATCH 03/14] [rand.req.eng] Omit superfluous dollar-math wrapping inside \bigoh. [rejected upstream: 1340] --- @@ -536,10 +162,10 @@ Subject: [PATCH 04/18] [rand.req.eng] Omit superfluous dollar-math wrapping 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/numerics.tex b/source/numerics.tex -index 83b9f8dd..64905b4e 100644 +index e8afb21e..86b42943 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -1933,19 +1933,19 @@ according to \ref{strings} and \ref{input.output}. +@@ -1934,19 +1934,19 @@ according to \ref{strings} and \ref{input.output}. with the same initial state as all other default-constructed engines of type \tcode{E}. @@ -562,7 +188,7 @@ index 83b9f8dd..64905b4e 100644 \\ \rowsep \tcode{E(q)}% \begin{footnote} -@@ -2020,12 +2020,12 @@ according to \ref{strings} and \ref{input.output}. +@@ -2021,12 +2021,12 @@ according to \ref{strings} and \ref{input.output}. returns \tcode{true} if $S_x = S_y$; else returns \tcode{false}. @@ -577,7 +203,7 @@ index 83b9f8dd..64905b4e 100644 \\ \rowsep \tcode{os << x}% & reference to the type of \tcode{os} -@@ -2040,7 +2040,7 @@ according to \ref{strings} and \ref{input.output}. +@@ -2041,7 +2041,7 @@ according to \ref{strings} and \ref{input.output}. by one or more space characters. \ensures The \tcode{os.}\textit{fmtflags} and fill character are unchanged. @@ -586,7 +212,7 @@ index 83b9f8dd..64905b4e 100644 \\ \rowsep \tcode{is >> v}% & reference to the type of \tcode{is} -@@ -2070,7 +2070,7 @@ according to \ref{strings} and \ref{input.output}. +@@ -2071,7 +2071,7 @@ according to \ref{strings} and \ref{input.output}. were respectively the same as those of \tcode{is}. \ensures The \tcode{is.}\textit{fmtflags} are unchanged. @@ -599,10 +225,10 @@ index 83b9f8dd..64905b4e 100644 2.34.1 -From fe215abe7662bcad9b248d71d23daf13badbfeb1 Mon Sep 17 00:00:00 2001 +From c1c4c270df8c754207eedfb3070a55aa3f9b4950 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 -Subject: [PATCH 05/18] Reduce excessive indentation of comments. Helps layout +Subject: [PATCH 04/14] Reduce excessive indentation of comments. Helps layout on smaller (e.g. half-screen) window sizes. --- @@ -611,7 +237,7 @@ Subject: [PATCH 05/18] Reduce excessive indentation of comments. Helps layout 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index 9524265f..be6d2136 100644 +index a3020c43..c224a5e1 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -282,7 +282,7 @@ Given @@ -660,7 +286,7 @@ index 9524265f..be6d2136 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 389ac435..207a10ee 100644 +index 3ee94afe..abf70d1a 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2581,7 +2581,7 @@ struct s2 { @@ -676,10 +302,10 @@ index 389ac435..207a10ee 100644 2.34.1 -From 7a82e83e14917d51aba9e8677f0e7c8d8a2f56d5 Mon Sep 17 00:00:00 2001 +From 02987541b40ce822a5df81d7faedbc568a3e8017 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 -Subject: [PATCH 06/18] Use new link macros. +Subject: [PATCH 05/14] Use new link macros. --- source/algorithms.tex | 6 +- @@ -696,25 +322,23 @@ Subject: [PATCH 06/18] Use new link macros. source/intro.tex | 19 +-- source/iostreams.tex | 74 +++++----- source/iterators.tex | 8 +- - source/lex.tex | 14 +- - source/lib-intro.tex | 75 +++++----- + source/lex.tex | 10 +- + source/lib-intro.tex | 73 +++++----- source/limits.tex | 2 +- - source/locales.tex | 32 ++--- source/numerics.tex | 60 ++++---- source/overloading.tex | 68 ++++----- source/preprocessor.tex | 14 +- - source/regex.tex | 53 +++---- source/statements.tex | 30 ++-- - source/strings.tex | 10 +- + source/strings.tex | 8 +- source/support.tex | 107 +++++++-------- source/templates.tex | 129 +++++++++--------- source/threads.tex | 45 +++--- source/time.tex | 10 +- - source/utilities.tex | 45 +++--- - 29 files changed, 692 insertions(+), 735 deletions(-) + source/utilities.tex | 20 +-- + 27 files changed, 647 insertions(+), 662 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 61093cce..6c704352 100644 +index 94b6ff03..e5fd8576 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -726,7 +350,7 @@ index 61093cce..6c704352 100644 \pnum The following subclauses describe components for -@@ -7958,7 +7958,7 @@ In either case, twice as many projections as comparisons. +@@ -8125,7 +8125,7 @@ In either case, twice as many projections as comparisons. \pnum \remarks @@ -735,7 +359,7 @@ index 61093cce..6c704352 100644 \end{itemdescr} \begin{itemdecl} -@@ -11566,7 +11566,7 @@ namespace ranges { +@@ -11742,7 +11742,7 @@ namespace ranges { \pnum \constraints The expression \tcode{::new (declval()) T(declval()...)} @@ -745,7 +369,7 @@ index 61093cce..6c704352 100644 \pnum \effects diff --git a/source/basic.tex b/source/basic.tex -index be6d2136..de3c8389 100644 +index c224a5e1..1bb2e394 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -97,8 +97,8 @@ an object. The variable's name, if any, denotes the reference or object. @@ -925,7 +549,7 @@ index be6d2136..de3c8389 100644 linkage. \pnum -@@ -3124,8 +3123,8 @@ features of the language, such as references and virtual functions, might +@@ -3123,8 +3122,8 @@ features of the language, such as references and virtual functions, might involve additional memory locations that are not accessible to programs but are managed by the implementation. \end{note} @@ -936,7 +560,7 @@ index be6d2136..de3c8389 100644 locations without interfering with each other. \pnum -@@ -3169,15 +3168,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but +@@ -3168,15 +3167,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but The constructs in a \Cpp{} program create, destroy, refer to, access, and manipulate objects. An \defn{object} is created @@ -955,7 +579,7 @@ index be6d2136..de3c8389 100644 and in its period of destruction\iref{class.cdtor}. \begin{note} -@@ -3307,7 +3306,7 @@ A \defn{potentially-overlapping subobject} is either: +@@ -3306,7 +3305,7 @@ A \defn{potentially-overlapping subobject} is either: \begin{itemize} \item a base class subobject, or \item a non-static data member @@ -964,7 +588,7 @@ index be6d2136..de3c8389 100644 \end{itemize} \pnum -@@ -3328,7 +3327,7 @@ Otherwise, the circumstances under which the object has zero size +@@ -3327,7 +3326,7 @@ Otherwise, the circumstances under which the object has zero size are \impldef{which non-standard-layout objects containing no data are considered empty}. \indextext{most derived object!bit-field}% @@ -973,7 +597,7 @@ index be6d2136..de3c8389 100644 an object with nonzero size shall occupy one or more bytes of storage, including every byte that is occupied in full or in part -@@ -3798,16 +3797,16 @@ the result of the evaluation is the value so produced but is not erroneous: +@@ -3797,16 +3796,16 @@ the result of the evaluation is the value so produced but is not erroneous: is produced by the evaluation of: \begin{itemize} \item @@ -993,7 +617,7 @@ index be6d2136..de3c8389 100644 \end{itemize} then the result of the operation is an indeterminate value or that erroneous value, respectively. -@@ -3992,8 +3991,8 @@ specified in~\ref{class.copy.elision}. +@@ -3997,8 +3996,8 @@ specified in~\ref{class.copy.elision}. \indextext{storage duration!dynamic|(} \pnum @@ -1004,7 +628,7 @@ index be6d2136..de3c8389 100644 \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -@@ -4162,19 +4161,19 @@ that would match a handler\iref{except.handle} of type +@@ -4167,19 +4166,19 @@ that would match a handler\iref{except.handle} of type \tcode{std::bad_alloc}\iref{bad.alloc}. \pnum @@ -1031,7 +655,7 @@ index be6d2136..de3c8389 100644 \end{note} \rSec4[basic.stc.dynamic.deallocation]{Deallocation functions} -@@ -4261,7 +4260,7 @@ may be allocated. An \defn{alignment} is an \impldef{alignment} +@@ -4258,7 +4257,7 @@ 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 @@ -1040,7 +664,7 @@ index be6d2136..de3c8389 100644 Attempting to create an object\iref{intro.object} in storage that does not meet the alignment requirements of the object's type is undefined behavior. -@@ -4740,9 +4739,9 @@ shall be destroyed before +@@ -4737,9 +4736,9 @@ shall be destroyed before impose requirements on implementations regarding the representation of types. There are two kinds of types: fundamental types and compound types. @@ -1053,7 +677,7 @@ index be6d2136..de3c8389 100644 \end{note} \pnum -@@ -4916,7 +4915,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, +@@ -4913,7 +4912,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, pointer types, pointer-to-member types\iref{basic.compound}, \tcode{std::nullptr_t}, and @@ -1062,7 +686,7 @@ index be6d2136..de3c8389 100644 types are collectively called \defnadjx{scalar}{types}{type}. \label{term.trivially.copyable.type}% -@@ -4946,7 +4945,7 @@ A type is a \defnadj{literal}{type} if it is: +@@ -4943,7 +4942,7 @@ A type is a \defnadj{literal}{type} if it is: \item a scalar type; or \item a reference type; or \item an array of literal type; or @@ -1071,7 +695,7 @@ index be6d2136..de3c8389 100644 has all of the following properties: \begin{itemize} \item it has a constexpr destructor\iref{dcl.constexpr}, -@@ -4980,8 +4979,8 @@ will be usable in a constant expression. +@@ -4977,8 +4976,8 @@ will be usable in a constant expression. Two types \cvqual{cv1} \tcode{T1} and \cvqual{cv2} \tcode{T2} are \defnadjx{layout-compatible}{types}{type} if \tcode{T1} and \tcode{T2} are the same type, @@ -1082,7 +706,7 @@ index be6d2136..de3c8389 100644 \rSec2[basic.fundamental]{Fundamental types} -@@ -5430,7 +5429,7 @@ ordinary pointers to objects or functions. +@@ -5427,7 +5426,7 @@ ordinary pointers to objects or functions. which identify members of a given type within objects of a given class, \ref{dcl.mptr}. Pointers to data members and pointers to member functions are collectively @@ -1091,7 +715,7 @@ index be6d2136..de3c8389 100644 \end{itemize} \pnum -@@ -5508,7 +5507,7 @@ layout-compatible types shall +@@ -5505,7 +5504,7 @@ layout-compatible types shall have the same value representation and alignment requirements\iref{basic.align}. \begin{note} @@ -1100,7 +724,7 @@ index be6d2136..de3c8389 100644 representation, but their range of valid values is restricted by the extended alignment requirement. \end{note} -@@ -5823,8 +5822,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. +@@ -5820,8 +5819,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. \indextext{program execution|(} \pnum @@ -1111,7 +735,7 @@ index be6d2136..de3c8389 100644 block. Such an object exists and retains its last-stored value during the execution of the block and while the block is suspended (by a call of a function, suspension of a coroutine\iref{expr.await}, or receipt of a signal). -@@ -5869,7 +5868,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, +@@ -5866,7 +5865,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, the initialization of the entities captured by copy and the constituent expressions of the \grammarterm{initializer} of the \grammarterm{init-capture}{s}, \item @@ -1120,7 +744,7 @@ index be6d2136..de3c8389 100644 the constituent expressions of each default argument\iref{dcl.fct.default} used in the call, or \item -@@ -5900,7 +5899,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope +@@ -5897,7 +5896,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope A \defn{full-expression} is \begin{itemize} \item @@ -1286,10 +910,10 @@ index 4d848e8f..6bd0435e 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index fc85658f..62094758 100644 +index 09d642b6..162be36a 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -6225,14 +6225,14 @@ namespace std { +@@ -6055,14 +6055,14 @@ namespace std { \indextext{\idxcode{array}!contiguous storage}% The header \libheader{array} defines a class template for storing fixed-size sequences of objects. @@ -1306,7 +930,7 @@ index fc85658f..62094758 100644 list-initialized with up to \tcode{N} elements whose types are convertible to \tcode{T}. -@@ -6243,8 +6243,8 @@ of a container\iref{container.reqmts} and +@@ -6073,8 +6073,8 @@ of a container\iref{container.reqmts} and of a reversible container\iref{container.rev.reqmts}, except that a default constructed \tcode{array} object is not empty if $\tcode{N} > 0$. @@ -1317,7 +941,7 @@ index fc85658f..62094758 100644 Descriptions are provided here only for operations on \tcode{array} that are not described in one of these tables and -@@ -6254,13 +6254,13 @@ for operations where there is additional semantic information. +@@ -6084,13 +6084,13 @@ for operations where there is additional semantic information. \tcode{array} is a structural type\iref{term.structural.type} if \tcode{T} is a structural type. Two values \tcode{a1} and \tcode{a2} of type \tcode{array} @@ -1333,7 +957,7 @@ index fc85658f..62094758 100644 \indexlibraryglobal{array}% \indexlibrarymember{array}{begin}% -@@ -6547,7 +6547,7 @@ where indexing is zero-based. +@@ -6413,7 +6413,7 @@ namespace std { A \indexlibraryglobal{deque}% \tcode{deque} @@ -1342,7 +966,7 @@ index fc85658f..62094758 100644 In addition, it supports constant time insert and erase operations at the beginning or the end; insert and erase in the middle take linear time. That is, a deque is especially optimized for pushing and popping elements at the beginning and end. -@@ -7162,7 +7162,7 @@ namespace std { +@@ -7064,7 +7064,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{forward_list} if the allocator meets the @@ -1351,7 +975,7 @@ index fc85658f..62094758 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{forward_list} is referenced. -@@ -7742,7 +7742,7 @@ predicate. +@@ -7644,7 +7644,7 @@ predicate. \pnum \remarks @@ -1360,7 +984,7 @@ index fc85658f..62094758 100644 \end{itemdescr} \indexlibrarymember{unique}{forward_list}% -@@ -7847,7 +7847,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( +@@ -7749,7 +7749,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( \pnum \remarks @@ -1369,7 +993,7 @@ index fc85658f..62094758 100644 \end{itemdescr} \indexlibrarymember{reverse}{forward_list}% -@@ -7905,7 +7905,7 @@ A +@@ -7843,7 +7843,7 @@ A is a sequence container that supports bidirectional iterators and allows constant time insert and erase operations anywhere within the sequence, with storage management handled @@ -1378,7 +1002,7 @@ index fc85658f..62094758 100644 fast random access to list elements is not supported, but many algorithms only need sequential access anyway. -@@ -8074,7 +8074,7 @@ namespace std { +@@ -8012,7 +8012,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{list} if the allocator meets the @@ -1387,7 +1011,7 @@ index fc85658f..62094758 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{list} is referenced. -@@ -8488,7 +8488,7 @@ applications of the corresponding predicate. +@@ -8426,7 +8426,7 @@ applications of the corresponding predicate. \pnum \remarks @@ -1396,7 +1020,7 @@ index fc85658f..62094758 100644 \end{itemdescr} \indexlibrarymember{unique}{list}% -@@ -8612,7 +8612,7 @@ comparisons, where +@@ -8550,7 +8550,7 @@ comparisons, where \pnum \remarks @@ -1405,7 +1029,7 @@ index fc85658f..62094758 100644 \end{itemdescr} \rSec3[list.erasure]{Erasure} -@@ -8665,7 +8665,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, +@@ -8655,7 +8655,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, of a sequence container, including most of the optional sequence container requirements\iref{sequence.reqmts}, and, for an element type other than \tcode{bool}, @@ -1414,7 +1038,7 @@ index fc85658f..62094758 100644 The exceptions are the \tcode{push_front}, \tcode{prepend_range}, \tcode{pop_front}, and \tcode{emplace_front} member functions, which are not provided. Descriptions are provided here only for operations on \tcode{vector} -@@ -8803,7 +8803,7 @@ namespace std { +@@ -8793,7 +8793,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{vector} if the allocator meets the @@ -1423,7 +1047,7 @@ index fc85658f..62094758 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{vector} is referenced. -@@ -9373,7 +9373,7 @@ Unless described below, all operations have the same requirements and +@@ -9363,7 +9363,7 @@ Unless described below, all operations have the same requirements and semantics as the primary \tcode{vector} template, except that operations dealing with the \tcode{bool} value type map to bit values in the container storage and @@ -1432,7 +1056,7 @@ index fc85658f..62094758 100644 is not used to construct these values. \pnum -@@ -14541,9 +14541,9 @@ and +@@ -14427,9 +14427,9 @@ and can be used to instantiate \tcode{queue}. In particular, @@ -1444,7 +1068,7 @@ index fc85658f..62094758 100644 can be used. \begin{codeblock} -@@ -14898,15 +14898,15 @@ and +@@ -14784,15 +14784,15 @@ and can be used to instantiate \tcode{priority_queue}. In particular, @@ -1463,7 +1087,7 @@ index fc85658f..62094758 100644 \begin{codeblock} namespace std { -@@ -15406,10 +15406,10 @@ and +@@ -15331,10 +15331,10 @@ and can be used to instantiate \tcode{stack}. In particular, @@ -1478,7 +1102,7 @@ index fc85658f..62094758 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index f42ef668..b377b62f 100644 +index 446aebd3..b0e95bce 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -508,7 +508,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -1490,7 +1114,7 @@ index f42ef668..b377b62f 100644 \end{note} \pnum -@@ -775,10 +775,10 @@ an alias template or a template \grammarterm{template-parameter}. +@@ -778,10 +778,10 @@ an alias template or a template \grammarterm{template-parameter}. A \grammarterm{simple-template-id} that names a class template specialization is a \grammarterm{class-name}\iref{class.name}. If a \grammarterm{typedef-name} is used to identify the subject of an @@ -1505,7 +1129,7 @@ index f42ef668..b377b62f 100644 \end{note} \begin{example} \begin{codeblock} -@@ -1105,7 +1105,7 @@ If an inline function or variable that is attached to a named module +@@ -1108,7 +1108,7 @@ If an inline function or variable that is attached to a named module is declared in a definition domain, it shall be defined in that domain. \begin{note} @@ -1514,7 +1138,7 @@ index f42ef668..b377b62f 100644 In the global module, a function defined within a class definition is implicitly inline\iref{class.mfct,class.friend}. \end{note} -@@ -1250,7 +1250,7 @@ the object referenced is a non-const object and can be modified through +@@ -1253,7 +1253,7 @@ the object referenced is a non-const object and can be modified through some other access path. \begin{note} Cv-qualifiers are supported by the type system so that they cannot be @@ -1523,7 +1147,7 @@ index f42ef668..b377b62f 100644 \end{note} \pnum -@@ -1671,8 +1671,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; +@@ -1674,8 +1674,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; \item otherwise, \tcode{decltype($E$)} is the type of $E$. \end{itemize} @@ -1533,7 +1157,7 @@ index f42ef668..b377b62f 100644 \begin{example} \begin{codeblock} -@@ -1866,7 +1865,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. +@@ -1869,7 +1868,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. If the \grammarterm{init-declarator-list} contains more than one \grammarterm{init-declarator}, they shall all form declarations of variables. The type of each declared variable is determined @@ -1542,7 +1166,7 @@ index f42ef668..b377b62f 100644 and if the type that replaces the placeholder type is not the same in each deduction, the program is ill-formed. -@@ -1994,7 +1993,7 @@ A function declared with a return type that uses a placeholder type shall not +@@ -1997,7 +1996,7 @@ A function declared with a return type that uses a placeholder type shall not be a coroutine\iref{dcl.fct.def.coroutine}. \pnum @@ -1551,7 +1175,7 @@ index f42ef668..b377b62f 100644 instantiation of an entity declared using a placeholder type, but it also does not prevent that entity from being instantiated as needed to determine its type. -@@ -2106,7 +2105,7 @@ Obtain \tcode{P} from +@@ -2109,7 +2108,7 @@ Obtain \tcode{P} from a new invented type template parameter \tcode{U} or, if the initialization is copy-list-initialization, with \tcode{std::initializer_list}. Deduce a value for \tcode{U} using the rules @@ -1560,7 +1184,7 @@ index f42ef668..b377b62f 100644 where \tcode{P} is a function template parameter type and the corresponding argument is $E$. -@@ -2205,7 +2204,7 @@ in the \grammarterm{type-specifier-seq} +@@ -2208,7 +2207,7 @@ in the \grammarterm{type-specifier-seq} in the \grammarterm{new-type-id} or \grammarterm{type-id} of a \grammarterm{new-expression}\iref{expr.new}, as the \grammarterm{simple-type-specifier} @@ -1569,7 +1193,7 @@ index f42ef668..b377b62f 100644 or as the \grammarterm{type-specifier} in the \grammarterm{parameter-declaration} of a \grammarterm{template-parameter}\iref{temp.param}. -@@ -4340,7 +4339,7 @@ int a; +@@ -4343,7 +4342,7 @@ int a; int f(int a, int b = a); // error: parameter \tcode{a} used as default argument typedef int I; int g(float I, int b = I(2)); // error: parameter \tcode{I} found @@ -1578,7 +1202,7 @@ index f42ef668..b377b62f 100644 \end{codeblock} \end{example} A non-static member shall not appear in a default argument unless it appears as -@@ -5717,15 +5716,15 @@ This requires a conversion +@@ -5720,15 +5719,15 @@ This requires a conversion function\iref{class.conv.fct} returning a reference type. \end{footnote} (this conversion is selected by enumerating the applicable conversion @@ -1598,7 +1222,7 @@ index f42ef668..b377b62f 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7102,7 +7101,7 @@ the initializer is +@@ -7105,7 +7104,7 @@ the initializer is where \tcode{get} undergoes argument-dependent lookup\iref{basic.lookup.argdep}. In either case, \tcode{get} is interpreted as a \grammarterm{template-id}. \begin{note} @@ -1607,7 +1231,7 @@ index f42ef668..b377b62f 100644 \end{note} In either case, \exposid{e} is an lvalue if the type of the entity \exposid{e} is an lvalue reference and an xvalue otherwise. -@@ -7253,7 +7252,7 @@ is not looked up and is introduced by +@@ -7256,7 +7255,7 @@ is not looked up and is introduced by the \grammarterm{enum-specifier} or \grammarterm{opaque-enum-declaration}. If the \grammarterm{enum-head-name} of an \grammarterm{opaque-enum-declaration} contains a \grammarterm{nested-name-specifier}, @@ -1616,7 +1240,7 @@ index f42ef668..b377b62f 100644 \pnum \indextext{constant!enumeration}% -@@ -7335,8 +7334,9 @@ If the underlying type is fixed, the type of each enumerator +@@ -7338,8 +7337,9 @@ If the underlying type is fixed, the type of each enumerator prior to the closing brace is the underlying type and the \grammarterm{constant-expression} in the \grammarterm{enumerator-definition} @@ -1628,7 +1252,7 @@ index f42ef668..b377b62f 100644 If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as -@@ -7345,8 +7345,9 @@ follows: +@@ -7348,8 +7348,9 @@ follows: \begin{itemize} \item If an initializer is specified for an enumerator, the @@ -1640,7 +1264,7 @@ index f42ef668..b377b62f 100644 unscoped enumeration type, the enumerator has the underlying type of that enumeration type, otherwise it has the same type as the expression. -@@ -7418,7 +7419,7 @@ if they have the same underlying type. +@@ -7421,7 +7422,7 @@ if they have the same underlying type. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -1649,7 +1273,7 @@ index f42ef668..b377b62f 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -7697,7 +7698,7 @@ appertains to the namespace being defined or extended. +@@ -7700,7 +7701,7 @@ appertains to the namespace being defined or extended. Members of an inline namespace can be used in most respects as though they were members of the innermost enclosing namespace. Specifically, the inline namespace and its enclosing namespace are both added to the set of associated namespaces used in @@ -1658,7 +1282,7 @@ index f42ef668..b377b62f 100644 and a \grammarterm{using-directive}\iref{namespace.udir} that names the inline namespace is implicitly inserted into the enclosing namespace as for an unnamed namespace\iref{namespace.unnamed}. Furthermore, each -@@ -8501,7 +8502,7 @@ different language linkages are distinct types even if they are +@@ -8504,7 +8505,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -1667,7 +1291,7 @@ index f42ef668..b377b62f 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -8819,16 +8820,16 @@ For each individual attribute, the form of the +@@ -8822,16 +8823,16 @@ For each individual attribute, the form of the \pnum In an \grammarterm{attribute-list}, an ellipsis may appear only if that \grammarterm{attribute}'s specification permits it. An \grammarterm{attribute} followed @@ -1689,7 +1313,7 @@ index f42ef668..b377b62f 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -8935,7 +8936,7 @@ declaration, the program is ill-formed. +@@ -8938,7 +8939,7 @@ declaration, the program is ill-formed. \pnum An \grammarterm{alignment-specifier} of the form \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same @@ -1698,7 +1322,7 @@ index f42ef668..b377b62f 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9189,7 +9190,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9192,7 +9193,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -1708,10 +1332,10 @@ index f42ef668..b377b62f 100644 such a statement is a fallthrough statement. No \grammarterm{attribute-argument-clause} shall be present. diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index 573b2683..173589a4 100644 +index e421b207..b729a13d 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex -@@ -505,13 +505,13 @@ the current state of \tcode{NDEBUG} each time that +@@ -506,13 +506,13 @@ the current state of \tcode{NDEBUG} each time that \pnum An expression \tcode{assert(E)} @@ -1727,7 +1351,7 @@ index 573b2683..173589a4 100644 is a constant subexpression that evaluates to the value \tcode{true}. \end{itemize} -@@ -1604,7 +1604,7 @@ application program interfaces. +@@ -1602,7 +1602,7 @@ application program interfaces. \pnum \begin{note} If an error represents an out-of-memory condition, implementations are @@ -1737,7 +1361,7 @@ index 573b2683..173589a4 100644 \end{note} \indexlibraryglobal{system_error}% diff --git a/source/exceptions.tex b/source/exceptions.tex -index 67e052c4..5e22232c 100644 +index a462fe0b..a8d6a0c0 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -184,7 +184,7 @@ try : i(f(ii)), d(id) { @@ -1813,7 +1437,7 @@ index 67e052c4..5e22232c 100644 \end{itemize} -@@ -654,7 +654,7 @@ Exceptions thrown in destructors of objects with static storage duration or in +@@ -677,7 +677,7 @@ Exceptions thrown in destructors of objects with static storage duration or in constructors of objects associated with non-block variables with static storage duration are not caught by a \grammarterm{function-try-block} on @@ -1822,7 +1446,7 @@ index 67e052c4..5e22232c 100644 Exceptions thrown in destructors of objects with thread storage duration or in constructors of objects associated with non-block variables with thread storage duration are not caught by a \grammarterm{function-try-block} on the initial function of the thread. -@@ -723,7 +723,7 @@ otherwise it has a +@@ -746,7 +746,7 @@ otherwise it has a The exception specification is either defined implicitly, or defined explicitly by using a \grammarterm{noexcept-specifier} @@ -1831,7 +1455,7 @@ index 67e052c4..5e22232c 100644 \begin{bnf} \nontermdef{noexcept-specifier}\br -@@ -763,7 +763,7 @@ in which cases the exception specification +@@ -786,7 +786,7 @@ in which cases the exception specification is as specified below and no other declaration for that function shall have a \grammarterm{noexcept-specifier}. @@ -1840,7 +1464,7 @@ index 67e052c4..5e22232c 100644 a \grammarterm{noexcept-specifier} may be specified, but is not required. If a \grammarterm{noexcept-specifier} is specified -@@ -839,7 +839,7 @@ An expression $E$ is +@@ -835,7 +835,7 @@ An expression $E$ is \defnx{potentially-throwing}{potentially-throwing!expression} if \begin{itemize} \item @@ -1849,7 +1473,7 @@ index 67e052c4..5e22232c 100644 whose \grammarterm{postfix-expression} has a function type, or a pointer-to-function type, -@@ -850,7 +850,7 @@ $E$ implicitly invokes a function +@@ -846,7 +846,7 @@ $E$ implicitly invokes a function (such as an overloaded operator, an allocation function in a \grammarterm{new-expression}, a constructor for a function argument, @@ -1858,7 +1482,7 @@ index 67e052c4..5e22232c 100644 that has a potentially-throwing exception specification, or \item -@@ -867,7 +867,7 @@ applied to a pointer to a +@@ -863,7 +863,7 @@ applied to a pointer to a polymorphic class type\iref{expr.typeid}, or \item @@ -1867,7 +1491,7 @@ index 67e052c4..5e22232c 100644 of $E$ is potentially-throwing. \end{itemize} -@@ -920,7 +920,7 @@ the invocation of any assignment operator +@@ -916,7 +916,7 @@ the invocation of any assignment operator in the implicit definition is potentially-throwing. \pnum @@ -1876,7 +1500,7 @@ index 67e052c4..5e22232c 100644 with no explicit \grammarterm{noexcept-specifier} has a non-throwing exception specification. -@@ -1008,8 +1008,8 @@ The function \tcode{std::terminate}\iref{except.terminate} +@@ -1004,8 +1004,8 @@ The function \tcode{std::terminate}\iref{except.terminate} is used by the exception handling mechanism for coping with errors related to the exception handling mechanism itself. The function @@ -1887,7 +1511,7 @@ index 67e052c4..5e22232c 100644 capture the currently handled exception. \rSec2[except.terminate]{The \tcode{std::terminate} function} -@@ -1034,12 +1034,12 @@ via an exception, or +@@ -1030,12 +1030,12 @@ via an exception, or \item% when the exception handling mechanism cannot find a handler for a thrown exception\iref{except.handle}, or @@ -1903,7 +1527,7 @@ index 67e052c4..5e22232c 100644 terminates by throwing an exception, or \item% -@@ -1138,7 +1138,7 @@ will eventually cause an invocation of the function +@@ -1134,7 +1134,7 @@ will eventually cause an invocation of the function \pnum An exception is considered uncaught @@ -1913,7 +1537,7 @@ index 67e052c4..5e22232c 100644 \begin{note} As a consequence, an exception is considered uncaught diff --git a/source/expressions.tex b/source/expressions.tex -index 207a10ee..0cd73ac7 100644 +index abf70d1a..303e2ed2 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -2446,7 +2070,7 @@ index 207a10ee..0cd73ac7 100644 a placeholder for a deduced class type\iref{dcl.type.class.deduct} appears in the \grammarterm{type-specifier-seq} of a \grammarterm{new-type-id} or -@@ -5350,7 +5350,7 @@ is less than zero; +@@ -5359,7 +5359,7 @@ is less than zero; \item its value is such that the size of the allocated object would exceed the @@ -2455,7 +2079,7 @@ index 207a10ee..0cd73ac7 100644 \item the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} and the -@@ -5375,7 +5375,7 @@ is the null pointer value of the required result type; +@@ -5384,7 +5384,7 @@ is the null pointer value of the required result type; \item otherwise, the \grammarterm{new-expression} terminates by throwing an exception of a type that would match a handler\iref{except.handle} of type @@ -2464,7 +2088,7 @@ index 207a10ee..0cd73ac7 100644 \end{itemize} \end{itemize} When the value of the \grammarterm{expression} is zero, the allocation -@@ -5426,8 +5426,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( +@@ -5435,8 +5435,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( A \grammarterm{new-expression} may obtain storage for the object by calling an allocation function\iref{basic.stc.dynamic.allocation}. If the \grammarterm{new-expression} terminates by throwing an exception, it @@ -2475,7 +2099,7 @@ index 207a10ee..0cd73ac7 100644 is a non-array type, the allocation function's name is \indextext{\idxcode{operator new}}% \indextext{\idxcode{operator delete}}% -@@ -5538,7 +5538,7 @@ the difference between the +@@ -5547,7 +5547,7 @@ the difference between the result of the \grammarterm{new-expression} and the address returned by the allocation function shall be an integral multiple of the strictest fundamental @@ -2484,7 +2108,7 @@ index 207a10ee..0cd73ac7 100644 is no greater than the size of the array being created. \begin{note} \indextext{allocation!alignment storage}% -@@ -5629,7 +5629,7 @@ invocation of \keyword{new} to another. +@@ -5638,7 +5638,7 @@ invocation of \keyword{new} to another. \pnum \begin{note} Unless an allocation function has a non-throwing @@ -2493,7 +2117,7 @@ index 207a10ee..0cd73ac7 100644 it indicates failure to allocate storage by throwing a \indextext{\idxcode{bad_alloc}}% \indexlibraryglobal{bad_alloc}% -@@ -5775,8 +5775,8 @@ to both the allocation and deallocation functions. +@@ -5784,8 +5784,8 @@ to both the allocation and deallocation functions. \pnum \indextext{expression!\idxcode{delete}}% \indextext{\idxcode{delete}}% @@ -2504,7 +2128,7 @@ index 207a10ee..0cd73ac7 100644 \grammarterm{new-expression}. \begin{bnf} -@@ -5879,8 +5879,8 @@ null pointer value, then: +@@ -5888,8 +5888,8 @@ null pointer value, then: \item If the allocation call for the \grammarterm{new-expression} for the object to be deleted was not omitted and the allocation was not extended\iref{expr.new}, the @@ -2515,7 +2139,7 @@ index 207a10ee..0cd73ac7 100644 allocation call of the \grammarterm{new-expression} shall be passed as the first argument to the deallocation function. -@@ -6239,8 +6239,8 @@ The result of a \tcode{.*} expression +@@ -6248,8 +6248,8 @@ The result of a \tcode{.*} expression whose second operand is a pointer to a data member is an lvalue if the first operand is an lvalue and an xvalue otherwise. The result of a \tcode{.*} expression whose second operand is a pointer to a member function is a prvalue. @@ -2526,7 +2150,7 @@ index 207a10ee..0cd73ac7 100644 \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -6269,7 +6269,7 @@ left-to-right. +@@ -6278,7 +6278,7 @@ left-to-right. \pnum The operands of \tcode{*} and \tcode{/} shall have arithmetic or unscoped enumeration type; the operands of \tcode{\%} shall have integral or unscoped @@ -2535,7 +2159,7 @@ index 207a10ee..0cd73ac7 100644 operands and determine the type of the result. \pnum -@@ -6405,7 +6405,7 @@ the behavior is undefined\iref{expr.pre}. +@@ -6414,7 +6414,7 @@ the behavior is undefined\iref{expr.pre}. \pnum For addition or subtraction, if the expressions \tcode{P} or \tcode{Q} have type ``pointer to \cv{}~\tcode{T}'', where \tcode{T} and the array element type @@ -2544,7 +2168,7 @@ index 207a10ee..0cd73ac7 100644 \begin{example} \begin{codeblock} int arr[5] = {1, 2, 3, 4, 5}; -@@ -6496,12 +6496,12 @@ and the other is not, the program is ill-formed. +@@ -6505,12 +6505,12 @@ and the other is not, the program is ill-formed. If both operands have arithmetic types, or one operand has integral type and the other operand has unscoped enumeration type, @@ -2559,7 +2183,7 @@ index 207a10ee..0cd73ac7 100644 other than from an integral type to a floating-point type, the program is ill-formed. -@@ -6543,13 +6543,13 @@ the other operand is of object pointer or array type, +@@ -6552,13 +6552,13 @@ the other operand is of object pointer or array type, array-to-pointer conversions\iref{conv.array}, pointer conversions\iref{conv.ptr}, and @@ -2575,7 +2199,7 @@ index 207a10ee..0cd73ac7 100644 \end{note} In this case, \tcode{p <=> q} is of type \tcode{std::strong_ordering} and -@@ -6640,7 +6640,7 @@ pointer conversions\iref{conv.ptr}, +@@ -6649,7 +6649,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring @@ -2584,7 +2208,7 @@ index 207a10ee..0cd73ac7 100644 After conversions, the operands shall have the same type. \pnum -@@ -6727,10 +6727,10 @@ same type after the specified conversions have been applied. +@@ -6736,10 +6736,10 @@ same type after the specified conversions have been applied. \indextext{comparison!pointer}% \indextext{comparison!pointer to function}% If at least one of the operands is a pointer, @@ -2599,7 +2223,7 @@ index 207a10ee..0cd73ac7 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -6747,7 +6747,8 @@ the result of the comparison is unspecified. +@@ -6756,7 +6756,8 @@ the result of the comparison is unspecified. \item Otherwise, if the pointers are both null, both point to the same \indextext{address}% @@ -2609,7 +2233,7 @@ index 207a10ee..0cd73ac7 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -6792,12 +6793,12 @@ bool b1 = (bx == cx); // unspecified +@@ -6801,12 +6802,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -2624,7 +2248,7 @@ index 207a10ee..0cd73ac7 100644 indirection with a hypothetical object of the associated class type were performed, otherwise they compare unequal. \begin{example} -@@ -7023,7 +7024,7 @@ Otherwise, if the second and third operand have different types and +@@ -7032,7 +7033,7 @@ Otherwise, if the second and third operand have different types and either has (possibly cv-qualified) class type, or if both are glvalues of the same value category and the same type except for cv-qualification, an attempt is made to @@ -2633,7 +2257,7 @@ index 207a10ee..0cd73ac7 100644 each of those operands to the type of the other. \begin{note} Properties such as access, whether an operand is a bit-field, or whether -@@ -7065,9 +7066,9 @@ denotes the cv-qualifiers of \tcode{T1}; +@@ -7074,9 +7075,9 @@ denotes the cv-qualifiers of \tcode{T1}; \item otherwise, the target type is the type that \tcode{E2} would have after applying the @@ -2646,7 +2270,7 @@ index 207a10ee..0cd73ac7 100644 standard conversions. \end{itemize} \end{itemize} -@@ -7108,8 +7109,8 @@ are used in place of the original operands for the remainder of this +@@ -7117,8 +7118,8 @@ are used in place of the original operands for the remainder of this subclause. \pnum @@ -2657,7 +2281,7 @@ index 207a10ee..0cd73ac7 100644 performed on the second and third operands. After those conversions, one of the following shall hold: -@@ -7118,15 +7119,15 @@ of the following shall hold: +@@ -7127,15 +7128,15 @@ of the following shall hold: that type and the result object is initialized using the selected operand. \item The second and third operands have arithmetic or enumeration type; @@ -2678,7 +2302,7 @@ index 207a10ee..0cd73ac7 100644 pointer type. \item One or both of the second and third operands have pointer-to-member type; -@@ -7305,7 +7306,7 @@ by replacing its value with the result of the right operand. +@@ -7314,7 +7315,7 @@ by replacing its value with the result of the right operand. \pnum \indextext{assignment!conversion by}% If the right operand is an expression, it is implicitly @@ -2687,7 +2311,7 @@ index 207a10ee..0cd73ac7 100644 operand. \pnum -@@ -7319,7 +7320,7 @@ resulting value of the bit-field is +@@ -7328,7 +7329,7 @@ resulting value of the bit-field is An assignment whose left operand is of a volatile-qualified type is deprecated\iref{depr.volatile.type} unless the (possibly parenthesized) assignment is a discarded-value expression or @@ -2696,7 +2320,7 @@ index 207a10ee..0cd73ac7 100644 \pnum The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} -@@ -7391,7 +7392,7 @@ The comma operator groups left-to-right. +@@ -7400,7 +7401,7 @@ The comma operator groups left-to-right. A pair of expressions separated by a comma is evaluated left-to-right; the left expression is @@ -2705,7 +2329,7 @@ index 207a10ee..0cd73ac7 100644 The left expression is sequenced before the right expression\iref{intro.execution}. \indextext{operator!side effects and comma}% -@@ -7425,7 +7426,7 @@ Certain contexts require expressions that satisfy additional +@@ -7434,7 +7435,7 @@ Certain contexts require expressions that satisfy additional requirements as detailed in this subclause; other contexts have different semantics depending on whether or not an expression satisfies these requirements. Expressions that satisfy these requirements, @@ -2714,7 +2338,7 @@ index 207a10ee..0cd73ac7 100644 are called \indexdefn{expression!constant}% \defnx{constant expressions}{constant expression}. -@@ -7478,8 +7479,8 @@ $V$'s initializing declaration $D$ is reachable from $P$ and +@@ -7487,8 +7488,8 @@ $V$'s initializing declaration $D$ is reachable from $P$ and An object or reference is \defn{usable in constant expressions} if it is \begin{itemize} \item a variable that is usable in constant expressions, or @@ -2725,7 +2349,7 @@ index 207a10ee..0cd73ac7 100644 \item a temporary object of non-volatile const-qualified literal type whose lifetime is extended\iref{class.temporary} to that of a variable that is usable in constant expressions, or -@@ -7553,7 +7554,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. +@@ -7562,7 +7563,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -2734,7 +2358,7 @@ index 207a10ee..0cd73ac7 100644 it is applied to \begin{itemize} \item -@@ -7572,7 +7573,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -7581,7 +7582,7 @@ that refers to a non-active member of a union or a subobject thereof; \item an lvalue-to-rvalue conversion that is applied to @@ -2743,7 +2367,7 @@ index 207a10ee..0cd73ac7 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -7897,7 +7898,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -7909,7 +7910,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte Such expressions can be used as bit-field lengths\iref{class.bit}, as enumerator initializers if the underlying type is not fixed\iref{dcl.enum}, @@ -2752,7 +2376,7 @@ index 207a10ee..0cd73ac7 100644 \end{note} \pnum -@@ -7947,9 +7948,8 @@ and where the reference binding (if any) binds directly. +@@ -7959,9 +7960,8 @@ and where the reference binding (if any) binds directly. Such expressions can be used in \keyword{new} expressions\iref{expr.new}, as case expressions\iref{stmt.switch}, as enumerator initializers if the underlying type is @@ -2764,7 +2388,7 @@ index 207a10ee..0cd73ac7 100644 \end{note} \indextext{contextually converted constant expression of type \tcode{bool}|see{conversion, contextual}}% \indextext{conversion!contextual to constant expression of type \tcode{bool}}% -@@ -8226,7 +8226,7 @@ if it is: +@@ -8238,7 +8238,7 @@ if it is: a manifestly constant-evaluated expression, \item @@ -2773,7 +2397,7 @@ index 207a10ee..0cd73ac7 100644 \item an immediate subexpression of a \grammarterm{braced-init-list}, -@@ -8253,7 +8253,9 @@ A function or variable is +@@ -8265,7 +8265,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -2785,7 +2409,7 @@ index 207a10ee..0cd73ac7 100644 \item diff --git a/source/future.tex b/source/future.tex -index fbf49b4e..21a57751 100644 +index 4eab361b..4de4dfc9 100644 --- a/source/future.tex +++ b/source/future.tex @@ -14,7 +14,7 @@ is defined as: @@ -2795,9 +2419,9 @@ index fbf49b4e..21a57751 100644 -\tcode{deprecated} attribute\iref{dcl.attr.deprecated}. +\link{\tcode{deprecated} attribute}{dcl.attr.deprecated}. - \rSec1[depr.capture.this]{Implicit capture of \tcode{*this} by reference} + \rSec1[depr.local]{Non-local use of TU-local entities} -@@ -155,11 +155,11 @@ inline void g() {A().f();} // deprecated: inline and not internal linkage +@@ -138,11 +138,11 @@ auto cmp = arr1 <=> arr2; // error \rSec1[depr.impldec]{Implicit declaration of copy functions} \pnum @@ -2812,7 +2436,7 @@ index fbf49b4e..21a57751 100644 as defaulted is deprecated if the class has a user-declared copy constructor or a user-declared destructor. -@@ -507,7 +507,7 @@ template struct tuple_size; +@@ -506,7 +506,7 @@ template struct tuple_size; \pnum Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. If the expression \tcode{TS::value} is well-formed @@ -2880,7 +2504,7 @@ index 4f298445..35a4372b 100644 translation units to form a complete \Cpp{} program\iref{lex.phases}.% \indextext{conformance requirements!library|)} diff --git a/source/iostreams.tex b/source/iostreams.tex -index 63414ca6..e8876d14 100644 +index 34bd3341..64b38daf 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -555,7 +555,7 @@ is initialized, @@ -2919,7 +2543,7 @@ index 63414ca6..e8876d14 100644 \end{itemdescr} \indexlibraryglobal{wclog}% -@@ -1392,7 +1392,7 @@ operate independently of the standard C streams. +@@ -1378,7 +1378,7 @@ operate independently of the standard C streams. \pnum \returns \tcode{true} @@ -2928,7 +2552,7 @@ index 63414ca6..e8876d14 100644 was synchronized and otherwise returns \tcode{false}. The first time it is called, -@@ -1451,8 +1451,8 @@ static int xalloc(); +@@ -1437,8 +1437,8 @@ static int xalloc(); \pnum \remarks @@ -2939,7 +2563,7 @@ index 63414ca6..e8876d14 100644 \end{itemdescr} \indexlibrarymember{iword}{ios_base}% -@@ -2039,12 +2039,12 @@ locale imbue(const locale& loc); +@@ -2025,12 +2025,12 @@ locale imbue(const locale& loc); \pnum \effects Calls @@ -2954,7 +2578,7 @@ index 63414ca6..e8876d14 100644 \pnum \returns -@@ -3297,7 +3297,7 @@ streamsize in_avail(); +@@ -3283,7 +3283,7 @@ streamsize in_avail(); If a read position is available, returns \tcode{egptr() - gptr()}. Otherwise returns @@ -2963,7 +2587,7 @@ index 63414ca6..e8876d14 100644 \end{itemdescr} \indexlibrarymember{snextc}{basic_streambuf}% -@@ -4322,7 +4322,7 @@ namespace std { +@@ -4308,7 +4308,7 @@ namespace std { template> class basic_istream : virtual public basic_ios { public: @@ -2972,7 +2596,7 @@ index 63414ca6..e8876d14 100644 using char_type = charT; using int_type = typename traits::int_type; using pos_type = typename traits::pos_type; -@@ -4728,7 +4728,7 @@ basic_istream& operator>>(void*& val); +@@ -4714,7 +4714,7 @@ basic_istream& operator>>(void*& val); \pnum As in the case of the inserters, these extractors depend on the locale's @@ -2981,7 +2605,7 @@ index 63414ca6..e8876d14 100644 stream data. These extractors behave as formatted input functions (as described in~\ref{istream.formatted.reqmts}). After a \tcode{sentry} object is constructed, the conversion occurs as if performed by the following code fragment, -@@ -5015,7 +5015,7 @@ basic_istream& operator>>(basic_streambuf* sb); +@@ -5001,7 +5001,7 @@ basic_istream& operator>>(basic_streambuf* sb); \begin{itemdescr} \pnum \effects @@ -2990,7 +2614,7 @@ index 63414ca6..e8876d14 100644 If \tcode{sb} is null, calls \tcode{setstate(fail\-bit)}, which may throw -@@ -5410,7 +5410,7 @@ characters and discards them. +@@ -5396,7 +5396,7 @@ characters and discards them. Characters are extracted until any of the following occurs: \begin{itemize} \item @@ -2999,7 +2623,7 @@ index 63414ca6..e8876d14 100644 and \tcode{n} characters have been extracted so far; \item -@@ -5746,12 +5746,12 @@ template +@@ -5732,12 +5732,12 @@ template \begin{itemdescr} \pnum \effects @@ -3014,7 +2638,7 @@ index 63414ca6..e8876d14 100644 If \tcode{ws} stops extracting characters because there are no more available it sets -@@ -5776,7 +5776,7 @@ template +@@ -5762,7 +5762,7 @@ template \pnum \constraints The expression \tcode{is >> std::forward(x)} is well-formed @@ -3023,7 +2647,7 @@ index 63414ca6..e8876d14 100644 \tcode{Istream} is publicly and unambiguously derived from \tcode{ios_base}. \pnum -@@ -5844,7 +5844,7 @@ explicit basic_iostream(basic_streambuf* sb); +@@ -5830,7 +5830,7 @@ explicit basic_iostream(basic_streambuf* sb); Initializes the base class subobjects with \tcode{basic_istream(sb)}\iref{istream} and @@ -3032,7 +2656,7 @@ index 63414ca6..e8876d14 100644 \pnum \ensures -@@ -5930,7 +5930,7 @@ namespace std { +@@ -5916,7 +5916,7 @@ namespace std { template> class basic_ostream : virtual public basic_ios { public: @@ -3041,7 +2665,7 @@ index 63414ca6..e8876d14 100644 using char_type = charT; using int_type = typename traits::int_type; using pos_type = typename traits::pos_type; -@@ -6710,7 +6710,7 @@ return *this << s; +@@ -6685,7 +6685,7 @@ return *this << s; \end{codeblock} where \tcode{s} is an \impldef{NTCTS in \tcode{basic_ostream\& op\-er\-ator<<(nullptr_t)}} @@ -3050,7 +2674,7 @@ index 63414ca6..e8876d14 100644 \end{itemdescr} \rSec4[ostream.inserters.character]{Character inserter function templates} -@@ -6734,7 +6734,7 @@ template +@@ -6709,7 +6709,7 @@ template \begin{itemdescr} \pnum \effects @@ -3059,7 +2683,7 @@ index 63414ca6..e8876d14 100644 of \tcode{out}. Constructs a character sequence \tcode{seq}. If \tcode{c} has type \tcode{char} -@@ -7480,7 +7480,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. +@@ -7455,7 +7455,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. \pnum \effects The expression \tcode{in >> get_money(mon, intl)} described below @@ -3068,7 +2692,7 @@ index 63414ca6..e8876d14 100644 \pnum \returns -@@ -7525,7 +7525,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. +@@ -7500,7 +7500,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. An object of unspecified type such that if \tcode{out} is an object of type \tcode{basic_ostream} then the expression \tcode{out << put_money(mon, intl)} behaves as a @@ -3077,7 +2701,7 @@ index 63414ca6..e8876d14 100644 \tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as: \begin{codeblock} -@@ -7649,7 +7649,7 @@ of \tcode{basic_ostream} with member type \tcode{char_type} the same as +@@ -7624,7 +7624,7 @@ of \tcode{basic_ostream} with member type \tcode{char_type} the same as \tcode{charT} and with member type \tcode{traits_type}, which in the second and third forms is the same as \tcode{traits}, then the expression \tcode{out << quoted(s, delim, escape)} @@ -3086,7 +2710,7 @@ index 63414ca6..e8876d14 100644 of \tcode{out}. This forms a character sequence \tcode{seq}, initially consisting of the following elements: \begin{itemize} -@@ -14129,7 +14129,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. +@@ -14104,7 +14104,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. \pnum \begin{note} @@ -3095,7 +2719,7 @@ index 63414ca6..e8876d14 100644 for how the value types above and their encodings convert to \tcode{path::value_type} and its encoding. \end{note} -@@ -14729,7 +14729,7 @@ by \ref{fs.path.cvt}. +@@ -14704,7 +14704,7 @@ by \ref{fs.path.cvt}. \pnum Generic format observer functions return strings formatted according to the @@ -3104,7 +2728,7 @@ index 63414ca6..e8876d14 100644 A single slash (\tcode{'/'}) character is used as the \grammarterm{directory-separator}. -@@ -15272,11 +15272,11 @@ If normalization\iref{fs.path.generic} is needed +@@ -15247,11 +15247,11 @@ If normalization\iref{fs.path.generic} is needed \indexlibrarymember{path}{iterator}% \pnum Path iterators iterate over the elements of the pathname @@ -3118,7 +2742,7 @@ index 63414ca6..e8876d14 100644 except that, for dereferenceable iterators \tcode{a} and \tcode{b} of type \tcode{path::iterator} -@@ -16633,7 +16633,7 @@ If a file is removed from or added to a directory after the +@@ -16608,7 +16608,7 @@ If a file is removed from or added to a directory after the construction of a \tcode{directory_iterator} for the directory, it is unspecified whether or not subsequently incrementing the iterator will ever result in an iterator referencing the removed or added directory entry. See @@ -3127,7 +2751,7 @@ index 63414ca6..e8876d14 100644 \end{note} \rSec3[fs.dir.itr.members]{Members} -@@ -16725,7 +16725,7 @@ directory_iterator& increment(error_code& ec); +@@ -16700,7 +16700,7 @@ directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -3136,7 +2760,7 @@ index 63414ca6..e8876d14 100644 \pnum \returns -@@ -17037,7 +17037,7 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17012,7 +17012,7 @@ recursive_directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -3145,7 +2769,7 @@ index 63414ca6..e8876d14 100644 except that: \begin{itemize} -@@ -17628,7 +17628,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin +@@ -17603,7 +17603,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin \begin{itemdescr} \pnum \effects @@ -3154,7 +2778,7 @@ index 63414ca6..e8876d14 100644 \pnum \ensures -@@ -17704,7 +17704,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, +@@ -17679,7 +17679,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, \begin{itemdescr} \pnum \effects @@ -3163,7 +2787,7 @@ index 63414ca6..e8876d14 100644 \pnum \ensures -@@ -17737,7 +17737,7 @@ path filesystem::current_path(error_code& ec); +@@ -17712,7 +17712,7 @@ path filesystem::current_path(error_code& ec); \returns The absolute path of the current working directory, whose pathname in the native format is @@ -3172,7 +2796,7 @@ index 63414ca6..e8876d14 100644 The signature with argument \tcode{ec} returns \tcode{path()} if an error occurs. -@@ -17774,7 +17774,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; +@@ -17749,7 +17749,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; \begin{itemdescr} \pnum \effects @@ -3181,7 +2805,7 @@ index 63414ca6..e8876d14 100644 \pnum \ensures -@@ -17885,7 +17885,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. +@@ -17860,7 +17860,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. \item If \tcode{is_regular_file(p)}, the size in bytes of the file \tcode{p} resolves to, determined as if by the value of the POSIX \tcode{stat} @@ -3190,7 +2814,7 @@ index 63414ca6..e8876d14 100644 \item Otherwise, the result is \impldef{result of \tcode{filesystem::file_size}}. \end{itemize} -@@ -18267,7 +18267,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time, +@@ -18242,7 +18242,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time, \pnum \effects Sets the time of last data modification of the file @@ -3254,7 +2878,7 @@ index e1c8f73a..193fd678 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index 7cb0a8f3..1e1e8ad4 100644 +index d034d35f..1c8f710d 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -3279,25 +2903,7 @@ index 7cb0a8f3..1e1e8ad4 100644 \end{note} \indextext{compilation!separate|)} -@@ -485,7 +485,7 @@ for the respective Unicode encoding form. - \end{bnf} - - \pnum --Each preprocessing token that is converted to a token\iref{lex.token} -+Each preprocessing token that is converted to a \link{token}{lex.token} - shall have the lexical form of a keyword, an identifier, a literal, - or an operator or punctuator. - -@@ -1073,7 +1073,7 @@ are converted into tokens for operators and punctuators: - \end{bnf} - - Each \grammarterm{operator-or-punctuator} is converted to a single token --in translation phase 7\iref{lex.phases}.% -+in \link{translation phase 7}{lex.phases}.% - \indextext{punctuator|)}% - \indextext{operator|)} - -@@ -2237,7 +2237,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) +@@ -2240,7 +2240,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) \pnum If \placeholder{L} is a \grammarterm{user-defined-character-literal}, let \placeholder{ch} be the literal without its \grammarterm{ud-suffix}. @@ -3307,11 +2913,11 @@ index 7cb0a8f3..1e1e8ad4 100644 literal \placeholder{L} is treated as a call of the form diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 86ab73dd..08842f66 100644 +index 96458fbd..030a2acc 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex -@@ -97,7 +97,7 @@ and algorithms\iref{algorithms} libraries provide a \Cpp{} program with access - to a subset of the most widely used algorithms and data structures. +@@ -101,7 +101,7 @@ including formatting, internationalization support and + regular expression matching and searching. \pnum -The numerics library\iref{numerics} provides @@ -3319,16 +2925,7 @@ index 86ab73dd..08842f66 100644 numeric algorithms and complex number components that extend support for numeric processing. The \tcode{valarray} -@@ -123,7 +123,7 @@ They can be used with other elements of the library, particularly - strings, locales, and iterators. - - \pnum --The regular expressions library\iref{re} provides regular expression matching and searching. -+The \link{regular expressions library}{re} provides regular expression matching and searching. - - \pnum - The concurrency support library\iref{thread} provides components to create -@@ -484,8 +484,8 @@ of other standards\iref{intro.refs}. +@@ -481,8 +481,8 @@ of other standards\iref{intro.refs}. Subclause \ref{conventions} describes several editorial conventions used to describe the contents of the \Cpp{} standard library. These conventions are for describing @@ -3339,7 +2936,7 @@ index 86ab73dd..08842f66 100644 \rSec3[expos.only.entity]{Exposition-only entities, etc.} -@@ -607,7 +607,7 @@ and \ref{depr} are +@@ -604,7 +604,7 @@ and \ref{depr} are Each bitmask type can be implemented as an enumerated type that overloads certain operators, as an integer type, or as a @@ -3348,7 +2945,7 @@ index 86ab73dd..08842f66 100644 \indextext{type!enumerated}% \pnum -@@ -733,7 +733,7 @@ locale. +@@ -730,7 +730,7 @@ locale. \item A \defn{character sequence} @@ -3357,7 +2954,7 @@ index 86ab73dd..08842f66 100644 can be declared as \tcode{\placeholdernc{T\;A}[\placeholder{N}]}, where \tcode{\placeholder{T}} is any of the types -@@ -883,7 +883,7 @@ signatures, or for virtual destructors that can be generated by default. +@@ -880,7 +880,7 @@ signatures, or for virtual destructors that can be generated by default. \pnum \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr} do not specify the representation of classes, and intentionally @@ -3366,7 +2963,7 @@ index 86ab73dd..08842f66 100644 define static or non-static class members, or both, as needed to implement the semantics of the member functions specified in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr}. -@@ -1289,10 +1289,10 @@ std::vector vi; // OK +@@ -1286,10 +1286,10 @@ std::vector vi; // OK Except as noted in \ref{library} through \ref{\lastlibchapter} and \ref{depr}, the contents of each header \tcode{c\placeholder{name}} is the same as that of the corresponding header \tcode{\placeholder{name}.h} as @@ -3379,7 +2976,7 @@ index 86ab73dd..08842f66 100644 It is unspecified whether these names (including any overloads added in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr}) are first declared within the global namespace scope -@@ -1599,8 +1599,8 @@ a hosted implementation. +@@ -1596,8 +1596,8 @@ a hosted implementation. \pnum Subclause \ref{using} describes how a \Cpp{} program gains access to the facilities of the \Cpp{} standard library. \ref{using.headers} describes effects during translation @@ -3390,7 +2987,7 @@ index 86ab73dd..08842f66 100644 \rSec3[using.headers]{Headers} -@@ -1643,7 +1643,7 @@ declared in that header. No diagnostic is required. +@@ -1640,7 +1640,7 @@ declared in that header. No diagnostic is required. \rSec3[using.linkage]{Linkage} \pnum @@ -3399,7 +2996,7 @@ index 86ab73dd..08842f66 100644 Unless otherwise specified, objects and functions have the default \tcode{extern "C++"} linkage\iref{dcl.link}. -@@ -1677,8 +1677,8 @@ the program prior to program startup. +@@ -1674,8 +1674,8 @@ the program prior to program startup. \indextext{startup!program}% \pnum See also @@ -3410,7 +3007,7 @@ index 86ab73dd..08842f66 100644 \rSec2[utility.requirements]{Requirements on types and expressions} -@@ -1726,7 +1726,7 @@ rvalue of type \tcode{const T}. +@@ -1723,7 +1723,7 @@ rvalue of type \tcode{const T}. In general, a default constructor is not required. Certain container class member function signatures specify \tcode{T()} as a default argument. \tcode{T()} shall be a well-defined expression\iref{dcl.init} if one of those @@ -3419,7 +3016,7 @@ index 86ab73dd..08842f66 100644 \begin{oldconcepttable}{EqualityComparable}{}{cpp17.equalitycomparable} {x{1in}x{1in}p{3in}} -@@ -1852,13 +1852,13 @@ evaluated in the context described below, and +@@ -1849,13 +1849,13 @@ evaluated in the context described below, and \pnum The context in which \tcode{swap(t, u)} and \tcode{swap(u, t)} are evaluated shall @@ -3436,7 +3033,7 @@ index 86ab73dd..08842f66 100644 \end{itemize} \begin{note} If \tcode{T} and \tcode{U} are both fundamental types or arrays of -@@ -1961,8 +1961,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in +@@ -1958,8 +1958,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in \end{note} \pnum @@ -3448,7 +3045,7 @@ index 86ab73dd..08842f66 100644 had been evaluated in place of \tcode{p}. \pnum -@@ -2065,7 +2066,7 @@ as the memory allocation and deallocation primitives for it. All of the +@@ -2062,7 +2063,7 @@ as the memory allocation and deallocation primitives for it. All of the string types\iref{strings}, containers\iref{containers} (except \tcode{array} and \tcode{inplace_vector}), string buffers and string streams\iref{input.output}, and @@ -3457,7 +3054,7 @@ index 86ab73dd..08842f66 100644 allocators. \pnum -@@ -2889,7 +2890,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, +@@ -2886,7 +2887,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, whether or not \tcode{T} is a complete type: \begin{itemize} \item \tcode{X} is a complete type, and @@ -3466,7 +3063,7 @@ index 86ab73dd..08842f66 100644 other than \tcode{value_type} are complete types. \end{itemize} -@@ -2900,11 +2901,11 @@ whether or not \tcode{T} is a complete type: +@@ -2897,11 +2898,11 @@ whether or not \tcode{T} is a complete type: \pnum Subclause \ref{constraints} describes restrictions on \Cpp{} programs that use the facilities of the \Cpp{} standard library. The following subclauses specify constraints on the @@ -3482,7 +3079,7 @@ index 86ab73dd..08842f66 100644 \rSec3[namespace.constraints]{Namespace use} -@@ -3297,7 +3298,7 @@ are reserved for use by \Cpp{} implementations. +@@ -3294,7 +3295,7 @@ are reserved for use by \Cpp{} implementations. If a file with a name equivalent to the derived file name for one of the \Cpp{} standard library headers is not provided as part of the implementation, and a file with that name @@ -3491,7 +3088,7 @@ index 86ab73dd..08842f66 100644 the behavior is undefined.% \indextext{source file}% \indextext{undefined} -@@ -3527,7 +3528,7 @@ specified as being shareable without data races or the user supplies a locking m +@@ -3524,7 +3525,7 @@ specified as being shareable without data races or the user supplies a locking m \pnum If an object of a standard library type is accessed, and @@ -3500,7 +3097,7 @@ index 86ab73dd..08842f66 100644 does not happen before the access, or the access does not happen before the end of the object's lifetime, the behavior is undefined unless otherwise specified. -@@ -3587,7 +3588,7 @@ Every such entity shall be defined such that any header that defines it may be +@@ -3584,7 +3585,7 @@ Every such entity shall be defined such that any header that defines it may be included after any other header that also defines it\iref{basic.def.odr}. \pnum @@ -3509,7 +3106,7 @@ index 86ab73dd..08842f66 100644 shall include only their corresponding \Cpp{} standard library header, as described in~\ref{headers}. -@@ -3615,7 +3616,7 @@ explicitly stated otherwise. +@@ -3612,7 +3613,7 @@ explicitly stated otherwise. It is unspecified whether any non-member functions in the \Cpp{} standard library are defined as @@ -3518,7 +3115,7 @@ index 86ab73dd..08842f66 100644 \pnum A call to a non-member function signature -@@ -3643,7 +3644,7 @@ The phrase ``unless otherwise specified'' applies to cases such as +@@ -3640,7 +3641,7 @@ The phrase ``unless otherwise specified'' applies to cases such as the swappable with requirements\iref{swappable.requirements}. The exception for overloaded operators allows argument-dependent lookup in cases like that of @@ -3527,7 +3124,7 @@ index 86ab73dd..08842f66 100644 \effects \begin{codeblock} -@@ -3658,7 +3659,7 @@ return *this; +@@ -3655,7 +3656,7 @@ return *this; \pnum It is unspecified whether any member functions in the \Cpp{} standard library are defined as @@ -3536,7 +3133,7 @@ index 86ab73dd..08842f66 100644 \pnum For a non-virtual member function described in the \Cpp{} standard library, -@@ -3737,8 +3738,8 @@ library may be recursively reentered. +@@ -3734,8 +3735,8 @@ library may be recursively reentered. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -3547,7 +3144,7 @@ index 86ab73dd..08842f66 100644 Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. -@@ -3781,7 +3782,7 @@ not visible to users and are protected against data races. +@@ -3778,7 +3779,7 @@ not visible to users and are protected against data races. \pnum Unless otherwise specified, \Cpp{} standard library functions shall perform all operations solely within the current thread if those operations have effects that are @@ -3556,7 +3153,7 @@ index 86ab73dd..08842f66 100644 \pnum \begin{note} -@@ -3888,7 +3889,7 @@ potentially-throwing exception specification} exceptions. +@@ -3885,7 +3886,7 @@ potentially-throwing exception specification} exceptions. \begin{footnote} In particular, they can report a failure to allocate storage by throwing an exception of type @@ -3565,7 +3162,7 @@ index 86ab73dd..08842f66 100644 or a class derived from \tcode{bad_alloc}\iref{bad.alloc}. \end{footnote} -@@ -3907,7 +3908,7 @@ by adding a non-throwing exception specification. +@@ -3904,7 +3905,7 @@ by adding a non-throwing exception specification. \pnum Certain functions in the \Cpp{} standard library report errors via a @@ -3587,63 +3184,8 @@ index bdc1f3de..efd4eb00 100644 \item% Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. -diff --git a/source/locales.tex b/source/locales.tex -index 756cb932..b6301824 100644 ---- a/source/locales.tex -+++ b/source/locales.tex -@@ -991,7 +991,7 @@ namespace std { - \end{codeblock} - - \pnum --The type \tcode{mask} is a bitmask type\iref{bitmask.types}. -+The type \tcode{mask} is a \link{bitmask type}{bitmask.types}. - - \rSec3[locale.ctype]{Class template \tcode{ctype}} - -@@ -4549,31 +4549,21 @@ namespace std { - - \rSec2[clocale.syn]{Header \tcode{} synopsis} - --\indexlibraryglobal{lconv}% --\indexlibraryglobal{setlocale}% --\indexlibraryglobal{localeconv}% --\indexlibraryglobal{NULL}% --\indexlibraryglobal{LC_ALL}% --\indexlibraryglobal{LC_COLLATE}% --\indexlibraryglobal{LC_CTYPE}% --\indexlibraryglobal{LC_MONETARY}% --\indexlibraryglobal{LC_NUMERIC}% --\indexlibraryglobal{LC_TIME}% - \begin{codeblock} - namespace std { -- struct lconv; -+ struct @\libglobal{lconv}@; - -- char* setlocale(int category, const char* locale); -- lconv* localeconv(); -+ char* @\libglobal{setlocale}@(int category, const char* locale); -+ lconv* @\libglobal{localeconv}@(); - } - --#define NULL @\textit{see \ref{support.types.nullptr}}@ --#define LC_ALL @\seebelow@ --#define LC_COLLATE @\seebelow@ --#define LC_CTYPE @\seebelow@ --#define LC_MONETARY @\seebelow@ --#define LC_NUMERIC @\seebelow@ --#define LC_TIME @\seebelow@ -+#define @\libglobal{NULL}@ @\textit{see \ref{support.types.nullptr}}@ -+#define @\libglobal{LC_ALL}@ @\seebelow@ -+#define @\libglobal{LC_COLLATE}@ @\seebelow@ -+#define @\libglobal{LC_CTYPE}@ @\seebelow@ -+#define @\libglobal{LC_MONETARY}@ @\seebelow@ -+#define @\libglobal{LC_NUMERIC}@ @\seebelow@ -+#define @\libglobal{LC_TIME}@ @\seebelow@ - \end{codeblock} - - \pnum diff --git a/source/numerics.tex b/source/numerics.tex -index 64905b4e..fdb1decb 100644 +index 86b42943..cba469a9 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -166,8 +166,8 @@ floating-point evaluation in constant expressions. @@ -3709,7 +3251,7 @@ index 64905b4e..fdb1decb 100644 \item \tcode{z} is a value of type \tcode{unsigned long long}; -@@ -2286,7 +2286,7 @@ In \tref{rand.req.dist} and throughout this subclause, +@@ -2287,7 +2287,7 @@ In \tref{rand.req.dist} and throughout this subclause, \item \tcode{g}, \tcode{g1}, and \tcode{g2} are lvalues of a type meeting the requirements @@ -3718,7 +3260,7 @@ index 64905b4e..fdb1decb 100644 \item \tcode{os} is an lvalue of the type of some class template specialization \tcode{basic_ostream}; -@@ -2317,7 +2317,7 @@ according to \ref{strings} and \ref{input.output}. +@@ -2319,7 +2319,7 @@ according to \ref{strings} and \ref{input.output}. \endhead \tcode{D::result_type} & \tcode{T} @@ -3727,7 +3269,7 @@ index 64905b4e..fdb1decb 100644 & compile-time \\ \rowsep \tcode{D::param_type} -@@ -2524,7 +2524,7 @@ using distribution_type = D; +@@ -2526,7 +2526,7 @@ using distribution_type = D; Each type instantiated from a class template specified in \ref{rand.eng} meets the requirements @@ -3736,7 +3278,7 @@ index 64905b4e..fdb1decb 100644 \pnum Except where specified otherwise, -@@ -3318,7 +3318,7 @@ The counter is the value $Z$ introduced at the beginning of this subclause. +@@ -3320,7 +3320,7 @@ The counter is the value $Z$ introduced at the beginning of this subclause. Each type instantiated from a class template specified in \ref{rand.adapt} meets the requirements @@ -3745,7 +3287,7 @@ index 64905b4e..fdb1decb 100644 \pnum Except where specified otherwise, -@@ -4412,7 +4412,7 @@ than the output when computing $S$. +@@ -4414,7 +4414,7 @@ than the output when computing $S$. Each type instantiated from a class template specified in \ref{rand.dist} meets the requirements @@ -3754,7 +3296,7 @@ index 64905b4e..fdb1decb 100644 \pnum Descriptions are provided in \ref{rand.dist} -@@ -5264,6 +5264,7 @@ p(x\,|\,\alpha,\beta) = +@@ -5266,6 +5266,7 @@ p(x\,|\,\alpha,\beta) = \indexlibraryglobal{gamma_distribution}% \indexlibrarymember{result_type}{gamma_distribution}% @@ -3762,7 +3304,7 @@ index 64905b4e..fdb1decb 100644 \begin{codeblock} namespace std { template -@@ -5307,7 +5308,6 @@ namespace std { +@@ -5309,7 +5310,6 @@ namespace std { } \end{codeblock} @@ -3770,7 +3312,7 @@ index 64905b4e..fdb1decb 100644 \indexlibraryctor{gamma_distribution}% \begin{itemdecl} explicit gamma_distribution(RealType alpha, RealType beta = 1.0); -@@ -5414,7 +5414,7 @@ namespace std { +@@ -5416,7 +5416,7 @@ namespace std { \indexlibraryctor{weibull_distribution}% \begin{itemdecl} explicit weibull_distribution(RealType a, RealType b = 1.0); @@ -3779,7 +3321,7 @@ index 64905b4e..fdb1decb 100644 \begin{itemdescr} \pnum -@@ -5524,7 +5524,6 @@ namespace std { +@@ -5526,7 +5526,6 @@ namespace std { } \end{codeblock} @@ -3787,7 +3329,7 @@ index 64905b4e..fdb1decb 100644 \indexlibraryctor{extreme_value_distribution}% \begin{itemdecl} explicit extreme_value_distribution(RealType a, RealType b = 1.0); -@@ -5648,7 +5647,6 @@ namespace std { +@@ -5650,7 +5649,6 @@ namespace std { } \end{codeblock} @@ -3795,7 +3337,7 @@ index 64905b4e..fdb1decb 100644 \indexlibraryctor{normal_distribution}% \begin{itemdecl} explicit normal_distribution(RealType mean, RealType stddev = 1.0); -@@ -5852,7 +5850,6 @@ namespace std { +@@ -5854,7 +5852,6 @@ namespace std { } \end{codeblock} @@ -3803,7 +3345,7 @@ index 64905b4e..fdb1decb 100644 \indexlibraryctor{chi_squared_distribution}% \begin{itemdecl} explicit chi_squared_distribution(RealType n); -@@ -6046,7 +6043,6 @@ namespace std { +@@ -6048,7 +6045,6 @@ namespace std { } \end{codeblock} @@ -3811,7 +3353,7 @@ index 64905b4e..fdb1decb 100644 \indexlibraryctor{fisher_f_distribution}% \begin{itemdecl} explicit fisher_f_distribution(RealType m, RealType n = 1); -@@ -6149,7 +6145,6 @@ namespace std { +@@ -6151,7 +6147,6 @@ namespace std { } \end{codeblock} @@ -3819,7 +3361,7 @@ index 64905b4e..fdb1decb 100644 \indexlibraryctor{student_t_distribution}% \begin{itemdecl} explicit student_t_distribution(RealType n); -@@ -6265,7 +6260,7 @@ namespace std { +@@ -6267,7 +6262,7 @@ namespace std { } \end{codeblock} @@ -3828,7 +3370,7 @@ index 64905b4e..fdb1decb 100644 \begin{itemdecl} discrete_distribution(); \end{itemdecl} -@@ -7095,8 +7090,9 @@ additional functions and operators as follows: +@@ -7097,8 +7092,9 @@ additional functions and operators as follows: \begin{itemize} \item for every function taking a @@ -3840,7 +3382,7 @@ index 64905b4e..fdb1decb 100644 identical functions taking the replacement types shall be added; \item for every function taking two -@@ -7121,7 +7117,7 @@ objects. +@@ -7123,7 +7119,7 @@ objects. \pnum These library functions are permitted to throw a @@ -3849,7 +3391,7 @@ index 64905b4e..fdb1decb 100644 to carry out the operation. Note that the exception is not mandated. -@@ -7281,7 +7277,7 @@ explicit valarray(size_t n); +@@ -7283,7 +7279,7 @@ explicit valarray(size_t n); \pnum \effects Constructs a \tcode{valarray} that has length \tcode{n}. @@ -3858,7 +3400,7 @@ index 64905b4e..fdb1decb 100644 \end{itemdescr} \indexlibraryctor{valarray}% -@@ -7541,7 +7537,7 @@ and other techniques to generate efficient +@@ -7543,7 +7539,7 @@ and other techniques to generate efficient \pnum The reference returned by the subscript operator for an array shall be valid until the member function @@ -3867,7 +3409,7 @@ index 64905b4e..fdb1decb 100644 that array ends, whichever happens first. \end{itemdescr} -@@ -7967,7 +7963,7 @@ places, with zero fill. +@@ -7969,7 +7965,7 @@ places, with zero fill. \pnum \begin{example} If the argument has the value $-2$, @@ -3876,7 +3418,7 @@ index 64905b4e..fdb1decb 100644 of the first element of \tcode{*this}; etc. \end{example} \end{itemdescr} -@@ -9092,7 +9088,7 @@ parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. +@@ -9094,7 +9090,7 @@ parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. \pnum The iterators returned by \tcode{begin} and \tcode{end} for an array are guaranteed to be valid until the member function @@ -3885,7 +3427,7 @@ index 64905b4e..fdb1decb 100644 array or until the lifetime of that array ends, whichever happens first. -@@ -9729,12 +9725,12 @@ namespace std { +@@ -9731,12 +9727,12 @@ namespace std { The contents and meaning of the header \libheader{cmath} are the same as the C standard library header \libheader{math.h}, with the addition of @@ -3901,7 +3443,7 @@ index 64905b4e..fdb1decb 100644 \end{note} \pnum -@@ -9798,7 +9794,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. +@@ -9800,7 +9796,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. If \tcode{abs} is called with an argument of type \tcode{X} for which \tcode{is_unsigned_v} is \tcode{true} and if \tcode{X} cannot be converted to \tcode{int} @@ -3911,7 +3453,7 @@ index 64905b4e..fdb1decb 100644 Allowing arguments that can be promoted to \tcode{int} provides compatibility with C. diff --git a/source/overloading.tex b/source/overloading.tex -index d7cac76f..25e6ca0b 100644 +index 48da87b1..481068cf 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -69,7 +69,7 @@ Overload resolution selects the function to call in seven distinct @@ -4024,16 +3566,16 @@ index d7cac76f..25e6ca0b 100644 -reference binding\iref{over.match.ref} of a reference to function type, the +\item the context is an initialization by conversion function for \link{direct +reference binding}{over.match.ref} of a reference to function type, the - 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 + return type of $\tcode{F}_1$ is the same kind of reference (lvalue or rvalue) + as the reference being initialized, and the return type of $\tcode{F}_2$ is not \begin{example} -@@ -1895,7 +1895,7 @@ or, if not that, - and \tcode{F2} is not, or, if not that, +@@ -1895,7 +1895,7 @@ $\tcode{F}_1$ is generated from a + and $\tcode{F}_2$ is not, or, if not that, \item --\tcode{F1} is the copy deduction candidate\iref{over.match.class.deduct} -+\tcode{F1} is the \deflink{copy deduction candidate}{over.match.class.deduct} - and \tcode{F2} is not, or, if not that, +-$\tcode{F}_1$ is the copy deduction candidate\iref{over.match.class.deduct} ++$\tcode{F}_1$ is the \deflink{copy deduction candidate}{over.match.class.deduct} + and $\tcode{F}_2$ is not, or, if not that, \item @@ -2040,7 +2040,7 @@ parameter. @@ -4154,7 +3696,7 @@ index d7cac76f..25e6ca0b 100644 and \tcode{long} diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 2b9e3e7e..f2818717 100644 +index 23944f5b..3bab1be7 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -418,7 +418,7 @@ shall not appear in any context not mentioned in this subclause. @@ -4206,119 +3748,6 @@ index 2b9e3e7e..f2818717 100644 \end{description} -diff --git a/source/regex.tex b/source/regex.tex -index cae1466d..50da6b7f 100644 ---- a/source/regex.tex -+++ b/source/regex.tex -@@ -709,13 +709,13 @@ shall be that used by extended regular expressions in POSIX. - % - \tcode{awk} & - Specifies that the grammar recognized by the regular expression engine --shall be that used by the utility awk in POSIX. -+shall be that used by the utility \weblink{awk}{http://pubs.opengroup.org/onlinepubs/9699919799/utilities/awk.html} in POSIX. - \indexlibrarymember{syntax_option_type}{awk}% - \\ \rowsep - % - \tcode{grep} & - Specifies that the grammar recognized by the regular expression engine --shall be that used by the utility grep in POSIX. -+shall be that used by the utility \weblink{grep}{http://pubs.opengroup.org/onlinepubs/9699919799/utilities/grep.html} in POSIX. - \indexlibrarymember{syntax_option_type}{grep}% - \\ \rowsep - % -@@ -739,42 +739,29 @@ if the \tcode{ECMAScript} engine is selected. - - \indexlibraryglobal{match_flag_type}% - \indexlibrarymember{regex_constants}{match_flag_type}% --\indexlibraryglobal{match_default}% --\indexlibraryglobal{match_not_bol}% --\indexlibraryglobal{match_not_eol}% --\indexlibraryglobal{match_not_bow}% --\indexlibraryglobal{match_not_eow}% --\indexlibraryglobal{match_any}% --\indexlibraryglobal{match_not_null}% --\indexlibraryglobal{match_continuous}% --\indexlibraryglobal{match_prev_avail}% --\indexlibraryglobal{format_default}% --\indexlibraryglobal{format_sed}% --\indexlibraryglobal{format_no_copy}% --\indexlibraryglobal{format_first_only}% - \begin{codeblock} - namespace std::regex_constants { - using match_flag_type = @\textit{T2}@; -- inline constexpr match_flag_type match_default = {}; -- inline constexpr match_flag_type match_not_bol = @\unspec@; -- inline constexpr match_flag_type match_not_eol = @\unspec@; -- inline constexpr match_flag_type match_not_bow = @\unspec@; -- inline constexpr match_flag_type match_not_eow = @\unspec@; -- inline constexpr match_flag_type match_any = @\unspec@; -- inline constexpr match_flag_type match_not_null = @\unspec@; -- inline constexpr match_flag_type match_continuous = @\unspec@; -- inline constexpr match_flag_type match_prev_avail = @\unspec@; -- inline constexpr match_flag_type format_default = {}; -- inline constexpr match_flag_type format_sed = @\unspec@; -- inline constexpr match_flag_type format_no_copy = @\unspec@; -- inline constexpr match_flag_type format_first_only = @\unspec@; -+ inline constexpr match_flag_type @\libglobal{match_default}@ = {}; -+ inline constexpr match_flag_type @\libglobal{match_not_bol}@ = @\unspec@; -+ inline constexpr match_flag_type @\libglobal{match_not_eol}@ = @\unspec@; -+ inline constexpr match_flag_type @\libglobal{match_not_bow}@ = @\unspec@; -+ inline constexpr match_flag_type @\libglobal{match_not_eow}@ = @\unspec@; -+ inline constexpr match_flag_type @\libglobal{match_any}@ = @\unspec@; -+ inline constexpr match_flag_type @\libglobal{match_not_null}@ = @\unspec@; -+ inline constexpr match_flag_type @\libglobal{match_continuous}@ = @\unspec@; -+ inline constexpr match_flag_type @\libglobal{match_prev_avail}@ = @\unspec@; -+ inline constexpr match_flag_type @\libglobal{format_default}@ = {}; -+ inline constexpr match_flag_type @\libglobal{format_sed}@ = @\unspec@; -+ inline constexpr match_flag_type @\libglobal{format_no_copy}@ = @\unspec@; -+ inline constexpr match_flag_type @\libglobal{format_first_only}@ = @\unspec@; - } - \end{codeblock} - - \pnum - \indexlibraryglobal{match_flag_type}% - The type \tcode{match_flag_type} is an --\impldef{type of \tcode{regex_constants::match_flag_type}} bitmask type\iref{bitmask.types}. -+\impldef{type of \tcode{regex_constants::match_flag_type}} \link{bitmask type}{bitmask.types}. - The constants of that type, except for \tcode{match_default} and - \tcode{format_default}, are bitmask elements. The \tcode{match_default} and - \tcode{format_default} constants are empty bitmasks. -@@ -836,7 +823,7 @@ The expression shall only match a sub-sequence that begins at - \tcode{match_prev_avail} & - \verb!--first! is a valid iterator position. When this flag is - set the flags \tcode{match_not_bol} and \tcode{match_not_bow} shall be ignored by the --regular expression algorithms\iref{re.alg} and iterators\iref{re.iter}. -+\link{regular expression algorithms}{re.alg} and \link{iterators}{re.iter}. - \\ \rowsep - % - \indexlibraryglobal{format_default}% -@@ -844,7 +831,7 @@ regular expression algorithms\iref{re.alg} and iterators\iref{re.iter}. - When a regular expression match is to be replaced by a - new string, the new string shall be constructed using the rules used by - the ECMAScript replace function in ECMA-262, --part 15.5.4.11 String.prototype.replace. In -+part 15.5.4.11 \weblink{String.prototype.replace}{https://tc39.github.io/ecma262/#sec-string.prototype.replace}. In - addition, during search and replace operations all non-overlapping - occurrences of the regular expression shall be located and replaced, and - sections of the input that did not match the expression shall be copied -@@ -855,7 +842,7 @@ unchanged to the output string. - \tcode{format_sed} & - When a regular expression match is to be replaced by a - new string, the new string shall be constructed using the rules used by --the sed utility in POSIX. -+the \weblink{sed}{http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html} utility in POSIX. - \\ \rowsep - % - \indexlibraryglobal{format_no_copy}% -@@ -897,7 +884,7 @@ namespace std::regex_constants { - \indexlibraryglobal{error_type}% - \indexlibrarymember{regex_constants}{error_type}% - The type \tcode{error_type} is an \impldef{type of --\tcode{regex_constants::error_type}} enumerated type\iref{enumerated.types}. -+\tcode{regex_constants::error_type}} \link{enumerated type}{enumerated.types}. - Values of type \tcode{error_type} represent the error - conditions described in \tref{re.err}: - diff --git a/source/statements.tex b/source/statements.tex index 9940ee28..736fcc7c 100644 --- a/source/statements.tex @@ -4425,10 +3854,10 @@ index 9940ee28..736fcc7c 100644 \grammarterm{declarator} starts with a \tcode{(}. In those cases the \grammarterm{statement} is considered a \grammarterm{declaration}, diff --git a/source/strings.tex b/source/strings.tex -index 4e991305..3e7d1c2c 100644 +index 7b6a11a4..2c930405 100644 --- a/source/strings.tex +++ b/source/strings.tex -@@ -5609,13 +5609,13 @@ The contents and meaning of the header \libheaderdef{cstring} +@@ -5507,13 +5507,13 @@ The contents and meaning of the header \libheaderdef{cstring} are the same as the C standard library header \libheader{string.h}. \pnum @@ -4445,7 +3874,7 @@ index 4e991305..3e7d1c2c 100644 Both functions implicitly create objects\iref{intro.object} in the destination region of storage immediately prior to copying the sequence of characters to the destination. -@@ -5625,7 +5625,7 @@ immediately prior to copying the sequence of characters to the destination. +@@ -5523,7 +5523,7 @@ immediately prior to copying the sequence of characters to the destination. The functions \tcode{strchr}, \tcode{strpbrk}, \tcode{strrchr}, \tcode{strstr}, and \tcode{memchr}, have different signatures in this document, @@ -4454,17 +3883,8 @@ index 4e991305..3e7d1c2c 100644 \end{note} \xrefc{7.24} -@@ -5792,7 +5792,7 @@ are the same as the C standard library header - The functions - \tcode{wcschr}, \tcode{wcspbrk}, \tcode{wcsrchr}, \tcode{wcsstr}, and \tcode{wmemchr} - have different signatures in this document, --but they have the same behavior as in the C standard library\iref{library.c}. -+but they have the same behavior as in the \link{C standard library}{library.c}. - \end{note} - - \xrefc{7.29} diff --git a/source/support.tex b/source/support.tex -index bebd8957..0f2f5268 100644 +index 28c15ac9..50a598e7 100644 --- a/source/support.tex +++ b/source/support.tex @@ -43,22 +43,15 @@ as summarized in \tref{support.summary}. @@ -4677,7 +4097,7 @@ index bebd8957..0f2f5268 100644 is located at the address \placeholder{A}. All bytes of storage that would be reachable through\iref{basic.compound} the result -@@ -3292,7 +3281,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. +@@ -3296,7 +3285,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. \pnum \remarks @@ -4687,7 +4107,7 @@ index bebd8957..0f2f5268 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. \end{itemdescr} -@@ -3704,7 +3694,8 @@ An \impldef{return value of \tcode{exception::what}} \ntbs{}. +@@ -3868,7 +3858,8 @@ An \impldef{return value of \tcode{exception::what}} \ntbs{}. \pnum \remarks @@ -4697,7 +4117,7 @@ index bebd8957..0f2f5268 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. The return value remains valid until the exception object from which -@@ -3849,13 +3840,13 @@ int uncaught_exceptions() noexcept; +@@ -4013,13 +4004,13 @@ int uncaught_exceptions() noexcept; \begin{itemdescr} \pnum \returns @@ -4713,7 +4133,7 @@ index bebd8957..0f2f5268 100644 \end{itemdescr} \rSec2[propagation]{Exception propagation} -@@ -3914,8 +3905,9 @@ exception_ptr current_exception() noexcept; +@@ -4078,8 +4069,9 @@ exception_ptr current_exception() noexcept; \begin{itemdescr} \pnum \returns @@ -4725,7 +4145,7 @@ index bebd8957..0f2f5268 100644 handled exception, or a null \tcode{exception_ptr} object if no exception is being handled. The referenced object shall remain valid at least as long as there is an \tcode{exception_ptr} object that refers to it. -@@ -4238,7 +4230,7 @@ template constexpr const E* end(initializer_list il) noexcept; +@@ -4402,7 +4394,7 @@ template constexpr const E* end(initializer_list il) noexcept; \pnum The header \libheaderdef{compare} specifies types, objects, and functions for use primarily in connection with @@ -4734,7 +4154,7 @@ index bebd8957..0f2f5268 100644 \indexlibraryglobal{is_eq}% \indexlibraryglobal{is_neq}% -@@ -5778,7 +5770,7 @@ environment. +@@ -5942,7 +5934,7 @@ environment. \end{note} \pnum @@ -4743,7 +4163,7 @@ index bebd8957..0f2f5268 100644 may introduce a data race with other calls to the \tcode{setlocale} function or with calls to functions that are affected by the current C locale. The implementation shall behave as if no -@@ -5788,21 +5780,16 @@ function. +@@ -5952,21 +5944,16 @@ function. \rSec2[cstdarg.syn]{Header \tcode{} synopsis} \indexheader{cstdarg}% @@ -4771,7 +4191,7 @@ index bebd8957..0f2f5268 100644 \pnum diff --git a/source/templates.tex b/source/templates.tex -index 34db14f8..a0279ec7 100644 +index b2e9e177..8334620d 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -589,7 +589,7 @@ If a \grammarterm{template-parameter} is a @@ -5247,7 +4667,7 @@ index 34db14f8..a0279ec7 100644 \tcode{operator new}\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index 48711723..e9f81672 100644 +index 7bab867c..f5b726eb 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -5270,7 +4690,7 @@ index 48711723..e9f81672 100644 \begin{itemdecl} m.try_lock_for(rel_time) -@@ -6510,7 +6510,7 @@ namespace std { +@@ -6509,7 +6509,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -5279,7 +4699,7 @@ index 48711723..e9f81672 100644 An execution agent \term{owns} a mutex from the time it successfully calls one of the lock functions until it calls unlock. Mutexes can be either recursive or non-recursive, and can grant simultaneous ownership to one or many execution agents. Both -@@ -6554,7 +6554,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on +@@ -6553,7 +6553,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on a single mutex appears to occur in a single total order. \begin{note} This @@ -5288,7 +4708,7 @@ index 48711723..e9f81672 100644 mutex. \end{note} \begin{note} -@@ -6634,7 +6634,7 @@ in the absence of contending mutex acquisitions. +@@ -6633,7 +6633,7 @@ in the absence of contending mutex acquisitions. \pnum \sync If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations @@ -5297,7 +4717,7 @@ index 48711723..e9f81672 100644 \begin{note} Since \tcode{lock()} does not synchronize with a failed subsequent \tcode{try_lock()}, the visibility rules are weak enough that little would be -@@ -6670,7 +6670,7 @@ Releases the calling thread's ownership of the mutex. +@@ -6669,7 +6669,7 @@ Releases the calling thread's ownership of the mutex. \pnum \sync @@ -5306,7 +4726,7 @@ index 48711723..e9f81672 100644 lock operations that obtain ownership on the same object. \pnum -@@ -6799,9 +6799,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, +@@ -6798,9 +6798,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, meet the requirements set out below. In this description, \tcode{m} denotes an object of a mutex type, \tcode{rel_time} denotes an object of an @@ -5318,7 +4738,7 @@ index 48711723..e9f81672 100644 \begin{note} The timed mutex types meet the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. -@@ -7091,7 +7091,7 @@ Releases a shared lock on the mutex held by the calling thread. +@@ -7090,7 +7090,7 @@ Releases a shared lock on the mutex held by the calling thread. \pnum \sync @@ -5327,7 +4747,7 @@ index 48711723..e9f81672 100644 \tcode{lock()} operations that obtain ownership on the same object. \pnum -@@ -7195,7 +7195,7 @@ meet the requirements set out below. In this description, +@@ -7194,7 +7194,7 @@ meet the requirements set out below. In this description, \tcode{rel_time} denotes an object of an instantiation of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes an object of an instantiation of @@ -5336,7 +4756,7 @@ index 48711723..e9f81672 100644 \begin{note} The shared timed mutex types meet the \oldconcept{SharedTimedLockable} requirements\iref{thread.req.lockable.shared.timed}. -@@ -7406,7 +7406,7 @@ namespace std { +@@ -7405,7 +7405,7 @@ namespace std { \pnum An object of type \tcode{lock_guard} controls the ownership of a lockable object within a scope. A \tcode{lock_guard} object maintains ownership of a lockable @@ -5345,7 +4765,7 @@ index 48711723..e9f81672 100644 The behavior of a program is undefined if the lockable object referenced by \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} -@@ -7479,7 +7479,7 @@ namespace std { +@@ -7478,7 +7478,7 @@ namespace std { \pnum An object of type \tcode{scoped_lock} controls the ownership of lockable objects within a scope. A \tcode{scoped_lock} object maintains ownership of lockable @@ -5354,7 +4774,7 @@ index 48711723..e9f81672 100644 The behavior of a program is undefined if the lockable objects referenced by \tcode{pm} do not exist for the entire lifetime of the \tcode{scoped_lock} object. -@@ -8647,7 +8647,7 @@ earlier returning execution. +@@ -8646,7 +8646,7 @@ earlier returning execution. \pnum \sync For any given \tcode{once_flag}: all active executions occur in a total @@ -5363,7 +4783,7 @@ index 48711723..e9f81672 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -10615,22 +10615,21 @@ the state object. +@@ -10612,22 +10612,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -5390,7 +4810,7 @@ index 48711723..e9f81672 100644 \begin{note} This explicitly specifies that the result of the shared state is visible in the objects that reference this state in the sense of data race -@@ -10966,8 +10965,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -10963,8 +10962,8 @@ The class template \tcode{future} defines a type for asynchronous return objects do not share their shared state with other asynchronous return objects. A default-constructed \tcode{future} object has no shared state. A \tcode{future} object with shared state can be created by @@ -5401,7 +4821,7 @@ index 48711723..e9f81672 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -11277,7 +11276,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -11274,7 +11273,7 @@ object has no shared state. A \tcode{shared_future} object with shared state can be created by conversion from a \tcode{future} object and shares its shared state with the @@ -5410,7 +4830,7 @@ index 48711723..e9f81672 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -11726,7 +11725,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -11723,7 +11722,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -5469,10 +4889,10 @@ index dfa16010..59ff0169 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index ced6ebc2..4f7dced2 100644 +index 7f1cbeff..0da437df 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -108,15 +108,15 @@ namespace std { +@@ -103,15 +103,15 @@ namespace std { template struct integer_sequence; template @@ -5491,7 +4911,7 @@ index ced6ebc2..4f7dced2 100644 // \ref{pairs}, class template \tcode{pair} template -@@ -322,7 +322,7 @@ of forwarding functions. +@@ -317,7 +317,7 @@ of forwarding functions. \indextext{signal-safe!\idxcode{forward}}% \indextext{signal-safe!\idxcode{move}}% \indextext{signal-safe!\idxcode{move_if_noexcept}}% @@ -5500,7 +4920,7 @@ index ced6ebc2..4f7dced2 100644 \indexlibraryglobal{forward}% \indextext{\idxcode{forward}}% -@@ -497,7 +497,7 @@ template constexpr add_const_t& as_const(T& t) noexcept; +@@ -492,7 +492,7 @@ template constexpr add_const_t& as_const(T& t) noexcept; \pnum The library provides the function template \tcode{declval} to simplify the definition of @@ -5509,7 +4929,7 @@ index ced6ebc2..4f7dced2 100644 \indexlibraryglobal{declval}% \begin{itemdecl} -@@ -1477,7 +1477,7 @@ inline constexpr piecewise_construct_t piecewise_construct{}; +@@ -1472,7 +1472,7 @@ inline constexpr piecewise_construct_t piecewise_construct{}; The \keyword{struct} \tcode{piecewise_construct_t} is an empty class type used as a unique type to disambiguate constructor and function overloading. Specifically, \tcode{pair} has a constructor with \tcode{piecewise_construct_t} as the @@ -5518,7 +4938,7 @@ index ced6ebc2..4f7dced2 100644 for piecewise construction of the elements of the \tcode{pair} object. \rSec1[tuple]{Tuples} -@@ -2122,7 +2122,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. +@@ -2117,7 +2117,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. \pnum \effects Equivalent to the preceding constructors except that each element is constructed with @@ -5527,7 +4947,7 @@ index ced6ebc2..4f7dced2 100644 \end{itemdescr} \rSec3[tuple.assign]{Assignment} -@@ -2788,7 +2788,7 @@ template struct tuple_size; +@@ -2783,7 +2783,7 @@ template struct tuple_size; \pnum Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. If the expression \tcode{TS::value} is well-formed @@ -5536,7 +4956,7 @@ index ced6ebc2..4f7dced2 100644 each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts} with a base characteristic of \begin{codeblock} -@@ -6320,6 +6320,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); +@@ -6315,6 +6315,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); \rSec2[variant.monostate]{Class \tcode{monostate}}% \indexlibraryglobal{monostate}% @@ -5544,7 +4964,7 @@ index ced6ebc2..4f7dced2 100644 \begin{itemdecl} struct monostate{}; \end{itemdecl} -@@ -6486,7 +6487,8 @@ namespace std { +@@ -6481,7 +6482,8 @@ namespace std { \end{codeblock} \pnum @@ -5554,69 +4974,14 @@ index ced6ebc2..4f7dced2 100644 \indexlibrarymember{what}{bad_any_cast}% \begin{itemdecl} -@@ -15094,9 +15096,9 @@ namespace std { - - \pnum - The class \tcode{type_index} provides a simple wrapper for --\tcode{type_info} which can be used as an index type in associative --containers\iref{associative} and in unordered associative --containers\iref{unord}. -+\tcode{type_info} which can be used as an index type in -+\link{associative containers}{associative} and in -+\link{unordered associative containers}{unord}. - - \rSec2[type.index.members]{\tcode{type_index} members} - -@@ -15402,18 +15404,13 @@ in lieu of \tcode{\placeholder{floating-point-type}}. - \indexheader{charconv}% - \begin{codeblock} - @% --\indexlibraryglobal{chars_format}% --\indexlibrarymember{scientific}{chars_format}% --\indexlibrarymember{fixed}{chars_format}% --\indexlibrarymember{hex}{chars_format}% --\indexlibrarymember{general}{chars_format}% - @namespace std { - // floating-point format for primitive numerical conversion -- enum class chars_format { -- scientific = @\unspec@, -- fixed = @\unspec@, -- hex = @\unspec@, -- general = fixed | scientific -+ enum class @\libglobal{chars_format}@ { -+ @\libmember{scientific}{chars_format}@ = @\unspec@, -+ @\libmember{fixed}{chars_format}@ = @\unspec@, -+ @\libmember{hex}{chars_format}@ = @\unspec@, -+ @\libmember{general}{chars_format}@ = fixed | scientific - }; - @% - \indexlibraryglobal{to_chars_result}% -@@ -15508,7 +15505,7 @@ If there are several such representations, - the representation with the smallest difference from - the floating-point argument value is chosen, - resolving any remaining ties using rounding according to --\tcode{round_to_nearest}\iref{round.style}. -+\libglobalref{round_to_nearest}. - - \pnum - The functions taking a \tcode{chars_format} parameter -@@ -15649,7 +15646,7 @@ the member \tcode{ec} of the return value - is equal to \tcode{errc::result_out_of_range}. - Otherwise, - \tcode{value} is set to the parsed value, --after rounding according to \tcode{round_to_nearest}\iref{round.style}, and -+after rounding according to \libglobalref{round_to_nearest}, and - the member \tcode{ec} is value-initialized. - - \indexlibraryglobal{from_chars}% -- 2.34.1 -From b8205c95bc4af7ce519bc75dce0a385771de3f36 Mon Sep 17 00:00:00 2001 +From 1df9b2004ca7db2f8da5e7bc6c6cab136a4f8bd9 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 -Subject: [PATCH 07/18] Fix dubious \defnx that has see{} in it, and remove +Subject: [PATCH 06/14] Fix dubious \defnx that has see{} in it, and remove range index entry with the same key. --- @@ -5625,10 +4990,10 @@ Subject: [PATCH 07/18] Fix dubious \defnx that has see{} in it, and remove 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index e8876d14..467288c5 100644 +index 64b38daf..8321f84b 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -13922,7 +13922,7 @@ without an intervening \grammarterm{root-directory} element. +@@ -13897,7 +13897,7 @@ without an intervening \grammarterm{root-directory} element. \pnum \indextext{path!normalization|(}% @@ -5638,7 +5003,7 @@ index e8876d14..467288c5 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index a0279ec7..4a18801d 100644 +index 8334620d..533e6ffb 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -1888,7 +1888,6 @@ so it does match \#2. @@ -5674,22 +5039,21 @@ index a0279ec7..4a18801d 100644 2.34.1 -From b6a1987612a897ceb487e91df96efbdc4d92bddf Mon Sep 17 00:00:00 2001 +From 66e0cbfeb52cbf0491dcd218b60d04a157437b1a Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:27:17 +0100 -Subject: [PATCH 08/18] Replace more non-codeblocks with outputblocks. +Subject: [PATCH 07/14] Replace more non-codeblocks with outputblocks. --- source/iostreams.tex | 12 ++++++------ - source/regex.tex | 4 ++-- source/uax31.tex | 4 ++-- - 3 files changed, 10 insertions(+), 10 deletions(-) + 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index 467288c5..bfd310e8 100644 +index 8321f84b..f68042b4 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -17383,16 +17383,16 @@ library functions called by the implementation shall have an \tcode{error_code} +@@ -17358,16 +17358,16 @@ library functions called by the implementation shall have an \tcode{error_code} \pnum \begin{example} Given this directory structure: @@ -5709,7 +5073,7 @@ index 467288c5..bfd310e8 100644 /dir1 file1 file2 -@@ -17401,10 +17401,10 @@ Calling \tcode{copy("/dir1", "/dir3")} would result in: +@@ -17376,10 +17376,10 @@ Calling \tcode{copy("/dir1", "/dir3")} would result in: /dir3 file1 file2 @@ -5722,7 +5086,7 @@ index 467288c5..bfd310e8 100644 /dir1 file1 file2 -@@ -17415,7 +17415,7 @@ Alternatively, calling \tcode{copy("/dir1", "/dir3", copy_options::recursive)} w +@@ -17390,7 +17390,7 @@ Alternatively, calling \tcode{copy("/dir1", "/dir3", copy_options::recursive)} w file2 dir2 file3 @@ -5731,28 +5095,6 @@ index 467288c5..bfd310e8 100644 \end{example} \end{itemdescr} -diff --git a/source/regex.tex b/source/regex.tex -index 50da6b7f..fa3cad9a 100644 ---- a/source/regex.tex -+++ b/source/regex.tex -@@ -3866,7 +3866,7 @@ names shall be recognized: - \tcode{upper}, \tcode{xdigit}, \tcode{d}, \tcode{s}, \tcode{w}. - In addition the following expressions shall be equivalent: - --\begin{codeblock} -+\begin{outputblock} - \d @\textnormal{and}@ [[:digit:]] - - \D @\textnormal{and}@ [^[:digit:]] -@@ -3878,7 +3878,7 @@ In addition the following expressions shall be equivalent: - \w @\textnormal{and}@ [_[:alnum:]] - - \W @\textnormal{and}@ [^_[:alnum:]] --\end{codeblock} -+\end{outputblock} - - \pnum - \indexlibrary{regular expression traits!\idxcode{lookup_collatename}}% diff --git a/source/uax31.tex b/source/uax31.tex index ee0bb9c2..5b236c6e 100644 --- a/source/uax31.tex @@ -5775,22 +5117,20 @@ index ee0bb9c2..5b236c6e 100644 2.34.1 -From a6e31a3e59c0ea6c694efcd2b0aafcf4e8d7212f Mon Sep 17 00:00:00 2001 +From 9d813ccf1d1a6ba28a87dffb4e5d1941b16b028a Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 -Subject: [PATCH 09/18] Use cxxdraft-htmlgen macros to annotate non-C++ code +Subject: [PATCH 08/14] Use cxxdraft-htmlgen macros to annotate non-C++ code and literal fragments. --- source/exceptions.tex | 4 +- - source/lex.tex | 130 +++++------ - source/regex.tex | 12 +- + source/lex.tex | 116 +++++----- source/time.tex | 516 +++++++++++++++++++++--------------------- - source/utilities.tex | 136 +++++------ - 5 files changed, 399 insertions(+), 399 deletions(-) + 3 files changed, 318 insertions(+), 318 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex -index 5e22232c..7019ac7a 100644 +index a8d6a0c0..0617df06 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -135,11 +135,11 @@ does not declare a variable. @@ -5808,43 +5148,10 @@ index 5e22232c..7019ac7a 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index 1e1e8ad4..fc08d68c 100644 +index 1c8f710d..21b7af76 100644 --- a/source/lex.tex +++ b/source/lex.tex -@@ -342,7 +342,7 @@ other characters. - - \begin{bnf} - \nontermdef{named-universal-character}\br -- \terminal{\textbackslash N\{} n-char-sequence \terminal{\}} -+ \literalterminal{\textbackslash N\{} n-char-sequence \literalterminal{\}} - \end{bnf} - - \begin{bnf} -@@ -358,17 +358,17 @@ other characters. - - \begin{bnf} - \nontermdef{universal-character-name}\br -- \terminal{\textbackslash u} hex-quad\br -- \terminal{\textbackslash U} hex-quad hex-quad\br -- \terminal{\textbackslash u\{} simple-hexadecimal-digit-sequence \terminal{\}}\br -+ \literalterminal{\textbackslash u} hex-quad\br -+ \literalterminal{\textbackslash U} hex-quad hex-quad\br -+ \literalterminal{\textbackslash u\{} simple-hexadecimal-digit-sequence \literalterminal{\}}\br - named-universal-character - \end{bnf} - - \pnum - A \grammarterm{universal-character-name} --of the form \tcode{\textbackslash u} \grammarterm{hex-quad}, --\tcode{\textbackslash U} \grammarterm{hex-quad} \grammarterm{hex-quad}, or --\tcode{\textbackslash u\{\grammarterm{simple-hexadecimal-digit-sequence}\}} -+of the form \literaltcode{\textbackslash u} \grammarterm{hex-quad}, -+\literaltcode{\textbackslash U} \grammarterm{hex-quad} \grammarterm{hex-quad}, or -+\literaltcode{\textbackslash u\{\grammarterm{simple-hexadecimal-digit-sequence}\}} - designates the character in the translation character set - whose Unicode scalar value is the hexadecimal number represented by - the sequence of \grammarterm{hexadecimal-digit}s -@@ -530,7 +530,7 @@ given character: +@@ -566,7 +566,7 @@ given character: \item \indextext{literal!string!raw}% If the next character begins a sequence of characters that could be the prefix @@ -5853,7 +5160,7 @@ index 1e1e8ad4..fc08d68c 100644 token shall be a raw string literal. Between the initial and final double quote characters of the raw string, any transformations performed in phase 2 (line splicing) are reverted; this reversion -@@ -538,7 +538,7 @@ shall apply before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting +@@ -574,7 +574,7 @@ shall apply before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting parenthesis is identified. The raw string literal is defined as the shortest sequence of characters that matches the raw-string pattern \begin{ncbnf} @@ -5862,7 +5169,7 @@ index 1e1e8ad4..fc08d68c 100644 \end{ncbnf} \item Otherwise, if the next three characters are \tcode{<::} and the subsequent character -@@ -768,15 +768,15 @@ depending on the implementation. +@@ -694,15 +694,15 @@ depending on the implementation. \begin{bnf} \nontermdef{pp-number}\br digit\br @@ -5886,7 +5193,7 @@ index 1e1e8ad4..fc08d68c 100644 \end{bnf} \pnum -@@ -1121,19 +1121,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1124,19 +1124,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. \nontermdef{binary-literal}\br \terminal{0b} binary-digit\br \terminal{0B} binary-digit\br @@ -5909,7 +5216,7 @@ index 1e1e8ad4..fc08d68c 100644 \end{bnf} \begin{bnf} -@@ -1164,14 +1164,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1167,14 +1167,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{hexadecimal-digit-sequence}\br hexadecimal-digit\br @@ -5928,7 +5235,7 @@ index 1e1e8ad4..fc08d68c 100644 \end{bnf} \begin{bnf} -@@ -1186,17 +1186,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1189,17 +1189,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{unsigned-suffix} \textnormal{one of}\br @@ -5949,7 +5256,7 @@ index 1e1e8ad4..fc08d68c 100644 \end{bnf} \begin{bnf} -@@ -1235,7 +1235,7 @@ when determining the value. +@@ -1238,7 +1238,7 @@ when determining the value. \pnum The \grammarterm{hexadecimal-digit}s @@ -5958,7 +5265,7 @@ index 1e1e8ad4..fc08d68c 100644 have decimal values ten through fifteen. \begin{example} The number twelve can be written \tcode{12}, \tcode{014}, -@@ -1279,7 +1279,7 @@ none & +@@ -1282,7 +1282,7 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -5967,7 +5274,7 @@ index 1e1e8ad4..fc08d68c 100644 \tcode{unsigned int} & \tcode{unsigned int}\\ & -@@ -1288,7 +1288,7 @@ none & +@@ -1291,7 +1291,7 @@ none & & \tcode{unsigned long long int} & \tcode{unsigned long long int}\\\hline @@ -5976,7 +5283,7 @@ index 1e1e8ad4..fc08d68c 100644 \tcode{long int} & \tcode{long int}\\ & -@@ -1300,22 +1300,22 @@ none & +@@ -1303,22 +1303,22 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -6004,7 +5311,7 @@ index 1e1e8ad4..fc08d68c 100644 & \\\hline \tcode{z} or \tcode{Z} & -@@ -1363,12 +1363,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1366,12 +1366,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \indextext{literal!character}% \begin{bnf} \nontermdef{character-literal}\br @@ -6019,7 +5326,7 @@ index 1e1e8ad4..fc08d68c 100644 \end{bnf} \begin{bnf} -@@ -1421,16 +1421,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1424,16 +1424,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{octal-escape-sequence}\br @@ -6042,7 +5349,7 @@ index 1e1e8ad4..fc08d68c 100644 \end{bnf} \begin{bnf} -@@ -1618,42 +1618,42 @@ is supported for compatibility with \CppXIV{} and C. +@@ -1621,42 +1621,42 @@ is supported for compatibility with \CppXIV{} and C. \begin{bnf} \nontermdef{fractional-constant}\br @@ -6096,7 +5403,7 @@ index 1e1e8ad4..fc08d68c 100644 \end{bnf} \pnum -@@ -1681,13 +1681,13 @@ are conditionally-supported. See \ref{basic.extended.fp}. +@@ -1684,13 +1684,13 @@ are conditionally-supported. See \ref{basic.extended.fp}. \topline \lhdr{\grammarterm{floating-point-suffix}} & \rhdr{type} \\ \capsep none & \keyword{double} \\ @@ -6117,7 +5424,7 @@ index 1e1e8ad4..fc08d68c 100644 \end{simpletypetable} \pnum -@@ -1738,8 +1738,8 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1741,8 +1741,8 @@ chosen in an \impldef{choice of larger or smaller value of \indextext{literal!string}% \begin{bnf} \nontermdef{string-literal}\br @@ -6128,7 +5435,7 @@ index 1e1e8ad4..fc08d68c 100644 \end{bnf} \begin{bnf} -@@ -1763,7 +1763,7 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1766,7 +1766,7 @@ chosen in an \impldef{choice of larger or smaller value of \begin{bnf} \nontermdef{raw-string}\br @@ -6137,7 +5444,7 @@ index 1e1e8ad4..fc08d68c 100644 \end{bnf} \begin{bnf} -@@ -1850,7 +1850,7 @@ UTF-32 & +@@ -1853,7 +1853,7 @@ UTF-32 & \pnum \indextext{literal!string!raw}% @@ -6146,58 +5453,6 @@ index 1e1e8ad4..fc08d68c 100644 \indextext{prefix!\idxcode{R}}% in the prefix is a \defn{raw string literal}. The \grammarterm{d-char-sequence} serves as a delimiter. The terminating -diff --git a/source/regex.tex b/source/regex.tex -index fa3cad9a..2da68d63 100644 ---- a/source/regex.tex -+++ b/source/regex.tex -@@ -3803,7 +3803,7 @@ The following productions within the ECMAScript grammar are modified as follows: - - \begin{ncrebnf} - \renontermdef{ClassAtom}\br -- \terminal{-}\br -+ \noncxxterminal{-}\br - ClassAtomNoDash\br - ClassAtomExClass\br - ClassAtomCollatingElement\br -@@ -3812,7 +3812,7 @@ The following productions within the ECMAScript grammar are modified as follows: - - \begin{ncrebnf} - \renontermdef{IdentityEscape}\br -- SourceCharacter \textnormal{\textbf{but not}} \terminal{c} -+ SourceCharacter \textnormal{\textbf{but not}} \noncxxterminal{c} - \end{ncrebnf} - - \pnum -@@ -3820,17 +3820,17 @@ The following new productions are then added: - - \begin{ncrebnf} - \renontermdef{ClassAtomExClass}\br -- \terminal{[:} ClassName \terminal{:]} -+ \noncxxterminal{[:} ClassName \noncxxterminal{:]} - \end{ncrebnf} - - \begin{ncrebnf} - \renontermdef{ClassAtomCollatingElement}\br -- \terminal{[.} ClassName \terminal{.]} -+ \noncxxterminal{[.} ClassName \noncxxterminal{.]} - \end{ncrebnf} - - \begin{ncrebnf} - \renontermdef{ClassAtomEquivalence}\br -- \terminal{[=} ClassName \terminal{=]} -+ \noncxxterminal{[=} ClassName \noncxxterminal{=]} - \end{ncrebnf} - - \begin{ncrebnf} -@@ -3841,7 +3841,7 @@ The following new productions are then added: - - \begin{ncrebnf} - \renontermdef{ClassNameCharacter}\br -- SourceCharacter \textnormal{\textbf{but not one of}} \terminal{.} \textnormal{\textbf{or}} \terminal{=} \textnormal{\textbf{or}} \terminal{:} -+ SourceCharacter \textnormal{\textbf{but not one of}} \noncxxterminal{.} \textnormal{\textbf{or}} \noncxxterminal{=} \textnormal{\textbf{or}} \noncxxterminal{:} - \end{ncrebnf} - - \pnum diff --git a/source/time.tex b/source/time.tex index 59ff0169..9344719d 100644 --- a/source/time.tex @@ -7212,441 +6467,14 @@ index 59ff0169..9344719d 100644 \\ \end{LongTable} -diff --git a/source/utilities.tex b/source/utilities.tex -index 4f7dced2..2416ba50 100644 ---- a/source/utilities.tex -+++ b/source/utilities.tex -@@ -15929,23 +15929,23 @@ A \defn{format string} for arguments \tcode{args} is - a (possibly empty) sequence of - \defnx{replacement fields}{replacement field!format string}, - \defnx{escape sequences}{escape sequence!format string}, --and characters other than \tcode{\{} and \tcode{\}}. -+and characters other than \noncxxtcode{\{} and \noncxxtcode{\}}. - Let \tcode{charT} be the character type of the format string. - Each character that is not part of - a replacement field or an escape sequence - is copied unchanged to the output. --An escape sequence is one of \tcode{\{\{} or \tcode{\}\}}. --It is replaced with \tcode{\{} or \tcode{\}}, respectively, in the output. -+An escape sequence is one of \noncxxtcode{\{\{} or \noncxxtcode{\}\}}. -+It is replaced with \noncxxtcode{\{} or \noncxxtcode{\}}, respectively, in the output. - The syntax of replacement fields is as follows: - - \begin{ncbnf} - \fmtnontermdef{replacement-field}\br -- \terminal{\{} \opt{arg-id} \opt{format-specifier} \terminal{\}} -+ \noncxxterminal{\{} \opt{arg-id} \opt{format-specifier} \noncxxterminal{\}} - \end{ncbnf} - - \begin{ncbnf} - \fmtnontermdef{arg-id}\br -- \terminal{0}\br -+ \noncxxterminal{0}\br - positive-integer - \end{ncbnf} - -@@ -15963,18 +15963,18 @@ The syntax of replacement fields is as follows: - - \begin{ncbnf} - \fmtnontermdef{nonzero-digit} \textnormal{one of}\br -- \terminal{1 2 3 4 5 6 7 8 9} -+ \noncxxterminal{1 2 3 4 5 6 7 8 9} - \end{ncbnf} - - % FIXME: This exactly duplicates the digit grammar term from [lex] - \begin{ncbnf} - \fmtnontermdef{digit} \textnormal{one of}\br -- \terminal{0 1 2 3 4 5 6 7 8 9} -+ \noncxxterminal{0 1 2 3 4 5 6 7 8 9} - \end{ncbnf} - - \begin{ncbnf} - \fmtnontermdef{format-specifier}\br -- \terminal{:} format-spec -+ \noncxxterminal{:} format-spec - \end{ncbnf} - - \begin{ncbnf} -@@ -16070,7 +16070,7 @@ The syntax of format specifications is as follows: - - \begin{ncbnf} - \fmtnontermdef{std-format-spec}\br -- \opt{fill-and-align} \opt{sign} \opt{\terminal{\#}} \opt{\terminal{0}} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{type} -+ \opt{fill-and-align} \opt{sign} \opt{\noncxxterminal{\#}} \opt{\noncxxterminal{0}} \opt{width} \opt{precision} \opt{\noncxxterminal{L}} \opt{type} - \end{ncbnf} - - \begin{ncbnf} -@@ -16080,34 +16080,34 @@ The syntax of format specifications is as follows: - - \begin{ncbnf} - \fmtnontermdef{fill}\br -- \textnormal{any character other than \tcode{\{} or \tcode{\}}} -+ \textnormal{any character other than \noncxxtcode{\{} or \noncxxtcode{\}}} - \end{ncbnf} - - \begin{ncbnf} - \fmtnontermdef{align} \textnormal{one of}\br -- \terminal{< > \caret} -+ \noncxxterminal{< > \caret} - \end{ncbnf} - - \begin{ncbnf} - \fmtnontermdef{sign} \textnormal{one of}\br -- \terminal{+ -} \textnormal{space} -+ \noncxxterminal{+ -} \textnormal{space} - \end{ncbnf} - - \begin{ncbnf} - \fmtnontermdef{width}\br - positive-integer\br -- \terminal{\{} \opt{arg-id} \terminal{\}} -+ \noncxxterminal{\{} \opt{arg-id} \noncxxterminal{\}} - \end{ncbnf} - - \begin{ncbnf} - \fmtnontermdef{precision}\br -- \terminal{.} nonnegative-integer\br -- \terminal{.} \terminal{\{} \opt{arg-id} \terminal{\}} -+ \noncxxterminal{.} nonnegative-integer\br -+ \noncxxterminal{.} \noncxxterminal{\{} \opt{arg-id} \noncxxterminal{\}} - \end{ncbnf} - - \begin{ncbnf} - \fmtnontermdef{type} \textnormal{one of}\br -- \terminal{a A b B c d e E f F g G o p P s x X ?} -+ \noncxxterminal{a A b B c d e E f F g G o p P s x X ?} - \end{ncbnf} - - \pnum -@@ -16185,7 +16185,7 @@ as opposed to when it is used as a formatting argument. - \begin{floattable}{Meaning of \fmtgrammarterm{align} options}{format.align}{lp{.8\hsize}} - \topline - \lhdr{Option} & \rhdr{Meaning} \\ \rowsep --\tcode{<} & -+\noncxxtcode{<} & - Forces the formatted argument to be aligned to the start of the field - by inserting $n$ fill characters after the formatted argument - where $n$ is the padding width. -@@ -16204,7 +16204,7 @@ pointer types, - or when an integer presentation type is specified. - \\ \rowsep - % --\tcode{\caret} & -+\noncxxtcode{\caret} & - Forces the formatted argument to be centered within the field - by inserting - $\bigl\lfloor \frac{n}{2} \bigr\rfloor$ -@@ -16224,10 +16224,10 @@ The meaning of the various options is as specified in \tref{format.sign}. - \begin{floattable}{Meaning of \fmtgrammarterm{sign} options}{format.sign}{lp{.8\hsize}} - \topline - \lhdr{Option} & \rhdr{Meaning} \\ \rowsep --\tcode{+} & -+\noncxxtcode{+} & - Indicates that a sign should be used for both non-negative and negative - numbers. --The \tcode{+} sign is inserted before the output of \tcode{to_chars} for -+The \noncxxtcode{+} sign is inserted before the output of \tcode{to_chars} for - non-negative numbers other than negative zero. - \begin{tailnote} - For negative numbers and negative zero -@@ -16236,7 +16236,7 @@ so no additional transformation is performed. - \end{tailnote} - \\ \rowsep - % --\tcode{-} & -+\noncxxtcode{-} & - Indicates that a sign should be used for - negative numbers and negative zero only (this is the default behavior). - \\ \rowsep -@@ -16262,7 +16262,7 @@ string s3 = format("{0:},{0:+},{0:-},{0: }", nan); // value of \tcode{s3} i - \end{example} - - \pnum --The \tcode{\#} option causes the -+The \noncxxtcode{\#} option causes the - % FIXME: This is not a definition. - \defnx{alternate form}{alternate form!format string} - to be used for the conversion. -@@ -16281,7 +16281,7 @@ even if no digits follow it. - % FIXME: This is a weird place for this part of the spec to appear. - Normally, a decimal-point character appears in the result of these - conversions only if a digit follows it. --In addition, for \tcode{g} and \tcode{G} conversions, -+In addition, for \noncxxtcode{g} and \noncxxtcode{G} conversions, - % FIXME: Are they normally? What does this even mean? Reach into to_chars and - % alter its behavior? - trailing zeros are not removed from the result. -@@ -16313,7 +16313,7 @@ If the \fmtgrammarterm{width} option is absent, - the minimum field width is \tcode{0}. - - \pnum --If \tcode{\{ \opt{\fmtgrammarterm{arg-id}} \}} is used in -+If \noncxxtcode{\{ \opt{\fmtgrammarterm{arg-id}} \}} is used in - a \fmtgrammarterm{width} or \fmtgrammarterm{precision} option, - the value of the corresponding formatting argument is used as the value of the option. - The option is valid only if the corresponding formatting argument is -@@ -16386,9 +16386,9 @@ a \fmtgrammarterm{precision} option, - the value of the decimal integer is used as the value of the option. - - \pnum --When the \tcode{L} option is used, the form used for the conversion is called -+When the \noncxxtcode{L} option is used, the form used for the conversion is called - the \defnx{locale-specific form}{locale-specific form!format string}. --The \tcode{L} option is only valid for arithmetic types, and -+The \noncxxtcode{L} option is only valid for arithmetic types, and - its effect depends upon the type. - \begin{itemize} - \item -@@ -16459,52 +16459,52 @@ string s3 = format("{:L}", 1234); // value of \tcode{s3} c - \begin{floattable}{Meaning of \fmtgrammarterm{type} options for integer types}{format.type.int}{lp{.8\hsize}} - \topline - \lhdr{Type} & \rhdr{Meaning} \\ \rowsep --\tcode{b} & -+\noncxxtcode{b} & - \tcode{to_chars(first, last, value, 2)}; - \indextext{base prefix}% --the base prefix is \tcode{0b}. -+the base prefix is \noncxxtcode{0b}. - \\ \rowsep - % --\tcode{B} & --The same as \tcode{b}, except that -+\noncxxtcode{B} & -+The same as \noncxxtcode{b}, except that - \indextext{base prefix}% --the base prefix is \tcode{0B}. -+the base prefix is \noncxxtcode{0B}. - \\ \rowsep - % --\tcode{c} & -+\noncxxtcode{c} & - Copies the character \tcode{static_cast(value)} to the output. - Throws \tcode{format_error} if \tcode{value} is not - in the range of representable values for \tcode{charT}. - \\ \rowsep - % --\tcode{d} & -+\noncxxtcode{d} & - \tcode{to_chars(first, last, value)}. - \\ \rowsep - % --\tcode{o} & -+\noncxxtcode{o} & - \tcode{to_chars(first, last, value, 8)}; - \indextext{base prefix}% --the base prefix is \tcode{0} if \tcode{value} is nonzero and is empty otherwise. -+the base prefix is \noncxxtcode{0} if \tcode{value} is nonzero and is empty otherwise. - \\ \rowsep - % --\tcode{x} & -+\noncxxtcode{x} & - \tcode{to_chars(first, last, value, 16)}; - \indextext{base prefix}% --the base prefix is \tcode{0x}. -+the base prefix is \noncxxtcode{0x}. - \\ \rowsep - % --\tcode{X} & --The same as \tcode{x}, except that -+\noncxxtcode{X} & -+The same as \noncxxtcode{x}, except that - it uses uppercase letters for digits above 9 and - \indextext{base prefix}% --the base prefix is \tcode{0X}. -+the base prefix is \noncxxtcode{0X}. - \\ \rowsep - % - none & --The same as \tcode{d}. -+The same as \noncxxtcode{d}. - \begin{tailnote} - If the formatting argument type is \tcode{charT} or \tcode{bool}, --the default is instead \tcode{c} or \tcode{s}, respectively. -+the default is instead \noncxxtcode{c} or \noncxxtcode{s}, respectively. - \end{tailnote} - \\ - \end{floattable} -@@ -16515,13 +16515,13 @@ The available \tcode{charT} presentation types are specified in \tref{format.typ - \begin{floattable}{Meaning of \fmtgrammarterm{type} options for \tcode{charT}}{format.type.char}{lp{.8\hsize}} - \topline - \lhdr{Type} & \rhdr{Meaning} \\ \rowsep --none, \tcode{c} & -+none, \noncxxtcode{c} & - Copies the character to the output. - \\ \rowsep - % --\tcode{b}, \tcode{B}, \tcode{d}, \tcode{o}, \tcode{x}, \tcode{X} & -+\noncxxtcode{b}, \noncxxtcode{B}, \noncxxtcode{d}, \noncxxtcode{o}, \noncxxtcode{x}, \noncxxtcode{X} & - As specified in \tref{format.type.int} --with \tcode{value} converted to the unsigned version of the underlying type. -+with \noncxxtcode{value} converted to the unsigned version of the underlying type. - \\ \rowsep - % - \tcode{?} & -@@ -16536,8 +16536,8 @@ The available \tcode{bool} presentation types are specified in \tref{format.type - \topline - \lhdr{Type} & \rhdr{Meaning} \\ \rowsep - none, --\tcode{s} & --Copies textual representation, either \tcode{true} or \tcode{false}, to the output. -+\noncxxtcode{s} & -+Copies textual representation, either \noncxxtcode{true} or \noncxxtcode{false}, to the output. - \\ \rowsep - % - \tcode{b}, \tcode{B}, \tcode{d}, \tcode{o}, \tcode{x}, \tcode{X} & -@@ -16552,9 +16552,9 @@ The available floating-point presentation types and their meanings - for values other than infinity and NaN are - specified in \tref{format.type.float}. - For lower-case presentation types, infinity and NaN are formatted as --\tcode{inf} and \tcode{nan}, respectively. -+\noncxxtcode{inf} and \noncxxtcode{nan}, respectively. - For upper-case presentation types, infinity and NaN are formatted as --\tcode{INF} and \tcode{NAN}, respectively. -+\noncxxtcode{INF} and \noncxxtcode{NAN}, respectively. - \begin{note} - In either case, a sign is included - if indicated by the \fmtgrammarterm{sign} option. -@@ -16563,7 +16563,7 @@ if indicated by the \fmtgrammarterm{sign} option. - \begin{floattable}{Meaning of \fmtgrammarterm{type} options for floating-point types}{format.type.float}{lp{.8\hsize}} - \topline - \lhdr{Type} & \rhdr{Meaning} \\ \rowsep --\tcode{a} & -+\noncxxtcode{a} & - If \fmtgrammarterm{precision} is specified, equivalent to - \begin{codeblock} - to_chars(first, last, value, chars_format::hex, precision) -@@ -16576,46 +16576,46 @@ otherwise. - \\ - \rowsep - % --\tcode{A} & --The same as \tcode{a}, except that -+\noncxxtcode{A} & -+The same as \noncxxtcode{a}, except that - it uses uppercase letters for digits above 9 and --\tcode{P} to indicate the exponent. -+\noncxxtcode{P} to indicate the exponent. - \\ \rowsep - % --\tcode{e} & -+\noncxxtcode{e} & - Equivalent to - \begin{codeblock} - to_chars(first, last, value, chars_format::scientific, precision) - \end{codeblock} - where \tcode{precision} is the specified formatting precision, --or \tcode{6} if \fmtgrammarterm{precision} is not specified. -+or \noncxxtcode{6} if \fmtgrammarterm{precision} is not specified. - \\ \rowsep - % --\tcode{E} & --The same as \tcode{e}, except that it uses \tcode{E} to indicate exponent. -+\noncxxtcode{E} & -+The same as \noncxxtcode{e}, except that it uses \noncxxtcode{E} to indicate exponent. - \\ \rowsep - % --\tcode{f}, \tcode{F} & -+\noncxxtcode{f}, \noncxxtcode{F} & - Equivalent to - \begin{codeblock} - to_chars(first, last, value, chars_format::fixed, precision) - \end{codeblock} - where \tcode{precision} is the specified formatting precision, --or \tcode{6} if \fmtgrammarterm{precision} is not specified. -+or \noncxxtcode{6} if \fmtgrammarterm{precision} is not specified. - \\ \rowsep - % --\tcode{g} & -+\noncxxtcode{g} & - Equivalent to - \begin{codeblock} - to_chars(first, last, value, chars_format::general, precision) - \end{codeblock} - where \tcode{precision} is the specified formatting precision, --or \tcode{6} if \fmtgrammarterm{precision} is not specified. -+or \noncxxtcode{6} if \fmtgrammarterm{precision} is not specified. - \\ \rowsep - % --\tcode{G} & --The same as \tcode{g}, except that --it uses \tcode{E} to indicate exponent. -+\noncxxtcode{G} & -+The same as \noncxxtcode{g}, except that -+it uses \noncxxtcode{E} to indicate exponent. - \\ \rowsep - % - none & -@@ -16641,12 +16641,12 @@ Pointer presentation types also apply to \tcode{nullptr_t}. - \begin{floattable}{Meaning of \fmtgrammarterm{type} options for pointer types}{format.type.ptr}{lp{.8\hsize}} - \topline - \lhdr{Type} & \rhdr{Meaning} \\ \rowsep --none, \tcode{p} & -+none, \noncxxtcode{p} & - If \tcode{uintptr_t} is defined, - \begin{codeblock} - to_chars(first, last, reinterpret_cast(value), 16) - \end{codeblock} --with the prefix \tcode{0x} inserted immediately before the output of \tcode{to_chars}; -+with the prefix \noncxxtcode{0x} inserted immediately before the output of \tcode{to_chars}; - otherwise, implementation-defined. - \\ \rowsep - \tcode{P} & -@@ -17356,7 +17356,7 @@ without translation to an escape sequence, or - of separator or non-printable characters - \end{itemize} - --then the sequence \tcode{\textbackslash u\{\placeholder{hex-digit-sequence}\}} -+then the sequence \literaltcode{\textbackslash u\{\placeholder{hex-digit-sequence}\}} - is appended to \placeholder{E}, - where \tcode{\placeholder{hex-digit-sequence}} - is the shortest hexadecimal representation -@@ -17379,7 +17379,7 @@ can be reconstructed. - \item - Otherwise (\placeholder{X} is a sequence of ill-formed code units), - each code unit \placeholder{U} is appended to \placeholder{E} in order --as the sequence \tcode{\textbackslash x\{\placeholder{hex-digit-sequence}\}}, -+as the sequence \literaltcode{\textbackslash x\{\placeholder{hex-digit-sequence}\}}, - where \tcode{\placeholder{hex-digit-sequence}} - is the shortest hexadecimal representation of \placeholder{U} - using lower-case hexadecimal digits. -- 2.34.1 -From 7f97659f6b186495e427eb254b397234d03aeea6 Mon Sep 17 00:00:00 2001 +From 46e7291bbbc51e735bb672100ef9d300d95dbf27 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen -Date: Wed, 13 Mar 2019 21:04:43 +0100 -Subject: [PATCH 10/18] [temp.deduct.call] Make sure that when math superscript - is suffixed to \texttt, the \texttt itself is included in the formula passed - to MathJax. - -Otherwise cxxdraft-htmlgen passes a lone math superscript to MathJax and then applies our own \texttt styling to the result, which produces -a different result from letting MathJax render and style the whole thing. ---- - source/templates.tex | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/source/templates.tex b/source/templates.tex -index 4a18801d..75b4349b 100644 ---- a/source/templates.tex -+++ b/source/templates.tex -@@ -7578,7 +7578,7 @@ with the type of the corresponding argument of the call (call it - \tcode{A}) - as described below. - If removing references and cv-qualifiers from \tcode{P} gives --\tcode{std::initializer_list} -+$\tcode{std::initializer_list}$ - or $\tcode{P}'\tcode{[N]}$ - for some $\tcode{P}'$ and \tcode{N} and the - argument is a non-empty initializer list\iref{dcl.init.list}, then deduction is --- -2.34.1 - - -From 80fdceed0614dd12760203d24719ba3a0963ff11 Mon Sep 17 00:00:00 2001 -From: Eelis van der Weegen -Date: Sun, 31 May 2020 23:23:45 +0200 -Subject: [PATCH 11/18] Remove more inappropriate paragraph breaks. +Date: Sun, 31 May 2020 23:23:45 +0200 +Subject: [PATCH 09/14] Remove more inappropriate paragraph breaks. --- source/algorithms.tex | 4 ---- @@ -7658,33 +6486,31 @@ Subject: [PATCH 11/18] Remove more inappropriate paragraph breaks. source/declarations.tex | 14 -------------- source/exceptions.tex | 5 ----- source/expressions.tex | 26 -------------------------- - source/future.tex | 11 ----------- + source/future.tex | 8 -------- source/iostreams.tex | 15 --------------- source/iterators.tex | 8 -------- - source/lex.tex | 2 -- + source/lex.tex | 1 - source/lib-intro.tex | 17 ----------------- source/limits.tex | 1 - - source/locales.tex | 9 --------- source/memory.tex | 2 -- source/meta.tex | 2 -- source/numerics.tex | 8 -------- source/overloading.tex | 11 ----------- source/preprocessor.tex | 10 ---------- source/ranges.tex | 13 ------------- - source/regex.tex | 2 -- source/statements.tex | 3 --- source/support.tex | 4 ---- source/templates.tex | 36 ------------------------------------ source/threads.tex | 17 ----------------- source/time.tex | 19 ------------------- - source/utilities.tex | 11 ----------- - 29 files changed, 299 deletions(-) + source/utilities.tex | 7 ------- + 27 files changed, 280 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 6c704352..8a304cbb 100644 +index e5fd8576..6008378c 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -6680,7 +6680,6 @@ but stronger than those for a partial ordering. +@@ -6847,7 +6847,6 @@ but stronger than those for a partial ordering. If we define \tcode{equiv(a, b)} as \tcode{!comp(a, b) \&\& !comp(b, a)}, then the requirements are that \tcode{comp} and \tcode{equiv} both be transitive relations: @@ -7692,7 +6518,7 @@ index 6c704352..8a304cbb 100644 \begin{itemize} \item \tcode{comp(a, b) \&\& comp(b, c)} implies \tcode{comp(a, c)} \item \tcode{equiv(a, b) \&\& equiv(b, c)} implies \tcode{equiv(a, c)} -@@ -7603,7 +7602,6 @@ Let $N = \tcode{last - first}$: +@@ -7770,7 +7769,6 @@ Let $N = \tcode{last - first}$: For the overload with an \tcode{ExecutionPolicy}, \bigoh{N \log N} swaps and \bigoh{N} applications of the predicate. \end{itemize} @@ -7700,7 +6526,7 @@ index 6c704352..8a304cbb 100644 \end{itemdescr} \indexlibraryglobal{stable_partition}% -@@ -8445,7 +8443,6 @@ A random access range \range{a}{b} is a +@@ -8612,7 +8610,6 @@ A random access range \range{a}{b} is a {heap with respect to comp and proj@heap with respect to \tcode{comp} and \tcode{proj}} for a comparator and projection \tcode{comp} and \tcode{proj} if its elements are organized such that: @@ -7708,7 +6534,7 @@ index 6c704352..8a304cbb 100644 \begin{itemize} \item With \tcode{$N$ = b - a}, for all $i$, $0 < i < N$, -@@ -11005,7 +11002,6 @@ template +@@ -11181,7 +11178,6 @@ template \pnum Some algorithms in this subclause are constrained with the following exposition-only concepts: @@ -7717,7 +6543,7 @@ index 6c704352..8a304cbb 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index de3c8389..efb6455b 100644 +index 1bb2e394..2b27f2f7 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -253,7 +253,6 @@ enum { up, down }; // defines \tcode{up} and \tcode{down} @@ -7736,7 +6562,7 @@ index de3c8389..efb6455b 100644 \begin{itemize} \item If \tcode{D} is a class with an implicitly-declared constructor\iref{class.default.ctor,class.copy.ctor}, -@@ -4326,7 +4324,6 @@ underlying type for an aligned memory area\iref{dcl.align}. +@@ -4323,7 +4321,6 @@ underlying type for an aligned memory area\iref{dcl.align}. \pnum Comparing alignments is meaningful and provides the obvious results: @@ -7744,7 +6570,7 @@ index de3c8389..efb6455b 100644 \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. -@@ -5704,7 +5701,6 @@ has the top-level cv-qualifier \keyword{volatile}. +@@ -5701,7 +5698,6 @@ has the top-level cv-qualifier \keyword{volatile}. \pnum Every integer type has an \term{integer conversion rank} defined as follows: @@ -7752,7 +6578,7 @@ index de3c8389..efb6455b 100644 \begin{itemize} \item No two signed integer types other than \keyword{char} and \tcode{\keyword{signed} \keyword{char}} (if \keyword{char} is signed) have the same rank, even if they have -@@ -6276,7 +6272,6 @@ the value written by $A$, or +@@ -6277,7 +6273,6 @@ the value written by $A$, or \item for some evaluation $X$, $A$ is dependency-ordered before $X$ and $X$ carries a dependency to $B$. @@ -8002,10 +6828,10 @@ index 6bd0435e..0bfd8612 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 62094758..a3413233 100644 +index 162be36a..e36e8c06 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -644,7 +644,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. +@@ -648,7 +648,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. \ref{vector.modifiers}) all container types defined in this Clause meet the following additional requirements: @@ -8013,7 +6839,7 @@ index 62094758..a3413233 100644 \begin{itemize} \item If an exception is thrown by an -@@ -707,7 +706,6 @@ as input iterators. +@@ -711,7 +710,6 @@ as input iterators. Likewise, the extent to which an implementation determines that a type cannot be an allocator is unspecified, except that as a minimum a type \tcode{A} shall not qualify as an allocator unless it meets both of the following conditions: @@ -8021,7 +6847,7 @@ index 62094758..a3413233 100644 \begin{itemize} \item The \grammarterm{qualified-id} \tcode{A::value_type} is valid and denotes a type\iref{temp.deduct}. -@@ -932,7 +930,6 @@ is not allocator-aware or is a specialization of \tcode{basic_string}, +@@ -940,7 +938,6 @@ is not allocator-aware or is a specialization of \tcode{basic_string}, the terms below are defined as if \tcode{A} were \tcode{allocator} --- no allocator object needs to be created and user specializations of \tcode{allocator} are not instantiated: @@ -8029,7 +6855,7 @@ index 62094758..a3413233 100644 \begin{itemize} \item \tcode{T} is \defnx{\oldconcept{DefaultInsertable} into \tcode{X}} -@@ -3954,14 +3951,12 @@ such that distance from +@@ -3966,14 +3963,12 @@ such that distance from to \tcode{j} is positive, the following condition holds: @@ -8044,7 +6870,7 @@ index 62094758..a3413233 100644 \begin{codeblock} value_comp(*i, *j) != false \end{codeblock} -@@ -5982,7 +5977,6 @@ define class templates that meet the requirements for sequence containers. +@@ -5994,7 +5989,6 @@ define class templates that meet the requirements for sequence containers. \pnum The following exposition-only alias template may appear in deduction guides for sequence containers: @@ -8052,7 +6878,7 @@ index 62094758..a3413233 100644 \begin{codeblock} template using @\placeholdernc{iter-value-type}@ = typename iterator_traits::value_type; // \expos -@@ -8196,7 +8190,6 @@ If \tcode{size() < sz}, +@@ -8134,7 +8128,6 @@ If \tcode{size() < sz}, appends \tcode{sz - size()} default-inserted elements to the sequence. If \tcode{sz <= size()}, equivalent to: @@ -8060,7 +6886,7 @@ index 62094758..a3413233 100644 \begin{codeblock} list::iterator it = begin(); advance(it, sz); -@@ -9409,13 +9402,11 @@ static constexpr void swap(reference x, reference y) noexcept; +@@ -9399,13 +9392,11 @@ static constexpr void swap(reference x, reference y) noexcept; \pnum \effects Exchanges the contents of \tcode{x} and \tcode{y} as if by: @@ -8074,7 +6900,7 @@ index 62094758..a3413233 100644 \end{itemdescr} \begin{itemdecl} -@@ -18825,7 +18816,6 @@ For each of +@@ -18838,7 +18829,6 @@ For each of \tcode{stack}, the library provides the following formatter specialization where \tcode{\placeholder{adaptor-type}} is the name of the template: @@ -8082,7 +6908,7 @@ index 62094758..a3413233 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -22999,7 +22989,6 @@ typename A::offset_policy +@@ -23011,7 +23001,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -8090,7 +6916,7 @@ index 62094758..a3413233 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -23710,7 +23699,6 @@ the \tcode{SliceSpecifier} arguments. +@@ -23722,7 +23711,6 @@ the \tcode{SliceSpecifier} arguments. \pnum For each function defined in \ref{mdspan.sub} that takes a parameter pack named \tcode{slices} as an argument: @@ -8098,7 +6924,7 @@ index 62094758..a3413233 100644 \begin{itemize} \item let \tcode{index_type} be \begin{itemize} -@@ -23974,7 +23962,6 @@ $\le \tcode{src.extent($k$)}$ +@@ -23986,7 +23974,6 @@ $\le \tcode{src.extent($k$)}$ \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: @@ -8106,7 +6932,7 @@ index 62094758..a3413233 100644 \begin{itemize} \item %FIXME: I think we want the count here, "number" is ambiguous. -@@ -23985,7 +23972,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and +@@ -23997,7 +23984,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and for each rank index $k$ of \tcode{Extents} such that \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, \tcode{SubExt\-ents::static_extent(\placeholder{map-rank}[$k$])} equals: @@ -8114,7 +6940,7 @@ index 62094758..a3413233 100644 \begin{itemize} \item \tcode{Extents::static_extent($k$)} -@@ -24025,7 +24011,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that +@@ -24037,7 +24023,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that for each $k$ for which \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, \tcode{ext.extent(\placeholder{map-rank}[$k$])} equals: @@ -8123,10 +6949,10 @@ index 62094758..a3413233 100644 \item \tcode{$s_k$.extent == 0 ? 0 : 1 + (\exposid{de-ice}($s_k$.extent) - 1) / \exposid{de-ice}($s_k$.stride)} diff --git a/source/declarations.tex b/source/declarations.tex -index b377b62f..decc750c 100644 +index b0e95bce..c7060268 100644 --- a/source/declarations.tex +++ b/source/declarations.tex -@@ -1535,7 +1535,6 @@ a partial specialization\iref{temp.spec.partial}, +@@ -1538,7 +1538,6 @@ a partial specialization\iref{temp.spec.partial}, an explicit instantiation\iref{temp.explicit}, or it has one of the following forms: @@ -8134,7 +6960,7 @@ index b377b62f..decc750c 100644 \begin{ncsimplebnf} class-key \opt{attribute-specifier-seq} identifier \terminal{;}\br class-key \opt{attribute-specifier-seq} simple-template-id \terminal{;} -@@ -2352,7 +2351,6 @@ auto* p = new void(*)(char) requires true; // error: not a function declaration +@@ -2355,7 +2354,6 @@ auto* p = new void(*)(char) requires true; // error: not a function declaration \pnum Declarators have the syntax @@ -8142,7 +6968,7 @@ index b377b62f..decc750c 100644 \begin{bnf} \nontermdef{declarator}\br ptr-declarator\br -@@ -4244,7 +4242,6 @@ In the following code, +@@ -4247,7 +4245,6 @@ In the following code, \tcode{g} will be called with the value \tcode{f(2)}: @@ -8150,7 +6976,7 @@ index b377b62f..decc750c 100644 \begin{codeblock} int a = 1; int f(int); -@@ -4583,7 +4580,6 @@ To +@@ -4586,7 +4583,6 @@ To an object of type \tcode{T} means: @@ -8158,7 +6984,7 @@ index b377b62f..decc750c 100644 \begin{itemize} \item If -@@ -4782,7 +4778,6 @@ is sequenced before those associated with +@@ -4785,7 +4781,6 @@ is sequenced before those associated with the initialization of the $j^\text{th}$ element. \item Otherwise, if the destination type is a class type: @@ -8166,7 +6992,7 @@ index b377b62f..decc750c 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -5694,7 +5689,6 @@ a program that necessitates such a binding is ill-formed. +@@ -5697,7 +5692,6 @@ a program that necessitates such a binding is ill-formed. A reference to type ``\cvqual{cv1} \tcode{T1}'' is initialized by an expression of type ``\cvqual{cv2} \tcode{T2}'' as follows:% \indextext{binding!reference} @@ -8174,7 +7000,7 @@ index b377b62f..decc750c 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6157,7 +6151,6 @@ int j { 1 }; // initialize to 1 +@@ -6160,7 +6154,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -8182,7 +7008,7 @@ index b377b62f..decc750c 100644 \end{itemize} \pnum -@@ -7112,7 +7105,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, +@@ -7115,7 +7108,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, where $\tcode{U}_i$ is an lvalue reference if the initializer is an lvalue and an rvalue reference otherwise, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -8190,7 +7016,7 @@ index b377b62f..decc750c 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7244,7 +7236,6 @@ struct S { +@@ -7247,7 +7239,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -8198,7 +7024,7 @@ index b377b62f..decc750c 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7341,7 +7332,6 @@ If the underlying +@@ -7344,7 +7335,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -8206,7 +7032,7 @@ index b377b62f..decc750c 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -7796,7 +7786,6 @@ void h() { +@@ -7799,7 +7789,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares an alternate name for a namespace according to the following grammar: @@ -8214,7 +7040,7 @@ index b377b62f..decc750c 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -7951,7 +7940,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -7954,7 +7943,6 @@ not declare functions or function templates, the use of the name is ill-formed\i In particular, the name of a variable, function or enumerator does not hide the name of a class or enumeration declared in a different namespace. For example, @@ -8222,7 +7048,7 @@ index b377b62f..decc750c 100644 \begin{codeblock} namespace A { class X { }; -@@ -8504,7 +8492,6 @@ otherwise identical. +@@ -8507,7 +8495,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -8230,7 +7056,7 @@ index b377b62f..decc750c 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -9427,7 +9414,6 @@ may be applied to a function or a lambda call operator or +@@ -9430,7 +9417,6 @@ may be applied to a function or a lambda call operator or to the declaration of a class or enumeration. An \grammarterm{attribute-argument-clause} may be present and, if present, shall have the form: @@ -8239,7 +7065,7 @@ index b377b62f..decc750c 100644 \terminal{(} unevaluated-string \terminal{)} \end{ncbnf} diff --git a/source/exceptions.tex b/source/exceptions.tex -index 7019ac7a..5dca5e67 100644 +index 0617df06..1ce04e3c 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -89,7 +89,6 @@ void f() { @@ -8263,7 +7089,7 @@ index 7019ac7a..5dca5e67 100644 \end{itemize} \begin{note} -@@ -1105,9 +1102,7 @@ when \tcode{unhandled_stopped} is called on +@@ -1101,9 +1098,7 @@ when \tcode{unhandled_stopped} is called on a \tcode{with_awaitable_senders} object\iref{exec.with.awaitable.senders} whose continuation is not a handle to a coroutine whose promise type has an \tcode{unhandled_stopped} member function. @@ -8274,7 +7100,7 @@ index 7019ac7a..5dca5e67 100644 \pnum diff --git a/source/expressions.tex b/source/expressions.tex -index 0cd73ac7..68611bcb 100644 +index 303e2ed2..093e4c42 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -457,7 +457,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -8389,7 +7215,7 @@ index 0cd73ac7..68611bcb 100644 \begin{codeblock} T x @\textrm{\placeholder{init}}@ ; \end{codeblock} -@@ -5587,7 +5573,6 @@ the alignment argument is removed from the argument list; +@@ -5596,7 +5582,6 @@ the alignment argument is removed from the argument list; otherwise, an argument that is the type's alignment and has type \tcode{std::align_val_t} is added into the argument list immediately after the first argument; @@ -8397,7 +7223,7 @@ index 0cd73ac7..68611bcb 100644 \end{itemize} and then overload resolution is performed again. -@@ -5665,7 +5650,6 @@ necessarily be the same as that of the block if the object is an array. +@@ -5674,7 +5659,6 @@ necessarily be the same as that of the block if the object is an array. \indextext{\idxcode{new}!default constructor and}% A \grammarterm{new-expression} that creates an object of type \tcode{T} initializes that object as follows: @@ -8405,7 +7231,7 @@ index 0cd73ac7..68611bcb 100644 \begin{itemize} \item If the \grammarterm{new-initializer} is omitted, the object is default-initialized\iref{dcl.init}. -@@ -5754,7 +5738,6 @@ struct S { +@@ -5763,7 +5747,6 @@ struct S { S* p = new (0) S; // error: non-placement deallocation function matches // placement allocation function \end{codeblock} @@ -8413,7 +7239,7 @@ index 0cd73ac7..68611bcb 100644 \end{example} \pnum -@@ -5874,7 +5857,6 @@ of their constructor; see~\ref{class.base.init}). +@@ -5883,7 +5866,6 @@ of their constructor; see~\ref{class.base.init}). \pnum If the value of the operand of the \grammarterm{delete-expression} is not a null pointer value, then: @@ -8421,7 +7247,7 @@ index 0cd73ac7..68611bcb 100644 \begin{itemize} \item If the allocation call for the \grammarterm{new-expression} for the object to -@@ -6498,7 +6480,6 @@ or one operand has integral type and +@@ -6507,7 +6489,6 @@ or one operand has integral type and the other operand has unscoped enumeration type, the \link{usual arithmetic conversions}{expr.arith.conv} are applied to the operands. Then: @@ -8429,7 +7255,7 @@ index 0cd73ac7..68611bcb 100644 \begin{itemize} \item If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, -@@ -6655,7 +6636,6 @@ is considered to be equivalent to a pointer to a hypothetical array element +@@ -6664,7 +6645,6 @@ is considered to be equivalent to a pointer to a hypothetical array element $n$ for this purpose. \end{footnote} is defined in terms of a partial order consistent with the following rules: @@ -8437,7 +7263,7 @@ index 0cd73ac7..68611bcb 100644 \begin{itemize} \item If two pointers point to different elements of the same array, or to subobjects thereof, the pointer to the element with the higher subscript -@@ -6668,7 +6648,6 @@ neither member is a subobject of zero size +@@ -6677,7 +6657,6 @@ neither member is a subobject of zero size and their class is not a union. \item Otherwise, neither pointer is required to compare greater than the other. @@ -8445,7 +7271,7 @@ index 0cd73ac7..68611bcb 100644 \end{itemize} \pnum -@@ -6732,7 +6711,6 @@ If at least one of the operands is a pointer, +@@ -6741,7 +6720,6 @@ If at least one of the operands is a pointer, \link{qualification conversions}{conv.qual} are performed on both operands to bring them to their \deflink{composite pointer type}{expr.type}. Comparing pointers is defined as follows: @@ -8453,7 +7279,7 @@ index 0cd73ac7..68611bcb 100644 \begin{itemize} \item If one pointer represents the address of a complete object, and another -@@ -6762,7 +6740,6 @@ qualification conversions\iref{conv.qual} +@@ -6771,7 +6749,6 @@ qualification conversions\iref{conv.qual} are performed on both operands to bring them to their composite pointer type\iref{expr.type}. Comparing pointers to members is defined as follows: @@ -8461,7 +7287,7 @@ index 0cd73ac7..68611bcb 100644 \begin{itemize} \item If two pointers to members are both the null member pointer value, they compare -@@ -7034,7 +7011,6 @@ Attempts are made to form an implicit conversion sequence +@@ -7043,7 +7020,6 @@ Attempts are made to form an implicit conversion sequence from an operand expression \tcode{E1} of type \tcode{T1} to a target type related to the type \tcode{T2} of the operand expression \tcode{E2} as follows: @@ -8469,7 +7295,7 @@ index 0cd73ac7..68611bcb 100644 \begin{itemize} \item If \tcode{E2} is an lvalue, the target type is ``lvalue reference to \tcode{T2}'', -@@ -7113,7 +7089,6 @@ subclause. +@@ -7122,7 +7098,6 @@ subclause. and \link{function-to-pointer}{conv.func} standard conversions are performed on the second and third operands. After those conversions, one of the following shall hold: @@ -8477,7 +7303,7 @@ index 0cd73ac7..68611bcb 100644 \begin{itemize} \item The second and third operands have the same type; the result is of that type and the result object is initialized using the selected operand. -@@ -7141,7 +7116,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. +@@ -7150,7 +7125,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. Both the second and third operands have type \tcode{std::nullptr_t} or one has that type and the other is a null pointer constant. The result is of type \tcode{std::nullptr_t}. @@ -8486,26 +7312,10 @@ index 0cd73ac7..68611bcb 100644 \rSec2[expr.yield]{Yielding a value}% diff --git a/source/future.tex b/source/future.tex -index 21a57751..b39c2b36 100644 +index 4de4dfc9..f24457dc 100644 --- a/source/future.tex +++ b/source/future.tex -@@ -249,7 +249,6 @@ The header \libheaderref{stdbool.h} has the following macro: - - \pnum - The header \libheaderref{utility} has the following additions: -- - \begin{codeblock} - namespace std::rel_ops { - template bool operator!=(const T&, const T&); -@@ -263,7 +262,6 @@ namespace std::rel_ops { - 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); -@@ -364,7 +362,6 @@ shown in the above synopsis. +@@ -283,7 +283,6 @@ shown in the above synopsis. \pnum The header \libheaderrefx{type_traits}{meta.type.synop} has the following addition: @@ -8513,7 +7323,7 @@ index 21a57751..b39c2b36 100644 \begin{codeblock} namespace std { template struct is_pod; -@@ -487,7 +484,6 @@ whose value is the strictest alignment of all types listed in \tcode{Types}. +@@ -486,7 +485,6 @@ template bool operator>=(const T& x, const T& y); \pnum The header \libheaderref{tuple} has the following additions: @@ -8521,7 +7331,7 @@ index 21a57751..b39c2b36 100644 \begin{codeblock} namespace std { template struct tuple_size; -@@ -557,7 +553,6 @@ are included. +@@ -556,7 +554,6 @@ are included. \pnum The header \libheaderref{variant} has the following additions: @@ -8529,7 +7339,7 @@ index 21a57751..b39c2b36 100644 \begin{codeblock} namespace std { template struct variant_size; -@@ -604,7 +599,6 @@ with a member typedef \tcode{type} that names the following type: +@@ -603,7 +600,6 @@ with a member typedef \tcode{type} that names the following type: \pnum The header \libheaderrefx{iterator}{iterator.synopsis} has the following addition: @@ -8537,7 +7347,7 @@ index 21a57751..b39c2b36 100644 \indexlibraryglobal{iterator}% \begin{codeblock} namespace std { -@@ -638,7 +632,6 @@ only to callers of that class. +@@ -637,7 +633,6 @@ only to callers of that class. If a \Cpp{} program wants to define a bidirectional iterator for some data structure containing \tcode{double} and such that it works on a large memory model of the implementation, it can do so with: @@ -8545,7 +7355,7 @@ index 21a57751..b39c2b36 100644 \begin{codeblock} class MyIterator : public iterator { -@@ -652,7 +645,6 @@ class MyIterator : +@@ -651,7 +646,6 @@ class MyIterator : \pnum The following member is declared in addition to those members specified in \ref{move.iter.elem}: @@ -8553,15 +7363,7 @@ index 21a57751..b39c2b36 100644 \begin{codeblock} namespace std { template -@@ -680,7 +672,6 @@ constexpr pointer operator->() const; - - \pnum - The header \libheaderref{format}{format.syn} has the following additions: -- - \begin{codeblock} - namespace std { - template -@@ -745,7 +736,6 @@ convert between the UTF-32 and UTF-8 encoding forms. +@@ -744,7 +738,6 @@ Equivalent to: \tcode{return visit(std::forward(vis), arg.value);} \pnum The header \libheaderrefx{filesystem}{fs.filesystem.syn} has the following additions: @@ -8569,7 +7371,7 @@ index 21a57751..b39c2b36 100644 \indexlibraryglobal{u8path}% \begin{itemdecl} template -@@ -826,7 +816,6 @@ as it is consistent with \tcode{path}'s handling of other encodings. +@@ -825,7 +818,6 @@ as it is consistent with \tcode{path}'s handling of other encodings. \pnum The header \libheaderrefx{atomic}{atomics.syn} has the following additions. @@ -8578,10 +7380,10 @@ index 21a57751..b39c2b36 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index bfd310e8..6212d321 100644 +index f68042b4..855d3823 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -2116,14 +2116,12 @@ does nothing. +@@ -2102,14 +2102,12 @@ does nothing. Otherwise assigns to the member objects of \tcode{*this} the corresponding member objects of \tcode{rhs} as follows: @@ -8596,7 +7398,7 @@ index bfd310e8..6212d321 100644 \begin{itemize} \item \tcode{rdstate()}, \tcode{rdbuf()}, and \tcode{exceptions()} are left unchanged; -@@ -7223,7 +7221,6 @@ clears \tcode{ios_base::skipws} in the format flags stored in the +@@ -7198,7 +7196,6 @@ clears \tcode{ios_base::skipws} in the format flags stored in the format flags stored in the \tcode{basic_ostream} object \tcode{cout} (the same as \tcode{cout << noshowbase}). \end{footnote} @@ -8604,7 +7406,7 @@ index bfd310e8..6212d321 100644 \begin{codeblock} void f(ios_base& str, ios_base::fmtflags mask) { // reset specified flags -@@ -7262,7 +7259,6 @@ then the expression +@@ -7237,7 +7234,6 @@ then the expression behaves as if it called \tcode{f(in, mask)}, where the function \tcode{f} is defined as: \indexlibrarymember{fmtflags}{ios_base}% @@ -8612,7 +7414,7 @@ index bfd310e8..6212d321 100644 \begin{codeblock} void f(ios_base& str, ios_base::fmtflags mask) { // set specified flags -@@ -7308,7 +7304,6 @@ then the expression +@@ -7283,7 +7279,6 @@ then the expression \tcode{in >> setbase(base)} behaves as if it called \tcode{f(in, base)}, where the function \tcode{f} is defined as: @@ -8620,7 +7422,7 @@ index bfd310e8..6212d321 100644 \begin{codeblock} void f(ios_base& str, int base) { // set \tcode{basefield} -@@ -7351,7 +7346,6 @@ then the expression +@@ -7326,7 +7321,6 @@ then the expression \tcode{out << setfill(c)} behaves as if it called \tcode{f(out, c)}, where the function \tcode{f} is defined as: @@ -8628,7 +7430,7 @@ index bfd310e8..6212d321 100644 \begin{codeblock} template void f(basic_ios& str, charT c) { -@@ -7392,7 +7386,6 @@ then the expression +@@ -7367,7 +7361,6 @@ then the expression \tcode{in >> setprecision(n)} behaves as if it called \tcode{f(in, n)}, where the function \tcode{f} is defined as: @@ -8636,7 +7438,7 @@ index bfd310e8..6212d321 100644 \begin{codeblock} void f(ios_base& str, int n) { // set precision -@@ -7438,7 +7431,6 @@ then the expression +@@ -7413,7 +7406,6 @@ then the expression \tcode{in >> setw(n)} behaves as if it called \tcode{f(in, n)}, where the function \tcode{f} is defined as: @@ -8644,7 +7446,7 @@ index bfd310e8..6212d321 100644 \begin{codeblock} void f(ios_base& str, int n) { // set width -@@ -7488,7 +7480,6 @@ An object of unspecified type such that if +@@ -7463,7 +7455,6 @@ An object of unspecified type such that if \tcode{in} is an object of type \tcode{basic_istream} then the expression \tcode{in >> get_money(mon, intl)} behaves as if it called \tcode{f(in, mon, intl)}, where the function \tcode{f} is defined as: @@ -8652,7 +7454,7 @@ index bfd310e8..6212d321 100644 \begin{codeblock} template void f(basic_ios& str, moneyT& mon, bool intl) { -@@ -7527,7 +7518,6 @@ An object of unspecified type such that if +@@ -7502,7 +7493,6 @@ An object of unspecified type such that if then the expression \tcode{out << put_money(mon, intl)} behaves as a \link{formatted output function}{ostream.formatted.reqmts} that calls \tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as: @@ -8660,7 +7462,7 @@ index bfd310e8..6212d321 100644 \begin{codeblock} template void f(basic_ios& str, const moneyT& mon, bool intl) { -@@ -7563,7 +7553,6 @@ An object of unspecified type such that if \tcode{in} is an object of type +@@ -7538,7 +7528,6 @@ An object of unspecified type such that if \tcode{in} is an object of type \tcode{basic_istream} then the expression \tcode{in >> get_time(tmb, fmt)} behaves as if it called \tcode{f(in, tmb, fmt)}, where the function \tcode{f} is defined as: @@ -8668,7 +7470,7 @@ index bfd310e8..6212d321 100644 \begin{codeblock} template void f(basic_ios& str, tm* tmb, const charT* fmt) { -@@ -7602,7 +7591,6 @@ An object of unspecified type such that if \tcode{out} is an object of +@@ -7577,7 +7566,6 @@ An object of unspecified type such that if \tcode{out} is an object of type \tcode{basic_ostream} then the expression \tcode{out << put_time(tmb, fmt)} behaves as if it called \tcode{f(out, tmb, fmt)}, where the function \tcode{f} is defined as: @@ -8676,7 +7478,7 @@ index bfd310e8..6212d321 100644 \begin{codeblock} template void f(basic_ios& str, const tm* tmb, const charT* fmt) { -@@ -11438,7 +11426,6 @@ with the specialization that a sequence of characters is read from the input +@@ -11413,7 +11401,6 @@ with the specialization that a sequence of characters is read from the input sequence as if by reading from the associated file into an internal buffer (\tcode{extern_buf}) and then as if by doing: @@ -8684,7 +7486,7 @@ index bfd310e8..6212d321 100644 \begin{codeblock} char extern_buf[XSIZE]; char* extern_end; -@@ -13923,7 +13910,6 @@ without an intervening \grammarterm{root-directory} element. +@@ -13898,7 +13885,6 @@ without an intervening \grammarterm{root-directory} element. \pnum \indextext{path!normalization|(}% \defnx{Normalization}{normalization!path} of a generic format pathname means: @@ -8692,7 +7494,7 @@ index bfd310e8..6212d321 100644 \begin{enumerate} \item If the path is empty, stop. \item Replace each slash character in the \grammarterm{root-name} with a \grammarterm{preferred-separator}. -@@ -17039,7 +17025,6 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17014,7 +17000,6 @@ recursive_directory_iterator& increment(error_code& ec); As specified for the prefix increment operation of \link{Input iterators}{input.iterators}, except that: @@ -8769,10 +7571,10 @@ index 193fd678..804e0b7d 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lex.tex b/source/lex.tex -index fc08d68c..c979e292 100644 +index 21b7af76..e4cdb488 100644 --- a/source/lex.tex +++ b/source/lex.tex -@@ -558,7 +558,6 @@ after the \tcode{include} or \tcode{import} preprocessing token in an +@@ -594,7 +594,6 @@ after the \tcode{include} or \tcode{import} preprocessing token in a \item within a \grammarterm{has-include-expression}. @@ -8780,19 +7582,11 @@ index fc08d68c..c979e292 100644 \end{itemize} \end{itemize} -@@ -1044,7 +1043,6 @@ otherwise. - The lexical representation of \Cpp{} programs includes a number of - preprocessing tokens that are used in the syntax of the preprocessor or - are converted into tokens for operators and punctuators: -- - \begin{bnf} - \nontermdef{preprocessing-op-or-punc}\br - preprocessing-operator\br diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 08842f66..7205192c 100644 +index 030a2acc..7515eb42 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex -@@ -199,7 +199,6 @@ save space, items that do not apply to a Clause are omitted. +@@ -196,7 +196,6 @@ save space, items that do not apply to a Clause are omitted. For example, if a Clause does not specify any requirements, there will be no ``Requirements'' subclause. \end{footnote} @@ -8800,7 +7594,7 @@ index 08842f66..7205192c 100644 \begin{itemize} \item Summary \item Requirements -@@ -216,7 +215,6 @@ subclause and the library entities provided in each header. +@@ -213,7 +212,6 @@ subclause and the library entities provided in each header. \pnum The contents of the summary and the detailed specifications include: @@ -8808,7 +7602,7 @@ index 08842f66..7205192c 100644 \begin{itemize} \item macros \item values -@@ -233,7 +231,6 @@ The contents of the summary and the detailed specifications include: +@@ -230,7 +228,6 @@ The contents of the summary and the detailed specifications include: \indextext{requirements}% Requirements describe constraints that shall be met by a \Cpp{} program that extends the standard library. Such extensions are generally one of the following: @@ -8816,7 +7610,7 @@ index 08842f66..7205192c 100644 \begin{itemize} \item Template arguments \item Derived classes -@@ -308,7 +305,6 @@ are additionally imposed on the use of the declaration. +@@ -305,7 +302,6 @@ are additionally imposed on the use of the declaration. \pnum The detailed specifications each contain the following elements:% @@ -8824,7 +7618,7 @@ index 08842f66..7205192c 100644 \begin{itemize} \item name and brief description \item synopsis (class definition or function declaration, as appropriate) -@@ -325,7 +321,6 @@ To save space, items that do not apply to a class are omitted. +@@ -322,7 +318,6 @@ To save space, items that do not apply to a class are omitted. For example, if a class does not specify any comparison operator functions, there will be no ``Comparison operator functions'' subclause. \end{footnote} @@ -8832,7 +7626,7 @@ index 08842f66..7205192c 100644 \begin{itemize} \item constructor(s) and destructor \item copying, moving \& assignment functions -@@ -343,7 +338,6 @@ To save space, elements that do not apply to a function are omitted. +@@ -340,7 +335,6 @@ To save space, elements that do not apply to a function are omitted. For example, if a function specifies no preconditions, there will be no \expects element. \end{footnote} @@ -8840,7 +7634,7 @@ index 08842f66..7205192c 100644 \begin{itemize} \item \constraints -@@ -579,7 +573,6 @@ values\iref{basic.fundamental}. +@@ -576,7 +570,6 @@ values\iref{basic.fundamental}. \pnum The enumerated type \tcode{\placeholder{enumerated}} can be written: @@ -8848,7 +7642,7 @@ index 08842f66..7205192c 100644 \begin{codeblock} enum @\placeholder{enumerated}@ { @$\tcode{\placeholder{V}}_{0}$@, @$\tcode{\placeholder{V}}_{1}$@, @$\tcode{\placeholder{V}}_{2}$@, @$\tcode{\placeholder{V}}_{3}$@, @$\ldots$@ }; -@@ -612,7 +605,6 @@ or as a +@@ -609,7 +602,6 @@ or as a \pnum The bitmask type \tcode{\placeholder{bitmask}} can be written: @@ -8856,7 +7650,7 @@ index 08842f66..7205192c 100644 \begin{codeblock} // For exposition only. // \tcode{int_type} is an integral type capable of representing all values of the bitmask type. -@@ -689,7 +681,6 @@ The value \textit{Y} \defnx{is set}{bitmask!value!is set} in the object +@@ -686,7 +678,6 @@ The value \textit{Y} \defnx{is set}{bitmask!value!is set} in the object The C standard library makes widespread use \indextext{library!C standard}% of characters and character sequences that follow a few uniform conventions: @@ -8864,7 +7658,7 @@ index 08842f66..7205192c 100644 \begin{itemize} \item Properties specified as \defn{locale-specific} -@@ -894,7 +885,6 @@ some subclauses provide representative declarations, and semantic requirements, +@@ -891,7 +882,6 @@ some subclauses provide representative declarations, and semantic requirements, private members of classes that meet the external specifications of the classes. The declarations for such members are followed by a comment that ends with \expos, as in: @@ -8872,7 +7666,7 @@ index 08842f66..7205192c 100644 \begin{codeblock} streambuf* sb; // \expos \end{codeblock} -@@ -1843,7 +1833,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if +@@ -1840,7 +1830,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if evaluated in the context described below, and \item these expressions have the following effects: @@ -8880,7 +7674,7 @@ index 08842f66..7205192c 100644 \begin{itemize} \item the object referred to by \tcode{t} has the value originally held by \tcode{u} and \item the object referred to by \tcode{u} has the value originally held by \tcode{t}. -@@ -2849,7 +2838,6 @@ for that type can fail by throwing an object of type +@@ -2846,7 +2835,6 @@ for that type can fail by throwing an object of type \begin{example} The following is an allocator class template supporting the minimal interface that meets the requirements of \ref{allocator.requirements.general}: @@ -8888,7 +7682,7 @@ index 08842f66..7205192c 100644 \begin{codeblock} template struct SimpleAllocator { -@@ -3329,7 +3317,6 @@ in the program. +@@ -3326,7 +3314,6 @@ in the program. A \Cpp{} program may provide the definition for any of the following dynamic memory allocation function signatures declared in header \tcode{}\iref{basic.stc.dynamic,new.syn}: @@ -8896,7 +7690,7 @@ index 08842f66..7205192c 100644 \indextext{\idxcode{new}!\idxcode{operator}!replaceable}% \indexlibrarymember{new}{operator}% \begin{codeblock} -@@ -3388,7 +3375,6 @@ No diagnostic is required. +@@ -3385,7 +3372,6 @@ No diagnostic is required. \pnum The \Cpp{} standard library provides a default version of the following handler function\iref{support}: @@ -8904,7 +7698,7 @@ index 08842f66..7205192c 100644 \begin{itemize} \item \tcode{terminate_handler} -@@ -3409,7 +3395,6 @@ Exception handling. +@@ -3406,7 +3392,6 @@ Exception handling. \pnum A \Cpp{} program can get a pointer to the current handler function by calling the following functions: @@ -8912,7 +7706,7 @@ index 08842f66..7205192c 100644 \begin{itemize} \item \indexlibraryglobal{get_new_handler}% -@@ -3435,7 +3420,6 @@ on the implementation. +@@ -3432,7 +3417,6 @@ on the implementation. \pnum In particular, the behavior is undefined in the following cases: @@ -8920,7 +7714,7 @@ index 08842f66..7205192c 100644 \begin{itemize} \item For replacement functions\iref{new.delete}, if the installed replacement function does not -@@ -3714,7 +3698,6 @@ functions or constructors an implementation shall provide corresponding definiti +@@ -3711,7 +3695,6 @@ functions or constructors an implementation shall provide corresponding definiti \indextext{stable algorithm}% When the requirements for an algorithm state that it is ``stable'' without further elaboration, it means: @@ -8938,82 +7732,6 @@ index efd4eb00..12180661 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. - \end{itemize} -diff --git a/source/locales.tex b/source/locales.tex -index b6301824..59a117be 100644 ---- a/source/locales.tex -+++ b/source/locales.tex -@@ -186,7 +186,6 @@ Note that in the call to \tcode{put}, - the stream is implicitly converted - to an \tcode{ostreambuf_iterator}. - \end{footnote} -- - \begin{codeblock} - template - basic_ostream& -@@ -221,7 +220,6 @@ used identically as may standard facets. - All locale semantics are accessed via - \tcode{use_facet<>} and \tcode{has_facet<>}, - except that: -- - \begin{itemize} - \item - A member operator template -@@ -756,7 +754,6 @@ a comparator predicate template argument\iref{algorithms} applied to strings. - A vector of strings \tcode{v} - can be collated according to collation rules in locale \tcode{loc} - simply by\iref{alg.sort,vector}: -- - \begin{codeblock} - std::sort(v.begin(), v.end(), loc); - \end{codeblock} -@@ -2213,7 +2210,6 @@ where \tcode{loc} is \tcode{str.getloc()}. - - \pnum - The details of this operation occur in three stages: -- - \begin{itemize} - \item - Stage 1: -@@ -2336,7 +2332,6 @@ In all cases, the remainder is left in the input. - The sequence of \tcode{char}{s} accumulated in stage 2 (the field) - is converted to a numeric value by the rules of one of the functions - declared in the header \libheaderref{cstdlib}: -- - \begin{itemize} - \item - For a signed integer value, the function \tcode{strtoll}. -@@ -2370,7 +2365,6 @@ The resultant numeric value is stored in \tcode{val}. - If the conversion function does not convert the entire field, or - if the field represents a value outside the range of representable values, - \tcode{ios_base::failbit} is assigned to \tcode{err}. -- - \end{description} - - \pnum -@@ -2538,7 +2532,6 @@ locale loc = str.getloc(); - - \pnum - The details of this operation occur in several stages: -- - \begin{itemize} - \item - Stage 1: -@@ -3353,7 +3346,6 @@ It then enters a loop, - reading zero or more characters from \tcode{s} at each iteration. - Unless otherwise specified below, - the loop terminates when the first of the following conditions holds: -- - \begin{itemize} - \item - The expression \tcode{fmt == fmtend} evaluates to \tcode{true}. -@@ -4171,7 +4163,6 @@ otherwise. - The symbol \locgrammarterm{decimal-point} - indicates the character returned by \tcode{decimal_point()}. - The other symbols are defined as follows: -- - \begin{ncbnf} - \locnontermdef{units}\br - digits\br diff --git a/source/memory.tex b/source/memory.tex index 3a005667..dc8df77d 100644 --- a/source/memory.tex @@ -9035,10 +7753,10 @@ index 3a005667..dc8df77d 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index a3e8f74f..920fe95b 100644 +index ec59b440..15e641d3 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -1601,7 +1601,6 @@ is_base_of_v // \tcode{false} +@@ -1600,7 +1600,6 @@ is_base_of_v // \tcode{false} The predicate condition for a template specialization \tcode{is_convertible} shall be satisfied if and only if the return expression in the following code would be well-formed, including any implicit conversions to the return type of the function: @@ -9046,7 +7764,7 @@ index a3e8f74f..920fe95b 100644 \begin{codeblock} To test() { return declval(); -@@ -2083,7 +2082,6 @@ If any of the types computed above is ill-formed, then +@@ -2076,7 +2075,6 @@ If any of the types computed above is ill-formed, then \pnum For the \tcode{common_type} trait applied to a template parameter pack \tcode{T} of types, the member \tcode{type} shall be either defined or not present as follows: @@ -9055,7 +7773,7 @@ index a3e8f74f..920fe95b 100644 \item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}. diff --git a/source/numerics.tex b/source/numerics.tex -index fdb1decb..4fc71f79 100644 +index cba469a9..5d9a47f9 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -615,7 +615,6 @@ template constexpr complex operator+(const complex& lhs); @@ -9074,7 +7792,7 @@ index fdb1decb..4fc71f79 100644 \begin{codeblock} basic_ostringstream s; s.flags(o.flags()); -@@ -4199,7 +4197,6 @@ template +@@ -4201,7 +4199,6 @@ template each operation is to be carried out modulo $2^{32}$, each indexing operator applied to \tcode{begin} is to be taken modulo $n$, and $T(x)$ is defined as $x \xor (x \rightshift 27)$: @@ -9082,7 +7800,7 @@ index fdb1decb..4fc71f79 100644 \begin{itemize} \item By way of initialization, -@@ -8276,7 +8273,6 @@ A unique function with the indicated name can be applied (unqualified) +@@ -8278,7 +8275,6 @@ A unique function with the indicated name can be applied (unqualified) to an operand of type \tcode{T}. This function returns a value of type \tcode{T} or which can be unambiguously implicitly converted to type \tcode{T}. @@ -9090,7 +7808,7 @@ index fdb1decb..4fc71f79 100644 \end{itemdescr} \rSec3[valarray.special]{Specialized algorithms} -@@ -8292,7 +8288,6 @@ template void swap(valarray& x, valarray& y) noexcept; +@@ -8294,7 +8290,6 @@ template void swap(valarray& x, valarray& y) noexcept; Equivalent to \tcode{x.swap(y)}. \end{itemdescr} @@ -9098,7 +7816,7 @@ index fdb1decb..4fc71f79 100644 \rSec2[class.slice]{Class \tcode{slice}} \rSec3[class.slice.overview]{Overview} -@@ -8712,7 +8707,6 @@ namespace std { +@@ -8714,7 +8709,6 @@ namespace std { This template is a helper template used by the \tcode{gslice} subscript operator @@ -9106,7 +7824,7 @@ index fdb1decb..4fc71f79 100644 \indexlibraryglobal{gslice_array}% \indexlibraryglobal{valarray}% \begin{itemdecl} -@@ -8838,7 +8832,6 @@ namespace std { +@@ -8840,7 +8834,6 @@ namespace std { \pnum This template is a helper template used by the mask subscript operator: @@ -9114,7 +7832,7 @@ index fdb1decb..4fc71f79 100644 \indexlibrarymember{operator[]}{mask_array}% \begin{itemdecl} mask_array valarray::operator[](const valarray&); -@@ -8955,7 +8948,6 @@ namespace std { +@@ -8957,7 +8950,6 @@ namespace std { \pnum This template is a helper template used by the indirect subscript operator @@ -9123,7 +7841,7 @@ index fdb1decb..4fc71f79 100644 \begin{itemdecl} indirect_array valarray::operator[](const valarray&); diff --git a/source/overloading.tex b/source/overloading.tex -index 25e6ca0b..efd1d2ce 100644 +index 481068cf..07f9a5d0 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -98,7 +98,6 @@ the list of arguments in its own unique way. @@ -9215,7 +7933,7 @@ index 25e6ca0b..efd1d2ce 100644 const char* unsigned long long int diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index f2818717..242dc9d0 100644 +index 3bab1be7..75936f0d 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -143,7 +143,6 @@ begins with the first character in the source file @@ -9298,7 +8016,7 @@ index f2818717..242dc9d0 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 805f0e8b..f5330589 100644 +index 18fd5561..7f69027e 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -626,7 +626,6 @@ object\iref{customization.point.object}. @@ -9405,26 +8123,6 @@ index 805f0e8b..f5330589 100644 \begin{itemize} \item If \tcode{T} models \libconcept{contiguous_iterator}, -diff --git a/source/regex.tex b/source/regex.tex -index 2da68d63..031a06c2 100644 ---- a/source/regex.tex -+++ b/source/regex.tex -@@ -3865,7 +3865,6 @@ names shall be recognized: - \tcode{graph}, \tcode{lower}, \tcode{print}, \tcode{punct}, \tcode{space}, - \tcode{upper}, \tcode{xdigit}, \tcode{d}, \tcode{s}, \tcode{w}. - In addition the following expressions shall be equivalent: -- - \begin{outputblock} - \d @\textnormal{and}@ [[:digit:]] - -@@ -3954,7 +3953,6 @@ conducted as follows: if \tcode{flags() \& regex_constants::collate} - is \tcode{false} then the character \tcode{c} is matched if \tcode{c1 - <= c \&\& c <= c2}, otherwise \tcode{c} is matched in - accordance with the following algorithm: -- - \begin{codeblock} - string_type str1 = string_type(1, - flags() & icase ? diff --git a/source/statements.tex b/source/statements.tex index 736fcc7c..f2eced7b 100644 --- a/source/statements.tex @@ -9454,7 +8152,7 @@ index 736fcc7c..f2eced7b 100644 equivalent to \tcode{goto} \exposid{contin}. diff --git a/source/support.tex b/source/support.tex -index 0f2f5268..4c577bd4 100644 +index 50a598e7..e9deb268 100644 --- a/source/support.tex +++ b/source/support.tex @@ -2375,7 +2375,6 @@ This requirement is binding on any replacement versions of these functions. @@ -9473,7 +8171,7 @@ index 0f2f5268..4c577bd4 100644 \begin{codeblock} void* place = operator new(sizeof(Something)); Something* p = new (place) Something(); -@@ -4304,7 +4302,6 @@ are collectively termed the \defn{comparison category types}. +@@ -4468,7 +4466,6 @@ are collectively termed the \defn{comparison category types}. Each is specified in terms of an exposition-only data member named \tcode{value} whose value typically corresponds to that of an enumerator from one of the following exposition-only enumerations: @@ -9481,7 +8179,7 @@ index 0f2f5268..4c577bd4 100644 \begin{codeblock} enum class @\placeholdernc{ord}@ { @\placeholdernc{equal}@ = 0, @\placeholdernc{equivalent}@ = @\placeholdernc{equal}@, @\placeholdernc{less}@ = -1, @\placeholdernc{greater}@ = 1 }; // \expos enum class @\placeholdernc{ncmp}@ { @\placeholdernc{unordered}@ = -127 }; // \expos -@@ -5213,7 +5210,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and +@@ -5377,7 +5374,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and denotes a type\iref{temp.deduct}, then \tcode{coroutine_traits} has the following publicly accessible member: @@ -9490,7 +8188,7 @@ index 0f2f5268..4c577bd4 100644 using promise_type = typename R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index 75b4349b..dddd849c 100644 +index 533e6ffb..feff65de 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -219,7 +219,6 @@ in some translation unit; no diagnostic is required. @@ -9782,10 +8480,10 @@ index 75b4349b..dddd849c 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index e9f81672..e74ae4f8 100644 +index f5b726eb..74e1953b 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -6566,7 +6566,6 @@ and visible to other threads. +@@ -6565,7 +6565,6 @@ and visible to other threads. \pnum The expression \tcode{m.lock()} is well-formed and has the following semantics: @@ -9793,7 +8491,7 @@ index e9f81672..e74ae4f8 100644 \begin{itemdescr} \pnum \expects -@@ -6609,7 +6608,6 @@ that a deadlock would occur. +@@ -6608,7 +6607,6 @@ that a deadlock would occur. \pnum The expression \tcode{m.try_lock()} is well-formed and has the following semantics: @@ -9801,7 +8499,7 @@ index e9f81672..e74ae4f8 100644 \begin{itemdescr} \pnum \expects -@@ -6655,7 +6653,6 @@ Nothing. +@@ -6654,7 +6652,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -9809,7 +8507,7 @@ index e9f81672..e74ae4f8 100644 \begin{itemdescr} \pnum \expects -@@ -6810,7 +6807,6 @@ requirements\iref{thread.req.lockable.timed}. +@@ -6809,7 +6806,6 @@ requirements\iref{thread.req.lockable.timed}. \pnum The expression \tcode{m.try_lock_for(rel_time)} is well-formed and has the following semantics: @@ -9817,7 +8515,7 @@ index e9f81672..e74ae4f8 100644 \begin{itemdescr} \pnum \expects -@@ -6852,7 +6848,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -6851,7 +6847,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_until(abs_time)} is well-formed and has the following semantics: @@ -9825,7 +8523,7 @@ index e9f81672..e74ae4f8 100644 \begin{itemdescr} \pnum \expects -@@ -7039,7 +7034,6 @@ shared lock. +@@ -7038,7 +7033,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -9833,7 +8531,7 @@ index e9f81672..e74ae4f8 100644 \begin{itemdescr} \pnum \expects -@@ -7076,7 +7070,6 @@ The calling thread has a shared lock on the mutex. +@@ -7075,7 +7069,6 @@ The calling thread has a shared lock on the mutex. \pnum The expression \tcode{m.unlock_shared()} is well-formed and has the following semantics: @@ -9841,7 +8539,7 @@ index e9f81672..e74ae4f8 100644 \begin{itemdescr} \pnum \expects -@@ -7101,7 +7094,6 @@ Nothing. +@@ -7100,7 +7093,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -9849,7 +8547,7 @@ index e9f81672..e74ae4f8 100644 \begin{itemdescr} \pnum \expects -@@ -7204,7 +7196,6 @@ requirements\iref{thread.req.lockable.shared.timed}. +@@ -7203,7 +7195,6 @@ requirements\iref{thread.req.lockable.shared.timed}. \pnum The expression \tcode{m.try_lock_shared_for(rel_time)} is well-formed and has the following semantics: @@ -9857,7 +8555,7 @@ index e9f81672..e74ae4f8 100644 \begin{itemdescr} \pnum \expects -@@ -7249,7 +7240,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -7248,7 +7239,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_shared_until(abs_time)} is well-formed and has the following semantics: @@ -9865,7 +8563,7 @@ index e9f81672..e74ae4f8 100644 \begin{itemdescr} \pnum \expects -@@ -9399,7 +9389,6 @@ template +@@ -9397,7 +9387,6 @@ template \begin{itemdescr} \pnum \effects @@ -9873,7 +8571,7 @@ index e9f81672..e74ae4f8 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -10811,7 +10800,6 @@ shared state as \tcode{*this}. +@@ -10808,7 +10797,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -9881,7 +8579,7 @@ index e9f81672..e74ae4f8 100644 \begin{itemize} \item \tcode{future_already_retrieved} if \tcode{get_future} has already been called on a \tcode{promise} with the same shared state as \tcode{*this}. -@@ -10874,7 +10862,6 @@ already has a stored value or exception. +@@ -10871,7 +10859,6 @@ already has a stored value or exception. \pnum \errors @@ -9889,7 +8587,7 @@ index e9f81672..e74ae4f8 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -11214,7 +11201,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -11211,7 +11198,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -9897,7 +8595,7 @@ index e9f81672..e74ae4f8 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -11558,7 +11544,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -11555,7 +11541,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -9905,7 +8603,7 @@ index e9f81672..e74ae4f8 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -11593,7 +11578,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -11590,7 +11575,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -9913,7 +8611,7 @@ index e9f81672..e74ae4f8 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -11649,7 +11633,6 @@ The further behavior +@@ -11646,7 +11630,6 @@ The further behavior of the second function depends on the \tcode{policy} argument as follows (if more than one of these conditions applies, the implementation may choose any of the corresponding policies): @@ -10072,10 +8770,10 @@ index 9344719d..edab6cbc 100644 \fmtnontermdef{chrono-format-spec}\br \opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs} diff --git a/source/utilities.tex b/source/utilities.tex -index 2416ba50..facaee78 100644 +index 0da437df..b3214037 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -259,7 +259,6 @@ Exchanges values stored in two locations. +@@ -254,7 +254,6 @@ Exchanges values stored in two locations. \pnum \remarks The exception specification is equivalent to: @@ -10083,7 +8781,7 @@ index 2416ba50..facaee78 100644 \begin{codeblock} is_nothrow_move_constructible_v && is_nothrow_move_assignable_v \end{codeblock} -@@ -2198,7 +2197,6 @@ For all $i$, assigns \tcode{std::forward<$\tcode{T}_i$>(get<$i$>(u))} to +@@ -2193,7 +2192,6 @@ For all $i$, assigns \tcode{std::forward<$\tcode{T}_i$>(get<$i$>(u))} to \remarks The exception specification is equivalent to the logical \logop{and} of the following expressions: @@ -10091,7 +8789,7 @@ index 2416ba50..facaee78 100644 \begin{codeblock} is_nothrow_move_assignable_v<@$\mathtt{T}_i$@> \end{codeblock} -@@ -3144,7 +3142,6 @@ As if by \tcode{x.swap(y)}. +@@ -3139,7 +3137,6 @@ As if by \tcode{x.swap(y)}. \pnum \remarks The exception specification is equivalent to: @@ -10099,7 +8797,7 @@ index 2416ba50..facaee78 100644 \begin{codeblock} noexcept(x.swap(y)) \end{codeblock} -@@ -10106,7 +10103,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; +@@ -10101,7 +10098,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -10107,7 +8805,7 @@ index 2416ba50..facaee78 100644 \begin{itemize} \item If \tcode{I < pos}, the new value is zero; -@@ -10131,7 +10127,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; +@@ -10126,7 +10122,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -10115,7 +8813,7 @@ index 2416ba50..facaee78 100644 \begin{itemize} \item If \tcode{pos >= N - I}, the new value is zero; -@@ -10859,7 +10854,6 @@ namespace std { +@@ -10854,7 +10849,6 @@ namespace std { If a \Cpp{} program wants to have a by-element addition of two vectors \tcode{a} and \tcode{b} containing \tcode{double} and put the result into \tcode{a}, it can do: @@ -10123,7 +8821,7 @@ index 2416ba50..facaee78 100644 \begin{codeblock} transform(a.begin(), a.end(), b.begin(), a.begin(), plus()); \end{codeblock} -@@ -14354,7 +14348,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; +@@ -14349,7 +14343,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; The header provides partial specializations of \tcode{function_ref} for each combination of the possible replacements of the placeholders \cv{} and \placeholder{noex} where: @@ -10131,46 +8829,14 @@ index 2416ba50..facaee78 100644 \begin{itemize} \item \cv{} is either const or empty, and \item \placeholder{noex} is either \tcode{true} or \tcode{false}. -@@ -15937,7 +15930,6 @@ is copied unchanged to the output. - An escape sequence is one of \noncxxtcode{\{\{} or \noncxxtcode{\}\}}. - It is replaced with \noncxxtcode{\{} or \noncxxtcode{\}}, respectively, in the output. - The syntax of replacement fields is as follows: -- - \begin{ncbnf} - \fmtnontermdef{replacement-field}\br - \noncxxterminal{\{} \opt{arg-id} \opt{format-specifier} \noncxxterminal{\}} -@@ -16067,7 +16059,6 @@ Some of the formatting options - are only supported for arithmetic types. - \end{note} - The syntax of format specifications is as follows: -- - \begin{ncbnf} - \fmtnontermdef{std-format-spec}\br - \opt{fill-and-align} \opt{sign} \opt{\noncxxterminal{\#}} \opt{\noncxxterminal{0}} \opt{width} \opt{precision} \opt{\noncxxterminal{L}} \opt{type} -@@ -17319,7 +17310,6 @@ encodes a single character, - is a shift sequence, or - is a sequence of ill-formed code units, - processing is in order as follows: -- - \begin{itemize} - \item - If \placeholder{X} encodes a single character \placeholder{C}, then: -@@ -17418,7 +17408,6 @@ is appended to \placeholder{E}. - The escaped string representation of a character \placeholder{C} - is equivalent to the escaped string representation - of a string of \placeholder{C}, except that: -- - \begin{itemize} - \item - the result starts and ends with \unicode{0027}{apostrophe} (\tcode{'}) -- 2.34.1 -From 245f9fe6f48bf05f579d7e68ae0a15aae925a340 Mon Sep 17 00:00:00 2001 +From 331164f992c48829fe5cbd6f9740823c6e16c98a Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 -Subject: [PATCH 12/18] Use monospace font for code in figures. +Subject: [PATCH 10/14] Use monospace font for code in figures. --- source/assets/figdag.dot | 8 ++++---- @@ -10314,10 +8980,10 @@ index b3c04d48..1ab8e364 100644 2.34.1 -From 308b2698beea82e07771be3294dbc0d184abd992 Mon Sep 17 00:00:00 2001 +From b8db4216e3eb5926d03800ef793267fcc3f551ba Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 -Subject: [PATCH 13/18] [uaxid] Mark code that's not to be highlighted. +Subject: [PATCH 11/14] [uaxid] Mark code that's not to be highlighted. --- source/uax31.tex | 8 ++++---- @@ -10352,297 +9018,3201 @@ index 5b236c6e..320ed00a 100644 2.34.1 -From a0654a2d7904125d033db7e3e4ad9e74586b7156 Mon Sep 17 00:00:00 2001 +From c0570c43e6fc469e2b9b0e0c119a5f291b8e00d4 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen -Date: Sun, 28 Jul 2024 08:14:15 +0200 -Subject: [PATCH 14/18] [exec] Use appropriate macros for concept references. +Date: Sun, 28 Jul 2024 10:22:07 +0200 +Subject: [PATCH 12/14] Use cxxdraft-htmlgen macros more. --- - source/exec.tex | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) + source/algorithms.tex | 194 +++++++++++++------------- + source/concepts.tex | 4 +- + source/diagnostics.tex | 18 ++- + source/exec.tex | 18 +-- + source/future.tex | 10 +- + source/iostreams.tex | 28 ++-- + source/lib-intro.tex | 28 ++-- + source/memory.tex | 46 +++--- + source/meta.tex | 309 ++++++++++++++++++++--------------------- + source/numerics.tex | 38 ++--- + source/strings.tex | 10 +- + source/support.tex | 14 +- + source/threads.tex | 112 +++++++-------- + source/time.tex | 66 ++++----- + source/utilities.tex | 138 +++++++++--------- + 15 files changed, 512 insertions(+), 521 deletions(-) -diff --git a/source/exec.tex b/source/exec.tex -index b33f50a2..10e35c35 100644 ---- a/source/exec.tex -+++ b/source/exec.tex -@@ -155,7 +155,7 @@ the constraints on the types of queryable objects. - - \pnum - Let \tcode{env} be an object of type \tcode{Env}. --The type \tcode{Env} models queryable -+The type \tcode{Env} models \exposconcept{queryable} - if for each callable object \tcode{q} and a pack of subexpressions \tcode{args}, - if \tcode{requires \{ q(env, args...) \}} is \tcode{true} then - \tcode{q(env, args...)} meets any semantic requirements imposed by \tcode{q}. -@@ -2682,11 +2682,11 @@ the \tcode{exception_ptr} error completion signature from the set. - - \pnum - A \defnadj{pipeable}{sender adaptor closure object} is a function object --that accepts one or more \tcode{sender} arguments and returns a \tcode{sender}. -+that accepts one or more \libconcept{sender} arguments and returns a \libconcept{sender}. - For a pipeable sender adaptor closure object \tcode{c} and - an expression \tcode{sndr} --such that \tcode{decltype((sndr))} models \tcode{sender}, --the following expressions are equivalent and yield a \tcode{sender}: -+such that \tcode{decltype((sndr))} models \libconcept{sender}, -+the following expressions are equivalent and yield a \libconcept{sender}: - \begin{codeblock} - c(sndr) - sndr | c -@@ -2719,7 +2719,7 @@ a pipeable sender adaptor closure object - if \tcode{T} models \tcode{\libconcept{derived_from}>}, - \tcode{T} has no other base classes - of type \tcode{sender_adaptor_closure} for any other type \tcode{U}, and --\tcode{T} does not satisfy \tcode{sender}. -+\tcode{T} does not satisfy \libconcept{sender}. +diff --git a/source/algorithms.tex b/source/algorithms.tex +index 6008378c..8442cb43 100644 +--- a/source/algorithms.tex ++++ b/source/algorithms.tex +@@ -81,14 +81,14 @@ the names of template parameters are used to express type requirements. + \tcode{InputIterator1}, or + \tcode{Input\-Iterator2}, + the template argument shall meet the +- \oldconcept{InputIterator} requirements\iref{input.iterators}. ++ \oldconceptref{InputIterator} requirements\iref{input.iterators}. + \item + If an algorithm's template parameter is named + \tcode{OutputIterator}, + \tcode{OutputIterator1}, or + \tcode{Output\-Iterator2}, + the template argument shall meet the +- \oldconcept{OutputIterator} requirements\iref{output.iterators}. ++ \oldconceptref{OutputIterator} requirements\iref{output.iterators}. + \item + If an algorithm's template parameter is named + \tcode{ForwardIterator}, +@@ -96,7 +96,7 @@ the names of template parameters are used to express type requirements. + \tcode{ForwardItera\-tor2}, or + \tcode{NoThrowForwardIterator}, + the template argument shall meet the +- \oldconcept{ForwardIterator} requirements\iref{forward.iterators} ++ \oldconceptref{ForwardIterator} requirements\iref{forward.iterators} + if it is required to be a mutable iterator, or + model \libconcept{forward_iterator}\iref{iterator.concept.forward} otherwise. + \item +@@ -112,7 +112,7 @@ the names of template parameters are used to express type requirements. + \tcode{Bidirectional\-Iterator1}, or + \tcode{BidirectionalIterator2}, + the template argument shall meet the +- \oldconcept{BidirectionalIterator} requirements\iref{bidirectional.iterators} ++ \oldconceptref{BidirectionalIterator} requirements\iref{bidirectional.iterators} + if it is required to be a mutable iterator, or model + \libconcept{bidirectional_iterator}\iref{iterator.concept.bidir} otherwise. + \item +@@ -121,7 +121,7 @@ the names of template parameters are used to express type requirements. + \tcode{Random\-AccessIterator1}, or + \tcode{RandomAccessIterator2}, + the template argument shall meet the +- \oldconcept{RandomAccessIterator} requirements\iref{random.access.iterators} ++ \oldconceptref{RandomAccessIterator} requirements\iref{random.access.iterators} + if it is required to be a mutable iterator, or model + \libconcept{random_access_iterator}\iref{iterator.concept.random.access} otherwise. + \end{itemize} +@@ -3625,10 +3625,10 @@ template + \pnum + \expects + \tcode{Function} meets +-the \oldconcept{MoveConstructible} requirements (\tref{cpp17.moveconstructible}). ++the \oldconceptref{MoveConstructible} requirements (\tref{cpp17.moveconstructible}). + \begin{note} + \tcode{Function} need not meet the requirements of +-\oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}). ++\oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}). + \end{note} \pnum - The template parameter \tcode{D} for \tcode{sender_adaptor_closure} can be -@@ -2734,8 +2734,8 @@ if overload resolution selects a program-defined \tcode{operator|} function. +@@ -3665,7 +3665,7 @@ template + \begin{itemdescr} + \pnum + \expects +-\tcode{Function} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{Function} meets the \oldconceptref{CopyConstructible} requirements. \pnum - A \defnadj{pipeable}{sender adaptor object} is a customization point object --that accepts a \tcode{sender} as its first argument and --returns a \tcode{sender}. -+that accepts a \libconcept{sender} as its first argument and -+returns a \libconcept{sender}. - If a pipeable sender adaptor object accepts only one argument, - then it is a pipeable sender adaptor closure object. + \effects +@@ -3751,10 +3751,10 @@ to an integral type\iref{conv.integral,class.conv}. + \pnum + \expects + \tcode{n >= 0} is \tcode{true}. +-\tcode{Function} meets the \oldconcept{MoveConstructible} requirements. ++\tcode{Function} meets the \oldconceptref{MoveConstructible} requirements. + \begin{note} + \tcode{Function} need not meet +-the requirements of \oldconcept{CopyConstructible}. ++the requirements of \oldconceptref{CopyConstructible}. + \end{note} -@@ -5004,7 +5004,7 @@ class @\exposid{run-loop-scheduler}@; + \pnum +@@ -3791,7 +3791,7 @@ to an integral type\iref{conv.integral,class.conv}. + \pnum + \expects + \tcode{n >= 0} is \tcode{true}. +-\tcode{Function} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{Function} meets the \oldconceptref{CopyConstructible} requirements. \pnum - \exposid{run-loop-scheduler} is an unspecified type --that models \tcode{scheduler}. -+that models \libconcept{scheduler}. + \effects +@@ -4457,7 +4457,7 @@ If + \item + the types of \tcode{first1}, \tcode{last1}, \tcode{first2}, and \tcode{last2} + meet the +- \oldconcept{RandomAccessIterator} requirements\iref{random.access.iterators} ++ \oldconceptref{RandomAccessIterator} requirements\iref{random.access.iterators} + and \tcode{last1 - first1 != last2 - first2} + for the overloads in namespace \tcode{std}; + \item +@@ -4781,7 +4781,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} \pnum - Instances of \exposid{run-loop-scheduler} remain valid -@@ -5027,7 +5027,7 @@ class @\exposid{run-loop-sender}@; + \remarks +-\tcode{Searcher} need not meet the \oldconcept{CopyConstructible} requirements. ++\tcode{Searcher} need not meet the \oldconceptref{CopyConstructible} requirements. + \end{itemdescr} + + \rSec2[alg.starts.with]{Starts with} +@@ -5196,7 +5196,7 @@ do not overlap. + For the overload with an \tcode{ExecutionPolicy}, + there might be a performance cost + if \tcode{iterator_traits::value_type} +-is not \oldconcept{\-Move\-Constructible} (\tref{cpp17.moveconstructible}). ++is not \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}). + \end{note} \pnum - \exposid{run-loop-sender} is an exposition-only type --that satisfies \tcode{sender}. -+that satisfies \libconcept{sender}. - For any type \tcode{Env}, - \tcode{completion_signatures_of_t<\exposid{run-loop-sender}, Env>} is - \begin{codeblock} --- -2.34.1 - - -From ea8b2c5b6e8972421b98e3799dd49e80443ebc1f Mon Sep 17 00:00:00 2001 -From: Eelis van der Weegen -Date: Sun, 28 Jul 2024 08:39:13 +0200 -Subject: [PATCH 15/18] [execpol] Don't include namespace in - \indexlibraryglobal. - ---- - source/utilities.tex | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/source/utilities.tex b/source/utilities.tex -index facaee78..df1d8667 100644 ---- a/source/utilities.tex -+++ b/source/utilities.tex -@@ -15277,7 +15277,7 @@ The behavior of a program that adds specializations for +@@ -6007,7 +6007,7 @@ Let $E$ be + \expects + For the algorithms in namespace \tcode{std}, + the type of \tcode{*first} +-meets the \oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}). ++meets the \oldconceptref{MoveAssignable} requirements (\tref{cpp17.moveassignable}). - \rSec2[execpol.seq]{Sequenced execution policy} + \pnum + \effects +@@ -6117,7 +6117,7 @@ do not overlap. + For the overloads with an \tcode{ExecutionPolicy}, + there might be a performance cost + if \tcode{iterator_traits::value_type} does not meet +-the \oldconcept{\-Move\-Constructible} (\tref{cpp17.moveconstructible}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements. + \end{note} --\indexlibraryglobal{execution::sequenced_policy}% -+\indexlibraryglobal{sequenced_policy}% - \begin{itemdecl} - class execution::sequenced_policy { @\unspec@ }; - \end{itemdecl} -@@ -15297,7 +15297,7 @@ if the invocation of an element access function exits via an exception, + \pnum +@@ -6190,7 +6190,7 @@ let $E$ be + For the overloads in namespace \tcode{std}, + \tcode{pred} is an equivalence relation and + the type of \tcode{*first} meets +-the \oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}). ++the \oldconceptref{MoveAssignable} requirements (\tref{cpp17.moveassignable}). - \rSec2[execpol.par]{Parallel execution policy} + \pnum + \effects +@@ -6293,18 +6293,18 @@ let $E$ be + \libconcept{forward_iterator}\iref{iterator.concept.forward}, + then there are no additional requirements for \tcode{T}. + Otherwise, if \tcode{OutputIterator} meets +- the \oldconcept{ForwardIterator} requirements and ++ the \oldconceptref{ForwardIterator} requirements and + its value type is the same as \tcode{T}, + then \tcode{T} meets +- the \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. ++ the \oldconceptref{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. + Otherwise, \tcode{T} meets both +- the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and +- \oldconcept{CopyAssignable} requirements. ++ the \oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}) and ++ \oldconceptref{CopyAssignable} requirements. + \begin{note} + For the overloads with an \tcode{ExecutionPolicy}, + there might be a performance cost + if the value type of \tcode{ForwardIterator1} does not meet both the +- \oldconcept{CopyConstructible} and \oldconcept{CopyAssignable} requirements. ++ \oldconceptref{CopyConstructible} and \oldconceptref{CopyAssignable} requirements. + \end{note} + \end{itemize} + \end{itemize} +@@ -6352,7 +6352,7 @@ template<@\libconcept{bidirectional_range}@ R> + \expects + For the overloads in namespace \tcode{std}, + \tcode{BidirectionalIterator} meets +-the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements}. ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements}. --\indexlibraryglobal{execution::parallel_policy}% -+\indexlibraryglobal{parallel_policy}% - \begin{itemdecl} - class execution::parallel_policy { @\unspec@ }; - \end{itemdecl} -@@ -15317,7 +15317,7 @@ if the invocation of an element access function exits via an exception, + \pnum + \effects +@@ -6444,10 +6444,10 @@ template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S> + \range{first}{middle} and \range{middle}{last} are valid ranges. + For the overloads in namespace \tcode{std}, + \tcode{ForwardIterator} meets +-the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements}, and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements}, and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. - \rSec2[execpol.parunseq]{Parallel and unsequenced execution policy} + \pnum + \effects +@@ -6588,13 +6588,13 @@ For the overload in namespace \tcode{std}: + \begin{itemize} + \item + \tcode{PopulationIterator} meets +- the \oldconcept{InputIterator} requirements\iref{input.iterators}. ++ the \oldconceptref{InputIterator} requirements\iref{input.iterators}. + \item + \tcode{SampleIterator} meets +- the \oldconcept{OutputIterator} requirements\iref{output.iterators}. ++ the \oldconceptref{OutputIterator} requirements\iref{output.iterators}. + \item + \tcode{SampleIterator} meets +- the \oldconcept{RandomAccessIterator} requirements\iref{random.access.iterators} ++ the \oldconceptref{RandomAccessIterator} requirements\iref{random.access.iterators} + unless \tcode{Pop\-ulat\-ion\-Iter\-ator} + models \libconcept{forward_iterator}\iref{iterator.concept.forward}. + \item +@@ -6662,7 +6662,7 @@ For the overload in namespace \tcode{std}: + \begin{itemize} + \item + \tcode{RandomAccessIterator} meets +- the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements}. ++ the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements}. + \item + The type \tcode{remove_reference_t} meets + the uniform random bit generator\iref{rand.req.urng} requirements. +@@ -6714,7 +6714,7 @@ template<@\libconcept{forward_range}@ R> + \expects + \tcode{n >= 0} is \tcode{true}. + For the overloads in namespace \tcode{std}, +-the type of \tcode{*first} meets the \oldconcept{MoveAssignable} requirements. ++the type of \tcode{*first} meets the \oldconceptref{MoveAssignable} requirements. --\indexlibraryglobal{execution::parallel_unsequenced_policy}% -+\indexlibraryglobal{parallel_unsequenced_policy}% - \begin{itemdecl} - class execution::parallel_unsequenced_policy { @\unspec@ }; - \end{itemdecl} -@@ -15338,7 +15338,7 @@ if the invocation of an element access function exits via an exception, + \pnum + \effects +@@ -6768,10 +6768,10 @@ template<@\libconcept{forward_range}@ R> + \expects + \tcode{n >= 0} is \tcode{true}. + For the overloads in namespace \tcode{std}, +-the type of \tcode{*first} meets the \oldconcept{MoveAssignable} requirements, ++the type of \tcode{*first} meets the \oldconceptref{MoveAssignable} requirements, + and \tcode{ForwardIterator} meets +-the \oldconcept{BidirectionalIterator} requirements\iref{bidirectional.iterators} or +-the \oldconcept{ValueSwap\-pable} requirements. ++the \oldconceptref{BidirectionalIterator} requirements\iref{bidirectional.iterators} or ++the \oldconceptref{ValueSwappable} requirements. - \rSec2[execpol.unseq]{Unsequenced execution policy} + \pnum + \effects +@@ -6785,7 +6785,7 @@ from \tcode{i = (last - first) - n - 1} and proceeding to \tcode{i = 0} if + \item + for the overload in namespace \tcode{std} + without an \tcode{ExecutionPolicy} template parameter, +-\tcode{Forward\-Iterator} meets the \oldconcept{BidirectionalIterator} requirements, ++\tcode{Forward\-Iterator} meets the \oldconceptref{BidirectionalIterator} requirements, + \item + for the overloads in namespace \tcode{ranges}, + \tcode{I} models \libconcept{bidirectional_iterator}. +@@ -6941,10 +6941,10 @@ for the overloads with no parameters by those names. + \expects + For the overloads in namespace \tcode{std}, + \tcode{RandomAccessIterator} meets +-the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements} and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. --\indexlibraryglobal{execution::unsequenced_policy}% -+\indexlibraryglobal{unsequenced_policy}% - \begin{itemdecl} - class execution::unsequenced_policy { @\unspec@ }; - \end{itemdecl} --- -2.34.1 - - -From 17cfa568b38377e1d39826fb4978c69483664992 Mon Sep 17 00:00:00 2001 -From: Eelis van der Weegen -Date: Sun, 28 Jul 2024 15:01:26 +0200 -Subject: [PATCH 16/18] Use \libglobal more. - ---- - source/diagnostics.tex | 11 ++++------- - source/meta.tex | 9 ++++----- - 2 files changed, 8 insertions(+), 12 deletions(-) - -diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index 173589a4..b658ca11 100644 ---- a/source/diagnostics.tex -+++ b/source/diagnostics.tex -@@ -712,9 +712,6 @@ libraries unchanged. - \indexlibraryglobal{error_code}% - \indexlibraryglobal{error_condition}% - \indexlibraryglobal{system_error}% --\indexlibraryglobal{is_error_code_enum}% --\indexlibraryglobal{is_error_condition_enum}% --\indexlibraryglobal{errc}% - \begin{codeblock} - #include // see \ref{compare.syn} + \pnum + \effects +@@ -6999,10 +6999,10 @@ for the overloads with no parameters by those names. + \expects + For the overloads in namespace \tcode{std}, + \tcode{RandomAccessIterator} meets +-the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements} and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. -@@ -728,12 +725,12 @@ namespace std { - class system_error; + \pnum + \effects +@@ -7069,10 +7069,10 @@ for the overloads with no parameters by those names. + \range{first}{middle} and \range{middle}{last} are valid ranges. + For the overloads in namespace \tcode{std}, + \tcode{RandomAccessIterator} meets +-the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements} and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. - template -- struct is_error_code_enum : public false_type {}; -+ struct @\libglobal{is_error_code_enum}@ : public false_type {}; + \pnum + \effects +@@ -7177,10 +7177,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. + \expects + For the overloads in namespace \tcode{std}, + \tcode{RandomAccessIterator} meets +-the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements}, ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements}, + the type of \tcode{*result_first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{\-Move\-Assignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. + + \pnum + For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and +@@ -7382,10 +7382,10 @@ for the overloads with no parameters by those names. + \range{first}{nth} and \range{nth}{last} are valid ranges. + For the overloads in namespace \tcode{std}, + \tcode{RandomAccessIterator} meets +-the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements}, and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements}, and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. - template -- struct is_error_condition_enum : public false_type {}; -+ struct @\libglobal{is_error_condition_enum}@ : public false_type {}; + \pnum + \effects +@@ -7733,7 +7733,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. + \expects + For the overloads in namespace \tcode{std}, + \tcode{ForwardIterator} meets +-the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements}. ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements}. -- enum class errc { // freestanding -+ enum class @\libglobal{errc}@ { // freestanding - address_family_not_supported, // \tcode{EAFNOSUPPORT} - address_in_use, // \tcode{EADDRINUSE} - address_not_available, // \tcode{EADDRNOTAVAIL} -@@ -836,7 +833,7 @@ namespace std { + \pnum + \effects +@@ -7760,7 +7760,7 @@ Let $N = \tcode{last - first}$: + For the overload with no \tcode{ExecutionPolicy}, + exactly $N$ applications of the predicate and projection. + At most $N / 2$ swaps if the type of \tcode{first} meets +- the \oldconcept{BidirectionalIterator} requirements ++ the \oldconceptref{BidirectionalIterator} requirements + for the overloads in namespace \tcode{std} or + models \libconcept{bidirectional_iterator} + for the overloads in namespace \tcode{ranges}, +@@ -7802,10 +7802,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. + \expects + For the overloads in namespace \tcode{std}, + \tcode{BidirectionalIterator} meets +-the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements} and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. - // \ref{syserr}, system error support - template -- constexpr bool is_error_code_enum_v = is_error_code_enum::value; -+ constexpr bool @\libglobal{is_error_code_enum_v}@ = is_error_code_enum::value; - template - constexpr bool is_error_condition_enum_v = is_error_condition_enum::value; - } -diff --git a/source/meta.tex b/source/meta.tex -index 920fe95b..a8174841 100644 ---- a/source/meta.tex -+++ b/source/meta.tex -@@ -160,9 +160,9 @@ namespace std { - template struct integral_constant; + \pnum + \effects +@@ -7888,7 +7888,7 @@ The input range and output ranges do not overlap. + \begin{note} + For the overload with an \tcode{ExecutionPolicy}, + there might be a performance cost if \tcode{first}'s value type +-does not meet the \oldconcept{CopyConstructible} requirements. ++does not meet the \oldconceptref{CopyConstructible} requirements. + \end{note} - template -- using bool_constant = integral_constant; -- using true_type = bool_constant; -- using false_type = bool_constant; -+ using @\libglobal{bool_constant}@ = integral_constant; -+ using @\libglobal{true_type}@ = bool_constant; -+ using @\libglobal{false_type}@ = bool_constant; + \pnum +@@ -8093,10 +8093,10 @@ for the overloads with no parameters by those names. + sorted with respect to \tcode{comp} and \tcode{proj}. + For the overloads in namespace \tcode{std}, + \tcode{BidirectionalIterator} meets +-the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements} and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. - // \ref{meta.unary.cat}, primary type categories - template struct is_void; -@@ -595,7 +595,7 @@ namespace std { - \indexlibrarymember{value_type}{integral_constant}% - \begin{codeblock} - namespace std { -- template struct integral_constant { -+ template struct @\libglobal{integral_constant}@ { - static constexpr T value = v; + \pnum + \effects +@@ -8662,10 +8662,10 @@ The range \range{first}{last - 1} + is a valid heap with respect to \tcode{comp} and \tcode{proj}. + For the overloads in namespace \tcode{std}, + \tcode{RandomAccessIterator} meets +-the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements} and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} requirements (\tref{cpp17.moveconstructible}) and +-the \oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}). ++the \oldconceptref{MoveConstructible} requirements (\tref{cpp17.moveconstructible}) and ++the \oldconceptref{MoveAssignable} requirements (\tref{cpp17.moveassignable}). - using value_type = T; -@@ -607,7 +607,6 @@ namespace std { - } - \end{codeblock} + \pnum + \effects +@@ -8715,10 +8715,10 @@ The range \range{first}{last} + is a valid non-empty heap with respect to \tcode{comp} and \tcode{proj}. + For the overloads in namespace \tcode{std}, + \tcode{RandomAccessIterator} meets +-the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements} and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. --\indexlibraryglobal{integral_constant}% - \indexlibraryglobal{bool_constant}% - \indexlibraryglobal{true_type}% - \indexlibraryglobal{false_type}% --- -2.34.1 - - -From 6a13fe87b29c63f6777f4ed6cf6fc0a78fc6d88f Mon Sep 17 00:00:00 2001 -From: Eelis van der Weegen -Date: Sun, 28 Jul 2024 11:08:01 +0200 -Subject: [PATCH 17/18] Remove awkward \linebreaks. - ---- - source/algorithms.tex | 2 +- - source/containers.tex | 51 +++++++++++++++++++++---------------------- - source/exec.tex | 18 +++++++-------- - source/locales.tex | 2 +- - source/memory.tex | 6 ++--- - source/meta.tex | 2 +- - source/numerics.tex | 4 ++-- - source/ranges.tex | 36 +++++++++++++++--------------- - source/utilities.tex | 14 ++++++------ - 9 files changed, 67 insertions(+), 68 deletions(-) - -diff --git a/source/algorithms.tex b/source/algorithms.tex -index 8a304cbb..fd9f31ad 100644 ---- a/source/algorithms.tex -+++ b/source/algorithms.tex -@@ -5435,7 +5435,7 @@ Let: - \tcode{invoke(op, invoke(proj, *(first1 + (i - result))))} - for unary transforms defined in namespace \tcode{ranges}; - \item -- \tcode{invoke(binary_op, invoke(proj1, *(first1 + (i - result))), invoke(proj2,\linebreak *(first2 + (i - result))))} -+ \tcode{invoke(binary_op, invoke(proj1, *(first1 + (i - result))), invoke(proj2, *(first2 + (i - result))))} - for binary transforms defined in namespace \tcode{ranges}. - \end{itemize} - \end{itemize} -diff --git a/source/containers.tex b/source/containers.tex -index a3413233..5345d2b6 100644 ---- a/source/containers.tex -+++ b/source/containers.tex -@@ -2365,8 +2365,7 @@ calling \tcode{ator_traits::template rebind_traits::dealloc - Assigns \tcode{nh.ptr_} to \tcode{ptr_}. - \item - If \tcode{!alloc\textunderscore} or \tcode{ator_traits::propagate_on_container_move_assignment::value} --is \tcode{true}, \linebreak --move assigns \tcode{nh.alloc_} to \tcode{alloc_}. -+is \tcode{true}, move assigns \tcode{nh.alloc_} to \tcode{alloc_}. - \item - Assigns - \keyword{nullptr} to \tcode{nh.ptr_} and assigns \tcode{nullopt} to -@@ -7487,14 +7486,14 @@ template \pnum + \effects +@@ -8771,10 +8771,10 @@ for the overloads with no parameters by those names. \expects - \tcode{T} is \oldconcept{EmplaceConstructible} into \tcode{forward_list} --from \tcode{std::forward(\linebreak args)...}. -+from \tcode{std::forward(args)...}. - \tcode{position} is \tcode{before_begin()} or is a dereferenceable - iterator in the range \range{begin()}{end()}. + For the overloads in namespace \tcode{std}, + \tcode{RandomAccessIterator} meets +-the \oldconcept{ValueSwap\-pable} requirements\iref{swappable.requirements} and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements} and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. \pnum \effects - Inserts an object of type \tcode{value_type} direct-non-list-initialized with --\tcode{std::forward(\linebreak args)...} after \tcode{position}. -+\tcode{std::forward(args)...} after \tcode{position}. +@@ -8824,10 +8824,10 @@ The range \range{first}{last} is + a valid heap with respect to \tcode{comp} and \tcode{proj}. + For the overloads in namespace \tcode{std}, + \tcode{RandomAccessIterator} meets +-the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements} and + the type of \tcode{*first} meets +-the \oldconcept{MoveConst\-ruct\-ible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{Move\-Assign\-able} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. + + \pnum + \effects +@@ -8986,7 +8986,7 @@ template +@@ -9026,8 +9026,8 @@ template<@\libconcept{input_range}@ R, class Proj = identity, + \expects + \tcode{ranges::distance(r) > 0}. + For the overloads in namespace \tcode{std}, +-\tcode{T} meets the \oldconcept{\-Copy\-Constructible} requirements. +-For the first form, \tcode{T} meets the \oldconcept{LessThanComparable} ++\tcode{T} meets the \oldconceptref{CopyConstructible} requirements. ++For the first form, \tcode{T} meets the \oldconceptref{LessThanComparable} + requirements (\tref{cpp17.lessthancomparable}). + \pnum - The expression - \tcode{\exposid{is-vector-bool-reference}} is \tcode{true} --if \tcode{T} denotes the type \tcode{vector::\linebreak{}reference} -+if \tcode{T} denotes the type \tcode{vector::reference} - for some type \tcode{Alloc} and - \tcode{vector} is not a program-defined specialization. +@@ -9064,7 +9064,7 @@ template 0}. + For the overloads in namespace \tcode{std}, +-\tcode{T} meets the \oldconcept{\-Copy\-Constructible} requirements. +-For the first form, \tcode{T} meets the \oldconcept{LessThanComparable} ++\tcode{T} meets the \oldconceptref{CopyConstructible} requirements. ++For the first form, \tcode{T} meets the \oldconceptref{LessThanComparable} + requirements (\tref{cpp17.lessthancomparable}). + + \pnum +@@ -9144,7 +9144,7 @@ template 0}. + For the overloads in namespace \tcode{std}, +-\tcode{T} meets the \oldconcept{\-Copy\-Constructible} requirements. +-For the first form, type \tcode{T} meets the \oldconcept{LessThanComparable} ++\tcode{T} meets the \oldconceptref{CopyConstructible} requirements. ++For the first form, type \tcode{T} meets the \oldconceptref{LessThanComparable} + requirements (\tref{cpp17.lessthancomparable}). + + \pnum +@@ -9378,7 +9378,7 @@ for the overloads with no parameter \tcode{proj}. + \expects + \tcode{bool(invoke(comp, invoke(proj, hi), invoke(proj, lo)))} is \tcode{false}. + For the first form, type \tcode{T} +-meets the \oldconcept{LessThan\-Comparable} ++meets the \oldconceptref{LessThanComparable} + requirements (\tref{cpp17.lessthancomparable}). + + \pnum +@@ -9567,7 +9567,7 @@ for overloads with no parameters by those names. + \expects + For the overloads in namespace \tcode{std}, + \tcode{BidirectionalIterator} meets +-the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements}. ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements}. + + \pnum + \effects +@@ -9626,7 +9626,7 @@ for overloads with no parameters by those names. + \expects + For the overloads in namespace \tcode{std}, + \tcode{BidirectionalIterator} meets +-the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements}. ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements}. + + \pnum + \effects +@@ -9944,8 +9944,8 @@ template + \pnum + \expects + \tcode{T} meets +-the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) +-and \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. ++the \oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}) ++and \oldconceptref{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. + In the range \crange{first}{last}, + \tcode{binary_op} neither modifies elements + nor invalidates iterators or subranges. +@@ -10067,7 +10067,7 @@ are convertible to \tcode{T}. + \expects + \begin{itemize} + \item +- \tcode{T} meets the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements. ++ \tcode{T} meets the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements. + \item + \tcode{binary_op} neither invalidates iterators or subranges, + nor modifies elements in the range \crange{first}{last}. +@@ -10111,8 +10111,8 @@ template}. + \begin{itemize} + \item + For the overloads with no \tcode{ExecutionPolicy}, +- \tcode{T} meets the \oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) ++ \tcode{T} meets the \oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) + requirements. + \item + For all overloads, in the ranges \crange{first}{last} +diff --git a/source/concepts.tex b/source/concepts.tex +index 0bfd8612..b166e3a9 100644 +--- a/source/concepts.tex ++++ b/source/concepts.tex +@@ -495,7 +495,7 @@ template + template + concept @\deflibconcept{unsigned_integral}@ = @\libconcept{integral}@ && !@\libconcept{signed_integral}@; + template +- concept @\deflibconcept{floating_point}@ = @\libglobalref{is_floating_point_v}@; ++ concept @\deflibconcept{floating_point}@ = is_floating_point_v; + \end{itemdecl} + + \begin{itemdescr} +@@ -747,7 +747,7 @@ template + \begin{itemdescr} + \pnum + \begin{note} +-Unlike the \oldconcept{Destructible} requirements~(\tref{cpp17.destructible}), this ++Unlike the \oldconceptref{Destructible} requirements~(\tref{cpp17.destructible}), this + concept forbids destructors that are potentially throwing, even if a particular + invocation of the destructor does not actually throw. + \end{note} +diff --git a/source/diagnostics.tex b/source/diagnostics.tex +index b729a13d..be9f913a 100644 +--- a/source/diagnostics.tex ++++ b/source/diagnostics.tex +@@ -834,9 +834,9 @@ namespace std { + + // \ref{syserr}, system error support + template +- constexpr bool @\libglobal{is_error_code_enum_v}@ = is_error_code_enum::value; ++ constexpr bool @\libglobal{is_error_code_enum_v}@ = @\libglobalref{is_error_code_enum}@::value; + template +- constexpr bool is_error_condition_enum_v = is_error_condition_enum::value; ++ constexpr bool @\libglobal{is_error_condition_enum_v}@ = @\libglobalref{is_error_condition_enum}@::value; + } + \end{codeblock} + +@@ -847,9 +847,9 @@ Whether or not the \libheader{system_error} implementation + exposes the \libheader{cerrno} macros is unspecified. + + \pnum +-The \tcode{is_error_code_enum} and \tcode{is_error_condition_enum} templates may be ++The \libglobalref{is_error_code_enum} and \libglobalref{is_error_condition_enum} templates may be + specialized for program-defined types to indicate that such types are eligible +-for \tcode{class error_code} and \tcode{class error_condition} implicit ++for \tcode{class \libglobalref{error_code}} and \tcode{class \libglobalref{error_condition}} implicit + conversions, respectively. + + \rSec2[syserr.errcat]{Class \tcode{error_category}} +@@ -874,8 +874,6 @@ even for objects holding the same value. + \indexlibraryglobal{error_category}% + \indexlibraryctor{error_category}% + \indexlibrarydtor{error_category}% +-\indexlibraryglobal{generic_category}% +-\indexlibraryglobal{system_category}% + \begin{codeblock} + namespace std { + class error_category { +@@ -894,8 +892,8 @@ namespace std { + strong_ordering operator<=>(const error_category& rhs) const noexcept; + }; + +- const error_category& generic_category() noexcept; +- const error_category& system_category() noexcept; ++ const error_category& @\libglobal{generic_category}@() noexcept; ++ const error_category& @\libglobal{system_category}@() noexcept; + } + \end{codeblock} + +@@ -1166,7 +1164,7 @@ template + \begin{itemdescr} + \pnum + \constraints +-\tcode{is_error_code_enum_v} is \tcode{true}. ++\tcode{\libglobalref{is_error_code_enum_v}} is \tcode{true}. + + \pnum + \effects +@@ -1199,7 +1197,7 @@ template + \begin{itemdescr} + \pnum + \constraints +-\tcode{is_error_code_enum_v} is \tcode{true}. ++\tcode{\libglobalref{is_error_code_enum_v}} is \tcode{true}. + + \pnum + \effects +diff --git a/source/exec.tex b/source/exec.tex +index 921ec28c..a7168c10 100644 +--- a/source/exec.tex ++++ b/source/exec.tex +@@ -31,25 +31,25 @@ used in the execution control library. + \capsep + core & + provide core execution functionality, and connection between core components & +- e.g., \tcode{connect}, \tcode{start} \\ ++ e.g., \libglobalref{connect}, \libglobalref{start} \\ + completion functions & + called by senders to announce the completion of the work (success, error, or cancellation) & +- \tcode{set_value}, \tcode{set_error}, \tcode{set_stopped} \\ ++ \libglobalref{set_value}, \libglobalref{set_error}, \libglobalref{set_stopped} \\ + senders & + allow the specialization of the provided sender algorithms & + \begin{itemize} +- \item sender factories (e.g., \tcode{schedule}, \tcode{just}, \tcode{read_env}) +- \item sender adaptors (e.g., \tcode{continues_on}, \tcode{then}, \tcode{let_value}) +- \item sender consumers (e.g., \tcode{sync_wait}) ++ \item sender factories (e.g., \libglobalref{schedule}, \libglobalref{just}, \libglobalref{read_env}) ++ \item sender adaptors (e.g., \libglobalref{continues_on}, \libglobalref{then}, \libglobalref{let_value}) ++ \item sender consumers (e.g., \libglobalref{sync_wait}) + \end{itemize} + \\ + queries & + allow querying different properties of objects & + \begin{itemize} +- \item general queries (e.g., \tcode{get_allocator}, \tcode{get_stop_token}) +- \item environment queries (e.g., \tcode{get_scheduler}, \tcode{get_delegation_scheduler}) +- \item scheduler queries (e.g., \tcode{get_forward_progress_guarantee}) +- \item sender attribute queries (e.g., \tcode{get_completion_scheduler}) ++ \item general queries (e.g., \libglobalref{get_allocator}, \libglobalref{get_stop_token}) ++ \item environment queries (e.g., \tcode{get_scheduler}, \libglobalref{get_delegation_scheduler}) ++ \item scheduler queries (e.g., \libglobalref{get_forward_progress_guarantee}) ++ \item sender attribute queries (e.g., \libglobalref{get_completion_scheduler}) + \end{itemize} + \\ + \end{floattable} +diff --git a/source/future.tex b/source/future.tex +index f24457dc..ec7a2e71 100644 +--- a/source/future.tex ++++ b/source/future.tex +@@ -322,7 +322,7 @@ template struct is_pod; + + \pnum + \remarks +-\tcode{is_pod} is a \oldconcept{UnaryTypeTrait}\iref{meta.rqmts} ++\tcode{is_pod} is a \oldconceptref{UnaryTypeTrait}\iref{meta.rqmts} + with a base characteristic of \tcode{true_type} + if \tcode{T} is a POD type, + and \tcode{false_type} otherwise. +@@ -506,7 +506,7 @@ Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T} + If the expression \tcode{TS::value} is well-formed + when treated as an \deflink{unevaluated operand}{expr.context}, + then specializations of each of the two templates meet +-the \oldconcept{TransformationTrait} requirements with a base characteristic of ++the \oldconceptref{TransformationTrait} requirements with a base characteristic of + \tcode{integral_constant}. + Otherwise, they have no member \tcode{value}. + +@@ -534,7 +534,7 @@ template struct tuple_element; + Let \tcode{TE} denote \tcode{tuple_element_t} + of the cv-unqualified type \tcode{T}. + Then specializations of each of the two templates meet +-the \oldconcept{TransformationTrait} requirements ++the \oldconceptref{TransformationTrait} requirements + with a member typedef \tcode{type} that names the following type: + \begin{itemize} + \item for the first specialization, \tcode{add_volatile_t}, and +@@ -574,7 +574,7 @@ template struct variant_size; + Let \tcode{VS} denote \tcode{variant_size} + of the cv-unqualified type \tcode{T}. + Then specializations of each of the two templates meet +-the \oldconcept{UnaryTypeTrait} requirements ++the \oldconceptref{UnaryTypeTrait} requirements + with a base characteristic of \tcode{integral_constant}. + \end{itemdescr} + +@@ -588,7 +588,7 @@ template struct variant_alternative; + Let \tcode{VA} denote \tcode{variant_alternative} + of the cv-unqualified type \tcode{T}. + Then specializations of each of the two templates meet +-the \oldconcept{TransformationTrait} requirements ++the \oldconceptref{TransformationTrait} requirements + with a member typedef \tcode{type} that names the following type: + \begin{itemize} + \item for the first specialization, \tcode{add_volatile_t}, and +diff --git a/source/iostreams.tex b/source/iostreams.tex +index 855d3823..072fd94a 100644 +--- a/source/iostreams.tex ++++ b/source/iostreams.tex +@@ -1681,10 +1681,10 @@ An \tcode{fpos} type specifies file position information. + It holds a state object + whose type is equal to the template parameter \tcode{stateT}. + Type \tcode{stateT} shall meet +-the \oldconcept{DefaultConstructible} (\tref{cpp17.defaultconstructible}), +-\oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}), +-\oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}), and +-\oldconcept{Destructible} (\tref{cpp17.destructible}) requirements. ++the \oldconceptref{DefaultConstructible} (\tref{cpp17.defaultconstructible}), ++\oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}), ++\oldconceptref{CopyAssignable} (\tref{cpp17.copyassignable}), and ++\oldconceptref{Destructible} (\tref{cpp17.destructible}) requirements. + If \tcode{is_trivially_copy_constructible_v} is \tcode{true}, + then \tcode{fpos} has a trivial copy constructor. + If \tcode{is_trivially_copy_assignable_v} is \tcode{true}, +@@ -1692,11 +1692,11 @@ then \tcode{fpos} has a trivial copy assignment operator. + If \tcode{is_trivially_destructible_v} is \tcode{true}, + then \tcode{fpos} has a trivial destructor. + All specializations of \tcode{fpos} meet +-the \oldconcept{DefaultConstructible}, +-\oldconcept{CopyConstructible}, +-\oldconcept{CopyAssignable}, +-\oldconcept{Destructible}, +-and \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) requirements. ++the \oldconceptref{DefaultConstructible}, ++\oldconceptref{CopyConstructible}, ++\oldconceptref{CopyAssignable}, ++\oldconceptref{Destructible}, ++and \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) requirements. + In addition, the expressions shown in \tref{fpos.operations} + are valid and have the indicated semantics. + In that table, +@@ -12940,7 +12940,7 @@ namespace std { + + \pnum + \tcode{Allocator} shall meet +-the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. ++the \oldconceptref{Allocator} requirements\iref{allocator.requirements.general}. + + \pnum + \begin{example} +@@ -13233,7 +13233,7 @@ unless \tcode{EcharT} is one of the encoded character types. + + \pnum + Template parameters named \tcode{InputIterator} shall meet the +-\oldconcept{InputIterator} requirements\iref{input.iterators} and shall ++\oldconceptref{InputIterator} requirements\iref{input.iterators} and shall + have a value type that is one of the encoded character types. + + \pnum +@@ -13247,7 +13247,7 @@ they are not included as permitted types. + + \pnum + Template parameters named \tcode{Allocator} shall meet +-the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. ++the \oldconceptref{Allocator} requirements\iref{allocator.requirements.general}. + + \rSec2[fs.filesystem.syn]{Header \tcode{} synopsis} + +@@ -14060,7 +14060,7 @@ shall be one of: + \item \tcode{basic_string_view}. A function + argument \tcode{const Source\&} \tcode{source} shall have an + effective range \range{source.begin()}{source.end()}. +-\item A type meeting the \oldconcept{InputIterator} requirements that iterates over a NTCTS\@. ++\item A type meeting the \oldconceptref{InputIterator} requirements that iterates over a NTCTS\@. + The value type shall be an encoded character type. A function argument + \tcode{const Source\&} \tcode{source} shall have an effective range + \range{source}{end} where \tcode{end} is the first +@@ -16540,7 +16540,7 @@ namespace std::filesystem { + + \pnum + \tcode{directory_iterator} meets the +-\oldconcept{InputIterator} requirements\iref{input.iterators}. ++\oldconceptref{InputIterator} requirements\iref{input.iterators}. + + \pnum + If an iterator of type \tcode{directory_iterator} reports an error or +diff --git a/source/lib-intro.tex b/source/lib-intro.tex +index 7515eb42..84c8322c 100644 +--- a/source/lib-intro.tex ++++ b/source/lib-intro.tex +@@ -1770,7 +1770,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. + }\\ + \end{oldconcepttable} + +-\begin{oldconcepttable}{CopyConstructible}{ (in addition to \oldconcept{MoveConstructible})}{cpp17.copyconstructible} ++\begin{oldconcepttable}{CopyConstructible}{ (in addition to \oldconceptref{MoveConstructible})}{cpp17.copyconstructible} + {p{1in}p{4.15in}} + \topline + \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep +@@ -1797,7 +1797,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. + }\\ + \end{oldconcepttable} + +-\begin{oldconcepttable}{CopyAssignable}{ (in addition to \oldconcept{MoveAssignable})}{cpp17.copyassignable} ++\begin{oldconcepttable}{CopyAssignable}{ (in addition to \oldconceptref{MoveAssignable})}{cpp17.copyassignable} + {p{1in}p{1in}p{1in}p{1.9in}} + \topline + \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Return value} & \hdstyle{Post-condition} \\ \capsep +@@ -1811,7 +1811,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. + \tcode{u.\~T()} & All resources owned by \tcode{u} are reclaimed, no exception is propagated. \\ \rowsep + \multicolumn{2}{|l|}{ + \begin{tailnote} +- Array types and non-object types are not \oldconcept{Destructible}. ++ Array types and non-object types are not \oldconceptref{Destructible}. + \end{tailnote} + } \\ + \end{oldconcepttable} +@@ -1890,7 +1890,7 @@ void value_swap(T&& t, U&& u) { + // for rvalues and lvalues + } + +-// Preconditions: \tcode{T} meets the \oldconcept{Swappable} requirements. ++// Preconditions: \tcode{T} meets the \oldconceptref{Swappable} requirements. + template + void lv_swap(T& t1, T& t2) { + using std::swap; +@@ -1927,9 +1927,9 @@ int main() { + A \oldconcept{NullablePointer} type is a pointer-like type that supports null values. + A type \tcode{P} meets the \oldconcept{\-Nullable\-Pointer} requirements if + \begin{itemize} +-\item \tcode{P} meets the \oldconcept{EqualityComparable}, +-\oldconcept{DefaultConstructible}, \oldconcept{CopyConstructible}, \oldconcept{\-Copy\-Assign\-able}, +-\oldconcept{Swappable}, and \oldconcept{Destructible} requirements, ++\item \tcode{P} meets the \oldconceptref{EqualityComparable}, ++\oldconceptref{DefaultConstructible}, \oldconceptref{CopyConstructible}, \oldconcept{\-Copy\-Assign\-able}, ++\oldconceptref{Swappable}, and \oldconceptref{Destructible} requirements, + + \item the expressions shown in \tref{cpp17.nullablepointer} are + valid and have the indicated semantics, and +@@ -2005,8 +2005,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. + A type \tcode{H} meets the \defnoldconcept{Hash} requirements if + \begin{itemize} + \item it is a function object type\iref{function.objects}, +-\item it meets the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and +- \oldconcept{Destructible} (\tref{cpp17.destructible}) requirements, and ++\item it meets the \oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}) and ++ \oldconceptref{Destructible} (\tref{cpp17.destructible}) requirements, and + \item the expressions shown in \tref{cpp17.hash} + are valid and have the indicated semantics. + \end{itemize} +@@ -2690,7 +2690,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. + \tcode{true_type} only if an allocator of type \tcode{X} should be copied + when the client container is copy-assigned; + if so, \tcode{X} shall meet +-the \oldconcept{CopyAssignable} requirements (\tref{cpp17.copyassignable}) and ++the \oldconceptref{CopyAssignable} requirements (\tref{cpp17.copyassignable}) and + the copy operation shall not throw exceptions. + + \pnum +@@ -2712,7 +2712,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. + \tcode{true_type} only if an allocator of type \tcode{X} should be moved + when the client container is move-assigned; + if so, \tcode{X} shall meet +-the \oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}) and ++the \oldconceptref{MoveAssignable} requirements (\tref{cpp17.moveassignable}) and + the move operation shall not throw exceptions. + + \pnum +@@ -2734,7 +2734,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. + \tcode{true_type} only if an allocator of type \tcode{X} should be swapped + when the client container is swapped; + if so, +-\tcode{X} shall meet the \oldconcept{Swappable} requirements\iref{swappable.requirements} and ++\tcode{X} shall meet the \oldconceptref{Swappable} requirements\iref{swappable.requirements} and + the \tcode{swap} operation shall not throw exceptions. + + \pnum +@@ -2764,7 +2764,7 @@ Default: \tcode{is_empty::type} + + \pnum + An allocator type \tcode{X} shall meet the +-\oldconcept{CopyConstructible} requirements (\tref{cpp17.copyconstructible}). ++\oldconceptref{CopyConstructible} requirements (\tref{cpp17.copyconstructible}). + The \tcode{XX::pointer}, \tcode{XX::const_pointer}, \tcode{XX::void_pointer}, and + \tcode{XX::const_void_pointer} types shall meet the + \oldconcept{Nullable\-Pointer} requirements (\tref{cpp17.nullablepointer}). +@@ -2772,7 +2772,7 @@ No constructor, + comparison operator function, copy operation, move operation, or swap operation on + these pointer types shall exit via an exception. \tcode{XX::pointer} and \tcode{XX::const_pointer} shall also + meet the requirements for +-a \oldconcept{RandomAccessIterator}\iref{random.access.iterators} and ++a \oldconceptref{RandomAccessIterator}\iref{random.access.iterators} and + the additional requirement that, when \tcode{p} and \tcode{(p + n)} are + dereferenceable pointer values for some integral value \tcode{n}, + \begin{codeblock} +diff --git a/source/memory.tex b/source/memory.tex +index dc8df77d..0b36bff3 100644 +--- a/source/memory.tex ++++ b/source/memory.tex +@@ -977,7 +977,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type + disambiguate constructor and function overloading. Specifically, several types (see + \tcode{tuple}~\ref{tuple}) have constructors with \tcode{allocator_arg_t} as the first + argument, immediately followed by an argument of a type that meets the +-\oldconcept{Allocator} requirements\iref{allocator.requirements.general}. ++\oldconceptref{Allocator} requirements\iref{allocator.requirements.general}. + + \rSec2[allocator.uses]{\tcode{uses_allocator}} + +@@ -992,7 +992,7 @@ template struct uses_allocator; + \pnum + \remarks + Automatically detects whether \tcode{T} has a nested \tcode{allocator_type} that +-is convertible from \tcode{Alloc}. Meets the \oldconcept{BinaryTypeTrait} ++is convertible from \tcode{Alloc}. Meets the \oldconceptref{BinaryTypeTrait} + requirements\iref{meta.rqmts}. The implementation shall provide a definition that is + derived from \tcode{true_type} if the \grammarterm{qualified-id} \tcode{T::allocator_type} + is valid and denotes a type\iref{temp.deduct} and +@@ -1917,8 +1917,8 @@ deleter before such replacement is considered completed. + Each object of a type \tcode{U} instantiated from the \tcode{unique_ptr} template + specified in \ref{unique.ptr} has the strict ownership semantics, specified above, + of a unique pointer. In partial satisfaction of these semantics, each such \tcode{U} +-is \oldconcept{MoveConstructible} and \oldconcept{MoveAssignable}, but is not +-\oldconcept{CopyConstructible} nor \oldconcept{CopyAssignable}. ++is \oldconceptref{MoveConstructible} and \oldconceptref{MoveAssignable}, but is not ++\oldconceptref{CopyConstructible} nor \oldconceptref{CopyAssignable}. + The template parameter \tcode{T} of \tcode{unique_ptr} may be an incomplete type. + + \pnum +@@ -2097,7 +2097,7 @@ pointer as appropriate for that deleter. + + \pnum + If the deleter's type \tcode{D} is not a reference type, \tcode{D} shall meet +-the \oldconcept{Destructible} requirements (\tref{cpp17.destructible}). ++the \oldconceptref{Destructible} requirements (\tref{cpp17.destructible}). + + \pnum + If the \grammarterm{qualified-id} \tcode{remove_reference_t::pointer} is valid and denotes a +@@ -2105,7 +2105,7 @@ type\iref{temp.deduct}, then \tcode{unique_ptr::pointer} shall be a synonym for \tcode{remove_reference_t::pointer}. Otherwise + \tcode{unique_ptr::pointer} shall be a synonym for \tcode{element_type*}. The type \tcode{unique_ptr::pointer} shall +-meet the \oldconcept{NullablePointer} requirements (\tref{cpp17.nullablepointer}). ++meet the \oldconceptref{NullablePointer} requirements (\tref{cpp17.nullablepointer}). + + \pnum + \begin{example} +@@ -2131,7 +2131,7 @@ constexpr unique_ptr(nullptr_t) noexcept; + + \pnum + \expects +-\tcode{D} meets the \oldconcept{DefaultConstructible} requirements (\tref{cpp17.defaultconstructible}), ++\tcode{D} meets the \oldconceptref{DefaultConstructible} requirements (\tref{cpp17.defaultconstructible}), + and that construction does not throw an exception. + + \pnum +@@ -2158,7 +2158,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; + + \pnum + \expects +-\tcode{D} meets the \oldconcept{DefaultConstructible} requirements (\tref{cpp17.defaultconstructible}), ++\tcode{D} meets the \oldconceptref{DefaultConstructible} requirements (\tref{cpp17.defaultconstructible}), + and that construction does not throw an exception. + + \pnum +@@ -2187,10 +2187,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex + \pnum + \expects + For the first constructor, if \tcode{D} is not a reference type, +-\tcode{D} meets the \oldconcept{CopyConstructible} requirements and ++\tcode{D} meets the \oldconceptref{CopyConstructible} requirements and + such construction does not exit via an exception. + For the second constructor, if \tcode{D} is not a reference type, +-\tcode{D} meets the \oldconcept{MoveConstructible} requirements and ++\tcode{D} meets the \oldconceptref{MoveConstructible} requirements and + such construction does not exit via an exception. + + \pnum +@@ -2215,8 +2215,8 @@ the second constructor is defined as deleted. + \begin{example} + \begin{codeblock} + D d; +-unique_ptr p1(new int, D()); // \tcode{D} must be \oldconcept{MoveConstructible} +-unique_ptr p2(new int, d); // \tcode{D} must be \oldconcept{CopyConstructible} ++unique_ptr p1(new int, D()); // \tcode{D} must be \oldconceptref{MoveConstructible} ++unique_ptr p2(new int, d); // \tcode{D} must be \oldconceptref{CopyConstructible} + unique_ptr p3(new int, d); // \tcode{p3} holds a reference to \tcode{d} + unique_ptr p4(new int, D()); // error: rvalue deleter object combined + // with reference deleter type +@@ -2237,7 +2237,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; + \pnum + \expects + If \tcode{D} is not a reference type, +-\tcode{D} meets the \oldconcept{MoveConstructible} ++\tcode{D} meets the \oldconceptref{MoveConstructible} + requirements (\tref{cpp17.moveconstructible}). + Construction + of the deleter from an rvalue of type \tcode{D} does not +@@ -2346,10 +2346,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; + \pnum + \expects + If \tcode{D} is not a reference type, \tcode{D} meets the +-\oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}) and assignment ++\oldconceptref{MoveAssignable} requirements (\tref{cpp17.moveassignable}) and assignment + of the deleter from an rvalue of type \tcode{D} does not throw an exception. + Otherwise, \tcode{D} is a reference type; +-\tcode{remove_reference_t} meets the \oldconcept{CopyAssignable} ++\tcode{remove_reference_t} meets the \oldconceptref{CopyAssignable} + requirements and assignment of the deleter from an + lvalue of type \tcode{D} does not throw an exception. + +@@ -3243,8 +3243,8 @@ namespace std { + \end{codeblock} + + \pnum +-Specializations of \tcode{shared_ptr} shall be \oldconcept{CopyConstructible}, +-\oldconcept{CopyAssignable}, and \oldconcept{\-Less\-Than\-Comparable}, allowing their use in standard ++Specializations of \tcode{shared_ptr} shall be \oldconceptref{CopyConstructible}, ++\oldconceptref{CopyAssignable}, and \oldconceptref{LessThanComparable}, allowing their use in standard + containers. Specializations of \tcode{shared_ptr} shall be + contextually convertible to \tcode{bool}, + allowing their use in boolean expressions and declarations in conditions. +@@ -3389,7 +3389,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. + The expression \tcode{d(p)} + has well-defined behavior and does not throw exceptions. + \tcode{A} meets +-the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. ++the \oldconceptref{Allocator} requirements\iref{allocator.requirements.general}. + + \pnum + \effects +@@ -3906,7 +3906,7 @@ template + \pnum + \expects + \tcode{A} meets +-the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. ++the \oldconceptref{Allocator} requirements\iref{allocator.requirements.general}. + + \pnum + \effects +@@ -4560,8 +4560,8 @@ namespace std { + \end{codeblock} + + \pnum +-Specializations of \tcode{weak_ptr} shall be \oldconcept{CopyConstructible} and +-\oldconcept{CopyAssignable}, allowing their use in standard ++Specializations of \tcode{weak_ptr} shall be \oldconceptref{CopyConstructible} and ++\oldconceptref{CopyAssignable}, allowing their use in standard + containers. The template parameter \tcode{T} of \tcode{weak_ptr} may be an + incomplete type. + +@@ -5140,7 +5140,7 @@ namespace std { + \end{codeblock} + + \pnum +-\tcode{Pointer} shall meet the \oldconcept{NullablePointer} requirements. ++\tcode{Pointer} shall meet the \oldconceptref{NullablePointer} requirements. + If \tcode{Smart} is a specialization of \tcode{shared_ptr} and + \tcode{sizeof...(Args) == 0}, + the program is ill-formed. +@@ -5380,7 +5380,7 @@ namespace std { + \end{codeblock} + + \pnum +-\tcode{Pointer} shall meet the \oldconcept{NullablePointer} requirements. ++\tcode{Pointer} shall meet the \oldconceptref{NullablePointer} requirements. + If \tcode{Smart} is a specialization of \tcode{shared_ptr}, + the program is ill-formed. + \begin{note} +diff --git a/source/meta.tex b/source/meta.tex +index 15e641d3..efdc929b 100644 +--- a/source/meta.tex ++++ b/source/meta.tex +@@ -94,12 +94,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal + A \defnoldconcept{UnaryTypeTrait} describes a property + of a type. It shall be a class template that takes one template type + argument and, optionally, additional arguments that help define the +-property being described. It shall be \oldconcept{DefaultConstructible}, +-\oldconcept{CopyConstructible}, ++property being described. It shall be \oldconceptref{DefaultConstructible}, ++\oldconceptref{CopyConstructible}, + and publicly and unambiguously derived, directly or indirectly, from + its \defn{base characteristic}, which is + a specialization of the template +-\tcode{integral_constant}\iref{meta.help}, with ++\libglobalref{integral_constant}, with + the arguments to the template \tcode{integral_constant} determined by the + requirements for the particular property being described. + The member names of the base characteristic shall not be hidden and shall be +@@ -110,12 +110,12 @@ A \defnoldconcept{BinaryTypeTrait} describes a + relationship between two types. It shall be a class template that + takes two template type arguments and, optionally, additional + arguments that help define the relationship being described. It shall +-be \oldconcept{DefaultConstructible}, \oldconcept{CopyConstructible}, ++be \oldconceptref{DefaultConstructible}, \oldconceptref{CopyConstructible}, + and publicly and unambiguously derived, directly or + indirectly, from + its \term{base characteristic}, which is a specialization + of the template +-\tcode{integral_constant}\iref{meta.help}, with ++\libglobalref{integral_constant}, with + the arguments to the template \tcode{integral_constant} determined by the + requirements for the particular relationship being described. + The member names of the base characteristic shall not be hidden and shall be +@@ -283,17 +283,17 @@ namespace std { + template struct add_cv; + + template +- using @\libglobal{remove_const_t}@ = typename remove_const::type; ++ using @\libglobal{remove_const_t}@ = typename @\libglobalref{remove_const}@::type; + template +- using @\libglobal{remove_volatile_t}@ = typename remove_volatile::type; ++ using @\libglobal{remove_volatile_t}@ = typename @\libglobalref{remove_volatile}@::type; + template +- using @\libglobal{remove_cv_t}@ = typename remove_cv::type; ++ using @\libglobal{remove_cv_t}@ = typename @\libglobalref{remove_cv}@::type; + template +- using @\libglobal{add_const_t}@ = typename add_const::type; ++ using @\libglobal{add_const_t}@ = typename @\libglobalref{add_const}@::type; + template +- using @\libglobal{add_volatile_t}@ = typename add_volatile::type; ++ using @\libglobal{add_volatile_t}@ = typename @\libglobalref{add_volatile}@::type; + template +- using @\libglobal{add_cv_t}@ = typename add_cv::type; ++ using @\libglobal{add_cv_t}@ = typename @\libglobalref{add_cv}@::type; + + // \ref{meta.trans.ref}, reference modifications + template struct remove_reference; +@@ -301,38 +301,38 @@ namespace std { + template struct add_rvalue_reference; + + template +- using @\libglobal{remove_reference_t}@ = typename remove_reference::type; ++ using @\libglobal{remove_reference_t}@ = typename @\libglobalref{remove_reference}@::type; + template +- using @\libglobal{add_lvalue_reference_t}@ = typename add_lvalue_reference::type; ++ using @\libglobal{add_lvalue_reference_t}@ = typename @\libglobalref{add_lvalue_reference}@::type; + template +- using @\libglobal{add_rvalue_reference_t}@ = typename add_rvalue_reference::type; ++ using @\libglobal{add_rvalue_reference_t}@ = typename @\libglobalref{add_rvalue_reference}@::type; + + // \ref{meta.trans.sign}, sign modifications + template struct make_signed; + template struct make_unsigned; + + template +- using @\libglobal{make_signed_t}@ = typename make_signed::type; ++ using @\libglobal{make_signed_t}@ = typename @\libglobalref{make_signed}@::type; + template +- using @\libglobal{make_unsigned_t}@ = typename make_unsigned::type; ++ using @\libglobal{make_unsigned_t}@ = typename @\libglobalref{make_unsigned}@::type; + + // \ref{meta.trans.arr}, array modifications + template struct remove_extent; + template struct remove_all_extents; + + template +- using @\libglobal{remove_extent_t}@ = typename remove_extent::type; ++ using @\libglobal{remove_extent_t}@ = typename @\libglobalref{remove_extent}@::type; + template +- using @\libglobal{remove_all_extents_t}@ = typename remove_all_extents::type; ++ using @\libglobal{remove_all_extents_t}@ = typename @\libglobalref{remove_all_extents}@::type; + + // \ref{meta.trans.ptr}, pointer modifications + template struct remove_pointer; + template struct add_pointer; + + template +- using @\libglobal{remove_pointer_t}@ = typename remove_pointer::type; ++ using @\libglobal{remove_pointer_t}@ = typename @\libglobalref{remove_pointer}@::type; + template +- using @\libglobal{add_pointer_t}@ = typename add_pointer::type; ++ using @\libglobal{add_pointer_t}@ = typename @\libglobalref{add_pointer}@::type; + + // \ref{meta.trans.other}, other transformations + template struct type_identity; +@@ -350,27 +350,27 @@ namespace std { + template struct unwrap_ref_decay; + + template +- using @\libglobal{type_identity_t}@ = typename type_identity::type; ++ using @\libglobal{type_identity_t}@ = typename @\libglobalref{type_identity}@::type; + template +- using @\libglobal{remove_cvref_t}@ = typename remove_cvref::type; ++ using @\libglobal{remove_cvref_t}@ = typename @\libglobalref{remove_cvref}@::type; + template +- using @\libglobal{decay_t}@ = typename decay::type; ++ using @\libglobal{decay_t}@ = typename @\libglobalref{decay}@::type; + template +- using @\libglobal{enable_if_t}@ = typename enable_if::type; ++ using @\libglobal{enable_if_t}@ = typename @\libglobalref{enable_if}@::type; + template +- using @\libglobal{conditional_t}@ = typename conditional::type; ++ using @\libglobal{conditional_t}@ = typename @\libglobalref{conditional}@::type; + template +- using @\libglobal{common_type_t}@ = typename common_type::type; ++ using @\libglobal{common_type_t}@ = typename @\libglobalref{common_type}@::type; + template +- using @\libglobal{common_reference_t}@ = typename common_reference::type; ++ using @\libglobal{common_reference_t}@ = typename @\libglobalref{common_reference}@::type; + template +- using @\libglobal{underlying_type_t}@ = typename underlying_type::type; ++ using @\libglobal{underlying_type_t}@ = typename @\libglobalref{underlying_type}@::type; + template +- using @\libglobal{invoke_result_t}@ = typename invoke_result::type; ++ using @\libglobal{invoke_result_t}@ = typename @\libglobalref{invoke_result}@::type; + template +- using unwrap_reference_t = typename unwrap_reference::type; ++ using @\libglobal{unwrap_reference_t}@ = typename @\libglobalref{unwrap_reference}@::type; + template +- using unwrap_ref_decay_t = typename unwrap_ref_decay::type; ++ using @\libglobal{unwrap_ref_decay_t}@ = typename @\libglobalref{unwrap_ref_decay}@::type; + template + using @\libglobal{void_t}@ = void; + +@@ -381,202 +381,202 @@ namespace std { + + // \ref{meta.unary.cat}, primary type categories + template +- constexpr bool @\libglobal{is_void_v}@ = is_void::value; ++ constexpr bool @\libglobal{is_void_v}@ = @\libglobalref{is_void}@::value; + template +- constexpr bool @\libglobal{is_null_pointer_v}@ = is_null_pointer::value; ++ constexpr bool @\libglobal{is_null_pointer_v}@ = @\libglobalref{is_null_pointer}@::value; + template +- constexpr bool @\libglobal{is_integral_v}@ = is_integral::value; ++ constexpr bool @\libglobal{is_integral_v}@ = @\libglobalref{is_integral}@::value; + template +- constexpr bool @\libglobal{is_floating_point_v}@ = is_floating_point::value; ++ constexpr bool @\libglobal{is_floating_point_v}@ = @\libglobalref{is_floating_point}@::value; + template +- constexpr bool @\libglobal{is_array_v}@ = is_array::value; ++ constexpr bool @\libglobal{is_array_v}@ = @\libglobalref{is_array}@::value; + template +- constexpr bool @\libglobal{is_pointer_v}@ = is_pointer::value; ++ constexpr bool @\libglobal{is_pointer_v}@ = @\libglobalref{is_pointer}@::value; + template +- constexpr bool @\libglobal{is_lvalue_reference_v}@ = is_lvalue_reference::value; ++ constexpr bool @\libglobal{is_lvalue_reference_v}@ = @\libglobalref{is_lvalue_reference}@::value; + template +- constexpr bool @\libglobal{is_rvalue_reference_v}@ = is_rvalue_reference::value; ++ constexpr bool @\libglobal{is_rvalue_reference_v}@ = @\libglobalref{is_rvalue_reference}@::value; + template +- constexpr bool @\libglobal{is_member_object_pointer_v}@ = is_member_object_pointer::value; ++ constexpr bool @\libglobal{is_member_object_pointer_v}@ = @\libglobalref{is_member_object_pointer}@::value; + template +- constexpr bool @\libglobal{is_member_function_pointer_v}@ = is_member_function_pointer::value; ++ constexpr bool @\libglobal{is_member_function_pointer_v}@ = @\libglobalref{is_member_function_pointer}@::value; + template +- constexpr bool @\libglobal{is_enum_v}@ = is_enum::value; ++ constexpr bool @\libglobal{is_enum_v}@ = @\libglobalref{is_enum}@::value; + template +- constexpr bool @\libglobal{is_union_v}@ = is_union::value; ++ constexpr bool @\libglobal{is_union_v}@ = @\libglobalref{is_union}@::value; + template +- constexpr bool @\libglobal{is_class_v}@ = is_class::value; ++ constexpr bool @\libglobal{is_class_v}@ = @\libglobalref{is_class}@::value; + template +- constexpr bool @\libglobal{is_function_v}@ = is_function::value; ++ constexpr bool @\libglobal{is_function_v}@ = @\libglobalref{is_function}@::value; + + // \ref{meta.unary.comp}, composite type categories + template +- constexpr bool @\libglobal{is_reference_v}@ = is_reference::value; ++ constexpr bool @\libglobal{is_reference_v}@ = @\libglobalref{is_reference}@::value; + template +- constexpr bool @\libglobal{is_arithmetic_v}@ = is_arithmetic::value; ++ constexpr bool @\libglobal{is_arithmetic_v}@ = @\libglobalref{is_arithmetic}@::value; + template +- constexpr bool @\libglobal{is_fundamental_v}@ = is_fundamental::value; ++ constexpr bool @\libglobal{is_fundamental_v}@ = @\libglobalref{is_fundamental}@::value; + template +- constexpr bool @\libglobal{is_object_v}@ = is_object::value; ++ constexpr bool @\libglobal{is_object_v}@ = @\libglobalref{is_object}@::value; + template +- constexpr bool @\libglobal{is_scalar_v}@ = is_scalar::value; ++ constexpr bool @\libglobal{is_scalar_v}@ = @\libglobalref{is_scalar}@::value; + template +- constexpr bool @\libglobal{is_compound_v}@ = is_compound::value; ++ constexpr bool @\libglobal{is_compound_v}@ = @\libglobalref{is_compound}@::value; + template +- constexpr bool @\libglobal{is_member_pointer_v}@ = is_member_pointer::value; ++ constexpr bool @\libglobal{is_member_pointer_v}@ = @\libglobalref{is_member_pointer}@::value; + + // \ref{meta.unary.prop}, type properties + template +- constexpr bool @\libglobal{is_const_v}@ = is_const::value; ++ constexpr bool @\libglobal{is_const_v}@ = @\libglobalref{is_const}@::value; + template +- constexpr bool @\libglobal{is_volatile_v}@ = is_volatile::value; ++ constexpr bool @\libglobal{is_volatile_v}@ = @\libglobalref{is_volatile}@::value; + template +- constexpr bool @\libglobal{is_trivial_v}@ = is_trivial::value; ++ constexpr bool @\libglobal{is_trivial_v}@ = @\libglobalref{is_trivial}@::value; + template +- constexpr bool @\libglobal{is_trivially_copyable_v}@ = is_trivially_copyable::value; ++ constexpr bool @\libglobal{is_trivially_copyable_v}@ = @\libglobalref{is_trivially_copyable}@::value; + template +- constexpr bool @\libglobal{is_standard_layout_v}@ = is_standard_layout::value; ++ constexpr bool @\libglobal{is_standard_layout_v}@ = @\libglobalref{is_standard_layout}@::value; + template + constexpr bool @\libglobal{is_empty_v}@ = is_empty::value; + template +- constexpr bool @\libglobal{is_polymorphic_v}@ = is_polymorphic::value; ++ constexpr bool @\libglobal{is_polymorphic_v}@ = @\libglobalref{is_polymorphic}@::value; + template +- constexpr bool @\libglobal{is_abstract_v}@ = is_abstract::value; ++ constexpr bool @\libglobal{is_abstract_v}@ = @\libglobalref{is_abstract}@::value; + template +- constexpr bool @\libglobal{is_final_v}@ = is_final::value; ++ constexpr bool @\libglobal{is_final_v}@ = @\libglobalref{is_final}@::value; + template +- constexpr bool @\libglobal{is_aggregate_v}@ = is_aggregate::value; ++ constexpr bool @\libglobal{is_aggregate_v}@ = @\libglobalref{is_aggregate}@::value; + template + constexpr bool @\libglobal{is_signed_v}@ = is_signed::value; + template +- constexpr bool @\libglobal{is_unsigned_v}@ = is_unsigned::value; ++ constexpr bool @\libglobal{is_unsigned_v}@ = @\libglobalref{is_unsigned}@::value; + template +- constexpr bool @\libglobal{is_bounded_array_v}@ = is_bounded_array::value; ++ constexpr bool @\libglobal{is_bounded_array_v}@ = @\libglobalref{is_bounded_array}@::value; + template +- constexpr bool @\libglobal{is_unbounded_array_v}@ = is_unbounded_array::value; ++ constexpr bool @\libglobal{is_unbounded_array_v}@ = @\libglobalref{is_unbounded_array}@::value; + template +- constexpr bool @\libglobal{is_scoped_enum_v}@ = is_scoped_enum::value; ++ constexpr bool @\libglobal{is_scoped_enum_v}@ = @\libglobalref{is_scoped_enum}@::value; + template +- constexpr bool @\libglobal{is_constructible_v}@ = is_constructible::value; ++ constexpr bool @\libglobal{is_constructible_v}@ = @\libglobalref{is_constructible}@::value; + template +- constexpr bool @\libglobal{is_default_constructible_v}@ = is_default_constructible::value; ++ constexpr bool @\libglobal{is_default_constructible_v}@ = @\libglobalref{is_default_constructible}@::value; + template +- constexpr bool @\libglobal{is_copy_constructible_v}@ = is_copy_constructible::value; ++ constexpr bool @\libglobal{is_copy_constructible_v}@ = @\libglobalref{is_copy_constructible}@::value; + template +- constexpr bool @\libglobal{is_move_constructible_v}@ = is_move_constructible::value; ++ constexpr bool @\libglobal{is_move_constructible_v}@ = @\libglobalref{is_move_constructible}@::value; + template +- constexpr bool @\libglobal{is_assignable_v}@ = is_assignable::value; ++ constexpr bool @\libglobal{is_assignable_v}@ = @\libglobalref{is_assignable}@::value; + template +- constexpr bool @\libglobal{is_copy_assignable_v}@ = is_copy_assignable::value; ++ constexpr bool @\libglobal{is_copy_assignable_v}@ = @\libglobalref{is_copy_assignable}@::value; + template +- constexpr bool @\libglobal{is_move_assignable_v}@ = is_move_assignable::value; ++ constexpr bool @\libglobal{is_move_assignable_v}@ = @\libglobalref{is_move_assignable}@::value; + template +- constexpr bool @\libglobal{is_swappable_with_v}@ = is_swappable_with::value; ++ constexpr bool @\libglobal{is_swappable_with_v}@ = @\libglobalref{is_swappable_with}@::value; + template +- constexpr bool @\libglobal{is_swappable_v}@ = is_swappable::value; ++ constexpr bool @\libglobal{is_swappable_v}@ = @\libglobalref{is_swappable}@::value; + template +- constexpr bool @\libglobal{is_destructible_v}@ = is_destructible::value; ++ constexpr bool @\libglobal{is_destructible_v}@ = @\libglobalref{is_destructible}@::value; + template +- constexpr bool is_trivially_constructible_v +- = is_trivially_constructible::value; ++ constexpr @\libglobal{bool is_trivially_constructible_v}@ ++ = @\libglobalref{is_trivially_constructible}@::value; + template +- constexpr bool is_trivially_default_constructible_v +- = is_trivially_default_constructible::value; ++ constexpr bool @\libglobal{is_trivially_default_constructible_v}@ ++ = @\libglobalref{is_trivially_default_constructible}@::value; + template +- constexpr bool is_trivially_copy_constructible_v +- = is_trivially_copy_constructible::value; ++ constexpr bool @\libglobal{is_trivially_copy_constructible_v}@ ++ = @\libglobalref{is_trivially_copy_constructible}@::value; + template +- constexpr bool is_trivially_move_constructible_v +- = is_trivially_move_constructible::value; ++ constexpr bool @\libglobal{is_trivially_move_constructible_v}@ ++ = @\libglobalref{is_trivially_move_constructible}@::value; + template +- constexpr bool @\libglobal{is_trivially_assignable_v}@ = is_trivially_assignable::value; ++ constexpr bool @\libglobal{is_trivially_assignable_v}@ = @\libglobalref{is_trivially_assignable}@::value; + template +- constexpr bool is_trivially_copy_assignable_v +- = is_trivially_copy_assignable::value; ++ constexpr bool @\libglobal{is_trivially_copy_assignable_v}@ ++ = @\libglobalref{is_trivially_copy_assignable}@::value; + template +- constexpr bool is_trivially_move_assignable_v +- = is_trivially_move_assignable::value; ++ constexpr bool @\libglobal{is_trivially_move_assignable_v}@ ++ = @\libglobalref{is_trivially_move_assignable}@::value; + template +- constexpr bool @\libglobal{is_trivially_destructible_v}@ = is_trivially_destructible::value; ++ constexpr bool @\libglobal{is_trivially_destructible_v}@ = @\libglobalref{is_trivially_destructible}@::value; + template +- constexpr bool is_nothrow_constructible_v +- = is_nothrow_constructible::value; ++ constexpr bool @\libglobal{is_nothrow_constructible_v}@ ++ = @\libglobalref{is_nothrow_constructible}@::value; + template +- constexpr bool is_nothrow_default_constructible_v +- = is_nothrow_default_constructible::value; ++ constexpr bool @\libglobal{is_nothrow_default_constructible_v}@ ++ = @\libglobalref{is_nothrow_default_constructible}@::value; + template +- constexpr bool is_nothrow_copy_constructible_v +- = is_nothrow_copy_constructible::value; ++ constexpr bool @\libglobal{is_nothrow_copy_constructible_v}@ ++ = @\libglobalref{is_nothrow_copy_constructible}@::value; + template +- constexpr bool is_nothrow_move_constructible_v +- = is_nothrow_move_constructible::value; ++ constexpr bool @\libglobal{is_nothrow_move_constructible_v}@ ++ = @\libglobalref{is_nothrow_move_constructible}@::value; + template +- constexpr bool @\libglobal{is_nothrow_assignable_v}@ = is_nothrow_assignable::value; ++ constexpr bool @\libglobal{is_nothrow_assignable_v}@ = @\libglobalref{is_nothrow_assignable}@::value; + template +- constexpr bool @\libglobal{is_nothrow_copy_assignable_v}@ = is_nothrow_copy_assignable::value; ++ constexpr bool @\libglobal{is_nothrow_copy_assignable_v}@ = @\libglobalref{is_nothrow_copy_assignable}@::value; + template +- constexpr bool @\libglobal{is_nothrow_move_assignable_v}@ = is_nothrow_move_assignable::value; ++ constexpr bool @\libglobal{is_nothrow_move_assignable_v}@ = @\libglobalref{is_nothrow_move_assignable}@::value; + template +- constexpr bool @\libglobal{is_nothrow_swappable_with_v}@ = is_nothrow_swappable_with::value; ++ constexpr bool @\libglobal{is_nothrow_swappable_with_v}@ = @\libglobalref{is_nothrow_swappable_with}@::value; + template +- constexpr bool @\libglobal{is_nothrow_swappable_v}@ = is_nothrow_swappable::value; ++ constexpr bool @\libglobal{is_nothrow_swappable_v}@ = @\libglobalref{is_nothrow_swappable}@::value; + template +- constexpr bool @\libglobal{is_nothrow_destructible_v}@ = is_nothrow_destructible::value; ++ constexpr bool @\libglobal{is_nothrow_destructible_v}@ = @\libglobalref{is_nothrow_destructible}@::value; + template +- constexpr bool @\libglobal{is_implicit_lifetime_v}@ = is_implicit_lifetime::value; ++ constexpr bool @\libglobal{is_implicit_lifetime_v}@ = @\libglobalref{is_implicit_lifetime}@::value; + template +- constexpr bool @\libglobal{has_virtual_destructor_v}@ = has_virtual_destructor::value; ++ constexpr bool @\libglobal{has_virtual_destructor_v}@ = @\libglobalref{has_virtual_destructor}@::value; + template +- constexpr bool has_unique_object_representations_v +- = has_unique_object_representations::value; ++ constexpr bool @\libglobal{has_unique_object_representations_v}@ ++ = @\libglobalref{has_unique_object_representations}@::value; + template + constexpr bool @\libglobal{reference_constructs_from_temporary_v}@ +- = reference_constructs_from_temporary::value; ++ = @\libglobalref{reference_constructs_from_temporary}@::value; + template + constexpr bool @\libglobal{reference_converts_from_temporary_v}@ +- = reference_converts_from_temporary::value; ++ = @\libglobalref{reference_converts_from_temporary}@::value; + + // \ref{meta.unary.prop.query}, type property queries + template +- constexpr size_t @\libglobal{alignment_of_v}@ = alignment_of::value; ++ constexpr size_t @\libglobal{alignment_of_v}@ = @\libglobalref{alignment_of}@::value; + template +- constexpr size_t @\libglobal{rank_v}@ = rank::value; ++ constexpr size_t @\libglobal{rank_v}@ = @\libglobalref{rank}@::value; + template +- constexpr size_t @\libglobal{extent_v}@ = extent::value; ++ constexpr size_t @\libglobal{extent_v}@ = @\libglobalref{extent}@::value; + + // \ref{meta.rel}, type relations + template +- constexpr bool @\libglobal{is_same_v}@ = is_same::value; ++ constexpr bool @\libglobal{is_same_v}@ = @\libglobalref{is_same}@::value; + template +- constexpr bool @\libglobal{is_base_of_v}@ = is_base_of::value; ++ constexpr bool @\libglobal{is_base_of_v}@ = @\libglobalref{is_base_of}@::value; + template +- constexpr bool @\libglobal{is_virtual_base_of_v}@ = is_virtual_base_of::value; ++ constexpr bool @\libglobal{is_virtual_base_of_v}@ = @\libglobalref{is_virtual_base_of}@::value; + template +- constexpr bool @\libglobal{is_convertible_v}@ = is_convertible::value; ++ constexpr bool @\libglobal{is_convertible_v}@ = @\libglobalref{is_convertible}@::value; + template +- constexpr bool @\libglobal{is_nothrow_convertible_v}@ = is_nothrow_convertible::value; ++ constexpr bool @\libglobal{is_nothrow_convertible_v}@ = @\libglobalref{is_nothrow_convertible}@::value; + template +- constexpr bool @\libglobal{is_layout_compatible_v}@ = is_layout_compatible::value; ++ constexpr bool @\libglobal{is_layout_compatible_v}@ = @\libglobalref{is_layout_compatible}@::value; + template +- constexpr bool is_pointer_interconvertible_base_of_v +- = is_pointer_interconvertible_base_of::value; ++ constexpr bool @\libglobal{is_pointer_interconvertible_base_of_v}@ ++ = @\libglobalref{is_pointer_interconvertible_base_of}@::value; + template +- constexpr bool @\libglobal{is_invocable_v}@ = is_invocable::value; ++ constexpr bool @\libglobal{is_invocable_v}@ = @\libglobalref{is_invocable}@::value; + template +- constexpr bool @\libglobal{is_invocable_r_v}@ = is_invocable_r::value; ++ constexpr bool @\libglobal{is_invocable_r_v}@ = @\libglobalref{is_invocable_r}@::value; + template +- constexpr bool @\libglobal{is_nothrow_invocable_v}@ = is_nothrow_invocable::value; ++ constexpr bool @\libglobal{is_nothrow_invocable_v}@ = @\libglobalref{is_nothrow_invocable}@::value; + template + constexpr bool is_nothrow_invocable_r_v +- = is_nothrow_invocable_r::value; ++ = @\libglobalref{is_nothrow_invocable_r}@::value; + + // \ref{meta.logical}, logical operator traits + template +- constexpr bool @\libglobal{conjunction_v}@ = conjunction::value; ++ constexpr bool @\libglobal{conjunction_v}@ = @\libglobalref{conjunction}@::value; + template +- constexpr bool @\libglobal{disjunction_v}@ = disjunction::value; ++ constexpr bool @\libglobal{disjunction_v}@ = @\libglobalref{disjunction}@::value; + template +- constexpr bool @\libglobal{negation_v}@ = negation::value; ++ constexpr bool @\libglobal{negation_v}@ = @\libglobalref{negation}@::value; + + // \ref{meta.member}, member relationships + template +@@ -628,7 +628,7 @@ properties of a type at compile time. + + \pnum + Each of these templates shall be a +-\oldconcept{UnaryTypeTrait}\iref{meta.rqmts} ++\oldconceptref{UnaryTypeTrait} + with a base characteristic of + \tcode{true_type} if the corresponding condition is \tcode{true}, otherwise + \tcode{false_type}. +@@ -658,17 +658,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. + \topline + \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep + \endhead +-\indexlibraryglobal{is_void}% + \tcode{template}\br +- \tcode{struct is_void;} & ++ \tcode{struct \libglobal{is_void};} & + \tcode{T} is \keyword{void} & \\ \rowsep +-\indexlibraryglobal{is_null_pointer}% + \tcode{template}\br +- \tcode{struct is_null_pointer;} & ++ \tcode{struct \libglobal{is_null_pointer};} & + \tcode{T} is \tcode{nullptr_t}\iref{basic.fundamental} & \\ \rowsep +-\indexlibraryglobal{is_integral}% + \tcode{template}\br +- \tcode{struct is_integral;} & ++ \tcode{struct \libglobal{is_integral};} & + \tcode{T} is an integral type\iref{basic.fundamental} & \\ \rowsep + \indexlibraryglobal{is_floating_point}% + \tcode{template}\br +@@ -874,9 +871,8 @@ the cv-qualification is subject to adjustment\iref{expr.type}. + \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 + +-\indexlibraryglobal{is_final}% + \tcode{template}\br +- \tcode{struct is_final;} & ++ \tcode{struct \libglobal{is_final};} & + \tcode{T} is a class type marked with the \grammarterm{class-virt-specifier} + \tcode{final}\iref{class.pre}. + \begin{tailnote} +@@ -886,9 +882,8 @@ A union is a class type that + & + If \tcode{T} is a class type, \tcode{T} shall be a complete type. \\ \rowsep + +-\indexlibraryglobal{is_aggregate}% + \tcode{template}\br +- \tcode{struct is_aggregate;} & ++ \tcode{struct \libglobal{is_aggregate};} & + \tcode{T} is an aggregate type\iref{dcl.init.aggr} & + \tcode{T} shall be an array type, a complete type, or \cv~\keyword{void}. \\ \rowsep + +@@ -899,16 +894,14 @@ A union is a class type that + \tcode{T(-1) < T(0)}; + otherwise, \tcode{false} & \\ \rowsep + +-\indexlibraryglobal{is_unsigned}% + \tcode{template}\br +- \tcode{struct is_unsigned;} & ++ \tcode{struct \libglobal{is_unsigned};} & + If \tcode{is_arithmetic_v} is \tcode{true}, the same result as + \tcode{T(0) < T(-1)}; + otherwise, \tcode{false} & \\ \rowsep + +-\indexlibraryglobal{is_bounded_array}% + \tcode{template}\br +- \tcode{struct is_bounded_array;} & ++ \tcode{struct \libglobal{is_bounded_array};} & + \tcode{T} is an array type of known bound\iref{dcl.array} + & \\ \rowsep + +@@ -1402,7 +1395,7 @@ may be used to query properties of types at compile time. + \end{libreqtab2a} + + \pnum +-Each of these templates shall be a \oldconcept{UnaryTypeTrait}\iref{meta.rqmts} with a ++Each of these templates shall be a \oldconceptref{UnaryTypeTrait}\iref{meta.rqmts} with a + base characteristic of \tcode{integral_constant}. + + \pnum +@@ -1438,7 +1431,7 @@ may be used to query relationships between types at compile time. + + \pnum + Each of these templates shall be a +-\oldconcept{BinaryTypeTrait}\iref{meta.rqmts} ++\oldconceptref{BinaryTypeTrait}\iref{meta.rqmts} + with a base characteristic of + \tcode{true_type} if the corresponding condition is true, otherwise + \tcode{false_type}. +@@ -1452,7 +1445,7 @@ with a base characteristic of + \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep + \endhead + \tcode{template}\br +- \tcode{struct is_same;} & ++ \tcode{struct \libglobal{is_same};} & + \tcode{T} and \tcode{U} name the same type with the same cv-qualifications & \\ \rowsep + + \indexlibraryglobal{is_base_of}% +@@ -1632,7 +1625,7 @@ type to another following some predefined rule. + + \pnum + Each of the templates in \ref{meta.trans} shall be a +-\oldconcept{TransformationTrait}\iref{meta.rqmts}. ++\oldconceptref{TransformationTrait}\iref{meta.rqmts}. + + \rSec3[meta.trans.cv]{Const-volatile modifications} + +@@ -1913,16 +1906,16 @@ perform other modifications of a type. + \tcode{template\br struct \libglobal{remove_cvref};} + & + The member typedef \tcode{type} denotes +- \tcode{remove_cv_t>}. ++ \tcode{\libglobalref{remove_cv_t}<\libglobalref{remove_reference_t}>}. + \\ \rowsep + + \tcode{template\br struct \libglobal{decay};} + & +- Let \tcode{U} be \tcode{remove_reference_t}. If \tcode{is_array_v} is ++ Let \tcode{U} be \tcode{\libglobalref{remove_reference_t}}. If \tcode{\libglobalref{is_array_v}} is + \tcode{true}, the member typedef \tcode{type} denotes +- \tcode{remove_extent_t*}. If \tcode{is_function_v} is \tcode{true}, +- the member typedef \tcode{type} denotes \tcode{add_pointer_t}. Otherwise +- the member typedef \tcode{type} denotes \tcode{remove_cv_t}. ++ \tcode{\libglobalref{remove_extent_t}*}. If \tcode{\libglobalref{is_function_v}} is \tcode{true}, ++ the member typedef \tcode{type} denotes \tcode{\libglobalref{add_pointer_t}}. Otherwise ++ the member typedef \tcode{type} denotes \tcode{\libglobalref{remove_cv_t}}. + \begin{tailnote} + This behavior is similar to the lvalue-to-rvalue\iref{conv.lval}, + array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} +@@ -2002,7 +1995,7 @@ argument passing. + \tcode{template} \tcode{struct \libglobal{unwrap_reference};} + & + If \tcode{T} is +- a specialization \tcode{reference_wrapper} for some type \tcode{X}, ++ a specialization \tcode{\libglobalref{reference_wrapper}} for some type \tcode{X}, + the member typedef \tcode{type} of \tcode{unwrap_reference} + denotes \tcode{X\&}, + otherwise \tcode{type} denotes \tcode{T}. \\ \rowsep +@@ -2010,7 +2003,7 @@ argument passing. + \tcode{template} \tcode{\libglobal{unwrap_ref_decay};} + & + The member typedef \tcode{type} of \tcode{unwrap_ref_decay} +- denotes the type \tcode{unwrap_reference_t>}.\\ ++ denotes the type \tcode{\libglobalref{unwrap_reference_t}<\libglobalref{decay_t}>}.\\ + \end{libreqtab2a} + + \pnum +@@ -2028,7 +2021,7 @@ when the header \tcode{}\iref{functional.syn} is included. + Let: + \begin{itemize} + \item \tcode{\placeholdernc{CREF}(A)} be +- \tcode{add_lvalue_reference_t{}>}, ++ \tcode{\libglobalref{add_lvalue_reference_t}{}>}, + \item \tcode{\placeholdernc{XREF}(A)} denote a unary alias template \tcode{T} + such that \tcode{T} denotes the same type as \tcode{U} with the addition + of \tcode{A}'s cv and reference qualifiers, for a non-reference cv-unqualified +@@ -2053,15 +2046,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: + \placeholdernc{COPYCV}(\brk{}Y, X) \&)} if that type exists + and is a reference type. + \item Otherwise, let \tcode{C} be +- \tcode{remove_reference_t<\placeholdernc{COMMON-REF}(X\&, Y\&)>\&\&}. ++ \tcode{\libglobalref{remove_reference_t}<\placeholdernc{COMMON-REF}(X\&, Y\&)>\&\&}. + If \tcode{A} and \tcode{B} are both rvalue reference types, + \tcode{C} is well-formed, and +- \tcode{is_convertible_v \&\& is_convertible_v} is \tcode{true}, ++ \tcode{\libglobalref{is_convertible_v} \&\& \libglobalref{is_convertible_v}} is \tcode{true}, + then \tcode{\placeholdernc{COMMON-REF}(A, B)} is \tcode{C}. + \item Otherwise, let \tcode{D} be + \tcode{\placeholdernc{COMMON-REF}(const X\&, Y\&)}. If \tcode{A} is an rvalue + reference and \tcode{B} is an lvalue reference and \tcode{D} is +- well-formed and \tcode{is_convertible_v} is ++ well-formed and \tcode{\libglobalref{is_convertible_v}} is + \tcode{true}, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is \tcode{D}. + \item Otherwise, if \tcode{A} is an lvalue reference and \tcode{B} + is an rvalue reference, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is +@@ -2360,7 +2353,7 @@ template struct negation : @\seebelow@ { }; + The class template \tcode{negation} + forms the logical negation of its template type argument. + The type \tcode{negation} +-is a \oldconcept{UnaryTypeTrait} with a base characteristic of \tcode{bool_constant}. ++is a \oldconceptref{UnaryTypeTrait} with a base characteristic of \tcode{bool_constant}. + \end{itemdescr} + + \rSec2[meta.member]{Member relationships} +diff --git a/source/numerics.tex b/source/numerics.tex +index 5d9a47f9..8e4ab352 100644 +--- a/source/numerics.tex ++++ b/source/numerics.tex +@@ -40,10 +40,10 @@ components are parameterized by the type of information they contain and manipul + A \Cpp{} program shall instantiate these components only with a numeric type. + A \defnadj{numeric}{type} is a cv-unqualified object type \tcode{T} + that meets the +-\oldconcept{DefaultConstructible}, +-\oldconcept{CopyConstructible}, +-\oldconcept{CopyAssignable}, and +-\oldconcept{Destructible} ++\oldconceptref{DefaultConstructible}, ++\oldconceptref{CopyConstructible}, ++\oldconceptref{CopyAssignable}, and ++\oldconceptref{Destructible} + requirements\iref{utility.arg.requirements}. + \begin{footnote} + In other words, value types. +@@ -2075,8 +2075,8 @@ according to \ref{strings} and \ref{input.output}. + + \pnum + \tcode{E} shall meet the +-\oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) +-and \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. ++\oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}) ++and \oldconceptref{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. + These operations shall each be of complexity + no worse than \bigoh{\text{size of state}}. + +@@ -2446,8 +2446,8 @@ according to \ref{strings} and \ref{input.output}. + + \pnum + \tcode{D} shall meet the +-\oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) +-and \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. ++\oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}) ++and \oldconceptref{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. + + \pnum + The sequence of numbers +@@ -2478,10 +2478,10 @@ for convenience of exposition only. + + \pnum + \tcode{P} shall meet the +-\oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}), +-\oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}), ++\oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}), ++\oldconceptref{CopyAssignable} (\tref{cpp17.copyassignable}), + and +-\oldconcept{Equality\-Comp\-arable} (\tref{cpp17.equalitycomparable}) requirements. ++\oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) requirements. + + \pnum + For each of the constructors of \tcode{D} +@@ -4157,7 +4157,7 @@ template + \pnum + \expects + \tcode{InputIterator} meets the +- \oldconcept{InputIterator} requirements\iref{input.iterators}. ++ \oldconceptref{InputIterator} requirements\iref{input.iterators}. + + \pnum + \effects +@@ -4184,7 +4184,7 @@ template + \pnum + \expects + \tcode{RandomAccessIterator} meets the +- \oldconcept{RandomAccessIterator} requirements\iref{random.access.iterators} ++ \oldconceptref{RandomAccessIterator} requirements\iref{random.access.iterators} + and the requirements of a mutable iterator. + + \pnum +@@ -4297,7 +4297,7 @@ template + \pnum + \expects + \tcode{OutputIterator} meets the +- \oldconcept{OutputIterator} requirements\iref{output.iterators}. ++ \oldconceptref{OutputIterator} requirements\iref{output.iterators}. + + \pnum + \effects +@@ -6290,7 +6290,7 @@ double>} is \tcode{true}. + \pnum + \expects + \tcode{InputIterator} meets the +- \oldconcept{InputIterator} requirements\iref{input.iterators}. ++ \oldconceptref{InputIterator} requirements\iref{input.iterators}. + If \tcode{firstW == lastW}, + let $n = 1$ and $w_0 = 1$. + Otherwise, +@@ -6488,7 +6488,7 @@ are \tcode{true}. + \expects + \tcode{InputIteratorB} and \tcode{InputIteratorW} + each meet the +- \oldconcept{InputIterator} requirements\iref{input.iterators}. ++ \oldconceptref{InputIterator} requirements\iref{input.iterators}. + If \tcode{firstB == lastB} + or \tcode{++firstB == lastB}, + let $n = 1$, +@@ -6723,7 +6723,7 @@ are \tcode{true}. + \expects + \tcode{InputIteratorB} and \tcode{InputIteratorW} + each meet the +- \oldconcept{InputIterator} requirements\iref{input.iterators}. ++ \oldconceptref{InputIterator} requirements\iref{input.iterators}. + If \tcode{firstB == lastB} + or \tcode{++firstB == lastB}, + let $n = 1$, +@@ -9069,12 +9069,12 @@ object refers. + \pnum + In the \tcode{begin} and \tcode{end} function templates that follow, \unspec{1} + is a type that meets the requirements of a mutable +-\oldconcept{RandomAccessIterator}\iref{random.access.iterators} ++\oldconceptref{RandomAccessIterator}\iref{random.access.iterators} + and models \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, + whose \tcode{value_type} is the template + parameter \tcode{T} and whose \tcode{reference} type is \tcode{T\&}. \unspec{2} is a + type that meets the requirements of a constant +-\oldconcept{RandomAccessIterator} ++\oldconceptref{RandomAccessIterator} + and models \libconcept{contiguous_iterator}, + whose \tcode{value_type} is the template + parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. +diff --git a/source/strings.tex b/source/strings.tex +index 2c930405..a5a3c68c 100644 +--- a/source/strings.tex ++++ b/source/strings.tex +@@ -237,10 +237,10 @@ using state_type = @\seebelow@; + \pnum + \expects + \tcode{state_type} meets the +-\oldconcept{Destructible} (\tref{cpp17.destructible}), +-\oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}), +-\oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}), and +-\oldconcept{DefaultConstructible} (\tref{cpp17.defaultconstructible}) requirements. ++\oldconceptref{Destructible} (\tref{cpp17.destructible}), ++\oldconceptref{CopyAssignable} (\tref{cpp17.copyassignable}), ++\oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}), and ++\oldconceptref{DefaultConstructible} (\tref{cpp17.defaultconstructible}) requirements. + \end{itemdescr} + + \rSec2[char.traits.specializations]{\tcode{char_traits} specializations} +@@ -925,7 +925,7 @@ using const_iterator = @\impdefx{type of \tcode{basic_string_view::const_iterato + \pnum + A type that meets the requirements + of a constant +-\oldconcept{RandomAccessIterator}\iref{random.access.iterators}, ++\oldconceptref{RandomAccessIterator}\iref{random.access.iterators}, + models \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, and + meets the constexpr iterator requirements\iref{iterator.requirements.general}, + whose \tcode{value_type} is the template parameter \tcode{charT}. +diff --git a/source/support.tex b/source/support.tex +index e9deb268..aef62703 100644 +--- a/source/support.tex ++++ b/source/support.tex +@@ -3562,11 +3562,11 @@ namespace std { + + \pnum + The type \tcode{source_location} meets the +-\oldconcept{DefaultConstructible}, +-\oldconcept{CopyConstructible}, +-\oldconcept{Copy\-Assignable}, +-\oldconcept{Swappable}, and +-\oldconcept{Destructible} ++\oldconceptref{DefaultConstructible}, ++\oldconceptref{CopyConstructible}, ++\oldconceptref{CopyAssignable}, ++\oldconceptref{Swappable}, and ++\oldconceptref{Destructible} + requirements\iref{utility.arg.requirements,swappable.requirements}. + All of the following conditions are \tcode{true}: + \begin{itemize} +@@ -4024,7 +4024,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. + + \pnum + \tcode{exception_ptr} meets the requirements of +-\oldconcept{NullablePointer} (\tref{cpp17.nullablepointer}). ++\oldconceptref{NullablePointer} (\tref{cpp17.nullablepointer}). + + \pnum + Two non-null values of type \tcode{exception_ptr} are equivalent and compare equal if and +@@ -4221,7 +4221,7 @@ Let \tcode{U} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{U} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{U} meets the \oldconceptref{CopyConstructible} requirements. + + \pnum + \throws +diff --git a/source/threads.tex b/source/threads.tex +index 74e1953b..156520e0 100644 +--- a/source/threads.tex ++++ b/source/threads.tex +@@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and + \tcode{false} otherwise. + If a template parameter is named \tcode{Clock}, + the corresponding template argument shall be a type \tcode{C} +-that meets the \oldconcept{Clock} requirements\iref{time.clock.req}; ++that meets the \oldconceptref{Clock} requirements\iref{time.clock.req}; + the program is ill-formed if \tcode{is_clock_v} is \tcode{false}. + + \rSec2[thread.req.exception]{Exceptions} +@@ -156,7 +156,7 @@ and hardware. The finest resolution provided by an implementation is called the + + \pnum + Implementation-provided clocks that are used for these functions meet the +-\oldconcept{TrivialClock} requirements\iref{time.clock.req}. ++\oldconceptref{TrivialClock} requirements\iref{time.clock.req}. + + \pnum + A function that takes an argument which specifies a timeout will throw if, +@@ -195,10 +195,10 @@ The standard library templates \tcode{unique_lock}\iref{thread.lock.unique}, + \tcode{lock_guard}\iref{thread.lock.guard}, \tcode{lock}, + \tcode{try_lock}\iref{thread.lock.algorithm}, and + \tcode{condition_variable_any}\iref{thread.condition.condvarany} all operate on user-supplied +-lockable objects. The \oldconcept{BasicLockable} requirements, the \oldconcept{Lockable} requirements, +-the \oldconcept{TimedLockable} requirements, +-the \oldconcept{SharedLockable} requirements, and +-the \oldconcept{SharedTimedLock\-able} requirements ++lockable objects. The \oldconceptref{BasicLockable} requirements, the \oldconceptref{Lockable} requirements, ++the \oldconceptref{TimedLockable} requirements, ++the \oldconceptref{SharedLockable} requirements, and ++the \oldconceptref{SharedTimedLockable} requirements + list the requirements imposed by these library types + in order to acquire or release ownership of a \tcode{lock} by a given execution agent. + \begin{note} +@@ -266,7 +266,7 @@ Nothing. + \rSec3[thread.req.lockable.req]{\oldconcept{Lockable} requirements} + + \pnum +-A type \tcode{L} meets the \defnoldconcept{Lockable} requirements if it meets the \oldconcept{BasicLockable} ++A type \tcode{L} meets the \defnoldconcept{Lockable} requirements if it meets the \oldconceptref{BasicLockable} + requirements and the following expressions are well-formed and have the specified semantics + (\tcode{m} denotes a value of type \tcode{L}). + +@@ -291,7 +291,7 @@ exception is thrown then a lock shall not have been acquired for the current exe + \rSec3[thread.req.lockable.timed]{\oldconcept{TimedLockable} requirements} + + \pnum +-A type \tcode{L} meets the \defnoldconcept{TimedLockable} requirements if it meets the \oldconcept{Lockable} ++A type \tcode{L} meets the \defnoldconcept{TimedLockable} requirements if it meets the \oldconceptref{Lockable} + requirements and the following expressions are well-formed and have the specified semantics + (\tcode{m} denotes a value of type \tcode{L}, \tcode{rel_time} denotes a value of an + instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes a value +@@ -397,7 +397,7 @@ Nothing. + + \pnum + A type \tcode{L} meets the \defnoldconcept{SharedTimedLockable} requirements if +-it meets the \oldconcept{SharedLockable} requirements, and ++it meets the \oldconceptref{SharedLockable} requirements, and + the following expressions are well-formed, have type \tcode{bool}, and + have the specified semantics + (\tcode{m} denotes a value of type \tcode{L}, +@@ -4049,7 +4049,7 @@ namespace std { + \indexlibraryglobal{atomic}% + \pnum + The template argument for \tcode{T} shall meet the +-\oldconcept{CopyConstructible} and \oldconcept{CopyAssignable} requirements. ++\oldconceptref{CopyConstructible} and \oldconceptref{CopyAssignable} requirements. + The program is ill-formed if any of + \begin{itemize} + \item \tcode{is_trivially_copyable_v}, +@@ -6526,11 +6526,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, + They meet the requirements set out in \ref{thread.mutex.requirements.mutex}. + In this description, \tcode{m} denotes an object of a mutex type. + \begin{note} +-The mutex types meet the \oldconcept{Lockable} requirements\iref{thread.req.lockable.req}. ++The mutex types meet the \oldconceptref{Lockable} requirements\iref{thread.req.lockable.req}. + \end{note} + + \pnum +-The mutex types meet \oldconcept{DefaultConstructible} and \oldconcept{Destructible}. ++The mutex types meet \oldconceptref{DefaultConstructible} and \oldconceptref{Destructible}. + If initialization of an object of a mutex type fails, + an exception of type \tcode{system_error} is thrown. + The mutex types are neither copyable nor movable. +@@ -6799,7 +6799,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de + object of an + instantiation of \link{\tcode{time_point}}{time.point}. + \begin{note} +-The timed mutex types meet the \oldconcept{TimedLockable} ++The timed mutex types meet the \oldconceptref{TimedLockable} + requirements\iref{thread.req.lockable.timed}. + \end{note} + +@@ -7011,7 +7011,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally + meet the requirements set out below. In this description, + \tcode{m} denotes an object of a shared mutex type. + \begin{note} +-The shared mutex types meet the \oldconcept{SharedLockable} ++The shared mutex types meet the \oldconceptref{SharedLockable} + requirements\iref{thread.req.lockable.shared}. + \end{note} + +@@ -7188,7 +7188,7 @@ meet the requirements set out below. In this description, + \tcode{abs_time} denotes an object of an instantiation of + \link{\tcode{time_point}}{time.point}. + \begin{note} +-The shared timed mutex types meet the \oldconcept{SharedTimedLockable} ++The shared timed mutex types meet the \oldconceptref{SharedTimedLockable} + requirements\iref{thread.req.lockable.shared.timed}. + \end{note} + +@@ -7398,7 +7398,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable + object throughout the \tcode{lock_guard} object's \deflink{lifetime}{basic.life}. + The behavior of a program is undefined if the lockable object referenced by + \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} +-object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} ++object. The supplied \tcode{Mutex} type shall meet the \oldconceptref{BasicLockable} + requirements\iref{thread.req.lockable.basic}. + + \indexlibraryctor{lock_guard}% +@@ -7477,12 +7477,12 @@ object. + If \tcode{sizeof...(MutexTypes)} is one, + let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. + \tcode{Mutex} +-shall meet the \oldconcept{BasicLockable} requirements\iref{thread.req.lockable.basic}. ++shall meet the \oldconceptref{BasicLockable} requirements\iref{thread.req.lockable.basic}. + The member \grammarterm{typedef-name} \tcode{mutex_type} + denotes the same type as \tcode{Mutex}. + \item + Otherwise, all types in the template parameter pack \tcode{MutexTypes} +-shall meet the \oldconcept{Lockable} requirements\iref{thread.req.lockable.req} ++shall meet the \oldconceptref{Lockable} requirements\iref{thread.req.lockable.req} + and there is no member \tcode{mutex_type}. + \end{itemize} + +@@ -7597,17 +7597,17 @@ copyable but are movable. The behavior of a program is undefined if the containe + \tcode{pm} is not null and the lockable object pointed + to by \tcode{pm} does not exist for the entire remaining + lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied +-\tcode{Mutex} type shall meet the \oldconcept{BasicLockable} ++\tcode{Mutex} type shall meet the \oldconceptref{BasicLockable} + requirements\iref{thread.req.lockable.basic}. + + \pnum + \begin{note} +-\tcode{unique_lock} meets the \oldconcept{BasicLockable} requirements. If \tcode{Mutex} +-meets the \oldconcept{Lockable} requirements\iref{thread.req.lockable.req}, +-\tcode{unique_lock} also meets the \oldconcept{Lockable} requirements; ++\tcode{unique_lock} meets the \oldconceptref{BasicLockable} requirements. If \tcode{Mutex} ++meets the \oldconceptref{Lockable} requirements\iref{thread.req.lockable.req}, ++\tcode{unique_lock} also meets the \oldconceptref{Lockable} requirements; + if \tcode{Mutex} +-meets the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}, +-\tcode{unique_lock} also meets the \oldconcept{TimedLockable} requirements. ++meets the \oldconceptref{TimedLockable} requirements\iref{thread.req.lockable.timed}, ++\tcode{unique_lock} also meets the \oldconceptref{TimedLockable} requirements. + \end{note} + + \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} +@@ -7657,7 +7657,7 @@ unique_lock(mutex_type& m, try_to_lock_t); + \begin{itemdescr} + \pnum + \expects +-The supplied \tcode{Mutex} type meets the \oldconcept{Lockable} ++The supplied \tcode{Mutex} type meets the \oldconceptref{Lockable} + requirements\iref{thread.req.lockable.req}. + + \pnum +@@ -7699,7 +7699,7 @@ template + \pnum + \expects + The supplied \tcode{Mutex} type meets the +-\oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. ++\oldconceptref{TimedLockable} requirements\iref{thread.req.lockable.timed}. + + \pnum + \effects +@@ -7721,7 +7721,7 @@ template + \begin{itemdescr} + \pnum + \expects +-The supplied \tcode{Mutex} type meets the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. ++The supplied \tcode{Mutex} type meets the \oldconceptref{TimedLockable} requirements\iref{thread.req.lockable.timed}. + + \pnum + \effects +@@ -7817,7 +7817,7 @@ bool try_lock(); + \begin{itemdescr} + \pnum + \expects +-The supplied \tcode{Mutex} meets the \oldconcept{Lockable} ++The supplied \tcode{Mutex} meets the \oldconceptref{Lockable} + requirements\iref{thread.req.lockable.req}. + + \pnum +@@ -7856,7 +7856,7 @@ template + \begin{itemdescr} + \pnum + \expects +-The supplied \tcode{Mutex} type meets the \oldconcept{TimedLockable} ++The supplied \tcode{Mutex} type meets the \oldconceptref{TimedLockable} + requirements\iref{thread.req.lockable.timed}. + + \pnum +@@ -7895,7 +7895,7 @@ template + \begin{itemdescr} + \pnum + \expects +-The supplied \tcode{Mutex} type meets the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. ++The supplied \tcode{Mutex} type meets the \oldconceptref{TimedLockable} requirements\iref{thread.req.lockable.timed}. + + \pnum + \effects +@@ -8088,16 +8088,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type + is undefined if the contained pointer \tcode{pm} is not null and the lockable + object pointed to by \tcode{pm} does not exist for the entire remaining + lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied +-\tcode{Mutex} type shall meet the \oldconcept{SharedLockable} ++\tcode{Mutex} type shall meet the \oldconceptref{SharedLockable} + requirements\iref{thread.req.lockable.shared}. + + \pnum + \begin{note} +-\tcode{shared_lock} meets the \oldconcept{Lockable} ++\tcode{shared_lock} meets the \oldconceptref{Lockable} + requirements\iref{thread.req.lockable.req}. +-If \tcode{Mutex} meets the \oldconcept{Shared\-TimedLockable} ++If \tcode{Mutex} meets the \oldconceptref{SharedTimedLockable} + requirements\iref{thread.req.lockable.shared.timed}, +-\tcode{shared_lock} also meets the \oldconcept{TimedLockable} ++\tcode{shared_lock} also meets the \oldconceptref{TimedLockable} + requirements\iref{thread.req.lockable.timed}. + \end{note} + +@@ -8182,7 +8182,7 @@ template + \begin{itemdescr} + \pnum + \expects +-\tcode{Mutex} meets the \oldconcept{SharedTimedLockable} ++\tcode{Mutex} meets the \oldconceptref{SharedTimedLockable} + requirements\iref{thread.req.lockable.shared.timed}. + + \pnum +@@ -8206,7 +8206,7 @@ template + \begin{itemdescr} + \pnum + \expects +-\tcode{Mutex} meets the \oldconcept{SharedTimedLockable} ++\tcode{Mutex} meets the \oldconceptref{SharedTimedLockable} + requirements\iref{thread.req.lockable.shared.timed}. + + \pnum +@@ -8333,7 +8333,7 @@ template + \begin{itemdescr} + \pnum + \expects +-\tcode{Mutex} meets the \oldconcept{SharedTimedLockable} ++\tcode{Mutex} meets the \oldconceptref{SharedTimedLockable} + requirements\iref{thread.req.lockable.shared.timed}. + + \pnum +@@ -8373,7 +8373,7 @@ template + \begin{itemdescr} + \pnum + \expects +-\tcode{Mutex} meets the \oldconcept{SharedTimedLockable} ++\tcode{Mutex} meets the \oldconceptref{SharedTimedLockable} + requirements\iref{thread.req.lockable.shared.timed}. + + \pnum +@@ -8512,7 +8512,7 @@ template int try_lock(L1&, L2&, L3&...); + \begin{itemdescr} + \pnum + \expects +-Each template parameter type meets the \oldconcept{Lockable} requirements. ++Each template parameter type meets the \oldconceptref{Lockable} requirements. + \begin{note} + The + \tcode{unique_lock} class template meets these requirements when suitably instantiated. +@@ -8541,7 +8541,7 @@ template void lock(L1&, L2&, L3&...); + \begin{itemdescr} + \pnum + \expects +-Each template parameter type meets the \oldconcept{Lockable} requirements. ++Each template parameter type meets the \oldconceptref{Lockable} requirements. + \begin{note} + The + \tcode{unique_lock} class template meets these requirements when suitably instantiated. +@@ -9207,7 +9207,7 @@ This can happen if the re-locking of the mutex throws an exception. + \pnum + In \ref{thread.condition.condvarany}, + template arguments for template parameters named \tcode{Lock} +-shall meet the \oldconcept{Basic\-Lockable} ++shall meet the \oldconceptref{BasicLockable} + requirements\iref{thread.req.lockable.basic}. + \begin{note} + All of the standard +@@ -10145,24 +10145,24 @@ execute atomically. + + \pnum + \tcode{CompletionFunction} shall meet the +-\oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{Destructible} (\tref{cpp17.destructible}) requirements. ++\oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{Destructible} (\tref{cpp17.destructible}) requirements. + \tcode{is_nothrow_invocable_v} shall be \tcode{true}. + + \pnum + The default value of the \tcode{CompletionFunction} template parameter is + an unspecified type, such that, + in addition to satisfying the requirements of \tcode{CompletionFunction}, +-it meets the \oldconcept{DefaultConstructible} ++it meets the \oldconceptref{DefaultConstructible} + requirements (\tref{cpp17.defaultconstructible}) and + \tcode{completion()} has no effects. + + \pnum + \tcode{barrier::arrival_token} is an unspecified type, + such that it meets the +-\oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}), +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}), and +-\oldconcept{Destructible} (\tref{cpp17.destructible}) requirements. ++\oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}), ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}), and ++\oldconceptref{Destructible} (\tref{cpp17.destructible}) requirements. + + \indexlibrarymember{max}{barrier}% + \begin{itemdecl} +@@ -10663,7 +10663,7 @@ namespace std { + + \pnum + For the primary template, \tcode{R} shall be an object type that +-meets the \oldconcept{Destructible} requirements. ++meets the \oldconceptref{Destructible} requirements. + + \pnum + The implementation provides the template \tcode{promise} and two specializations, +@@ -10688,7 +10688,7 @@ template + \pnum + \expects + \tcode{Alloc} meets +-the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. ++the \oldconceptref{Allocator} requirements\iref{allocator.requirements.general}. + \end{itemdescr} + + \indexlibraryctor{promise}% +@@ -11009,7 +11009,7 @@ namespace std { + + \pnum + For the primary template, \tcode{R} shall be an object type that +-meets the \oldconcept{Destructible} requirements. ++meets the \oldconceptref{Destructible} requirements. + + \pnum + The implementation provides the template \tcode{future} and two specializations, +@@ -11315,7 +11315,7 @@ namespace std { + + \pnum + For the primary template, \tcode{R} shall be an object type that +-meets the \oldconcept{Destructible} requirements. ++meets the \oldconceptref{Destructible} requirements. + + \pnum + The implementation provides the template \tcode{shared_future} and two +@@ -12226,7 +12226,7 @@ the expression \tcode{d(ptr)} is valid. + + \pnum + \tcode{D} shall meet the requirements for +-\oldconcept{DefaultConstructible} and \oldconcept{MoveAssignable}. ++\oldconceptref{DefaultConstructible} and \oldconceptref{MoveAssignable}. + + \pnum + If \tcode{D} is trivially copyable, +@@ -12284,7 +12284,7 @@ namespace std { + + \pnum + This class meets the requirements of +-\oldconcept{Lockable}\iref{thread.req.lockable.req} and ++\oldconceptref{Lockable}\iref{thread.req.lockable.req} and + provides regions of RCU protection. + \begin{example} + \begin{codeblock} +@@ -12432,8 +12432,8 @@ the expression \tcode{d(p)} is well-formed. + + \pnum + \expects +-\tcode{D} meets the \oldconcept{MoveConstructible} and +-\oldconcept{Destructible} requirements. ++\tcode{D} meets the \oldconceptref{MoveConstructible} and ++\oldconceptref{Destructible} requirements. + + \pnum + \effects +@@ -12625,7 +12625,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. + + \pnum + \tcode{D} shall meet the requirements for +-\oldconcept{DefaultConstructible} and \oldconcept{MoveAssignable}. ++\oldconceptref{DefaultConstructible} and \oldconceptref{MoveAssignable}. + + \pnum + \tcode{T} may be an incomplete type. +diff --git a/source/time.tex b/source/time.tex +index edab6cbc..7dff0095 100644 +--- a/source/time.tex ++++ b/source/time.tex +@@ -1039,13 +1039,13 @@ SI definition is a measure of the quality of implementation. + A type \tcode{TC} meets the \defnoldconcept{TrivialClock} requirements if + \begin{itemize} + \item +-\tcode{TC} meets the \oldconcept{Clock} requirements, ++\tcode{TC} meets the \oldconceptref{Clock} requirements, + + \item + the types \tcode{TC::rep}, \tcode{TC::duration}, and \tcode{TC::time_point} +-meet the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) and +-\oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}) +-and \oldconcept{Swappable}\iref{swappable.requirements} ++meet the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) and ++\oldconceptref{LessThanComparable} (\tref{cpp17.lessthancomparable}) ++and \oldconceptref{Swappable}\iref{swappable.requirements} + requirements and the requirements of + numeric types\iref{numeric.requirements}, + \begin{note} +@@ -1203,15 +1203,15 @@ template struct is_clock; + \end{itemdecl} + + \pnum +-\tcode{is_clock} is a \oldconcept{UnaryTypeTrait}\iref{meta.rqmts} ++\tcode{is_clock} is a \oldconceptref{UnaryTypeTrait}\iref{meta.rqmts} + with a base characteristic of \tcode{true_type} +-if \tcode{T} meets the \oldconcept{Clock} requirements\iref{time.clock.req}, ++if \tcode{T} meets the \oldconceptref{Clock} requirements\iref{time.clock.req}, + otherwise \tcode{false_type}. + For the purposes of the specification of this trait, + the extent to which an implementation determines +-that a type cannot meet the \oldconcept{Clock} requirements is unspecified, ++that a type cannot meet the \oldconceptref{Clock} requirements is unspecified, + except that as a minimum +-a type \tcode{T} shall not qualify as a \oldconcept{Clock} ++a type \tcode{T} shall not qualify as a \oldconceptref{Clock} + unless it meets all of the following conditions: + \begin{itemize} + \item the \grammarterm{qualified-id}s +@@ -2632,7 +2632,7 @@ template + + \pnum + The types defined in \ref{time.clock} meet the +-\oldconcept{TrivialClock} ++\oldconceptref{TrivialClock} + requirements\iref{time.clock.req} + unless otherwise specified. + +@@ -2850,7 +2850,7 @@ which is \tcode{10'957 * 86'400s + 22s}. \\ + \end{example} + + \pnum +-\tcode{utc_clock} is not a \oldconcept{TrivialClock} ++\tcode{utc_clock} is not a \oldconceptref{TrivialClock} + unless the implementation can guarantee that \tcode{utc_clock::now()} + does not propagate an exception. + \begin{note} +@@ -3069,7 +3069,7 @@ so 2000-01-01 00:00:00 UTC is equivalent to 2000-01-01 00:00:32 TAI + (22s plus the initial 10s offset). + + \pnum +-\tcode{tai_clock} is not a \oldconcept{TrivialClock} ++\tcode{tai_clock} is not a \oldconceptref{TrivialClock} + unless the implementation can guarantee that \tcode{tai_clock::now()} + does not propagate an exception. + \begin{note} +@@ -3231,7 +3231,7 @@ GPS is behind TAI by 19s due to the 10s offset between 1958 and 1970 + and the additional 9 leap seconds inserted between 1970 and 1980. + + \pnum +-\tcode{gps_clock} is not a \oldconcept{TrivialClock} ++\tcode{gps_clock} is not a \oldconceptref{TrivialClock} + unless the implementation can guarantee that + \tcode{gps_clock::now()} does not propagate an exception. + \begin{note} +@@ -3368,7 +3368,7 @@ namespace std::chrono { + + \pnum + \tcode{file_clock} is an alias for a type +-meeting the \oldconcept{TrivialClock} requirements\iref{time.clock.req}, and ++meeting the \oldconceptref{TrivialClock} requirements\iref{time.clock.req}, and + using a signed arithmetic type for \tcode{file_clock::rep}. + \tcode{file_clock} is used to create the \tcode{time_point} system + used for \tcode{file_time_type}\iref{filesystems}. +@@ -3971,8 +3971,8 @@ It normally holds values in the range 1 to 31, + but may hold non-negative values outside this range. + It can be constructed with any \tcode{unsigned} value, + which will be subsequently truncated to fit into \tcode{day}'s unspecified internal storage. +-\tcode{day} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) +-and \oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements, ++\tcode{day} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) ++and \oldconceptref{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements, + and participates in basic arithmetic with \tcode{days} objects, + which represent a difference between two \tcode{day} objects. + +@@ -4264,8 +4264,8 @@ It normally holds values in the range 1 to 12, + but may hold non-negative values outside this range. + It can be constructed with any \tcode{unsigned} value, + which will be subsequently truncated to fit into \tcode{month}'s unspecified internal storage. +-\tcode{month} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) +-and \oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements, ++\tcode{month} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) ++and \oldconceptref{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements, + and participates in basic arithmetic with \tcode{months} objects, + which represent a difference between two \tcode{month} objects. + +@@ -4574,8 +4574,8 @@ namespace std::chrono { + It can represent values in the range \crange{min()}{max()}. + It can be constructed with any \tcode{int} value, + which will be subsequently truncated to fit into \tcode{year}'s unspecified internal storage. +-\tcode{year} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) +-and \oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements, ++\tcode{year} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) ++and \oldconceptref{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements, + and participates in basic arithmetic with \tcode{years} objects, + which represent a difference between two \tcode{year} objects. + +@@ -4929,10 +4929,10 @@ corresponding to Sunday through Saturday, but + it may hold non-negative values outside this range. + It can be constructed with any \tcode{unsigned} value, + which will be subsequently truncated to fit into \tcode{weekday}'s unspecified internal storage. +-\tcode{weekday} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) requirements. ++\tcode{weekday} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) requirements. + \begin{note} + \tcode{weekday} is not +-\oldconcept{LessThanComparable} ++\oldconceptref{LessThanComparable} + because there is no universal consensus on which day is the first day of the week. + \tcode{weekday}'s arithmetic operations treat the days of the week as a circular range, + with no beginning and no end. +@@ -5512,8 +5512,8 @@ namespace std::chrono { + \pnum + \tcode{month_day} represents a specific day of a specific month, + but with an unspecified year. +-\tcode{month_day} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) +-and \oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements. ++\tcode{month_day} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) ++and \oldconceptref{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements. + + \pnum + \tcode{month_day} is a trivially copyable and standard-layout class type. +@@ -6013,8 +6013,8 @@ namespace std::chrono { + \tcode{year_month} represents a specific month of a specific year, + but with an unspecified day. + \tcode{year_month} is a field-based time point with a resolution of \tcode{months}. +-\tcode{year_month} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) +-and \oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements. ++\tcode{year_month} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) ++and \oldconceptref{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements. + + \pnum + \tcode{year_month} is a trivially copyable and standard-layout class type. +@@ -6369,8 +6369,8 @@ but not \tcode{days}-oriented arithmetic. + For the latter, there is a conversion to \tcode{sys_days}, + which efficiently supports \tcode{days}-oriented arithmetic. + \end{note} +-\tcode{year_month_day} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) +-and \oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements. ++\tcode{year_month_day} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) ++and \oldconceptref{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements. + + \pnum + \tcode{year_month_day} is a trivially copyable and standard-layout class type. +@@ -6830,8 +6830,8 @@ but not \tcode{days}-oriented arithmetic. + For the latter, there is a conversion to \tcode{sys_days}, + which efficiently supports \tcode{days}-oriented arithmetic. + \end{note} +-\tcode{year_month_day_last} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) +-and \oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements. ++\tcode{year_month_day_last} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) ++and \oldconceptref{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements. + + \pnum + \tcode{year_month_day_last} is a trivially copyable and standard-layout class type. +@@ -7201,7 +7201,7 @@ but not \tcode{days}-oriented arithmetic. + For the latter, there is a conversion to \tcode{sys_days}, + which efficiently supports \tcode{days}-oriented arithmetic. + \end{note} +-\tcode{year_month_weekday} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) requirements. ++\tcode{year_month_weekday} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) requirements. + + \pnum + \tcode{year_month_weekday} is a trivially copyable and standard-layout class type. +@@ -7594,7 +7594,7 @@ but not \tcode{days}-oriented arithmetic. + For the latter, there is a conversion to \tcode{sys_days}, + which efficiently supports \tcode{days}-oriented arithmetic. + \end{note} +-\tcode{year_month_weekday_last} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) requirements. ++\tcode{year_month_weekday_last} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) requirements. + + \pnum + \tcode{year_month_weekday_last} is a trivially copyable and standard-layout class type. +@@ -8844,7 +8844,7 @@ The \tcode{tzdb_list} object contains a list of \tcode{tzdb} objects. + + \pnum + \tcode{tzdb_list::const_iterator} is a constant iterator +-which meets the \oldconcept{ForwardIterator} requirements ++which meets the \oldconceptref{ForwardIterator} requirements + and has a value type of \tcode{tzdb}. + + \indexlibrarymember{front}{tzdb_list}% +@@ -11551,7 +11551,7 @@ template<> struct hash; + The specializations are enabled\iref{unord.hash}. + \begin{note} + All the \tcode{hash} specializations listed above meet the +-\oldconcept{Hash} requirements, even when called on objects \tcode{k} ++\oldconceptref{Hash} requirements, even when called on objects \tcode{k} + of type \tcode{Key} such that \tcode{k.ok()} is \tcode{false}. + \end{note} + \end{itemdescr} +diff --git a/source/utilities.tex b/source/utilities.tex +index b3214037..a38cb3ed 100644 +--- a/source/utilities.tex ++++ b/source/utilities.tex +@@ -242,9 +242,9 @@ template + Type + \tcode{T} + meets the +-\oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) ++\oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) + and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) + requirements. + + \pnum +@@ -2111,7 +2111,7 @@ template + \pnum + \expects + \tcode{Alloc} meets +-the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. ++the \oldconceptref{Allocator} requirements\iref{allocator.requirements.general}. + + \pnum + \effects +@@ -2741,7 +2741,7 @@ template struct tuple_size; + \pnum + Except where specified otherwise, + all specializations of \tcode{tuple_size} meet the +-\oldconcept{UnaryTypeTrait} requirements\iref{meta.rqmts} with a ++\oldconceptref{UnaryTypeTrait} requirements\iref{meta.rqmts} with a + base characteristic of \tcode{integral_constant} + for some \tcode{N}. + \end{itemdescr} +@@ -2782,7 +2782,7 @@ template struct tuple_size; + Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. + If the expression \tcode{TS::value} is well-formed + when treated as an \deflink{unevaluated operand}{expr.context}, then +-each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts} ++each specialization of the template meets the \oldconceptref{UnaryTypeTrait} requirements\iref{meta.rqmts} + with a base characteristic of + \begin{codeblock} + integral_constant +@@ -2819,7 +2819,7 @@ template struct tuple_element; + \begin{itemdescr} + \pnum + Let \tcode{TE} denote \tcode{tuple_element_t} of the cv-unqualified type \tcode{T}. Then +-each specialization of the template meets the \oldconcept{TransformationTrait} requirements\iref{meta.rqmts} ++each specialization of the template meets the \oldconceptref{TransformationTrait} requirements\iref{meta.rqmts} + with a member typedef \tcode{type} that names the type \tcode{add_const_t}. + + \pnum +@@ -3098,7 +3098,7 @@ template + \pnum + \expects + \tcode{Alloc} meets +-the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. ++the \oldconceptref{Allocator} requirements\iref{allocator.requirements.general}. + + \pnum + \begin{note} +@@ -3352,7 +3352,7 @@ member \tcode{val} points to the contained value. + \pnum + \tcode{T} shall be a type + other than \cv{} \tcode{in_place_t} or \cv{} \tcode{nullopt_t} +-that meets the \oldconcept{Destructible} requirements (\tref{cpp17.destructible}). ++that meets the \oldconceptref{Destructible} requirements (\tref{cpp17.destructible}). + + \rSec3[optional.ctor]{Constructors} + +@@ -3972,7 +3972,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); + + \pnum + \expects +-\tcode{T} meets the \oldconcept{Swappable} requirements\iref{swappable.requirements}. ++\tcode{T} meets the \oldconceptref{Swappable} requirements\iref{swappable.requirements}. + + \pnum + \effects +@@ -4029,7 +4029,7 @@ using const_iterator = @\impdef@; + \pnum + These types + model \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, +-meet the \oldconcept{RandomAccessIterator} requirements\iref{random.access.iterators}, and ++meet the \oldconceptref{RandomAccessIterator} requirements\iref{random.access.iterators}, and + meet the requirements for constexpr iterators\iref{iterator.requirements.general}, + with value type \tcode{remove_cv_t}. + The reference type is \tcode{T\&} for \tcode{iterator} and +@@ -4469,7 +4469,7 @@ template constexpr bool operator==(const optional& x, const + The expression \tcode{*x == *y} is well-formed and + its result is convertible to \tcode{bool}. + \begin{note} +-\tcode{T} need not be \oldconcept{EqualityComparable}. ++\tcode{T} need not be \oldconceptref{EqualityComparable}. + \end{note} + + \pnum +@@ -4659,7 +4659,7 @@ template constexpr bool operator==(const optional& x, const + The expression \tcode{*x == v} is well-formed and + its result is convertible to \tcode{bool}. + \begin{note} +-\tcode{T} need not be \oldconcept{EqualityComparable}. ++\tcode{T} need not be \oldconceptref{EqualityComparable}. + \end{note} + + \pnum +@@ -5136,7 +5136,7 @@ memory, to allocate the contained value. + + \pnum + All types in \tcode{Types} shall meet +-the \oldconcept{Destructible} requirements (\tref{cpp17.destructible}). ++the \oldconceptref{Destructible} requirements (\tref{cpp17.destructible}). + + \pnum + A program that instantiates the definition of \tcode{variant} with +@@ -5816,7 +5816,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); + + \pnum + \expects +-Each $\tcode{T}_i$ meets the \oldconcept{Swappable} requirements\iref{swappable.requirements}. ++Each $\tcode{T}_i$ meets the \oldconceptref{Swappable} requirements\iref{swappable.requirements}. + + \pnum + \effects +@@ -5861,7 +5861,7 @@ template struct variant_size; + \begin{itemdescr} + \pnum + All specializations of \tcode{variant_size} meet the +-\oldconcept{UnaryTypeTrait} requirements\iref{meta.rqmts} ++\oldconceptref{UnaryTypeTrait} requirements\iref{meta.rqmts} + with a base characteristic of \tcode{integral_constant} for some \tcode{N}. + \end{itemdescr} + +@@ -5874,7 +5874,7 @@ template struct variant_size; + \pnum + Let \tcode{VS} denote \tcode{variant_size} of the cv-unqualified + type \tcode{T}. Then each specialization of the template meets the +-\oldconcept{UnaryTypeTrait} requirements\iref{meta.rqmts} with a ++\oldconceptref{UnaryTypeTrait} requirements\iref{meta.rqmts} with a + base characteristic of \tcode{integral_constant}. + \end{itemdescr} + +@@ -5894,7 +5894,7 @@ template struct variant_alternative; + \pnum + Let \tcode{VA} denote \tcode{variant_alternative} of the + cv-unqualified type \tcode{T}. Then each specialization of the template +-meets the \oldconcept{TransformationTrait} requirements\iref{meta.rqmts} with a ++meets the \oldconceptref{TransformationTrait} requirements\iref{meta.rqmts} with a + member typedef \tcode{type} that names the type \tcode{add_const_t}. + \end{itemdescr} + +@@ -6620,7 +6620,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{CopyConstructible} requirements. + + \pnum + \effects +@@ -6648,7 +6648,7 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{CopyConstructible} requirements. + + \pnum + \effects +@@ -6681,7 +6681,7 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{CopyConstructible} requirements. + + \pnum + \effects +@@ -6766,7 +6766,7 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{CopyConstructible} requirements. + + \pnum + \effects +@@ -6801,7 +6801,7 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{CopyConstructible} requirements. + + \pnum + \effects +@@ -6845,7 +6845,7 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{CopyConstructible} requirements. + + \pnum + \effects +@@ -7549,9 +7549,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. + + \pnum + When \tcode{T} is not \cv{} \tcode{void}, it shall meet +-the \oldconcept{Destructible} requirements (\tref{cpp17.destructible}). ++the \oldconceptref{Destructible} requirements (\tref{cpp17.destructible}). + \tcode{E} shall meet +-the \oldconcept{Destructible} requirements. ++the \oldconceptref{Destructible} requirements. + + \rSec3[expected.object.cons]{Constructors} + +@@ -8788,7 +8788,7 @@ template friend constexpr bool operator==(const expected& x, const T2& + The expression \tcode{*x == v} is well-formed and + its result is convertible to \tcode{bool}. + \begin{note} +-\tcode{T} need not be \oldconcept{EqualityComparable}. ++\tcode{T} need not be \oldconceptref{EqualityComparable}. + \end{note} + + \pnum +@@ -8926,7 +8926,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. + + \pnum + \tcode{E} shall meet the requirements of +-\oldconcept{Destructible} (\tref{cpp17.destructible}). ++\oldconceptref{Destructible} (\tref{cpp17.destructible}). + + \rSec3[expected.void.cons]{Constructors} + +@@ -10955,8 +10955,8 @@ is ill-formed. + \indextext{call wrapper}% + \indextext{call wrapper!simple}% + \indextext{call wrapper!forwarding}% +-Every call wrapper\iref{func.def} meets the \oldconcept{MoveConstructible} +-and \oldconcept{Destructible} requirements. ++Every call wrapper\iref{func.def} meets the \oldconceptref{MoveConstructible} ++and \oldconceptref{Destructible} requirements. + An \defn{argument forwarding call wrapper} is a + call wrapper that can be called with an arbitrary argument list + and delivers the arguments to the target object as references. +@@ -10996,7 +10996,7 @@ with references as described in the corresponding forwarding steps. + \pnum + \label{term.simple.call.wrapper}% + A \defn{simple call wrapper} is a perfect forwarding call wrapper that meets +-the \oldconcept{CopyConstructible} and \oldconcept{CopyAssignable} requirements ++the \oldconceptref{CopyConstructible} and \oldconceptref{CopyAssignable} requirements + and whose copy constructor, move constructor, and assignment operators + are constexpr functions that do not throw exceptions. + +@@ -11099,7 +11099,7 @@ namespace std { + \end{codeblock} + + \pnum +-\tcode{reference_wrapper} is a \oldconcept{CopyConstructible} and \oldconcept{CopyAssignable} wrapper ++\tcode{reference_wrapper} is a \oldconceptref{CopyConstructible} and \oldconceptref{CopyAssignable} wrapper + around a reference to an object or function of type \tcode{T}. + + \pnum +@@ -12553,7 +12553,7 @@ is \tcode{true}. + + \pnum + \expects +-\tcode{FD} meets the \oldconcept{MoveConstructible} requirements. ++\tcode{FD} meets the \oldconceptref{MoveConstructible} requirements. + + \pnum + \returns +@@ -12639,10 +12639,10 @@ is \tcode{true}. + + \pnum + \expects +-\tcode{FD} meets the \oldconcept{MoveConstructible} requirements. ++\tcode{FD} meets the \oldconceptref{MoveConstructible} requirements. + For each $\tcode{T}_i$ in \tcode{BoundArgs}, + if $\tcode{T}_i$ is an object type, +-$\tcode{T}_i$ meets the \oldconcept{MoveConstructible} requirements. ++$\tcode{T}_i$ meets the \oldconceptref{MoveConstructible} requirements. + + \pnum + \returns +@@ -12708,7 +12708,7 @@ then \tcode{f != nullptr} is \tcode{true}. + \pnum + \expects + For each $\tcode{T}_i$ in \tcode{BoundArgs}, +-$\tcode{T}_i$ meets the \oldconcept{MoveConstructible} requirements. ++$\tcode{T}_i$ meets the \oldconceptref{MoveConstructible} requirements. + + \pnum + \returns +@@ -12753,7 +12753,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. + + \pnum + Specializations of the \tcode{is_bind_expression} template shall meet +-the \oldconcept{UnaryTypeTrait} requirements\iref{meta.rqmts}. The implementation ++the \oldconceptref{UnaryTypeTrait} requirements\iref{meta.rqmts}. The implementation + provides a definition that has a base characteristic of + \tcode{true_type} if \tcode{T} is a type returned from \tcode{bind}, + otherwise it has a base characteristic of \tcode{false_type}. +@@ -12789,7 +12789,7 @@ The function template \tcode{bind} uses + + \pnum + Specializations of the \tcode{is_placeholder} template shall meet +-the \oldconcept{UnaryTypeTrait} requirements\iref{meta.rqmts}. The implementation ++the \oldconceptref{UnaryTypeTrait} requirements\iref{meta.rqmts}. The implementation + provides a definition that has the base characteristic of + \tcode{integral_constant} if \tcode{T} is the type of + \tcode{std::placeholders::_\placeholder{J}}, otherwise it has a +@@ -12839,7 +12839,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> + \pnum + \expects + \tcode{FD} and each $\tcode{TD}_i$ meet +-the \oldconcept{MoveConstructible} and \oldconcept{Destructible} requirements. ++the \oldconceptref{MoveConstructible} and \oldconceptref{Destructible} requirements. + \tcode{\placeholdernc{INVOKE}(fd, $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc$, + $\tcode{w}_N$)}\iref{func.require} is a valid expression for some + values $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc{}$, $\tcode{w}_N$, where +@@ -12875,8 +12875,8 @@ the state entities of \tcode{g}. + \pnum + \begin{note} + If all of \tcode{FD} and $\tcode{TD}_i$ meet +-the requirements of \oldconcept{CopyConstructible}, then +-the return type meets the requirements of \oldconcept{CopyConstructible}. ++the requirements of \oldconceptref{CopyConstructible}, then ++the return type meets the requirements of \oldconceptref{CopyConstructible}. + \end{note} + \end{itemdescr} + +@@ -12947,13 +12947,13 @@ The number \tcode{\placeholder{M}} of placeholders is + \impldef{number of placeholders for bind expressions}. + + \pnum +-All placeholder types meet the \oldconcept{DefaultConstructible} and +-\oldconcept{CopyConstructible} requirements, and ++All placeholder types meet the \oldconceptref{DefaultConstructible} and ++\oldconceptref{CopyConstructible} requirements, and + their default constructors and copy/move + constructors are constexpr functions that + do not throw exceptions. It is \impldef{assignability of placeholder + objects} whether +-placeholder types meet the \oldconcept{CopyAssignable} requirements, ++placeholder types meet the \oldconceptref{CopyAssignable} requirements, + but if so, their copy assignment operators are + constexpr functions that do not throw exceptions. + +@@ -13234,7 +13234,7 @@ Let \tcode{FD} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{FD} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{FD} meets the \oldconceptref{CopyConstructible} requirements. + + \pnum + \ensures +@@ -13660,9 +13660,9 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{Destructible} requirements, and ++\tcode{VT} meets the \oldconceptref{Destructible} requirements, and + if \tcode{is_move_constructible_v} is \tcode{true}, +-\tcode{VT} meets the \oldconcept{MoveConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{MoveConstructible} requirements. + + \pnum + \ensures +@@ -13712,9 +13712,9 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{Destructible} requirements, and ++\tcode{VT} meets the \oldconceptref{Destructible} requirements, and + if \tcode{is_move_constructible_v} is \tcode{true}, +-\tcode{VT} meets the \oldconcept{MoveConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{MoveConstructible} requirements. + + \pnum + \ensures +@@ -13754,9 +13754,9 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{Destructible} requirements, and ++\tcode{VT} meets the \oldconceptref{Destructible} requirements, and + if \tcode{is_move_constructible_v} is \tcode{true}, +-\tcode{VT} meets the \oldconcept{MoveConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{MoveConstructible} requirements. + + \pnum + \ensures +@@ -14078,8 +14078,8 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{Destructible} and +-\oldconcept{CopyConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{Destructible} and ++\oldconceptref{CopyConstructible} requirements. + + \pnum + \ensures +@@ -14134,8 +14134,8 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{Destructible} and +-\oldconcept{CopyConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{Destructible} and ++\oldconceptref{CopyConstructible} requirements. + + \pnum + \ensures +@@ -14180,8 +14180,8 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{Destructible} and +-\oldconcept{CopyConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{Destructible} and ++\oldconceptref{CopyConstructible} requirements. + + \pnum + \ensures +@@ -14696,7 +14696,7 @@ provided to the function call operator. + + \pnum + Each specialization of a class template specified in \ref{func.search} +-shall meet the \oldconcept{CopyConst\-ruct\-ible} and \oldconcept{CopyAssignable} requirements. ++shall meet the \oldconceptref{CopyConstructible} and \oldconceptref{CopyAssignable} requirements. + Template parameters named + \begin{itemize} + \item \tcode{ForwardIterator}, +@@ -14710,7 +14710,7 @@ Template parameters named + of templates specified in + \ref{func.search} shall meet the same requirements and semantics as + specified in \ref{algorithms.general}. +-Template parameters named \tcode{Hash} shall meet the \oldconcept{Hash} ++Template parameters named \tcode{Hash} shall meet the \oldconceptref{Hash} + requirements (\tref{cpp17.hash}). + + \pnum +@@ -14819,9 +14819,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, + \pnum + \expects + The value type of \tcode{RandomAccessIterator1} meets +-the \oldconcept{DefaultConstructible}, +-\oldconcept{CopyConstructible}, and +-\oldconcept{CopyAssignable} requirements. ++the \oldconceptref{DefaultConstructible}, ++\oldconceptref{CopyConstructible}, and ++\oldconceptref{CopyAssignable} requirements. + + \pnum + Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. +@@ -14920,8 +14920,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, + \begin{itemdescr} + \pnum + \expects +-The value type of \tcode{RandomAccessIterator1} meets the \oldconcept{DefaultConstructible}, +-\oldconcept{Copy\-Constructible}, and \oldconcept{CopyAssignable} requirements. ++The value type of \tcode{RandomAccessIterator1} meets the \oldconceptref{DefaultConstructible}, ++\oldconceptref{CopyConstructible}, and \oldconceptref{CopyAssignable} requirements. + + \pnum + Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. +@@ -14994,7 +14994,7 @@ as the default hash function. + Each specialization of \tcode{hash} is either enabled or disabled, + as described below. + \begin{note} +-Enabled specializations meet the \oldconcept{Hash} requirements, and ++Enabled specializations meet the \oldconceptref{Hash} requirements, and + disabled specializations do not. + \end{note} + Each header that declares the template \tcode{hash} +@@ -15021,17 +15021,17 @@ Disabled specializations of \tcode{hash} + are not function object types\iref{function.objects}. + \begin{note} + This means that the specialization of \tcode{hash} exists, but +-any attempts to use it as a \oldconcept{Hash} will be ill-formed. ++any attempts to use it as a \oldconceptref{Hash} will be ill-formed. + \end{note} + + \pnum + An enabled specialization \tcode{hash} will: + \begin{itemize} +-\item meet the \oldconcept{Hash} requirements (\tref{cpp17.hash}), ++\item meet the \oldconceptref{Hash} requirements (\tref{cpp17.hash}), + with \tcode{Key} as the function +-call argument type, the \oldconcept{Default\-Constructible} requirements (\tref{cpp17.defaultconstructible}), +-the \oldconcept{CopyAssignable} requirements (\tref{cpp17.copyassignable}), +-the \oldconcept{Swappable} requirements\iref{swappable.requirements}, ++call argument type, the \oldconceptref{DefaultConstructible} requirements (\tref{cpp17.defaultconstructible}), ++the \oldconceptref{CopyAssignable} requirements (\tref{cpp17.copyassignable}), ++the \oldconceptref{Swappable} requirements\iref{swappable.requirements}, + \item meet the requirement that if \tcode{k1 == k2} is \tcode{true}, \tcode{h(k1) == h(k2)} is + also \tcode{true}, where \tcode{h} is an object of type \tcode{hash} and \tcode{k1} and \tcode{k2} + are objects of type \tcode{Key}; +-- +2.34.1 + + +From 15d495cd3d62ecddc4a24377ecd22078c5f0fbd5 Mon Sep 17 00:00:00 2001 +From: Eelis van der Weegen +Date: Sun, 28 Jul 2024 11:08:01 +0200 +Subject: [PATCH 13/14] Remove awkward \linebreaks. + +--- + source/algorithms.tex | 2 +- + source/containers.tex | 49 +++++++++++++++++++++---------------------- + source/exec.tex | 18 ++++++++-------- + source/memory.tex | 6 +++--- + source/meta.tex | 2 +- + source/numerics.tex | 4 ++-- + source/ranges.tex | 36 +++++++++++++++---------------- + source/utilities.tex | 10 ++++----- + 8 files changed, 63 insertions(+), 64 deletions(-) + +diff --git a/source/algorithms.tex b/source/algorithms.tex +index 8442cb43..b6b8cdf1 100644 +--- a/source/algorithms.tex ++++ b/source/algorithms.tex +@@ -5602,7 +5602,7 @@ Let: + \tcode{invoke(op, invoke(proj, *(first1 + (i - result))))} + for unary transforms defined in namespace \tcode{ranges}; + \item +- \tcode{invoke(binary_op, invoke(proj1, *(first1 + (i - result))), invoke(proj2,\linebreak *(first2 + (i - result))))} ++ \tcode{invoke(binary_op, invoke(proj1, *(first1 + (i - result))), invoke(proj2, *(first2 + (i - result))))} + for binary transforms defined in namespace \tcode{ranges}. + \end{itemize} + \end{itemize} +diff --git a/source/containers.tex b/source/containers.tex +index e36e8c06..335461f1 100644 +--- a/source/containers.tex ++++ b/source/containers.tex +@@ -2373,8 +2373,7 @@ calling \tcode{ator_traits::template rebind_traits::dealloc + Assigns \tcode{nh.ptr_} to \tcode{ptr_}. + \item + If \tcode{!alloc\textunderscore} or \tcode{ator_traits::propagate_on_container_move_assignment::value} +-is \tcode{true}, \linebreak +-move assigns \tcode{nh.alloc_} to \tcode{alloc_}. ++is \tcode{true}, move assigns \tcode{nh.alloc_} to \tcode{alloc_}. + \item + Assigns + \keyword{nullptr} to \tcode{nh.ptr_} and assigns \tcode{nullopt} to +@@ -7389,14 +7388,14 @@ template + \pnum + \expects + \tcode{T} is \oldconcept{EmplaceConstructible} into \tcode{forward_list} +-from \tcode{std::forward(\linebreak args)...}. ++from \tcode{std::forward(args)...}. + \tcode{position} is \tcode{before_begin()} or is a dereferenceable + iterator in the range \range{begin()}{end()}. + + \pnum + \effects + Inserts an object of type \tcode{value_type} direct-non-list-initialized with +-\tcode{std::forward(\linebreak args)...} after \tcode{position}. ++\tcode{std::forward(args)...} after \tcode{position}. + + \pnum + \returns +@@ -9418,7 +9417,7 @@ template + \pnum + The expression + \tcode{\exposid{is-vector-bool-reference}} is \tcode{true} +-if \tcode{T} denotes the type \tcode{vector::\linebreak{}reference} ++if \tcode{T} denotes the type \tcode{vector::reference} + for some type \tcode{Alloc} and + \tcode{vector} is not a program-defined specialization. \end{itemdescr} -@@ -10857,7 +10856,7 @@ there is no effect. +@@ -10809,7 +10808,7 @@ there is no effect. Otherwise, let \tcode{r} be \tcode{equal_range(k)}. Constructs an object \tcode{u} of type \tcode{value_type} with \tcode{piecewise_construct, forward_as_tuple(std::forward(k)), @@ -10651,16 +12221,7 @@ index a3413233..5345d2b6 100644 If \tcode{equal_range(u.first) == r} is \tcode{false}, the behavior is undefined. Inserts \tcode{u} into \tcode{*this}. -@@ -15277,7 +15276,7 @@ template<@\exposconcept{container-compatible-range}@ R, class Alloc> - \effects - Initializes - \tcode{c} with \tcode{ranges::to(std::forward(rg), a)}; --calls \tcode{make_heap(c.\linebreak begin(), c.end(), comp)}. -+calls \tcode{make_heap(c.begin(), c.end(), comp)}. - \end{itemdescr} - - \rSec3[priqueue.members]{Members} -@@ -16293,7 +16292,7 @@ template +@@ -16266,7 +16265,7 @@ template \pnum \effects Equivalent to \tcode{flat_map(s, key_cont, mapped_cont)} and @@ -10669,7 +12230,7 @@ index a3413233..5345d2b6 100644 except that \tcode{c.keys} and \tcode{c.values} are constructed with uses-allocator construction\iref{allocator.uses.construction}. -@@ -16476,7 +16475,7 @@ template pair emplace(Args&&... args); +@@ -16449,7 +16448,7 @@ template pair emplace(Args&&... args); \pnum \effects Initializes an object \tcode{t} of type \tcode{pair} @@ -10678,7 +12239,7 @@ index a3413233..5345d2b6 100644 if the map already contains an element whose key is equivalent to \tcode{t.first}, \tcode{*this} is unchanged. -@@ -16753,7 +16752,7 @@ template +@@ -16726,7 +16725,7 @@ template \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -10687,7 +12248,7 @@ index a3413233..5345d2b6 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -16808,7 +16807,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. +@@ -16781,7 +16780,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -10696,7 +12257,7 @@ index a3413233..5345d2b6 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -17413,14 +17412,14 @@ template +@@ -17386,14 +17385,14 @@ template \pnum \effects Equivalent to \tcode{flat_multimap(key_cont, mapped_cont)} and @@ -10713,7 +12274,7 @@ index a3413233..5345d2b6 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -21903,7 +21902,7 @@ is representable as a value of type \tcode{index_type.} +@@ -21915,7 +21914,7 @@ is representable as a value of type \tcode{index_type.} \item If \exposid{rank_} is greater than one, then the product of @@ -10722,7 +12283,7 @@ index a3413233..5345d2b6 100644 all values \tcode{ext.extent($k$)} with $k$ in the range of \range{1}{\exposid{rank_}} is representable as a value of type \tcode{index_type}. -@@ -21982,7 +21981,7 @@ template +@@ -21994,7 +21993,7 @@ template \item If \exposid{rank_} is greater than \tcode{1} and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -10731,7 +12292,7 @@ index a3413233..5345d2b6 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(0))) -@@ -22049,7 +22048,7 @@ is \tcode{true}. +@@ -22061,7 +22060,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -10740,7 +12301,7 @@ index a3413233..5345d2b6 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(0))) -@@ -22447,7 +22446,7 @@ Implementations should not store this value +@@ -22459,7 +22458,7 @@ Implementations should not store this value if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. \begin{note} Using \tcode{extents} @@ -10749,7 +12310,7 @@ index a3413233..5345d2b6 100644 would achieve this. \end{note} \end{itemdescr} -@@ -22530,13 +22529,13 @@ is representable as a value of type \tcode{index_type}. +@@ -22542,13 +22541,13 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -10765,7 +12326,7 @@ index a3413233..5345d2b6 100644 \end{itemize} \pnum -@@ -22609,7 +22608,7 @@ template +@@ -22621,7 +22620,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -10774,7 +12335,7 @@ index a3413233..5345d2b6 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -22677,7 +22676,7 @@ is \tcode{true}. +@@ -22689,7 +22688,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -10783,7 +12344,7 @@ index a3413233..5345d2b6 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) -@@ -24078,7 +24077,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, +@@ -24090,7 +24089,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, \item \tcode{stride(k) * \exposid{de-ice}($s_k$.stride)} if $S_k$ is a specialization of \tcode{strided_slice} and @@ -10792,7 +12353,7 @@ index a3413233..5345d2b6 100644 \item otherwise, \tcode{stride($k$)}. \end{itemize} -@@ -24483,11 +24482,11 @@ is well-formed when treated as an unevaluated operand. +@@ -24495,11 +24494,11 @@ is well-formed when treated as an unevaluated operand. \begin{itemize} \item \tcode{decltype(submdspan_mapping(src.mapping(), slices...))} @@ -10806,7 +12367,7 @@ index a3413233..5345d2b6 100644 is \tcode{true}. \item -@@ -24517,11 +24516,11 @@ all of the following are \tcode{true}: +@@ -24529,11 +24528,11 @@ all of the following are \tcode{true}: \item $0 \le \tcode{\exposid{first_}(slices...)}$ $\le \tcode{\exposid{last_}<$k$>(src.extents(), slices...)}$ @@ -10821,10 +12382,10 @@ index a3413233..5345d2b6 100644 \item diff --git a/source/exec.tex b/source/exec.tex -index 10e35c35..5c65ae87 100644 +index a7168c10..69cc7492 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -2794,7 +2794,7 @@ except that \tcode{sch} is evaluated only once. +@@ -2801,7 +2801,7 @@ except that \tcode{sch} is evaluated only once. Let \tcode{out_sndr} and \tcode{env} be subexpressions such that \tcode{OutSndr} is \tcode{decltype((out_sndr))}. If \tcode{\exposconcept{sender-for}} is \tcode{false}, @@ -10833,7 +12394,7 @@ index 10e35c35..5c65ae87 100644 \tcode{starts_on.transform_sender(out_sndr, env)} are ill-formed; otherwise \begin{itemize} \item -@@ -3147,7 +3147,7 @@ except that \tcode{sndr} is evaluated only once. +@@ -3154,7 +3154,7 @@ except that \tcode{sndr} is evaluated only once. \pnum Let \tcode{out_sndr} and \tcode{env} be subexpressions, let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and @@ -10842,7 +12403,7 @@ index 10e35c35..5c65ae87 100644 If \tcode{\exposconcept{sender-for}} is \tcode{false}, then the expressions \tcode{on.transform_env(out_sndr, env)} and \tcode{on.transform_sender(out_sndr, env)} are ill-formed. -@@ -3309,7 +3309,7 @@ Let the expression \exposid{then-cpo} be one of +@@ -3316,7 +3316,7 @@ Let the expression \exposid{then-cpo} be one of For subexpressions \tcode{sndr} and \tcode{f}, if \tcode{decltype((sndr))} does not satisfy \libconcept{sender}, or \tcode{decltype((f))} does not satisfy \exposconcept{movable-value}, @@ -10851,7 +12412,7 @@ index 10e35c35..5c65ae87 100644 \pnum Otherwise, -@@ -3478,7 +3478,7 @@ to the \tcode{completion_signatures} specialization named by +@@ -3485,7 +3485,7 @@ to the \tcode{completion_signatures} specialization named by Let \tcode{LetSigs} be a pack of those types in \tcode{Sigs} with a return type of \tcode{\exposid{decayed-typeof}<\exposid{set-cpo}>}. Let \exposid{as-tuple} be an alias template @@ -10860,7 +12421,7 @@ index 10e35c35..5c65ae87 100644 the type \tcode{\exposid{decayed-tuple}}. Then \tcode{args_variant_t} denotes the type \tcode{variant...>} -@@ -3533,7 +3533,7 @@ is initialized with a callable object equivalent to the following: +@@ -3540,7 +3540,7 @@ is initialized with a callable object equivalent to the following: Let \tcode{sndr} and \tcode{env} be subexpressions, and let \tcode{Sndr} be \tcode{decltype((sndr))}. If @@ -10869,7 +12430,7 @@ index 10e35c35..5c65ae87 100644 is \tcode{false}, then the expression \tcode{\exposid{let-cpo}.transform_env(sndr, env)} is ill-formed. -@@ -4280,7 +4280,7 @@ try { +@@ -4287,7 +4287,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -10878,7 +12439,7 @@ index 10e35c35..5c65ae87 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -4593,7 +4593,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. +@@ -4600,7 +4600,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. \pnum For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. @@ -10887,7 +12448,7 @@ index 10e35c35..5c65ae87 100644 is \tcode{false}, the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: -@@ -4664,7 +4664,7 @@ is \tcode{true}, where $e$ is the \tcode{ap\-ply_sender} expression above. +@@ -4671,7 +4671,7 @@ is \tcode{true}, where $e$ is the \tcode{ap\-ply_sender} expression above. \pnum If \tcode{\exposconcept{callable}} is \tcode{false}, @@ -10896,7 +12457,7 @@ index 10e35c35..5c65ae87 100644 Otherwise, it is equivalent to: \begin{codeblock} using result_type = @\exposid{sync-wait-with-variant-result-type}@; -@@ -4907,7 +4907,7 @@ Let \tcode{Vs} be a pack of the types in the \exposid{type-list} named by +@@ -4914,7 +4914,7 @@ Let \tcode{Vs} be a pack of the types in the \exposid{type-list} named by Let \tcode{Es} be a pack of the types in the \exposid{type-list} named by \tcode{\exposid{gather-signatures}}, where \exposid{error-list} is an alias template @@ -10905,21 +12466,8 @@ index 10e35c35..5c65ae87 100644 \tcode{\exposid{type-list}...>}. \pnum -diff --git a/source/locales.tex b/source/locales.tex -index 59a117be..352fc231 100644 ---- a/source/locales.tex -+++ b/source/locales.tex -@@ -5005,7 +5005,7 @@ friend constexpr bool operator==(const text_encoding& a, const text_encoding& b) - \returns - If \tcode{a.\exposid{mib_} == id::other \&\& b.\exposid{mib_} == id::other} - is \tcode{true}, --then \tcode{\exposid{comp-name}(a.\exposid{name_},\linebreak{}b.\exposid{name_})}. -+then \tcode{\exposid{comp-name}(a.\exposid{name_}, b.\exposid{name_})}. - Otherwise, \tcode{a.\exposid{mib_} == b.\exposid{mib_}}. - \end{itemdescr} - diff --git a/source/memory.tex b/source/memory.tex -index dc8df77d..62599fcb 100644 +index 0b36bff3..4d61ce25 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1075,7 +1075,7 @@ A \tcode{tuple} value determined as follows: @@ -10950,10 +12498,10 @@ index dc8df77d..62599fcb 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index a8174841..aad3d8bf 100644 +index efdc929b..20cefd6c 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -2167,7 +2167,7 @@ present as follows: +@@ -2154,7 +2154,7 @@ present as follows: \item Let \tcode{R} be \tcode{\placeholdernc{COMMON-REF}(T1, T2)}. If \tcode{T1} and \tcode{T2} are reference types, \tcode{R} is well-formed, and @@ -10963,10 +12511,10 @@ index a8174841..aad3d8bf 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index 4fc71f79..02b89b5e 100644 +index 8e4ab352..f07cb636 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -13684,7 +13684,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. +@@ -13688,7 +13688,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -10975,7 +12523,7 @@ index 4fc71f79..02b89b5e 100644 \pnum \returns -@@ -13890,7 +13890,7 @@ template +@@ -13894,7 +13894,7 @@ template \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -10985,7 +12533,7 @@ index 4fc71f79..02b89b5e 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index f5330589..810db9dc 100644 +index 7f69027e..f585d4db 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -3525,7 +3525,7 @@ constexpr explicit repeat_view(piecewise_construct_t, @@ -11130,10 +12678,10 @@ index f5330589..810db9dc 100644 \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index df1d8667..0eb65eeb 100644 +index a38cb3ed..bf1c5040 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -2039,7 +2039,7 @@ equals \tcode{tuple_size_v>}, +@@ -2034,7 +2034,7 @@ equals \tcode{tuple_size_v>}, \item \tcode{(is_constructible_v(std::forward(u)))> \&\& ...)} @@ -11142,7 +12690,7 @@ index df1d8667..0eb65eeb 100644 \tcode{true}, and \item -@@ -3060,7 +3060,7 @@ struct basic_common_reference { +@@ -3055,7 +3055,7 @@ struct basic_common_reference { denotes a type. \end{itemize} The member \grammarterm{typedef-name} \tcode{type} denotes the type @@ -11151,7 +12699,7 @@ index df1d8667..0eb65eeb 100644 \end{itemdescr} \indexlibrarymember{common_type}{tuple}% -@@ -4042,7 +4042,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and +@@ -4037,7 +4037,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and \pnum All requirements on container iterators\iref{container.reqmts} apply to @@ -11160,7 +12708,7 @@ index df1d8667..0eb65eeb 100644 \pnum Any operation that initializes or destroys the contained value of an optional object invalidates all iterators into that object. -@@ -8380,7 +8380,7 @@ constexpr const T&& value() const &&; +@@ -8375,7 +8375,7 @@ constexpr const T&& value() const &&; \pnum \mandates \tcode{is_copy_constructible_v} is \tcode{true} and @@ -11169,7 +12717,7 @@ index df1d8667..0eb65eeb 100644 \pnum \returns -@@ -14413,7 +14413,7 @@ that models \libconcept{copyable}. +@@ -14408,7 +14408,7 @@ that models \libconcept{copyable}. \pnum Within \ref{func.wrap.ref}, \tcode{\placeholder{call-args}} is an argument pack with elements such that @@ -11178,32 +12726,14 @@ index df1d8667..0eb65eeb 100644 \tcode{Args\&\&...} respectively. \rSec4[func.wrap.ref.ctor]{Constructors and assignment operators} -@@ -18483,7 +18483,7 @@ template explicit basic_format_arg(T& v) noexcept; - \pnum - \expects - If \tcode{decay_t} is \tcode{char_type*} or \tcode{const char_type*}, --\tcode{static_cast(v)} points to a NTCTS\iref{defns.ntcts}. -+\tcode{static_cast(v)} points to a NTCTS\iref{defns.ntcts}. - - \pnum - \effects -@@ -18670,7 +18670,7 @@ template - \pnum - \expects - The type --\tcode{typename Context::template formatter_type>}\linebreak{} -+\tcode{typename Context::template formatter_type>} - meets the \newoldconcept{BasicFormatter} requirements\iref{formatter.requirements} - for each $\tcode{T}_i$ in \tcode{Args}. - -- 2.34.1 -From 272c002d69d37c14612a779c3d1db0bea5cf75d3 Mon Sep 17 00:00:00 2001 +From 3db40d694c6426296726676483fce56317457278 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 13:48:14 +0200 -Subject: [PATCH 18/18] Avoid `for\-ward`. +Subject: [PATCH 14/14] Avoid `for\-ward`. Because the 'for' gets highlighted as a keyword. --- @@ -11215,10 +12745,10 @@ Because the 'for' gets highlighted as a keyword. 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index fd9f31ad..a20c25cf 100644 +index b6b8cdf1..3022b874 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -11714,7 +11714,7 @@ Otherwise, calls \tcode{ranges::generate(std::forward(r), ref(g))}. +@@ -11890,7 +11890,7 @@ Otherwise, calls \tcode{ranges::generate(std::forward(r), ref(g))}. \pnum \remarks The effects of \tcode{generate_random(r, g)} shall be equivalent to @@ -11228,10 +12758,10 @@ index fd9f31ad..a20c25cf 100644 This implies that \tcode{g.generate_random(a)} fills \tcode{a} with the same values as produced by invocation of \tcode{g()}. diff --git a/source/containers.tex b/source/containers.tex -index 5345d2b6..44c3d825 100644 +index 335461f1..8136d9bd 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -10761,7 +10761,7 @@ template +@@ -10713,7 +10713,7 @@ template \pnum \expects \tcode{value_type} is \oldconcept{EmplaceConstructible} into \tcode{map} @@ -11240,7 +12770,7 @@ index 5345d2b6..44c3d825 100644 \tcode{forward_as_tuple(std::forward(args)...)}. \pnum -@@ -10799,7 +10799,7 @@ template +@@ -10751,7 +10751,7 @@ template \pnum \expects \tcode{value_type} is \oldconcept{EmplaceConstructible} into \tcode{map} @@ -11249,7 +12779,7 @@ index 5345d2b6..44c3d825 100644 \tcode{forward_as_tuple(std::forward(args)...)}. \pnum -@@ -10896,7 +10896,7 @@ from \tcode{k}, \tcode{std::forward(obj)}. +@@ -10848,7 +10848,7 @@ from \tcode{k}, \tcode{std::forward(obj)}. \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11258,7 +12788,7 @@ index 5345d2b6..44c3d825 100644 Otherwise inserts an object of type \tcode{value_type} constructed with \tcode{k}, \tcode{std::forward(obj)}. -@@ -10930,13 +10930,13 @@ template +@@ -10882,13 +10882,13 @@ template \pnum \expects \tcode{value_type} is \oldconcept{EmplaceConstructible} into \tcode{map} @@ -11274,7 +12804,7 @@ index 5345d2b6..44c3d825 100644 Otherwise inserts an object of type \tcode{value_type} constructed with \tcode{std::\brk{}move(k)}, \tcode{std::forward(obj)}. -@@ -12878,13 +12878,13 @@ template +@@ -12822,13 +12822,13 @@ template \pnum \expects \tcode{value_type} is \oldconcept{EmplaceConstructible} into \tcode{unordered_map} @@ -11290,7 +12820,7 @@ index 5345d2b6..44c3d825 100644 Otherwise inserts an object of type \tcode{value_type} constructed with \tcode{k}, \tcode{std::forward(obj)}. -@@ -12924,7 +12924,7 @@ from \tcode{std::move(k)}, \tcode{std::\brk{}forward(obj)}. +@@ -12868,7 +12868,7 @@ from \tcode{std::move(k)}, \tcode{std::\brk{}forward(obj)}. \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11300,7 +12830,7 @@ index 5345d2b6..44c3d825 100644 constructed with \tcode{std::\brk{}move(k)}, \tcode{std::forward(obj)}. diff --git a/source/ranges.tex b/source/ranges.tex -index 810db9dc..cad70c39 100644 +index f585d4db..36ee86b6 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -6649,7 +6649,7 @@ namespace std::ranges { @@ -11322,10 +12852,10 @@ index 810db9dc..cad70c39 100644 Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} diff --git a/source/threads.tex b/source/threads.tex -index e74ae4f8..4d23c064 100644 +index 156520e0..e9bac191 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -11636,7 +11636,7 @@ the corresponding policies): +@@ -11633,7 +11633,7 @@ the corresponding policies): \begin{itemize} \item If \tcode{launch::async} is set in \tcode{policy}, calls @@ -11334,7 +12864,7 @@ index e74ae4f8..4d23c064 100644 as if in a new thread of execution represented by a \tcode{thread} object with the values produced by \tcode{auto} being materialized\iref{conv.rval} in the thread that called \tcode{async}. -@@ -11654,7 +11654,7 @@ reference that state. +@@ -11651,7 +11651,7 @@ reference that state. \item If \tcode{launch::deferred} is set in \tcode{policy}, stores \tcode{auto(std::forward(f))} and @@ -11344,10 +12874,10 @@ index e74ae4f8..4d23c064 100644 a \defnadj{deferred}{function}. Invocation of the deferred function evaluates \tcode{invoke(std::move(g), std::move(xyz))} where \tcode{g} is the stored value of diff --git a/source/utilities.tex b/source/utilities.tex -index 0eb65eeb..659631aa 100644 +index bf1c5040..9402c2ac 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -6812,7 +6812,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -6807,7 +6807,7 @@ Let \tcode{VT} be \tcode{decay_t}. \effects Calls \tcode{reset()}. Then direct-non-list-initializes the contained value of type \tcode{VT} @@ -11356,7 +12886,7 @@ index 0eb65eeb..659631aa 100644 \pnum \ensures -@@ -9689,7 +9689,7 @@ is well-formed. +@@ -9684,7 +9684,7 @@ is well-formed. If \tcode{has_value()} is \tcode{true}, \tcode{expected()}; otherwise, an \tcode{expected} object whose \exposid{has_val} member is \tcode{false} and \exposid{unex} member is direct-non-list-initialized with @@ -11365,7 +12895,7 @@ index 0eb65eeb..659631aa 100644 \end{itemdescr} \indexlibrarymember{transform_error}{expected}% -@@ -9717,7 +9717,7 @@ is well-formed. +@@ -9712,7 +9712,7 @@ is well-formed. If \tcode{has_value()} is \tcode{true}, \tcode{expected()}; otherwise, an \tcode{expected} object whose \exposid{has_val} member is \tcode{false} and \exposid{unex} member is direct-non-list-initialized with @@ -11374,7 +12904,7 @@ index 0eb65eeb..659631aa 100644 \end{itemdescr} \rSec3[expected.void.eq]{Equality operators} -@@ -13767,7 +13767,7 @@ if \tcode{is_move_constructible_v} is \tcode{true}, +@@ -13762,7 +13762,7 @@ if \tcode{is_move_constructible_v} is \tcode{true}, \ensures \tcode{*this} has a target object of type \tcode{VT} direct-non-list-initialized with @@ -11383,7 +12913,7 @@ index 0eb65eeb..659631aa 100644 \pnum \throws -@@ -14192,7 +14192,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14187,7 +14187,7 @@ Let \tcode{VT} be \tcode{decay_t}. \ensures \tcode{*this} has a target object of type \tcode{VT} direct-non-list-initialized with diff --git a/lastbuild.sig b/lastbuild.sig index ef01d866e8..22672d4204 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ -htmlgen f07f4924114021f350a3294cdcc56ab6f2e41dc5 -draft 9243ba5befaea8fd3e878e6114942db8d556a6e0 -e7afedded0c35d572d2fd101ac61be1fb54e2cc3 htmlgen.patch +htmlgen dc6b69f5e4843cb603137f3dda69b9bf3e035d3d +draft bf43925ff0d9e80997918e98989892b4c7bf15f7 +067f63ad698540efab9c0448e7f859e5da5b4958 htmlgen.patch From 9b08d24f5e9db2a65f3cc1558122a4cc9394a5b3 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Thu, 31 Oct 2024 01:49:25 -0500 Subject: [PATCH 02/36] Revert annex-f formula Also add tables/figures/equations, because why not. Fixes #10 --- gen_html_std.sh | 9 ++++----- gh-pages | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/gen_html_std.sh b/gen_html_std.sh index c887cd029b..acd2d711cf 100755 --- a/gen_html_std.sh +++ b/gen_html_std.sh @@ -46,12 +46,11 @@ latexmk -pdf std cp std.pdf std_orig.pdf # create the "annex-f" file that maps stable names to section numbers - grep '^\\newlabel{' *.aux \ -| grep -v '\\newlabel{\(fig\|tab\):' \ -| sed 's/^.*\.aux://' \ -| sed 's/^\\newlabel{\([^}]*\)}{{\([^}]*\)}.*/\1 \2/' \ + grep -h '^\\newlabel{' *.aux \ +| sed 's/\\newlabel{\([^}]*\)}.*TitleReference {\([^}]*\)}.*/\1 \2/' \ +| sed 's/\\newlabel{\([^}]*\)}{{\(Clause\|Annex\) \([^}]*\)}.*/\1 \3/' \ +| sed 's/\\newlabel{\(eq:[^}]*\)}{{\([^}]*\)}.*/\1 \2/' \ | grep -v '^\\' \ -| sed 's/\(Clause\|Annex\) //' \ | sort > annex-f if [ -f ../../htmlgen.patch ] diff --git a/gh-pages b/gh-pages index 5fde7c50be..96840e011d 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 5fde7c50bee1e8b35d2284c7c787c600962314a0 +Subproject commit 96840e011d042f49b670e8991b13d9d7a3155bb6 From 6906e4c8162359c9a75f9aa7d763b009cfc23dee Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Thu, 31 Oct 2024 01:49:54 -0500 Subject: [PATCH 03/36] Update --- gh-pages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gh-pages b/gh-pages index 96840e011d..e4a6423c84 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 96840e011d042f49b670e8991b13d9d7a3155bb6 +Subproject commit e4a6423c84ae8ee6c2256e2f4f56851bbf348ac2 From 71b99ecad2b2c6fc8c9c8eaaa2e3fd1d7629be1f Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Thu, 31 Oct 2024 20:32:01 -0500 Subject: [PATCH 04/36] Handle both memoir versions --- gen_html_std.sh | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/gen_html_std.sh b/gen_html_std.sh index acd2d711cf..e4d5de4a88 100755 --- a/gen_html_std.sh +++ b/gen_html_std.sh @@ -46,12 +46,25 @@ latexmk -pdf std cp std.pdf std_orig.pdf # create the "annex-f" file that maps stable names to section numbers - grep -h '^\\newlabel{' *.aux \ + +# Memoir 3.8 changed the content of the .aux files so as to require a different incantation +if grep -q TitleReference *.aux +then +# Memoir < 3.8 + grep -h '^\\newlabel{' *.aux \ | sed 's/\\newlabel{\([^}]*\)}.*TitleReference {\([^}]*\)}.*/\1 \2/' \ | sed 's/\\newlabel{\([^}]*\)}{{\(Clause\|Annex\) \([^}]*\)}.*/\1 \3/' \ | sed 's/\\newlabel{\(eq:[^}]*\)}{{\([^}]*\)}.*/\1 \2/' \ -| grep -v '^\\' \ +| grep -v '^\\' \ +| sort > annex-f +else + grep -h '^\\newlabel{' *.aux \ +| sed 's/^\\newlabel{\([^}]*\)}{{\([^}]*\)}.*/\1 \2/' \ +| grep -v '^\\' \ +| sed 's/\(Clause\|Annex\) //' \ | sort > annex-f +fi + if [ -f ../../htmlgen.patch ] then From 030371d1502b15284601a757b27f305ead395739 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Sun, 29 Dec 2024 15:31:53 -0600 Subject: [PATCH 05/36] Update --- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 2260 +++++++++++++++++++++++-------------------------- lastbuild.sig | 4 +- 4 files changed, 1052 insertions(+), 1216 deletions(-) diff --git a/draft b/draft index bf43925ff0..399b93910d 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit bf43925ff0d9e80997918e98989892b4c7bf15f7 +Subproject commit 399b93910d0bb6f5632405ad188e9f4aad0ae99a diff --git a/gh-pages b/gh-pages index e4a6423c84..1ee006e75f 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit e4a6423c84ae8ee6c2256e2f4f56851bbf348ac2 +Subproject commit 1ee006e75f3f9bf6dbb579842d2ff6bea90efbf6 diff --git a/htmlgen.patch b/htmlgen.patch index 347eea8f3b..24d93f2171 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,87 +1,7 @@ -From f63094e68c8868dfcc6c7d83f4c237eba79ab940 Mon Sep 17 00:00:00 2001 -From: Eelis van der Weegen -Date: Sun, 28 Jul 2024 09:22:46 +0200 -Subject: [PATCH 01/14] [exec] Index many library names. - ---- - source/exec.tex | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - -diff --git a/source/exec.tex b/source/exec.tex -index 142f9c1e..921ec28c 100644 ---- a/source/exec.tex -+++ b/source/exec.tex -@@ -2165,7 +2165,7 @@ namespace std::execution { - \begin{itemdecl} - template<@\libconcept{sender}@ Sndr, @\exposconcept{queryable}@... Env> - requires (sizeof...(Env) <= 1) --constexpr @\libconcept{sender}@ decltype(auto) transform_sender(Sndr&& sndr, const Env&... env) -+constexpr @\libconcept{sender}@ decltype(auto) @\libmember{transform_sender}{default_domain}@(Sndr&& sndr, const Env&... env) - noexcept(@\seebelow@); - \end{itemdecl} - -@@ -2190,7 +2190,7 @@ The exception specification is equivalent to \tcode{noexcept(e)}. - \indexlibrarymember{transform_env}{default_domain}% - \begin{itemdecl} - template<@\libconcept{sender}@ Sndr, @\exposconcept{queryable}@ Env> -- constexpr @\exposconcept{queryable}@ decltype(auto) transform_env(Sndr&& sndr, Env&& env) noexcept; -+ constexpr @\exposconcept{queryable}@ decltype(auto) @\libmember{transform_env}{default_domain}@(Sndr&& sndr, Env&& env) noexcept; - \end{itemdecl} - - \begin{itemdescr} -@@ -2214,7 +2214,7 @@ otherwise, \tcode{static_cast(std::forward(env))}. - \indexlibrarymember{apply_sender}{default_domain}% - \begin{itemdecl} - template --constexpr decltype(auto) apply_sender(Tag, Sndr&& sndr, Args&&... args) -+constexpr decltype(auto) @\libmember{apply_sender}{default_domain}@(Tag, Sndr&& sndr, Args&&... args) - noexcept(@\seebelow@); - \end{itemdecl} - -@@ -2245,7 +2245,7 @@ The exception specification is equivalent to \tcode{noexcept(e)}. - namespace std::execution { - template - requires (sizeof...(Env) <= 1) -- constexpr @\libconcept{sender}@ decltype(auto) transform_sender(Domain dom, Sndr&& sndr, const Env&... env) -+ constexpr @\libconcept{sender}@ decltype(auto) @\libglobal{transform_sender}@(Domain dom, Sndr&& sndr, const Env&... env) - noexcept(@\seebelow@); - } - \end{itemdecl} -@@ -2282,7 +2282,7 @@ The exception specification is equivalent to - \begin{itemdecl} - namespace std::execution { - template -- constexpr @\exposconcept{queryable}@ decltype(auto) transform_env(Domain dom, Sndr&& sndr, Env&& env) noexcept; -+ constexpr @\exposconcept{queryable}@ decltype(auto) @\libglobal{transform_env}@(Domain dom, Sndr&& sndr, Env&& env) noexcept; - } - \end{itemdecl} - -@@ -5438,7 +5438,7 @@ namespace std::execution { - \begin{itemdecl} - template - requires (!@\libconcept{same_as}@) --void set_continuation(coroutine_handle h) noexcept; -+void @\libmember{set_continuation}{with_awaitable_senders}@(coroutine_handle h) noexcept; - \end{itemdecl} - - \begin{itemdescr} -@@ -5461,7 +5461,7 @@ if constexpr ( requires(OtherPromise& other) { other.unhandled_stopped(); } ) { - \indexlibrarymember{await_transform}{with_awaitable_senders}% - \begin{itemdecl} - template --@\exposid{call-result-t}@ await_transform(Value&& value); -+@\exposid{call-result-t}@ @\libmember{await_transform}{with_awaitable_senders}@(Value&& value); - \end{itemdecl} - - \begin{itemdescr} --- -2.34.1 - - -From 930e470e04a01db269936a4a3f4292da6002314e Mon Sep 17 00:00:00 2001 +From 7c956d9da18d79fe1ec537169949cf5ffeba5441 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 5 Dec 2018 01:09:09 +0100 -Subject: [PATCH 02/14] Use \range where appropriate. +Subject: [PATCH 01/13] Use \range where appropriate. --- source/algorithms.tex | 6 +++--- @@ -89,10 +9,10 @@ Subject: [PATCH 02/14] Use \range where appropriate. 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index d723b7e1..94b6ff03 100644 +index cea87802..b23120d4 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -7584,7 +7584,7 @@ The elements \tcode{e} of \range{first}{last} +@@ -7565,7 +7565,7 @@ The elements \tcode{e} of \range{first}{last} are partitioned with respect to the expressions \tcode{bool(invoke(comp, invoke(proj, e), value))} and \tcode{!bool(invoke(comp, value, invoke(proj, e)))}. @@ -101,7 +21,7 @@ index d723b7e1..94b6ff03 100644 \tcode{bool(comp(e, value))} implies \tcode{!bool(comp(\brk{}value, e))} for the overloads in namespace \tcode{std}. -@@ -7651,7 +7651,7 @@ The elements \tcode{e} of \range{first}{last} +@@ -7632,7 +7632,7 @@ The elements \tcode{e} of \range{first}{last} are partitioned with respect to the expressions \tcode{bool(invoke(comp, invoke(proj, e), value))} and \tcode{!bool(invoke(comp, value, invoke(proj, e)))}. @@ -110,7 +30,7 @@ index d723b7e1..94b6ff03 100644 \tcode{bool(comp(e, value))} implies \tcode{!bool(comp(\brk{}value, e))} for the overloads in namespace \tcode{std}. -@@ -10837,7 +10837,7 @@ move assigns from \tcode{val} to \tcode{acc}. +@@ -10818,7 +10818,7 @@ move assigns from \tcode{val} to \tcode{acc}. \pnum For the overloads with an \tcode{ExecutionPolicy} and a non-empty range, performs \tcode{*result = *first}. @@ -120,10 +40,10 @@ index d723b7e1..94b6ff03 100644 \pnum diff --git a/source/strings.tex b/source/strings.tex -index c0dc123c..7b6a11a4 100644 +index 48e2bee8..fde8e62c 100644 --- a/source/strings.tex +++ b/source/strings.tex -@@ -151,19 +151,19 @@ the smallest \tcode{i} such that \tcode{X::eq(p[i],charT())} is \tcode{true}. & +@@ -152,19 +152,19 @@ the smallest \tcode{i} such that \tcode{X::eq(p[i],charT())} is \tcode{true}. & the smallest \tcode{q} in \tcode{[p,p+n)} such that \tcode{X::eq(*q,c)} is \tcode{true}, \tcode{nullptr} otherwise. & linear \\ \rowsep \tcode{X::move(s,p,n)} & \tcode{X::char_type*} & @@ -148,13 +68,13 @@ index c0dc123c..7b6a11a4 100644 \returns \tcode{s}. & linear \\ \rowsep -- -2.34.1 +2.43.0 -From b8f3bb8597c30f14d3b3ebfc427b335623b6d568 Mon Sep 17 00:00:00 2001 +From 0f9c1c77edea1f2248f2faed5f0620ae55e2128d Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sat, 7 Jan 2017 01:59:05 +0100 -Subject: [PATCH 03/14] [rand.req.eng] Omit superfluous dollar-math wrapping +Subject: [PATCH 02/13] [rand.req.eng] Omit superfluous dollar-math wrapping inside \bigoh. [rejected upstream: 1340] --- @@ -162,10 +82,10 @@ Subject: [PATCH 03/14] [rand.req.eng] Omit superfluous dollar-math wrapping 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/numerics.tex b/source/numerics.tex -index e8afb21e..86b42943 100644 +index b91b8a06..cdd0c5d4 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -1934,19 +1934,19 @@ according to \ref{strings} and \ref{input.output}. +@@ -1937,19 +1937,19 @@ according to \ref{strings} and \ref{input.output}. with the same initial state as all other default-constructed engines of type \tcode{E}. @@ -188,7 +108,7 @@ index e8afb21e..86b42943 100644 \\ \rowsep \tcode{E(q)}% \begin{footnote} -@@ -2021,12 +2021,12 @@ according to \ref{strings} and \ref{input.output}. +@@ -2024,12 +2024,12 @@ according to \ref{strings} and \ref{input.output}. returns \tcode{true} if $S_x = S_y$; else returns \tcode{false}. @@ -203,7 +123,7 @@ index e8afb21e..86b42943 100644 \\ \rowsep \tcode{os << x}% & reference to the type of \tcode{os} -@@ -2041,7 +2041,7 @@ according to \ref{strings} and \ref{input.output}. +@@ -2044,7 +2044,7 @@ according to \ref{strings} and \ref{input.output}. by one or more space characters. \ensures The \tcode{os.}\textit{fmtflags} and fill character are unchanged. @@ -212,7 +132,7 @@ index e8afb21e..86b42943 100644 \\ \rowsep \tcode{is >> v}% & reference to the type of \tcode{is} -@@ -2071,7 +2071,7 @@ according to \ref{strings} and \ref{input.output}. +@@ -2074,7 +2074,7 @@ according to \ref{strings} and \ref{input.output}. were respectively the same as those of \tcode{is}. \ensures The \tcode{is.}\textit{fmtflags} are unchanged. @@ -222,13 +142,13 @@ index e8afb21e..86b42943 100644 \end{libreqtab4d} -- -2.34.1 +2.43.0 -From c1c4c270df8c754207eedfb3070a55aa3f9b4950 Mon Sep 17 00:00:00 2001 +From 8872d61bba00a1be2b37fc80112bcda70a47a410 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 -Subject: [PATCH 04/14] Reduce excessive indentation of comments. Helps layout +Subject: [PATCH 03/13] Reduce excessive indentation of comments. Helps layout on smaller (e.g. half-screen) window sizes. --- @@ -237,10 +157,10 @@ Subject: [PATCH 04/14] Reduce excessive indentation of comments. Helps layout 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index a3020c43..c224a5e1 100644 +index c1873fb0..b340a553 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -282,7 +282,7 @@ Given +@@ -284,7 +284,7 @@ Given #include struct C { @@ -249,7 +169,7 @@ index a3020c43..c224a5e1 100644 }; int main() { -@@ -2458,23 +2458,23 @@ namespace AB { +@@ -2496,23 +2496,23 @@ namespace AB { void h() { @@ -286,10 +206,10 @@ index a3020c43..c224a5e1 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 3ee94afe..abf70d1a 100644 +index 9589921d..6a3d71e9 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -2581,7 +2581,7 @@ struct s2 { +@@ -2601,7 +2601,7 @@ struct s2 { } auto g() { return [] { @@ -299,46 +219,46 @@ index 3ee94afe..abf70d1a 100644 } }; -- -2.34.1 +2.43.0 -From 02987541b40ce822a5df81d7faedbc568a3e8017 Mon Sep 17 00:00:00 2001 +From b409f5f8ffe44e3377d9b61dd8433074e32f6cc7 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 -Subject: [PATCH 05/14] Use new link macros. +Subject: [PATCH 04/13] Use new link macros. --- - source/algorithms.tex | 6 +- - source/basic.tex | 117 ++++++++-------- + source/algorithms.tex | 4 +- + source/basic.tex | 115 ++++++++-------- source/classes.tex | 24 ++-- source/compatibility.tex | 4 +- source/concepts.tex | 12 +- source/containers.tex | 50 +++---- source/declarations.tex | 69 +++++----- source/diagnostics.tex | 6 +- - source/exceptions.tex | 46 +++---- - source/expressions.tex | 288 ++++++++++++++++++++------------------- + source/exceptions.tex | 44 +++--- + source/expressions.tex | 279 ++++++++++++++++++++------------------- source/future.tex | 10 +- source/intro.tex | 19 +-- - source/iostreams.tex | 74 +++++----- + source/iostreams.tex | 74 +++++------ source/iterators.tex | 8 +- source/lex.tex | 10 +- source/lib-intro.tex | 73 +++++----- source/limits.tex | 2 +- - source/numerics.tex | 60 ++++---- - source/overloading.tex | 68 ++++----- + source/numerics.tex | 60 ++++----- + source/overloading.tex | 68 +++++----- source/preprocessor.tex | 14 +- - source/statements.tex | 30 ++-- + source/statements.tex | 30 ++--- source/strings.tex | 8 +- source/support.tex | 107 +++++++-------- source/templates.tex | 129 +++++++++--------- - source/threads.tex | 45 +++--- + source/threads.tex | 45 +++---- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 647 insertions(+), 662 deletions(-) + 27 files changed, 640 insertions(+), 654 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 94b6ff03..e5fd8576 100644 +index b23120d4..4aa754a4 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -350,7 +270,7 @@ index 94b6ff03..e5fd8576 100644 \pnum The following subclauses describe components for -@@ -8125,7 +8125,7 @@ In either case, twice as many projections as comparisons. +@@ -8106,7 +8106,7 @@ In either case, twice as many projections as comparisons. \pnum \remarks @@ -359,17 +279,8 @@ index 94b6ff03..e5fd8576 100644 \end{itemdescr} \begin{itemdecl} -@@ -11742,7 +11742,7 @@ namespace ranges { - \pnum - \constraints - The expression \tcode{::new (declval()) T(declval()...)} --is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand}. -+is well-formed when treated as an \deflink{unevaluated operand}{expr.context}. - - \pnum - \effects diff --git a/source/basic.tex b/source/basic.tex -index c224a5e1..1bb2e394 100644 +index b340a553..5c594c75 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -97,8 +97,8 @@ an object. The variable's name, if any, denotes the reference or object. @@ -383,7 +294,7 @@ index c224a5e1..1bb2e394 100644 whose corresponding variable is such an entity, or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. -@@ -126,7 +126,7 @@ the same literal suffix identifier. +@@ -128,7 +128,7 @@ the same literal suffix identifier. \indextext{linkage}% A name used in more than one translation unit can potentially refer to the same entity in these translation units depending on the @@ -392,7 +303,7 @@ index c224a5e1..1bb2e394 100644 translation unit. \rSec1[basic.def]{Declarations and definitions} -@@ -135,7 +135,7 @@ translation unit. +@@ -137,7 +137,7 @@ translation unit. \indextext{declaration!definition versus}% \indextext{declaration}% \indextext{declaration!name}% @@ -401,7 +312,7 @@ index c224a5e1..1bb2e394 100644 one or more names and/or entities into a translation unit. If so, the -@@ -148,7 +148,7 @@ A declaration may also have effects including: +@@ -150,7 +150,7 @@ A declaration may also have effects including: \item a static assertion\iref{dcl.pre}, \item controlling template instantiation\iref{temp.explicit}, \item guiding template argument deduction for constructors\iref{temp.deduct.guide}, @@ -410,7 +321,7 @@ index c224a5e1..1bb2e394 100644 \item nothing (in the case of an \grammarterm{empty-declaration}). \end{itemize} -@@ -232,7 +232,7 @@ that defines a function, a class, a variable, or a static data member, +@@ -234,7 +234,7 @@ that defines a function, a class, a variable, or a static data member, \item it is an explicit instantiation declaration\iref{temp.explicit}, or \item it is @@ -419,7 +330,7 @@ index c224a5e1..1bb2e394 100644 \grammarterm{declaration} is not a definition. \end{itemize} A declaration is said to be a \defn{definition} of each entity that it defines. -@@ -274,7 +274,7 @@ In some circumstances, \Cpp{} implementations implicitly define the +@@ -276,7 +276,7 @@ In some circumstances, \Cpp{} implementations implicitly define the default constructor\iref{class.default.ctor}, copy constructor, move constructor\iref{class.copy.ctor}, copy assignment operator, move assignment operator\iref{class.copy.assign}, @@ -428,7 +339,7 @@ index c224a5e1..1bb2e394 100644 \end{note} \begin{example} Given -@@ -358,7 +358,7 @@ defined as follows: +@@ -360,7 +360,7 @@ defined as follows: \item If $E$ is an \grammarterm{id-expression}\iref{expr.prim.id}, the set contains only $E$. @@ -437,7 +348,7 @@ index c224a5e1..1bb2e394 100644 an array operand, the set contains the potential results of that operand. \item If $E$ is a class member access expression\iref{expr.ref} of the form -@@ -368,16 +368,15 @@ the set contains the potential results of $E_1$. +@@ -370,16 +370,15 @@ the set contains the potential results of $E_1$. \item If $E$ is a class member access expression naming a static data member, the set contains the \grammarterm{id-expression} designating the data member. @@ -458,7 +369,7 @@ index c224a5e1..1bb2e394 100644 contains the potential results of the right operand. \item Otherwise, the set is empty. \end{itemize} -@@ -492,8 +491,8 @@ implicitly-defined +@@ -529,8 +528,8 @@ implicitly-defined copy assignment or move assignment function for another class as specified in~\ref{class.copy.assign}. A constructor for a class is odr-used as specified @@ -469,7 +380,7 @@ index c224a5e1..1bb2e394 100644 \pnum A local entity\iref{basic.pre} -@@ -563,7 +562,7 @@ void h() { +@@ -601,7 +600,7 @@ void h() { \pnum Every program shall contain at least one definition of every function or variable that is odr-used in that program @@ -478,7 +389,7 @@ index c224a5e1..1bb2e394 100644 The definition can appear explicitly in the program, it can be found in the standard or a user-defined library, or (when appropriate) it is implicitly defined (see~\ref{class.default.ctor}, \ref{class.copy.ctor}, -@@ -611,9 +610,9 @@ The rules for declarations and expressions +@@ -649,9 +648,9 @@ The rules for declarations and expressions describe in which contexts complete class types are required. A class type \tcode{T} must be complete if \begin{itemize} @@ -491,7 +402,7 @@ index c224a5e1..1bb2e394 100644 \item \tcode{T} is used as the allocated type or array element type in a \grammarterm{new-expression}\iref{expr.new}, or \item an lvalue-to-rvalue conversion is applied to -@@ -633,10 +632,10 @@ a \keyword{static_cast}\iref{expr.static.cast}, or +@@ -671,10 +670,10 @@ a \keyword{static_cast}\iref{expr.static.cast}, or \keyword{sizeof} operator\iref{expr.sizeof} is applied to an operand of type \tcode{T}, or \item a function with a return type or argument type of type \tcode{T} @@ -504,7 +415,7 @@ index c224a5e1..1bb2e394 100644 \item the type \tcode{T} is the subject of an \keyword{alignof} expression\iref{expr.alignof}, or \item an \grammarterm{exception-declaration} has type \tcode{T}, reference to -@@ -679,7 +678,7 @@ template specialization\iref{temp.over}, except that a name can refer to +@@ -717,7 +716,7 @@ template specialization\iref{temp.over}, except that a name can refer to 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}, @@ -513,7 +424,7 @@ index c224a5e1..1bb2e394 100644 \item is not odr-used in any definition of \tcode{D}, and \item has the same value in all definitions of \tcode{D}, \end{itemize} -@@ -2653,7 +2652,7 @@ only namespace names are considered.% +@@ -2691,7 +2690,7 @@ only namespace names are considered.% \pnum \indextext{program}% @@ -522,7 +433,7 @@ index c224a5e1..1bb2e394 100644 linked together. A translation unit consists of a sequence of declarations. -@@ -2686,7 +2685,7 @@ are attached to the same module. +@@ -2724,7 +2723,7 @@ are attached to the same module. \indextext{linkage!\idxcode{inline} and}% \indextext{\idxcode{inline}!linkage of}% The name of an entity @@ -531,7 +442,7 @@ index c224a5e1..1bb2e394 100644 has internal linkage if it is the name of \begin{itemize} \item -@@ -2727,7 +2726,7 @@ typedef declaration in which the class has the typedef name for linkage +@@ -2765,7 +2764,7 @@ typedef declaration in which the class has the typedef name for linkage purposes\iref{dcl.typedef}; or \item \indextext{enumeration!linkage of}% @@ -540,7 +451,7 @@ index c224a5e1..1bb2e394 100644 in a typedef declaration in which the enumeration has the typedef name for linkage purposes\iref{dcl.typedef}; or \item an unnamed enumeration -@@ -2803,7 +2802,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. +@@ -2841,7 +2840,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. \pnum \indextext{linkage!no}% Names not covered by these rules have no linkage. Moreover, except as @@ -549,7 +460,7 @@ index c224a5e1..1bb2e394 100644 linkage. \pnum -@@ -3123,8 +3122,8 @@ features of the language, such as references and virtual functions, might +@@ -3163,8 +3162,8 @@ features of the language, such as references and virtual functions, might involve additional memory locations that are not accessible to programs but are managed by the implementation. \end{note} @@ -560,7 +471,7 @@ index c224a5e1..1bb2e394 100644 locations without interfering with each other. \pnum -@@ -3168,15 +3167,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but +@@ -3208,15 +3207,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but The constructs in a \Cpp{} program create, destroy, refer to, access, and manipulate objects. An \defn{object} is created @@ -579,7 +490,7 @@ index c224a5e1..1bb2e394 100644 and in its period of destruction\iref{class.cdtor}. \begin{note} -@@ -3306,7 +3305,7 @@ A \defn{potentially-overlapping subobject} is either: +@@ -3346,7 +3345,7 @@ A \defn{potentially-overlapping subobject} is either: \begin{itemize} \item a base class subobject, or \item a non-static data member @@ -588,7 +499,7 @@ index c224a5e1..1bb2e394 100644 \end{itemize} \pnum -@@ -3327,7 +3326,7 @@ Otherwise, the circumstances under which the object has zero size +@@ -3367,7 +3366,7 @@ Otherwise, the circumstances under which the object has zero size are \impldef{which non-standard-layout objects containing no data are considered empty}. \indextext{most derived object!bit-field}% @@ -597,7 +508,7 @@ index c224a5e1..1bb2e394 100644 an object with nonzero size shall occupy one or more bytes of storage, including every byte that is occupied in full or in part -@@ -3797,16 +3796,16 @@ the result of the evaluation is the value so produced but is not erroneous: +@@ -3932,16 +3931,16 @@ the result of the evaluation is the value so produced but is not erroneous: is produced by the evaluation of: \begin{itemize} \item @@ -617,7 +528,7 @@ index c224a5e1..1bb2e394 100644 \end{itemize} then the result of the operation is an indeterminate value or that erroneous value, respectively. -@@ -3997,8 +3996,8 @@ specified in~\ref{class.copy.elision}. +@@ -4132,8 +4131,8 @@ specified in~\ref{class.copy.elision}. \indextext{storage duration!dynamic|(} \pnum @@ -628,7 +539,7 @@ index c224a5e1..1bb2e394 100644 \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -@@ -4167,19 +4166,19 @@ that would match a handler\iref{except.handle} of type +@@ -4302,19 +4301,19 @@ that would match a handler\iref{except.handle} of type \tcode{std::bad_alloc}\iref{bad.alloc}. \pnum @@ -655,16 +566,7 @@ index c224a5e1..1bb2e394 100644 \end{note} \rSec4[basic.stc.dynamic.deallocation]{Deallocation functions} -@@ -4258,7 +4257,7 @@ 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}. -+using the \link{alignment specifier}{dcl.align}. - Attempting to create an object\iref{intro.object} in storage that - does not meet the alignment requirements of the object's type - is undefined behavior. -@@ -4737,9 +4736,9 @@ shall be destroyed before +@@ -4778,9 +4777,9 @@ shall be destroyed before impose requirements on implementations regarding the representation of types. There are two kinds of types: fundamental types and compound types. @@ -677,7 +579,7 @@ index c224a5e1..1bb2e394 100644 \end{note} \pnum -@@ -4913,7 +4912,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, +@@ -4954,7 +4953,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, pointer types, pointer-to-member types\iref{basic.compound}, \tcode{std::nullptr_t}, and @@ -686,7 +588,7 @@ index c224a5e1..1bb2e394 100644 types are collectively called \defnadjx{scalar}{types}{type}. \label{term.trivially.copyable.type}% -@@ -4943,7 +4942,7 @@ A type is a \defnadj{literal}{type} if it is: +@@ -4979,7 +4978,7 @@ A type is a \defnadj{literal}{type} if it is: \item a scalar type; or \item a reference type; or \item an array of literal type; or @@ -695,7 +597,7 @@ index c224a5e1..1bb2e394 100644 has all of the following properties: \begin{itemize} \item it has a constexpr destructor\iref{dcl.constexpr}, -@@ -4977,8 +4976,8 @@ will be usable in a constant expression. +@@ -5013,8 +5012,8 @@ will be usable in a constant expression. Two types \cvqual{cv1} \tcode{T1} and \cvqual{cv2} \tcode{T2} are \defnadjx{layout-compatible}{types}{type} if \tcode{T1} and \tcode{T2} are the same type, @@ -706,7 +608,7 @@ index c224a5e1..1bb2e394 100644 \rSec2[basic.fundamental]{Fundamental types} -@@ -5427,7 +5426,7 @@ ordinary pointers to objects or functions. +@@ -5462,7 +5461,7 @@ ordinary pointers to objects or functions. which identify members of a given type within objects of a given class, \ref{dcl.mptr}. Pointers to data members and pointers to member functions are collectively @@ -715,7 +617,7 @@ index c224a5e1..1bb2e394 100644 \end{itemize} \pnum -@@ -5505,7 +5504,7 @@ layout-compatible types shall +@@ -5540,7 +5539,7 @@ layout-compatible types shall have the same value representation and alignment requirements\iref{basic.align}. \begin{note} @@ -724,7 +626,7 @@ index c224a5e1..1bb2e394 100644 representation, but their range of valid values is restricted by the extended alignment requirement. \end{note} -@@ -5820,8 +5819,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. +@@ -5855,8 +5854,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. \indextext{program execution|(} \pnum @@ -735,7 +637,7 @@ index c224a5e1..1bb2e394 100644 block. Such an object exists and retains its last-stored value during the execution of the block and while the block is suspended (by a call of a function, suspension of a coroutine\iref{expr.await}, or receipt of a signal). -@@ -5866,7 +5865,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, +@@ -5901,7 +5900,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, the initialization of the entities captured by copy and the constituent expressions of the \grammarterm{initializer} of the \grammarterm{init-capture}{s}, \item @@ -744,7 +646,7 @@ index c224a5e1..1bb2e394 100644 the constituent expressions of each default argument\iref{dcl.fct.default} used in the call, or \item -@@ -5897,7 +5896,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope +@@ -5932,7 +5931,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope A \defn{full-expression} is \begin{itemize} \item @@ -754,10 +656,10 @@ index c224a5e1..1bb2e394 100644 a \grammarterm{constant-expression}\iref{expr.const}, \item diff --git a/source/classes.tex b/source/classes.tex -index d5d73316..53c385ec 100644 +index 18838fd6..02b6e630 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -187,10 +187,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: +@@ -178,10 +178,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: \item has no non-static data members of type non-standard-layout class (or array of such types) or reference, @@ -771,7 +673,7 @@ index d5d73316..53c385ec 100644 for all non-static data members, \item has no non-standard-layout base classes, -@@ -566,7 +566,7 @@ if it is +@@ -556,7 +556,7 @@ if it is \end{itemize} For any other \grammarterm{member-declaration}, each declared entity @@ -780,7 +682,7 @@ index d5d73316..53c385ec 100644 is a member of the class, and each such \grammarterm{member-declaration} shall either -@@ -581,7 +581,7 @@ Nested types are classes\iref{class.name,class.nest} and +@@ -571,7 +571,7 @@ Nested types are classes\iref{class.name,class.nest} and enumerations\iref{dcl.enum} declared in the class and arbitrary types declared as members by use of a typedef declaration\iref{dcl.typedef} or \grammarterm{alias-declaration}. @@ -789,7 +691,7 @@ index d5d73316..53c385ec 100644 are members of the class. \pnum -@@ -596,7 +596,7 @@ Any other data member or member function is a \defnadj{non-static}{member} +@@ -586,7 +586,7 @@ Any other data member or member function is a \defnadj{non-static}{member} \defnadj{non-static}{member function}\iref{class.mfct.non.static}, respectively). \begin{note} A non-static data member of non-reference @@ -798,7 +700,7 @@ index d5d73316..53c385ec 100644 \end{note} \pnum -@@ -715,9 +715,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali +@@ -705,9 +705,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali The \grammarterm{member-declarator-list} can be omitted only after a \grammarterm{class-specifier} or an \grammarterm{enum-specifier} or in a @@ -810,7 +712,7 @@ index d5d73316..53c385ec 100644 that is not a friend declaration. \pnum -@@ -820,7 +820,7 @@ unscoped enumeration type; and +@@ -810,7 +810,7 @@ unscoped enumeration type; and \pnum In addition, if class \tcode{T} has a user-declared @@ -819,7 +721,7 @@ index d5d73316..53c385ec 100644 \tcode{T} shall have a name different from \tcode{T}. \pnum -@@ -870,7 +870,7 @@ non-static data members (in any order) have layout-compatible +@@ -860,7 +860,7 @@ non-static data members (in any order) have layout-compatible types\iref{term.layout.compatible.type}. \pnum @@ -828,7 +730,7 @@ index d5d73316..53c385ec 100644 of struct type \tcode{T1}, it is permitted to read a non-static data member \tcode{m} of another union member of struct type \tcode{T2} provided \tcode{m} is part of the common initial sequence of \tcode{T1} and \tcode{T2}; -@@ -2144,7 +2144,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation +@@ -2134,7 +2134,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation An array of class type contains several subobjects for each of which the destructor is invoked. \end{note} @@ -837,20 +739,20 @@ index d5d73316..53c385ec 100644 if it is invoked or as specified in~\ref{expr.new}, \ref{stmt.return}, \ref{dcl.init.aggr}, \ref{class.base.init}, and~\ref{except.throw}. -@@ -6223,7 +6223,7 @@ associated with a \grammarterm{try-block} (if there is one), - the copy/move operation can be omitted by - constructing the object directly into the exception object +@@ -6215,7 +6215,7 @@ associated with a \grammarterm{try-block} (if there is one), + the copy-initialization of the exception object can be omitted by + constructing $o$ directly into the exception object; -\item in a coroutine\iref{dcl.fct.def.coroutine}, a copy of a coroutine parameter +\item in a \link{coroutine}{dcl.fct.def.coroutine}, a copy of a coroutine parameter can be omitted and references to that copy replaced with references to the corresponding parameter if the meaning of the program will be unchanged except for - the execution of a constructor and destructor for the parameter copy object + the execution of a constructor and destructor for the parameter copy object; diff --git a/source/compatibility.tex b/source/compatibility.tex -index 93baac85..262398ea 100644 +index 23ba5e4f..83948563 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -1847,8 +1847,8 @@ deallocation functions\iref{expr.new}. +@@ -1899,8 +1899,8 @@ deallocation functions\iref{expr.new}. A conditional expression with a throw expression as its second or third operand keeps the type and value category of the other operand. \rationale @@ -910,10 +812,10 @@ index 4d848e8f..6bd0435e 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index 09d642b6..162be36a 100644 +index 6f72fc06..6de14bf9 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -6055,14 +6055,14 @@ namespace std { +@@ -6054,14 +6054,14 @@ namespace std { \indextext{\idxcode{array}!contiguous storage}% The header \libheader{array} defines a class template for storing fixed-size sequences of objects. @@ -930,7 +832,7 @@ index 09d642b6..162be36a 100644 list-initialized with up to \tcode{N} elements whose types are convertible to \tcode{T}. -@@ -6073,8 +6073,8 @@ of a container\iref{container.reqmts} and +@@ -6072,8 +6072,8 @@ of a container\iref{container.reqmts} and of a reversible container\iref{container.rev.reqmts}, except that a default constructed \tcode{array} object is not empty if $\tcode{N} > 0$. @@ -941,7 +843,7 @@ index 09d642b6..162be36a 100644 Descriptions are provided here only for operations on \tcode{array} that are not described in one of these tables and -@@ -6084,13 +6084,13 @@ for operations where there is additional semantic information. +@@ -6083,13 +6083,13 @@ for operations where there is additional semantic information. \tcode{array} is a structural type\iref{term.structural.type} if \tcode{T} is a structural type. Two values \tcode{a1} and \tcode{a2} of type \tcode{array} @@ -957,7 +859,7 @@ index 09d642b6..162be36a 100644 \indexlibraryglobal{array}% \indexlibrarymember{array}{begin}% -@@ -6413,7 +6413,7 @@ namespace std { +@@ -6412,7 +6412,7 @@ namespace std { A \indexlibraryglobal{deque}% \tcode{deque} @@ -966,7 +868,7 @@ index 09d642b6..162be36a 100644 In addition, it supports constant time insert and erase operations at the beginning or the end; insert and erase in the middle take linear time. That is, a deque is especially optimized for pushing and popping elements at the beginning and end. -@@ -7064,7 +7064,7 @@ namespace std { +@@ -7063,7 +7063,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{forward_list} if the allocator meets the @@ -975,7 +877,7 @@ index 09d642b6..162be36a 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{forward_list} is referenced. -@@ -7644,7 +7644,7 @@ predicate. +@@ -7646,7 +7646,7 @@ predicate. \pnum \remarks @@ -984,7 +886,7 @@ index 09d642b6..162be36a 100644 \end{itemdescr} \indexlibrarymember{unique}{forward_list}% -@@ -7749,7 +7749,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( +@@ -7751,7 +7751,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( \pnum \remarks @@ -993,7 +895,7 @@ index 09d642b6..162be36a 100644 \end{itemdescr} \indexlibrarymember{reverse}{forward_list}% -@@ -7843,7 +7843,7 @@ A +@@ -7845,7 +7845,7 @@ A is a sequence container that supports bidirectional iterators and allows constant time insert and erase operations anywhere within the sequence, with storage management handled @@ -1002,7 +904,7 @@ index 09d642b6..162be36a 100644 fast random access to list elements is not supported, but many algorithms only need sequential access anyway. -@@ -8012,7 +8012,7 @@ namespace std { +@@ -8014,7 +8014,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{list} if the allocator meets the @@ -1011,7 +913,7 @@ index 09d642b6..162be36a 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{list} is referenced. -@@ -8426,7 +8426,7 @@ applications of the corresponding predicate. +@@ -8427,7 +8427,7 @@ applications of the corresponding predicate. \pnum \remarks @@ -1020,7 +922,7 @@ index 09d642b6..162be36a 100644 \end{itemdescr} \indexlibrarymember{unique}{list}% -@@ -8550,7 +8550,7 @@ comparisons, where +@@ -8551,7 +8551,7 @@ comparisons, where \pnum \remarks @@ -1029,7 +931,7 @@ index 09d642b6..162be36a 100644 \end{itemdescr} \rSec3[list.erasure]{Erasure} -@@ -8655,7 +8655,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, +@@ -8656,7 +8656,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, of a sequence container, including most of the optional sequence container requirements\iref{sequence.reqmts}, and, for an element type other than \tcode{bool}, @@ -1038,7 +940,7 @@ index 09d642b6..162be36a 100644 The exceptions are the \tcode{push_front}, \tcode{prepend_range}, \tcode{pop_front}, and \tcode{emplace_front} member functions, which are not provided. Descriptions are provided here only for operations on \tcode{vector} -@@ -8793,7 +8793,7 @@ namespace std { +@@ -8794,7 +8794,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{vector} if the allocator meets the @@ -1047,7 +949,7 @@ index 09d642b6..162be36a 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{vector} is referenced. -@@ -9363,7 +9363,7 @@ Unless described below, all operations have the same requirements and +@@ -9362,7 +9362,7 @@ Unless described below, all operations have the same requirements and semantics as the primary \tcode{vector} template, except that operations dealing with the \tcode{bool} value type map to bit values in the container storage and @@ -1056,7 +958,7 @@ index 09d642b6..162be36a 100644 is not used to construct these values. \pnum -@@ -14427,9 +14427,9 @@ and +@@ -14428,9 +14428,9 @@ and can be used to instantiate \tcode{queue}. In particular, @@ -1068,7 +970,7 @@ index 09d642b6..162be36a 100644 can be used. \begin{codeblock} -@@ -14784,15 +14784,15 @@ and +@@ -14785,15 +14785,15 @@ and can be used to instantiate \tcode{priority_queue}. In particular, @@ -1087,7 +989,7 @@ index 09d642b6..162be36a 100644 \begin{codeblock} namespace std { -@@ -15331,10 +15331,10 @@ and +@@ -15332,10 +15332,10 @@ and can be used to instantiate \tcode{stack}. In particular, @@ -1102,10 +1004,10 @@ index 09d642b6..162be36a 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index 446aebd3..b0e95bce 100644 +index 7cbe7fb5..57271779 100644 --- a/source/declarations.tex +++ b/source/declarations.tex -@@ -508,7 +508,7 @@ in explicit specializations and explicit instantiations, respectively. +@@ -513,7 +513,7 @@ in explicit specializations and explicit instantiations, respectively. \begin{note} A variable declared without a \grammarterm{storage-class-specifier} at block scope or declared as a function parameter @@ -1114,7 +1016,7 @@ index 446aebd3..b0e95bce 100644 \end{note} \pnum -@@ -778,10 +778,10 @@ an alias template or a template \grammarterm{template-parameter}. +@@ -783,10 +783,10 @@ an alias template or a template \grammarterm{template-parameter}. A \grammarterm{simple-template-id} that names a class template specialization is a \grammarterm{class-name}\iref{class.name}. If a \grammarterm{typedef-name} is used to identify the subject of an @@ -1129,7 +1031,7 @@ index 446aebd3..b0e95bce 100644 \end{note} \begin{example} \begin{codeblock} -@@ -1108,7 +1108,7 @@ If an inline function or variable that is attached to a named module +@@ -1127,7 +1127,7 @@ If an inline function or variable that is attached to a named module is declared in a definition domain, it shall be defined in that domain. \begin{note} @@ -1138,7 +1040,7 @@ index 446aebd3..b0e95bce 100644 In the global module, a function defined within a class definition is implicitly inline\iref{class.mfct,class.friend}. \end{note} -@@ -1253,7 +1253,7 @@ the object referenced is a non-const object and can be modified through +@@ -1272,7 +1272,7 @@ the object referenced is a non-const object and can be modified through some other access path. \begin{note} Cv-qualifiers are supported by the type system so that they cannot be @@ -1147,7 +1049,7 @@ index 446aebd3..b0e95bce 100644 \end{note} \pnum -@@ -1674,8 +1674,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; +@@ -1693,8 +1693,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; \item otherwise, \tcode{decltype($E$)} is the type of $E$. \end{itemize} @@ -1157,7 +1059,7 @@ index 446aebd3..b0e95bce 100644 \begin{example} \begin{codeblock} -@@ -1869,7 +1868,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. +@@ -1890,7 +1889,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. If the \grammarterm{init-declarator-list} contains more than one \grammarterm{init-declarator}, they shall all form declarations of variables. The type of each declared variable is determined @@ -1166,7 +1068,7 @@ index 446aebd3..b0e95bce 100644 and if the type that replaces the placeholder type is not the same in each deduction, the program is ill-formed. -@@ -1997,7 +1996,7 @@ A function declared with a return type that uses a placeholder type shall not +@@ -2018,7 +2017,7 @@ A function declared with a return type that uses a placeholder type shall not be a coroutine\iref{dcl.fct.def.coroutine}. \pnum @@ -1175,7 +1077,7 @@ index 446aebd3..b0e95bce 100644 instantiation of an entity declared using a placeholder type, but it also does not prevent that entity from being instantiated as needed to determine its type. -@@ -2109,7 +2108,7 @@ Obtain \tcode{P} from +@@ -2130,7 +2129,7 @@ Obtain \tcode{P} from a new invented type template parameter \tcode{U} or, if the initialization is copy-list-initialization, with \tcode{std::initializer_list}. Deduce a value for \tcode{U} using the rules @@ -1184,7 +1086,7 @@ index 446aebd3..b0e95bce 100644 where \tcode{P} is a function template parameter type and the corresponding argument is $E$. -@@ -2208,7 +2207,7 @@ in the \grammarterm{type-specifier-seq} +@@ -2229,7 +2228,7 @@ in the \grammarterm{type-specifier-seq} in the \grammarterm{new-type-id} or \grammarterm{type-id} of a \grammarterm{new-expression}\iref{expr.new}, as the \grammarterm{simple-type-specifier} @@ -1193,7 +1095,7 @@ index 446aebd3..b0e95bce 100644 or as the \grammarterm{type-specifier} in the \grammarterm{parameter-declaration} of a \grammarterm{template-parameter}\iref{temp.param}. -@@ -4343,7 +4342,7 @@ int a; +@@ -4370,7 +4369,7 @@ int a; int f(int a, int b = a); // error: parameter \tcode{a} used as default argument typedef int I; int g(float I, int b = I(2)); // error: parameter \tcode{I} found @@ -1202,7 +1104,7 @@ index 446aebd3..b0e95bce 100644 \end{codeblock} \end{example} A non-static member shall not appear in a default argument unless it appears as -@@ -5720,15 +5719,15 @@ This requires a conversion +@@ -5747,15 +5746,15 @@ This requires a conversion function\iref{class.conv.fct} returning a reference type. \end{footnote} (this conversion is selected by enumerating the applicable conversion @@ -1222,7 +1124,7 @@ index 446aebd3..b0e95bce 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7105,7 +7104,7 @@ the initializer is +@@ -7191,7 +7190,7 @@ the initializer is where \tcode{get} undergoes argument-dependent lookup\iref{basic.lookup.argdep}. In either case, \tcode{get} is interpreted as a \grammarterm{template-id}. \begin{note} @@ -1231,7 +1133,7 @@ index 446aebd3..b0e95bce 100644 \end{note} In either case, \exposid{e} is an lvalue if the type of the entity \exposid{e} is an lvalue reference and an xvalue otherwise. -@@ -7256,7 +7255,7 @@ is not looked up and is introduced by +@@ -7342,7 +7341,7 @@ is not looked up and is introduced by the \grammarterm{enum-specifier} or \grammarterm{opaque-enum-declaration}. If the \grammarterm{enum-head-name} of an \grammarterm{opaque-enum-declaration} contains a \grammarterm{nested-name-specifier}, @@ -1240,7 +1142,7 @@ index 446aebd3..b0e95bce 100644 \pnum \indextext{constant!enumeration}% -@@ -7338,8 +7337,9 @@ If the underlying type is fixed, the type of each enumerator +@@ -7424,8 +7423,9 @@ If the underlying type is fixed, the type of each enumerator prior to the closing brace is the underlying type and the \grammarterm{constant-expression} in the \grammarterm{enumerator-definition} @@ -1252,7 +1154,7 @@ index 446aebd3..b0e95bce 100644 If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as -@@ -7348,8 +7348,9 @@ follows: +@@ -7434,8 +7434,9 @@ follows: \begin{itemize} \item If an initializer is specified for an enumerator, the @@ -1264,7 +1166,7 @@ index 446aebd3..b0e95bce 100644 unscoped enumeration type, the enumerator has the underlying type of that enumeration type, otherwise it has the same type as the expression. -@@ -7421,7 +7422,7 @@ if they have the same underlying type. +@@ -7507,7 +7508,7 @@ if they have the same underlying type. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -1273,7 +1175,7 @@ index 446aebd3..b0e95bce 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -7700,7 +7701,7 @@ appertains to the namespace being defined or extended. +@@ -7786,7 +7787,7 @@ appertains to the namespace being defined or extended. Members of an inline namespace can be used in most respects as though they were members of the innermost enclosing namespace. Specifically, the inline namespace and its enclosing namespace are both added to the set of associated namespaces used in @@ -1282,7 +1184,7 @@ index 446aebd3..b0e95bce 100644 and a \grammarterm{using-directive}\iref{namespace.udir} that names the inline namespace is implicitly inserted into the enclosing namespace as for an unnamed namespace\iref{namespace.unnamed}. Furthermore, each -@@ -8504,7 +8505,7 @@ different language linkages are distinct types even if they are +@@ -8590,7 +8591,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -1291,7 +1193,7 @@ index 446aebd3..b0e95bce 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -8822,16 +8823,16 @@ For each individual attribute, the form of the +@@ -8907,16 +8908,16 @@ For each individual attribute, the form of the \pnum In an \grammarterm{attribute-list}, an ellipsis may appear only if that \grammarterm{attribute}'s specification permits it. An \grammarterm{attribute} followed @@ -1313,7 +1215,7 @@ index 446aebd3..b0e95bce 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -8938,7 +8939,7 @@ declaration, the program is ill-formed. +@@ -9023,7 +9024,7 @@ declaration, the program is ill-formed. \pnum An \grammarterm{alignment-specifier} of the form \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same @@ -1322,7 +1224,7 @@ index 446aebd3..b0e95bce 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9192,7 +9193,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9283,7 +9284,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -1361,7 +1263,7 @@ index e421b207..b729a13d 100644 \end{note} \indexlibraryglobal{system_error}% diff --git a/source/exceptions.tex b/source/exceptions.tex -index a462fe0b..a8d6a0c0 100644 +index c14df21e..c5e0e545 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -184,7 +184,7 @@ try : i(f(ii)), d(id) { @@ -1473,15 +1375,6 @@ index a462fe0b..a8d6a0c0 100644 whose \grammarterm{postfix-expression} has a function type, or a pointer-to-function type, -@@ -846,7 +846,7 @@ $E$ implicitly invokes a function - (such as an overloaded operator, - an allocation function in a \grammarterm{new-expression}, - a constructor for a function argument, --or a destructor if $E$ is a full-expression\iref{intro.execution}) -+or a destructor if $E$ is a \deflink{full-expression}{intro.execution}) - that has a potentially-throwing exception specification, - or - \item @@ -863,7 +863,7 @@ applied to a pointer to a polymorphic class type\iref{expr.typeid}, or @@ -1511,7 +1404,7 @@ index a462fe0b..a8d6a0c0 100644 capture the currently handled exception. \rSec2[except.terminate]{The \tcode{std::terminate} function} -@@ -1030,12 +1030,12 @@ via an exception, or +@@ -1031,12 +1031,12 @@ via an exception, or \item% when the exception handling mechanism cannot find a handler for a thrown exception\iref{except.handle}, or @@ -1527,7 +1420,7 @@ index a462fe0b..a8d6a0c0 100644 terminates by throwing an exception, or \item% -@@ -1134,7 +1134,7 @@ will eventually cause an invocation of the function +@@ -1133,7 +1133,7 @@ will eventually cause an invocation of the function \pnum An exception is considered uncaught @@ -1537,7 +1430,7 @@ index a462fe0b..a8d6a0c0 100644 \begin{note} As a consequence, an exception is considered uncaught diff --git a/source/expressions.tex b/source/expressions.tex -index abf70d1a..303e2ed2 100644 +index 6a3d71e9..ca32c4fa 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1568,16 +1461,16 @@ index abf70d1a..303e2ed2 100644 }; A&& operator+(A, A); A&& f(); -@@ -268,7 +268,7 @@ created, which might then be promoted\iref{conv.prom}. - \pnum - Whenever a prvalue appears as an operand of an operator that +@@ -269,7 +269,7 @@ created, which might then be promoted\iref{conv.prom}. + Unless otherwise specified\iref{expr.reinterpret.cast, expr.const.cast}, + whenever a prvalue appears as an operand of an operator that expects a glvalue for that operand, the -temporary materialization conversion\iref{conv.rval} is +\link{temporary materialization conversion}{conv.rval} is applied to convert the expression to an xvalue. \pnum -@@ -445,31 +445,31 @@ An unevaluated operand is not evaluated. +@@ -451,31 +451,31 @@ An unevaluated operand is not evaluated. In an unevaluated operand, a non-static class member can be named\iref{expr.prim.id} and naming of objects or functions does not, by itself, require that a definition be provided\iref{basic.def.odr}. @@ -1622,7 +1515,7 @@ index abf70d1a..303e2ed2 100644 \end{itemize} \begin{note} -@@ -607,7 +607,7 @@ descriptions of those operators and contexts. +@@ -613,7 +613,7 @@ descriptions of those operators and contexts. \pnum \indextext{conversion!lvalue-to-rvalue}% \indextext{type!incomplete}% @@ -1631,7 +1524,7 @@ index abf70d1a..303e2ed2 100644 can be converted to a prvalue. \begin{footnote} -@@ -632,18 +632,18 @@ is applied to an expression $E$, and either +@@ -638,18 +638,18 @@ is applied to an expression $E$, and either \begin{itemize} \item $E$ is not potentially evaluated, or \item the evaluation of $E$ results in the evaluation of a member @@ -1656,7 +1549,7 @@ index abf70d1a..303e2ed2 100644 } auto g = f(); int m = g(false); // undefined behavior: access of \tcode{x.n} outside its lifetime -@@ -800,11 +800,11 @@ allowed), a program could inadvertently modify a const object +@@ -821,11 +821,11 @@ allowed), a program could inadvertently modify a const object (as it is done on line \#2). For example, \begin{codeblock} int main() { @@ -1673,7 +1566,7 @@ index abf70d1a..303e2ed2 100644 } \end{codeblock} \end{note} -@@ -1061,7 +1061,7 @@ the derived class object. +@@ -1082,7 +1082,7 @@ the derived class object. \indextext{conversion!pointer-to-member}% \indextext{null member pointer conversion|see{conversion, null member pointer}}% \indextext{constant!null pointer}% @@ -1682,7 +1575,7 @@ index abf70d1a..303e2ed2 100644 pointer-to-member type; the result is the \defnx{null member pointer value}{value!null member pointer} of that type and is distinguishable from any pointer to member not -@@ -1279,7 +1279,7 @@ occur until the complete declarator is known. +@@ -1300,7 +1300,7 @@ occur until the complete declarator is known. \begin{note} In a \grammarterm{trailing-return-type}, the class being defined is not required to be complete @@ -1691,7 +1584,7 @@ index abf70d1a..303e2ed2 100644 Class members declared later are not visible. \begin{example} \begin{codeblock} -@@ -1347,8 +1347,8 @@ meaning, except as otherwise indicated. +@@ -1368,8 +1368,8 @@ meaning, except as otherwise indicated. An \grammarterm{id-expression} is a restricted form of a \grammarterm{primary-expression}. \begin{note} @@ -1702,7 +1595,7 @@ index abf70d1a..303e2ed2 100644 \end{note} \pnum -@@ -1457,7 +1457,7 @@ In each case, the constraints of \tcode{f} are not satisfied. +@@ -1478,7 +1478,7 @@ In each case, the constraints of \tcode{f} are not satisfied. In the declaration of \tcode{p2}, those constraints need to be satisfied even though @@ -1711,7 +1604,7 @@ index abf70d1a..303e2ed2 100644 \end{example} \end{note} -@@ -1552,7 +1552,7 @@ if it is cv-qualified or is a reference type. +@@ -1573,7 +1573,7 @@ if it is cv-qualified or is a reference type. \end{note} The expression is an xvalue if it is move-eligible (see below); an lvalue @@ -1720,7 +1613,7 @@ index abf70d1a..303e2ed2 100644 template parameter object; and a prvalue otherwise\iref{basic.lval}; it is a bit-field if the identifier designates a bit-field. -@@ -1846,8 +1846,8 @@ void abssort(float* x, unsigned N) { +@@ -1866,8 +1866,8 @@ void abssort(float* x, unsigned N) { A \grammarterm{lambda-expression} is a prvalue whose result object is called the \defn{closure object}. \begin{note} @@ -1731,7 +1624,7 @@ index abf70d1a..303e2ed2 100644 \end{note} \pnum -@@ -2130,7 +2130,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no +@@ -2150,7 +2150,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no and no explicit object parameter\iref{dcl.fct} whose constraints (if any) are satisfied has a conversion function to pointer to @@ -1740,7 +1633,7 @@ index abf70d1a..303e2ed2 100644 the same parameter and return types as the closure type's function call operator. The conversion is to ``pointer to \keyword{noexcept} function'' if the function call operator -@@ -2239,8 +2239,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} +@@ -2259,8 +2259,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} \pnum The conversion function or conversion function template is public, @@ -1751,7 +1644,7 @@ index abf70d1a..303e2ed2 100644 \begin{example} \begin{codeblock} auto Fwd = [](int (*fp)(int), auto a) { return fp(a); }; -@@ -2296,9 +2296,9 @@ implicitly-declared destructor\iref{class.dtor}. +@@ -2316,9 +2316,9 @@ implicitly-declared destructor\iref{class.dtor}. \pnum A member of a closure type shall not be @@ -1764,7 +1657,7 @@ index abf70d1a..303e2ed2 100644 \rSec3[expr.prim.lambda.capture]{Captures}% -@@ -2854,7 +2854,7 @@ bool f(Args ...args) { +@@ -2877,7 +2877,7 @@ A fold expression is a pack expansion. \pnum A \grammarterm{requires-expression} provides a concise way to express requirements on template arguments @@ -1773,25 +1666,7 @@ index abf70d1a..303e2ed2 100644 or by checking properties of types and expressions. \begin{bnf} -@@ -2891,7 +2891,7 @@ or by checking properties of types and expressions. - 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{term.unevaluated.operand}. -+are \deflinkx{unevaluated operands}{unevaluated operand}{expr.context}. - - \pnum - \begin{example} -@@ -2986,7 +2986,7 @@ the validity of an \grammarterm{expression}. - \begin{note} - The enclosing \grammarterm{requires-expression} will evaluate to \keyword{false} - if substitution of template arguments into the \grammarterm{expression} fails. --The \grammarterm{expression} is an unevaluated operand\iref{term.unevaluated.operand}. -+The \grammarterm{expression} is an \deflink{unevaluated operand}{expr.context}. - \end{note} - \begin{example} - \begin{codeblock} -@@ -3284,7 +3284,7 @@ or a prvalue of function pointer type. +@@ -3306,7 +3306,7 @@ or a prvalue of function pointer type. If the selected function is non-virtual, or if the \grammarterm{id-expression} in the class member access expression is a \grammarterm{qualified-id}, that function is @@ -1800,7 +1675,7 @@ index abf70d1a..303e2ed2 100644 of the object expression is called; such a call is referred to as a \defnx{virtual function call}{function!virtual function call}. \begin{note} -@@ -3297,8 +3297,8 @@ an object under construction or destruction. +@@ -3319,8 +3319,8 @@ an object under construction or destruction. \pnum \begin{note} @@ -1811,7 +1686,7 @@ index abf70d1a..303e2ed2 100644 the program is ill-formed. No function is implicitly declared by such a call. \end{note} -@@ -3363,7 +3363,7 @@ function, +@@ -3385,7 +3385,7 @@ function, the object expression of the class member access shall be a glvalue and the implicit object parameter of the function\iref{over.match.funcs} is initialized with that glvalue, @@ -1820,7 +1695,7 @@ index abf70d1a..303e2ed2 100644 \begin{note} There is no access or ambiguity checking on this conversion; the access checking and disambiguation are done as part of the (possibly implicit) -@@ -3476,10 +3476,10 @@ pointer parameters. +@@ -3498,10 +3498,10 @@ pointer parameters. \pnum \indextext{declaration!ellipsis in function}% \indextext{parameter list!variable}% @@ -1834,7 +1709,7 @@ index abf70d1a..303e2ed2 100644 \begin{note} This implies that, except where the ellipsis (\tcode{...}) or a function parameter pack is used, a parameter is available for each argument. -@@ -3489,7 +3489,7 @@ parameter pack is used, a parameter is available for each argument. +@@ -3511,7 +3511,7 @@ parameter pack is used, a parameter is available for each argument. \indextext{ellipsis!conversion sequence}% When there is no parameter for a given argument, the argument is passed in such a way that the receiving function can obtain the value of the @@ -1843,7 +1718,7 @@ index abf70d1a..303e2ed2 100644 \begin{note} This paragraph does not apply to arguments passed to a function parameter pack. Function parameter packs are expanded during template instantiation\iref{temp.variadic}, -@@ -3497,8 +3497,8 @@ thus each such argument has a corresponding parameter when a function template +@@ -3519,8 +3519,8 @@ thus each such argument has a corresponding parameter when a function template specialization is actually called. \end{note} The @@ -1854,7 +1729,7 @@ index abf70d1a..303e2ed2 100644 performed on the argument expression. An argument that has type \cv{}~\tcode{std::nullptr_t} is converted to type \tcode{\keyword{void}*}\iref{conv.ptr}. -@@ -3513,16 +3513,16 @@ an eligible non-trivial move constructor, or +@@ -3535,16 +3535,16 @@ an eligible non-trivial move constructor, or a non-trivial destructor\iref{class.dtor}, with no corresponding parameter, is conditionally-supported with \impldef{passing argument of class type through ellipsis} semantics. If the argument has @@ -1876,7 +1751,7 @@ index abf70d1a..303e2ed2 100644 \pnum A function call is an lvalue -@@ -3538,8 +3538,8 @@ otherwise. +@@ -3563,8 +3563,8 @@ except as specified in \ref{dcl.type.decltype}. \indextext{type conversion, explicit|see{casting}}% \indextext{conversion explicit type|see{casting}}% \indextext{casting}% @@ -1887,7 +1762,7 @@ index abf70d1a..303e2ed2 100644 by a parenthesized optional \grammarterm{expression-list} or by a \grammarterm{braced-init-list} (the initializer) -@@ -3550,7 +3550,7 @@ If the type is a placeholder +@@ -3575,7 +3575,7 @@ If the type is a placeholder for a deduced class type, it is replaced by the return type of the function selected by overload resolution @@ -1896,26 +1771,7 @@ index abf70d1a..303e2ed2 100644 for the remainder of this subclause. Otherwise, if the type contains a placeholder type, it is replaced by the type -@@ -3572,8 +3572,7 @@ void h() { - \pnum - If the initializer is a parenthesized single expression, - the type conversion expression is equivalent --to the corresponding cast --expression\iref{expr.cast}. -+to the corresponding \link{cast expression}{expr.cast}. - \indextext{type!incomplete}% - Otherwise, if the type is \cv{}~\keyword{void} - and the initializer is \tcode{()} or \tcode{\{\}} -@@ -3582,7 +3581,7 @@ the expression is a prvalue of type \keyword{void} - that performs no initialization. - Otherwise, - the expression is a prvalue of the specified type --whose result object is direct-initialized\iref{dcl.init} -+whose result object is \deflinkx{direct-initialized}{direct-initialization}{dcl.init} - with the initializer. - If the initializer is a parenthesized optional \grammarterm{expression-list}, - the specified type shall not be an array type. -@@ -3867,8 +3866,8 @@ void foo(D* dp) { +@@ -3912,8 +3912,8 @@ void foo(D* dp) { \end{example} \pnum @@ -1926,7 +1782,7 @@ index abf70d1a..303e2ed2 100644 \pnum If \tcode{v} is a null pointer value, the result is a null pointer value. -@@ -3919,9 +3918,9 @@ runtime check \term{fails}. +@@ -3964,9 +3964,9 @@ runtime check \term{fails}. \pnum The value of a failed cast to pointer type is the null pointer value of @@ -1939,7 +1795,7 @@ index abf70d1a..303e2ed2 100644 \indextext{\idxcode{bad_cast}}% \indexlibraryglobal{bad_cast}% -@@ -4010,13 +4009,13 @@ glvalue refers. +@@ -4055,13 +4055,13 @@ glvalue refers. When \keyword{typeid} is applied to an expression other than a glvalue of a polymorphic class type, the result refers to a \tcode{std::type_info} object representing the static type of the expression. @@ -1957,7 +1813,7 @@ index abf70d1a..303e2ed2 100644 \pnum When \keyword{typeid} is applied to a \grammarterm{type-id}, the result -@@ -4111,7 +4110,7 @@ of type \tcode{T1} can be cast to type ``rvalue +@@ -4156,7 +4156,7 @@ of type \tcode{T1} can be cast to type ``rvalue reference to \tcode{T2}'' if \tcode{T2} is reference-compatible with \tcode{T1}\iref{dcl.init.ref}. If the value is not a bit-field, the result refers to the object or the specified base class subobject @@ -1966,7 +1822,7 @@ index abf70d1a..303e2ed2 100644 is applied to the bit-field and the resulting prvalue is used as the operand of the \keyword{static_cast} for the remainder of this subclause. If \tcode{T2} is an inaccessible\iref{class.access} or -@@ -4241,7 +4240,8 @@ Otherwise, the behavior is undefined. +@@ -4286,7 +4286,8 @@ Otherwise, the behavior is undefined. A prvalue of type ``pointer to \cvqual{cv1} \tcode{B}'', where \tcode{B} is a class type, can be converted to a prvalue of type ``pointer to \cvqual{cv2} \tcode{D}'', @@ -1976,7 +1832,7 @@ index abf70d1a..303e2ed2 100644 from \tcode{B}, if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. -@@ -4262,7 +4262,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} +@@ -4307,7 +4308,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} \tcode{T}'' can be converted to a prvalue of type ``pointer to member of \tcode{B} of type \cvqual{cv2} \tcode{T}'', where \tcode{D} is a complete class type and @@ -1985,7 +1841,7 @@ index abf70d1a..303e2ed2 100644 if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. \begin{note} -@@ -4273,7 +4273,7 @@ If no valid standard conversion +@@ -4318,7 +4319,7 @@ If no valid standard conversion from ``pointer to member of \tcode{B} of type \tcode{T}'' to ``pointer to member of \tcode{D} of type \tcode{T}'' exists\iref{conv.mem}, the program is ill-formed. @@ -1994,7 +1850,7 @@ index abf70d1a..303e2ed2 100644 member pointer value of the destination type. If class \tcode{B} contains the original member, or is a base class of the class containing the original member, the resulting pointer to member points -@@ -4296,7 +4296,7 @@ If the original pointer value represents the address +@@ -4341,7 +4342,7 @@ If the original pointer value represents the address then the resulting pointer value\iref{basic.compound} is unspecified. Otherwise, if the original pointer value points to an object \placeholder{a}, and there is an object \placeholder{b} of type similar to \tcode{T} @@ -2003,7 +1859,7 @@ index abf70d1a..303e2ed2 100644 the result is a pointer to \placeholder{b}. Otherwise, the pointer value is unchanged by the conversion. \begin{example} -@@ -4322,8 +4322,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. +@@ -4367,8 +4368,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. If \tcode{T} is an lvalue reference type or an rvalue reference to function type, the result is an lvalue; if \tcode{T} is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the @@ -2014,7 +1870,7 @@ index abf70d1a..303e2ed2 100644 performed on the expression \tcode{v}. Conversions that can be performed explicitly using \keyword{reinterpret_cast} are listed below. No other conversion can be performed explicitly using \keyword{reinterpret_cast}. -@@ -4492,8 +4492,8 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type +@@ -4537,10 +4538,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type lvalue; if \tcode{T} is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the @@ -2022,28 +1878,13 @@ index abf70d1a..303e2ed2 100644 -and function-to-pointer\iref{conv.func} standard conversions are +\link{lvalue-to-rvalue}{conv.lval}, \link{array-to-pointer}{conv.array}, +and \link{function-to-pointer}{conv.func} standard conversions are - performed on the expression \tcode{v}. Conversions that can be performed explicitly using + performed on the expression \tcode{v}. +-The temporary materialization conversion\iref{conv.rval} is not ++The \link{temporary materialization conversion}{conv.rval} is not + performed on \tcode{v}, other than as specified below. + Conversions that can be performed explicitly using \keyword{const_cast} are listed below. No other conversion shall be - performed explicitly using \keyword{const_cast}. -@@ -4505,7 +4505,7 @@ to its own type using a \keyword{const_cast} operator. - \end{note} - - \pnum --For two similar types \tcode{T1} and \tcode{T2}\iref{conv.qual}, -+For two \deflink{similar types}{conv.qual} \tcode{T1} and \tcode{T2}, - a prvalue of type \tcode{T1} may be explicitly - converted to the type \tcode{T2} using a \keyword{const_cast} - if, considering the qualification-decompositions of both types, -@@ -4541,7 +4541,7 @@ explicitly converted to an xvalue of type \tcode{T2} using the cast - - The result of a reference \keyword{const_cast} refers - to the original object if the operand is a glvalue and --to the result of applying the temporary materialization conversion\iref{conv.rval} otherwise. -+to the result of applying the \link{temporary materialization conversion}{conv.rval} otherwise. - - \pnum - A null pointer value\iref{basic.compound} is converted to the null pointer -@@ -5031,7 +5031,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside +@@ -5074,7 +5075,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside The \keyword{sizeof} operator yields the number of bytes occupied by a non-potentially-overlapping object of the type of its operand. The operand is either an expression, @@ -2052,7 +1893,7 @@ index abf70d1a..303e2ed2 100644 \grammarterm{type-id}. \indextext{type!incomplete}% The \keyword{sizeof} operator shall not be applied to an expression that -@@ -5086,7 +5086,7 @@ array-to-pointer\iref{conv.array}, and +@@ -5129,7 +5130,7 @@ array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} standard conversions are not applied to the operand of \keyword{sizeof}. If the operand is a prvalue, @@ -2061,7 +1902,7 @@ index abf70d1a..303e2ed2 100644 is applied. \pnum -@@ -5231,7 +5231,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. +@@ -5274,7 +5275,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. \end{bnf} \pnum @@ -2070,7 +1911,7 @@ index abf70d1a..303e2ed2 100644 a placeholder for a deduced class type\iref{dcl.type.class.deduct} appears in the \grammarterm{type-specifier-seq} of a \grammarterm{new-type-id} or -@@ -5359,7 +5359,7 @@ is less than zero; +@@ -5402,7 +5403,7 @@ is less than zero; \item its value is such that the size of the allocated object would exceed the @@ -2079,7 +1920,7 @@ index abf70d1a..303e2ed2 100644 \item the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} and the -@@ -5384,7 +5384,7 @@ is the null pointer value of the required result type; +@@ -5427,7 +5428,7 @@ is the null pointer value of the required result type; \item otherwise, the \grammarterm{new-expression} terminates by throwing an exception of a type that would match a handler\iref{except.handle} of type @@ -2088,7 +1929,7 @@ index abf70d1a..303e2ed2 100644 \end{itemize} \end{itemize} When the value of the \grammarterm{expression} is zero, the allocation -@@ -5435,8 +5435,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( +@@ -5478,8 +5479,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( A \grammarterm{new-expression} may obtain storage for the object by calling an allocation function\iref{basic.stc.dynamic.allocation}. If the \grammarterm{new-expression} terminates by throwing an exception, it @@ -2099,7 +1940,7 @@ index abf70d1a..303e2ed2 100644 is a non-array type, the allocation function's name is \indextext{\idxcode{operator new}}% \indextext{\idxcode{operator delete}}% -@@ -5547,7 +5547,7 @@ the difference between the +@@ -5590,7 +5591,7 @@ the difference between the result of the \grammarterm{new-expression} and the address returned by the allocation function shall be an integral multiple of the strictest fundamental @@ -2108,7 +1949,7 @@ index abf70d1a..303e2ed2 100644 is no greater than the size of the array being created. \begin{note} \indextext{allocation!alignment storage}% -@@ -5638,7 +5638,7 @@ invocation of \keyword{new} to another. +@@ -5681,7 +5682,7 @@ invocation of \keyword{new} to another. \pnum \begin{note} Unless an allocation function has a non-throwing @@ -2117,7 +1958,7 @@ index abf70d1a..303e2ed2 100644 it indicates failure to allocate storage by throwing a \indextext{\idxcode{bad_alloc}}% \indexlibraryglobal{bad_alloc}% -@@ -5784,8 +5784,8 @@ to both the allocation and deallocation functions. +@@ -5827,8 +5828,8 @@ to both the allocation and deallocation functions. \pnum \indextext{expression!\idxcode{delete}}% \indextext{\idxcode{delete}}% @@ -2128,7 +1969,7 @@ index abf70d1a..303e2ed2 100644 \grammarterm{new-expression}. \begin{bnf} -@@ -5888,8 +5888,8 @@ null pointer value, then: +@@ -5931,8 +5932,8 @@ null pointer value, then: \item If the allocation call for the \grammarterm{new-expression} for the object to be deleted was not omitted and the allocation was not extended\iref{expr.new}, the @@ -2139,7 +1980,7 @@ index abf70d1a..303e2ed2 100644 allocation call of the \grammarterm{new-expression} shall be passed as the first argument to the deallocation function. -@@ -6248,8 +6248,8 @@ The result of a \tcode{.*} expression +@@ -6291,8 +6292,8 @@ The result of a \tcode{.*} expression whose second operand is a pointer to a data member is an lvalue if the first operand is an lvalue and an xvalue otherwise. The result of a \tcode{.*} expression whose second operand is a pointer to a member function is a prvalue. @@ -2150,7 +1991,7 @@ index abf70d1a..303e2ed2 100644 \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -6278,7 +6278,7 @@ left-to-right. +@@ -6321,7 +6322,7 @@ left-to-right. \pnum The operands of \tcode{*} and \tcode{/} shall have arithmetic or unscoped enumeration type; the operands of \tcode{\%} shall have integral or unscoped @@ -2159,7 +2000,7 @@ index abf70d1a..303e2ed2 100644 operands and determine the type of the result. \pnum -@@ -6414,7 +6414,7 @@ the behavior is undefined\iref{expr.pre}. +@@ -6457,7 +6458,7 @@ the behavior is undefined\iref{expr.pre}. \pnum For addition or subtraction, if the expressions \tcode{P} or \tcode{Q} have type ``pointer to \cv{}~\tcode{T}'', where \tcode{T} and the array element type @@ -2168,7 +2009,7 @@ index abf70d1a..303e2ed2 100644 \begin{example} \begin{codeblock} int arr[5] = {1, 2, 3, 4, 5}; -@@ -6505,12 +6505,12 @@ and the other is not, the program is ill-formed. +@@ -6548,12 +6549,12 @@ and the other is not, the program is ill-formed. If both operands have arithmetic types, or one operand has integral type and the other operand has unscoped enumeration type, @@ -2183,7 +2024,7 @@ index abf70d1a..303e2ed2 100644 other than from an integral type to a floating-point type, the program is ill-formed. -@@ -6552,13 +6552,13 @@ the other operand is of object pointer or array type, +@@ -6595,13 +6596,13 @@ the other operand is of object pointer or array type, array-to-pointer conversions\iref{conv.array}, pointer conversions\iref{conv.ptr}, and @@ -2199,7 +2040,7 @@ index abf70d1a..303e2ed2 100644 \end{note} In this case, \tcode{p <=> q} is of type \tcode{std::strong_ordering} and -@@ -6649,7 +6649,7 @@ pointer conversions\iref{conv.ptr}, +@@ -6690,7 +6691,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring @@ -2208,10 +2049,10 @@ index abf70d1a..303e2ed2 100644 After conversions, the operands shall have the same type. \pnum -@@ -6736,10 +6736,10 @@ same type after the specified conversions have been applied. +@@ -6775,10 +6776,10 @@ same type after the specified conversions have been applied. \indextext{comparison!pointer}% \indextext{comparison!pointer to function}% - If at least one of the operands is a pointer, + If at least one of the converted operands is a pointer, -pointer conversions\iref{conv.ptr}, -function pointer conversions\iref{conv.fctptr}, and -qualification conversions\iref{conv.qual} @@ -2223,7 +2064,7 @@ index abf70d1a..303e2ed2 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -6756,7 +6756,8 @@ the result of the comparison is unspecified. +@@ -6795,7 +6796,8 @@ the result of the comparison is unspecified. \item Otherwise, if the pointers are both null, both point to the same \indextext{address}% @@ -2233,7 +2074,7 @@ index abf70d1a..303e2ed2 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -6801,12 +6802,12 @@ bool b1 = (bx == cx); // unspecified +@@ -6840,12 +6842,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -2248,7 +2089,7 @@ index abf70d1a..303e2ed2 100644 indirection with a hypothetical object of the associated class type were performed, otherwise they compare unequal. \begin{example} -@@ -7032,7 +7033,7 @@ Otherwise, if the second and third operand have different types and +@@ -7071,7 +7073,7 @@ Otherwise, if the second and third operand have different types and either has (possibly cv-qualified) class type, or if both are glvalues of the same value category and the same type except for cv-qualification, an attempt is made to @@ -2257,7 +2098,7 @@ index abf70d1a..303e2ed2 100644 each of those operands to the type of the other. \begin{note} Properties such as access, whether an operand is a bit-field, or whether -@@ -7074,9 +7075,9 @@ denotes the cv-qualifiers of \tcode{T1}; +@@ -7113,9 +7115,9 @@ denotes the cv-qualifiers of \tcode{T1}; \item otherwise, the target type is the type that \tcode{E2} would have after applying the @@ -2270,19 +2111,19 @@ index abf70d1a..303e2ed2 100644 standard conversions. \end{itemize} \end{itemize} -@@ -7117,8 +7118,8 @@ are used in place of the original operands for the remainder of this +@@ -7156,8 +7158,8 @@ are used in place of the original operands for the remainder of this subclause. \pnum --Lvalue-to-rvalue\iref{conv.lval}, array-to-pointer\iref{conv.array}, +-Array-to-pointer\iref{conv.array} -and function-to-pointer\iref{conv.func} standard conversions are -+\link{Lvalue-to-rvalue}{conv.lval}, \link{array-to-pointer}{conv.array}, ++\link{Array-to-pointer}{conv.array} +and \link{function-to-pointer}{conv.func} standard conversions are performed on the second and third operands. After those conversions, one of the following shall hold: -@@ -7127,15 +7128,15 @@ of the following shall hold: - that type and the result object is initialized using the selected operand. +@@ -7166,16 +7168,16 @@ of the following shall hold: + that type and the result is copy-initialized using the selected operand. \item The second and third operands have arithmetic or enumeration type; -the usual arithmetic conversions\iref{expr.arith.conv} are performed to bring them to a common @@ -2290,11 +2131,13 @@ index abf70d1a..303e2ed2 100644 type, and the result is of that type. \item One or both of the second and third operands have pointer type; --pointer conversions\iref{conv.ptr}, --function pointer conversions\iref{conv.fctptr}, and +-lvalue-to-rvalue\iref{conv.lval}, +-pointer\iref{conv.ptr}, +-function pointer\iref{conv.fctptr}, and -qualification conversions\iref{conv.qual} -+\link{pointer conversions}{conv.ptr}, -+\link{function pointer conversions}{conv.fctptr}, and ++\link{lvalue-to-rvalue}{conv.lval}, ++\link{pointer}{conv.ptr}, ++\link{function pointer}{conv.fctptr}, and +\link{qualification conversions}{conv.qual} are performed to bring them to their -composite pointer type\iref{expr.type}. The result is of the composite @@ -2302,7 +2145,7 @@ index abf70d1a..303e2ed2 100644 pointer type. \item One or both of the second and third operands have pointer-to-member type; -@@ -7314,7 +7315,7 @@ by replacing its value with the result of the right operand. +@@ -7359,7 +7361,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. \pnum \indextext{assignment!conversion by}% If the right operand is an expression, it is implicitly @@ -2311,7 +2154,7 @@ index abf70d1a..303e2ed2 100644 operand. \pnum -@@ -7328,7 +7329,7 @@ resulting value of the bit-field is +@@ -7373,7 +7375,7 @@ resulting value of the bit-field is An assignment whose left operand is of a volatile-qualified type is deprecated\iref{depr.volatile.type} unless the (possibly parenthesized) assignment is a discarded-value expression or @@ -2320,7 +2163,7 @@ index abf70d1a..303e2ed2 100644 \pnum The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} -@@ -7400,7 +7401,7 @@ The comma operator groups left-to-right. +@@ -7445,7 +7447,7 @@ The comma operator groups left-to-right. A pair of expressions separated by a comma is evaluated left-to-right; the left expression is @@ -2329,7 +2172,7 @@ index abf70d1a..303e2ed2 100644 The left expression is sequenced before the right expression\iref{intro.execution}. \indextext{operator!side effects and comma}% -@@ -7434,7 +7435,7 @@ Certain contexts require expressions that satisfy additional +@@ -7479,7 +7481,7 @@ Certain contexts require expressions that satisfy additional requirements as detailed in this subclause; other contexts have different semantics depending on whether or not an expression satisfies these requirements. Expressions that satisfy these requirements, @@ -2338,18 +2181,19 @@ index abf70d1a..303e2ed2 100644 are called \indexdefn{expression!constant}% \defnx{constant expressions}{constant expression}. -@@ -7487,8 +7488,8 @@ $V$'s initializing declaration $D$ is reachable from $P$ and - An object or reference is \defn{usable in constant expressions} if it is - \begin{itemize} - \item a variable that is usable in constant expressions, or --\item a template parameter object\iref{temp.param}, or --\item a string literal object\iref{lex.string}, or -+\item a \link{template parameter}{temp.param} object, or -+\item a \link{string literal}{lex.string} object, or - \item a temporary object of non-volatile const-qualified literal type - whose lifetime is extended\iref{class.temporary} - to that of a variable that is usable in constant expressions, or -@@ -7562,7 +7563,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. +@@ -7653,9 +7655,9 @@ a temporary object of non-volatile const-qualified literal type + whose lifetime is extended\iref{class.temporary} + to that of a variable that is usable in constant expressions at $P$, + \item +-a template parameter object\iref{temp.param}, ++a \link{template parameter}{temp.param} object, + \item +-a string literal object\iref{lex.string}, ++a \link{string literal}{lex.string} object, + \item + a non-mutable subobject of any of the above, or + \item +@@ -7746,7 +7748,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -2358,7 +2202,7 @@ index abf70d1a..303e2ed2 100644 it is applied to \begin{itemize} \item -@@ -7581,7 +7582,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -7768,7 +7770,7 @@ that refers to a non-active member of a union or a subobject thereof; \item an lvalue-to-rvalue conversion that is applied to @@ -2367,7 +2211,7 @@ index abf70d1a..303e2ed2 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -7909,7 +7910,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -8135,7 +8137,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte Such expressions can be used as bit-field lengths\iref{class.bit}, as enumerator initializers if the underlying type is not fixed\iref{dcl.enum}, @@ -2376,7 +2220,7 @@ index abf70d1a..303e2ed2 100644 \end{note} \pnum -@@ -7959,9 +7960,8 @@ and where the reference binding (if any) binds directly. +@@ -8185,9 +8187,8 @@ and where the reference binding (if any) binds directly. Such expressions can be used in \keyword{new} expressions\iref{expr.new}, as case expressions\iref{stmt.switch}, as enumerator initializers if the underlying type is @@ -2388,7 +2232,7 @@ index abf70d1a..303e2ed2 100644 \end{note} \indextext{contextually converted constant expression of type \tcode{bool}|see{conversion, contextual}}% \indextext{conversion!contextual to constant expression of type \tcode{bool}}% -@@ -8238,7 +8238,7 @@ if it is: +@@ -8444,7 +8445,7 @@ if it is: a manifestly constant-evaluated expression, \item @@ -2397,7 +2241,7 @@ index abf70d1a..303e2ed2 100644 \item an immediate subexpression of a \grammarterm{braced-init-list}, -@@ -8265,7 +8265,9 @@ A function or variable is +@@ -8471,7 +8472,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -2409,7 +2253,7 @@ index abf70d1a..303e2ed2 100644 \item diff --git a/source/future.tex b/source/future.tex -index 4eab361b..4de4dfc9 100644 +index 1abc48bc..0cc895da 100644 --- a/source/future.tex +++ b/source/future.tex @@ -14,7 +14,7 @@ is defined as: @@ -2421,7 +2265,7 @@ index 4eab361b..4de4dfc9 100644 \rSec1[depr.local]{Non-local use of TU-local entities} -@@ -138,11 +138,11 @@ auto cmp = arr1 <=> arr2; // error +@@ -132,11 +132,11 @@ void h(auto......); // deprecated \rSec1[depr.impldec]{Implicit declaration of copy functions} \pnum @@ -2436,7 +2280,7 @@ index 4eab361b..4de4dfc9 100644 as defaulted is deprecated if the class has a user-declared copy constructor or a user-declared destructor. -@@ -506,7 +506,7 @@ template struct tuple_size; +@@ -535,7 +535,7 @@ template struct tuple_size; \pnum Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. If the expression \tcode{TS::value} is well-formed @@ -2446,7 +2290,7 @@ index 4eab361b..4de4dfc9 100644 the \oldconcept{TransformationTrait} requirements with a base characteristic of \tcode{integral_constant}. diff --git a/source/intro.tex b/source/intro.tex -index 4f298445..35a4372b 100644 +index d5cb23dc..f3ca38d7 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -94,8 +94,8 @@ Reads of scalar objects are described in \ref{conv.lval} and @@ -2460,7 +2304,7 @@ index 4f298445..35a4372b 100644 such invocations do not themselves constitute accesses, although they may involve accesses of scalar subobjects. \end{defnote} -@@ -237,10 +237,11 @@ implementation's output messages +@@ -242,10 +242,11 @@ implementation's output messages glvalue refers \begin{example} @@ -2476,7 +2320,7 @@ index 4f298445..35a4372b 100644 treated similarly. \end{example} -@@ -308,7 +309,7 @@ handler functions (see \ref{support}). +@@ -313,7 +314,7 @@ handler functions (see \ref{support}). \indexdefn{program!ill-formed}% \definition{ill-formed program}{defns.ill.formed} @@ -2485,7 +2329,7 @@ index 4f298445..35a4372b 100644 \indexdefn{behavior!implementation-defined}% \definition{implementation-defined behavior}{defns.impl.defined} -@@ -776,7 +777,7 @@ a \grammarterm{static_assert-declaration} that fails\iref{dcl.pre}. +@@ -798,7 +799,7 @@ a \grammarterm{static_assert-declaration} that fails\iref{dcl.pre}. \indextext{conformance requirements!classes}% \indextext{conformance requirements!class templates}% For classes and class templates, the library Clauses specify partial @@ -2494,7 +2338,7 @@ index 4f298445..35a4372b 100644 specified, but each implementation shall supply them to complete the definitions according to the description in the library Clauses. -@@ -793,7 +794,7 @@ the appropriate standard library named header unit\iref{using.headers}. +@@ -815,7 +816,7 @@ the appropriate standard library named header unit\iref{using.headers}. \pnum The templates, classes, functions, and objects in the library have @@ -2504,7 +2348,7 @@ index 4f298445..35a4372b 100644 translation units to form a complete \Cpp{} program\iref{lex.phases}.% \indextext{conformance requirements!library|)} diff --git a/source/iostreams.tex b/source/iostreams.tex -index 34bd3341..64b38daf 100644 +index d9271823..b825f374 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -555,7 +555,7 @@ is initialized, @@ -2683,7 +2527,7 @@ index 34bd3341..64b38daf 100644 of \tcode{out}. Constructs a character sequence \tcode{seq}. If \tcode{c} has type \tcode{char} -@@ -7455,7 +7455,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. +@@ -7461,7 +7461,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. \pnum \effects The expression \tcode{in >> get_money(mon, intl)} described below @@ -2692,7 +2536,7 @@ index 34bd3341..64b38daf 100644 \pnum \returns -@@ -7500,7 +7500,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. +@@ -7506,7 +7506,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. An object of unspecified type such that if \tcode{out} is an object of type \tcode{basic_ostream} then the expression \tcode{out << put_money(mon, intl)} behaves as a @@ -2701,7 +2545,7 @@ index 34bd3341..64b38daf 100644 \tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as: \begin{codeblock} -@@ -7624,7 +7624,7 @@ of \tcode{basic_ostream} with member type \tcode{char_type} the same as +@@ -7630,7 +7630,7 @@ of \tcode{basic_ostream} with member type \tcode{char_type} the same as \tcode{charT} and with member type \tcode{traits_type}, which in the second and third forms is the same as \tcode{traits}, then the expression \tcode{out << quoted(s, delim, escape)} @@ -2710,7 +2554,7 @@ index 34bd3341..64b38daf 100644 of \tcode{out}. This forms a character sequence \tcode{seq}, initially consisting of the following elements: \begin{itemize} -@@ -14104,7 +14104,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. +@@ -14109,7 +14109,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. \pnum \begin{note} @@ -2719,7 +2563,7 @@ index 34bd3341..64b38daf 100644 for how the value types above and their encodings convert to \tcode{path::value_type} and its encoding. \end{note} -@@ -14704,7 +14704,7 @@ by \ref{fs.path.cvt}. +@@ -14709,7 +14709,7 @@ by \ref{fs.path.cvt}. \pnum Generic format observer functions return strings formatted according to the @@ -2728,7 +2572,7 @@ index 34bd3341..64b38daf 100644 A single slash (\tcode{'/'}) character is used as the \grammarterm{directory-separator}. -@@ -15247,11 +15247,11 @@ If normalization\iref{fs.path.generic} is needed +@@ -15252,11 +15252,11 @@ If normalization\iref{fs.path.generic} is needed \indexlibrarymember{path}{iterator}% \pnum Path iterators iterate over the elements of the pathname @@ -2742,7 +2586,7 @@ index 34bd3341..64b38daf 100644 except that, for dereferenceable iterators \tcode{a} and \tcode{b} of type \tcode{path::iterator} -@@ -16608,7 +16608,7 @@ If a file is removed from or added to a directory after the +@@ -16613,7 +16613,7 @@ If a file is removed from or added to a directory after the construction of a \tcode{directory_iterator} for the directory, it is unspecified whether or not subsequently incrementing the iterator will ever result in an iterator referencing the removed or added directory entry. See @@ -2751,7 +2595,7 @@ index 34bd3341..64b38daf 100644 \end{note} \rSec3[fs.dir.itr.members]{Members} -@@ -16700,7 +16700,7 @@ directory_iterator& increment(error_code& ec); +@@ -16705,7 +16705,7 @@ directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -2760,7 +2604,7 @@ index 34bd3341..64b38daf 100644 \pnum \returns -@@ -17012,7 +17012,7 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17017,7 +17017,7 @@ recursive_directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -2769,7 +2613,7 @@ index 34bd3341..64b38daf 100644 except that: \begin{itemize} -@@ -17603,7 +17603,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin +@@ -17608,7 +17608,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin \begin{itemdescr} \pnum \effects @@ -2778,7 +2622,7 @@ index 34bd3341..64b38daf 100644 \pnum \ensures -@@ -17679,7 +17679,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, +@@ -17684,7 +17684,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, \begin{itemdescr} \pnum \effects @@ -2787,7 +2631,7 @@ index 34bd3341..64b38daf 100644 \pnum \ensures -@@ -17712,7 +17712,7 @@ path filesystem::current_path(error_code& ec); +@@ -17717,7 +17717,7 @@ path filesystem::current_path(error_code& ec); \returns The absolute path of the current working directory, whose pathname in the native format is @@ -2796,7 +2640,7 @@ index 34bd3341..64b38daf 100644 The signature with argument \tcode{ec} returns \tcode{path()} if an error occurs. -@@ -17749,7 +17749,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; +@@ -17754,7 +17754,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; \begin{itemdescr} \pnum \effects @@ -2805,7 +2649,7 @@ index 34bd3341..64b38daf 100644 \pnum \ensures -@@ -17860,7 +17860,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. +@@ -17865,7 +17865,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. \item If \tcode{is_regular_file(p)}, the size in bytes of the file \tcode{p} resolves to, determined as if by the value of the POSIX \tcode{stat} @@ -2814,7 +2658,7 @@ index 34bd3341..64b38daf 100644 \item Otherwise, the result is \impldef{result of \tcode{filesystem::file_size}}. \end{itemize} -@@ -18242,7 +18242,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time, +@@ -18247,7 +18247,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time, \pnum \effects Sets the time of last data modification of the file @@ -2824,7 +2668,7 @@ index 34bd3341..64b38daf 100644 \pnum \throws diff --git a/source/iterators.tex b/source/iterators.tex -index e1c8f73a..193fd678 100644 +index 7fcbff20..32642559 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -715,7 +715,7 @@ is undefined. @@ -2836,7 +2680,7 @@ index e1c8f73a..193fd678 100644 if all operations provided to meet iterator category requirements are constexpr functions. \begin{note} -@@ -6861,7 +6861,7 @@ ostream_iterator& operator++(int); +@@ -6835,7 +6835,7 @@ ostream_iterator& operator++(int); The class template \tcode{istreambuf_iterator} @@ -2845,7 +2689,7 @@ index e1c8f73a..193fd678 100644 reads successive \textit{characters} from the streambuf for which it was constructed. -@@ -6986,7 +6986,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; +@@ -6960,7 +6960,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; Initializes \tcode{sbuf_} with \keyword{nullptr}. \end{itemdescr} @@ -2853,7 +2697,7 @@ index e1c8f73a..193fd678 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(istream_type& s) noexcept; -@@ -6998,7 +6997,6 @@ istreambuf_iterator(istream_type& s) noexcept; +@@ -6972,7 +6971,6 @@ istreambuf_iterator(istream_type& s) noexcept; Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2861,7 +2705,7 @@ index e1c8f73a..193fd678 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(streambuf_type* s) noexcept; -@@ -7010,7 +7008,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; +@@ -6984,7 +6982,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; Initializes \tcode{sbuf_} with \tcode{s}. \end{itemdescr} @@ -2869,7 +2713,7 @@ index e1c8f73a..193fd678 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept; -@@ -7161,7 +7158,6 @@ is not a null pointer. +@@ -7135,7 +7132,6 @@ is not a null pointer. Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2878,7 +2722,7 @@ index e1c8f73a..193fd678 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index d034d35f..1c8f710d 100644 +index f9f23382..bc0f5b3b 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2903,7 +2747,7 @@ index d034d35f..1c8f710d 100644 \end{note} \indextext{compilation!separate|)} -@@ -2240,7 +2240,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) +@@ -2232,7 +2232,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) \pnum If \placeholder{L} is a \grammarterm{user-defined-character-literal}, let \placeholder{ch} be the literal without its \grammarterm{ud-suffix}. @@ -2913,7 +2757,7 @@ index d034d35f..1c8f710d 100644 literal \placeholder{L} is treated as a call of the form diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 96458fbd..030a2acc 100644 +index fab923bf..6edd7095 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2954,7 +2798,7 @@ index 96458fbd..030a2acc 100644 can be declared as \tcode{\placeholdernc{T\;A}[\placeholder{N}]}, where \tcode{\placeholder{T}} is any of the types -@@ -880,7 +880,7 @@ signatures, or for virtual destructors that can be generated by default. +@@ -911,7 +911,7 @@ signatures, or for virtual destructors that can be generated by default. \pnum \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr} do not specify the representation of classes, and intentionally @@ -2963,7 +2807,7 @@ index 96458fbd..030a2acc 100644 define static or non-static class members, or both, as needed to implement the semantics of the member functions specified in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr}. -@@ -1286,10 +1286,10 @@ std::vector vi; // OK +@@ -1318,10 +1318,10 @@ std::vector vi; // OK Except as noted in \ref{library} through \ref{\lastlibchapter} and \ref{depr}, the contents of each header \tcode{c\placeholder{name}} is the same as that of the corresponding header \tcode{\placeholder{name}.h} as @@ -2976,7 +2820,7 @@ index 96458fbd..030a2acc 100644 It is unspecified whether these names (including any overloads added in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr}) are first declared within the global namespace scope -@@ -1596,8 +1596,8 @@ a hosted implementation. +@@ -1635,8 +1635,8 @@ a hosted implementation. \pnum Subclause \ref{using} describes how a \Cpp{} program gains access to the facilities of the \Cpp{} standard library. \ref{using.headers} describes effects during translation @@ -2987,7 +2831,7 @@ index 96458fbd..030a2acc 100644 \rSec3[using.headers]{Headers} -@@ -1640,7 +1640,7 @@ declared in that header. No diagnostic is required. +@@ -1679,7 +1679,7 @@ declared in that header. No diagnostic is required. \rSec3[using.linkage]{Linkage} \pnum @@ -2996,7 +2840,7 @@ index 96458fbd..030a2acc 100644 Unless otherwise specified, objects and functions have the default \tcode{extern "C++"} linkage\iref{dcl.link}. -@@ -1674,8 +1674,8 @@ the program prior to program startup. +@@ -1713,8 +1713,8 @@ the program prior to program startup. \indextext{startup!program}% \pnum See also @@ -3007,7 +2851,7 @@ index 96458fbd..030a2acc 100644 \rSec2[utility.requirements]{Requirements on types and expressions} -@@ -1723,7 +1723,7 @@ rvalue of type \tcode{const T}. +@@ -1762,7 +1762,7 @@ rvalue of type \tcode{const T}. In general, a default constructor is not required. Certain container class member function signatures specify \tcode{T()} as a default argument. \tcode{T()} shall be a well-defined expression\iref{dcl.init} if one of those @@ -3016,7 +2860,7 @@ index 96458fbd..030a2acc 100644 \begin{oldconcepttable}{EqualityComparable}{}{cpp17.equalitycomparable} {x{1in}x{1in}p{3in}} -@@ -1849,13 +1849,13 @@ evaluated in the context described below, and +@@ -1888,13 +1888,13 @@ evaluated in the context described below, and \pnum The context in which \tcode{swap(t, u)} and \tcode{swap(u, t)} are evaluated shall @@ -3033,7 +2877,7 @@ index 96458fbd..030a2acc 100644 \end{itemize} \begin{note} If \tcode{T} and \tcode{U} are both fundamental types or arrays of -@@ -1958,8 +1958,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in +@@ -1997,8 +1997,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in \end{note} \pnum @@ -3045,7 +2889,7 @@ index 96458fbd..030a2acc 100644 had been evaluated in place of \tcode{p}. \pnum -@@ -2062,7 +2063,7 @@ as the memory allocation and deallocation primitives for it. All of the +@@ -2101,7 +2102,7 @@ as the memory allocation and deallocation primitives for it. All of the string types\iref{strings}, containers\iref{containers} (except \tcode{array} and \tcode{inplace_vector}), string buffers and string streams\iref{input.output}, and @@ -3054,7 +2898,7 @@ index 96458fbd..030a2acc 100644 allocators. \pnum -@@ -2886,7 +2887,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, +@@ -2925,7 +2926,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, whether or not \tcode{T} is a complete type: \begin{itemize} \item \tcode{X} is a complete type, and @@ -3063,7 +2907,7 @@ index 96458fbd..030a2acc 100644 other than \tcode{value_type} are complete types. \end{itemize} -@@ -2897,11 +2898,11 @@ whether or not \tcode{T} is a complete type: +@@ -2936,11 +2937,11 @@ whether or not \tcode{T} is a complete type: \pnum Subclause \ref{constraints} describes restrictions on \Cpp{} programs that use the facilities of the \Cpp{} standard library. The following subclauses specify constraints on the @@ -3079,7 +2923,7 @@ index 96458fbd..030a2acc 100644 \rSec3[namespace.constraints]{Namespace use} -@@ -3294,7 +3295,7 @@ are reserved for use by \Cpp{} implementations. +@@ -3333,7 +3334,7 @@ are reserved for use by \Cpp{} implementations. If a file with a name equivalent to the derived file name for one of the \Cpp{} standard library headers is not provided as part of the implementation, and a file with that name @@ -3088,7 +2932,7 @@ index 96458fbd..030a2acc 100644 the behavior is undefined.% \indextext{source file}% \indextext{undefined} -@@ -3524,7 +3525,7 @@ specified as being shareable without data races or the user supplies a locking m +@@ -3563,7 +3564,7 @@ specified as being shareable without data races or the user supplies a locking m \pnum If an object of a standard library type is accessed, and @@ -3097,7 +2941,7 @@ index 96458fbd..030a2acc 100644 does not happen before the access, or the access does not happen before the end of the object's lifetime, the behavior is undefined unless otherwise specified. -@@ -3584,7 +3585,7 @@ Every such entity shall be defined such that any header that defines it may be +@@ -3623,7 +3624,7 @@ Every such entity shall be defined such that any header that defines it may be included after any other header that also defines it\iref{basic.def.odr}. \pnum @@ -3106,7 +2950,7 @@ index 96458fbd..030a2acc 100644 shall include only their corresponding \Cpp{} standard library header, as described in~\ref{headers}. -@@ -3612,7 +3613,7 @@ explicitly stated otherwise. +@@ -3651,7 +3652,7 @@ explicitly stated otherwise. It is unspecified whether any non-member functions in the \Cpp{} standard library are defined as @@ -3115,7 +2959,7 @@ index 96458fbd..030a2acc 100644 \pnum A call to a non-member function signature -@@ -3640,7 +3641,7 @@ The phrase ``unless otherwise specified'' applies to cases such as +@@ -3679,7 +3680,7 @@ The phrase ``unless otherwise specified'' applies to cases such as the swappable with requirements\iref{swappable.requirements}. The exception for overloaded operators allows argument-dependent lookup in cases like that of @@ -3124,7 +2968,7 @@ index 96458fbd..030a2acc 100644 \effects \begin{codeblock} -@@ -3655,7 +3656,7 @@ return *this; +@@ -3694,7 +3695,7 @@ return *this; \pnum It is unspecified whether any member functions in the \Cpp{} standard library are defined as @@ -3133,7 +2977,7 @@ index 96458fbd..030a2acc 100644 \pnum For a non-virtual member function described in the \Cpp{} standard library, -@@ -3734,8 +3735,8 @@ library may be recursively reentered. +@@ -3773,8 +3774,8 @@ library may be recursively reentered. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -3144,7 +2988,7 @@ index 96458fbd..030a2acc 100644 Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. -@@ -3778,7 +3779,7 @@ not visible to users and are protected against data races. +@@ -3817,7 +3818,7 @@ not visible to users and are protected against data races. \pnum Unless otherwise specified, \Cpp{} standard library functions shall perform all operations solely within the current thread if those operations have effects that are @@ -3153,7 +2997,7 @@ index 96458fbd..030a2acc 100644 \pnum \begin{note} -@@ -3885,7 +3886,7 @@ potentially-throwing exception specification} exceptions. +@@ -3924,7 +3925,7 @@ potentially-throwing exception specification} exceptions. \begin{footnote} In particular, they can report a failure to allocate storage by throwing an exception of type @@ -3162,7 +3006,7 @@ index 96458fbd..030a2acc 100644 or a class derived from \tcode{bad_alloc}\iref{bad.alloc}. \end{footnote} -@@ -3904,7 +3905,7 @@ by adding a non-throwing exception specification. +@@ -3943,7 +3944,7 @@ by adding a non-throwing exception specification. \pnum Certain functions in the \Cpp{} standard library report errors via a @@ -3185,10 +3029,10 @@ index bdc1f3de..efd4eb00 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index 86b42943..cba469a9 100644 +index cdd0c5d4..8fb33130 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -166,8 +166,8 @@ floating-point evaluation in constant expressions. +@@ -167,8 +167,8 @@ floating-point evaluation in constant expressions. \rSec2[cfenv.thread]{Threads} \pnum @@ -3199,7 +3043,7 @@ index 86b42943..cba469a9 100644 environment is the state of the floating-point environment of the thread that constructs the corresponding \tcode{thread} object\iref{thread.thread.class} or \tcode{jthread} object\iref{thread.jthread.class} -@@ -1571,21 +1571,21 @@ the effect of instantiating a template: +@@ -1574,21 +1574,21 @@ the effect of instantiating a template: is undefined unless the corresponding template argument is cv-unqualified and meets the requirements @@ -3224,16 +3068,16 @@ index 86b42943..cba469a9 100644 \item that has a template type parameter named \tcode{RealType} -@@ -1709,7 +1709,7 @@ In \tref{rand.req.seedseq} and throughout this subclause: +@@ -1712,7 +1712,7 @@ In \tref{rand.req.seedseq} and throughout this subclause: \endhead \tcode{S::result_type} & \tcode{T} - & \tcode{T} is an unsigned integer type\iref{basic.fundamental} + & \tcode{T} is an \deflinkx{unsigned integer type}{type!unsigned integer}{basic.fundamental} of at least 32 bits. - & compile-time + & \\ \rowsep -@@ -1874,7 +1874,7 @@ An engine's state may be established via +@@ -1877,7 +1877,7 @@ An engine's state may be established via \pnum A class \tcode{E} that meets the requirements @@ -3242,7 +3086,7 @@ index 86b42943..cba469a9 100644 also meets the requirements of a \term{random number engine} if the expressions shown -@@ -1895,7 +1895,7 @@ In \tref{rand.req.eng} and throughout this subclause: +@@ -1898,7 +1898,7 @@ In \tref{rand.req.eng} and throughout this subclause: \tcode{s} is a value of \tcode{T}; \item \tcode{q} is an lvalue @@ -3251,7 +3095,7 @@ index 86b42943..cba469a9 100644 \item \tcode{z} is a value of type \tcode{unsigned long long}; -@@ -2287,7 +2287,7 @@ In \tref{rand.req.dist} and throughout this subclause, +@@ -2290,7 +2290,7 @@ In \tref{rand.req.dist} and throughout this subclause, \item \tcode{g}, \tcode{g1}, and \tcode{g2} are lvalues of a type meeting the requirements @@ -3260,16 +3104,16 @@ index 86b42943..cba469a9 100644 \item \tcode{os} is an lvalue of the type of some class template specialization \tcode{basic_ostream}; -@@ -2319,7 +2319,7 @@ according to \ref{strings} and \ref{input.output}. +@@ -2322,7 +2322,7 @@ according to \ref{strings} and \ref{input.output}. \endhead \tcode{D::result_type} & \tcode{T} - & \tcode{T} is an arithmetic type\iref{basic.fundamental}. + & \tcode{T} is an \deflinkx{arithmetic type}{type!arithmetic}{basic.fundamental}. - & compile-time + & \\ \rowsep \tcode{D::param_type} -@@ -2526,7 +2526,7 @@ using distribution_type = D; +@@ -2529,7 +2529,7 @@ using distribution_type = D; Each type instantiated from a class template specified in \ref{rand.eng} meets the requirements @@ -3278,7 +3122,7 @@ index 86b42943..cba469a9 100644 \pnum Except where specified otherwise, -@@ -3320,7 +3320,7 @@ The counter is the value $Z$ introduced at the beginning of this subclause. +@@ -3321,7 +3321,7 @@ The counter is the value $Z$ introduced at the beginning of this subclause. Each type instantiated from a class template specified in \ref{rand.adapt} meets the requirements @@ -3287,7 +3131,7 @@ index 86b42943..cba469a9 100644 \pnum Except where specified otherwise, -@@ -4414,7 +4414,7 @@ than the output when computing $S$. +@@ -4415,7 +4415,7 @@ than the output when computing $S$. Each type instantiated from a class template specified in \ref{rand.dist} meets the requirements @@ -3296,7 +3140,7 @@ index 86b42943..cba469a9 100644 \pnum Descriptions are provided in \ref{rand.dist} -@@ -5266,6 +5266,7 @@ p(x\,|\,\alpha,\beta) = +@@ -5267,6 +5267,7 @@ p(x\,|\,\alpha,\beta) = \indexlibraryglobal{gamma_distribution}% \indexlibrarymember{result_type}{gamma_distribution}% @@ -3304,7 +3148,7 @@ index 86b42943..cba469a9 100644 \begin{codeblock} namespace std { template -@@ -5309,7 +5310,6 @@ namespace std { +@@ -5310,7 +5311,6 @@ namespace std { } \end{codeblock} @@ -3312,7 +3156,7 @@ index 86b42943..cba469a9 100644 \indexlibraryctor{gamma_distribution}% \begin{itemdecl} explicit gamma_distribution(RealType alpha, RealType beta = 1.0); -@@ -5416,7 +5416,7 @@ namespace std { +@@ -5417,7 +5417,7 @@ namespace std { \indexlibraryctor{weibull_distribution}% \begin{itemdecl} explicit weibull_distribution(RealType a, RealType b = 1.0); @@ -3321,7 +3165,7 @@ index 86b42943..cba469a9 100644 \begin{itemdescr} \pnum -@@ -5526,7 +5526,6 @@ namespace std { +@@ -5527,7 +5527,6 @@ namespace std { } \end{codeblock} @@ -3329,7 +3173,7 @@ index 86b42943..cba469a9 100644 \indexlibraryctor{extreme_value_distribution}% \begin{itemdecl} explicit extreme_value_distribution(RealType a, RealType b = 1.0); -@@ -5650,7 +5649,6 @@ namespace std { +@@ -5651,7 +5650,6 @@ namespace std { } \end{codeblock} @@ -3337,7 +3181,7 @@ index 86b42943..cba469a9 100644 \indexlibraryctor{normal_distribution}% \begin{itemdecl} explicit normal_distribution(RealType mean, RealType stddev = 1.0); -@@ -5854,7 +5852,6 @@ namespace std { +@@ -5855,7 +5853,6 @@ namespace std { } \end{codeblock} @@ -3345,7 +3189,7 @@ index 86b42943..cba469a9 100644 \indexlibraryctor{chi_squared_distribution}% \begin{itemdecl} explicit chi_squared_distribution(RealType n); -@@ -6048,7 +6045,6 @@ namespace std { +@@ -6049,7 +6046,6 @@ namespace std { } \end{codeblock} @@ -3353,7 +3197,7 @@ index 86b42943..cba469a9 100644 \indexlibraryctor{fisher_f_distribution}% \begin{itemdecl} explicit fisher_f_distribution(RealType m, RealType n = 1); -@@ -6151,7 +6147,6 @@ namespace std { +@@ -6152,7 +6148,6 @@ namespace std { } \end{codeblock} @@ -3361,7 +3205,7 @@ index 86b42943..cba469a9 100644 \indexlibraryctor{student_t_distribution}% \begin{itemdecl} explicit student_t_distribution(RealType n); -@@ -6267,7 +6262,7 @@ namespace std { +@@ -6268,7 +6263,7 @@ namespace std { } \end{codeblock} @@ -3370,7 +3214,7 @@ index 86b42943..cba469a9 100644 \begin{itemdecl} discrete_distribution(); \end{itemdecl} -@@ -7097,8 +7092,9 @@ additional functions and operators as follows: +@@ -7098,8 +7093,9 @@ additional functions and operators as follows: \begin{itemize} \item for every function taking a @@ -3382,7 +3226,7 @@ index 86b42943..cba469a9 100644 identical functions taking the replacement types shall be added; \item for every function taking two -@@ -7123,7 +7119,7 @@ objects. +@@ -7124,7 +7120,7 @@ objects. \pnum These library functions are permitted to throw a @@ -3391,7 +3235,7 @@ index 86b42943..cba469a9 100644 to carry out the operation. Note that the exception is not mandated. -@@ -7283,7 +7279,7 @@ explicit valarray(size_t n); +@@ -7284,7 +7280,7 @@ explicit valarray(size_t n); \pnum \effects Constructs a \tcode{valarray} that has length \tcode{n}. @@ -3400,7 +3244,7 @@ index 86b42943..cba469a9 100644 \end{itemdescr} \indexlibraryctor{valarray}% -@@ -7543,7 +7539,7 @@ and other techniques to generate efficient +@@ -7544,7 +7540,7 @@ and other techniques to generate efficient \pnum The reference returned by the subscript operator for an array shall be valid until the member function @@ -3409,7 +3253,7 @@ index 86b42943..cba469a9 100644 that array ends, whichever happens first. \end{itemdescr} -@@ -7969,7 +7965,7 @@ places, with zero fill. +@@ -7970,7 +7966,7 @@ places, with zero fill. \pnum \begin{example} If the argument has the value $-2$, @@ -3418,7 +3262,7 @@ index 86b42943..cba469a9 100644 of the first element of \tcode{*this}; etc. \end{example} \end{itemdescr} -@@ -9094,7 +9090,7 @@ parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. +@@ -9095,7 +9091,7 @@ parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. \pnum The iterators returned by \tcode{begin} and \tcode{end} for an array are guaranteed to be valid until the member function @@ -3427,7 +3271,7 @@ index 86b42943..cba469a9 100644 array or until the lifetime of that array ends, whichever happens first. -@@ -9731,12 +9727,12 @@ namespace std { +@@ -9732,12 +9728,12 @@ namespace std { The contents and meaning of the header \libheader{cmath} are the same as the C standard library header \libheader{math.h}, with the addition of @@ -3443,7 +3287,7 @@ index 86b42943..cba469a9 100644 \end{note} \pnum -@@ -9800,7 +9796,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. +@@ -9801,7 +9797,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. If \tcode{abs} is called with an argument of type \tcode{X} for which \tcode{is_unsigned_v} is \tcode{true} and if \tcode{X} cannot be converted to \tcode{int} @@ -3453,7 +3297,7 @@ index 86b42943..cba469a9 100644 Allowing arguments that can be promoted to \tcode{int} provides compatibility with C. diff --git a/source/overloading.tex b/source/overloading.tex -index 48da87b1..481068cf 100644 +index cf7d8093..8c172ec0 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -69,7 +69,7 @@ Overload resolution selects the function to call in seven distinct @@ -3569,7 +3413,7 @@ index 48da87b1..481068cf 100644 return type of $\tcode{F}_1$ is the same kind of reference (lvalue or rvalue) as the reference being initialized, and the return type of $\tcode{F}_2$ is not \begin{example} -@@ -1895,7 +1895,7 @@ $\tcode{F}_1$ is generated from a +@@ -1884,7 +1884,7 @@ $\tcode{F}_1$ is generated from a and $\tcode{F}_2$ is not, or, if not that, \item @@ -3578,7 +3422,7 @@ index 48da87b1..481068cf 100644 and $\tcode{F}_2$ is not, or, if not that, \item -@@ -2040,7 +2040,7 @@ parameter. +@@ -2029,7 +2029,7 @@ parameter. \begin{note} Other properties, such as the lifetime, storage duration, linkage, alignment, accessibility of the argument, whether the argument is a bit-field, @@ -3587,7 +3431,7 @@ index 48da87b1..481068cf 100644 So, although an implicit conversion sequence can be defined for a given argument-parameter pair, the conversion from the argument to the parameter might still -@@ -2053,11 +2053,11 @@ well-formed implicit conversion +@@ -2042,11 +2042,11 @@ well-formed implicit conversion sequence is one of the following forms: \begin{itemize} \item @@ -3602,7 +3446,7 @@ index 48da87b1..481068cf 100644 \end{itemize} \pnum -@@ -2238,10 +2238,10 @@ Each conversion in \tref{over.ics.scs} +@@ -2227,10 +2227,10 @@ Each conversion in \tref{over.ics.scs} also has an associated rank (Exact Match, Promotion, or Conversion). These are used @@ -3616,7 +3460,7 @@ index 48da87b1..481068cf 100644 If any of those has Conversion rank, the sequence has Conversion rank; otherwise, if any of those has Promotion rank, the sequence has Promotion rank; otherwise, the sequence has Exact -@@ -2278,7 +2278,7 @@ by a constructor\iref{class.conv.ctor}, the initial standard +@@ -2267,7 +2267,7 @@ by a constructor\iref{class.conv.ctor}, the initial standard conversion sequence converts the source type to the type of the first parameter of that constructor. If the user-defined @@ -3625,7 +3469,7 @@ index 48da87b1..481068cf 100644 initial standard conversion sequence converts the source type to the type of the object parameter of that conversion function. -@@ -2409,7 +2409,7 @@ the prohibition on binding a non-\keyword{const} lvalue reference to a bit-field +@@ -2403,7 +2403,7 @@ the prohibition on binding a non-\keyword{const} lvalue reference to a bit-field \rSec4[over.ics.list]{List-initialization sequence} \pnum @@ -3634,7 +3478,7 @@ index 48da87b1..481068cf 100644 expression and special rules apply for converting it to a parameter type. \pnum -@@ -2651,13 +2651,13 @@ When comparing the basic forms of implicit conversion sequences +@@ -2645,13 +2645,13 @@ When comparing the basic forms of implicit conversion sequences (as defined in~\ref{over.best.ics}) \begin{itemize} \item @@ -3652,7 +3496,7 @@ index 48da87b1..481068cf 100644 \end{itemize} \pnum -@@ -3103,11 +3103,11 @@ The target can be +@@ -3093,11 +3093,11 @@ The target can be \item an object or reference being initialized\iref{dcl.init,dcl.init.ref,dcl.init.list}, \item @@ -3666,7 +3510,7 @@ index 48da87b1..481068cf 100644 \item the return value of a function, operator function, or conversion\iref{stmt.return}, \item -@@ -3291,8 +3291,8 @@ The operators +@@ -3298,8 +3298,8 @@ The operators and \tcode{[]} are formed from more than one token. @@ -3677,7 +3521,7 @@ index 48da87b1..481068cf 100644 \end{note} \indextext{operator!subscripting}% \indextext{operator!function call}% -@@ -3393,7 +3393,7 @@ this is not required by operator functions. +@@ -3395,7 +3395,7 @@ this is not required by operator functions. \pnum \indextext{argument!overloaded operator and default}% @@ -3686,7 +3530,7 @@ index 48da87b1..481068cf 100644 except where explicitly stated below. Operator functions cannot have more or fewer parameters than the -@@ -3729,7 +3729,7 @@ to not be included in the set of candidate functions. +@@ -3731,7 +3731,7 @@ to not be included in the set of candidate functions. In this subclause, the term \defn{promoted integral type} is used to refer to those cv-unqualified integral types which are preserved by @@ -3696,10 +3540,10 @@ index 48da87b1..481068cf 100644 and \tcode{long} diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 23944f5b..3bab1be7 100644 +index 7c29effc..7dd32efe 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex -@@ -418,7 +418,7 @@ shall not appear in any context not mentioned in this subclause. +@@ -425,7 +425,7 @@ shall not appear in any context not mentioned in this subclause. Each preprocessing token that remains (in the list of preprocessing tokens that will become the controlling expression) after all macro replacements have occurred @@ -3708,7 +3552,7 @@ index 23944f5b..3bab1be7 100644 \pnum Preprocessing directives of the forms -@@ -464,8 +464,8 @@ are replaced with the \grammarterm{pp-number} +@@ -471,8 +471,8 @@ are replaced with the \grammarterm{pp-number} \tcode{0}, and then each preprocessing token is converted into a token. \begin{note} @@ -3719,7 +3563,7 @@ index 23944f5b..3bab1be7 100644 even when its spelling consists entirely of letters and underscores. Therefore it is not subject to this replacement. \end{note} -@@ -483,8 +483,8 @@ Thus on an +@@ -490,8 +490,8 @@ Thus on an implementation where \tcode{std::numeric_limits::max()} is \tcode{0x7FFF} and \tcode{std::numeric_limits::max()} is \tcode{0xFFFF}, the integer literal \tcode{0x8000} is signed and positive within a \tcode{\#if} @@ -3730,16 +3574,16 @@ index 23944f5b..3bab1be7 100644 \end{note} This includes interpreting \grammarterm{character-literal}s according to the rules in \ref{lex.ccon}. -@@ -1602,7 +1602,7 @@ The - \defn{line number} - of the current source line is one greater than +@@ -1611,7 +1611,7 @@ of the current source line is + the line number of the current physical source line, + i.e., it is one greater than the number of new-line characters read or introduced -in translation phase 1\iref{lex.phases} +in \link{translation phase 1}{lex.phases} - while processing the source file to the current token. + while processing the source file to the current preprocessing token. \pnum -@@ -1944,7 +1944,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. +@@ -1954,7 +1954,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. \indextext{__stdcpp_threads__@\mname{STDCPP_THREADS}}% \mname{STDCPP_THREADS}\\ Defined, and has the value integer literal 1, if and only if a program @@ -3749,7 +3593,7 @@ index 23944f5b..3bab1be7 100644 \end{description} diff --git a/source/statements.tex b/source/statements.tex -index 9940ee28..736fcc7c 100644 +index 7fcee858..74882666 100644 --- a/source/statements.tex +++ b/source/statements.tex @@ -197,7 +197,7 @@ Expression statements have the form @@ -3761,7 +3605,7 @@ index 9940ee28..736fcc7c 100644 All \indextext{side effects}% side effects from an expression statement -@@ -428,10 +428,10 @@ the value of the condition is the value of the \grammarterm{expression}; +@@ -426,10 +426,10 @@ the value of the condition is the value of the \grammarterm{expression}; otherwise, it is the value of the decision variable. The value of the condition shall be of integral type, enumeration type, or class type. If of class type, the @@ -3775,7 +3619,7 @@ index 9940ee28..736fcc7c 100644 to the promoted type. Any statement within the \keyword{switch} statement can be labeled with one or -@@ -441,7 +441,7 @@ more case labels as follows: +@@ -439,7 +439,7 @@ more case labels as follows: \keyword{case} constant-expression \terminal{:} \end{ncbnf} where the \grammarterm{constant-expression} shall be @@ -3784,7 +3628,7 @@ index 9940ee28..736fcc7c 100644 adjusted type of the switch condition. No two of the case constants in the same switch shall have the same value after conversion. -@@ -540,7 +540,7 @@ An \grammarterm{init-statement} ends with a semicolon. +@@ -538,7 +538,7 @@ An \grammarterm{init-statement} ends with a semicolon. \pnum \indextext{scope!\idxgram{iteration-statement}}% The substatement in an \grammarterm{iteration-statement} implicitly defines @@ -3793,7 +3637,7 @@ index 9940ee28..736fcc7c 100644 through the loop. If the substatement in an \grammarterm{iteration-statement} is a single statement and not a \grammarterm{compound-statement}, -@@ -638,7 +638,7 @@ fails. +@@ -636,7 +636,7 @@ fails. \indextext{statement!\idxcode{do}} \pnum @@ -3802,7 +3646,7 @@ index 9940ee28..736fcc7c 100644 if that conversion is ill-formed, the program is ill-formed. \pnum -@@ -807,8 +807,8 @@ Jump statements unconditionally transfer control. +@@ -805,8 +805,8 @@ Jump statements unconditionally transfer control. \indextext{local variable!destruction of}% \indextext{scope!destructor and exit from}% \begin{note} @@ -3813,7 +3657,7 @@ index 9940ee28..736fcc7c 100644 in the reverse order of their construction\iref{stmt.dcl}. For temporaries, see~\ref{class.temporary}. However, the program can be terminated (by calling -@@ -908,7 +908,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; +@@ -906,7 +906,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; the \tcode{return} statement initializes the returned reference or prvalue result object of the (explicit or implicit) function call @@ -3822,7 +3666,7 @@ index 9940ee28..736fcc7c 100644 \begin{note} A constructor or destructor does not have a return type. \end{note} -@@ -1031,7 +1031,7 @@ results in undefined behavior. +@@ -1029,7 +1029,7 @@ results in undefined behavior. The \tcode{goto} statement unconditionally transfers control to the statement labeled by the identifier. The identifier shall be a \indextext{label}% @@ -3831,7 +3675,7 @@ index 9940ee28..736fcc7c 100644 \rSec1[stmt.dcl]{Declaration statement}% \indextext{statement!declaration} -@@ -1100,8 +1100,8 @@ lx: +@@ -1098,8 +1098,8 @@ lx: \indextext{initialization!local \tcode{static}}% \indextext{initialization!local \tcode{thread_local}}% Dynamic initialization of a block variable with @@ -3842,7 +3686,7 @@ index 9940ee28..736fcc7c 100644 the first time control passes through its declaration; such a variable is considered initialized upon the completion of its initialization. If the initialization exits by throwing an exception, the initialization is not -@@ -1144,8 +1144,8 @@ will be destroyed if and only if it was constructed. +@@ -1142,8 +1142,8 @@ will be destroyed if and only if it was constructed. \pnum There is an ambiguity in the grammar involving \grammarterm{expression-statement}{s} and \grammarterm{declaration}{s}: An @@ -3854,10 +3698,10 @@ index 9940ee28..736fcc7c 100644 \grammarterm{declarator} starts with a \tcode{(}. In those cases the \grammarterm{statement} is considered a \grammarterm{declaration}, diff --git a/source/strings.tex b/source/strings.tex -index 7b6a11a4..2c930405 100644 +index fde8e62c..593a1bd2 100644 --- a/source/strings.tex +++ b/source/strings.tex -@@ -5507,13 +5507,13 @@ The contents and meaning of the header \libheaderdef{cstring} +@@ -5508,13 +5508,13 @@ The contents and meaning of the header \libheaderdef{cstring} are the same as the C standard library header \libheader{string.h}. \pnum @@ -3871,10 +3715,10 @@ index 7b6a11a4..2c930405 100644 \indextext{signal-safe!\idxcode{memmove}}% -The functions \tcode{memcpy} and \tcode{memmove} are signal-safe\iref{support.signal}. +The functions \tcode{memcpy} and \tcode{memmove} are \deflinkx{signal-safe}{evaluation!signal-safe}{support.signal}. - Both functions implicitly create objects\iref{intro.object} + Each of these functions implicitly creates objects\iref{intro.object} in the destination region of storage immediately prior to copying the sequence of characters to the destination. -@@ -5523,7 +5523,7 @@ immediately prior to copying the sequence of characters to the destination. +@@ -5526,7 +5526,7 @@ otherwise the value of the first parameter. The functions \tcode{strchr}, \tcode{strpbrk}, \tcode{strrchr}, \tcode{strstr}, and \tcode{memchr}, have different signatures in this document, @@ -3884,7 +3728,7 @@ index 7b6a11a4..2c930405 100644 \xrefc{7.24} diff --git a/source/support.tex b/source/support.tex -index 28c15ac9..50a598e7 100644 +index 72a05074..b171eab1 100644 --- a/source/support.tex +++ b/source/support.tex @@ -43,22 +43,15 @@ as summarized in \tref{support.summary}. @@ -3992,7 +3836,7 @@ index 28c15ac9..50a598e7 100644 dependent. The result of applying the \tcode{offsetof} macro to a static data member or a function member is undefined. No operation invoked by the \tcode{offsetof} macro shall throw an exception and -@@ -1011,7 +998,7 @@ the specialization on the unqualified type \tcode{T}. +@@ -1018,7 +1005,7 @@ the specialization on the unqualified type \tcode{T}. \pnum Non-arithmetic standard types, such as @@ -4001,7 +3845,7 @@ index 28c15ac9..50a598e7 100644 \rSec3[numeric.limits.members]{\tcode{numeric_limits} members} -@@ -2047,7 +2034,7 @@ The program is terminated without executing destructors for objects of automatic +@@ -2082,7 +2069,7 @@ The program is terminated without executing destructors for objects of automatic thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{_Exit}}% @@ -4010,7 +3854,7 @@ index 28c15ac9..50a598e7 100644 \end{itemdescr} \indexlibraryglobal{abort}% -@@ -2067,7 +2054,7 @@ automatic, thread, or static storage +@@ -2102,7 +2089,7 @@ automatic, thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{abort}}% @@ -4019,7 +3863,7 @@ index 28c15ac9..50a598e7 100644 \end{itemdescr} \indexlibraryglobal{atexit}% -@@ -2084,7 +2071,8 @@ The +@@ -2119,7 +2106,8 @@ The functions register the function pointed to by \tcode{f} to be called without arguments at normal program termination. It is unspecified whether a call to \tcode{atexit()} that does not @@ -4029,7 +3873,7 @@ index 28c15ac9..50a598e7 100644 \begin{note} The \tcode{atexit()} functions do not introduce a data race\iref{res.on.data.races}. -@@ -2178,7 +2166,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; +@@ -2213,7 +2201,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; The \tcode{at_quick_exit()} functions register the function pointed to by \tcode{f} to be called without arguments when \tcode{quick_exit} is called. It is unspecified whether a call to \tcode{at_quick_exit()} that does not @@ -4039,7 +3883,7 @@ index 28c15ac9..50a598e7 100644 \begin{note} The \tcode{at_quick_exit()} functions do not introduce a -@@ -2230,7 +2219,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s +@@ -2265,7 +2254,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s \pnum \remarks \indextext{signal-safe!\idxcode{quick_exit}}% @@ -4048,7 +3892,7 @@ index 28c15ac9..50a598e7 100644 when the functions registered with \tcode{at_quick_exit} are. \end{itemdescr} -@@ -2363,7 +2352,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); +@@ -2398,7 +2387,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -4057,7 +3901,7 @@ index 28c15ac9..50a598e7 100644 called by a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -2403,7 +2392,7 @@ a null pointer value, throws +@@ -2438,7 +2427,7 @@ a null pointer value, throws \tcode{bad_alloc}. \item Otherwise, the function calls the current @@ -4066,7 +3910,7 @@ index 28c15ac9..50a598e7 100644 If the called function returns, the loop repeats. \item The loop terminates when an attempt to allocate the requested storage is -@@ -2619,7 +2608,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); +@@ -2654,7 +2643,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -4075,7 +3919,7 @@ index 28c15ac9..50a598e7 100644 called by the array form of a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -2927,8 +2916,8 @@ versions of \tcode{operator delete}, the C standard library function +@@ -2962,8 +2951,8 @@ versions of \tcode{operator delete}, the C standard library function introduce a data race\iref{res.on.data.races}. Calls to these functions that allocate or deallocate a particular unit of storage shall occur in a single total order, and each such deallocation call @@ -4086,7 +3930,7 @@ index 28c15ac9..50a598e7 100644 \rSec2[alloc.errors]{Storage allocation errors} -@@ -3082,8 +3071,8 @@ template constexpr T* launder(T* p) noexcept; +@@ -3117,8 +3106,8 @@ template constexpr T* launder(T* p) noexcept; \pnum \expects \tcode{p} represents the address \placeholder{A} of a byte in memory. @@ -4097,7 +3941,7 @@ index 28c15ac9..50a598e7 100644 is located at the address \placeholder{A}. All bytes of storage that would be reachable through\iref{basic.compound} the result -@@ -3296,7 +3285,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. +@@ -3331,7 +3320,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. \pnum \remarks @@ -4107,7 +3951,7 @@ index 28c15ac9..50a598e7 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. \end{itemdescr} -@@ -3868,7 +3858,8 @@ An \impldef{return value of \tcode{exception::what}} \ntbs{}. +@@ -3905,7 +3895,8 @@ the ordinary literal encoding\iref{lex.ccon}. \pnum \remarks @@ -4117,7 +3961,7 @@ index 28c15ac9..50a598e7 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. The return value remains valid until the exception object from which -@@ -4013,13 +4004,13 @@ int uncaught_exceptions() noexcept; +@@ -4050,13 +4041,13 @@ constexpr int uncaught_exceptions() noexcept; \begin{itemdescr} \pnum \returns @@ -4133,7 +3977,7 @@ index 28c15ac9..50a598e7 100644 \end{itemdescr} \rSec2[propagation]{Exception propagation} -@@ -4078,8 +4069,9 @@ exception_ptr current_exception() noexcept; +@@ -4118,8 +4109,9 @@ constexpr exception_ptr current_exception() noexcept; \begin{itemdescr} \pnum \returns @@ -4145,7 +3989,7 @@ index 28c15ac9..50a598e7 100644 handled exception, or a null \tcode{exception_ptr} object if no exception is being handled. The referenced object shall remain valid at least as long as there is an \tcode{exception_ptr} object that refers to it. -@@ -4402,7 +4394,7 @@ template constexpr const E* end(initializer_list il) noexcept; +@@ -4442,7 +4434,7 @@ template constexpr const E* end(initializer_list il) noexcept; \pnum The header \libheaderdef{compare} specifies types, objects, and functions for use primarily in connection with @@ -4154,7 +3998,7 @@ index 28c15ac9..50a598e7 100644 \indexlibraryglobal{is_eq}% \indexlibraryglobal{is_neq}% -@@ -5942,7 +5934,7 @@ environment. +@@ -5983,7 +5975,7 @@ environment. \end{note} \pnum @@ -4163,7 +4007,7 @@ index 28c15ac9..50a598e7 100644 may introduce a data race with other calls to the \tcode{setlocale} function or with calls to functions that are affected by the current C locale. The implementation shall behave as if no -@@ -5952,21 +5944,16 @@ function. +@@ -5993,21 +5985,16 @@ function. \rSec2[cstdarg.syn]{Header \tcode{} synopsis} \indexheader{cstdarg}% @@ -4191,10 +4035,10 @@ index 28c15ac9..50a598e7 100644 \pnum diff --git a/source/templates.tex b/source/templates.tex -index b2e9e177..8334620d 100644 +index d616394c..29472189 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -589,7 +589,7 @@ If a \grammarterm{template-parameter} is a +@@ -603,7 +603,7 @@ If a \grammarterm{template-parameter} is a optional \grammarterm{identifier} or is a \grammarterm{parameter-declaration} that declares a pack\iref{dcl.fct}, then the \grammarterm{template-parameter} @@ -4203,7 +4047,7 @@ index b2e9e177..8334620d 100644 A template parameter pack that is a \grammarterm{parameter-declaration} whose type contains one or more unexpanded packs is a pack expansion. Similarly, a template parameter pack that is a \grammarterm{type-parameter} with a -@@ -621,7 +621,7 @@ template // error: \tcode{Values} expands +@@ -635,7 +635,7 @@ template // error: \tcode{Values} expands \rSec1[temp.names]{Names of template specializations} \pnum @@ -4212,7 +4056,7 @@ index b2e9e177..8334620d 100644 \grammarterm{template-id}: \begin{bnf} -@@ -918,8 +918,8 @@ specified in a +@@ -932,8 +932,8 @@ specified in a shall match the type and form specified for the corresponding parameter declared by the template in its \grammarterm{template-parameter-list}. @@ -4223,7 +4067,7 @@ index b2e9e177..8334620d 100644 \grammarterm{template-argument}{s}. \begin{example} \begin{codeblock} -@@ -1082,7 +1082,7 @@ the program is ill-formed. +@@ -1096,7 +1096,7 @@ the program is ill-formed. \pnum When a \grammarterm{simple-template-id} does not name a function, a default \grammarterm{template-argument} is @@ -4232,7 +4076,7 @@ index b2e9e177..8334620d 100644 when the value of that default argument is needed. \begin{example} \begin{codeblock} -@@ -1094,7 +1094,7 @@ The default argument for \tcode{U} is instantiated to form the type \tcode{S 1} is not satisfied; the second operand is not checked for satisfaction. \end{example} -@@ -1613,9 +1613,9 @@ in the declaration of a constrained entity (and, therefore, can involve the +@@ -1642,9 +1642,9 @@ in the declaration of a constrained entity (and, therefore, can involve the unsubstituted template parameters of the constrained entity), called the \defn{parameter mapping}\iref{temp.constr.decl}. \begin{note} @@ -4292,7 +4136,7 @@ index b2e9e177..8334620d 100644 \end{note} \pnum -@@ -1692,7 +1692,7 @@ first substituted into its expression. +@@ -1721,7 +1721,7 @@ first substituted into its expression. If substitution results in an invalid type or expression in the immediate context of the atomic constraint\iref{temp.deduct.general}, the constraint is not satisfied. @@ -4301,7 +4145,7 @@ index b2e9e177..8334620d 100644 is performed if necessary, and \tcode{E} shall be a constant expression of type \tcode{bool}. The constraint is satisfied if and only if evaluation of \tcode{E} -@@ -1791,11 +1791,11 @@ A declaration's \defn{associated constraints} are defined as follows: +@@ -1820,11 +1820,11 @@ A declaration's \defn{associated constraints} are defined as follows: the declaration has no associated constraints. \item Otherwise, if there is a single introduced \grammarterm{constraint-expression}, @@ -4316,7 +4160,7 @@ index b2e9e177..8334620d 100644 following order: \begin{itemize} \item -@@ -1892,7 +1892,7 @@ so it does match \#2. +@@ -1921,7 +1921,7 @@ so it does match \#2. \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is @@ -4325,7 +4169,7 @@ index b2e9e177..8334620d 100644 % \begin{itemize} \item -@@ -1901,7 +1901,7 @@ the normal form of \tcode{E}. +@@ -1930,7 +1930,7 @@ the normal form of \tcode{E}. \item The normal form of an expression \tcode{E1 || E2} is @@ -4334,7 +4178,7 @@ index b2e9e177..8334620d 100644 the normal forms of \tcode{E1} and \tcode{E2}. \item -@@ -2061,7 +2061,7 @@ the constraint of $A$ subsumes that of $B$. +@@ -2090,7 +2090,7 @@ the constraint of $A$ subsumes that of $B$. \end{itemize} % \begin{example} @@ -4343,7 +4187,7 @@ index b2e9e177..8334620d 100644 % The constraint $A \land B$ subsumes $A$, but $A$ does not subsume $A \land B$. % -@@ -2237,7 +2237,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. +@@ -2282,7 +2282,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. \end{example} \pnum @@ -4352,7 +4196,7 @@ index b2e9e177..8334620d 100644 \tcode{decltype($e$)} denotes a unique dependent type. Two such \grammarterm{decltype-specifier}{s} refer to the same type only if their \grammarterm{expression}{s} are -@@ -2307,8 +2307,8 @@ default arguments, +@@ -2352,8 +2352,8 @@ default arguments, \grammarterm{requires-clause}{s}, or \grammarterm{noexcept-specifier}{s}. @@ -4363,7 +4207,7 @@ index b2e9e177..8334620d 100644 \pnum Because an \grammarterm{alias-declaration} cannot declare a -@@ -2663,7 +2663,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} +@@ -2708,7 +2708,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} \pnum A local class of non-closure type shall not have member templates. @@ -4372,7 +4216,7 @@ index b2e9e177..8334620d 100644 apply to member template names. A destructor shall not be a member template. -@@ -2859,7 +2859,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. +@@ -2920,7 +2920,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. \item In a \grammarterm{capture-list}\iref{expr.prim.lambda.capture}; the pattern is the \grammarterm{capture} without the ellipsis. @@ -4381,7 +4225,7 @@ index b2e9e177..8334620d 100644 \grammarterm{identifier}. \item In a \grammarterm{pack-index-expression}; -@@ -3472,9 +3472,9 @@ primary template. +@@ -3539,9 +3539,9 @@ primary template. \pnum A partial specialization matches a given actual template argument list if the template arguments of the partial specialization can be @@ -4394,7 +4238,7 @@ index b2e9e177..8334620d 100644 \begin{example} \begin{codeblock} template class A { }; // \#1 -@@ -3536,14 +3536,14 @@ of the primary template. +@@ -3603,14 +3603,14 @@ of the primary template. For two partial specializations, the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more @@ -4412,7 +4256,7 @@ index b2e9e177..8334620d 100644 as the corresponding partial specialization. \item Each function template -@@ -3749,8 +3749,8 @@ void h(int* p) { +@@ -3816,8 +3816,8 @@ void h(int* p) { \end{example} \pnum @@ -4423,7 +4267,7 @@ index b2e9e177..8334620d 100644 \pnum The signature of a function template -@@ -3801,7 +3801,7 @@ For example, a template type parameter can be used in the +@@ -3868,7 +3868,7 @@ For example, a template type parameter can be used in the Two expressions involving template parameters are considered \defnx{equivalent}{equivalent!expressions} if two function definitions containing the expressions would satisfy @@ -4432,7 +4276,7 @@ index b2e9e177..8334620d 100644 to name the template parameters may differ as long as a token used to name a template parameter in one expression is replaced by another token that names the same template parameter in the other expression. -@@ -3971,8 +3971,8 @@ function template +@@ -4038,8 +4038,8 @@ function template specialization is selected to match a placement operator new\iref{basic.stc.dynamic.deallocation,expr.new}; \item @@ -4443,7 +4287,7 @@ index b2e9e177..8334620d 100644 a function template specialization. \end{itemize} -@@ -3990,7 +3990,8 @@ the more constrained template (if one exists) as determined below. +@@ -4057,7 +4057,8 @@ the more constrained template (if one exists) as determined below. \pnum To produce the transformed template, for each type, non-type, or template @@ -4453,7 +4297,7 @@ index b2e9e177..8334620d 100644 thereof) synthesize a unique type, value, or class template respectively and substitute it for each occurrence of that parameter in the function type of the template. -@@ -4340,7 +4341,7 @@ A \grammarterm{concept-definition} +@@ -4407,7 +4408,7 @@ A \grammarterm{concept-definition} shall inhabit a namespace scope\iref{basic.scope.namespace}. \pnum @@ -4462,7 +4306,7 @@ index b2e9e177..8334620d 100644 \pnum A concept is not instantiated\iref{temp.spec}. -@@ -4650,7 +4651,7 @@ was a pack expansion and the corresponding pack is empty, or +@@ -4717,7 +4718,7 @@ was a pack expansion and the corresponding pack is empty, or \item an instantiation uses a default argument or default template argument that had not been defined at the point at which the template was defined, or @@ -4471,7 +4315,7 @@ index b2e9e177..8334620d 100644 instantiation uses \begin{itemize} \item the value of a const object of integral or unscoped enumeration type or -@@ -4903,7 +4904,7 @@ any of the expressions +@@ -4970,7 +4971,7 @@ any of the expressions or \grammarterm{braced-init-list}{s} in the \grammarterm{expression-list} @@ -4480,7 +4324,7 @@ index b2e9e177..8334620d 100644 \item the \grammarterm{unqualified-id} is a \grammarterm{template-id} in which any of the template arguments depends -@@ -4963,7 +4964,7 @@ if it is +@@ -5030,7 +5031,7 @@ if it is \item in the definition of a class template, a nested class of a class template, a member of a class template, or a member of a nested class of a class template, @@ -4489,7 +4333,7 @@ index b2e9e177..8334620d 100644 \item in the definition of a primary class template or a member of a primary class template, the name of the -@@ -5242,7 +5243,7 @@ used without a \grammarterm{template-argument-list}. +@@ -5312,7 +5313,7 @@ used without a \grammarterm{template-argument-list}. \end{footnote} \item a \grammarterm{pack-index-specifier}, or \item denoted by \tcode{decltype(}\grammarterm{expression}{}\tcode{)}, @@ -4498,7 +4342,7 @@ index b2e9e177..8334620d 100644 \end{itemize} \pnum -@@ -5355,7 +5356,7 @@ see~\ref{support.types}. +@@ -5447,7 +5448,7 @@ see~\ref{support.types}. \end{note} \pnum @@ -4507,7 +4351,7 @@ index b2e9e177..8334620d 100644 type-dependent if the terminal name of its \grammarterm{id-expression}, if any, is dependent or the expression refers to a member of the current instantiation and -@@ -5474,7 +5475,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the +@@ -5580,7 +5581,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the instantiation is value-dependent. An expression of the form \tcode{\&}\grammarterm{cast-expression} is also value-dependent if evaluating \grammarterm{cast-expression} @@ -4516,7 +4360,7 @@ index b2e9e177..8334620d 100644 the result of the evaluation refers to a templated entity that is an object with static or thread storage duration or a member function. -@@ -5594,7 +5595,7 @@ within a translation unit. +@@ -5700,7 +5701,7 @@ within a translation unit. A specialization for any template may have points of instantiation in multiple translation units. If two different points of instantiation give a template specialization @@ -4525,7 +4369,7 @@ index b2e9e177..8334620d 100644 the program is ill-formed, no diagnostic required. \rSec3[temp.dep.candidate]{Candidate functions} -@@ -5899,7 +5900,7 @@ of type +@@ -6005,7 +6006,7 @@ of type \pnum If a function declaration acquired its function type through @@ -4534,7 +4378,7 @@ index b2e9e177..8334620d 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -5980,7 +5981,7 @@ X ch; // error: incomplete type \tcode{X} +@@ -6086,7 +6087,7 @@ X ch; // error: incomplete type \tcode{X} \end{example} \begin{note} Within a template declaration, @@ -4543,7 +4387,7 @@ index b2e9e177..8334620d 100644 a local class are never considered to be entities that can be separately instantiated (this includes their default arguments, \grammarterm{noexcept-specifier}{s}, and non-static data member -@@ -6158,7 +6159,7 @@ void x() { +@@ -6264,7 +6265,7 @@ void x() { \end{example} \pnum @@ -4552,7 +4396,7 @@ index b2e9e177..8334620d 100644 can be determined without instantiating a class template definition, it is unspecified whether that instantiation actually takes place. \begin{example} -@@ -6493,7 +6494,7 @@ If an entity is the subject of both an explicit instantiation declaration +@@ -6599,7 +6600,7 @@ If an entity is the subject of both an explicit instantiation declaration and an explicit instantiation definition in the same translation unit, the definition shall follow the declaration. An entity that is the subject of an explicit instantiation declaration and that is also used @@ -4561,7 +4405,7 @@ index b2e9e177..8334620d 100644 in the translation unit shall be the subject of an explicit instantiation definition somewhere in the program; otherwise the program is ill-formed, no diagnostic required. -@@ -7552,7 +7553,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. +@@ -7658,7 +7659,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. In the following example, assuming a \tcode{signed char} cannot represent the value 1000, @@ -4570,7 +4414,7 @@ index b2e9e177..8334620d 100644 would be required to convert the \grammarterm{template-argument} of type \tcode{int} to \tcode{signed char}, -@@ -7661,8 +7662,8 @@ is not a reference type: +@@ -7767,8 +7768,8 @@ is not a reference type: \item If \tcode{A} @@ -4581,7 +4425,7 @@ index b2e9e177..8334620d 100644 \tcode{A} for type deduction; otherwise, -@@ -7670,7 +7671,7 @@ otherwise, +@@ -7776,7 +7777,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -4590,7 +4434,7 @@ index b2e9e177..8334620d 100644 of \tcode{A} for type -@@ -7766,8 +7767,8 @@ The transformed \tcode{A} +@@ -7872,8 +7873,8 @@ The transformed \tcode{A} can be another pointer or pointer-to-member type that can be converted to the deduced \tcode{A} @@ -4601,7 +4445,7 @@ index b2e9e177..8334620d 100644 \item If -@@ -7883,7 +7884,7 @@ int i = f(1, g); // calls \tcode{f(int, int (*)(int))} +@@ -8005,7 +8006,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -4610,7 +4454,7 @@ index b2e9e177..8334620d 100644 If there is a target, the function template's function type and the target type are used as the types of -@@ -7930,7 +7931,7 @@ is not a reference type: +@@ -8052,7 +8053,7 @@ is not a reference type: If \tcode{P} is an array type, the pointer type produced by the @@ -4619,7 +4463,7 @@ index b2e9e177..8334620d 100644 \tcode{P} for type deduction; otherwise, -@@ -7938,7 +7939,7 @@ deduction; otherwise, +@@ -8060,7 +8061,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -4628,7 +4472,7 @@ index b2e9e177..8334620d 100644 \tcode{P} for type deduction; otherwise, -@@ -8029,7 +8030,7 @@ after a function has been selected. +@@ -8151,7 +8152,7 @@ after a function has been selected. In the context of a call to a conversion function, the return types of the conversion function templates are used. \item @@ -4637,7 +4481,7 @@ index b2e9e177..8334620d 100644 type is used. \end{itemize} -@@ -8538,7 +8539,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the +@@ -8666,7 +8667,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the template argument list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by $\texttt{P}_i$. @@ -4646,7 +4490,7 @@ index b2e9e177..8334620d 100644 originally a pack expansion: \begin{itemize} \item if \tcode{P} does not contain a template argument corresponding to -@@ -8601,7 +8602,7 @@ each remaining parameter type in the parameter-type-list +@@ -8729,7 +8730,7 @@ each remaining parameter type in the parameter-type-list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by the function parameter pack. @@ -4655,7 +4499,7 @@ index b2e9e177..8334620d 100644 originally a function parameter pack: \begin{itemize} \item if \tcode{P} does not contain a function parameter type corresponding to -@@ -8898,8 +8899,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod +@@ -9026,8 +9027,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod In a declaration whose \grammarterm{declarator-id} refers to a specialization of a function template, template argument deduction is performed to identify the specialization to which the declaration refers. Specifically, this is done @@ -4667,7 +4511,7 @@ index b2e9e177..8334620d 100644 \tcode{operator new}\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index 7bab867c..f5b726eb 100644 +index 212367ad..15068b87 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4690,7 +4534,7 @@ index 7bab867c..f5b726eb 100644 \begin{itemdecl} m.try_lock_for(rel_time) -@@ -6509,7 +6509,7 @@ namespace std { +@@ -6633,7 +6633,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -4699,7 +4543,7 @@ index 7bab867c..f5b726eb 100644 An execution agent \term{owns} a mutex from the time it successfully calls one of the lock functions until it calls unlock. Mutexes can be either recursive or non-recursive, and can grant simultaneous ownership to one or many execution agents. Both -@@ -6553,7 +6553,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on +@@ -6677,7 +6677,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on a single mutex appears to occur in a single total order. \begin{note} This @@ -4708,7 +4552,7 @@ index 7bab867c..f5b726eb 100644 mutex. \end{note} \begin{note} -@@ -6633,7 +6633,7 @@ in the absence of contending mutex acquisitions. +@@ -6757,7 +6757,7 @@ in the absence of contending mutex acquisitions. \pnum \sync If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations @@ -4717,7 +4561,7 @@ index 7bab867c..f5b726eb 100644 \begin{note} Since \tcode{lock()} does not synchronize with a failed subsequent \tcode{try_lock()}, the visibility rules are weak enough that little would be -@@ -6669,7 +6669,7 @@ Releases the calling thread's ownership of the mutex. +@@ -6793,7 +6793,7 @@ Releases the calling thread's ownership of the mutex. \pnum \sync @@ -4726,7 +4570,7 @@ index 7bab867c..f5b726eb 100644 lock operations that obtain ownership on the same object. \pnum -@@ -6798,9 +6798,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, +@@ -6922,9 +6922,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, meet the requirements set out below. In this description, \tcode{m} denotes an object of a mutex type, \tcode{rel_time} denotes an object of an @@ -4738,7 +4582,7 @@ index 7bab867c..f5b726eb 100644 \begin{note} The timed mutex types meet the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. -@@ -7090,7 +7090,7 @@ Releases a shared lock on the mutex held by the calling thread. +@@ -7214,7 +7214,7 @@ Releases a shared lock on the mutex held by the calling thread. \pnum \sync @@ -4747,7 +4591,7 @@ index 7bab867c..f5b726eb 100644 \tcode{lock()} operations that obtain ownership on the same object. \pnum -@@ -7194,7 +7194,7 @@ meet the requirements set out below. In this description, +@@ -7318,7 +7318,7 @@ meet the requirements set out below. In this description, \tcode{rel_time} denotes an object of an instantiation of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes an object of an instantiation of @@ -4756,7 +4600,7 @@ index 7bab867c..f5b726eb 100644 \begin{note} The shared timed mutex types meet the \oldconcept{SharedTimedLockable} requirements\iref{thread.req.lockable.shared.timed}. -@@ -7405,7 +7405,7 @@ namespace std { +@@ -7529,7 +7529,7 @@ namespace std { \pnum An object of type \tcode{lock_guard} controls the ownership of a lockable object within a scope. A \tcode{lock_guard} object maintains ownership of a lockable @@ -4765,7 +4609,7 @@ index 7bab867c..f5b726eb 100644 The behavior of a program is undefined if the lockable object referenced by \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} -@@ -7478,7 +7478,7 @@ namespace std { +@@ -7602,7 +7602,7 @@ namespace std { \pnum An object of type \tcode{scoped_lock} controls the ownership of lockable objects within a scope. A \tcode{scoped_lock} object maintains ownership of lockable @@ -4774,7 +4618,7 @@ index 7bab867c..f5b726eb 100644 The behavior of a program is undefined if the lockable objects referenced by \tcode{pm} do not exist for the entire lifetime of the \tcode{scoped_lock} object. -@@ -8646,7 +8646,7 @@ earlier returning execution. +@@ -8770,7 +8770,7 @@ earlier returning execution. \pnum \sync For any given \tcode{once_flag}: all active executions occur in a total @@ -4783,7 +4627,7 @@ index 7bab867c..f5b726eb 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -10612,22 +10612,21 @@ the state object. +@@ -10736,22 +10736,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4810,7 +4654,7 @@ index 7bab867c..f5b726eb 100644 \begin{note} This explicitly specifies that the result of the shared state is visible in the objects that reference this state in the sense of data race -@@ -10963,8 +10962,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -11087,8 +11086,8 @@ The class template \tcode{future} defines a type for asynchronous return objects do not share their shared state with other asynchronous return objects. A default-constructed \tcode{future} object has no shared state. A \tcode{future} object with shared state can be created by @@ -4821,7 +4665,7 @@ index 7bab867c..f5b726eb 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -11274,7 +11273,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -11398,7 +11397,7 @@ object has no shared state. A \tcode{shared_future} object with shared state can be created by conversion from a \tcode{future} object and shares its shared state with the @@ -4830,7 +4674,7 @@ index 7bab867c..f5b726eb 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -11723,7 +11722,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -11847,7 +11846,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -4840,7 +4684,7 @@ index 7bab867c..f5b726eb 100644 the first function that successfully detects the ready status of the shared state or diff --git a/source/time.tex b/source/time.tex -index dfa16010..59ff0169 100644 +index f74e3a87..66f8c4c0 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1222,7 +1222,7 @@ unless it meets all of the following conditions: @@ -4852,7 +4696,7 @@ index dfa16010..59ff0169 100644 \item the expression \tcode{T::now()} is well-formed when treated as an unevaluated operand. -@@ -11080,7 +11080,7 @@ The expression +@@ -11083,7 +11083,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp) \end{codeblock} @@ -4861,7 +4705,7 @@ index dfa16010..59ff0169 100644 \pnum \returns -@@ -11113,7 +11113,7 @@ The expression +@@ -11116,7 +11116,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp, addressof(abbrev)) \end{codeblock} @@ -4870,7 +4714,7 @@ index dfa16010..59ff0169 100644 \pnum \returns -@@ -11150,7 +11150,7 @@ from_stream(declval&>(), +@@ -11153,7 +11153,7 @@ from_stream(declval&>(), declval*>(), &offset) \end{codeblock} @@ -4879,7 +4723,7 @@ index dfa16010..59ff0169 100644 \pnum \returns -@@ -11190,7 +11190,7 @@ The expression +@@ -11193,7 +11193,7 @@ The expression from_stream(declval&>(), @$F$@, tp, addressof(abbrev), &offset) \end{codeblock} @@ -4889,7 +4733,7 @@ index dfa16010..59ff0169 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index 7f1cbeff..0da437df 100644 +index 6c2b5b68..316f0500 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -103,15 +103,15 @@ namespace std { @@ -4956,7 +4800,7 @@ index 7f1cbeff..0da437df 100644 each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts} with a base characteristic of \begin{codeblock} -@@ -6315,6 +6315,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); +@@ -6325,6 +6325,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); \rSec2[variant.monostate]{Class \tcode{monostate}}% \indexlibraryglobal{monostate}% @@ -4964,7 +4808,7 @@ index 7f1cbeff..0da437df 100644 \begin{itemdecl} struct monostate{}; \end{itemdecl} -@@ -6481,7 +6482,8 @@ namespace std { +@@ -6491,7 +6492,8 @@ namespace std { \end{codeblock} \pnum @@ -4975,13 +4819,13 @@ index 7f1cbeff..0da437df 100644 \indexlibrarymember{what}{bad_any_cast}% \begin{itemdecl} -- -2.34.1 +2.43.0 -From 1df9b2004ca7db2f8da5e7bc6c6cab136a4f8bd9 Mon Sep 17 00:00:00 2001 +From 1816db977f1ab2b145a2872a18f35b132c2b409b Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 -Subject: [PATCH 06/14] Fix dubious \defnx that has see{} in it, and remove +Subject: [PATCH 05/13] Fix dubious \defnx that has see{} in it, and remove range index entry with the same key. --- @@ -4990,10 +4834,10 @@ Subject: [PATCH 06/14] Fix dubious \defnx that has see{} in it, and remove 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index 64b38daf..8321f84b 100644 +index b825f374..448d6af7 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -13897,7 +13897,7 @@ without an intervening \grammarterm{root-directory} element. +@@ -13902,7 +13902,7 @@ without an intervening \grammarterm{root-directory} element. \pnum \indextext{path!normalization|(}% @@ -5003,10 +4847,10 @@ index 64b38daf..8321f84b 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index 8334620d..533e6ffb 100644 +index 29472189..e6cbd553 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -1888,7 +1888,6 @@ so it does match \#2. +@@ -1917,7 +1917,6 @@ so it does match \#2. \end{example} \rSec2[temp.constr.normal]{Constraint normalization} @@ -5014,7 +4858,7 @@ index 8334620d..533e6ffb 100644 \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is -@@ -1978,10 +1977,11 @@ whose parameter mapping is the identity mapping. +@@ -2007,10 +2006,11 @@ whose parameter mapping is the identity mapping. \end{itemize} \pnum @@ -5027,7 +4871,7 @@ index 8334620d..533e6ffb 100644 \begin{note} Normalization of \grammarterm{constraint-expression}{s} is performed -@@ -2011,7 +2011,6 @@ The associated constraints of \#2 are +@@ -2040,7 +2040,6 @@ The associated constraints of \#2 are The associated constraints of \#3 are \tcode{requires (T x) \{ ++x; \}} (with mapping $\tcode{T} \mapsto \tcode{U}$). \end{example} @@ -5036,13 +4880,13 @@ index 8334620d..533e6ffb 100644 \rSec2[temp.constr.order]{Partial ordering by constraints} -- -2.34.1 +2.43.0 -From 66e0cbfeb52cbf0491dcd218b60d04a157437b1a Mon Sep 17 00:00:00 2001 +From d03e3a69b82866688d1a13e8dac648f945e14624 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:27:17 +0100 -Subject: [PATCH 07/14] Replace more non-codeblocks with outputblocks. +Subject: [PATCH 06/13] Replace more non-codeblocks with outputblocks. --- source/iostreams.tex | 12 ++++++------ @@ -5050,10 +4894,10 @@ Subject: [PATCH 07/14] Replace more non-codeblocks with outputblocks. 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index 8321f84b..f68042b4 100644 +index 448d6af7..a208b372 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -17358,16 +17358,16 @@ library functions called by the implementation shall have an \tcode{error_code} +@@ -17363,16 +17363,16 @@ library functions called by the implementation shall have an \tcode{error_code} \pnum \begin{example} Given this directory structure: @@ -5073,7 +4917,7 @@ index 8321f84b..f68042b4 100644 /dir1 file1 file2 -@@ -17376,10 +17376,10 @@ Calling \tcode{copy("/dir1", "/dir3")} would result in: +@@ -17381,10 +17381,10 @@ Calling \tcode{copy("/dir1", "/dir3")} would result in: /dir3 file1 file2 @@ -5086,7 +4930,7 @@ index 8321f84b..f68042b4 100644 /dir1 file1 file2 -@@ -17390,7 +17390,7 @@ Alternatively, calling \tcode{copy("/dir1", "/dir3", copy_options::recursive)} w +@@ -17395,7 +17395,7 @@ Alternatively, calling \tcode{copy("/dir1", "/dir3", copy_options::recursive)} w file2 dir2 file3 @@ -5114,23 +4958,23 @@ index ee0bb9c2..5b236c6e 100644 \pnum This is described in the \Cpp{} grammar in \ref{lex.name}, -- -2.34.1 +2.43.0 -From 9d813ccf1d1a6ba28a87dffb4e5d1941b16b028a Mon Sep 17 00:00:00 2001 +From 1ce0f8f3ce74f79c5c8aaae1b71a7bc5f228742d Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 -Subject: [PATCH 08/14] Use cxxdraft-htmlgen macros to annotate non-C++ code +Subject: [PATCH 07/13] Use cxxdraft-htmlgen macros to annotate non-C++ code and literal fragments. --- source/exceptions.tex | 4 +- source/lex.tex | 116 +++++----- - source/time.tex | 516 +++++++++++++++++++++--------------------- - 3 files changed, 318 insertions(+), 318 deletions(-) + source/time.tex | 518 +++++++++++++++++++++--------------------- + 3 files changed, 319 insertions(+), 319 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex -index a8d6a0c0..0617df06 100644 +index c5e0e545..c1e16c1e 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -135,11 +135,11 @@ does not declare a variable. @@ -5148,7 +4992,7 @@ index a8d6a0c0..0617df06 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index 1c8f710d..21b7af76 100644 +index bc0f5b3b..217e727b 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -566,7 +566,7 @@ given character: @@ -5169,7 +5013,7 @@ index 1c8f710d..21b7af76 100644 \end{ncbnf} \item Otherwise, if the next three characters are \tcode{<::} and the subsequent character -@@ -694,15 +694,15 @@ depending on the implementation. +@@ -692,15 +692,15 @@ depending on the implementation. \begin{bnf} \nontermdef{pp-number}\br digit\br @@ -5193,7 +5037,7 @@ index 1c8f710d..21b7af76 100644 \end{bnf} \pnum -@@ -1124,19 +1124,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1121,19 +1121,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. \nontermdef{binary-literal}\br \terminal{0b} binary-digit\br \terminal{0B} binary-digit\br @@ -5216,7 +5060,7 @@ index 1c8f710d..21b7af76 100644 \end{bnf} \begin{bnf} -@@ -1167,14 +1167,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1164,14 +1164,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{hexadecimal-digit-sequence}\br hexadecimal-digit\br @@ -5235,7 +5079,7 @@ index 1c8f710d..21b7af76 100644 \end{bnf} \begin{bnf} -@@ -1189,17 +1189,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1186,17 +1186,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{unsigned-suffix} \textnormal{one of}\br @@ -5256,7 +5100,7 @@ index 1c8f710d..21b7af76 100644 \end{bnf} \begin{bnf} -@@ -1238,7 +1238,7 @@ when determining the value. +@@ -1235,7 +1235,7 @@ when determining the value. \pnum The \grammarterm{hexadecimal-digit}s @@ -5265,7 +5109,7 @@ index 1c8f710d..21b7af76 100644 have decimal values ten through fifteen. \begin{example} The number twelve can be written \tcode{12}, \tcode{014}, -@@ -1282,7 +1282,7 @@ none & +@@ -1279,7 +1279,7 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -5274,7 +5118,7 @@ index 1c8f710d..21b7af76 100644 \tcode{unsigned int} & \tcode{unsigned int}\\ & -@@ -1291,7 +1291,7 @@ none & +@@ -1288,7 +1288,7 @@ none & & \tcode{unsigned long long int} & \tcode{unsigned long long int}\\\hline @@ -5283,7 +5127,7 @@ index 1c8f710d..21b7af76 100644 \tcode{long int} & \tcode{long int}\\ & -@@ -1303,22 +1303,22 @@ none & +@@ -1300,22 +1300,22 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -5311,7 +5155,7 @@ index 1c8f710d..21b7af76 100644 & \\\hline \tcode{z} or \tcode{Z} & -@@ -1366,12 +1366,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1363,12 +1363,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \indextext{literal!character}% \begin{bnf} \nontermdef{character-literal}\br @@ -5326,18 +5170,18 @@ index 1c8f710d..21b7af76 100644 \end{bnf} \begin{bnf} -@@ -1424,16 +1424,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1419,16 +1419,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{octal-escape-sequence}\br - \terminal{\textbackslash} octal-digit\br - \terminal{\textbackslash} octal-digit octal-digit\br - \terminal{\textbackslash} octal-digit octal-digit octal-digit\br -- \terminal{\textbackslash o\{} simple-octal-digit-sequence \terminal{\}}\br +- \terminal{\textbackslash o\{} simple-octal-digit-sequence \terminal{\}} + \literalterminal{\textbackslash} octal-digit\br + \literalterminal{\textbackslash} octal-digit octal-digit\br + \literalterminal{\textbackslash} octal-digit octal-digit octal-digit\br -+ \literalterminal{\textbackslash o\{} simple-octal-digit-sequence \literalterminal{\}}\br ++ \literalterminal{\textbackslash o\{} simple-octal-digit-sequence \literalterminal{\}} \end{bnf} \begin{bnf} @@ -5349,7 +5193,7 @@ index 1c8f710d..21b7af76 100644 \end{bnf} \begin{bnf} -@@ -1621,42 +1621,42 @@ is supported for compatibility with \CppXIV{} and C. +@@ -1616,42 +1616,42 @@ is supported for compatibility with \CppXIV{} and C. \begin{bnf} \nontermdef{fractional-constant}\br @@ -5403,7 +5247,7 @@ index 1c8f710d..21b7af76 100644 \end{bnf} \pnum -@@ -1684,13 +1684,13 @@ are conditionally-supported. See \ref{basic.extended.fp}. +@@ -1679,13 +1679,13 @@ are conditionally-supported. See \ref{basic.extended.fp}. \topline \lhdr{\grammarterm{floating-point-suffix}} & \rhdr{type} \\ \capsep none & \keyword{double} \\ @@ -5424,7 +5268,7 @@ index 1c8f710d..21b7af76 100644 \end{simpletypetable} \pnum -@@ -1741,8 +1741,8 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1736,8 +1736,8 @@ chosen in an \impldef{choice of larger or smaller value of \indextext{literal!string}% \begin{bnf} \nontermdef{string-literal}\br @@ -5435,7 +5279,7 @@ index 1c8f710d..21b7af76 100644 \end{bnf} \begin{bnf} -@@ -1766,7 +1766,7 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1760,7 +1760,7 @@ chosen in an \impldef{choice of larger or smaller value of \begin{bnf} \nontermdef{raw-string}\br @@ -5444,7 +5288,7 @@ index 1c8f710d..21b7af76 100644 \end{bnf} \begin{bnf} -@@ -1853,7 +1853,7 @@ UTF-32 & +@@ -1845,7 +1845,7 @@ UTF-32 & \pnum \indextext{literal!string!raw}% @@ -5454,7 +5298,7 @@ index 1c8f710d..21b7af76 100644 in the prefix is a \defn{raw string literal}. The \grammarterm{d-char-sequence} serves as a delimiter. The terminating diff --git a/source/time.tex b/source/time.tex -index 59ff0169..9344719d 100644 +index 66f8c4c0..7ce27c0a 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2200,7 +2200,7 @@ If the parse fails to decode a valid duration, @@ -6049,10 +5893,13 @@ index 59ff0169..9344719d 100644 an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -10994,16 +10994,16 @@ passed to \tcode{formatter::format}. - +@@ -10995,18 +10995,18 @@ passed to \tcode{formatter::format}. \pnum \remarks + If the \fmtgrammarterm{chrono-specs} is omitted, +-the result is equivalent to using \tcode{\%F \%T \%Z} as ++the result is equivalent to using \noncxxtcode{\%F \%T \%Z} as + the \fmtgrammarterm{chrono-specs}. -If \tcode{\%Z} is used, +If \noncxxtcode{\%Z} is used, it is replaced with \tcode{*f.abbrev} @@ -6070,7 +5917,7 @@ index 59ff0169..9344719d 100644 and \tcode{f.offset_sec} is a null pointer value, then an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -11207,8 +11207,8 @@ except that they have an unspecified effect +@@ -11210,8 +11210,8 @@ except that they have an unspecified effect on the value returned by subsequent calls to \tcode{basic_istream<>::gcount()}. Each overload takes a format string containing ordinary characters and flags which have special meaning. @@ -6081,7 +5928,7 @@ index 59ff0169..9344719d 100644 During parsing each flag interprets characters as parts of date and time types according to~\tref{time.parse.spec}. Some flags can be modified by a width parameter -@@ -11226,7 +11226,7 @@ the information that the format flag refers to, +@@ -11229,7 +11229,7 @@ the information that the format flag refers to, A \tcode{duration} cannot represent a \tcode{weekday}. \end{example} However, if a flag refers to a ``time of day'' @@ -6090,7 +5937,7 @@ index 59ff0169..9344719d 100644 then a specialization of \tcode{duration} is parsed as the time of day elapsed since midnight. -@@ -11246,251 +11246,251 @@ is called on the \tcode{basic_istream}. +@@ -11249,251 +11249,251 @@ is called on the \tcode{basic_istream}. \hline \lhdr{Flag} & \rhdr{Parsed value} \\ \capsep \endhead @@ -6456,7 +6303,7 @@ index 59ff0169..9344719d 100644 The time zone abbreviation or name. A single word is parsed. This word can only contain characters -@@ -11498,8 +11498,8 @@ from the basic character set\iref{lex.charset} +@@ -11501,8 +11501,8 @@ from the basic character set\iref{lex.charset} that are alphanumeric, or one of \tcode{'_'}, \tcode{'/'}, \tcode{'-'}, or \tcode{'+'}. \\ \rowsep @@ -6468,17 +6315,17 @@ index 59ff0169..9344719d 100644 \end{LongTable} -- -2.34.1 +2.43.0 -From 46e7291bbbc51e735bb672100ef9d300d95dbf27 Mon Sep 17 00:00:00 2001 +From cb36885df900e8eaa9d45f8531b44ef9996d73db Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 -Subject: [PATCH 09/14] Remove more inappropriate paragraph breaks. +Subject: [PATCH 08/13] Remove more inappropriate paragraph breaks. --- source/algorithms.tex | 4 ---- - source/basic.tex | 5 ----- + source/basic.tex | 4 ---- source/classes.tex | 8 -------- source/compatibility.tex | 5 ----- source/concepts.tex | 16 ---------------- @@ -6504,13 +6351,13 @@ Subject: [PATCH 09/14] Remove more inappropriate paragraph breaks. source/threads.tex | 17 ----------------- source/time.tex | 19 ------------------- source/utilities.tex | 7 ------- - 27 files changed, 280 deletions(-) + 27 files changed, 279 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index e5fd8576..6008378c 100644 +index 4aa754a4..436d60b1 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -6847,7 +6847,6 @@ but stronger than those for a partial ordering. +@@ -6828,7 +6828,6 @@ but stronger than those for a partial ordering. If we define \tcode{equiv(a, b)} as \tcode{!comp(a, b) \&\& !comp(b, a)}, then the requirements are that \tcode{comp} and \tcode{equiv} both be transitive relations: @@ -6518,7 +6365,7 @@ index e5fd8576..6008378c 100644 \begin{itemize} \item \tcode{comp(a, b) \&\& comp(b, c)} implies \tcode{comp(a, c)} \item \tcode{equiv(a, b) \&\& equiv(b, c)} implies \tcode{equiv(a, c)} -@@ -7770,7 +7769,6 @@ Let $N = \tcode{last - first}$: +@@ -7751,7 +7750,6 @@ Let $N = \tcode{last - first}$: For the overload with an \tcode{ExecutionPolicy}, \bigoh{N \log N} swaps and \bigoh{N} applications of the predicate. \end{itemize} @@ -6526,7 +6373,7 @@ index e5fd8576..6008378c 100644 \end{itemdescr} \indexlibraryglobal{stable_partition}% -@@ -8612,7 +8610,6 @@ A random access range \range{a}{b} is a +@@ -8593,7 +8591,6 @@ A random access range \range{a}{b} is a {heap with respect to comp and proj@heap with respect to \tcode{comp} and \tcode{proj}} for a comparator and projection \tcode{comp} and \tcode{proj} if its elements are organized such that: @@ -6534,7 +6381,7 @@ index e5fd8576..6008378c 100644 \begin{itemize} \item With \tcode{$N$ = b - a}, for all $i$, $0 < i < N$, -@@ -11181,7 +11178,6 @@ template +@@ -11169,7 +11166,6 @@ template \pnum Some algorithms in this subclause are constrained with the following exposition-only concepts: @@ -6543,10 +6390,10 @@ index e5fd8576..6008378c 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index 1bb2e394..2b27f2f7 100644 +index 5c594c75..f29940e9 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -253,7 +253,6 @@ enum { up, down }; // defines \tcode{up} and \tcode{down} +@@ -255,7 +255,6 @@ enum { up, down }; // defines \tcode{up} and \tcode{down} namespace N { int d; } // defines \tcode{N} and \tcode{N::d} namespace N1 = N; // defines \tcode{N1} X anX; // defines \tcode{anX} @@ -6554,7 +6401,7 @@ index 1bb2e394..2b27f2f7 100644 \end{codeblock} whereas these are just declarations: \begin{codeblock} -@@ -724,7 +723,6 @@ is subject to the requirements described in this paragraph (recursively). +@@ -762,7 +761,6 @@ is subject to the requirements described in this paragraph (recursively). \pnum For the purposes of the preceding requirements: @@ -6562,15 +6409,7 @@ index 1bb2e394..2b27f2f7 100644 \begin{itemize} \item If \tcode{D} is a class with an implicitly-declared constructor\iref{class.default.ctor,class.copy.ctor}, -@@ -4323,7 +4321,6 @@ underlying type for an aligned memory area\iref{dcl.align}. - - \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. -@@ -5701,7 +5698,6 @@ has the top-level cv-qualifier \keyword{volatile}. +@@ -5736,7 +5734,6 @@ has the top-level cv-qualifier \keyword{volatile}. \pnum Every integer type has an \term{integer conversion rank} defined as follows: @@ -6578,7 +6417,7 @@ index 1bb2e394..2b27f2f7 100644 \begin{itemize} \item No two signed integer types other than \keyword{char} and \tcode{\keyword{signed} \keyword{char}} (if \keyword{char} is signed) have the same rank, even if they have -@@ -6277,7 +6273,6 @@ the value written by $A$, or +@@ -6349,7 +6346,6 @@ the value written by $A$, or \item for some evaluation $X$, $A$ is dependency-ordered before $X$ and $X$ carries a dependency to $B$. @@ -6587,10 +6426,10 @@ index 1bb2e394..2b27f2f7 100644 \begin{note} The relation ``is dependency-ordered before'' is analogous to diff --git a/source/classes.tex b/source/classes.tex -index 53c385ec..137c699d 100644 +index 02b6e630..dfd4acc0 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -1565,7 +1565,6 @@ for each non-static data member of +@@ -1555,7 +1555,6 @@ for each non-static data member of that is of class type (or array thereof), the constructor selected to copy/move that member is trivial; \end{itemize} @@ -6598,7 +6437,7 @@ index 53c385ec..137c699d 100644 \indextext{constructor!move!non-trivial}% otherwise the copy/move constructor is \defnx{non-trivial}{constructor!copy!nontrivial}. -@@ -3182,7 +3181,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat +@@ -3171,7 +3170,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat destructor and \tcode{N} has a non-trivial constructor (for instance, if they declare or inherit virtual functions), the active member of \tcode{u} can be safely switched from \tcode{m} to \tcode{n} using the destructor and placement \grammarterm{new-expression} as follows: @@ -6606,7 +6445,7 @@ index 53c385ec..137c699d 100644 \begin{codeblock} u.m.~M(); new (&u.n) N; -@@ -3360,7 +3358,6 @@ A local class cannot have static data members\iref{class.static.data}. +@@ -3349,7 +3347,6 @@ A local class cannot have static data members\iref{class.static.data}. \indextext{multiple inheritance}% A list of base classes can be specified in a class definition using the notation: @@ -6614,7 +6453,7 @@ index 53c385ec..137c699d 100644 \begin{bnf} \nontermdef{base-clause}\br \terminal{:} base-specifier-list -@@ -5319,7 +5316,6 @@ initializers for direct and virtual base class subobjects and +@@ -5308,7 +5305,6 @@ initializers for direct and virtual base class subobjects and non-static data members can be specified by a \grammarterm{ctor-initializer}, which has the form @@ -6622,7 +6461,7 @@ index 53c385ec..137c699d 100644 \begin{bnf} \nontermdef{ctor-initializer}\br \terminal{:} mem-initializer-list -@@ -5781,7 +5777,6 @@ public: +@@ -5770,7 +5766,6 @@ public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; \end{codeblock} @@ -6630,7 +6469,7 @@ index 53c385ec..137c699d 100644 \end{example} \rSec2[class.inhctor.init]{Initialization by inherited constructor}% -@@ -6431,7 +6426,6 @@ any non-static data member of \tcode{C} is of reference type or +@@ -6422,7 +6417,6 @@ any non-static data member of \tcode{C} is of reference type or A binary operator expression \tcode{a @ b} is \defnx{usable}{usable!binary operator expression} if either @@ -6638,7 +6477,7 @@ index 53c385ec..137c699d 100644 \begin{itemize} \item \tcode{a} or \tcode{b} is of class or enumeration type and -@@ -6552,7 +6546,6 @@ The \defnadj{synthesized}{three-way comparison} +@@ -6543,7 +6537,6 @@ The \defnadj{synthesized}{three-way comparison} of type \tcode{R}\iref{cmp.categories} of glvalues \tcode{a} and \tcode{b} of the same type is defined as follows: @@ -6646,7 +6485,7 @@ index 53c385ec..137c699d 100644 \begin{itemize} \item If \tcode{a <=> b} is usable\iref{class.compare.default} and -@@ -6651,7 +6644,6 @@ The \defn{common comparison type} \tcode{U} +@@ -6642,7 +6635,6 @@ The \defn{common comparison type} \tcode{U} of a possibly-empty list of $n$ comparison category types $\tcode{T}_0$, $\tcode{T}_1$, $\dotsc$, $\tcode{T}_{n-1}$ is defined as follows: @@ -6655,10 +6494,10 @@ index 53c385ec..137c699d 100644 \item If at least one $\tcode{T}_i$ is \tcode{std::partial_ordering}, diff --git a/source/compatibility.tex b/source/compatibility.tex -index 262398ea..386a7fcb 100644 +index 83948563..bce5aa70 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -2449,7 +2449,6 @@ Overspecification. +@@ -2501,7 +2501,6 @@ Overspecification. \effect The signatures of the following member functions changed from taking an \tcode{iterator} to taking a \tcode{const_iterator}: @@ -6666,7 +6505,7 @@ index 262398ea..386a7fcb 100644 \begin{itemize} \item \tcode{insert(iter, val)} for \tcode{vector}, \tcode{deque}, \tcode{list}, \tcode{set}, \tcode{multiset}, \tcode{map}, \tcode{multimap} -@@ -2521,7 +2520,6 @@ Clarify intentions, avoid workarounds. +@@ -2573,7 +2572,6 @@ Clarify intentions, avoid workarounds. Valid \CppIII{} code that relies on implicit boolean conversions will fail to compile with this revision of \Cpp{}. Such conversions occur in the following conditions: @@ -6674,7 +6513,7 @@ index 262398ea..386a7fcb 100644 \begin{itemize} \item passing a value to a function that takes an argument of type \tcode{bool}; \item using \tcode{operator==} to compare to \tcode{false} or \tcode{true}; -@@ -3602,7 +3600,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in +@@ -3676,7 +3674,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in \pnum Header \libheaderref{cstring}: The following functions have different declarations: @@ -6682,7 +6521,7 @@ index 262398ea..386a7fcb 100644 \begin{itemize} \item \tcode{strchr} \item \tcode{strpbrk} -@@ -3616,7 +3613,6 @@ Subclause \ref{cstring.syn} describes the changes. +@@ -3690,7 +3687,6 @@ Subclause \ref{cstring.syn} describes the changes. \pnum Header \libheaderref{cwchar}: The following functions have different declarations: @@ -6690,7 +6529,7 @@ index 262398ea..386a7fcb 100644 \begin{itemize} \item \tcode{wcschr} \item \tcode{wcspbrk} -@@ -3641,7 +3637,6 @@ in addition to the names declared in +@@ -3715,7 +3711,6 @@ in addition to the names declared in \pnum Header \libheaderref{cstdlib}: The following functions have different behavior: @@ -6828,7 +6667,7 @@ index 6bd0435e..0bfd8612 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 162be36a..e36e8c06 100644 +index 6de14bf9..16a3e133 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -648,7 +648,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6855,7 +6694,7 @@ index 162be36a..e36e8c06 100644 \begin{itemize} \item \tcode{T} is \defnx{\oldconcept{DefaultInsertable} into \tcode{X}} -@@ -3966,14 +3963,12 @@ such that distance from +@@ -3965,14 +3962,12 @@ such that distance from to \tcode{j} is positive, the following condition holds: @@ -6870,7 +6709,7 @@ index 162be36a..e36e8c06 100644 \begin{codeblock} value_comp(*i, *j) != false \end{codeblock} -@@ -5994,7 +5989,6 @@ define class templates that meet the requirements for sequence containers. +@@ -5993,7 +5988,6 @@ define class templates that meet the requirements for sequence containers. \pnum The following exposition-only alias template may appear in deduction guides for sequence containers: @@ -6878,7 +6717,7 @@ index 162be36a..e36e8c06 100644 \begin{codeblock} template using @\placeholdernc{iter-value-type}@ = typename iterator_traits::value_type; // \expos -@@ -8134,7 +8128,6 @@ If \tcode{size() < sz}, +@@ -8136,7 +8130,6 @@ If \tcode{size() < sz}, appends \tcode{sz - size()} default-inserted elements to the sequence. If \tcode{sz <= size()}, equivalent to: @@ -6886,7 +6725,7 @@ index 162be36a..e36e8c06 100644 \begin{codeblock} list::iterator it = begin(); advance(it, sz); -@@ -9399,13 +9392,11 @@ static constexpr void swap(reference x, reference y) noexcept; +@@ -9398,13 +9391,11 @@ static constexpr void swap(reference x, reference y) noexcept; \pnum \effects Exchanges the contents of \tcode{x} and \tcode{y} as if by: @@ -6900,7 +6739,7 @@ index 162be36a..e36e8c06 100644 \end{itemdescr} \begin{itemdecl} -@@ -18838,7 +18829,6 @@ For each of +@@ -18839,7 +18830,6 @@ For each of \tcode{stack}, the library provides the following formatter specialization where \tcode{\placeholder{adaptor-type}} is the name of the template: @@ -6908,7 +6747,7 @@ index 162be36a..e36e8c06 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -23011,7 +23001,6 @@ typename A::offset_policy +@@ -23016,7 +23006,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6916,7 +6755,7 @@ index 162be36a..e36e8c06 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -23722,7 +23711,6 @@ the \tcode{SliceSpecifier} arguments. +@@ -23916,7 +23905,6 @@ the \tcode{SliceSpecifier} arguments. \pnum For each function defined in \ref{mdspan.sub} that takes a parameter pack named \tcode{slices} as an argument: @@ -6924,7 +6763,7 @@ index 162be36a..e36e8c06 100644 \begin{itemize} \item let \tcode{index_type} be \begin{itemize} -@@ -23986,7 +23974,6 @@ $\le \tcode{src.extent($k$)}$ +@@ -24180,7 +24168,6 @@ $\le \tcode{src.extent($k$)}$ \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: @@ -6932,7 +6771,7 @@ index 162be36a..e36e8c06 100644 \begin{itemize} \item %FIXME: I think we want the count here, "number" is ambiguous. -@@ -23997,7 +23984,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and +@@ -24191,7 +24178,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and for each rank index $k$ of \tcode{Extents} such that \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, \tcode{SubExt\-ents::static_extent(\placeholder{map-rank}[$k$])} equals: @@ -6940,7 +6779,7 @@ index 162be36a..e36e8c06 100644 \begin{itemize} \item \tcode{Extents::static_extent($k$)} -@@ -24037,7 +24023,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that +@@ -24231,7 +24217,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that for each $k$ for which \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, \tcode{ext.extent(\placeholder{map-rank}[$k$])} equals: @@ -6949,10 +6788,10 @@ index 162be36a..e36e8c06 100644 \item \tcode{$s_k$.extent == 0 ? 0 : 1 + (\exposid{de-ice}($s_k$.extent) - 1) / \exposid{de-ice}($s_k$.stride)} diff --git a/source/declarations.tex b/source/declarations.tex -index b0e95bce..c7060268 100644 +index 57271779..4e2cdc02 100644 --- a/source/declarations.tex +++ b/source/declarations.tex -@@ -1538,7 +1538,6 @@ a partial specialization\iref{temp.spec.partial}, +@@ -1557,7 +1557,6 @@ a partial specialization\iref{temp.spec.partial}, an explicit instantiation\iref{temp.explicit}, or it has one of the following forms: @@ -6960,7 +6799,7 @@ index b0e95bce..c7060268 100644 \begin{ncsimplebnf} class-key \opt{attribute-specifier-seq} identifier \terminal{;}\br class-key \opt{attribute-specifier-seq} simple-template-id \terminal{;} -@@ -2355,7 +2354,6 @@ auto* p = new void(*)(char) requires true; // error: not a function declaration +@@ -2376,7 +2375,6 @@ auto* p = new void(*)(char) requires true; // error: not a function declaration \pnum Declarators have the syntax @@ -6968,7 +6807,7 @@ index b0e95bce..c7060268 100644 \begin{bnf} \nontermdef{declarator}\br ptr-declarator\br -@@ -4247,7 +4245,6 @@ In the following code, +@@ -4274,7 +4272,6 @@ In the following code, \tcode{g} will be called with the value \tcode{f(2)}: @@ -6976,7 +6815,7 @@ index b0e95bce..c7060268 100644 \begin{codeblock} int a = 1; int f(int); -@@ -4586,7 +4583,6 @@ To +@@ -4613,7 +4610,6 @@ To an object of type \tcode{T} means: @@ -6984,7 +6823,7 @@ index b0e95bce..c7060268 100644 \begin{itemize} \item If -@@ -4785,7 +4781,6 @@ is sequenced before those associated with +@@ -4812,7 +4808,6 @@ is sequenced before those associated with the initialization of the $j^\text{th}$ element. \item Otherwise, if the destination type is a class type: @@ -6992,7 +6831,7 @@ index b0e95bce..c7060268 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -5697,7 +5692,6 @@ a program that necessitates such a binding is ill-formed. +@@ -5724,7 +5719,6 @@ a program that necessitates such a binding is ill-formed. A reference to type ``\cvqual{cv1} \tcode{T1}'' is initialized by an expression of type ``\cvqual{cv2} \tcode{T2}'' as follows:% \indextext{binding!reference} @@ -7000,7 +6839,7 @@ index b0e95bce..c7060268 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6160,7 +6154,6 @@ int j { 1 }; // initialize to 1 +@@ -6191,7 +6185,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -7008,7 +6847,7 @@ index b0e95bce..c7060268 100644 \end{itemize} \pnum -@@ -7115,7 +7108,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, +@@ -7201,7 +7194,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, where $\tcode{U}_i$ is an lvalue reference if the initializer is an lvalue and an rvalue reference otherwise, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -7016,7 +6855,7 @@ index b0e95bce..c7060268 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7247,7 +7239,6 @@ struct S { +@@ -7333,7 +7325,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -7024,7 +6863,7 @@ index b0e95bce..c7060268 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7344,7 +7335,6 @@ If the underlying +@@ -7430,7 +7421,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -7032,7 +6871,7 @@ index b0e95bce..c7060268 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -7799,7 +7789,6 @@ void h() { +@@ -7885,7 +7875,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares an alternate name for a namespace according to the following grammar: @@ -7040,7 +6879,7 @@ index b0e95bce..c7060268 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -7954,7 +7943,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8040,7 +8029,6 @@ not declare functions or function templates, the use of the name is ill-formed\i In particular, the name of a variable, function or enumerator does not hide the name of a class or enumeration declared in a different namespace. For example, @@ -7048,7 +6887,7 @@ index b0e95bce..c7060268 100644 \begin{codeblock} namespace A { class X { }; -@@ -8507,7 +8495,6 @@ otherwise identical. +@@ -8593,7 +8581,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -7056,7 +6895,7 @@ index b0e95bce..c7060268 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -9430,7 +9417,6 @@ may be applied to a function or a lambda call operator or +@@ -9521,7 +9508,6 @@ may be applied to a function or a lambda call operator or to the declaration of a class or enumeration. An \grammarterm{attribute-argument-clause} may be present and, if present, shall have the form: @@ -7065,7 +6904,7 @@ index b0e95bce..c7060268 100644 \terminal{(} unevaluated-string \terminal{)} \end{ncbnf} diff --git a/source/exceptions.tex b/source/exceptions.tex -index 0617df06..1ce04e3c 100644 +index c1e16c1e..900c5da6 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -89,7 +89,6 @@ void f() { @@ -7089,7 +6928,7 @@ index 0617df06..1ce04e3c 100644 \end{itemize} \begin{note} -@@ -1101,9 +1098,7 @@ when \tcode{unhandled_stopped} is called on +@@ -1102,9 +1099,7 @@ when \tcode{unhandled_stopped} is called on a \tcode{with_awaitable_senders} object\iref{exec.with.awaitable.senders} whose continuation is not a handle to a coroutine whose promise type has an \tcode{unhandled_stopped} member function. @@ -7100,10 +6939,10 @@ index 0617df06..1ce04e3c 100644 \pnum diff --git a/source/expressions.tex b/source/expressions.tex -index 303e2ed2..093e4c42 100644 +index ca32c4fa..59670879 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -457,7 +457,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied +@@ -463,7 +463,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied if and only if the expression is a glvalue of volatile-qualified type and it is one of the following: @@ -7111,7 +6950,7 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item \tcode{(} \grammarterm{expression} \tcode{)}, where \grammarterm{expression} is one of these expressions, -@@ -500,7 +499,6 @@ Standard conversions are implicit conversions with built-in meaning. +@@ -506,7 +505,6 @@ Standard conversions are implicit conversions with built-in meaning. \ref{conv} enumerates the full set of such conversions. A \defnx{standard conversion sequence}{conversion sequence!standard} is a sequence of standard conversions in the following order: @@ -7119,7 +6958,7 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item Zero or one conversion from the following set: lvalue-to-rvalue conversion, array-to-pointer conversion, and function-to-pointer -@@ -528,7 +526,6 @@ a required destination type and value category. +@@ -534,7 +532,6 @@ a required destination type and value category. \begin{note} Expressions with a given type will be implicitly converted to other types in several contexts: @@ -7127,7 +6966,7 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item When used as operands of operators. The operator's requirements for its operands dictate the destination type\iref{expr.compound}. -@@ -654,7 +651,6 @@ int n = g(true); // OK, does not access \tcode{y.n} +@@ -660,7 +657,6 @@ int n = g(true); // OK, does not access \tcode{y.n} \pnum The result of the conversion is determined according to the following rules: @@ -7135,7 +6974,7 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item If \tcode{T} is \cv{}~\tcode{std::nullptr_t}, the result is a -@@ -1149,7 +1145,6 @@ type cause conversions and yield result types in a similar way. The +@@ -1170,7 +1166,6 @@ type cause conversions and yield result types in a similar way. The purpose is to yield a common type, which is also the type of the result. This pattern is called the \defnx{usual arithmetic conversions}{conversion!usual arithmetic}, which are defined as follows: @@ -7143,7 +6982,7 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item The lvalue-to-rvalue conversion\iref{conv.lval} is applied to each operand and -@@ -1192,7 +1187,6 @@ As a consequence, operands of type \keyword{bool}, \keyword{char8_t}, \keyword{c +@@ -1213,7 +1208,6 @@ As a consequence, operands of type \keyword{bool}, \keyword{char8_t}, \keyword{c to some integral type. \end{footnote} Then the following rules are applied to determine \tcode{C}: @@ -7151,7 +6990,7 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item If \tcode{T1} and \tcode{T2} are the same type, \tcode{C} is that type. -@@ -2454,7 +2448,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} +@@ -2474,7 +2468,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} \pnum For the purposes of lambda capture, an expression potentially references local entities as follows: @@ -7159,15 +6998,15 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item An \grammarterm{id-expression} that names a local entity -@@ -3057,7 +3050,6 @@ A \grammarterm{compound-requirement} asserts properties - of the \grammarterm{expression} $E$. Substitution +@@ -3079,7 +3072,6 @@ The \grammarterm{expression} is an unevaluated operand. + Substitution of template arguments (if any) and verification of semantic properties proceed in the following order: - \begin{itemize} \item Substitution of template arguments (if any) -@@ -3069,7 +3061,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. +@@ -3091,7 +3083,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. \item If the \grammarterm{return-type-requirement} is present, then: @@ -7175,7 +7014,7 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -3685,7 +3676,6 @@ the reference is bound, +@@ -3731,7 +3722,6 @@ the reference is bound, otherwise \tcode{E1.E2} designates the object or function to which the corresponding reference member of \tcode{E1} is bound. Otherwise, one of the following rules applies. @@ -7183,7 +7022,7 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item If \tcode{E2} is a static data member and the type of \tcode{E2} is \tcode{T}, then \tcode{E1.E2} is an lvalue; the expression designates -@@ -3898,7 +3888,6 @@ referred to by \tcode{T}. +@@ -3944,7 +3934,6 @@ referred to by \tcode{T}. \pnum Let \tcode{C} be the class type to which \tcode{T} points or refers. The runtime check logically executes as follows: @@ -7191,7 +7030,7 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item If, in the most derived object pointed (referred) to by \tcode{v}, \tcode{v} points (refers) to a public base class subobject of a -@@ -4448,7 +4437,6 @@ constness. +@@ -4491,7 +4480,6 @@ constness. The null member pointer value\iref{conv.mem} is converted to the null member pointer value of the destination type. The result of this conversion is unspecified, except in the following cases: @@ -7199,7 +7038,7 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item Converting a prvalue of type ``pointer to member function'' to a different pointer-to-member-function type and back to its original type -@@ -4863,7 +4851,6 @@ is called a \term{suspension context} of the function. +@@ -4907,7 +4895,6 @@ is called a \term{suspension context} of the function. \pnum Evaluation of an \grammarterm{await-expression} involves the following auxiliary types, expressions, and objects: @@ -7207,7 +7046,7 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item \placeholder{p} is an lvalue naming the promise -@@ -5244,7 +5231,6 @@ and +@@ -5288,7 +5275,6 @@ and the \grammarterm{new-expression}, then the allocated type is the type deduced for the variable \tcode{x} in the invented declaration\iref{dcl.spec.auto}: @@ -7215,7 +7054,7 @@ index 303e2ed2..093e4c42 100644 \begin{codeblock} T x @\textrm{\placeholder{init}}@ ; \end{codeblock} -@@ -5596,7 +5582,6 @@ the alignment argument is removed from the argument list; +@@ -5640,7 +5626,6 @@ the alignment argument is removed from the argument list; otherwise, an argument that is the type's alignment and has type \tcode{std::align_val_t} is added into the argument list immediately after the first argument; @@ -7223,7 +7062,7 @@ index 303e2ed2..093e4c42 100644 \end{itemize} and then overload resolution is performed again. -@@ -5674,7 +5659,6 @@ necessarily be the same as that of the block if the object is an array. +@@ -5718,7 +5703,6 @@ necessarily be the same as that of the block if the object is an array. \indextext{\idxcode{new}!default constructor and}% A \grammarterm{new-expression} that creates an object of type \tcode{T} initializes that object as follows: @@ -7231,7 +7070,7 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item If the \grammarterm{new-initializer} is omitted, the object is default-initialized\iref{dcl.init}. -@@ -5763,7 +5747,6 @@ struct S { +@@ -5807,7 +5791,6 @@ struct S { S* p = new (0) S; // error: non-placement deallocation function matches // placement allocation function \end{codeblock} @@ -7239,7 +7078,7 @@ index 303e2ed2..093e4c42 100644 \end{example} \pnum -@@ -5883,7 +5866,6 @@ of their constructor; see~\ref{class.base.init}). +@@ -5927,7 +5910,6 @@ of their constructor; see~\ref{class.base.init}). \pnum If the value of the operand of the \grammarterm{delete-expression} is not a null pointer value, then: @@ -7247,7 +7086,7 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item If the allocation call for the \grammarterm{new-expression} for the object to -@@ -6507,7 +6489,6 @@ or one operand has integral type and +@@ -6551,7 +6533,6 @@ or one operand has integral type and the other operand has unscoped enumeration type, the \link{usual arithmetic conversions}{expr.arith.conv} are applied to the operands. Then: @@ -7255,7 +7094,7 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, -@@ -6664,7 +6645,6 @@ is considered to be equivalent to a pointer to a hypothetical array element +@@ -6706,7 +6687,6 @@ is considered to be equivalent to a pointer to a hypothetical array element $n$ for this purpose. \end{footnote} is defined in terms of a partial order consistent with the following rules: @@ -7263,7 +7102,7 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item If two pointers point to different elements of the same array, or to subobjects thereof, the pointer to the element with the higher subscript -@@ -6677,7 +6657,6 @@ neither member is a subobject of zero size +@@ -6719,7 +6699,6 @@ neither member is a subobject of zero size and their class is not a union. \item Otherwise, neither pointer is required to compare greater than the other. @@ -7271,7 +7110,7 @@ index 303e2ed2..093e4c42 100644 \end{itemize} \pnum -@@ -6741,7 +6720,6 @@ If at least one of the operands is a pointer, +@@ -6781,7 +6760,6 @@ If at least one of the converted operands is a pointer, \link{qualification conversions}{conv.qual} are performed on both operands to bring them to their \deflink{composite pointer type}{expr.type}. Comparing pointers is defined as follows: @@ -7279,7 +7118,7 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item If one pointer represents the address of a complete object, and another -@@ -6771,7 +6749,6 @@ qualification conversions\iref{conv.qual} +@@ -6811,7 +6789,6 @@ qualification conversions\iref{conv.qual} are performed on both operands to bring them to their composite pointer type\iref{expr.type}. Comparing pointers to members is defined as follows: @@ -7287,7 +7126,7 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item If two pointers to members are both the null member pointer value, they compare -@@ -7043,7 +7020,6 @@ Attempts are made to form an implicit conversion sequence +@@ -7083,7 +7060,6 @@ Attempts are made to form an implicit conversion sequence from an operand expression \tcode{E1} of type \tcode{T1} to a target type related to the type \tcode{T2} of the operand expression \tcode{E2} as follows: @@ -7295,15 +7134,15 @@ index 303e2ed2..093e4c42 100644 \begin{itemize} \item If \tcode{E2} is an lvalue, the target type is ``lvalue reference to \tcode{T2}'', -@@ -7122,7 +7098,6 @@ subclause. +@@ -7162,7 +7138,6 @@ subclause. and \link{function-to-pointer}{conv.func} standard conversions are performed on the second and third operands. After those conversions, one of the following shall hold: - \begin{itemize} \item The second and third operands have the same type; the result is of - that type and the result object is initialized using the selected operand. -@@ -7150,7 +7125,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. + that type and the result is copy-initialized using the selected operand. +@@ -7192,7 +7167,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. Both the second and third operands have type \tcode{std::nullptr_t} or one has that type and the other is a null pointer constant. The result is of type \tcode{std::nullptr_t}. @@ -7312,18 +7151,18 @@ index 303e2ed2..093e4c42 100644 \rSec2[expr.yield]{Yielding a value}% diff --git a/source/future.tex b/source/future.tex -index 4de4dfc9..f24457dc 100644 +index 0cc895da..13655931 100644 --- a/source/future.tex +++ b/source/future.tex -@@ -283,7 +283,6 @@ shown in the above synopsis. +@@ -275,7 +275,6 @@ shown in the above synopsis. \pnum The header \libheaderrefx{type_traits}{meta.type.synop} has the following addition: - \begin{codeblock} namespace std { - template struct is_pod; -@@ -486,7 +485,6 @@ template bool operator>=(const T& x, const T& y); + template struct is_trivial; +@@ -515,7 +514,6 @@ template bool operator>=(const T& x, const T& y); \pnum The header \libheaderref{tuple} has the following additions: @@ -7331,7 +7170,7 @@ index 4de4dfc9..f24457dc 100644 \begin{codeblock} namespace std { template struct tuple_size; -@@ -556,7 +554,6 @@ are included. +@@ -585,7 +583,6 @@ are included. \pnum The header \libheaderref{variant} has the following additions: @@ -7339,7 +7178,7 @@ index 4de4dfc9..f24457dc 100644 \begin{codeblock} namespace std { template struct variant_size; -@@ -603,7 +600,6 @@ with a member typedef \tcode{type} that names the following type: +@@ -632,7 +629,6 @@ with a member typedef \tcode{type} that names the following type: \pnum The header \libheaderrefx{iterator}{iterator.synopsis} has the following addition: @@ -7347,7 +7186,7 @@ index 4de4dfc9..f24457dc 100644 \indexlibraryglobal{iterator}% \begin{codeblock} namespace std { -@@ -637,7 +633,6 @@ only to callers of that class. +@@ -666,7 +662,6 @@ only to callers of that class. If a \Cpp{} program wants to define a bidirectional iterator for some data structure containing \tcode{double} and such that it works on a large memory model of the implementation, it can do so with: @@ -7355,7 +7194,7 @@ index 4de4dfc9..f24457dc 100644 \begin{codeblock} class MyIterator : public iterator { -@@ -651,7 +646,6 @@ class MyIterator : +@@ -680,7 +675,6 @@ class MyIterator : \pnum The following member is declared in addition to those members specified in \ref{move.iter.elem}: @@ -7363,7 +7202,7 @@ index 4de4dfc9..f24457dc 100644 \begin{codeblock} namespace std { template -@@ -744,7 +738,6 @@ Equivalent to: \tcode{return visit(std::forward(vis), arg.value);} +@@ -773,7 +767,6 @@ Equivalent to: \tcode{return visit(std::forward(vis), arg.value);} \pnum The header \libheaderrefx{filesystem}{fs.filesystem.syn} has the following additions: @@ -7371,7 +7210,7 @@ index 4de4dfc9..f24457dc 100644 \indexlibraryglobal{u8path}% \begin{itemdecl} template -@@ -825,7 +818,6 @@ as it is consistent with \tcode{path}'s handling of other encodings. +@@ -854,7 +847,6 @@ as it is consistent with \tcode{path}'s handling of other encodings. \pnum The header \libheaderrefx{atomic}{atomics.syn} has the following additions. @@ -7380,7 +7219,7 @@ index 4de4dfc9..f24457dc 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index f68042b4..855d3823 100644 +index a208b372..b2222efe 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -2102,14 +2102,12 @@ does nothing. @@ -7398,7 +7237,7 @@ index f68042b4..855d3823 100644 \begin{itemize} \item \tcode{rdstate()}, \tcode{rdbuf()}, and \tcode{exceptions()} are left unchanged; -@@ -7198,7 +7196,6 @@ clears \tcode{ios_base::skipws} in the format flags stored in the +@@ -7204,7 +7202,6 @@ clears \tcode{ios_base::skipws} in the format flags stored in the format flags stored in the \tcode{basic_ostream} object \tcode{cout} (the same as \tcode{cout << noshowbase}). \end{footnote} @@ -7406,7 +7245,7 @@ index f68042b4..855d3823 100644 \begin{codeblock} void f(ios_base& str, ios_base::fmtflags mask) { // reset specified flags -@@ -7237,7 +7234,6 @@ then the expression +@@ -7243,7 +7240,6 @@ then the expression behaves as if it called \tcode{f(in, mask)}, where the function \tcode{f} is defined as: \indexlibrarymember{fmtflags}{ios_base}% @@ -7414,7 +7253,7 @@ index f68042b4..855d3823 100644 \begin{codeblock} void f(ios_base& str, ios_base::fmtflags mask) { // set specified flags -@@ -7283,7 +7279,6 @@ then the expression +@@ -7289,7 +7285,6 @@ then the expression \tcode{in >> setbase(base)} behaves as if it called \tcode{f(in, base)}, where the function \tcode{f} is defined as: @@ -7422,7 +7261,7 @@ index f68042b4..855d3823 100644 \begin{codeblock} void f(ios_base& str, int base) { // set \tcode{basefield} -@@ -7326,7 +7321,6 @@ then the expression +@@ -7332,7 +7327,6 @@ then the expression \tcode{out << setfill(c)} behaves as if it called \tcode{f(out, c)}, where the function \tcode{f} is defined as: @@ -7430,7 +7269,7 @@ index f68042b4..855d3823 100644 \begin{codeblock} template void f(basic_ios& str, charT c) { -@@ -7367,7 +7361,6 @@ then the expression +@@ -7373,7 +7367,6 @@ then the expression \tcode{in >> setprecision(n)} behaves as if it called \tcode{f(in, n)}, where the function \tcode{f} is defined as: @@ -7438,7 +7277,7 @@ index f68042b4..855d3823 100644 \begin{codeblock} void f(ios_base& str, int n) { // set precision -@@ -7413,7 +7406,6 @@ then the expression +@@ -7419,7 +7412,6 @@ then the expression \tcode{in >> setw(n)} behaves as if it called \tcode{f(in, n)}, where the function \tcode{f} is defined as: @@ -7446,7 +7285,7 @@ index f68042b4..855d3823 100644 \begin{codeblock} void f(ios_base& str, int n) { // set width -@@ -7463,7 +7455,6 @@ An object of unspecified type such that if +@@ -7469,7 +7461,6 @@ An object of unspecified type such that if \tcode{in} is an object of type \tcode{basic_istream} then the expression \tcode{in >> get_money(mon, intl)} behaves as if it called \tcode{f(in, mon, intl)}, where the function \tcode{f} is defined as: @@ -7454,7 +7293,7 @@ index f68042b4..855d3823 100644 \begin{codeblock} template void f(basic_ios& str, moneyT& mon, bool intl) { -@@ -7502,7 +7493,6 @@ An object of unspecified type such that if +@@ -7508,7 +7499,6 @@ An object of unspecified type such that if then the expression \tcode{out << put_money(mon, intl)} behaves as a \link{formatted output function}{ostream.formatted.reqmts} that calls \tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as: @@ -7462,7 +7301,7 @@ index f68042b4..855d3823 100644 \begin{codeblock} template void f(basic_ios& str, const moneyT& mon, bool intl) { -@@ -7538,7 +7528,6 @@ An object of unspecified type such that if \tcode{in} is an object of type +@@ -7544,7 +7534,6 @@ An object of unspecified type such that if \tcode{in} is an object of type \tcode{basic_istream} then the expression \tcode{in >> get_time(tmb, fmt)} behaves as if it called \tcode{f(in, tmb, fmt)}, where the function \tcode{f} is defined as: @@ -7470,7 +7309,7 @@ index f68042b4..855d3823 100644 \begin{codeblock} template void f(basic_ios& str, tm* tmb, const charT* fmt) { -@@ -7577,7 +7566,6 @@ An object of unspecified type such that if \tcode{out} is an object of +@@ -7583,7 +7572,6 @@ An object of unspecified type such that if \tcode{out} is an object of type \tcode{basic_ostream} then the expression \tcode{out << put_time(tmb, fmt)} behaves as if it called \tcode{f(out, tmb, fmt)}, where the function \tcode{f} is defined as: @@ -7478,7 +7317,7 @@ index f68042b4..855d3823 100644 \begin{codeblock} template void f(basic_ios& str, const tm* tmb, const charT* fmt) { -@@ -11413,7 +11401,6 @@ with the specialization that a sequence of characters is read from the input +@@ -11418,7 +11406,6 @@ with the specialization that a sequence of characters is read from the input sequence as if by reading from the associated file into an internal buffer (\tcode{extern_buf}) and then as if by doing: @@ -7486,7 +7325,7 @@ index f68042b4..855d3823 100644 \begin{codeblock} char extern_buf[XSIZE]; char* extern_end; -@@ -13898,7 +13885,6 @@ without an intervening \grammarterm{root-directory} element. +@@ -13903,7 +13890,6 @@ without an intervening \grammarterm{root-directory} element. \pnum \indextext{path!normalization|(}% \defnx{Normalization}{normalization!path} of a generic format pathname means: @@ -7494,7 +7333,7 @@ index f68042b4..855d3823 100644 \begin{enumerate} \item If the path is empty, stop. \item Replace each slash character in the \grammarterm{root-name} with a \grammarterm{preferred-separator}. -@@ -17014,7 +17000,6 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17019,7 +17005,6 @@ recursive_directory_iterator& increment(error_code& ec); As specified for the prefix increment operation of \link{Input iterators}{input.iterators}, except that: @@ -7503,7 +7342,7 @@ index f68042b4..855d3823 100644 \item If there are no more entries at the current depth, then if \tcode{depth() != 0} iteration over the parent directory resumes; otherwise \tcode{*this = recursive_directory_iterator()}. diff --git a/source/iterators.tex b/source/iterators.tex -index 193fd678..804e0b7d 100644 +index 32642559..8ce7802c 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -934,7 +934,6 @@ may be defined as \keyword{void}. @@ -7530,7 +7369,7 @@ index 193fd678..804e0b7d 100644 \begin{itemize} \item \tcode{iter_move(E)}, if \tcode{E} has class or enumeration type and -@@ -2780,7 +2777,6 @@ namespace std { +@@ -2781,7 +2778,6 @@ namespace std { A program-defined iterator \tcode{BinaryTreeIterator} can be included into the bidirectional iterator category by specializing the \tcode{iterator_traits} template: @@ -7538,7 +7377,7 @@ index 193fd678..804e0b7d 100644 \begin{codeblock} template struct iterator_traits> { using iterator_category = bidirectional_iterator_tag; -@@ -2798,7 +2794,6 @@ If +@@ -2799,7 +2795,6 @@ If \tcode{evolve()} is well-defined for bidirectional iterators, but can be implemented more efficiently for random access iterators, then the implementation is as follows: @@ -7546,7 +7385,7 @@ index 193fd678..804e0b7d 100644 \begin{codeblock} template inline void -@@ -3406,7 +3401,6 @@ As if by: +@@ -3380,7 +3375,6 @@ As if by: Iterator tmp = current; return *--tmp; \end{codeblock} @@ -7554,7 +7393,7 @@ index 193fd678..804e0b7d 100644 \end{itemdescr} \indexlibrarymember{operator->}{reverse_iterator}% -@@ -4788,7 +4782,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 +@@ -4762,7 +4756,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 vector v2(make_move_iterator(s.begin()), make_move_iterator(s.end())); // moves strings into \tcode{v2} \end{codeblock} @@ -7562,7 +7401,7 @@ index 193fd678..804e0b7d 100644 \end{example} \rSec3[move.iterator]{Class template \tcode{move_iterator}} -@@ -6507,7 +6500,6 @@ partial_sum(istream_iterator(cin), +@@ -6481,7 +6474,6 @@ partial_sum(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "@\textbackslash@n")); \end{codeblock} @@ -7571,7 +7410,7 @@ index 193fd678..804e0b7d 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lex.tex b/source/lex.tex -index 21b7af76..e4cdb488 100644 +index 217e727b..1a8e6169 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -594,7 +594,6 @@ after the \tcode{include} or \tcode{import} preprocessing token in a @@ -7583,7 +7422,7 @@ index 21b7af76..e4cdb488 100644 \end{itemize} diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 030a2acc..7515eb42 100644 +index 6edd7095..ffeb3db1 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -196,7 +196,6 @@ save space, items that do not apply to a Clause are omitted. @@ -7658,7 +7497,7 @@ index 030a2acc..7515eb42 100644 \begin{itemize} \item Properties specified as \defn{locale-specific} -@@ -891,7 +882,6 @@ some subclauses provide representative declarations, and semantic requirements, +@@ -922,7 +913,6 @@ some subclauses provide representative declarations, and semantic requirements, private members of classes that meet the external specifications of the classes. The declarations for such members are followed by a comment that ends with \expos, as in: @@ -7666,7 +7505,7 @@ index 030a2acc..7515eb42 100644 \begin{codeblock} streambuf* sb; // \expos \end{codeblock} -@@ -1840,7 +1830,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if +@@ -1879,7 +1869,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if evaluated in the context described below, and \item these expressions have the following effects: @@ -7674,7 +7513,7 @@ index 030a2acc..7515eb42 100644 \begin{itemize} \item the object referred to by \tcode{t} has the value originally held by \tcode{u} and \item the object referred to by \tcode{u} has the value originally held by \tcode{t}. -@@ -2846,7 +2835,6 @@ for that type can fail by throwing an object of type +@@ -2885,7 +2874,6 @@ for that type can fail by throwing an object of type \begin{example} The following is an allocator class template supporting the minimal interface that meets the requirements of \ref{allocator.requirements.general}: @@ -7682,7 +7521,7 @@ index 030a2acc..7515eb42 100644 \begin{codeblock} template struct SimpleAllocator { -@@ -3326,7 +3314,6 @@ in the program. +@@ -3365,7 +3353,6 @@ in the program. A \Cpp{} program may provide the definition for any of the following dynamic memory allocation function signatures declared in header \tcode{}\iref{basic.stc.dynamic,new.syn}: @@ -7690,7 +7529,7 @@ index 030a2acc..7515eb42 100644 \indextext{\idxcode{new}!\idxcode{operator}!replaceable}% \indexlibrarymember{new}{operator}% \begin{codeblock} -@@ -3385,7 +3372,6 @@ No diagnostic is required. +@@ -3424,7 +3411,6 @@ No diagnostic is required. \pnum The \Cpp{} standard library provides a default version of the following handler function\iref{support}: @@ -7698,7 +7537,7 @@ index 030a2acc..7515eb42 100644 \begin{itemize} \item \tcode{terminate_handler} -@@ -3406,7 +3392,6 @@ Exception handling. +@@ -3445,7 +3431,6 @@ Exception handling. \pnum A \Cpp{} program can get a pointer to the current handler function by calling the following functions: @@ -7706,7 +7545,7 @@ index 030a2acc..7515eb42 100644 \begin{itemize} \item \indexlibraryglobal{get_new_handler}% -@@ -3432,7 +3417,6 @@ on the implementation. +@@ -3471,7 +3456,6 @@ on the implementation. \pnum In particular, the behavior is undefined in the following cases: @@ -7714,7 +7553,7 @@ index 030a2acc..7515eb42 100644 \begin{itemize} \item For replacement functions\iref{new.delete}, if the installed replacement function does not -@@ -3711,7 +3695,6 @@ functions or constructors an implementation shall provide corresponding definiti +@@ -3750,7 +3734,6 @@ functions or constructors an implementation shall provide corresponding definiti \indextext{stable algorithm}% When the requirements for an algorithm state that it is ``stable'' without further elaboration, it means: @@ -7733,10 +7572,10 @@ index efd4eb00..12180661 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index 3a005667..dc8df77d 100644 +index ed7d8b8c..47a0dcbe 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1275,7 +1275,6 @@ when considered as an unevaluated operand. +@@ -1303,7 +1303,6 @@ when considered as an unevaluated operand. \pnum Let \exposid{pair-constructor} be an exposition-only class defined as follows: @@ -7744,7 +7583,7 @@ index 3a005667..dc8df77d 100644 \begin{codeblock} class @\exposid{pair-constructor}@ { using @\exposid{pair-type}@ = remove_cv_t; // \expos -@@ -3373,7 +3372,6 @@ template shared_ptr(nullptr_t p, D d, A a); +@@ -3413,7 +3412,6 @@ template shared_ptr(nullptr_t p, D d, A a); \tcode{is_move_constructible_v} is \tcode{true}, and \tcode{d(p)} is a well-formed expression. For the first two overloads: @@ -7753,10 +7592,10 @@ index 3a005667..dc8df77d 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index ec59b440..15e641d3 100644 +index d6bf2847..f8ed03cb 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -1600,7 +1600,6 @@ is_base_of_v // \tcode{false} +@@ -1590,7 +1590,6 @@ is_base_of_v // \tcode{false} The predicate condition for a template specialization \tcode{is_convertible} shall be satisfied if and only if the return expression in the following code would be well-formed, including any implicit conversions to the return type of the function: @@ -7764,7 +7603,7 @@ index ec59b440..15e641d3 100644 \begin{codeblock} To test() { return declval(); -@@ -2076,7 +2075,6 @@ If any of the types computed above is ill-formed, then +@@ -2066,7 +2065,6 @@ If any of the types computed above is ill-formed, then \pnum For the \tcode{common_type} trait applied to a template parameter pack \tcode{T} of types, the member \tcode{type} shall be either defined or not present as follows: @@ -7773,10 +7612,10 @@ index ec59b440..15e641d3 100644 \item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}. diff --git a/source/numerics.tex b/source/numerics.tex -index cba469a9..5d9a47f9 100644 +index 8fb33130..d088b19b 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -615,7 +615,6 @@ template constexpr complex operator+(const complex& lhs); +@@ -616,7 +616,6 @@ template constexpr complex operator+(const complex& lhs); \pnum \returns \tcode{complex(lhs)}. @@ -7784,7 +7623,7 @@ index cba469a9..5d9a47f9 100644 \end{itemdescr} \begin{itemdecl} -@@ -754,7 +753,6 @@ template +@@ -755,7 +754,6 @@ template \effects Inserts the complex number \tcode{x} onto the stream \tcode{o} as if it were implemented as follows: @@ -7792,7 +7631,7 @@ index cba469a9..5d9a47f9 100644 \begin{codeblock} basic_ostringstream s; s.flags(o.flags()); -@@ -4201,7 +4199,6 @@ template +@@ -4202,7 +4200,6 @@ template each operation is to be carried out modulo $2^{32}$, each indexing operator applied to \tcode{begin} is to be taken modulo $n$, and $T(x)$ is defined as $x \xor (x \rightshift 27)$: @@ -7800,7 +7639,7 @@ index cba469a9..5d9a47f9 100644 \begin{itemize} \item By way of initialization, -@@ -8278,7 +8275,6 @@ A unique function with the indicated name can be applied (unqualified) +@@ -8279,7 +8276,6 @@ A unique function with the indicated name can be applied (unqualified) to an operand of type \tcode{T}. This function returns a value of type \tcode{T} or which can be unambiguously implicitly converted to type \tcode{T}. @@ -7808,7 +7647,7 @@ index cba469a9..5d9a47f9 100644 \end{itemdescr} \rSec3[valarray.special]{Specialized algorithms} -@@ -8294,7 +8290,6 @@ template void swap(valarray& x, valarray& y) noexcept; +@@ -8295,7 +8291,6 @@ template void swap(valarray& x, valarray& y) noexcept; Equivalent to \tcode{x.swap(y)}. \end{itemdescr} @@ -7816,7 +7655,7 @@ index cba469a9..5d9a47f9 100644 \rSec2[class.slice]{Class \tcode{slice}} \rSec3[class.slice.overview]{Overview} -@@ -8714,7 +8709,6 @@ namespace std { +@@ -8715,7 +8710,6 @@ namespace std { This template is a helper template used by the \tcode{gslice} subscript operator @@ -7824,7 +7663,7 @@ index cba469a9..5d9a47f9 100644 \indexlibraryglobal{gslice_array}% \indexlibraryglobal{valarray}% \begin{itemdecl} -@@ -8840,7 +8834,6 @@ namespace std { +@@ -8841,7 +8835,6 @@ namespace std { \pnum This template is a helper template used by the mask subscript operator: @@ -7832,7 +7671,7 @@ index cba469a9..5d9a47f9 100644 \indexlibrarymember{operator[]}{mask_array}% \begin{itemdecl} mask_array valarray::operator[](const valarray&); -@@ -8957,7 +8950,6 @@ namespace std { +@@ -8958,7 +8951,6 @@ namespace std { \pnum This template is a helper template used by the indirect subscript operator @@ -7841,7 +7680,7 @@ index cba469a9..5d9a47f9 100644 \begin{itemdecl} indirect_array valarray::operator[](const valarray&); diff --git a/source/overloading.tex b/source/overloading.tex -index 481068cf..07f9a5d0 100644 +index 8c172ec0..8ce84f74 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -98,7 +98,6 @@ the list of arguments in its own unique way. @@ -7900,7 +7739,7 @@ index 481068cf..07f9a5d0 100644 \begin{itemize} \item The \grammarterm{template-head}, if any, -@@ -2664,7 +2657,6 @@ sequence}{over.ics.ellipsis}. +@@ -2658,7 +2651,6 @@ sequence}{over.ics.ellipsis}. Two implicit conversion sequences of the same form are indistinguishable conversion sequences unless one of the following rules applies: @@ -7908,7 +7747,7 @@ index 481068cf..07f9a5d0 100644 \begin{itemize} \item List-initialization sequence \tcode{L1} is a better conversion sequence than -@@ -2900,7 +2892,6 @@ int i = f(a); // calls \tcode{f(int)}, because \tcode{short} $ +@@ -2890,7 +2882,6 @@ int i = f(a); // calls \tcode{f(int)}, because \tcode{short} $ // better than \tcode{short} $\to$ \tcode{float}. \end{codeblock} \end{example} @@ -7916,7 +7755,7 @@ index 481068cf..07f9a5d0 100644 \end{itemize} \pnum -@@ -2909,7 +2900,6 @@ better conversion than a Promotion, which is a better conversion than +@@ -2899,7 +2890,6 @@ better conversion than a Promotion, which is a better conversion than a Conversion. Two conversion sequences with the same rank are indistinguishable unless one of the following rules applies: @@ -7924,7 +7763,7 @@ index 481068cf..07f9a5d0 100644 \begin{itemize} \item A conversion that does not convert a pointer or a pointer to member -@@ -4065,7 +4055,6 @@ is a \defnx{literal operator template}{literal!operator!template}. +@@ -4067,7 +4057,6 @@ is a \defnx{literal operator template}{literal!operator!template}. \pnum The declaration of a literal operator shall have a \grammarterm{parameter-declaration-clause} equivalent to one of the following: @@ -7933,10 +7772,10 @@ index 481068cf..07f9a5d0 100644 const char* unsigned long long int diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 3bab1be7..75936f0d 100644 +index 7dd32efe..9d4ec367 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex -@@ -143,7 +143,6 @@ begins with the first character in the source file +@@ -141,7 +141,6 @@ begins with the first character in the source file (optionally after whitespace containing no new-line characters) or follows whitespace containing at least one new-line character, and is @@ -7944,7 +7783,7 @@ index 3bab1be7..75936f0d 100644 \begin{itemize} \item a \tcode{\#} preprocessing token, or -@@ -558,7 +557,6 @@ including within a preprocessing directive. +@@ -565,7 +564,6 @@ including within a preprocessing directive. \begin{example} This demonstrates a way to include a library \tcode{optional} facility only if it is available: @@ -7952,7 +7791,7 @@ index 3bab1be7..75936f0d 100644 \begin{codeblock} #if __has_include() # include -@@ -717,14 +715,12 @@ However, using the \tcode{< >} form for headers provided +@@ -724,14 +722,12 @@ However, using the \tcode{< >} form for headers provided with the implementation and the \tcode{" "} form for sources outside the control of the implementation achieves wider portability. For instance: @@ -7967,7 +7806,7 @@ index 3bab1be7..75936f0d 100644 \end{note} \pnum -@@ -732,7 +728,6 @@ achieves wider portability. For instance: +@@ -739,7 +735,6 @@ achieves wider portability. For instance: This illustrates macro-replaced \tcode{\#include} directives: @@ -7975,7 +7814,7 @@ index 3bab1be7..75936f0d 100644 \begin{codeblock} #if VERSION == 1 #define INCFILE "vers1.h" -@@ -1458,7 +1453,6 @@ is optional. +@@ -1465,7 +1460,6 @@ is optional. \pnum \begin{example} In the following fragment: @@ -7983,7 +7822,7 @@ index 3bab1be7..75936f0d 100644 \begin{codeblock} #define hash_hash # ## # #define mkstr(a) # a -@@ -1468,7 +1462,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";} +@@ -1475,7 +1469,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";} \end{codeblock} The expansion produces, at various stages: @@ -7991,7 +7830,7 @@ index 3bab1be7..75936f0d 100644 \begin{codeblock} join(x, y) in_between(x hash_hash y) -@@ -1696,7 +1689,6 @@ has no effect. +@@ -1705,7 +1698,6 @@ has no effect. \pnum The following macro names shall be defined by the implementation: @@ -7999,7 +7838,7 @@ index 3bab1be7..75936f0d 100644 \begin{description} \item -@@ -1910,7 +1902,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali +@@ -1920,7 +1912,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali \pnum The following macro names are conditionally defined by the implementation: @@ -8007,7 +7846,7 @@ index 3bab1be7..75936f0d 100644 \begin{description} \item \indextext{__stdc__@\mname{STDC}}% -@@ -1945,7 +1936,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. +@@ -1955,7 +1946,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. \mname{STDCPP_THREADS}\\ Defined, and has the value integer literal 1, if and only if a program can have more than one \link{thread of execution}{intro.multithread}. @@ -8016,10 +7855,10 @@ index 3bab1be7..75936f0d 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 18fd5561..7f69027e 100644 +index 4a4b457c..831ed4b8 100644 --- a/source/ranges.tex +++ b/source/ranges.tex -@@ -626,7 +626,6 @@ object\iref{customization.point.object}. +@@ -633,7 +633,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -8027,7 +7866,7 @@ index 18fd5561..7f69027e 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -687,7 +686,6 @@ object\iref{customization.point.object}. +@@ -694,7 +693,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -8035,7 +7874,7 @@ index 18fd5561..7f69027e 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -813,7 +811,6 @@ object\iref{customization.point.object}. +@@ -820,7 +818,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -8043,7 +7882,7 @@ index 18fd5561..7f69027e 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -877,7 +874,6 @@ object\iref{customization.point.object}. +@@ -884,7 +881,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -8051,7 +7890,7 @@ index 18fd5561..7f69027e 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -1002,7 +998,6 @@ object\iref{customization.point.object}. +@@ -1009,7 +1005,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -8059,7 +7898,7 @@ index 18fd5561..7f69027e 100644 \begin{itemize} \item If \tcode{T} is an array of unknown bound\iref{term.array.type}, -@@ -1088,7 +1083,6 @@ object\iref{customization.point.object}. +@@ -1095,7 +1090,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -8067,7 +7906,7 @@ index 18fd5561..7f69027e 100644 \begin{itemize} \item If \tcode{T} is an array of unknown bound\iref{term.array.type}, -@@ -1139,7 +1133,6 @@ object\iref{customization.point.object}. +@@ -1146,7 +1140,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -8075,7 +7914,7 @@ index 18fd5561..7f69027e 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -1624,7 +1617,6 @@ manipulating ranges. +@@ -1631,7 +1624,6 @@ manipulating ranges. \pnum Many of the types in \ref{range.utility} are specified in terms of the following exposition-only concepts: @@ -8083,7 +7922,7 @@ index 18fd5561..7f69027e 100644 \begin{codeblock} template concept @\defexposconceptnc{simple-view}@ = // \expos -@@ -5714,7 +5706,6 @@ If \tcode{decltype((F))} does not model +@@ -5721,7 +5713,6 @@ If \tcode{decltype((F))} does not model \tcode{views::take(E, F)} is ill-formed. Otherwise, the expression \tcode{views::take(E, F)} is expression-equivalent to: @@ -8091,7 +7930,7 @@ index 18fd5561..7f69027e 100644 \begin{itemize} \item If \tcode{T} is a specialization -@@ -5735,7 +5726,6 @@ then +@@ -5742,7 +5733,6 @@ then ranges::be\-gin(E) + std::min(ranges::distance(E), F))}, except that \tcode{E} is evaluated only once, where \tcode{U} is a type determined as follows: @@ -8099,7 +7938,7 @@ index 18fd5561..7f69027e 100644 \begin{itemize} \item if \tcode{T} is a specialization of \tcode{span}, then \tcode{U} is \tcode{span}; -@@ -6179,7 +6169,6 @@ If \tcode{decltype((F))} does not model +@@ -6186,7 +6176,6 @@ If \tcode{decltype((F))} does not model \tcode{views::drop(E, F)} is ill-formed. Otherwise, the expression \tcode{views::drop(E, F)} is expression-equivalent to: @@ -8107,7 +7946,7 @@ index 18fd5561..7f69027e 100644 \begin{itemize} \item If \tcode{T} is a specialization of -@@ -7238,7 +7227,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and +@@ -7245,7 +7234,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and \exposid{Base} and \exposid{InnerBase} each model \libconcept{forward_range}. In that case, \tcode{\exposid{iterator}::iterator_category} is defined as follows: @@ -8115,7 +7954,7 @@ index 18fd5561..7f69027e 100644 \begin{itemize} \item Let \placeholder{OUTERC} denote -@@ -9505,7 +9493,6 @@ appears in the immediate context of a template instantiation. +@@ -9512,7 +9500,6 @@ appears in the immediate context of a template instantiation. \end{note} Otherwise, \tcode{views::counted(E, F)} is expression-equivalent to: @@ -8124,10 +7963,10 @@ index 18fd5561..7f69027e 100644 \item If \tcode{T} models \libconcept{contiguous_iterator}, diff --git a/source/statements.tex b/source/statements.tex -index 736fcc7c..f2eced7b 100644 +index 74882666..7ae850d6 100644 --- a/source/statements.tex +++ b/source/statements.tex -@@ -719,7 +719,6 @@ exposition only; and +@@ -717,7 +717,6 @@ exposition only; and \item \exposid{begin-expr} and \exposid{end-expr} are determined as follows: @@ -8135,7 +7974,7 @@ index 736fcc7c..f2eced7b 100644 \begin{itemize} \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are -@@ -850,7 +849,6 @@ The \keyword{continue} statement +@@ -848,7 +847,6 @@ The \keyword{continue} statement causes control to pass to the loop-continuation portion of the smallest such enclosing statement, that is, to the end of the loop. More precisely, in each of the statements @@ -8143,7 +7982,7 @@ index 736fcc7c..f2eced7b 100644 \begin{minipage}{.30\hsize} \begin{codeblock} while (foo) { -@@ -881,7 +879,6 @@ for (;;) { +@@ -879,7 +877,6 @@ for (;;) { } \end{codeblock} \end{minipage} @@ -8152,10 +7991,10 @@ index 736fcc7c..f2eced7b 100644 equivalent to \tcode{goto} \exposid{contin}. diff --git a/source/support.tex b/source/support.tex -index 50a598e7..e9deb268 100644 +index b171eab1..57047ccc 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -2375,7 +2375,6 @@ This requirement is binding on any replacement versions of these functions. +@@ -2410,7 +2410,6 @@ This requirement is binding on any replacement versions of these functions. \pnum \default @@ -8163,7 +8002,7 @@ index 50a598e7..e9deb268 100644 \begin{itemize} \item Executes a loop: -@@ -2843,7 +2842,6 @@ Intentionally performs no other action. +@@ -2878,7 +2877,6 @@ Intentionally performs no other action. \pnum \begin{example} This can be useful for constructing an object at a known address: @@ -8171,7 +8010,7 @@ index 50a598e7..e9deb268 100644 \begin{codeblock} void* place = operator new(sizeof(Something)); Something* p = new (place) Something(); -@@ -4468,7 +4466,6 @@ are collectively termed the \defn{comparison category types}. +@@ -4508,7 +4506,6 @@ are collectively termed the \defn{comparison category types}. Each is specified in terms of an exposition-only data member named \tcode{value} whose value typically corresponds to that of an enumerator from one of the following exposition-only enumerations: @@ -8179,7 +8018,7 @@ index 50a598e7..e9deb268 100644 \begin{codeblock} enum class @\placeholdernc{ord}@ { @\placeholdernc{equal}@ = 0, @\placeholdernc{equivalent}@ = @\placeholdernc{equal}@, @\placeholdernc{less}@ = -1, @\placeholdernc{greater}@ = 1 }; // \expos enum class @\placeholdernc{ncmp}@ { @\placeholdernc{unordered}@ = -127 }; // \expos -@@ -5377,7 +5374,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and +@@ -5418,7 +5415,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and denotes a type\iref{temp.deduct}, then \tcode{coroutine_traits} has the following publicly accessible member: @@ -8188,10 +8027,10 @@ index 50a598e7..e9deb268 100644 using promise_type = typename R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index 533e6ffb..feff65de 100644 +index e6cbd553..40f02d65 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -219,7 +219,6 @@ in some translation unit; no diagnostic is required. +@@ -233,7 +233,6 @@ in some translation unit; no diagnostic is required. The syntax for \grammarterm{template-parameter}{s} is: @@ -8199,7 +8038,7 @@ index 533e6ffb..feff65de 100644 \begin{bnf} \nontermdef{template-parameter}\br type-parameter\br -@@ -1436,7 +1435,6 @@ for function templates}{temp.func.order}. +@@ -1465,7 +1464,6 @@ for function templates}{temp.func.order}. Given an invented class template \tcode{X} with the \grammarterm{template-head} of \tcode{A} (including default arguments and \grammarterm{requires-clause}, if any): @@ -8207,7 +8046,7 @@ index 533e6ffb..feff65de 100644 \begin{itemize} \item Each of the two function templates has the same template parameters -@@ -1769,7 +1767,6 @@ or templated function declaration\iref{dcl.fct} +@@ -1798,7 +1796,6 @@ or templated function declaration\iref{dcl.fct} can be constrained by the use of a \grammarterm{requires-clause}. This allows the specification of constraints for that declaration as an expression: @@ -8215,7 +8054,7 @@ index 533e6ffb..feff65de 100644 \begin{bnf} \nontermdef{constraint-expression}\br logical-or-expression -@@ -1785,7 +1782,6 @@ that are used to constrain the declaration. +@@ -1814,7 +1811,6 @@ that are used to constrain the declaration. \pnum \indextext{constraint!associated|see{associated constraints}}% A declaration's \defn{associated constraints} are defined as follows: @@ -8223,7 +8062,7 @@ index 533e6ffb..feff65de 100644 \begin{itemize} \item If there are no introduced \grammarterm{constraint-expression}{s}, the declaration has no associated constraints. -@@ -2439,7 +2435,6 @@ public: +@@ -2484,7 +2480,6 @@ public: declares three member functions of a class template. The subscript function can be defined like this: @@ -8231,7 +8070,7 @@ index 533e6ffb..feff65de 100644 \begin{codeblock} template T& Array::operator[](int i) { if (i<0 || sz<=i) error("Array: range error"); -@@ -2813,7 +2808,6 @@ produces zero or more instantiations of the pattern in a list (described below). +@@ -2874,7 +2869,6 @@ produces zero or more instantiations of the pattern in a list (described below). The form of the pattern depends on the context in which the expansion occurs. Pack expansions can occur in the following contexts: @@ -8239,7 +8078,7 @@ index 533e6ffb..feff65de 100644 \begin{itemize} \item In a function parameter pack\iref{dcl.fct}; the pattern is the \grammarterm{parameter-declaration} without the ellipsis. -@@ -3397,7 +3391,6 @@ All other non-type arguments are specialized. +@@ -3464,7 +3458,6 @@ All other non-type arguments are specialized. \pnum Within the argument list of a partial specialization, the following restrictions apply: @@ -8247,7 +8086,7 @@ index 533e6ffb..feff65de 100644 \begin{itemize} \item The type of a template parameter corresponding to a specialized non-type argument -@@ -3411,7 +3404,6 @@ template< int X, int (*array_ptr)[X] > class A {}; +@@ -3478,7 +3471,6 @@ template< int X, int (*array_ptr)[X] > class A {}; int array[5]; template< int X > class A { }; // error \end{codeblock} @@ -8255,7 +8094,7 @@ index 533e6ffb..feff65de 100644 \end{example} \item The partial specialization shall be more specialized than the primary -@@ -3537,7 +3529,6 @@ the first is \defn{more specialized} than the second if, given the following +@@ -3604,7 +3596,6 @@ the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more specialized than the second according to the \link{ordering rules for function templates}{temp.func.order}: @@ -8263,7 +8102,7 @@ index 533e6ffb..feff65de 100644 \begin{itemize} \item Each of the two -@@ -3689,7 +3680,6 @@ A::B abci; // uses \#1 +@@ -3756,7 +3747,6 @@ A::B abci; // uses \#1 A function template defines an unbounded set of related functions. \begin{example} A family of sort functions can be declared like this: @@ -8271,7 +8110,7 @@ index 533e6ffb..feff65de 100644 \begin{codeblock} template class Array { }; template void sort(Array&); -@@ -3744,7 +3734,6 @@ void h(int* p) { +@@ -3811,7 +3801,6 @@ void h(int* p) { } \end{codeblock} \end{minipage} @@ -8279,7 +8118,7 @@ index 533e6ffb..feff65de 100644 \end{example} \pnum -@@ -3930,7 +3919,6 @@ to guarantee that functionally equivalent declarations will be treated +@@ -3997,7 +3986,6 @@ to guarantee that functionally equivalent declarations will be treated as distinct. For example, the last two declarations are functionally equivalent and would cause a program to be ill-formed: @@ -8287,7 +8126,7 @@ index 533e6ffb..feff65de 100644 \begin{codeblock} // guaranteed to be the same template void f(A, A); -@@ -4010,7 +3998,6 @@ then the order of the function parameters in its transformed template +@@ -4077,7 +4065,6 @@ then the order of the function parameters in its transformed template is reversed. For a function template $M$ with cv-qualifiers \cv{} that is a member of a class $A$: @@ -8295,7 +8134,7 @@ index 533e6ffb..feff65de 100644 \begin{itemize} \item The type $X(M)$ is ``rvalue reference to \cv{}~$A$'' -@@ -4255,7 +4242,6 @@ template class TT> +@@ -4322,7 +4309,6 @@ template class TT> void g(TT>); g(v); // OK, \tcode{TT} = \tcode{vector} \end{codeblock} @@ -8303,7 +8142,7 @@ index 533e6ffb..feff65de 100644 \end{example} \pnum -@@ -5103,7 +5089,6 @@ of a class that is the current instantiation. +@@ -5173,7 +5159,6 @@ of a class that is the current instantiation. \pnum A qualified name\iref{basic.lookup.qual} is dependent if @@ -8311,7 +8150,7 @@ index 533e6ffb..feff65de 100644 \begin{itemize} \item it is a \grammarterm{conversion-function-id} -@@ -5315,7 +5300,6 @@ specified by the +@@ -5407,7 +5392,6 @@ specified by the or \grammarterm{new-type-id} is dependent, even if any subexpression is type-dependent: @@ -8319,7 +8158,7 @@ index 533e6ffb..feff65de 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br simple-type-specifier braced-init-list\br -@@ -5333,7 +5317,6 @@ typename-specifier braced-init-list\br +@@ -5425,7 +5409,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following forms are never type-dependent (because the type of the expression cannot be dependent): @@ -8327,7 +8166,7 @@ index 533e6ffb..feff65de 100644 \begin{ncsimplebnf} literal\br \keyword{sizeof} unary-expression\br -@@ -5426,7 +5409,6 @@ Expressions of the following form are value-dependent if the +@@ -5518,7 +5501,6 @@ Expressions of the following form are value-dependent if the is type-dependent or the \grammarterm{type-id} is dependent: @@ -8335,15 +8174,15 @@ index 533e6ffb..feff65de 100644 \begin{ncsimplebnf} \keyword{sizeof} unary-expression\br \keyword{sizeof} \terminal{(} type-id \terminal{)}\br -@@ -5451,7 +5433,6 @@ is dependent or the - or - \grammarterm{cast-expression} +@@ -5546,7 +5528,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} + is value-dependent or + any \grammarterm{assignment-expression} in the \grammarterm{braced-init-list} is value-dependent: - \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br - \keyword{static_cast} \terminal{<} type-id \terminal{>} \terminal{(} expression \terminal{)}\br -@@ -5462,7 +5443,6 @@ simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br + typename-specifier \terminal{(} opt{expression-list} \terminal{)}\br +@@ -5561,7 +5542,6 @@ dynamic_cast \terminal{<} type-id \terminal{>} \terminal{(} expression \terminal \pnum Expressions of the following form are value-dependent: @@ -8351,7 +8190,7 @@ index 533e6ffb..feff65de 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -6346,7 +6326,6 @@ template. +@@ -6452,7 +6432,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -8359,7 +8198,7 @@ index 533e6ffb..feff65de 100644 \begin{bnf} \nontermdef{explicit-instantiation}\br \opt{\keyword{extern}} \keyword{template} declaration -@@ -6820,7 +6799,6 @@ otherwise, it is a declaration. +@@ -6926,7 +6905,6 @@ otherwise, it is a declaration. The definition of a static data member of a template for which default-initialization is desired can use functional cast notation\iref{expr.type.conv}: @@ -8367,7 +8206,7 @@ index 533e6ffb..feff65de 100644 \begin{codeblock} template<> X Q::x; // declaration template<> X Q::x (); // error: declares a function -@@ -7079,7 +7057,6 @@ An empty template argument list can be used to indicate that a given +@@ -7185,7 +7163,6 @@ An empty template argument list can be used to indicate that a given use refers to a specialization of a function template even when a non-template function\iref{dcl.fct} is visible that would otherwise be used. For example: @@ -8375,7 +8214,7 @@ index 533e6ffb..feff65de 100644 \begin{codeblock} template int f(T); // \#1 int f(int); // \#2 -@@ -7656,7 +7633,6 @@ void h(int x, float& y) { +@@ -7762,7 +7739,6 @@ void h(int x, float& y) { If \tcode{P} is not a reference type: @@ -8383,7 +8222,7 @@ index 533e6ffb..feff65de 100644 \begin{itemize} \item If -@@ -7751,7 +7727,6 @@ the type +@@ -7857,7 +7833,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -8391,7 +8230,7 @@ index 533e6ffb..feff65de 100644 \begin{itemize} \item If the original -@@ -7924,7 +7899,6 @@ of \tcode{P} for type deduction and for any further references to or transformat +@@ -8046,7 +8021,6 @@ of \tcode{P} for type deduction and for any further references to or transformat If \tcode{A} is not a reference type: @@ -8399,7 +8238,7 @@ index 533e6ffb..feff65de 100644 \begin{itemize} \item If -@@ -7970,7 +7944,6 @@ values that will make the deduced +@@ -8092,7 +8066,6 @@ values that will make the deduced identical to \tcode{A}. However, certain attributes of \tcode{A} may be ignored: @@ -8407,7 +8246,7 @@ index 533e6ffb..feff65de 100644 \begin{itemize} \item If the original \tcode{A} is a reference type, -@@ -8015,7 +7988,6 @@ the argument template and template-1 as the parameter template. +@@ -8137,7 +8110,6 @@ the argument template and template-1 as the parameter template. \pnum The types used to determine the ordering depend on the context in which the partial ordering is done: @@ -8415,7 +8254,7 @@ index 533e6ffb..feff65de 100644 \begin{itemize} \item In the context of a function call, the types used are those function parameter types -@@ -8043,7 +8015,6 @@ and +@@ -8165,7 +8137,6 @@ and \pnum Before the partial ordering is done, certain transformations are performed on the types used for partial ordering: @@ -8423,7 +8262,7 @@ index 533e6ffb..feff65de 100644 \begin{itemize} \item If -@@ -8249,7 +8220,6 @@ A given type +@@ -8371,7 +8342,6 @@ A given type \tcode{P} can be composed from a number of other types, templates, and non-type values: @@ -8431,7 +8270,7 @@ index 533e6ffb..feff65de 100644 \begin{itemize} \item A function type includes the types of each of the function parameters, -@@ -8291,7 +8261,6 @@ need not have the same form. +@@ -8413,7 +8383,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -8439,7 +8278,7 @@ index 533e6ffb..feff65de 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -8376,7 +8345,6 @@ is deduced. +@@ -8504,7 +8473,6 @@ is deduced. \begin{example} Here is an example in which different parameter/argument pairs produce inconsistent template argument deductions: @@ -8447,7 +8286,7 @@ index 533e6ffb..feff65de 100644 \begin{codeblock} template void f(T x, T y) { @\commentellip@ } struct A { @\commentellip@ }; -@@ -8393,7 +8361,6 @@ Here is an example where two template arguments are deduced from a +@@ -8521,7 +8489,6 @@ Here is an example where two template arguments are deduced from a single function parameter/argument pair. This can lead to conflicts that cause type deduction to fail: @@ -8455,7 +8294,7 @@ index 533e6ffb..feff65de 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -8410,7 +8377,6 @@ void r() { +@@ -8538,7 +8505,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -8463,7 +8302,7 @@ index 533e6ffb..feff65de 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -8429,7 +8395,6 @@ void h() { +@@ -8557,7 +8523,6 @@ void h() { Here is an example where a qualification conversion applies between the argument type on the function call and the deduced template argument type: @@ -8471,7 +8310,7 @@ index 533e6ffb..feff65de 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -8440,7 +8405,6 @@ void s() { +@@ -8568,7 +8533,6 @@ void s() { Here is an example where the template argument is used to instantiate a derived class type of the corresponding function parameter type: @@ -8480,10 +8319,10 @@ index 533e6ffb..feff65de 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index f5b726eb..74e1953b 100644 +index 15068b87..9eeff045 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -6565,7 +6565,6 @@ and visible to other threads. +@@ -6689,7 +6689,6 @@ and visible to other threads. \pnum The expression \tcode{m.lock()} is well-formed and has the following semantics: @@ -8491,7 +8330,7 @@ index f5b726eb..74e1953b 100644 \begin{itemdescr} \pnum \expects -@@ -6608,7 +6607,6 @@ that a deadlock would occur. +@@ -6732,7 +6731,6 @@ that a deadlock would occur. \pnum The expression \tcode{m.try_lock()} is well-formed and has the following semantics: @@ -8499,7 +8338,7 @@ index f5b726eb..74e1953b 100644 \begin{itemdescr} \pnum \expects -@@ -6654,7 +6652,6 @@ Nothing. +@@ -6778,7 +6776,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -8507,7 +8346,7 @@ index f5b726eb..74e1953b 100644 \begin{itemdescr} \pnum \expects -@@ -6809,7 +6806,6 @@ requirements\iref{thread.req.lockable.timed}. +@@ -6933,7 +6930,6 @@ requirements\iref{thread.req.lockable.timed}. \pnum The expression \tcode{m.try_lock_for(rel_time)} is well-formed and has the following semantics: @@ -8515,7 +8354,7 @@ index f5b726eb..74e1953b 100644 \begin{itemdescr} \pnum \expects -@@ -6851,7 +6847,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -6975,7 +6971,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_until(abs_time)} is well-formed and has the following semantics: @@ -8523,7 +8362,7 @@ index f5b726eb..74e1953b 100644 \begin{itemdescr} \pnum \expects -@@ -7038,7 +7033,6 @@ shared lock. +@@ -7162,7 +7157,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -8531,7 +8370,7 @@ index f5b726eb..74e1953b 100644 \begin{itemdescr} \pnum \expects -@@ -7075,7 +7069,6 @@ The calling thread has a shared lock on the mutex. +@@ -7199,7 +7193,6 @@ The calling thread has a shared lock on the mutex. \pnum The expression \tcode{m.unlock_shared()} is well-formed and has the following semantics: @@ -8539,7 +8378,7 @@ index f5b726eb..74e1953b 100644 \begin{itemdescr} \pnum \expects -@@ -7100,7 +7093,6 @@ Nothing. +@@ -7224,7 +7217,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -8547,7 +8386,7 @@ index f5b726eb..74e1953b 100644 \begin{itemdescr} \pnum \expects -@@ -7203,7 +7195,6 @@ requirements\iref{thread.req.lockable.shared.timed}. +@@ -7327,7 +7319,6 @@ requirements\iref{thread.req.lockable.shared.timed}. \pnum The expression \tcode{m.try_lock_shared_for(rel_time)} is well-formed and has the following semantics: @@ -8555,7 +8394,7 @@ index f5b726eb..74e1953b 100644 \begin{itemdescr} \pnum \expects -@@ -7248,7 +7239,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -7372,7 +7363,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_shared_until(abs_time)} is well-formed and has the following semantics: @@ -8563,7 +8402,7 @@ index f5b726eb..74e1953b 100644 \begin{itemdescr} \pnum \expects -@@ -9397,7 +9387,6 @@ template +@@ -9521,7 +9511,6 @@ template \begin{itemdescr} \pnum \effects @@ -8571,7 +8410,7 @@ index f5b726eb..74e1953b 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -10808,7 +10797,6 @@ shared state as \tcode{*this}. +@@ -10932,7 +10921,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -8579,7 +8418,7 @@ index f5b726eb..74e1953b 100644 \begin{itemize} \item \tcode{future_already_retrieved} if \tcode{get_future} has already been called on a \tcode{promise} with the same shared state as \tcode{*this}. -@@ -10871,7 +10859,6 @@ already has a stored value or exception. +@@ -10995,7 +10983,6 @@ already has a stored value or exception. \pnum \errors @@ -8587,7 +8426,7 @@ index f5b726eb..74e1953b 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -11211,7 +11198,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -11335,7 +11322,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -8595,7 +8434,7 @@ index f5b726eb..74e1953b 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -11555,7 +11541,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -11679,7 +11665,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8603,7 +8442,7 @@ index f5b726eb..74e1953b 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -11590,7 +11575,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -11714,7 +11699,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8611,7 +8450,7 @@ index f5b726eb..74e1953b 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -11646,7 +11630,6 @@ The further behavior +@@ -11770,7 +11754,6 @@ The further behavior of the second function depends on the \tcode{policy} argument as follows (if more than one of these conditions applies, the implementation may choose any of the corresponding policies): @@ -8620,7 +8459,7 @@ index f5b726eb..74e1953b 100644 \item If \tcode{launch::async} is set in \tcode{policy}, calls diff --git a/source/time.tex b/source/time.tex -index 9344719d..edab6cbc 100644 +index 7ce27c0a..2ab4949b 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2074,7 +2074,6 @@ return os << s.str(); @@ -8770,7 +8609,7 @@ index 9344719d..edab6cbc 100644 \fmtnontermdef{chrono-format-spec}\br \opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs} diff --git a/source/utilities.tex b/source/utilities.tex -index 0da437df..b3214037 100644 +index 316f0500..f94c312e 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -254,7 +254,6 @@ Exchanges values stored in two locations. @@ -8797,7 +8636,7 @@ index 0da437df..b3214037 100644 \begin{codeblock} noexcept(x.swap(y)) \end{codeblock} -@@ -10101,7 +10098,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; +@@ -10107,7 +10104,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8805,7 +8644,7 @@ index 0da437df..b3214037 100644 \begin{itemize} \item If \tcode{I < pos}, the new value is zero; -@@ -10126,7 +10122,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; +@@ -10132,7 +10128,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8813,7 +8652,7 @@ index 0da437df..b3214037 100644 \begin{itemize} \item If \tcode{pos >= N - I}, the new value is zero; -@@ -10854,7 +10849,6 @@ namespace std { +@@ -10860,7 +10855,6 @@ namespace std { If a \Cpp{} program wants to have a by-element addition of two vectors \tcode{a} and \tcode{b} containing \tcode{double} and put the result into \tcode{a}, it can do: @@ -8821,7 +8660,7 @@ index 0da437df..b3214037 100644 \begin{codeblock} transform(a.begin(), a.end(), b.begin(), a.begin(), plus()); \end{codeblock} -@@ -14349,7 +14343,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; +@@ -14355,7 +14349,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; The header provides partial specializations of \tcode{function_ref} for each combination of the possible replacements of the placeholders \cv{} and \placeholder{noex} where: @@ -8830,13 +8669,13 @@ index 0da437df..b3214037 100644 \item \cv{} is either const or empty, and \item \placeholder{noex} is either \tcode{true} or \tcode{false}. -- -2.34.1 +2.43.0 -From 331164f992c48829fe5cbd6f9740823c6e16c98a Mon Sep 17 00:00:00 2001 +From 26305cffbf995abb47d25643d4d030718ab11a03 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 -Subject: [PATCH 10/14] Use monospace font for code in figures. +Subject: [PATCH 09/13] Use monospace font for code in figures. --- source/assets/figdag.dot | 8 ++++---- @@ -8977,13 +8816,13 @@ index b3c04d48..1ab8e364 100644 \ No newline at end of file +} -- -2.34.1 +2.43.0 -From b8db4216e3eb5926d03800ef793267fcc3f551ba Mon Sep 17 00:00:00 2001 +From d314b8c625d3457bd547ce86afe96cf9504de8c0 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 -Subject: [PATCH 11/14] [uaxid] Mark code that's not to be highlighted. +Subject: [PATCH 10/13] [uaxid] Mark code that's not to be highlighted. --- source/uax31.tex | 8 ++++---- @@ -9015,13 +8854,13 @@ index 5b236c6e..320ed00a 100644 \begin{outputblock} := * -- -2.34.1 +2.43.0 -From c0570c43e6fc469e2b9b0e0c119a5f291b8e00d4 Mon Sep 17 00:00:00 2001 +From 70e6cb0de0eb28bd06ad9c97f3924c8ef24c3c36 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 -Subject: [PATCH 12/14] Use cxxdraft-htmlgen macros more. +Subject: [PATCH 11/13] Use cxxdraft-htmlgen macros more. --- source/algorithms.tex | 194 +++++++++++++------------- @@ -9032,20 +8871,20 @@ Subject: [PATCH 12/14] Use cxxdraft-htmlgen macros more. source/iostreams.tex | 28 ++-- source/lib-intro.tex | 28 ++-- source/memory.tex | 46 +++--- - source/meta.tex | 309 ++++++++++++++++++++--------------------- + source/meta.tex | 307 ++++++++++++++++++++--------------------- source/numerics.tex | 38 ++--- source/strings.tex | 10 +- source/support.tex | 14 +- source/threads.tex | 112 +++++++-------- source/time.tex | 66 ++++----- source/utilities.tex | 138 +++++++++--------- - 15 files changed, 512 insertions(+), 521 deletions(-) + 15 files changed, 511 insertions(+), 520 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 6008378c..8442cb43 100644 +index 436d60b1..47082ed4 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -81,14 +81,14 @@ the names of template parameters are used to express type requirements. +@@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. \tcode{InputIterator1}, or \tcode{Input\-Iterator2}, the template argument shall meet the @@ -9062,7 +8901,7 @@ index 6008378c..8442cb43 100644 \item If an algorithm's template parameter is named \tcode{ForwardIterator}, -@@ -96,7 +96,7 @@ the names of template parameters are used to express type requirements. +@@ -77,7 +77,7 @@ the names of template parameters are used to express type requirements. \tcode{ForwardItera\-tor2}, or \tcode{NoThrowForwardIterator}, the template argument shall meet the @@ -9071,7 +8910,7 @@ index 6008378c..8442cb43 100644 if it is required to be a mutable iterator, or model \libconcept{forward_iterator}\iref{iterator.concept.forward} otherwise. \item -@@ -112,7 +112,7 @@ the names of template parameters are used to express type requirements. +@@ -93,7 +93,7 @@ the names of template parameters are used to express type requirements. \tcode{Bidirectional\-Iterator1}, or \tcode{BidirectionalIterator2}, the template argument shall meet the @@ -9080,7 +8919,7 @@ index 6008378c..8442cb43 100644 if it is required to be a mutable iterator, or model \libconcept{bidirectional_iterator}\iref{iterator.concept.bidir} otherwise. \item -@@ -121,7 +121,7 @@ the names of template parameters are used to express type requirements. +@@ -102,7 +102,7 @@ the names of template parameters are used to express type requirements. \tcode{Random\-AccessIterator1}, or \tcode{RandomAccessIterator2}, the template argument shall meet the @@ -9089,7 +8928,7 @@ index 6008378c..8442cb43 100644 if it is required to be a mutable iterator, or model \libconcept{random_access_iterator}\iref{iterator.concept.random.access} otherwise. \end{itemize} -@@ -3625,10 +3625,10 @@ template +@@ -3606,10 +3606,10 @@ template \pnum \expects \tcode{Function} meets @@ -9102,7 +8941,7 @@ index 6008378c..8442cb43 100644 \end{note} \pnum -@@ -3665,7 +3665,7 @@ template +@@ -3646,7 +3646,7 @@ template \begin{itemdescr} \pnum \expects @@ -9111,7 +8950,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -3751,10 +3751,10 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -3732,10 +3732,10 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -9124,7 +8963,7 @@ index 6008378c..8442cb43 100644 \end{note} \pnum -@@ -3791,7 +3791,7 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -3772,7 +3772,7 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -9133,7 +8972,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -4457,7 +4457,7 @@ If +@@ -4438,7 +4438,7 @@ If \item the types of \tcode{first1}, \tcode{last1}, \tcode{first2}, and \tcode{last2} meet the @@ -9142,7 +8981,7 @@ index 6008378c..8442cb43 100644 and \tcode{last1 - first1 != last2 - first2} for the overloads in namespace \tcode{std}; \item -@@ -4781,7 +4781,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} +@@ -4762,7 +4762,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} \pnum \remarks @@ -9151,7 +8990,7 @@ index 6008378c..8442cb43 100644 \end{itemdescr} \rSec2[alg.starts.with]{Starts with} -@@ -5196,7 +5196,7 @@ do not overlap. +@@ -5177,7 +5177,7 @@ do not overlap. For the overload with an \tcode{ExecutionPolicy}, there might be a performance cost if \tcode{iterator_traits::value_type} @@ -9160,7 +8999,7 @@ index 6008378c..8442cb43 100644 \end{note} \pnum -@@ -6007,7 +6007,7 @@ Let $E$ be +@@ -5988,7 +5988,7 @@ Let $E$ be \expects For the algorithms in namespace \tcode{std}, the type of \tcode{*first} @@ -9169,7 +9008,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -6117,7 +6117,7 @@ do not overlap. +@@ -6098,7 +6098,7 @@ do not overlap. For the overloads with an \tcode{ExecutionPolicy}, there might be a performance cost if \tcode{iterator_traits::value_type} does not meet @@ -9178,7 +9017,7 @@ index 6008378c..8442cb43 100644 \end{note} \pnum -@@ -6190,7 +6190,7 @@ let $E$ be +@@ -6171,7 +6171,7 @@ let $E$ be For the overloads in namespace \tcode{std}, \tcode{pred} is an equivalence relation and the type of \tcode{*first} meets @@ -9187,7 +9026,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -6293,18 +6293,18 @@ let $E$ be +@@ -6274,18 +6274,18 @@ let $E$ be \libconcept{forward_iterator}\iref{iterator.concept.forward}, then there are no additional requirements for \tcode{T}. Otherwise, if \tcode{OutputIterator} meets @@ -9211,7 +9050,7 @@ index 6008378c..8442cb43 100644 \end{note} \end{itemize} \end{itemize} -@@ -6352,7 +6352,7 @@ template<@\libconcept{bidirectional_range}@ R> +@@ -6333,7 +6333,7 @@ template<@\libconcept{bidirectional_range}@ R> \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9220,7 +9059,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -6444,10 +6444,10 @@ template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S> +@@ -6425,10 +6425,10 @@ template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S> \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -9234,7 +9073,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -6588,13 +6588,13 @@ For the overload in namespace \tcode{std}: +@@ -6569,13 +6569,13 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{PopulationIterator} meets @@ -9251,7 +9090,7 @@ index 6008378c..8442cb43 100644 unless \tcode{Pop\-ulat\-ion\-Iter\-ator} models \libconcept{forward_iterator}\iref{iterator.concept.forward}. \item -@@ -6662,7 +6662,7 @@ For the overload in namespace \tcode{std}: +@@ -6643,7 +6643,7 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{RandomAccessIterator} meets @@ -9260,7 +9099,7 @@ index 6008378c..8442cb43 100644 \item The type \tcode{remove_reference_t} meets the uniform random bit generator\iref{rand.req.urng} requirements. -@@ -6714,7 +6714,7 @@ template<@\libconcept{forward_range}@ R> +@@ -6695,7 +6695,7 @@ template<@\libconcept{forward_range}@ R> \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -9269,7 +9108,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -6768,10 +6768,10 @@ template<@\libconcept{forward_range}@ R> +@@ -6749,10 +6749,10 @@ template<@\libconcept{forward_range}@ R> \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -9283,7 +9122,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -6785,7 +6785,7 @@ from \tcode{i = (last - first) - n - 1} and proceeding to \tcode{i = 0} if +@@ -6766,7 +6766,7 @@ from \tcode{i = (last - first) - n - 1} and proceeding to \tcode{i = 0} if \item for the overload in namespace \tcode{std} without an \tcode{ExecutionPolicy} template parameter, @@ -9292,7 +9131,7 @@ index 6008378c..8442cb43 100644 \item for the overloads in namespace \tcode{ranges}, \tcode{I} models \libconcept{bidirectional_iterator}. -@@ -6941,10 +6941,10 @@ for the overloads with no parameters by those names. +@@ -6922,10 +6922,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9306,7 +9145,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -6999,10 +6999,10 @@ for the overloads with no parameters by those names. +@@ -6980,10 +6980,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9320,7 +9159,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -7069,10 +7069,10 @@ for the overloads with no parameters by those names. +@@ -7050,10 +7050,10 @@ for the overloads with no parameters by those names. \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9334,7 +9173,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -7177,10 +7177,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. +@@ -7158,10 +7158,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9348,7 +9187,7 @@ index 6008378c..8442cb43 100644 \pnum For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and -@@ -7382,10 +7382,10 @@ for the overloads with no parameters by those names. +@@ -7363,10 +7363,10 @@ for the overloads with no parameters by those names. \range{first}{nth} and \range{nth}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9362,7 +9201,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -7733,7 +7733,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -7714,7 +7714,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -9371,7 +9210,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -7760,7 +7760,7 @@ Let $N = \tcode{last - first}$: +@@ -7741,7 +7741,7 @@ Let $N = \tcode{last - first}$: For the overload with no \tcode{ExecutionPolicy}, exactly $N$ applications of the predicate and projection. At most $N / 2$ swaps if the type of \tcode{first} meets @@ -9380,7 +9219,7 @@ index 6008378c..8442cb43 100644 for the overloads in namespace \tcode{std} or models \libconcept{bidirectional_iterator} for the overloads in namespace \tcode{ranges}, -@@ -7802,10 +7802,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -7783,10 +7783,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9394,7 +9233,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -7888,7 +7888,7 @@ The input range and output ranges do not overlap. +@@ -7869,7 +7869,7 @@ The input range and output ranges do not overlap. \begin{note} For the overload with an \tcode{ExecutionPolicy}, there might be a performance cost if \tcode{first}'s value type @@ -9403,7 +9242,7 @@ index 6008378c..8442cb43 100644 \end{note} \pnum -@@ -8093,10 +8093,10 @@ for the overloads with no parameters by those names. +@@ -8074,10 +8074,10 @@ for the overloads with no parameters by those names. sorted with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9417,7 +9256,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -8662,10 +8662,10 @@ The range \range{first}{last - 1} +@@ -8643,10 +8643,10 @@ The range \range{first}{last - 1} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9431,7 +9270,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -8715,10 +8715,10 @@ The range \range{first}{last} +@@ -8696,10 +8696,10 @@ The range \range{first}{last} is a valid non-empty heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9445,7 +9284,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -8771,10 +8771,10 @@ for the overloads with no parameters by those names. +@@ -8752,10 +8752,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9459,7 +9298,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -8824,10 +8824,10 @@ The range \range{first}{last} is +@@ -8805,10 +8805,10 @@ The range \range{first}{last} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9473,7 +9312,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -8986,7 +8986,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -9493,7 +9332,7 @@ index 6008378c..8442cb43 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9064,7 +9064,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -9513,7 +9352,7 @@ index 6008378c..8442cb43 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9144,7 +9144,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -9533,7 +9372,7 @@ index 6008378c..8442cb43 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9378,7 +9378,7 @@ for the overloads with no parameter \tcode{proj}. +@@ -9359,7 +9359,7 @@ for the overloads with no parameter \tcode{proj}. \expects \tcode{bool(invoke(comp, invoke(proj, hi), invoke(proj, lo)))} is \tcode{false}. For the first form, type \tcode{T} @@ -9542,7 +9381,7 @@ index 6008378c..8442cb43 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9567,7 +9567,7 @@ for overloads with no parameters by those names. +@@ -9548,7 +9548,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9551,7 +9390,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -9626,7 +9626,7 @@ for overloads with no parameters by those names. +@@ -9607,7 +9607,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9560,7 +9399,7 @@ index 6008378c..8442cb43 100644 \pnum \effects -@@ -9944,8 +9944,8 @@ template +@@ -9925,8 +9925,8 @@ template \pnum \expects \tcode{T} meets @@ -9571,7 +9410,7 @@ index 6008378c..8442cb43 100644 In the range \crange{first}{last}, \tcode{binary_op} neither modifies elements nor invalidates iterators or subranges. -@@ -10067,7 +10067,7 @@ are convertible to \tcode{T}. +@@ -10048,7 +10048,7 @@ are convertible to \tcode{T}. \expects \begin{itemize} \item @@ -9580,7 +9419,7 @@ index 6008378c..8442cb43 100644 \item \tcode{binary_op} neither invalidates iterators or subranges, nor modifies elements in the range \crange{first}{last}. -@@ -10111,8 +10111,8 @@ template}. +@@ -10787,7 +10787,7 @@ that denotes an object of type \tcode{minus<>}. \begin{itemize} \item For the overloads with no \tcode{ExecutionPolicy}, @@ -9749,7 +9588,7 @@ index b729a13d..be9f913a 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 921ec28c..a7168c10 100644 +index 0403d808..e8eaf162 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9788,10 +9627,10 @@ index 921ec28c..a7168c10 100644 \\ \end{floattable} diff --git a/source/future.tex b/source/future.tex -index f24457dc..ec7a2e71 100644 +index 13655931..c7435927 100644 --- a/source/future.tex +++ b/source/future.tex -@@ -322,7 +322,7 @@ template struct is_pod; +@@ -351,7 +351,7 @@ template struct is_pod; \pnum \remarks @@ -9800,7 +9639,7 @@ index f24457dc..ec7a2e71 100644 with a base characteristic of \tcode{true_type} if \tcode{T} is a POD type, and \tcode{false_type} otherwise. -@@ -506,7 +506,7 @@ Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T} +@@ -535,7 +535,7 @@ Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T} If the expression \tcode{TS::value} is well-formed when treated as an \deflink{unevaluated operand}{expr.context}, then specializations of each of the two templates meet @@ -9809,7 +9648,7 @@ index f24457dc..ec7a2e71 100644 \tcode{integral_constant}. Otherwise, they have no member \tcode{value}. -@@ -534,7 +534,7 @@ template struct tuple_element; +@@ -563,7 +563,7 @@ template struct tuple_element; Let \tcode{TE} denote \tcode{tuple_element_t} of the cv-unqualified type \tcode{T}. Then specializations of each of the two templates meet @@ -9818,7 +9657,7 @@ index f24457dc..ec7a2e71 100644 with a member typedef \tcode{type} that names the following type: \begin{itemize} \item for the first specialization, \tcode{add_volatile_t}, and -@@ -574,7 +574,7 @@ template struct variant_size; +@@ -603,7 +603,7 @@ template struct variant_size; Let \tcode{VS} denote \tcode{variant_size} of the cv-unqualified type \tcode{T}. Then specializations of each of the two templates meet @@ -9827,7 +9666,7 @@ index f24457dc..ec7a2e71 100644 with a base characteristic of \tcode{integral_constant}. \end{itemdescr} -@@ -588,7 +588,7 @@ template struct variant_alternative; +@@ -617,7 +617,7 @@ template struct variant_alternative; Let \tcode{VA} denote \tcode{variant_alternative} of the cv-unqualified type \tcode{T}. Then specializations of each of the two templates meet @@ -9837,7 +9676,7 @@ index f24457dc..ec7a2e71 100644 \begin{itemize} \item for the first specialization, \tcode{add_volatile_t}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index 855d3823..072fd94a 100644 +index b2222efe..b27ba881 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -1681,10 +1681,10 @@ An \tcode{fpos} type specifies file position information. @@ -9872,7 +9711,7 @@ index 855d3823..072fd94a 100644 In addition, the expressions shown in \tref{fpos.operations} are valid and have the indicated semantics. In that table, -@@ -12940,7 +12940,7 @@ namespace std { +@@ -12945,7 +12945,7 @@ namespace std { \pnum \tcode{Allocator} shall meet @@ -9881,7 +9720,7 @@ index 855d3823..072fd94a 100644 \pnum \begin{example} -@@ -13233,7 +13233,7 @@ unless \tcode{EcharT} is one of the encoded character types. +@@ -13238,7 +13238,7 @@ unless \tcode{EcharT} is one of the encoded character types. \pnum Template parameters named \tcode{InputIterator} shall meet the @@ -9890,7 +9729,7 @@ index 855d3823..072fd94a 100644 have a value type that is one of the encoded character types. \pnum -@@ -13247,7 +13247,7 @@ they are not included as permitted types. +@@ -13252,7 +13252,7 @@ they are not included as permitted types. \pnum Template parameters named \tcode{Allocator} shall meet @@ -9899,7 +9738,7 @@ index 855d3823..072fd94a 100644 \rSec2[fs.filesystem.syn]{Header \tcode{} synopsis} -@@ -14060,7 +14060,7 @@ shall be one of: +@@ -14065,7 +14065,7 @@ shall be one of: \item \tcode{basic_string_view}. A function argument \tcode{const Source\&} \tcode{source} shall have an effective range \range{source.begin()}{source.end()}. @@ -9908,7 +9747,7 @@ index 855d3823..072fd94a 100644 The value type shall be an encoded character type. A function argument \tcode{const Source\&} \tcode{source} shall have an effective range \range{source}{end} where \tcode{end} is the first -@@ -16540,7 +16540,7 @@ namespace std::filesystem { +@@ -16545,7 +16545,7 @@ namespace std::filesystem { \pnum \tcode{directory_iterator} meets the @@ -9918,10 +9757,10 @@ index 855d3823..072fd94a 100644 \pnum If an iterator of type \tcode{directory_iterator} reports an error or diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 7515eb42..84c8322c 100644 +index ffeb3db1..07d67a8c 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex -@@ -1770,7 +1770,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1809,7 +1809,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9930,7 +9769,7 @@ index 7515eb42..84c8322c 100644 {p{1in}p{4.15in}} \topline \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep -@@ -1797,7 +1797,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1836,7 +1836,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9939,7 +9778,7 @@ index 7515eb42..84c8322c 100644 {p{1in}p{1in}p{1in}p{1.9in}} \topline \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Return value} & \hdstyle{Post-condition} \\ \capsep -@@ -1811,7 +1811,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1850,7 +1850,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. \tcode{u.\~T()} & All resources owned by \tcode{u} are reclaimed, no exception is propagated. \\ \rowsep \multicolumn{2}{|l|}{ \begin{tailnote} @@ -9948,7 +9787,7 @@ index 7515eb42..84c8322c 100644 \end{tailnote} } \\ \end{oldconcepttable} -@@ -1890,7 +1890,7 @@ void value_swap(T&& t, U&& u) { +@@ -1929,7 +1929,7 @@ void value_swap(T&& t, U&& u) { // for rvalues and lvalues } @@ -9957,7 +9796,7 @@ index 7515eb42..84c8322c 100644 template void lv_swap(T& t1, T& t2) { using std::swap; -@@ -1927,9 +1927,9 @@ int main() { +@@ -1966,9 +1966,9 @@ int main() { A \oldconcept{NullablePointer} type is a pointer-like type that supports null values. A type \tcode{P} meets the \oldconcept{\-Nullable\-Pointer} requirements if \begin{itemize} @@ -9970,7 +9809,7 @@ index 7515eb42..84c8322c 100644 \item the expressions shown in \tref{cpp17.nullablepointer} are valid and have the indicated semantics, and -@@ -2005,8 +2005,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. +@@ -2044,8 +2044,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. A type \tcode{H} meets the \defnoldconcept{Hash} requirements if \begin{itemize} \item it is a function object type\iref{function.objects}, @@ -9981,7 +9820,7 @@ index 7515eb42..84c8322c 100644 \item the expressions shown in \tref{cpp17.hash} are valid and have the indicated semantics. \end{itemize} -@@ -2690,7 +2690,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2729,7 +2729,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be copied when the client container is copy-assigned; if so, \tcode{X} shall meet @@ -9990,7 +9829,7 @@ index 7515eb42..84c8322c 100644 the copy operation shall not throw exceptions. \pnum -@@ -2712,7 +2712,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2751,7 +2751,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be moved when the client container is move-assigned; if so, \tcode{X} shall meet @@ -9999,7 +9838,7 @@ index 7515eb42..84c8322c 100644 the move operation shall not throw exceptions. \pnum -@@ -2734,7 +2734,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2773,7 +2773,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be swapped when the client container is swapped; if so, @@ -10008,7 +9847,7 @@ index 7515eb42..84c8322c 100644 the \tcode{swap} operation shall not throw exceptions. \pnum -@@ -2764,7 +2764,7 @@ Default: \tcode{is_empty::type} +@@ -2803,7 +2803,7 @@ Default: \tcode{is_empty::type} \pnum An allocator type \tcode{X} shall meet the @@ -10017,7 +9856,7 @@ index 7515eb42..84c8322c 100644 The \tcode{XX::pointer}, \tcode{XX::const_pointer}, \tcode{XX::void_pointer}, and \tcode{XX::const_void_pointer} types shall meet the \oldconcept{Nullable\-Pointer} requirements (\tref{cpp17.nullablepointer}). -@@ -2772,7 +2772,7 @@ No constructor, +@@ -2811,7 +2811,7 @@ No constructor, comparison operator function, copy operation, move operation, or swap operation on these pointer types shall exit via an exception. \tcode{XX::pointer} and \tcode{XX::const_pointer} shall also meet the requirements for @@ -10027,10 +9866,10 @@ index 7515eb42..84c8322c 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index dc8df77d..0b36bff3 100644 +index 47a0dcbe..cd1d4682 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -977,7 +977,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type +@@ -1005,7 +1005,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type disambiguate constructor and function overloading. Specifically, several types (see \tcode{tuple}~\ref{tuple}) have constructors with \tcode{allocator_arg_t} as the first argument, immediately followed by an argument of a type that meets the @@ -10039,7 +9878,7 @@ index dc8df77d..0b36bff3 100644 \rSec2[allocator.uses]{\tcode{uses_allocator}} -@@ -992,7 +992,7 @@ template struct uses_allocator; +@@ -1020,7 +1020,7 @@ template struct uses_allocator; \pnum \remarks Automatically detects whether \tcode{T} has a nested \tcode{allocator_type} that @@ -10048,7 +9887,7 @@ index dc8df77d..0b36bff3 100644 requirements\iref{meta.rqmts}. The implementation shall provide a definition that is derived from \tcode{true_type} if the \grammarterm{qualified-id} \tcode{T::allocator_type} is valid and denotes a type\iref{temp.deduct} and -@@ -1917,8 +1917,8 @@ deleter before such replacement is considered completed. +@@ -1945,8 +1945,8 @@ deleter before such replacement is considered completed. Each object of a type \tcode{U} instantiated from the \tcode{unique_ptr} template specified in \ref{unique.ptr} has the strict ownership semantics, specified above, of a unique pointer. In partial satisfaction of these semantics, each such \tcode{U} @@ -10059,7 +9898,7 @@ index dc8df77d..0b36bff3 100644 The template parameter \tcode{T} of \tcode{unique_ptr} may be an incomplete type. \pnum -@@ -2097,7 +2097,7 @@ pointer as appropriate for that deleter. +@@ -2133,7 +2133,7 @@ pointer as appropriate for that deleter. \pnum If the deleter's type \tcode{D} is not a reference type, \tcode{D} shall meet @@ -10068,7 +9907,7 @@ index dc8df77d..0b36bff3 100644 \pnum If the \grammarterm{qualified-id} \tcode{remove_reference_t::pointer} is valid and denotes a -@@ -2105,7 +2105,7 @@ type\iref{temp.deduct}, then \tcode{unique_ptr::pointer} shall be a synonym for \tcode{remove_reference_t::pointer}. Otherwise \tcode{unique_ptr::pointer} shall be a synonym for \tcode{element_type*}. The type \tcode{unique_ptr::pointer} shall @@ -10077,7 +9916,7 @@ index dc8df77d..0b36bff3 100644 \pnum \begin{example} -@@ -2131,7 +2131,7 @@ constexpr unique_ptr(nullptr_t) noexcept; +@@ -2167,7 +2167,7 @@ constexpr unique_ptr(nullptr_t) noexcept; \pnum \expects @@ -10086,7 +9925,7 @@ index dc8df77d..0b36bff3 100644 and that construction does not throw an exception. \pnum -@@ -2158,7 +2158,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; +@@ -2194,7 +2194,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; \pnum \expects @@ -10095,7 +9934,7 @@ index dc8df77d..0b36bff3 100644 and that construction does not throw an exception. \pnum -@@ -2187,10 +2187,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex +@@ -2223,10 +2223,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex \pnum \expects For the first constructor, if \tcode{D} is not a reference type, @@ -10108,7 +9947,7 @@ index dc8df77d..0b36bff3 100644 such construction does not exit via an exception. \pnum -@@ -2215,8 +2215,8 @@ the second constructor is defined as deleted. +@@ -2251,8 +2251,8 @@ the second constructor is defined as deleted. \begin{example} \begin{codeblock} D d; @@ -10119,7 +9958,7 @@ index dc8df77d..0b36bff3 100644 unique_ptr p3(new int, d); // \tcode{p3} holds a reference to \tcode{d} unique_ptr p4(new int, D()); // error: rvalue deleter object combined // with reference deleter type -@@ -2237,7 +2237,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; +@@ -2273,7 +2273,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, @@ -10128,7 +9967,7 @@ index dc8df77d..0b36bff3 100644 requirements (\tref{cpp17.moveconstructible}). Construction of the deleter from an rvalue of type \tcode{D} does not -@@ -2346,10 +2346,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; +@@ -2382,10 +2382,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, \tcode{D} meets the @@ -10141,7 +9980,7 @@ index dc8df77d..0b36bff3 100644 requirements and assignment of the deleter from an lvalue of type \tcode{D} does not throw an exception. -@@ -3243,8 +3243,8 @@ namespace std { +@@ -3283,8 +3283,8 @@ namespace std { \end{codeblock} \pnum @@ -10152,7 +9991,7 @@ index dc8df77d..0b36bff3 100644 containers. Specializations of \tcode{shared_ptr} shall be contextually convertible to \tcode{bool}, allowing their use in boolean expressions and declarations in conditions. -@@ -3389,7 +3389,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. +@@ -3429,7 +3429,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. The expression \tcode{d(p)} has well-defined behavior and does not throw exceptions. \tcode{A} meets @@ -10161,7 +10000,7 @@ index dc8df77d..0b36bff3 100644 \pnum \effects -@@ -3906,7 +3906,7 @@ template +@@ -3946,7 +3946,7 @@ template \pnum \expects \tcode{A} meets @@ -10170,7 +10009,7 @@ index dc8df77d..0b36bff3 100644 \pnum \effects -@@ -4560,8 +4560,8 @@ namespace std { +@@ -4602,8 +4602,8 @@ namespace std { \end{codeblock} \pnum @@ -10181,7 +10020,7 @@ index dc8df77d..0b36bff3 100644 containers. The template parameter \tcode{T} of \tcode{weak_ptr} may be an incomplete type. -@@ -5140,7 +5140,7 @@ namespace std { +@@ -5182,7 +5182,7 @@ namespace std { \end{codeblock} \pnum @@ -10190,7 +10029,7 @@ index dc8df77d..0b36bff3 100644 If \tcode{Smart} is a specialization of \tcode{shared_ptr} and \tcode{sizeof...(Args) == 0}, the program is ill-formed. -@@ -5380,7 +5380,7 @@ namespace std { +@@ -5422,7 +5422,7 @@ namespace std { \end{codeblock} \pnum @@ -10200,7 +10039,7 @@ index dc8df77d..0b36bff3 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index 15e641d3..efdc929b 100644 +index f8ed03cb..b6d69967 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -94,12 +94,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -10234,7 +10073,7 @@ index 15e641d3..efdc929b 100644 the arguments to the template \tcode{integral_constant} determined by the requirements for the particular relationship being described. The member names of the base characteristic shall not be hidden and shall be -@@ -283,17 +283,17 @@ namespace std { +@@ -282,17 +282,17 @@ namespace std { template struct add_cv; template @@ -10258,7 +10097,7 @@ index 15e641d3..efdc929b 100644 // \ref{meta.trans.ref}, reference modifications template struct remove_reference; -@@ -301,38 +301,38 @@ namespace std { +@@ -300,38 +300,38 @@ namespace std { template struct add_rvalue_reference; template @@ -10306,7 +10145,7 @@ index 15e641d3..efdc929b 100644 // \ref{meta.trans.other}, other transformations template struct type_identity; -@@ -350,27 +350,27 @@ namespace std { +@@ -349,27 +349,27 @@ namespace std { template struct unwrap_ref_decay; template @@ -10345,7 +10184,7 @@ index 15e641d3..efdc929b 100644 template using @\libglobal{void_t}@ = void; -@@ -381,202 +381,202 @@ namespace std { +@@ -380,200 +380,200 @@ namespace std { // \ref{meta.unary.cat}, primary type categories template @@ -10422,9 +10261,6 @@ index 15e641d3..efdc929b 100644 - constexpr bool @\libglobal{is_volatile_v}@ = is_volatile::value; + constexpr bool @\libglobal{is_volatile_v}@ = @\libglobalref{is_volatile}@::value; template -- constexpr bool @\libglobal{is_trivial_v}@ = is_trivial::value; -+ constexpr bool @\libglobal{is_trivial_v}@ = @\libglobalref{is_trivial}@::value; - template - constexpr bool @\libglobal{is_trivially_copyable_v}@ = is_trivially_copyable::value; + constexpr bool @\libglobal{is_trivially_copyable_v}@ = @\libglobalref{is_trivially_copyable}@::value; template @@ -10644,7 +10480,7 @@ index 15e641d3..efdc929b 100644 // \ref{meta.member}, member relationships template -@@ -628,7 +628,7 @@ properties of a type at compile time. +@@ -625,7 +625,7 @@ properties of a type at compile time. \pnum Each of these templates shall be a @@ -10653,7 +10489,7 @@ index 15e641d3..efdc929b 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is \tcode{true}, otherwise \tcode{false_type}. -@@ -658,17 +658,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. +@@ -655,17 +655,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. \topline \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead @@ -10674,7 +10510,7 @@ index 15e641d3..efdc929b 100644 \tcode{T} is an integral type\iref{basic.fundamental} & \\ \rowsep \indexlibraryglobal{is_floating_point}% \tcode{template}\br -@@ -874,9 +871,8 @@ the cv-qualification is subject to adjustment\iref{expr.type}. +@@ -864,9 +861,8 @@ the cv-qualification is subject to adjustment\iref{expr.type}. \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 @@ -10685,7 +10521,7 @@ index 15e641d3..efdc929b 100644 \tcode{T} is a class type marked with the \grammarterm{class-virt-specifier} \tcode{final}\iref{class.pre}. \begin{tailnote} -@@ -886,9 +882,8 @@ A union is a class type that +@@ -876,9 +872,8 @@ A union is a class type that & If \tcode{T} is a class type, \tcode{T} shall be a complete type. \\ \rowsep @@ -10696,7 +10532,7 @@ index 15e641d3..efdc929b 100644 \tcode{T} is an aggregate type\iref{dcl.init.aggr} & \tcode{T} shall be an array type, a complete type, or \cv~\keyword{void}. \\ \rowsep -@@ -899,16 +894,14 @@ A union is a class type that +@@ -889,16 +884,14 @@ A union is a class type that \tcode{T(-1) < T(0)}; otherwise, \tcode{false} & \\ \rowsep @@ -10715,7 +10551,7 @@ index 15e641d3..efdc929b 100644 \tcode{T} is an array type of known bound\iref{dcl.array} & \\ \rowsep -@@ -1402,7 +1395,7 @@ may be used to query properties of types at compile time. +@@ -1392,7 +1385,7 @@ may be used to query properties of types at compile time. \end{libreqtab2a} \pnum @@ -10724,7 +10560,7 @@ index 15e641d3..efdc929b 100644 base characteristic of \tcode{integral_constant}. \pnum -@@ -1438,7 +1431,7 @@ may be used to query relationships between types at compile time. +@@ -1428,7 +1421,7 @@ may be used to query relationships between types at compile time. \pnum Each of these templates shall be a @@ -10733,7 +10569,7 @@ index 15e641d3..efdc929b 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is true, otherwise \tcode{false_type}. -@@ -1452,7 +1445,7 @@ with a base characteristic of +@@ -1442,7 +1435,7 @@ with a base characteristic of \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead \tcode{template}\br @@ -10742,7 +10578,7 @@ index 15e641d3..efdc929b 100644 \tcode{T} and \tcode{U} name the same type with the same cv-qualifications & \\ \rowsep \indexlibraryglobal{is_base_of}% -@@ -1632,7 +1625,7 @@ type to another following some predefined rule. +@@ -1622,7 +1615,7 @@ type to another following some predefined rule. \pnum Each of the templates in \ref{meta.trans} shall be a @@ -10751,7 +10587,7 @@ index 15e641d3..efdc929b 100644 \rSec3[meta.trans.cv]{Const-volatile modifications} -@@ -1913,16 +1906,16 @@ perform other modifications of a type. +@@ -1903,16 +1896,16 @@ perform other modifications of a type. \tcode{template\br struct \libglobal{remove_cvref};} & The member typedef \tcode{type} denotes @@ -10773,7 +10609,7 @@ index 15e641d3..efdc929b 100644 \begin{tailnote} This behavior is similar to the lvalue-to-rvalue\iref{conv.lval}, array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} -@@ -2002,7 +1995,7 @@ argument passing. +@@ -1992,7 +1985,7 @@ argument passing. \tcode{template} \tcode{struct \libglobal{unwrap_reference};} & If \tcode{T} is @@ -10782,7 +10618,7 @@ index 15e641d3..efdc929b 100644 the member typedef \tcode{type} of \tcode{unwrap_reference} denotes \tcode{X\&}, otherwise \tcode{type} denotes \tcode{T}. \\ \rowsep -@@ -2010,7 +2003,7 @@ argument passing. +@@ -2000,7 +1993,7 @@ argument passing. \tcode{template} \tcode{\libglobal{unwrap_ref_decay};} & The member typedef \tcode{type} of \tcode{unwrap_ref_decay} @@ -10791,7 +10627,7 @@ index 15e641d3..efdc929b 100644 \end{libreqtab2a} \pnum -@@ -2028,7 +2021,7 @@ when the header \tcode{}\iref{functional.syn} is included. +@@ -2018,7 +2011,7 @@ when the header \tcode{}\iref{functional.syn} is included. Let: \begin{itemize} \item \tcode{\placeholdernc{CREF}(A)} be @@ -10800,7 +10636,7 @@ index 15e641d3..efdc929b 100644 \item \tcode{\placeholdernc{XREF}(A)} denote a unary alias template \tcode{T} such that \tcode{T} denotes the same type as \tcode{U} with the addition of \tcode{A}'s cv and reference qualifiers, for a non-reference cv-unqualified -@@ -2053,15 +2046,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: +@@ -2043,15 +2036,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: \placeholdernc{COPYCV}(\brk{}Y, X) \&)} if that type exists and is a reference type. \item Otherwise, let \tcode{C} be @@ -10819,7 +10655,7 @@ index 15e641d3..efdc929b 100644 \tcode{true}, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is \tcode{D}. \item Otherwise, if \tcode{A} is an lvalue reference and \tcode{B} is an rvalue reference, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is -@@ -2360,7 +2353,7 @@ template struct negation : @\seebelow@ { }; +@@ -2350,7 +2343,7 @@ template struct negation : @\seebelow@ { }; The class template \tcode{negation} forms the logical negation of its template type argument. The type \tcode{negation} @@ -10829,10 +10665,10 @@ index 15e641d3..efdc929b 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index 5d9a47f9..8e4ab352 100644 +index d088b19b..dabc36db 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -40,10 +40,10 @@ components are parameterized by the type of information they contain and manipul +@@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul A \Cpp{} program shall instantiate these components only with a numeric type. A \defnadj{numeric}{type} is a cv-unqualified object type \tcode{T} that meets the @@ -10847,7 +10683,7 @@ index 5d9a47f9..8e4ab352 100644 requirements\iref{utility.arg.requirements}. \begin{footnote} In other words, value types. -@@ -2075,8 +2075,8 @@ according to \ref{strings} and \ref{input.output}. +@@ -2078,8 +2078,8 @@ according to \ref{strings} and \ref{input.output}. \pnum \tcode{E} shall meet the @@ -10858,7 +10694,7 @@ index 5d9a47f9..8e4ab352 100644 These operations shall each be of complexity no worse than \bigoh{\text{size of state}}. -@@ -2446,8 +2446,8 @@ according to \ref{strings} and \ref{input.output}. +@@ -2449,8 +2449,8 @@ according to \ref{strings} and \ref{input.output}. \pnum \tcode{D} shall meet the @@ -10869,7 +10705,7 @@ index 5d9a47f9..8e4ab352 100644 \pnum The sequence of numbers -@@ -2478,10 +2478,10 @@ for convenience of exposition only. +@@ -2481,10 +2481,10 @@ for convenience of exposition only. \pnum \tcode{P} shall meet the @@ -10883,7 +10719,7 @@ index 5d9a47f9..8e4ab352 100644 \pnum For each of the constructors of \tcode{D} -@@ -4157,7 +4157,7 @@ template +@@ -4158,7 +4158,7 @@ template \pnum \expects \tcode{InputIterator} meets the @@ -10892,7 +10728,7 @@ index 5d9a47f9..8e4ab352 100644 \pnum \effects -@@ -4184,7 +4184,7 @@ template +@@ -4185,7 +4185,7 @@ template \pnum \expects \tcode{RandomAccessIterator} meets the @@ -10901,7 +10737,7 @@ index 5d9a47f9..8e4ab352 100644 and the requirements of a mutable iterator. \pnum -@@ -4297,7 +4297,7 @@ template +@@ -4298,7 +4298,7 @@ template \pnum \expects \tcode{OutputIterator} meets the @@ -10910,7 +10746,7 @@ index 5d9a47f9..8e4ab352 100644 \pnum \effects -@@ -6290,7 +6290,7 @@ double>} is \tcode{true}. +@@ -6291,7 +6291,7 @@ double>} is \tcode{true}. \pnum \expects \tcode{InputIterator} meets the @@ -10919,7 +10755,7 @@ index 5d9a47f9..8e4ab352 100644 If \tcode{firstW == lastW}, let $n = 1$ and $w_0 = 1$. Otherwise, -@@ -6488,7 +6488,7 @@ are \tcode{true}. +@@ -6489,7 +6489,7 @@ are \tcode{true}. \expects \tcode{InputIteratorB} and \tcode{InputIteratorW} each meet the @@ -10928,7 +10764,7 @@ index 5d9a47f9..8e4ab352 100644 If \tcode{firstB == lastB} or \tcode{++firstB == lastB}, let $n = 1$, -@@ -6723,7 +6723,7 @@ are \tcode{true}. +@@ -6724,7 +6724,7 @@ are \tcode{true}. \expects \tcode{InputIteratorB} and \tcode{InputIteratorW} each meet the @@ -10937,7 +10773,7 @@ index 5d9a47f9..8e4ab352 100644 If \tcode{firstB == lastB} or \tcode{++firstB == lastB}, let $n = 1$, -@@ -9069,12 +9069,12 @@ object refers. +@@ -9070,12 +9070,12 @@ object refers. \pnum In the \tcode{begin} and \tcode{end} function templates that follow, \unspec{1} is a type that meets the requirements of a mutable @@ -10953,10 +10789,10 @@ index 5d9a47f9..8e4ab352 100644 whose \tcode{value_type} is the template parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. diff --git a/source/strings.tex b/source/strings.tex -index 2c930405..a5a3c68c 100644 +index 593a1bd2..6fbe952a 100644 --- a/source/strings.tex +++ b/source/strings.tex -@@ -237,10 +237,10 @@ using state_type = @\seebelow@; +@@ -238,10 +238,10 @@ using state_type = @\seebelow@; \pnum \expects \tcode{state_type} meets the @@ -10971,7 +10807,7 @@ index 2c930405..a5a3c68c 100644 \end{itemdescr} \rSec2[char.traits.specializations]{\tcode{char_traits} specializations} -@@ -925,7 +925,7 @@ using const_iterator = @\impdefx{type of \tcode{basic_string_view::const_iterato +@@ -926,7 +926,7 @@ using const_iterator = @\impdefx{type of \tcode{basic_string_view::const_iterato \pnum A type that meets the requirements of a constant @@ -10981,10 +10817,10 @@ index 2c930405..a5a3c68c 100644 meets the constexpr iterator requirements\iref{iterator.requirements.general}, whose \tcode{value_type} is the template parameter \tcode{charT}. diff --git a/source/support.tex b/source/support.tex -index e9deb268..aef62703 100644 +index 57047ccc..844cea53 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -3562,11 +3562,11 @@ namespace std { +@@ -3597,11 +3597,11 @@ namespace std { \pnum The type \tcode{source_location} meets the @@ -11001,7 +10837,7 @@ index e9deb268..aef62703 100644 requirements\iref{utility.arg.requirements,swappable.requirements}. All of the following conditions are \tcode{true}: \begin{itemize} -@@ -4024,7 +4024,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. +@@ -4061,7 +4061,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. \pnum \tcode{exception_ptr} meets the requirements of @@ -11010,7 +10846,7 @@ index e9deb268..aef62703 100644 \pnum Two non-null values of type \tcode{exception_ptr} are equivalent and compare equal if and -@@ -4221,7 +4221,7 @@ Let \tcode{U} be \tcode{decay_t}. +@@ -4261,7 +4261,7 @@ Let \tcode{U} be \tcode{decay_t}. \pnum \expects @@ -11020,7 +10856,7 @@ index e9deb268..aef62703 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index 74e1953b..156520e0 100644 +index 9eeff045..1da6cb43 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -11083,7 +10919,7 @@ index 74e1953b..156520e0 100644 the following expressions are well-formed, have type \tcode{bool}, and have the specified semantics (\tcode{m} denotes a value of type \tcode{L}, -@@ -4049,7 +4049,7 @@ namespace std { +@@ -4171,7 +4171,7 @@ namespace std { \indexlibraryglobal{atomic}% \pnum The template argument for \tcode{T} shall meet the @@ -11092,7 +10928,7 @@ index 74e1953b..156520e0 100644 The program is ill-formed if any of \begin{itemize} \item \tcode{is_trivially_copyable_v}, -@@ -6526,11 +6526,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, +@@ -6650,11 +6650,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, They meet the requirements set out in \ref{thread.mutex.requirements.mutex}. In this description, \tcode{m} denotes an object of a mutex type. \begin{note} @@ -11106,7 +10942,7 @@ index 74e1953b..156520e0 100644 If initialization of an object of a mutex type fails, an exception of type \tcode{system_error} is thrown. The mutex types are neither copyable nor movable. -@@ -6799,7 +6799,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de +@@ -6923,7 +6923,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de object of an instantiation of \link{\tcode{time_point}}{time.point}. \begin{note} @@ -11115,7 +10951,7 @@ index 74e1953b..156520e0 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -7011,7 +7011,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally +@@ -7135,7 +7135,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally meet the requirements set out below. In this description, \tcode{m} denotes an object of a shared mutex type. \begin{note} @@ -11124,7 +10960,7 @@ index 74e1953b..156520e0 100644 requirements\iref{thread.req.lockable.shared}. \end{note} -@@ -7188,7 +7188,7 @@ meet the requirements set out below. In this description, +@@ -7312,7 +7312,7 @@ meet the requirements set out below. In this description, \tcode{abs_time} denotes an object of an instantiation of \link{\tcode{time_point}}{time.point}. \begin{note} @@ -11133,7 +10969,7 @@ index 74e1953b..156520e0 100644 requirements\iref{thread.req.lockable.shared.timed}. \end{note} -@@ -7398,7 +7398,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable +@@ -7522,7 +7522,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable object throughout the \tcode{lock_guard} object's \deflink{lifetime}{basic.life}. The behavior of a program is undefined if the lockable object referenced by \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} @@ -11142,7 +10978,7 @@ index 74e1953b..156520e0 100644 requirements\iref{thread.req.lockable.basic}. \indexlibraryctor{lock_guard}% -@@ -7477,12 +7477,12 @@ object. +@@ -7601,12 +7601,12 @@ object. If \tcode{sizeof...(MutexTypes)} is one, let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. \tcode{Mutex} @@ -11157,7 +10993,7 @@ index 74e1953b..156520e0 100644 and there is no member \tcode{mutex_type}. \end{itemize} -@@ -7597,17 +7597,17 @@ copyable but are movable. The behavior of a program is undefined if the containe +@@ -7721,17 +7721,17 @@ copyable but are movable. The behavior of a program is undefined if the containe \tcode{pm} is not null and the lockable object pointed to by \tcode{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied @@ -11181,7 +11017,7 @@ index 74e1953b..156520e0 100644 \end{note} \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} -@@ -7657,7 +7657,7 @@ unique_lock(mutex_type& m, try_to_lock_t); +@@ -7781,7 +7781,7 @@ unique_lock(mutex_type& m, try_to_lock_t); \begin{itemdescr} \pnum \expects @@ -11190,7 +11026,7 @@ index 74e1953b..156520e0 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -7699,7 +7699,7 @@ template +@@ -7823,7 +7823,7 @@ template \pnum \expects The supplied \tcode{Mutex} type meets the @@ -11199,7 +11035,7 @@ index 74e1953b..156520e0 100644 \pnum \effects -@@ -7721,7 +7721,7 @@ template +@@ -7845,7 +7845,7 @@ template \begin{itemdescr} \pnum \expects @@ -11208,7 +11044,7 @@ index 74e1953b..156520e0 100644 \pnum \effects -@@ -7817,7 +7817,7 @@ bool try_lock(); +@@ -7941,7 +7941,7 @@ bool try_lock(); \begin{itemdescr} \pnum \expects @@ -11217,7 +11053,7 @@ index 74e1953b..156520e0 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -7856,7 +7856,7 @@ template +@@ -7980,7 +7980,7 @@ template \begin{itemdescr} \pnum \expects @@ -11226,7 +11062,7 @@ index 74e1953b..156520e0 100644 requirements\iref{thread.req.lockable.timed}. \pnum -@@ -7895,7 +7895,7 @@ template +@@ -8019,7 +8019,7 @@ template \begin{itemdescr} \pnum \expects @@ -11235,7 +11071,7 @@ index 74e1953b..156520e0 100644 \pnum \effects -@@ -8088,16 +8088,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type +@@ -8212,16 +8212,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type is undefined if the contained pointer \tcode{pm} is not null and the lockable object pointed to by \tcode{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied @@ -11256,7 +11092,7 @@ index 74e1953b..156520e0 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -8182,7 +8182,7 @@ template +@@ -8306,7 +8306,7 @@ template \begin{itemdescr} \pnum \expects @@ -11265,7 +11101,7 @@ index 74e1953b..156520e0 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8206,7 +8206,7 @@ template +@@ -8330,7 +8330,7 @@ template \begin{itemdescr} \pnum \expects @@ -11274,7 +11110,7 @@ index 74e1953b..156520e0 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8333,7 +8333,7 @@ template +@@ -8457,7 +8457,7 @@ template \begin{itemdescr} \pnum \expects @@ -11283,7 +11119,7 @@ index 74e1953b..156520e0 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8373,7 +8373,7 @@ template +@@ -8497,7 +8497,7 @@ template \begin{itemdescr} \pnum \expects @@ -11292,7 +11128,7 @@ index 74e1953b..156520e0 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8512,7 +8512,7 @@ template int try_lock(L1&, L2&, L3&...); +@@ -8636,7 +8636,7 @@ template int try_lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -11301,7 +11137,7 @@ index 74e1953b..156520e0 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -8541,7 +8541,7 @@ template void lock(L1&, L2&, L3&...); +@@ -8665,7 +8665,7 @@ template void lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -11310,7 +11146,7 @@ index 74e1953b..156520e0 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9207,7 +9207,7 @@ This can happen if the re-locking of the mutex throws an exception. +@@ -9331,7 +9331,7 @@ This can happen if the re-locking of the mutex throws an exception. \pnum In \ref{thread.condition.condvarany}, template arguments for template parameters named \tcode{Lock} @@ -11319,7 +11155,7 @@ index 74e1953b..156520e0 100644 requirements\iref{thread.req.lockable.basic}. \begin{note} All of the standard -@@ -10145,24 +10145,24 @@ execute atomically. +@@ -10269,24 +10269,24 @@ execute atomically. \pnum \tcode{CompletionFunction} shall meet the @@ -11350,7 +11186,7 @@ index 74e1953b..156520e0 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -10663,7 +10663,7 @@ namespace std { +@@ -10787,7 +10787,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -11359,7 +11195,7 @@ index 74e1953b..156520e0 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -10688,7 +10688,7 @@ template +@@ -10812,7 +10812,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -11368,7 +11204,7 @@ index 74e1953b..156520e0 100644 \end{itemdescr} \indexlibraryctor{promise}% -@@ -11009,7 +11009,7 @@ namespace std { +@@ -11133,7 +11133,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -11377,7 +11213,7 @@ index 74e1953b..156520e0 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -11315,7 +11315,7 @@ namespace std { +@@ -11439,7 +11439,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -11386,7 +11222,7 @@ index 74e1953b..156520e0 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -12226,7 +12226,7 @@ the expression \tcode{d(ptr)} is valid. +@@ -12347,7 +12347,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -11395,7 +11231,7 @@ index 74e1953b..156520e0 100644 \pnum If \tcode{D} is trivially copyable, -@@ -12284,7 +12284,7 @@ namespace std { +@@ -12405,7 +12405,7 @@ namespace std { \pnum This class meets the requirements of @@ -11404,7 +11240,7 @@ index 74e1953b..156520e0 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -12432,8 +12432,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -12553,8 +12553,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -11415,7 +11251,7 @@ index 74e1953b..156520e0 100644 \pnum \effects -@@ -12625,7 +12625,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -12746,7 +12746,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -11425,7 +11261,7 @@ index 74e1953b..156520e0 100644 \pnum \tcode{T} may be an incomplete type. diff --git a/source/time.tex b/source/time.tex -index edab6cbc..7dff0095 100644 +index 2ab4949b..12dce5fb 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1039,13 +1039,13 @@ SI definition is a measure of the quality of implementation. @@ -11628,7 +11464,7 @@ index edab6cbc..7dff0095 100644 and has a value type of \tcode{tzdb}. \indexlibrarymember{front}{tzdb_list}% -@@ -11551,7 +11551,7 @@ template<> struct hash; +@@ -11554,7 +11554,7 @@ template<> struct hash; The specializations are enabled\iref{unord.hash}. \begin{note} All the \tcode{hash} specializations listed above meet the @@ -11638,7 +11474,7 @@ index edab6cbc..7dff0095 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index b3214037..a38cb3ed 100644 +index f94c312e..d76ba58d 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -242,9 +242,9 @@ template @@ -11698,7 +11534,7 @@ index b3214037..a38cb3ed 100644 \pnum \begin{note} -@@ -3352,7 +3352,7 @@ member \tcode{val} points to the contained value. +@@ -3351,7 +3351,7 @@ member \tcode{val} points to the contained value. \pnum \tcode{T} shall be a type other than \cv{} \tcode{in_place_t} or \cv{} \tcode{nullopt_t} @@ -11707,7 +11543,7 @@ index b3214037..a38cb3ed 100644 \rSec3[optional.ctor]{Constructors} -@@ -3972,7 +3972,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); +@@ -3971,7 +3971,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11716,7 +11552,7 @@ index b3214037..a38cb3ed 100644 \pnum \effects -@@ -4029,7 +4029,7 @@ using const_iterator = @\impdef@; +@@ -4028,7 +4028,7 @@ using const_iterator = @\impdef@; \pnum These types model \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, @@ -11725,7 +11561,7 @@ index b3214037..a38cb3ed 100644 meet the requirements for constexpr iterators\iref{iterator.requirements.general}, with value type \tcode{remove_cv_t}. The reference type is \tcode{T\&} for \tcode{iterator} and -@@ -4469,7 +4469,7 @@ template constexpr bool operator==(const optional& x, const +@@ -4468,7 +4468,7 @@ template constexpr bool operator==(const optional& x, const The expression \tcode{*x == *y} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11743,7 +11579,7 @@ index b3214037..a38cb3ed 100644 \end{note} \pnum -@@ -5136,7 +5136,7 @@ memory, to allocate the contained value. +@@ -5146,7 +5146,7 @@ is nested within\iref{intro.object} the \pnum All types in \tcode{Types} shall meet @@ -11752,7 +11588,7 @@ index b3214037..a38cb3ed 100644 \pnum A program that instantiates the definition of \tcode{variant} with -@@ -5816,7 +5816,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); +@@ -5826,7 +5826,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11761,7 +11597,7 @@ index b3214037..a38cb3ed 100644 \pnum \effects -@@ -5861,7 +5861,7 @@ template struct variant_size; +@@ -5871,7 +5871,7 @@ template struct variant_size; \begin{itemdescr} \pnum All specializations of \tcode{variant_size} meet the @@ -11770,7 +11606,7 @@ index b3214037..a38cb3ed 100644 with a base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -5874,7 +5874,7 @@ template struct variant_size; +@@ -5884,7 +5884,7 @@ template struct variant_size; \pnum Let \tcode{VS} denote \tcode{variant_size} of the cv-unqualified type \tcode{T}. Then each specialization of the template meets the @@ -11779,7 +11615,7 @@ index b3214037..a38cb3ed 100644 base characteristic of \tcode{integral_constant}. \end{itemdescr} -@@ -5894,7 +5894,7 @@ template struct variant_alternative; +@@ -5904,7 +5904,7 @@ template struct variant_alternative; \pnum Let \tcode{VA} denote \tcode{variant_alternative} of the cv-unqualified type \tcode{T}. Then each specialization of the template @@ -11788,7 +11624,7 @@ index b3214037..a38cb3ed 100644 member typedef \tcode{type} that names the type \tcode{add_const_t}. \end{itemdescr} -@@ -6620,7 +6620,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. +@@ -6630,7 +6630,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. \pnum \expects @@ -11797,7 +11633,7 @@ index b3214037..a38cb3ed 100644 \pnum \effects -@@ -6648,7 +6648,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -6658,7 +6658,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11806,7 +11642,7 @@ index b3214037..a38cb3ed 100644 \pnum \effects -@@ -6681,7 +6681,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -6691,7 +6691,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11815,7 +11651,7 @@ index b3214037..a38cb3ed 100644 \pnum \effects -@@ -6766,7 +6766,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -6776,7 +6776,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11824,7 +11660,7 @@ index b3214037..a38cb3ed 100644 \pnum \effects -@@ -6801,7 +6801,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -6811,7 +6811,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11833,7 +11669,7 @@ index b3214037..a38cb3ed 100644 \pnum \effects -@@ -6845,7 +6845,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -6855,7 +6855,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11842,7 +11678,7 @@ index b3214037..a38cb3ed 100644 \pnum \effects -@@ -7549,9 +7549,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -7557,9 +7557,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum When \tcode{T} is not \cv{} \tcode{void}, it shall meet @@ -11854,7 +11690,7 @@ index b3214037..a38cb3ed 100644 \rSec3[expected.object.cons]{Constructors} -@@ -8788,7 +8788,7 @@ template friend constexpr bool operator==(const expected& x, const T2& +@@ -8797,7 +8797,7 @@ template friend constexpr bool operator==(const expected& x, const T2& The expression \tcode{*x == v} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11863,7 +11699,7 @@ index b3214037..a38cb3ed 100644 \end{note} \pnum -@@ -8926,7 +8926,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -8934,7 +8934,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum \tcode{E} shall meet the requirements of @@ -11872,7 +11708,7 @@ index b3214037..a38cb3ed 100644 \rSec3[expected.void.cons]{Constructors} -@@ -10955,8 +10955,8 @@ is ill-formed. +@@ -10961,8 +10961,8 @@ is ill-formed. \indextext{call wrapper}% \indextext{call wrapper!simple}% \indextext{call wrapper!forwarding}% @@ -11883,7 +11719,7 @@ index b3214037..a38cb3ed 100644 An \defn{argument forwarding call wrapper} is a call wrapper that can be called with an arbitrary argument list and delivers the arguments to the target object as references. -@@ -10996,7 +10996,7 @@ with references as described in the corresponding forwarding steps. +@@ -11002,7 +11002,7 @@ with references as described in the corresponding forwarding steps. \pnum \label{term.simple.call.wrapper}% A \defn{simple call wrapper} is a perfect forwarding call wrapper that meets @@ -11892,7 +11728,7 @@ index b3214037..a38cb3ed 100644 and whose copy constructor, move constructor, and assignment operators are constexpr functions that do not throw exceptions. -@@ -11099,7 +11099,7 @@ namespace std { +@@ -11105,7 +11105,7 @@ namespace std { \end{codeblock} \pnum @@ -11901,7 +11737,7 @@ index b3214037..a38cb3ed 100644 around a reference to an object or function of type \tcode{T}. \pnum -@@ -12553,7 +12553,7 @@ is \tcode{true}. +@@ -12559,7 +12559,7 @@ is \tcode{true}. \pnum \expects @@ -11910,7 +11746,7 @@ index b3214037..a38cb3ed 100644 \pnum \returns -@@ -12639,10 +12639,10 @@ is \tcode{true}. +@@ -12645,10 +12645,10 @@ is \tcode{true}. \pnum \expects @@ -11923,7 +11759,7 @@ index b3214037..a38cb3ed 100644 \pnum \returns -@@ -12708,7 +12708,7 @@ then \tcode{f != nullptr} is \tcode{true}. +@@ -12714,7 +12714,7 @@ then \tcode{f != nullptr} is \tcode{true}. \pnum \expects For each $\tcode{T}_i$ in \tcode{BoundArgs}, @@ -11932,7 +11768,7 @@ index b3214037..a38cb3ed 100644 \pnum \returns -@@ -12753,7 +12753,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. +@@ -12759,7 +12759,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. \pnum Specializations of the \tcode{is_bind_expression} template shall meet @@ -11941,7 +11777,7 @@ index b3214037..a38cb3ed 100644 provides a definition that has a base characteristic of \tcode{true_type} if \tcode{T} is a type returned from \tcode{bind}, otherwise it has a base characteristic of \tcode{false_type}. -@@ -12789,7 +12789,7 @@ The function template \tcode{bind} uses +@@ -12795,7 +12795,7 @@ The function template \tcode{bind} uses \pnum Specializations of the \tcode{is_placeholder} template shall meet @@ -11950,7 +11786,7 @@ index b3214037..a38cb3ed 100644 provides a definition that has the base characteristic of \tcode{integral_constant} if \tcode{T} is the type of \tcode{std::placeholders::_\placeholder{J}}, otherwise it has a -@@ -12839,7 +12839,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> +@@ -12845,7 +12845,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> \pnum \expects \tcode{FD} and each $\tcode{TD}_i$ meet @@ -11959,7 +11795,7 @@ index b3214037..a38cb3ed 100644 \tcode{\placeholdernc{INVOKE}(fd, $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc$, $\tcode{w}_N$)}\iref{func.require} is a valid expression for some values $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc{}$, $\tcode{w}_N$, where -@@ -12875,8 +12875,8 @@ the state entities of \tcode{g}. +@@ -12881,8 +12881,8 @@ the state entities of \tcode{g}. \pnum \begin{note} If all of \tcode{FD} and $\tcode{TD}_i$ meet @@ -11970,7 +11806,7 @@ index b3214037..a38cb3ed 100644 \end{note} \end{itemdescr} -@@ -12947,13 +12947,13 @@ The number \tcode{\placeholder{M}} of placeholders is +@@ -12953,13 +12953,13 @@ The number \tcode{\placeholder{M}} of placeholders is \impldef{number of placeholders for bind expressions}. \pnum @@ -11987,7 +11823,7 @@ index b3214037..a38cb3ed 100644 but if so, their copy assignment operators are constexpr functions that do not throw exceptions. -@@ -13234,7 +13234,7 @@ Let \tcode{FD} be \tcode{decay_t}. +@@ -13240,7 +13240,7 @@ Let \tcode{FD} be \tcode{decay_t}. \pnum \expects @@ -11996,7 +11832,7 @@ index b3214037..a38cb3ed 100644 \pnum \ensures -@@ -13660,9 +13660,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -13666,9 +13666,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -12008,7 +11844,7 @@ index b3214037..a38cb3ed 100644 \pnum \ensures -@@ -13712,9 +13712,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -13718,9 +13718,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -12020,7 +11856,7 @@ index b3214037..a38cb3ed 100644 \pnum \ensures -@@ -13754,9 +13754,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -13760,9 +13760,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -12032,7 +11868,7 @@ index b3214037..a38cb3ed 100644 \pnum \ensures -@@ -14078,8 +14078,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14084,8 +14084,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -12043,7 +11879,7 @@ index b3214037..a38cb3ed 100644 \pnum \ensures -@@ -14134,8 +14134,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14140,8 +14140,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -12054,7 +11890,7 @@ index b3214037..a38cb3ed 100644 \pnum \ensures -@@ -14180,8 +14180,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14186,8 +14186,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -12065,7 +11901,7 @@ index b3214037..a38cb3ed 100644 \pnum \ensures -@@ -14696,7 +14696,7 @@ provided to the function call operator. +@@ -14702,7 +14702,7 @@ provided to the function call operator. \pnum Each specialization of a class template specified in \ref{func.search} @@ -12074,7 +11910,7 @@ index b3214037..a38cb3ed 100644 Template parameters named \begin{itemize} \item \tcode{ForwardIterator}, -@@ -14710,7 +14710,7 @@ Template parameters named +@@ -14716,7 +14716,7 @@ Template parameters named of templates specified in \ref{func.search} shall meet the same requirements and semantics as specified in \ref{algorithms.general}. @@ -12083,7 +11919,7 @@ index b3214037..a38cb3ed 100644 requirements (\tref{cpp17.hash}). \pnum -@@ -14819,9 +14819,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, +@@ -14825,9 +14825,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, \pnum \expects The value type of \tcode{RandomAccessIterator1} meets @@ -12096,7 +11932,7 @@ index b3214037..a38cb3ed 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -14920,8 +14920,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, +@@ -14926,8 +14926,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, \begin{itemdescr} \pnum \expects @@ -12107,7 +11943,7 @@ index b3214037..a38cb3ed 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -14994,7 +14994,7 @@ as the default hash function. +@@ -15000,7 +15000,7 @@ as the default hash function. Each specialization of \tcode{hash} is either enabled or disabled, as described below. \begin{note} @@ -12116,7 +11952,7 @@ index b3214037..a38cb3ed 100644 disabled specializations do not. \end{note} Each header that declares the template \tcode{hash} -@@ -15021,17 +15021,17 @@ Disabled specializations of \tcode{hash} +@@ -15027,17 +15027,17 @@ Disabled specializations of \tcode{hash} are not function object types\iref{function.objects}. \begin{note} This means that the specialization of \tcode{hash} exists, but @@ -12140,13 +11976,13 @@ index b3214037..a38cb3ed 100644 also \tcode{true}, where \tcode{h} is an object of type \tcode{hash} and \tcode{k1} and \tcode{k2} are objects of type \tcode{Key}; -- -2.34.1 +2.43.0 -From 15d495cd3d62ecddc4a24377ecd22078c5f0fbd5 Mon Sep 17 00:00:00 2001 +From 3cac311726c7092d17b87d4cca22ada684482fa7 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 -Subject: [PATCH 13/14] Remove awkward \linebreaks. +Subject: [PATCH 12/13] Remove awkward \linebreaks. --- source/algorithms.tex | 2 +- @@ -12160,10 +11996,10 @@ Subject: [PATCH 13/14] Remove awkward \linebreaks. 8 files changed, 63 insertions(+), 64 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 8442cb43..b6b8cdf1 100644 +index 47082ed4..b492c24b 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -5602,7 +5602,7 @@ Let: +@@ -5583,7 +5583,7 @@ Let: \tcode{invoke(op, invoke(proj, *(first1 + (i - result))))} for unary transforms defined in namespace \tcode{ranges}; \item @@ -12173,10 +12009,10 @@ index 8442cb43..b6b8cdf1 100644 \end{itemize} \end{itemize} diff --git a/source/containers.tex b/source/containers.tex -index e36e8c06..335461f1 100644 +index 16a3e133..09c8fe9c 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -2373,8 +2373,7 @@ calling \tcode{ator_traits::template rebind_traits::dealloc +@@ -2372,8 +2372,7 @@ calling \tcode{ator_traits::template rebind_traits::dealloc Assigns \tcode{nh.ptr_} to \tcode{ptr_}. \item If \tcode{!alloc\textunderscore} or \tcode{ator_traits::propagate_on_container_move_assignment::value} @@ -12186,7 +12022,7 @@ index e36e8c06..335461f1 100644 \item Assigns \keyword{nullptr} to \tcode{nh.ptr_} and assigns \tcode{nullopt} to -@@ -7389,14 +7388,14 @@ template +@@ -7391,14 +7390,14 @@ template \pnum \expects \tcode{T} is \oldconcept{EmplaceConstructible} into \tcode{forward_list} @@ -12203,7 +12039,7 @@ index e36e8c06..335461f1 100644 \pnum \returns -@@ -9418,7 +9417,7 @@ template +@@ -9417,7 +9416,7 @@ template \pnum The expression \tcode{\exposid{is-vector-bool-reference}} is \tcode{true} @@ -12212,7 +12048,7 @@ index e36e8c06..335461f1 100644 for some type \tcode{Alloc} and \tcode{vector} is not a program-defined specialization. \end{itemdescr} -@@ -10809,7 +10808,7 @@ there is no effect. +@@ -10810,7 +10809,7 @@ there is no effect. Otherwise, let \tcode{r} be \tcode{equal_range(k)}. Constructs an object \tcode{u} of type \tcode{value_type} with \tcode{piecewise_construct, forward_as_tuple(std::forward(k)), @@ -12221,16 +12057,16 @@ index e36e8c06..335461f1 100644 If \tcode{equal_range(u.first) == r} is \tcode{false}, the behavior is undefined. Inserts \tcode{u} into \tcode{*this}. -@@ -16266,7 +16265,7 @@ template +@@ -16267,7 +16266,7 @@ template \pnum \effects Equivalent to \tcode{flat_map(s, key_cont, mapped_cont)} and -\tcode{flat_map(s, key_cont, \linebreak{}mapped_cont, comp)}, respectively, +\tcode{flat_map(s, key_cont, mapped_cont, comp)}, respectively, - except that \tcode{c.keys} and \tcode{c.values} are constructed + except that \tcode{\exposid{c}.keys} and \tcode{\exposid{c}.values} are constructed with uses-allocator construction\iref{allocator.uses.construction}. -@@ -16449,7 +16448,7 @@ template pair emplace(Args&&... args); +@@ -16450,7 +16449,7 @@ template pair emplace(Args&&... args); \pnum \effects Initializes an object \tcode{t} of type \tcode{pair} @@ -12239,7 +12075,7 @@ index e36e8c06..335461f1 100644 if the map already contains an element whose key is equivalent to \tcode{t.first}, \tcode{*this} is unchanged. -@@ -16726,7 +16725,7 @@ template +@@ -16727,7 +16726,7 @@ template \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -12248,7 +12084,7 @@ index e36e8c06..335461f1 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -16781,7 +16780,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. +@@ -16782,7 +16781,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -12257,13 +12093,13 @@ index e36e8c06..335461f1 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -17386,14 +17385,14 @@ template +@@ -17387,14 +17386,14 @@ template \pnum \effects Equivalent to \tcode{flat_multimap(key_cont, mapped_cont)} and -\tcode{flat_multimap(key_cont, \linebreak{}mapped_cont, comp)}, respectively, +\tcode{flat_multimap(key_cont, mapped_cont, comp)}, respectively, - except that \tcode{c.keys} and \tcode{c.values} are constructed + except that \tcode{\exposid{c}.keys} and \tcode{\exposid{c}.values} are constructed with uses-allocator construction\iref{allocator.uses.construction}. \pnum @@ -12274,7 +12110,7 @@ index e36e8c06..335461f1 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -21915,7 +21914,7 @@ is representable as a value of type \tcode{index_type.} +@@ -21920,7 +21919,7 @@ is representable as a value of type \tcode{index_type.} \item If \exposid{rank_} is greater than one, then the product of @@ -12283,7 +12119,7 @@ index e36e8c06..335461f1 100644 all values \tcode{ext.extent($k$)} with $k$ in the range of \range{1}{\exposid{rank_}} is representable as a value of type \tcode{index_type}. -@@ -21994,7 +21993,7 @@ template +@@ -21999,7 +21998,7 @@ template \item If \exposid{rank_} is greater than \tcode{1} and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -12292,7 +12128,7 @@ index e36e8c06..335461f1 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(0))) -@@ -22061,7 +22060,7 @@ is \tcode{true}. +@@ -22066,7 +22065,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -12301,7 +12137,7 @@ index e36e8c06..335461f1 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(0))) -@@ -22459,7 +22458,7 @@ Implementations should not store this value +@@ -22464,7 +22463,7 @@ Implementations should not store this value if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. \begin{note} Using \tcode{extents} @@ -12310,7 +12146,7 @@ index e36e8c06..335461f1 100644 would achieve this. \end{note} \end{itemdescr} -@@ -22542,13 +22541,13 @@ is representable as a value of type \tcode{index_type}. +@@ -22547,13 +22546,13 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -12326,7 +12162,7 @@ index e36e8c06..335461f1 100644 \end{itemize} \pnum -@@ -22621,7 +22620,7 @@ template +@@ -22626,7 +22625,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -12335,7 +12171,7 @@ index e36e8c06..335461f1 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -22689,7 +22688,7 @@ is \tcode{true}. +@@ -22694,7 +22693,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -12344,7 +12180,7 @@ index e36e8c06..335461f1 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) -@@ -24090,7 +24089,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, +@@ -24284,7 +24283,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, \item \tcode{stride(k) * \exposid{de-ice}($s_k$.stride)} if $S_k$ is a specialization of \tcode{strided_slice} and @@ -12353,7 +12189,7 @@ index e36e8c06..335461f1 100644 \item otherwise, \tcode{stride($k$)}. \end{itemize} -@@ -24495,11 +24494,11 @@ is well-formed when treated as an unevaluated operand. +@@ -24682,11 +24681,11 @@ is well-formed when treated as an unevaluated operand. \begin{itemize} \item \tcode{decltype(submdspan_mapping(src.mapping(), slices...))} @@ -12367,7 +12203,7 @@ index e36e8c06..335461f1 100644 is \tcode{true}. \item -@@ -24529,11 +24528,11 @@ all of the following are \tcode{true}: +@@ -24716,11 +24715,11 @@ all of the following are \tcode{true}: \item $0 \le \tcode{\exposid{first_}(slices...)}$ $\le \tcode{\exposid{last_}<$k$>(src.extents(), slices...)}$ @@ -12382,10 +12218,10 @@ index e36e8c06..335461f1 100644 \item diff --git a/source/exec.tex b/source/exec.tex -index a7168c10..69cc7492 100644 +index e8eaf162..c62dc64d 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -2801,7 +2801,7 @@ except that \tcode{sch} is evaluated only once. +@@ -2823,7 +2823,7 @@ except that \tcode{sch} is evaluated only once. Let \tcode{out_sndr} and \tcode{env} be subexpressions such that \tcode{OutSndr} is \tcode{decltype((out_sndr))}. If \tcode{\exposconcept{sender-for}} is \tcode{false}, @@ -12394,7 +12230,7 @@ index a7168c10..69cc7492 100644 \tcode{starts_on.transform_sender(out_sndr, env)} are ill-formed; otherwise \begin{itemize} \item -@@ -3154,7 +3154,7 @@ except that \tcode{sndr} is evaluated only once. +@@ -3175,7 +3175,7 @@ except that \tcode{sndr} is evaluated only once. \pnum Let \tcode{out_sndr} and \tcode{env} be subexpressions, let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and @@ -12403,7 +12239,7 @@ index a7168c10..69cc7492 100644 If \tcode{\exposconcept{sender-for}} is \tcode{false}, then the expressions \tcode{on.transform_env(out_sndr, env)} and \tcode{on.transform_sender(out_sndr, env)} are ill-formed. -@@ -3316,7 +3316,7 @@ Let the expression \exposid{then-cpo} be one of +@@ -3337,7 +3337,7 @@ Let the expression \exposid{then-cpo} be one of For subexpressions \tcode{sndr} and \tcode{f}, if \tcode{decltype((sndr))} does not satisfy \libconcept{sender}, or \tcode{decltype((f))} does not satisfy \exposconcept{movable-value}, @@ -12412,7 +12248,7 @@ index a7168c10..69cc7492 100644 \pnum Otherwise, -@@ -3485,7 +3485,7 @@ to the \tcode{completion_signatures} specialization named by +@@ -3518,7 +3518,7 @@ to the \tcode{completion_signatures} specialization named by Let \tcode{LetSigs} be a pack of those types in \tcode{Sigs} with a return type of \tcode{\exposid{decayed-typeof}<\exposid{set-cpo}>}. Let \exposid{as-tuple} be an alias template @@ -12421,7 +12257,7 @@ index a7168c10..69cc7492 100644 the type \tcode{\exposid{decayed-tuple}}. Then \tcode{args_variant_t} denotes the type \tcode{variant...>} -@@ -3540,7 +3540,7 @@ is initialized with a callable object equivalent to the following: +@@ -3573,7 +3573,7 @@ is initialized with a callable object equivalent to the following: Let \tcode{sndr} and \tcode{env} be subexpressions, and let \tcode{Sndr} be \tcode{decltype((sndr))}. If @@ -12430,7 +12266,7 @@ index a7168c10..69cc7492 100644 is \tcode{false}, then the expression \tcode{\exposid{let-cpo}.transform_env(sndr, env)} is ill-formed. -@@ -4287,7 +4287,7 @@ try { +@@ -4330,7 +4330,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -12439,7 +12275,7 @@ index a7168c10..69cc7492 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -4600,7 +4600,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. +@@ -4643,7 +4643,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. \pnum For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. @@ -12448,7 +12284,7 @@ index a7168c10..69cc7492 100644 is \tcode{false}, the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: -@@ -4671,7 +4671,7 @@ is \tcode{true}, where $e$ is the \tcode{ap\-ply_sender} expression above. +@@ -4714,7 +4714,7 @@ is \tcode{true}, where $e$ is the \tcode{ap\-ply_sender} expression above. \pnum If \tcode{\exposconcept{callable}} is \tcode{false}, @@ -12457,7 +12293,7 @@ index a7168c10..69cc7492 100644 Otherwise, it is equivalent to: \begin{codeblock} using result_type = @\exposid{sync-wait-with-variant-result-type}@; -@@ -4914,7 +4914,7 @@ Let \tcode{Vs} be a pack of the types in the \exposid{type-list} named by +@@ -4955,7 +4955,7 @@ Let \tcode{Vs} be a pack of the types in the \exposid{type-list} named by Let \tcode{Es} be a pack of the types in the \exposid{type-list} named by \tcode{\exposid{gather-signatures}}, where \exposid{error-list} is an alias template @@ -12467,10 +12303,10 @@ index a7168c10..69cc7492 100644 \pnum diff --git a/source/memory.tex b/source/memory.tex -index 0b36bff3..4d61ce25 100644 +index cd1d4682..8aa5bb6c 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1075,7 +1075,7 @@ A \tcode{tuple} value determined as follows: +@@ -1103,7 +1103,7 @@ A \tcode{tuple} value determined as follows: \begin{itemize} \item If \tcode{uses_allocator_v, Alloc>} is \tcode{false} and @@ -12479,8 +12315,8 @@ index 0b36bff3..4d61ce25 100644 return \tcode{forward_as_tuple(std::forward(args)...)}. \item Otherwise, if \tcode{uses_allocator_v, Alloc>} is \tcode{true} and -@@ -3996,7 +3996,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje - such that its \tcode{value_type} is \tcode{remove_cv_t}. +@@ -4036,7 +4036,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje + the allocator \tcode{a} passed to \tcode{allocate_shared}. \item When a (sub)object of non-array type \tcode{U} is initialized by - \tcode{make_shared_for_overwrite} or\linebreak % avoid Overfull @@ -12488,7 +12324,7 @@ index 0b36bff3..4d61ce25 100644 \tcode{allocate_shared_for_overwrite}, it is initialized via the expression \tcode{::new(pv) U}, where \tcode{pv} has type \tcode{void*} and -@@ -5229,7 +5229,7 @@ if (p) { +@@ -5271,7 +5271,7 @@ if (p) { \end{codeblock} if the expression \tcode{s.reset(static_cast(p), std::forward(args)...)} @@ -12498,10 +12334,10 @@ index 0b36bff3..4d61ce25 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index efdc929b..20cefd6c 100644 +index b6d69967..7968d98f 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -2154,7 +2154,7 @@ present as follows: +@@ -2144,7 +2144,7 @@ present as follows: \item Let \tcode{R} be \tcode{\placeholdernc{COMMON-REF}(T1, T2)}. If \tcode{T1} and \tcode{T2} are reference types, \tcode{R} is well-formed, and @@ -12511,10 +12347,10 @@ index efdc929b..20cefd6c 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index 8e4ab352..f07cb636 100644 +index dabc36db..2c1ccbc9 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -13688,7 +13688,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. +@@ -13731,7 +13731,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -12523,7 +12359,7 @@ index 8e4ab352..f07cb636 100644 \pnum \returns -@@ -13894,7 +13894,7 @@ template +@@ -13937,7 +13937,7 @@ template \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -12533,10 +12369,10 @@ index 8e4ab352..f07cb636 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 7f69027e..f585d4db 100644 +index 831ed4b8..f42e3511 100644 --- a/source/ranges.tex +++ b/source/ranges.tex -@@ -3525,7 +3525,7 @@ constexpr explicit repeat_view(piecewise_construct_t, +@@ -3532,7 +3532,7 @@ constexpr explicit repeat_view(piecewise_construct_t, Initializes \exposid{value_} with \tcode{make_from_tuple(std::move(value_args))} and @@ -12545,7 +12381,7 @@ index 7f69027e..f585d4db 100644 \tcode{make_from_tuple(std::move(bound_args))}. The behavior is undefined if \tcode{Bound} is not \tcode{unreachable_sentinel_t} and -@@ -5741,7 +5741,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} +@@ -5748,7 +5748,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} that models \libconcept{random_access_range} and \libconcept{sized_range}, then \tcode{iota_view(*ranges::begin(E), @@ -12554,7 +12390,7 @@ index 7f69027e..f585d4db 100644 except that \tcode{E} is evaluated only once. \item -@@ -6199,7 +6199,7 @@ if \tcode{T} is +@@ -6206,7 +6206,7 @@ if \tcode{T} is a specialization of \tcode{subrange} that models \libconcept{random_access_range} and \libconcept{sized_range}, then @@ -12563,7 +12399,7 @@ index 7f69027e..f585d4db 100644 \exposid{to-unsigned-like}(ranges::distance(E) - std::min(ranges::distance(E), F)))}, except that \tcode{E} and \tcode{F} are each evaluated only once. -@@ -7234,7 +7234,7 @@ Let \placeholder{OUTERC} denote +@@ -7241,7 +7241,7 @@ Let \placeholder{OUTERC} denote let \placeholder{INNERC} denote \tcode{iterator_traits<\exposid{InnerIter}>::iterator_category}, and let \placeholder{PATTERNC} denote @@ -12572,7 +12408,7 @@ index 7f69027e..f585d4db 100644 \item If \begin{codeblock} -@@ -7726,7 +7726,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); +@@ -7733,7 +7733,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -12581,7 +12417,7 @@ index 7f69027e..f585d4db 100644 \end{itemdescr} \rSec3[range.lazy.split.outer]{Class template \tcode{lazy_split_view::\exposid{outer-iterator}}} -@@ -8037,7 +8037,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: +@@ -8044,7 +8044,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: \begin{itemize} \item \tcode{forward_iterator_tag} if @@ -12590,7 +12426,7 @@ index 7f69027e..f585d4db 100644 \tcode{\libconcept{derived_from}}; \item otherwise, \tcode{iterator_traits>::iterator_category}. \end{itemize} -@@ -8255,7 +8255,7 @@ constexpr explicit split_view(R&& r, range_value_t e); +@@ -8262,7 +8262,7 @@ constexpr explicit split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -12599,7 +12435,7 @@ index 7f69027e..f585d4db 100644 \end{itemdescr} \begin{itemdecl} -@@ -8807,7 +8807,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. +@@ -8814,7 +8814,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. \item Otherwise, if \tcode{\exposconcept{all-forward}} is modeled, @@ -12608,7 +12444,7 @@ index 7f69027e..f585d4db 100644 \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} -@@ -8833,14 +8833,14 @@ let \tcode{Cs} denote the pack of types +@@ -8840,14 +8840,14 @@ let \tcode{Cs} denote the pack of types \begin{itemize} \item If @@ -12626,7 +12462,7 @@ index 7f69027e..f585d4db 100644 \item Otherwise, if \tcode{(\libconcept{derived_from} \&\& ...)} -@@ -9292,11 +9292,11 @@ Let +@@ -9299,11 +9299,11 @@ Let %FIXME This is hard to parse. If \tcode{$i_\tcode{x}$ > $i_\tcode{y}$}, let \tcode{$d_\tcode{y}$} be @@ -12641,7 +12477,7 @@ index 7f69027e..f585d4db 100644 for every integer \tcode{$i$} in the range \range{$i_\tcode{y}$ + 1}{$i_\tcode{x}$} if there is any, and -@@ -9339,7 +9339,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul +@@ -9346,7 +9346,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul Let \tcode{$i_\tcode{x}$} denote \tcode{x.\exposid{it_}.index()}, \tcode{$d_\tcode{x}$} be @@ -12650,7 +12486,7 @@ index 7f69027e..f585d4db 100644 Let \tcode{$s$} denote the sum of the sizes of all the ranges \tcode{std::get<$i$>(x.\exposid{parent_}->\exposid{views_})} for every integer \tcode{$i$} in the range -@@ -9496,7 +9496,7 @@ is expression-equivalent to: +@@ -9503,7 +9503,7 @@ is expression-equivalent to: \begin{itemize} \item If \tcode{T} models \libconcept{contiguous_iterator}, @@ -12659,7 +12495,7 @@ index 7f69027e..f585d4db 100644 \item Otherwise, if \tcode{T} models \libconcept{random_access_iterator}, -@@ -13041,7 +13041,7 @@ is defined as follows: +@@ -13048,7 +13048,7 @@ is defined as follows: \item If \tcode{invoke_result_t<\exposid{maybe-const}\&, \exposid{REPEAT}(range_reference_t<\exposid{Base}>, N)...>} @@ -12668,7 +12504,7 @@ index 7f69027e..f585d4db 100644 \tcode{iterator_category} denotes \tcode{input_iterator_tag}. \item Otherwise, let \tcode{C} denote the type -@@ -14052,7 +14052,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ +@@ -14059,7 +14059,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ \effects Initializes \exposid{current_} with \tcode{current}, \exposid{end_} with \tcode{ranges::end(parent->\exposid{base_})}, @@ -12678,7 +12514,7 @@ index 7f69027e..f585d4db 100644 \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index a38cb3ed..bf1c5040 100644 +index d76ba58d..a7cada25 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -2034,7 +2034,7 @@ equals \tcode{tuple_size_v>}, @@ -12699,7 +12535,7 @@ index a38cb3ed..bf1c5040 100644 \end{itemdescr} \indexlibrarymember{common_type}{tuple}% -@@ -4037,7 +4037,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and +@@ -4036,7 +4036,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and \pnum All requirements on container iterators\iref{container.reqmts} apply to @@ -12708,7 +12544,7 @@ index a38cb3ed..bf1c5040 100644 \pnum Any operation that initializes or destroys the contained value of an optional object invalidates all iterators into that object. -@@ -8375,7 +8375,7 @@ constexpr const T&& value() const &&; +@@ -8383,7 +8383,7 @@ constexpr const T&& value() const &&; \pnum \mandates \tcode{is_copy_constructible_v} is \tcode{true} and @@ -12717,7 +12553,7 @@ index a38cb3ed..bf1c5040 100644 \pnum \returns -@@ -14408,7 +14408,7 @@ that models \libconcept{copyable}. +@@ -14414,7 +14414,7 @@ that models \libconcept{copyable}. \pnum Within \ref{func.wrap.ref}, \tcode{\placeholder{call-args}} is an argument pack with elements such that @@ -12727,13 +12563,13 @@ index a38cb3ed..bf1c5040 100644 \rSec4[func.wrap.ref.ctor]{Constructors and assignment operators} -- -2.34.1 +2.43.0 -From 3db40d694c6426296726676483fce56317457278 Mon Sep 17 00:00:00 2001 +From aacacbada0a6b9b59546588233b1ec3c68cd4a4e Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 13:48:14 +0200 -Subject: [PATCH 14/14] Avoid `for\-ward`. +Subject: [PATCH 13/13] Avoid `for\-ward`. Because the 'for' gets highlighted as a keyword. --- @@ -12745,10 +12581,10 @@ Because the 'for' gets highlighted as a keyword. 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index b6b8cdf1..3022b874 100644 +index b492c24b..ee5088c5 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -11890,7 +11890,7 @@ Otherwise, calls \tcode{ranges::generate(std::forward(r), ref(g))}. +@@ -11892,7 +11892,7 @@ Otherwise, calls \tcode{ranges::generate(std::forward(r), ref(g))}. \pnum \remarks The effects of \tcode{generate_random(r, g)} shall be equivalent to @@ -12758,10 +12594,10 @@ index b6b8cdf1..3022b874 100644 This implies that \tcode{g.generate_random(a)} fills \tcode{a} with the same values as produced by invocation of \tcode{g()}. diff --git a/source/containers.tex b/source/containers.tex -index 335461f1..8136d9bd 100644 +index 09c8fe9c..dd4b1974 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -10713,7 +10713,7 @@ template +@@ -10714,7 +10714,7 @@ template \pnum \expects \tcode{value_type} is \oldconcept{EmplaceConstructible} into \tcode{map} @@ -12770,7 +12606,7 @@ index 335461f1..8136d9bd 100644 \tcode{forward_as_tuple(std::forward(args)...)}. \pnum -@@ -10751,7 +10751,7 @@ template +@@ -10752,7 +10752,7 @@ template \pnum \expects \tcode{value_type} is \oldconcept{EmplaceConstructible} into \tcode{map} @@ -12779,7 +12615,7 @@ index 335461f1..8136d9bd 100644 \tcode{forward_as_tuple(std::forward(args)...)}. \pnum -@@ -10848,7 +10848,7 @@ from \tcode{k}, \tcode{std::forward(obj)}. +@@ -10849,7 +10849,7 @@ from \tcode{k}, \tcode{std::forward(obj)}. \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -12788,7 +12624,7 @@ index 335461f1..8136d9bd 100644 Otherwise inserts an object of type \tcode{value_type} constructed with \tcode{k}, \tcode{std::forward(obj)}. -@@ -10882,13 +10882,13 @@ template +@@ -10883,13 +10883,13 @@ template \pnum \expects \tcode{value_type} is \oldconcept{EmplaceConstructible} into \tcode{map} @@ -12804,7 +12640,7 @@ index 335461f1..8136d9bd 100644 Otherwise inserts an object of type \tcode{value_type} constructed with \tcode{std::\brk{}move(k)}, \tcode{std::forward(obj)}. -@@ -12822,13 +12822,13 @@ template +@@ -12823,13 +12823,13 @@ template \pnum \expects \tcode{value_type} is \oldconcept{EmplaceConstructible} into \tcode{unordered_map} @@ -12820,7 +12656,7 @@ index 335461f1..8136d9bd 100644 Otherwise inserts an object of type \tcode{value_type} constructed with \tcode{k}, \tcode{std::forward(obj)}. -@@ -12868,7 +12868,7 @@ from \tcode{std::move(k)}, \tcode{std::\brk{}forward(obj)}. +@@ -12869,7 +12869,7 @@ from \tcode{std::move(k)}, \tcode{std::\brk{}forward(obj)}. \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -12830,10 +12666,10 @@ index 335461f1..8136d9bd 100644 constructed with \tcode{std::\brk{}move(k)}, \tcode{std::forward(obj)}. diff --git a/source/ranges.tex b/source/ranges.tex -index f585d4db..36ee86b6 100644 +index f42e3511..e6113cb8 100644 --- a/source/ranges.tex +++ b/source/ranges.tex -@@ -6649,7 +6649,7 @@ namespace std::ranges { +@@ -6656,7 +6656,7 @@ namespace std::ranges { then \tcode{iterator_concept} denotes \tcode{bidirectio\-nal_iterator_tag}. \item Otherwise, if \exposid{ref-is-glvalue} is \tcode{true} and \exposid{Base} and \tcode{range_reference_t<\exposid{Base}>} @@ -12842,7 +12678,7 @@ index f585d4db..36ee86b6 100644 \tcode{forward_iterator_tag}. \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} -@@ -11271,7 +11271,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. +@@ -11278,7 +11278,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. \item Otherwise, if \tcode{\exposconcept{all-forward}} is modeled, @@ -12852,10 +12688,10 @@ index f585d4db..36ee86b6 100644 Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} diff --git a/source/threads.tex b/source/threads.tex -index 156520e0..e9bac191 100644 +index 1da6cb43..4a81db2a 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -11633,7 +11633,7 @@ the corresponding policies): +@@ -11757,7 +11757,7 @@ the corresponding policies): \begin{itemize} \item If \tcode{launch::async} is set in \tcode{policy}, calls @@ -12864,7 +12700,7 @@ index 156520e0..e9bac191 100644 as if in a new thread of execution represented by a \tcode{thread} object with the values produced by \tcode{auto} being materialized\iref{conv.rval} in the thread that called \tcode{async}. -@@ -11651,7 +11651,7 @@ reference that state. +@@ -11775,7 +11775,7 @@ reference that state. \item If \tcode{launch::deferred} is set in \tcode{policy}, stores \tcode{auto(std::forward(f))} and @@ -12874,10 +12710,10 @@ index 156520e0..e9bac191 100644 a \defnadj{deferred}{function}. Invocation of the deferred function evaluates \tcode{invoke(std::move(g), std::move(xyz))} where \tcode{g} is the stored value of diff --git a/source/utilities.tex b/source/utilities.tex -index bf1c5040..9402c2ac 100644 +index a7cada25..93cf79dd 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -6807,7 +6807,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -6817,7 +6817,7 @@ Let \tcode{VT} be \tcode{decay_t}. \effects Calls \tcode{reset()}. Then direct-non-list-initializes the contained value of type \tcode{VT} @@ -12886,7 +12722,7 @@ index bf1c5040..9402c2ac 100644 \pnum \ensures -@@ -9684,7 +9684,7 @@ is well-formed. +@@ -9692,7 +9692,7 @@ is well-formed. If \tcode{has_value()} is \tcode{true}, \tcode{expected()}; otherwise, an \tcode{expected} object whose \exposid{has_val} member is \tcode{false} and \exposid{unex} member is direct-non-list-initialized with @@ -12895,7 +12731,7 @@ index bf1c5040..9402c2ac 100644 \end{itemdescr} \indexlibrarymember{transform_error}{expected}% -@@ -9712,7 +9712,7 @@ is well-formed. +@@ -9720,7 +9720,7 @@ is well-formed. If \tcode{has_value()} is \tcode{true}, \tcode{expected()}; otherwise, an \tcode{expected} object whose \exposid{has_val} member is \tcode{false} and \exposid{unex} member is direct-non-list-initialized with @@ -12904,7 +12740,7 @@ index bf1c5040..9402c2ac 100644 \end{itemdescr} \rSec3[expected.void.eq]{Equality operators} -@@ -13762,7 +13762,7 @@ if \tcode{is_move_constructible_v} is \tcode{true}, +@@ -13768,7 +13768,7 @@ if \tcode{is_move_constructible_v} is \tcode{true}, \ensures \tcode{*this} has a target object of type \tcode{VT} direct-non-list-initialized with @@ -12913,7 +12749,7 @@ index bf1c5040..9402c2ac 100644 \pnum \throws -@@ -14187,7 +14187,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14193,7 +14193,7 @@ Let \tcode{VT} be \tcode{decay_t}. \ensures \tcode{*this} has a target object of type \tcode{VT} direct-non-list-initialized with @@ -12923,5 +12759,5 @@ index bf1c5040..9402c2ac 100644 \pnum \throws -- -2.34.1 +2.43.0 diff --git a/lastbuild.sig b/lastbuild.sig index 22672d4204..8459609909 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ htmlgen dc6b69f5e4843cb603137f3dda69b9bf3e035d3d -draft bf43925ff0d9e80997918e98989892b4c7bf15f7 -067f63ad698540efab9c0448e7f859e5da5b4958 htmlgen.patch +draft 399b93910d0bb6f5632405ad188e9f4aad0ae99a +954a02d6e4acebcf5580b47e39b2a8dc9310dc0d htmlgen.patch From 3c95b39c33b0b1ebcfd5d3134f423680ef3fea5a Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Mon, 30 Dec 2024 05:42:33 -0600 Subject: [PATCH 06/36] Update --- cxxdraft-htmlgen | 2 +- draft | 2 +- gh-pages | 2 +- lastbuild.sig | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen index dc6b69f5e4..abf1ef0ad7 160000 --- a/cxxdraft-htmlgen +++ b/cxxdraft-htmlgen @@ -1 +1 @@ -Subproject commit dc6b69f5e4843cb603137f3dda69b9bf3e035d3d +Subproject commit abf1ef0ad7a82cac8c331527b3dd80db107c5217 diff --git a/draft b/draft index 399b93910d..896196c8c0 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 399b93910d0bb6f5632405ad188e9f4aad0ae99a +Subproject commit 896196c8c08ed834ef876c29c1182510da9c1a1c diff --git a/gh-pages b/gh-pages index 1ee006e75f..ec0bbba51d 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 1ee006e75f3f9bf6dbb579842d2ff6bea90efbf6 +Subproject commit ec0bbba51d749e59a23338f417f6a76707c4f85d diff --git a/lastbuild.sig b/lastbuild.sig index 8459609909..b02fc3c1d6 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ -htmlgen dc6b69f5e4843cb603137f3dda69b9bf3e035d3d -draft 399b93910d0bb6f5632405ad188e9f4aad0ae99a +htmlgen abf1ef0ad7a82cac8c331527b3dd80db107c5217 +draft 896196c8c08ed834ef876c29c1182510da9c1a1c 954a02d6e4acebcf5580b47e39b2a8dc9310dc0d htmlgen.patch From 4f0a156c5ea3ed2df5beeed8d56a00fb11f6d414 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Sat, 22 Mar 2025 22:18:05 -0500 Subject: [PATCH 07/36] Update --- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 2867 ++++++++++++++++++++++++++----------------------- lastbuild.sig | 4 +- 4 files changed, 1534 insertions(+), 1341 deletions(-) diff --git a/draft b/draft index 896196c8c0..2d59c792e2 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 896196c8c08ed834ef876c29c1182510da9c1a1c +Subproject commit 2d59c792e2a0228e77a0316d39bde9e51f31d146 diff --git a/gh-pages b/gh-pages index ec0bbba51d..189f03c846 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit ec0bbba51d749e59a23338f417f6a76707c4f85d +Subproject commit 189f03c8465b48e74d67d85d97a11ed940076c9c diff --git a/htmlgen.patch b/htmlgen.patch index 24d93f2171..f1c06362ef 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,80 +1,7 @@ -From 7c956d9da18d79fe1ec537169949cf5ffeba5441 Mon Sep 17 00:00:00 2001 -From: Eelis van der Weegen -Date: Wed, 5 Dec 2018 01:09:09 +0100 -Subject: [PATCH 01/13] Use \range where appropriate. - ---- - source/algorithms.tex | 6 +++--- - source/strings.tex | 8 ++++---- - 2 files changed, 7 insertions(+), 7 deletions(-) - -diff --git a/source/algorithms.tex b/source/algorithms.tex -index cea87802..b23120d4 100644 ---- a/source/algorithms.tex -+++ b/source/algorithms.tex -@@ -7565,7 +7565,7 @@ The elements \tcode{e} of \range{first}{last} - are partitioned with respect to the expressions - \tcode{bool(invoke(comp, invoke(proj, e), value))} and - \tcode{!bool(invoke(comp, value, invoke(proj, e)))}. --Also, for all elements \tcode{e} of \tcode{[first, last)}, -+Also, for all elements \tcode{e} of \range{first}{last}, - \tcode{bool(comp(e, value))} implies \tcode{!bool(comp(\brk{}value, e))} - for the overloads in namespace \tcode{std}. - -@@ -7632,7 +7632,7 @@ The elements \tcode{e} of \range{first}{last} - are partitioned with respect to the expressions - \tcode{bool(invoke(comp, invoke(proj, e), value))} and - \tcode{!bool(invoke(comp, value, invoke(proj, e)))}. --Also, for all elements \tcode{e} of \tcode{[first, last)}, -+Also, for all elements \tcode{e} of \range{first}{last}, - \tcode{bool(comp(e, value))} implies \tcode{!bool(comp(\brk{}value, e))} - for the overloads in namespace \tcode{std}. - -@@ -10818,7 +10818,7 @@ move assigns from \tcode{val} to \tcode{acc}. - \pnum - For the overloads with an \tcode{ExecutionPolicy} and a non-empty range, - performs \tcode{*result = *first}. --Then, for every \tcode{d} in \tcode{[1, last - first - 1]}, -+Then, for every \tcode{d} in \crange{1}{last - first - 1}, - performs \tcode{*(result + d) = binary_op(*(first + d), *(first + (d - 1)))}. - - \pnum -diff --git a/source/strings.tex b/source/strings.tex -index 48e2bee8..fde8e62c 100644 ---- a/source/strings.tex -+++ b/source/strings.tex -@@ -152,19 +152,19 @@ the smallest \tcode{i} such that \tcode{X::eq(p[i],charT())} is \tcode{true}. & - the smallest \tcode{q} in \tcode{[p,p+n)} such that - \tcode{X::eq(*q,c)} is \tcode{true}, \tcode{nullptr} otherwise. & linear \\ \rowsep - \tcode{X::move(s,p,n)} & \tcode{X::char_type*} & --for each \tcode{i} in \tcode{[0,n)}, performs \tcode{X::assign(s[i],p[i])}. --Copies correctly even where the ranges \tcode{[p,p+n)} and \tcode{[s,s+n)} overlap.\br \returns \tcode{s}. & linear \\ \rowsep -+for each \tcode{i} in \range{0}{n}, performs \tcode{X::assign(s[i],p[i])}. -+Copies correctly even where the ranges \range{p}{p+n} and \range{s}{s+n} overlap.\br \returns \tcode{s}. & linear \\ \rowsep - \tcode{X::copy(s,p,n)} & \tcode{X::char_type*} & - \expects - The ranges \range{p}{p+n} and \range{s}{s+n} do not overlap.\par - \returns - \tcode{s}.\br - for each \tcode{i} in --\tcode{[0,n)}, performs \tcode{X::assign(s[i],p[i])}. & linear \\ \rowsep -+\range{0}{n}, performs \tcode{X::assign(s[i],p[i])}. & linear \\ \rowsep - \tcode{X::assign(r,d)} & (not used) & - assigns \tcode{r=d}. & constant \\ \rowsep - \tcode{X::assign\-(s,n,c)} & \tcode{X::char_type*} & --for each \tcode{i} in \tcode{[0,n)}, performs -+for each \tcode{i} in \range{0}{n}, performs - \tcode{X::assign(s[i],c)}.\br - \returns - \tcode{s}. & linear \\ \rowsep --- -2.43.0 - - -From 0f9c1c77edea1f2248f2faed5f0620ae55e2128d Mon Sep 17 00:00:00 2001 +From d84bd8c6f3a71b7c7eeae36c6dc29680a0a24c24 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sat, 7 Jan 2017 01:59:05 +0100 -Subject: [PATCH 02/13] [rand.req.eng] Omit superfluous dollar-math wrapping +Subject: [PATCH 01/14] [rand.req.eng] Omit superfluous dollar-math wrapping inside \bigoh. [rejected upstream: 1340] --- @@ -82,10 +9,10 @@ Subject: [PATCH 02/13] [rand.req.eng] Omit superfluous dollar-math wrapping 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/numerics.tex b/source/numerics.tex -index b91b8a06..cdd0c5d4 100644 +index 9a73928f..2686fc9c 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -1937,19 +1937,19 @@ according to \ref{strings} and \ref{input.output}. +@@ -1928,19 +1928,19 @@ according to \ref{strings} and \ref{input.output}. with the same initial state as all other default-constructed engines of type \tcode{E}. @@ -108,7 +35,7 @@ index b91b8a06..cdd0c5d4 100644 \\ \rowsep \tcode{E(q)}% \begin{footnote} -@@ -2024,12 +2024,12 @@ according to \ref{strings} and \ref{input.output}. +@@ -2015,12 +2015,12 @@ according to \ref{strings} and \ref{input.output}. returns \tcode{true} if $S_x = S_y$; else returns \tcode{false}. @@ -119,36 +46,36 @@ index b91b8a06..cdd0c5d4 100644 & \tcode{bool} & \tcode{!(x == y)}. - & \bigoh{$\text{size of state}$} -+ & \bigoh{\text{size of state}} - \\ \rowsep - \tcode{os << x}% - & reference to the type of \tcode{os} -@@ -2044,7 +2044,7 @@ according to \ref{strings} and \ref{input.output}. - by one or more space characters. - - \ensures The \tcode{os.}\textit{fmtflags} and fill character are unchanged. -- & \bigoh{$\text{size of state}$} -+ & \bigoh{\text{size of state}} - \\ \rowsep - \tcode{is >> v}% - & reference to the type of \tcode{is} -@@ -2074,7 +2074,7 @@ according to \ref{strings} and \ref{input.output}. - were respectively the same as those of \tcode{is}. - - \ensures The \tcode{is.}\textit{fmtflags} are unchanged. -- & \bigoh{$\text{size of state}$} + & \bigoh{\text{size of state}} \\ \end{libreqtab4d} +@@ -2066,7 +2066,7 @@ reference to the type of \tcode{os}. + + \pnum + \complexity +-\bigoh{$\text{size of state}$} ++\bigoh{\text{size of state}} + \end{itemdescr} + + \begin{itemdecl} +@@ -2116,7 +2116,7 @@ reference to the type of \tcode{is}. + + \pnum + \complexity +-\bigoh{$\text{size of state}$} ++\bigoh{\text{size of state}} + \end{itemdescr} + + \indextext{requirements!random number engine|)} -- 2.43.0 -From 8872d61bba00a1be2b37fc80112bcda70a47a410 Mon Sep 17 00:00:00 2001 +From 35b7f5e3cd9b89f865726523c22bfa0671e28179 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 -Subject: [PATCH 03/13] Reduce excessive indentation of comments. Helps layout +Subject: [PATCH 02/14] Reduce excessive indentation of comments. Helps layout on smaller (e.g. half-screen) window sizes. --- @@ -157,10 +84,10 @@ Subject: [PATCH 03/13] Reduce excessive indentation of comments. Helps layout 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index c1873fb0..b340a553 100644 +index 733d6699..d118aa0e 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -284,7 +284,7 @@ Given +@@ -296,7 +296,7 @@ Given #include struct C { @@ -169,7 +96,7 @@ index c1873fb0..b340a553 100644 }; int main() { -@@ -2496,23 +2496,23 @@ namespace AB { +@@ -2548,23 +2548,23 @@ namespace AB { void h() { @@ -206,10 +133,10 @@ index c1873fb0..b340a553 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 9589921d..6a3d71e9 100644 +index 7ffe8d6f..955ef6de 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -2601,7 +2601,7 @@ struct s2 { +@@ -2846,7 +2846,7 @@ struct s2 { } auto g() { return [] { @@ -222,43 +149,43 @@ index 9589921d..6a3d71e9 100644 2.43.0 -From b409f5f8ffe44e3377d9b61dd8433074e32f6cc7 Mon Sep 17 00:00:00 2001 +From ede5eb5c52632c9a3969de336d443c3aa58b5aa2 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 -Subject: [PATCH 04/13] Use new link macros. +Subject: [PATCH 03/14] Use new link macros. --- source/algorithms.tex | 4 +- - source/basic.tex | 115 ++++++++-------- + source/basic.tex | 107 ++++++++------- source/classes.tex | 24 ++-- source/compatibility.tex | 4 +- source/concepts.tex | 12 +- source/containers.tex | 50 +++---- source/declarations.tex | 69 +++++----- source/diagnostics.tex | 6 +- - source/exceptions.tex | 44 +++--- - source/expressions.tex | 279 ++++++++++++++++++++------------------- + source/exceptions.tex | 36 +++--- + source/expressions.tex | 272 ++++++++++++++++++++------------------- source/future.tex | 10 +- source/intro.tex | 19 +-- source/iostreams.tex | 74 +++++------ source/iterators.tex | 8 +- source/lex.tex | 10 +- - source/lib-intro.tex | 73 +++++----- + source/lib-intro.tex | 73 +++++------ source/limits.tex | 2 +- source/numerics.tex | 60 ++++----- - source/overloading.tex | 68 +++++----- + source/overloading.tex | 64 ++++----- source/preprocessor.tex | 14 +- source/statements.tex | 30 ++--- source/strings.tex | 8 +- - source/support.tex | 107 +++++++-------- - source/templates.tex | 129 +++++++++--------- - source/threads.tex | 45 +++---- + source/support.tex | 90 ++++++------- + source/templates.tex | 124 +++++++++--------- + source/threads.tex | 45 ++++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 640 insertions(+), 654 deletions(-) + 27 files changed, 618 insertions(+), 627 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index b23120d4..4aa754a4 100644 +index e6356720..54de54ac 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -270,7 +197,7 @@ index b23120d4..4aa754a4 100644 \pnum The following subclauses describe components for -@@ -8106,7 +8106,7 @@ In either case, twice as many projections as comparisons. +@@ -8109,7 +8109,7 @@ In either case, twice as many projections as comparisons. \pnum \remarks @@ -280,21 +207,10 @@ index b23120d4..4aa754a4 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index b340a553..5c594c75 100644 +index d118aa0e..64f93360 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -97,8 +97,8 @@ an object. The variable's name, if any, denotes the reference or object. - - \pnum - A \defnadj{local}{entity} is a variable with --automatic storage duration\iref{basic.stc.auto}, --a structured binding\iref{dcl.struct.bind} -+\link{automatic storage duration}{basic.stc.auto}, -+a \link{structured binding}{dcl.struct.bind} - whose corresponding variable is such an entity, - or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. - -@@ -128,7 +128,7 @@ the same literal suffix identifier. +@@ -139,7 +139,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. \indextext{linkage}% A name used in more than one translation unit can potentially refer to the same entity in these translation units depending on the @@ -303,16 +219,7 @@ index b340a553..5c594c75 100644 translation unit. \rSec1[basic.def]{Declarations and definitions} -@@ -137,7 +137,7 @@ translation unit. - \indextext{declaration!definition versus}% - \indextext{declaration}% - \indextext{declaration!name}% --A declaration\iref{dcl.dcl} may (re)introduce -+A \link{declaration}{dcl.dcl} may (re)introduce - one or more names and/or entities into a translation - unit. - If so, the -@@ -150,7 +150,7 @@ A declaration may also have effects including: +@@ -162,7 +162,7 @@ A declaration may also have effects including: \item a static assertion\iref{dcl.pre}, \item controlling template instantiation\iref{temp.explicit}, \item guiding template argument deduction for constructors\iref{temp.deduct.guide}, @@ -321,7 +228,7 @@ index b340a553..5c594c75 100644 \item nothing (in the case of an \grammarterm{empty-declaration}). \end{itemize} -@@ -234,7 +234,7 @@ that defines a function, a class, a variable, or a static data member, +@@ -246,7 +246,7 @@ that defines a function, a class, a variable, or a static data member, \item it is an explicit instantiation declaration\iref{temp.explicit}, or \item it is @@ -330,7 +237,7 @@ index b340a553..5c594c75 100644 \grammarterm{declaration} is not a definition. \end{itemize} A declaration is said to be a \defn{definition} of each entity that it defines. -@@ -276,7 +276,7 @@ In some circumstances, \Cpp{} implementations implicitly define the +@@ -288,7 +288,7 @@ In some circumstances, \Cpp{} implementations implicitly define the default constructor\iref{class.default.ctor}, copy constructor, move constructor\iref{class.copy.ctor}, copy assignment operator, move assignment operator\iref{class.copy.assign}, @@ -339,7 +246,7 @@ index b340a553..5c594c75 100644 \end{note} \begin{example} Given -@@ -360,7 +360,7 @@ defined as follows: +@@ -372,7 +372,7 @@ defined as follows: \item If $E$ is an \grammarterm{id-expression}\iref{expr.prim.id}, the set contains only $E$. @@ -348,7 +255,7 @@ index b340a553..5c594c75 100644 an array operand, the set contains the potential results of that operand. \item If $E$ is a class member access expression\iref{expr.ref} of the form -@@ -370,16 +370,15 @@ the set contains the potential results of $E_1$. +@@ -382,16 +382,15 @@ the set contains the potential results of $E_1$. \item If $E$ is a class member access expression naming a static data member, the set contains the \grammarterm{id-expression} designating the data member. @@ -369,7 +276,7 @@ index b340a553..5c594c75 100644 contains the potential results of the right operand. \item Otherwise, the set is empty. \end{itemize} -@@ -529,8 +528,8 @@ implicitly-defined +@@ -541,8 +540,8 @@ implicitly-defined copy assignment or move assignment function for another class as specified in~\ref{class.copy.assign}. A constructor for a class is odr-used as specified @@ -380,7 +287,7 @@ index b340a553..5c594c75 100644 \pnum A local entity\iref{basic.pre} -@@ -601,7 +600,7 @@ void h() { +@@ -614,7 +613,7 @@ void h() { \pnum Every program shall contain at least one definition of every function or variable that is odr-used in that program @@ -389,7 +296,7 @@ index b340a553..5c594c75 100644 The definition can appear explicitly in the program, it can be found in the standard or a user-defined library, or (when appropriate) it is implicitly defined (see~\ref{class.default.ctor}, \ref{class.copy.ctor}, -@@ -649,9 +648,9 @@ The rules for declarations and expressions +@@ -662,9 +661,9 @@ The rules for declarations and expressions describe in which contexts complete class types are required. A class type \tcode{T} must be complete if \begin{itemize} @@ -402,7 +309,7 @@ index b340a553..5c594c75 100644 \item \tcode{T} is used as the allocated type or array element type in a \grammarterm{new-expression}\iref{expr.new}, or \item an lvalue-to-rvalue conversion is applied to -@@ -671,10 +670,10 @@ a \keyword{static_cast}\iref{expr.static.cast}, or +@@ -684,7 +683,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or \keyword{sizeof} operator\iref{expr.sizeof} is applied to an operand of type \tcode{T}, or \item a function with a return type or argument type of type \tcode{T} @@ -410,12 +317,8 @@ index b340a553..5c594c75 100644 +is defined\iref{basic.def} or \link{called}{expr.call}, or \item a class with a base class of type \tcode{T} is defined\iref{class.derived}, or --\item an lvalue of type \tcode{T} is assigned to\iref{expr.ass}, or -+\item an lvalue of type \tcode{T} is \link{assigned to}{expr.ass}, or - \item the type \tcode{T} is the subject of an - \keyword{alignof} expression\iref{expr.alignof}, or - \item an \grammarterm{exception-declaration} has type \tcode{T}, reference to -@@ -717,7 +716,7 @@ template specialization\iref{temp.over}, except that a name can refer to + \item an lvalue of type \tcode{T} is assigned to\iref{expr.assign}, or +@@ -730,7 +729,7 @@ template specializations\iref{temp.spec.partial.match}, except that a name can r a non-volatile const object with internal or no linkage if the object \begin{itemize} \item has the same literal type in all definitions of \tcode{D}, @@ -424,16 +327,16 @@ index b340a553..5c594c75 100644 \item is not odr-used in any definition of \tcode{D}, and \item has the same value in all definitions of \tcode{D}, \end{itemize} -@@ -2691,7 +2690,7 @@ only namespace names are considered.% - +@@ -2744,7 +2743,7 @@ only namespace names are considered.% \pnum \indextext{program}% + \indextext{linking}% -A \defn{program} consists of one or more translation units\iref{lex.separate} +A \defn{program} consists of one or more \deflinkx{translation units}{translation unit}{lex.separate} linked together. A translation unit consists of a sequence of declarations. -@@ -2724,7 +2723,7 @@ are attached to the same module. +@@ -2777,7 +2776,7 @@ are attached to the same module. \indextext{linkage!\idxcode{inline} and}% \indextext{\idxcode{inline}!linkage of}% The name of an entity @@ -442,7 +345,7 @@ index b340a553..5c594c75 100644 has internal linkage if it is the name of \begin{itemize} \item -@@ -2765,7 +2764,7 @@ typedef declaration in which the class has the typedef name for linkage +@@ -2818,7 +2817,7 @@ typedef declaration in which the class has the typedef name for linkage purposes\iref{dcl.typedef}; or \item \indextext{enumeration!linkage of}% @@ -451,7 +354,7 @@ index b340a553..5c594c75 100644 in a typedef declaration in which the enumeration has the typedef name for linkage purposes\iref{dcl.typedef}; or \item an unnamed enumeration -@@ -2841,7 +2840,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. +@@ -2894,7 +2893,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. \pnum \indextext{linkage!no}% Names not covered by these rules have no linkage. Moreover, except as @@ -460,7 +363,7 @@ index b340a553..5c594c75 100644 linkage. \pnum -@@ -3163,8 +3162,8 @@ features of the language, such as references and virtual functions, might +@@ -3216,8 +3215,8 @@ features of the language, such as references and virtual functions, might involve additional memory locations that are not accessible to programs but are managed by the implementation. \end{note} @@ -471,7 +374,7 @@ index b340a553..5c594c75 100644 locations without interfering with each other. \pnum -@@ -3208,15 +3207,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but +@@ -3261,15 +3260,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but The constructs in a \Cpp{} program create, destroy, refer to, access, and manipulate objects. An \defn{object} is created @@ -490,7 +393,7 @@ index b340a553..5c594c75 100644 and in its period of destruction\iref{class.cdtor}. \begin{note} -@@ -3346,7 +3345,7 @@ A \defn{potentially-overlapping subobject} is either: +@@ -3399,7 +3398,7 @@ A \defn{potentially-overlapping subobject} is either: \begin{itemize} \item a base class subobject, or \item a non-static data member @@ -499,7 +402,7 @@ index b340a553..5c594c75 100644 \end{itemize} \pnum -@@ -3367,7 +3366,7 @@ Otherwise, the circumstances under which the object has zero size +@@ -3420,7 +3419,7 @@ Otherwise, the circumstances under which the object has zero size are \impldef{which non-standard-layout objects containing no data are considered empty}. \indextext{most derived object!bit-field}% @@ -508,7 +411,7 @@ index b340a553..5c594c75 100644 an object with nonzero size shall occupy one or more bytes of storage, including every byte that is occupied in full or in part -@@ -3932,16 +3931,16 @@ the result of the evaluation is the value so produced but is not erroneous: +@@ -3985,16 +3984,16 @@ the result of the evaluation is the value so produced but is not erroneous: is produced by the evaluation of: \begin{itemize} \item @@ -528,7 +431,7 @@ index b340a553..5c594c75 100644 \end{itemize} then the result of the operation is an indeterminate value or that erroneous value, respectively. -@@ -4132,8 +4131,8 @@ specified in~\ref{class.copy.elision}. +@@ -4185,8 +4184,8 @@ specified in~\ref{class.copy.elision}. \indextext{storage duration!dynamic|(} \pnum @@ -539,7 +442,7 @@ index b340a553..5c594c75 100644 \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -@@ -4302,19 +4301,19 @@ that would match a handler\iref{except.handle} of type +@@ -4350,21 +4349,21 @@ that would match a handler\iref{except.handle} of type \tcode{std::bad_alloc}\iref{bad.alloc}. \pnum @@ -554,19 +457,21 @@ index b340a553..5c594c75 100644 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 --type \tcode{std::type_info}\iref{expr.typeid}, or for an --exception object\iref{except.throw}. -+with \link{static storage duration}{basic.stc.static}, for objects or references -+with \link{thread storage duration}{basic.stc.thread}, for objects of -+type \link{\tcode{std::type_info}}{expr.typeid}, or for an -+\link{exception object}{except.throw}. + 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 type \tcode{std::type_info}\iref{expr.typeid}, ++for objects with \link{static storage duration}{basic.stc.static}, ++for objects or references with \link{thread storage duration}{basic.stc.thread}, ++for objects of type \link{\tcode{std::type_info}}{expr.typeid}, + for an object of type \tcode{std::contracts::contract_violation} + when a contract violation occurs\iref{basic.contract.eval}, or +-for an exception object\iref{except.throw}. ++for an \link{exception object}{except.throw}. \end{note} \rSec4[basic.stc.dynamic.deallocation]{Deallocation functions} -@@ -4778,9 +4777,9 @@ shall be destroyed before +@@ -4848,9 +4847,9 @@ shall be destroyed before impose requirements on implementations regarding the representation of types. There are two kinds of types: fundamental types and compound types. @@ -579,7 +484,7 @@ index b340a553..5c594c75 100644 \end{note} \pnum -@@ -4954,7 +4953,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, +@@ -5024,7 +5023,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, pointer types, pointer-to-member types\iref{basic.compound}, \tcode{std::nullptr_t}, and @@ -588,7 +493,7 @@ index b340a553..5c594c75 100644 types are collectively called \defnadjx{scalar}{types}{type}. \label{term.trivially.copyable.type}% -@@ -4979,7 +4978,7 @@ A type is a \defnadj{literal}{type} if it is: +@@ -5057,7 +5056,7 @@ A type is a \defnadj{literal}{type} if it is: \item a scalar type; or \item a reference type; or \item an array of literal type; or @@ -597,7 +502,7 @@ index b340a553..5c594c75 100644 has all of the following properties: \begin{itemize} \item it has a constexpr destructor\iref{dcl.constexpr}, -@@ -5013,8 +5012,8 @@ will be usable in a constant expression. +@@ -5091,8 +5090,8 @@ will be usable in a constant expression. Two types \cvqual{cv1} \tcode{T1} and \cvqual{cv2} \tcode{T2} are \defnadjx{layout-compatible}{types}{type} if \tcode{T1} and \tcode{T2} are the same type, @@ -608,7 +513,7 @@ index b340a553..5c594c75 100644 \rSec2[basic.fundamental]{Fundamental types} -@@ -5462,7 +5461,7 @@ ordinary pointers to objects or functions. +@@ -5540,7 +5539,7 @@ ordinary pointers to objects or functions. which identify members of a given type within objects of a given class, \ref{dcl.mptr}. Pointers to data members and pointers to member functions are collectively @@ -617,7 +522,7 @@ index b340a553..5c594c75 100644 \end{itemize} \pnum -@@ -5540,7 +5539,7 @@ layout-compatible types shall +@@ -5618,7 +5617,7 @@ layout-compatible types shall have the same value representation and alignment requirements\iref{basic.align}. \begin{note} @@ -626,7 +531,7 @@ index b340a553..5c594c75 100644 representation, but their range of valid values is restricted by the extended alignment requirement. \end{note} -@@ -5855,8 +5854,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. +@@ -5933,8 +5932,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. \indextext{program execution|(} \pnum @@ -637,7 +542,7 @@ index b340a553..5c594c75 100644 block. Such an object exists and retains its last-stored value during the execution of the block and while the block is suspended (by a call of a function, suspension of a coroutine\iref{expr.await}, or receipt of a signal). -@@ -5901,7 +5900,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, +@@ -5979,7 +5978,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, the initialization of the entities captured by copy and the constituent expressions of the \grammarterm{initializer} of the \grammarterm{init-capture}{s}, \item @@ -646,7 +551,7 @@ index b340a553..5c594c75 100644 the constituent expressions of each default argument\iref{dcl.fct.default} used in the call, or \item -@@ -5932,7 +5931,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope +@@ -6010,7 +6009,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope A \defn{full-expression} is \begin{itemize} \item @@ -656,10 +561,10 @@ index b340a553..5c594c75 100644 a \grammarterm{constant-expression}\iref{expr.const}, \item diff --git a/source/classes.tex b/source/classes.tex -index 18838fd6..02b6e630 100644 +index 3a80fc15..5b7a5cbb 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -178,10 +178,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: +@@ -274,10 +274,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: \item has no non-static data members of type non-standard-layout class (or array of such types) or reference, @@ -673,7 +578,7 @@ index 18838fd6..02b6e630 100644 for all non-static data members, \item has no non-standard-layout base classes, -@@ -556,7 +556,7 @@ if it is +@@ -658,7 +658,7 @@ if it is \end{itemize} For any other \grammarterm{member-declaration}, each declared entity @@ -682,7 +587,7 @@ index 18838fd6..02b6e630 100644 is a member of the class, and each such \grammarterm{member-declaration} shall either -@@ -571,7 +571,7 @@ Nested types are classes\iref{class.name,class.nest} and +@@ -673,7 +673,7 @@ Nested types are classes\iref{class.name,class.nest} and enumerations\iref{dcl.enum} declared in the class and arbitrary types declared as members by use of a typedef declaration\iref{dcl.typedef} or \grammarterm{alias-declaration}. @@ -691,7 +596,7 @@ index 18838fd6..02b6e630 100644 are members of the class. \pnum -@@ -586,7 +586,7 @@ Any other data member or member function is a \defnadj{non-static}{member} +@@ -688,7 +688,7 @@ Any other data member or member function is a \defnadj{non-static}{member} \defnadj{non-static}{member function}\iref{class.mfct.non.static}, respectively). \begin{note} A non-static data member of non-reference @@ -700,7 +605,7 @@ index 18838fd6..02b6e630 100644 \end{note} \pnum -@@ -705,9 +705,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali +@@ -808,9 +808,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali The \grammarterm{member-declarator-list} can be omitted only after a \grammarterm{class-specifier} or an \grammarterm{enum-specifier} or in a @@ -712,7 +617,7 @@ index 18838fd6..02b6e630 100644 that is not a friend declaration. \pnum -@@ -810,7 +810,7 @@ unscoped enumeration type; and +@@ -913,7 +913,7 @@ unscoped enumeration type; and \pnum In addition, if class \tcode{T} has a user-declared @@ -721,7 +626,7 @@ index 18838fd6..02b6e630 100644 \tcode{T} shall have a name different from \tcode{T}. \pnum -@@ -860,7 +860,7 @@ non-static data members (in any order) have layout-compatible +@@ -963,7 +963,7 @@ non-static data members (in any order) have layout-compatible types\iref{term.layout.compatible.type}. \pnum @@ -730,7 +635,7 @@ index 18838fd6..02b6e630 100644 of struct type \tcode{T1}, it is permitted to read a non-static data member \tcode{m} of another union member of struct type \tcode{T2} provided \tcode{m} is part of the common initial sequence of \tcode{T1} and \tcode{T2}; -@@ -2134,7 +2134,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation +@@ -2257,7 +2257,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation An array of class type contains several subobjects for each of which the destructor is invoked. \end{note} @@ -739,7 +644,7 @@ index 18838fd6..02b6e630 100644 if it is invoked or as specified in~\ref{expr.new}, \ref{stmt.return}, \ref{dcl.init.aggr}, \ref{class.base.init}, and~\ref{except.throw}. -@@ -6215,7 +6215,7 @@ associated with a \grammarterm{try-block} (if there is one), +@@ -6342,7 +6342,7 @@ associated with a \grammarterm{try-block} (if there is one), the copy-initialization of the exception object can be omitted by constructing $o$ directly into the exception object; @@ -749,10 +654,10 @@ index 18838fd6..02b6e630 100644 corresponding parameter if the meaning of the program will be unchanged except for the execution of a constructor and destructor for the parameter copy object; diff --git a/source/compatibility.tex b/source/compatibility.tex -index 23ba5e4f..83948563 100644 +index fe9d4ce8..1eee7a16 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -1899,8 +1899,8 @@ deallocation functions\iref{expr.new}. +@@ -1948,8 +1948,8 @@ deallocation functions\iref{expr.new}. A conditional expression with a throw expression as its second or third operand keeps the type and value category of the other operand. \rationale @@ -812,10 +717,10 @@ index 4d848e8f..6bd0435e 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index 6f72fc06..6de14bf9 100644 +index aeedcd2c..ebdfaf8d 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -6054,14 +6054,14 @@ namespace std { +@@ -6127,14 +6127,14 @@ namespace std { \indextext{\idxcode{array}!contiguous storage}% The header \libheader{array} defines a class template for storing fixed-size sequences of objects. @@ -832,7 +737,7 @@ index 6f72fc06..6de14bf9 100644 list-initialized with up to \tcode{N} elements whose types are convertible to \tcode{T}. -@@ -6072,8 +6072,8 @@ of a container\iref{container.reqmts} and +@@ -6145,8 +6145,8 @@ of a container\iref{container.reqmts} and of a reversible container\iref{container.rev.reqmts}, except that a default constructed \tcode{array} object is not empty if $\tcode{N} > 0$. @@ -843,7 +748,7 @@ index 6f72fc06..6de14bf9 100644 Descriptions are provided here only for operations on \tcode{array} that are not described in one of these tables and -@@ -6083,13 +6083,13 @@ for operations where there is additional semantic information. +@@ -6156,13 +6156,13 @@ for operations where there is additional semantic information. \tcode{array} is a structural type\iref{term.structural.type} if \tcode{T} is a structural type. Two values \tcode{a1} and \tcode{a2} of type \tcode{array} @@ -859,7 +764,7 @@ index 6f72fc06..6de14bf9 100644 \indexlibraryglobal{array}% \indexlibrarymember{array}{begin}% -@@ -6412,7 +6412,7 @@ namespace std { +@@ -6485,7 +6485,7 @@ namespace std { A \indexlibraryglobal{deque}% \tcode{deque} @@ -868,7 +773,7 @@ index 6f72fc06..6de14bf9 100644 In addition, it supports constant time insert and erase operations at the beginning or the end; insert and erase in the middle take linear time. That is, a deque is especially optimized for pushing and popping elements at the beginning and end. -@@ -7063,7 +7063,7 @@ namespace std { +@@ -7149,7 +7149,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{forward_list} if the allocator meets the @@ -877,7 +782,7 @@ index 6f72fc06..6de14bf9 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{forward_list} is referenced. -@@ -7646,7 +7646,7 @@ predicate. +@@ -7733,7 +7733,7 @@ predicate. \pnum \remarks @@ -886,7 +791,7 @@ index 6f72fc06..6de14bf9 100644 \end{itemdescr} \indexlibrarymember{unique}{forward_list}% -@@ -7751,7 +7751,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( +@@ -7838,7 +7838,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( \pnum \remarks @@ -895,7 +800,7 @@ index 6f72fc06..6de14bf9 100644 \end{itemdescr} \indexlibrarymember{reverse}{forward_list}% -@@ -7845,7 +7845,7 @@ A +@@ -9034,7 +9034,7 @@ A is a sequence container that supports bidirectional iterators and allows constant time insert and erase operations anywhere within the sequence, with storage management handled @@ -904,7 +809,7 @@ index 6f72fc06..6de14bf9 100644 fast random access to list elements is not supported, but many algorithms only need sequential access anyway. -@@ -8014,7 +8014,7 @@ namespace std { +@@ -9210,7 +9210,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{list} if the allocator meets the @@ -913,7 +818,7 @@ index 6f72fc06..6de14bf9 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{list} is referenced. -@@ -8427,7 +8427,7 @@ applications of the corresponding predicate. +@@ -9623,7 +9623,7 @@ applications of the corresponding predicate. \pnum \remarks @@ -922,7 +827,7 @@ index 6f72fc06..6de14bf9 100644 \end{itemdescr} \indexlibrarymember{unique}{list}% -@@ -8551,7 +8551,7 @@ comparisons, where +@@ -9747,7 +9747,7 @@ comparisons, where \pnum \remarks @@ -931,7 +836,7 @@ index 6f72fc06..6de14bf9 100644 \end{itemdescr} \rSec3[list.erasure]{Erasure} -@@ -8656,7 +8656,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, +@@ -9852,7 +9852,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, of a sequence container, including most of the optional sequence container requirements\iref{sequence.reqmts}, and, for an element type other than \tcode{bool}, @@ -940,7 +845,7 @@ index 6f72fc06..6de14bf9 100644 The exceptions are the \tcode{push_front}, \tcode{prepend_range}, \tcode{pop_front}, and \tcode{emplace_front} member functions, which are not provided. Descriptions are provided here only for operations on \tcode{vector} -@@ -8794,7 +8794,7 @@ namespace std { +@@ -9990,7 +9990,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{vector} if the allocator meets the @@ -949,7 +854,7 @@ index 6f72fc06..6de14bf9 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{vector} is referenced. -@@ -9362,7 +9362,7 @@ Unless described below, all operations have the same requirements and +@@ -10582,7 +10582,7 @@ Unless described below, all operations have the same requirements and semantics as the primary \tcode{vector} template, except that operations dealing with the \tcode{bool} value type map to bit values in the container storage and @@ -958,7 +863,7 @@ index 6f72fc06..6de14bf9 100644 is not used to construct these values. \pnum -@@ -14428,9 +14428,9 @@ and +@@ -15657,9 +15657,9 @@ and can be used to instantiate \tcode{queue}. In particular, @@ -970,7 +875,7 @@ index 6f72fc06..6de14bf9 100644 can be used. \begin{codeblock} -@@ -14785,15 +14785,15 @@ and +@@ -16014,15 +16014,15 @@ and can be used to instantiate \tcode{priority_queue}. In particular, @@ -989,7 +894,7 @@ index 6f72fc06..6de14bf9 100644 \begin{codeblock} namespace std { -@@ -15332,10 +15332,10 @@ and +@@ -16567,10 +16567,10 @@ and can be used to instantiate \tcode{stack}. In particular, @@ -1004,7 +909,7 @@ index 6f72fc06..6de14bf9 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index 7cbe7fb5..57271779 100644 +index 24b34f25..8a9850e8 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -513,7 +513,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -1016,7 +921,7 @@ index 7cbe7fb5..57271779 100644 \end{note} \pnum -@@ -783,10 +783,10 @@ an alias template or a template \grammarterm{template-parameter}. +@@ -783,10 +783,10 @@ an alias template or a type template template parameter. A \grammarterm{simple-template-id} that names a class template specialization is a \grammarterm{class-name}\iref{class.name}. If a \grammarterm{typedef-name} is used to identify the subject of an @@ -1068,7 +973,7 @@ index 7cbe7fb5..57271779 100644 and if the type that replaces the placeholder type is not the same in each deduction, the program is ill-formed. -@@ -2018,7 +2017,7 @@ A function declared with a return type that uses a placeholder type shall not +@@ -2032,7 +2031,7 @@ A function declared with a return type that uses a placeholder type shall not be a coroutine\iref{dcl.fct.def.coroutine}. \pnum @@ -1077,7 +982,7 @@ index 7cbe7fb5..57271779 100644 instantiation of an entity declared using a placeholder type, but it also does not prevent that entity from being instantiated as needed to determine its type. -@@ -2130,7 +2129,7 @@ Obtain \tcode{P} from +@@ -2144,7 +2143,7 @@ Obtain \tcode{P} from a new invented type template parameter \tcode{U} or, if the initialization is copy-list-initialization, with \tcode{std::initializer_list}. Deduce a value for \tcode{U} using the rules @@ -1086,7 +991,7 @@ index 7cbe7fb5..57271779 100644 where \tcode{P} is a function template parameter type and the corresponding argument is $E$. -@@ -2229,7 +2228,7 @@ in the \grammarterm{type-specifier-seq} +@@ -2243,7 +2242,7 @@ in the \grammarterm{type-specifier-seq} in the \grammarterm{new-type-id} or \grammarterm{type-id} of a \grammarterm{new-expression}\iref{expr.new}, as the \grammarterm{simple-type-specifier} @@ -1095,7 +1000,7 @@ index 7cbe7fb5..57271779 100644 or as the \grammarterm{type-specifier} in the \grammarterm{parameter-declaration} of a \grammarterm{template-parameter}\iref{temp.param}. -@@ -4370,7 +4369,7 @@ int a; +@@ -4390,7 +4389,7 @@ int a; int f(int a, int b = a); // error: parameter \tcode{a} used as default argument typedef int I; int g(float I, int b = I(2)); // error: parameter \tcode{I} found @@ -1104,7 +1009,7 @@ index 7cbe7fb5..57271779 100644 \end{codeblock} \end{example} A non-static member shall not appear in a default argument unless it appears as -@@ -5747,15 +5746,15 @@ This requires a conversion +@@ -6087,15 +6086,15 @@ This requires a conversion function\iref{class.conv.fct} returning a reference type. \end{footnote} (this conversion is selected by enumerating the applicable conversion @@ -1124,7 +1029,7 @@ index 7cbe7fb5..57271779 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7191,7 +7190,7 @@ the initializer is +@@ -7601,7 +7600,7 @@ the initializer is where \tcode{get} undergoes argument-dependent lookup\iref{basic.lookup.argdep}. In either case, \tcode{get} is interpreted as a \grammarterm{template-id}. \begin{note} @@ -1133,7 +1038,7 @@ index 7cbe7fb5..57271779 100644 \end{note} In either case, \exposid{e} is an lvalue if the type of the entity \exposid{e} is an lvalue reference and an xvalue otherwise. -@@ -7342,7 +7341,7 @@ is not looked up and is introduced by +@@ -7752,7 +7751,7 @@ is not looked up and is introduced by the \grammarterm{enum-specifier} or \grammarterm{opaque-enum-declaration}. If the \grammarterm{enum-head-name} of an \grammarterm{opaque-enum-declaration} contains a \grammarterm{nested-name-specifier}, @@ -1142,7 +1047,7 @@ index 7cbe7fb5..57271779 100644 \pnum \indextext{constant!enumeration}% -@@ -7424,8 +7423,9 @@ If the underlying type is fixed, the type of each enumerator +@@ -7834,8 +7833,9 @@ If the underlying type is fixed, the type of each enumerator prior to the closing brace is the underlying type and the \grammarterm{constant-expression} in the \grammarterm{enumerator-definition} @@ -1154,7 +1059,7 @@ index 7cbe7fb5..57271779 100644 If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as -@@ -7434,8 +7434,9 @@ follows: +@@ -7844,8 +7844,9 @@ follows: \begin{itemize} \item If an initializer is specified for an enumerator, the @@ -1166,7 +1071,7 @@ index 7cbe7fb5..57271779 100644 unscoped enumeration type, the enumerator has the underlying type of that enumeration type, otherwise it has the same type as the expression. -@@ -7507,7 +7508,7 @@ if they have the same underlying type. +@@ -7917,7 +7918,7 @@ if they have the same underlying type. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -1175,7 +1080,7 @@ index 7cbe7fb5..57271779 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -7786,7 +7787,7 @@ appertains to the namespace being defined or extended. +@@ -8196,7 +8197,7 @@ appertains to the namespace being defined or extended. Members of an inline namespace can be used in most respects as though they were members of the innermost enclosing namespace. Specifically, the inline namespace and its enclosing namespace are both added to the set of associated namespaces used in @@ -1184,7 +1089,7 @@ index 7cbe7fb5..57271779 100644 and a \grammarterm{using-directive}\iref{namespace.udir} that names the inline namespace is implicitly inserted into the enclosing namespace as for an unnamed namespace\iref{namespace.unnamed}. Furthermore, each -@@ -8590,7 +8591,7 @@ different language linkages are distinct types even if they are +@@ -9000,7 +9001,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -1193,7 +1098,7 @@ index 7cbe7fb5..57271779 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -8907,16 +8908,16 @@ For each individual attribute, the form of the +@@ -9317,16 +9318,16 @@ For each individual attribute, the form of the \pnum In an \grammarterm{attribute-list}, an ellipsis may appear only if that \grammarterm{attribute}'s specification permits it. An \grammarterm{attribute} followed @@ -1215,7 +1120,7 @@ index 7cbe7fb5..57271779 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9023,7 +9024,7 @@ declaration, the program is ill-formed. +@@ -9433,7 +9434,7 @@ declaration, the program is ill-formed. \pnum An \grammarterm{alignment-specifier} of the form \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same @@ -1224,7 +1129,7 @@ index 7cbe7fb5..57271779 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9283,7 +9284,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9613,7 +9614,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -1234,10 +1139,10 @@ index 7cbe7fb5..57271779 100644 such a statement is a fallthrough statement. No \grammarterm{attribute-argument-clause} shall be present. diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index e421b207..b729a13d 100644 +index 1f5f1ad4..8caccce8 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex -@@ -506,13 +506,13 @@ the current state of \tcode{NDEBUG} each time that +@@ -505,13 +505,13 @@ the current state of \tcode{NDEBUG} each time that \pnum An expression \tcode{assert(E)} @@ -1253,7 +1158,7 @@ index e421b207..b729a13d 100644 is a constant subexpression that evaluates to the value \tcode{true}. \end{itemize} -@@ -1602,7 +1602,7 @@ application program interfaces. +@@ -1526,7 +1526,7 @@ application program interfaces. \pnum \begin{note} If an error represents an out-of-memory condition, implementations are @@ -1263,7 +1168,7 @@ index e421b207..b729a13d 100644 \end{note} \indexlibraryglobal{system_error}% diff --git a/source/exceptions.tex b/source/exceptions.tex -index c14df21e..c5e0e545 100644 +index 79684e4c..12cfcb8d 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -184,7 +184,7 @@ try : i(f(ii)), d(id) { @@ -1293,7 +1198,7 @@ index c14df21e..c5e0e545 100644 \begin{note} No other thread synchronization is implied in exception handling. \end{note} -@@ -321,7 +321,7 @@ the destructor of \tcode{T} is potentially invoked\iref{class.dtor}. +@@ -341,7 +341,7 @@ returns the number of uncaught exceptions in the current thread. \indextext{exception handling!rethrow}% \indextext{rethrow|see{exception handling, rethrow}}% An exception is considered caught when a handler for that exception @@ -1302,19 +1207,16 @@ index c14df21e..c5e0e545 100644 \begin{note} An exception can have active handlers and still be considered uncaught if it is rethrown. -@@ -331,9 +331,9 @@ it is rethrown. - \indextext{exception handling!terminate called@\tcode{terminate} called}% - \indextext{\idxcode{terminate}!called}% +@@ -353,7 +353,7 @@ it is rethrown. If the exception handling mechanism --handling an uncaught exception\iref{except.uncaught} -+handling an \link{uncaught exception}{except.uncaught} + handling an uncaught exception directly invokes a function that exits via an -exception, the function \tcode{std::terminate} is invoked\iref{except.terminate}. +exception, the function \link{\tcode{std::terminate}}{except.terminate} is invoked. \begin{example} \begin{codeblock} struct C { -@@ -470,7 +470,7 @@ Such destruction is sequenced before entering a handler of the +@@ -490,7 +490,7 @@ Such destruction is sequenced before entering a handler of the \pnum \begin{note} If the object was allocated by a \grammarterm{new-expression}\iref{expr.new}, @@ -1323,7 +1225,7 @@ index c14df21e..c5e0e545 100644 if any, is called to free the storage occupied by the object. \end{note} -@@ -535,12 +535,12 @@ that can be converted to \tcode{T} by one or more of +@@ -555,12 +555,12 @@ that can be converted to \tcode{T} by one or more of \begin{itemize} \item% @@ -1339,7 +1241,7 @@ index c14df21e..c5e0e545 100644 \end{itemize} -@@ -677,7 +677,7 @@ Exceptions thrown in destructors of objects with static storage duration or in +@@ -697,7 +697,7 @@ Exceptions thrown in destructors of objects with static storage duration or in constructors of objects associated with non-block variables with static storage duration are not caught by a \grammarterm{function-try-block} on @@ -1348,7 +1250,7 @@ index c14df21e..c5e0e545 100644 Exceptions thrown in destructors of objects with thread storage duration or in constructors of objects associated with non-block variables with thread storage duration are not caught by a \grammarterm{function-try-block} on the initial function of the thread. -@@ -746,7 +746,7 @@ otherwise it has a +@@ -766,7 +766,7 @@ otherwise it has a The exception specification is either defined implicitly, or defined explicitly by using a \grammarterm{noexcept-specifier} @@ -1357,7 +1259,7 @@ index c14df21e..c5e0e545 100644 \begin{bnf} \nontermdef{noexcept-specifier}\br -@@ -786,7 +786,7 @@ in which cases the exception specification +@@ -806,7 +806,7 @@ in which cases the exception specification is as specified below and no other declaration for that function shall have a \grammarterm{noexcept-specifier}. @@ -1366,7 +1268,7 @@ index c14df21e..c5e0e545 100644 a \grammarterm{noexcept-specifier} may be specified, but is not required. If a \grammarterm{noexcept-specifier} is specified -@@ -835,7 +835,7 @@ An expression $E$ is +@@ -855,7 +855,7 @@ An expression $E$ is \defnx{potentially-throwing}{potentially-throwing!expression} if \begin{itemize} \item @@ -1375,7 +1277,7 @@ index c14df21e..c5e0e545 100644 whose \grammarterm{postfix-expression} has a function type, or a pointer-to-function type, -@@ -863,7 +863,7 @@ applied to a pointer to a +@@ -883,7 +883,7 @@ applied to a pointer to a polymorphic class type\iref{expr.typeid}, or \item @@ -1384,7 +1286,7 @@ index c14df21e..c5e0e545 100644 of $E$ is potentially-throwing. \end{itemize} -@@ -916,7 +916,7 @@ the invocation of any assignment operator +@@ -936,7 +936,7 @@ the invocation of any assignment operator in the implicit definition is potentially-throwing. \pnum @@ -1393,26 +1295,20 @@ index c14df21e..c5e0e545 100644 with no explicit \grammarterm{noexcept-specifier} has a non-throwing exception specification. -@@ -1004,8 +1004,8 @@ The function \tcode{std::terminate}\iref{except.terminate} - is used by the exception - handling mechanism for coping with errors related to the exception handling - mechanism itself. The function --\tcode{std::current_exception()}\iref{propagation} and the class --\tcode{std::nested_exception}\iref{except.nested} can be used by a program to -+\link{\tcode{std::current_exception()}}{propagation} and the class -+\link{\tcode{std::nested_exception}}{except.nested} can be used by a program to - capture the currently handled exception. - - \rSec2[except.terminate]{The \tcode{std::terminate} function} -@@ -1031,12 +1031,12 @@ via an exception, or +@@ -1051,9 +1051,9 @@ via an exception, or \item% when the exception handling mechanism cannot find a handler for a thrown exception\iref{except.handle}, or --\item when the search for a handler\iref{except.handle} encounters the -+\item when the search for a \link{handler}{except.handle} encounters the - outermost block of a function --with a non-throwing exception specification\iref{except.spec}, or -+with a non-throwing \link{exception specification}{except.spec}, or +-\item when the search for a handler\iref{except.handle} ++\item when the search for a \link{handler}{except.handle} + exits the function body of a function +-with a non-throwing exception specification\iref{except.spec}, ++with a non-throwing \link{exception specification}{except.spec}, + including when a contract-violation handler + invoked from an evaluation of + a function contract assertion\iref{basic.contract.eval} associated with the function +@@ -1061,7 +1061,7 @@ exits via an exception, + or \item% -when the destruction of an object during stack unwinding\iref{except.ctor} @@ -1420,17 +1316,8 @@ index c14df21e..c5e0e545 100644 terminates by throwing an exception, or \item% -@@ -1133,7 +1133,7 @@ will eventually cause an invocation of the function - - \pnum - An exception is considered uncaught --after completing the initialization of the exception object\iref{except.throw} -+after completing the initialization of the \deflinkx{exception object}{exception handling!exception object}{except.throw} - until completing the activation of a handler for the exception\iref{except.handle}. - \begin{note} - As a consequence, an exception is considered uncaught diff --git a/source/expressions.tex b/source/expressions.tex -index 6a3d71e9..ca32c4fa 100644 +index 955ef6de..b9a8a9ce 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1461,16 +1348,16 @@ index 6a3d71e9..ca32c4fa 100644 }; A&& operator+(A, A); A&& f(); -@@ -269,7 +269,7 @@ created, which might then be promoted\iref{conv.prom}. - Unless otherwise specified\iref{expr.reinterpret.cast, expr.const.cast}, - whenever a prvalue appears as an operand of an operator that - expects a glvalue for that operand, the --temporary materialization conversion\iref{conv.rval} is -+\link{temporary materialization conversion}{conv.rval} is +@@ -268,7 +268,7 @@ Unless otherwise specified\iref{expr.reinterpret.cast, expr.const.cast}, + whenever a prvalue + that is not the result of the lvalue-to-rvalue conversion\iref{conv.lval} + appears as an operand of an operator, +-the temporary materialization conversion\iref{conv.rval} is ++the \link{temporary materialization conversion}{conv.rval} is applied to convert the expression to an xvalue. \pnum -@@ -451,31 +451,31 @@ An unevaluated operand is not evaluated. +@@ -450,31 +450,31 @@ An unevaluated operand is not evaluated. In an unevaluated operand, a non-static class member can be named\iref{expr.prim.id} and naming of objects or functions does not, by itself, require that a definition be provided\iref{basic.def.odr}. @@ -1515,7 +1402,7 @@ index 6a3d71e9..ca32c4fa 100644 \end{itemize} \begin{note} -@@ -613,7 +613,7 @@ descriptions of those operators and contexts. +@@ -612,7 +612,7 @@ descriptions of those operators and contexts. \pnum \indextext{conversion!lvalue-to-rvalue}% \indextext{type!incomplete}% @@ -1524,7 +1411,7 @@ index 6a3d71e9..ca32c4fa 100644 can be converted to a prvalue. \begin{footnote} -@@ -638,18 +638,18 @@ is applied to an expression $E$, and either +@@ -637,18 +637,18 @@ is applied to an expression $E$, and either \begin{itemize} \item $E$ is not potentially evaluated, or \item the evaluation of $E$ results in the evaluation of a member @@ -1549,7 +1436,7 @@ index 6a3d71e9..ca32c4fa 100644 } auto g = f(); int m = g(false); // undefined behavior: access of \tcode{x.n} outside its lifetime -@@ -821,11 +821,11 @@ allowed), a program could inadvertently modify a const object +@@ -820,11 +820,11 @@ allowed), a program could inadvertently modify a const object (as it is done on line \#2). For example, \begin{codeblock} int main() { @@ -1566,7 +1453,7 @@ index 6a3d71e9..ca32c4fa 100644 } \end{codeblock} \end{note} -@@ -1082,7 +1082,7 @@ the derived class object. +@@ -1081,7 +1081,7 @@ the derived class object. \indextext{conversion!pointer-to-member}% \indextext{null member pointer conversion|see{conversion, null member pointer}}% \indextext{constant!null pointer}% @@ -1575,7 +1462,7 @@ index 6a3d71e9..ca32c4fa 100644 pointer-to-member type; the result is the \defnx{null member pointer value}{value!null member pointer} of that type and is distinguishable from any pointer to member not -@@ -1300,7 +1300,7 @@ occur until the complete declarator is known. +@@ -1309,7 +1309,7 @@ occur until the complete declarator is known. \begin{note} In a \grammarterm{trailing-return-type}, the class being defined is not required to be complete @@ -1584,7 +1471,7 @@ index 6a3d71e9..ca32c4fa 100644 Class members declared later are not visible. \begin{example} \begin{codeblock} -@@ -1368,8 +1368,8 @@ meaning, except as otherwise indicated. +@@ -1377,8 +1377,8 @@ meaning, except as otherwise indicated. An \grammarterm{id-expression} is a restricted form of a \grammarterm{primary-expression}. \begin{note} @@ -1595,7 +1482,7 @@ index 6a3d71e9..ca32c4fa 100644 \end{note} \pnum -@@ -1478,7 +1478,7 @@ In each case, the constraints of \tcode{f} are not satisfied. +@@ -1501,7 +1501,7 @@ In each case, the constraints of \tcode{f} are not satisfied. In the declaration of \tcode{p2}, those constraints need to be satisfied even though @@ -1604,16 +1491,16 @@ index 6a3d71e9..ca32c4fa 100644 \end{example} \end{note} -@@ -1573,7 +1573,7 @@ if it is cv-qualified or is a reference type. - \end{note} - The expression is an xvalue if it is move-eligible (see below); - an lvalue --if the entity is a function, variable, structured binding\iref{dcl.struct.bind}, data member, or -+if the entity is a function, variable, \link{structured binding}{dcl.struct.bind}, data member, or +@@ -1704,7 +1704,7 @@ an lvalue + if the entity is a + function, + variable, +-structured binding\iref{dcl.struct.bind}, ++\link{structured binding}{dcl.struct.bind}, + result binding\iref{dcl.contract.res}, + data member, or template parameter object; - and a prvalue otherwise\iref{basic.lval}; - it is a bit-field if the identifier designates a bit-field. -@@ -1866,8 +1866,8 @@ void abssort(float* x, unsigned N) { +@@ -2056,8 +2056,8 @@ void abssort(float* x, unsigned N) { A \grammarterm{lambda-expression} is a prvalue whose result object is called the \defn{closure object}. \begin{note} @@ -1624,7 +1511,7 @@ index 6a3d71e9..ca32c4fa 100644 \end{note} \pnum -@@ -2150,7 +2150,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no +@@ -2386,7 +2386,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no and no explicit object parameter\iref{dcl.fct} whose constraints (if any) are satisfied has a conversion function to pointer to @@ -1633,7 +1520,7 @@ index 6a3d71e9..ca32c4fa 100644 the same parameter and return types as the closure type's function call operator. The conversion is to ``pointer to \keyword{noexcept} function'' if the function call operator -@@ -2259,8 +2259,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} +@@ -2495,8 +2495,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} \pnum The conversion function or conversion function template is public, @@ -1644,7 +1531,7 @@ index 6a3d71e9..ca32c4fa 100644 \begin{example} \begin{codeblock} auto Fwd = [](int (*fp)(int), auto a) { return fp(a); }; -@@ -2316,9 +2316,9 @@ implicitly-declared destructor\iref{class.dtor}. +@@ -2552,9 +2552,9 @@ implicitly-declared destructor\iref{class.dtor}. \pnum A member of a closure type shall not be @@ -1657,7 +1544,7 @@ index 6a3d71e9..ca32c4fa 100644 \rSec3[expr.prim.lambda.capture]{Captures}% -@@ -2877,7 +2877,7 @@ A fold expression is a pack expansion. +@@ -3122,7 +3122,7 @@ A fold expression is a pack expansion. \pnum A \grammarterm{requires-expression} provides a concise way to express requirements on template arguments @@ -1666,7 +1553,7 @@ index 6a3d71e9..ca32c4fa 100644 or by checking properties of types and expressions. \begin{bnf} -@@ -3306,7 +3306,7 @@ or a prvalue of function pointer type. +@@ -3551,7 +3551,7 @@ or a prvalue of function pointer type. If the selected function is non-virtual, or if the \grammarterm{id-expression} in the class member access expression is a \grammarterm{qualified-id}, that function is @@ -1675,7 +1562,7 @@ index 6a3d71e9..ca32c4fa 100644 of the object expression is called; such a call is referred to as a \defnx{virtual function call}{function!virtual function call}. \begin{note} -@@ -3319,8 +3319,8 @@ an object under construction or destruction. +@@ -3564,8 +3564,8 @@ an object under construction or destruction. \pnum \begin{note} @@ -1686,7 +1573,7 @@ index 6a3d71e9..ca32c4fa 100644 the program is ill-formed. No function is implicitly declared by such a call. \end{note} -@@ -3385,7 +3385,7 @@ function, +@@ -3632,7 +3632,7 @@ function, the object expression of the class member access shall be a glvalue and the implicit object parameter of the function\iref{over.match.funcs} is initialized with that glvalue, @@ -1695,7 +1582,7 @@ index 6a3d71e9..ca32c4fa 100644 \begin{note} There is no access or ambiguity checking on this conversion; the access checking and disambiguation are done as part of the (possibly implicit) -@@ -3498,10 +3498,10 @@ pointer parameters. +@@ -3769,10 +3769,10 @@ pointer parameters. \pnum \indextext{declaration!ellipsis in function}% \indextext{parameter list!variable}% @@ -1709,16 +1596,7 @@ index 6a3d71e9..ca32c4fa 100644 \begin{note} This implies that, except where the ellipsis (\tcode{...}) or a function parameter pack is used, a parameter is available for each argument. -@@ -3511,7 +3511,7 @@ parameter pack is used, a parameter is available for each argument. - \indextext{ellipsis!conversion sequence}% - When there is no parameter for a given argument, the argument is passed - in such a way that the receiving function can obtain the value of the --argument by invoking \tcode{va_arg}\iref{support.runtime}. -+argument by invoking \libglobalref{va_arg}. - \begin{note} - This paragraph does not apply to arguments passed to a function parameter pack. - Function parameter packs are expanded during template instantiation\iref{temp.variadic}, -@@ -3519,8 +3519,8 @@ thus each such argument has a corresponding parameter when a function template +@@ -3790,8 +3790,8 @@ thus each such argument has a corresponding parameter when a function template specialization is actually called. \end{note} The @@ -1729,7 +1607,7 @@ index 6a3d71e9..ca32c4fa 100644 performed on the argument expression. An argument that has type \cv{}~\tcode{std::nullptr_t} is converted to type \tcode{\keyword{void}*}\iref{conv.ptr}. -@@ -3535,16 +3535,16 @@ an eligible non-trivial move constructor, or +@@ -3806,16 +3806,16 @@ an eligible non-trivial move constructor, or a non-trivial destructor\iref{class.dtor}, with no corresponding parameter, is conditionally-supported with \impldef{passing argument of class type through ellipsis} semantics. If the argument has @@ -1751,7 +1629,7 @@ index 6a3d71e9..ca32c4fa 100644 \pnum A function call is an lvalue -@@ -3563,8 +3563,8 @@ except as specified in \ref{dcl.type.decltype}. +@@ -3834,8 +3834,8 @@ except as specified in \ref{dcl.type.decltype}. \indextext{type conversion, explicit|see{casting}}% \indextext{conversion explicit type|see{casting}}% \indextext{casting}% @@ -1762,7 +1640,7 @@ index 6a3d71e9..ca32c4fa 100644 by a parenthesized optional \grammarterm{expression-list} or by a \grammarterm{braced-init-list} (the initializer) -@@ -3575,7 +3575,7 @@ If the type is a placeholder +@@ -3846,7 +3846,7 @@ If the type is a placeholder for a deduced class type, it is replaced by the return type of the function selected by overload resolution @@ -1771,7 +1649,7 @@ index 6a3d71e9..ca32c4fa 100644 for the remainder of this subclause. Otherwise, if the type contains a placeholder type, it is replaced by the type -@@ -3912,8 +3912,8 @@ void foo(D* dp) { +@@ -4183,8 +4183,8 @@ void foo(D* dp) { \end{example} \pnum @@ -1782,7 +1660,7 @@ index 6a3d71e9..ca32c4fa 100644 \pnum If \tcode{v} is a null pointer value, the result is a null pointer value. -@@ -3964,9 +3964,9 @@ runtime check \term{fails}. +@@ -4235,9 +4235,9 @@ runtime check \term{fails}. \pnum The value of a failed cast to pointer type is the null pointer value of @@ -1795,7 +1673,7 @@ index 6a3d71e9..ca32c4fa 100644 \indextext{\idxcode{bad_cast}}% \indexlibraryglobal{bad_cast}% -@@ -4055,13 +4055,13 @@ glvalue refers. +@@ -4326,13 +4326,13 @@ glvalue refers. When \keyword{typeid} is applied to an expression other than a glvalue of a polymorphic class type, the result refers to a \tcode{std::type_info} object representing the static type of the expression. @@ -1813,7 +1691,7 @@ index 6a3d71e9..ca32c4fa 100644 \pnum When \keyword{typeid} is applied to a \grammarterm{type-id}, the result -@@ -4156,7 +4156,7 @@ of type \tcode{T1} can be cast to type ``rvalue +@@ -4427,7 +4427,7 @@ of type \tcode{T1} can be cast to type ``rvalue reference to \tcode{T2}'' if \tcode{T2} is reference-compatible with \tcode{T1}\iref{dcl.init.ref}. If the value is not a bit-field, the result refers to the object or the specified base class subobject @@ -1822,7 +1700,7 @@ index 6a3d71e9..ca32c4fa 100644 is applied to the bit-field and the resulting prvalue is used as the operand of the \keyword{static_cast} for the remainder of this subclause. If \tcode{T2} is an inaccessible\iref{class.access} or -@@ -4286,7 +4286,8 @@ Otherwise, the behavior is undefined. +@@ -4557,7 +4557,8 @@ Otherwise, the behavior is undefined. A prvalue of type ``pointer to \cvqual{cv1} \tcode{B}'', where \tcode{B} is a class type, can be converted to a prvalue of type ``pointer to \cvqual{cv2} \tcode{D}'', @@ -1832,7 +1710,7 @@ index 6a3d71e9..ca32c4fa 100644 from \tcode{B}, if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. -@@ -4307,7 +4308,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} +@@ -4578,7 +4579,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} \tcode{T}'' can be converted to a prvalue of type ``pointer to member of \tcode{B} of type \cvqual{cv2} \tcode{T}'', where \tcode{D} is a complete class type and @@ -1841,7 +1719,7 @@ index 6a3d71e9..ca32c4fa 100644 if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. \begin{note} -@@ -4318,7 +4319,7 @@ If no valid standard conversion +@@ -4589,7 +4590,7 @@ If no valid standard conversion from ``pointer to member of \tcode{B} of type \tcode{T}'' to ``pointer to member of \tcode{D} of type \tcode{T}'' exists\iref{conv.mem}, the program is ill-formed. @@ -1850,7 +1728,7 @@ index 6a3d71e9..ca32c4fa 100644 member pointer value of the destination type. If class \tcode{B} contains the original member, or is a base class of the class containing the original member, the resulting pointer to member points -@@ -4341,7 +4342,7 @@ If the original pointer value represents the address +@@ -4612,7 +4613,7 @@ If the original pointer value represents the address then the resulting pointer value\iref{basic.compound} is unspecified. Otherwise, if the original pointer value points to an object \placeholder{a}, and there is an object \placeholder{b} of type similar to \tcode{T} @@ -1859,7 +1737,7 @@ index 6a3d71e9..ca32c4fa 100644 the result is a pointer to \placeholder{b}. Otherwise, the pointer value is unchanged by the conversion. \begin{example} -@@ -4367,8 +4368,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. +@@ -4638,8 +4639,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. If \tcode{T} is an lvalue reference type or an rvalue reference to function type, the result is an lvalue; if \tcode{T} is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the @@ -1870,7 +1748,7 @@ index 6a3d71e9..ca32c4fa 100644 performed on the expression \tcode{v}. Conversions that can be performed explicitly using \keyword{reinterpret_cast} are listed below. No other conversion can be performed explicitly using \keyword{reinterpret_cast}. -@@ -4537,10 +4538,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type +@@ -4808,10 +4809,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type lvalue; if \tcode{T} is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the @@ -1884,7 +1762,7 @@ index 6a3d71e9..ca32c4fa 100644 performed on \tcode{v}, other than as specified below. Conversions that can be performed explicitly using \keyword{const_cast} are listed below. No other conversion shall be -@@ -5074,7 +5075,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside +@@ -5348,7 +5349,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside The \keyword{sizeof} operator yields the number of bytes occupied by a non-potentially-overlapping object of the type of its operand. The operand is either an expression, @@ -1893,7 +1771,7 @@ index 6a3d71e9..ca32c4fa 100644 \grammarterm{type-id}. \indextext{type!incomplete}% The \keyword{sizeof} operator shall not be applied to an expression that -@@ -5129,7 +5130,7 @@ array-to-pointer\iref{conv.array}, and +@@ -5403,7 +5404,7 @@ array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} standard conversions are not applied to the operand of \keyword{sizeof}. If the operand is a prvalue, @@ -1902,7 +1780,7 @@ index 6a3d71e9..ca32c4fa 100644 is applied. \pnum -@@ -5274,7 +5275,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. +@@ -5548,7 +5549,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. \end{bnf} \pnum @@ -1911,7 +1789,7 @@ index 6a3d71e9..ca32c4fa 100644 a placeholder for a deduced class type\iref{dcl.type.class.deduct} appears in the \grammarterm{type-specifier-seq} of a \grammarterm{new-type-id} or -@@ -5402,7 +5403,7 @@ is less than zero; +@@ -5676,7 +5677,7 @@ is less than zero; \item its value is such that the size of the allocated object would exceed the @@ -1920,7 +1798,7 @@ index 6a3d71e9..ca32c4fa 100644 \item the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} and the -@@ -5427,7 +5428,7 @@ is the null pointer value of the required result type; +@@ -5701,7 +5702,7 @@ is the null pointer value of the required result type; \item otherwise, the \grammarterm{new-expression} terminates by throwing an exception of a type that would match a handler\iref{except.handle} of type @@ -1929,7 +1807,7 @@ index 6a3d71e9..ca32c4fa 100644 \end{itemize} \end{itemize} When the value of the \grammarterm{expression} is zero, the allocation -@@ -5478,8 +5479,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( +@@ -5752,8 +5753,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( A \grammarterm{new-expression} may obtain storage for the object by calling an allocation function\iref{basic.stc.dynamic.allocation}. If the \grammarterm{new-expression} terminates by throwing an exception, it @@ -1940,7 +1818,7 @@ index 6a3d71e9..ca32c4fa 100644 is a non-array type, the allocation function's name is \indextext{\idxcode{operator new}}% \indextext{\idxcode{operator delete}}% -@@ -5590,7 +5591,7 @@ the difference between the +@@ -5864,7 +5865,7 @@ the difference between the result of the \grammarterm{new-expression} and the address returned by the allocation function shall be an integral multiple of the strictest fundamental @@ -1949,7 +1827,7 @@ index 6a3d71e9..ca32c4fa 100644 is no greater than the size of the array being created. \begin{note} \indextext{allocation!alignment storage}% -@@ -5681,7 +5682,7 @@ invocation of \keyword{new} to another. +@@ -5955,7 +5956,7 @@ invocation of \keyword{new} to another. \pnum \begin{note} Unless an allocation function has a non-throwing @@ -1958,7 +1836,7 @@ index 6a3d71e9..ca32c4fa 100644 it indicates failure to allocate storage by throwing a \indextext{\idxcode{bad_alloc}}% \indexlibraryglobal{bad_alloc}% -@@ -5827,8 +5828,8 @@ to both the allocation and deallocation functions. +@@ -6101,8 +6102,8 @@ to both the allocation and deallocation functions. \pnum \indextext{expression!\idxcode{delete}}% \indextext{\idxcode{delete}}% @@ -1969,7 +1847,7 @@ index 6a3d71e9..ca32c4fa 100644 \grammarterm{new-expression}. \begin{bnf} -@@ -5931,8 +5932,8 @@ null pointer value, then: +@@ -6205,8 +6206,8 @@ null pointer value, then: \item If the allocation call for the \grammarterm{new-expression} for the object to be deleted was not omitted and the allocation was not extended\iref{expr.new}, the @@ -1980,7 +1858,7 @@ index 6a3d71e9..ca32c4fa 100644 allocation call of the \grammarterm{new-expression} shall be passed as the first argument to the deallocation function. -@@ -6291,8 +6292,8 @@ The result of a \tcode{.*} expression +@@ -6565,8 +6566,8 @@ The result of a \tcode{.*} expression whose second operand is a pointer to a data member is an lvalue if the first operand is an lvalue and an xvalue otherwise. The result of a \tcode{.*} expression whose second operand is a pointer to a member function is a prvalue. @@ -1991,7 +1869,7 @@ index 6a3d71e9..ca32c4fa 100644 \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -6321,7 +6322,7 @@ left-to-right. +@@ -6595,7 +6596,7 @@ left-to-right. \pnum The operands of \tcode{*} and \tcode{/} shall have arithmetic or unscoped enumeration type; the operands of \tcode{\%} shall have integral or unscoped @@ -2000,7 +1878,7 @@ index 6a3d71e9..ca32c4fa 100644 operands and determine the type of the result. \pnum -@@ -6457,7 +6458,7 @@ the behavior is undefined\iref{expr.pre}. +@@ -6731,7 +6732,7 @@ the behavior is undefined\iref{expr.pre}. \pnum For addition or subtraction, if the expressions \tcode{P} or \tcode{Q} have type ``pointer to \cv{}~\tcode{T}'', where \tcode{T} and the array element type @@ -2009,7 +1887,7 @@ index 6a3d71e9..ca32c4fa 100644 \begin{example} \begin{codeblock} int arr[5] = {1, 2, 3, 4, 5}; -@@ -6548,12 +6549,12 @@ and the other is not, the program is ill-formed. +@@ -6822,12 +6823,12 @@ and the other is not, the program is ill-formed. If both operands have arithmetic types, or one operand has integral type and the other operand has unscoped enumeration type, @@ -2024,7 +1902,7 @@ index 6a3d71e9..ca32c4fa 100644 other than from an integral type to a floating-point type, the program is ill-formed. -@@ -6595,13 +6596,13 @@ the other operand is of object pointer or array type, +@@ -6869,13 +6870,13 @@ the other operand is of object pointer or array type, array-to-pointer conversions\iref{conv.array}, pointer conversions\iref{conv.ptr}, and @@ -2040,7 +1918,7 @@ index 6a3d71e9..ca32c4fa 100644 \end{note} In this case, \tcode{p <=> q} is of type \tcode{std::strong_ordering} and -@@ -6690,7 +6691,7 @@ pointer conversions\iref{conv.ptr}, +@@ -6964,7 +6965,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring @@ -2049,7 +1927,7 @@ index 6a3d71e9..ca32c4fa 100644 After conversions, the operands shall have the same type. \pnum -@@ -6775,10 +6776,10 @@ same type after the specified conversions have been applied. +@@ -7049,10 +7050,10 @@ same type after the specified conversions have been applied. \indextext{comparison!pointer}% \indextext{comparison!pointer to function}% If at least one of the converted operands is a pointer, @@ -2064,7 +1942,7 @@ index 6a3d71e9..ca32c4fa 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -6795,7 +6796,8 @@ the result of the comparison is unspecified. +@@ -7069,7 +7070,8 @@ the result of the comparison is unspecified. \item Otherwise, if the pointers are both null, both point to the same \indextext{address}% @@ -2074,7 +1952,7 @@ index 6a3d71e9..ca32c4fa 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -6840,12 +6842,12 @@ bool b1 = (bx == cx); // unspecified +@@ -7114,12 +7116,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -2089,7 +1967,7 @@ index 6a3d71e9..ca32c4fa 100644 indirection with a hypothetical object of the associated class type were performed, otherwise they compare unequal. \begin{example} -@@ -7071,7 +7073,7 @@ Otherwise, if the second and third operand have different types and +@@ -7345,7 +7347,7 @@ Otherwise, if the second and third operand have different types and either has (possibly cv-qualified) class type, or if both are glvalues of the same value category and the same type except for cv-qualification, an attempt is made to @@ -2098,7 +1976,7 @@ index 6a3d71e9..ca32c4fa 100644 each of those operands to the type of the other. \begin{note} Properties such as access, whether an operand is a bit-field, or whether -@@ -7113,9 +7115,9 @@ denotes the cv-qualifiers of \tcode{T1}; +@@ -7387,9 +7389,9 @@ denotes the cv-qualifiers of \tcode{T1}; \item otherwise, the target type is the type that \tcode{E2} would have after applying the @@ -2111,7 +1989,7 @@ index 6a3d71e9..ca32c4fa 100644 standard conversions. \end{itemize} \end{itemize} -@@ -7156,8 +7158,8 @@ are used in place of the original operands for the remainder of this +@@ -7430,8 +7432,8 @@ are used in place of the original operands for the remainder of this subclause. \pnum @@ -2122,7 +2000,7 @@ index 6a3d71e9..ca32c4fa 100644 performed on the second and third operands. After those conversions, one of the following shall hold: -@@ -7166,16 +7168,16 @@ of the following shall hold: +@@ -7440,16 +7442,16 @@ of the following shall hold: that type and the result is copy-initialized using the selected operand. \item The second and third operands have arithmetic or enumeration type; @@ -2145,7 +2023,7 @@ index 6a3d71e9..ca32c4fa 100644 pointer type. \item One or both of the second and third operands have pointer-to-member type; -@@ -7359,7 +7361,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. +@@ -7633,7 +7635,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. \pnum \indextext{assignment!conversion by}% If the right operand is an expression, it is implicitly @@ -2154,7 +2032,7 @@ index 6a3d71e9..ca32c4fa 100644 operand. \pnum -@@ -7373,7 +7375,7 @@ resulting value of the bit-field is +@@ -7647,7 +7649,7 @@ resulting value of the bit-field is An assignment whose left operand is of a volatile-qualified type is deprecated\iref{depr.volatile.type} unless the (possibly parenthesized) assignment is a discarded-value expression or @@ -2163,7 +2041,7 @@ index 6a3d71e9..ca32c4fa 100644 \pnum The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} -@@ -7445,7 +7447,7 @@ The comma operator groups left-to-right. +@@ -7719,7 +7721,7 @@ The comma operator groups left-to-right. A pair of expressions separated by a comma is evaluated left-to-right; the left expression is @@ -2172,7 +2050,7 @@ index 6a3d71e9..ca32c4fa 100644 The left expression is sequenced before the right expression\iref{intro.execution}. \indextext{operator!side effects and comma}% -@@ -7479,7 +7481,7 @@ Certain contexts require expressions that satisfy additional +@@ -7753,7 +7755,7 @@ Certain contexts require expressions that satisfy additional requirements as detailed in this subclause; other contexts have different semantics depending on whether or not an expression satisfies these requirements. Expressions that satisfy these requirements, @@ -2181,7 +2059,7 @@ index 6a3d71e9..ca32c4fa 100644 are called \indexdefn{expression!constant}% \defnx{constant expressions}{constant expression}. -@@ -7653,9 +7655,9 @@ a temporary object of non-volatile const-qualified literal type +@@ -7936,9 +7938,9 @@ a temporary object of non-volatile const-qualified literal type whose lifetime is extended\iref{class.temporary} to that of a variable that is usable in constant expressions at $P$, \item @@ -2193,7 +2071,7 @@ index 6a3d71e9..ca32c4fa 100644 \item a non-mutable subobject of any of the above, or \item -@@ -7746,7 +7748,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. +@@ -8029,7 +8031,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -2202,7 +2080,7 @@ index 6a3d71e9..ca32c4fa 100644 it is applied to \begin{itemize} \item -@@ -7768,7 +7770,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -8051,7 +8053,7 @@ that refers to a non-active member of a union or a subobject thereof; \item an lvalue-to-rvalue conversion that is applied to @@ -2211,7 +2089,7 @@ index 6a3d71e9..ca32c4fa 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -8135,7 +8137,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -8418,7 +8420,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte Such expressions can be used as bit-field lengths\iref{class.bit}, as enumerator initializers if the underlying type is not fixed\iref{dcl.enum}, @@ -2220,19 +2098,7 @@ index 6a3d71e9..ca32c4fa 100644 \end{note} \pnum -@@ -8185,9 +8187,8 @@ and where the reference binding (if any) binds directly. - Such expressions can be used in \keyword{new} - expressions\iref{expr.new}, as case expressions\iref{stmt.switch}, - as enumerator initializers if the underlying type is --fixed\iref{dcl.enum}, as array bounds\iref{dcl.array}, and --as non-type template --arguments\iref{temp.arg}. -+\deflinkx{fixed}{type!underlying!fixed}{dcl.enum}, as \link{array}{dcl.array} bounds, and -+as non-type \link{template arguments}{temp.arg}. - \end{note} - \indextext{contextually converted constant expression of type \tcode{bool}|see{conversion, contextual}}% - \indextext{conversion!contextual to constant expression of type \tcode{bool}}% -@@ -8444,7 +8445,7 @@ if it is: +@@ -8739,7 +8741,7 @@ if it is: a manifestly constant-evaluated expression, \item @@ -2241,7 +2107,7 @@ index 6a3d71e9..ca32c4fa 100644 \item an immediate subexpression of a \grammarterm{braced-init-list}, -@@ -8471,7 +8472,9 @@ A function or variable is +@@ -8766,7 +8768,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -2253,7 +2119,7 @@ index 6a3d71e9..ca32c4fa 100644 \item diff --git a/source/future.tex b/source/future.tex -index 1abc48bc..0cc895da 100644 +index 50edea0b..49c04f21 100644 --- a/source/future.tex +++ b/source/future.tex @@ -14,7 +14,7 @@ is defined as: @@ -2280,7 +2146,7 @@ index 1abc48bc..0cc895da 100644 as defaulted is deprecated if the class has a user-declared copy constructor or a user-declared destructor. -@@ -535,7 +535,7 @@ template struct tuple_size; +@@ -528,7 +528,7 @@ template struct tuple_size; \pnum Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. If the expression \tcode{TS::value} is well-formed @@ -2290,12 +2156,12 @@ index 1abc48bc..0cc895da 100644 the \oldconcept{TransformationTrait} requirements with a base characteristic of \tcode{integral_constant}. diff --git a/source/intro.tex b/source/intro.tex -index d5cb23dc..f3ca38d7 100644 +index 75705a2b..1b5dda28 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -94,8 +94,8 @@ Reads of scalar objects are described in \ref{conv.lval} and modifications of scalar objects are described in - \ref{expr.ass}, \ref{expr.post.incr}, and \ref{expr.pre.incr}. + \ref{expr.assign}, \ref{expr.post.incr}, and \ref{expr.pre.incr}. Attempts to read or modify an object of class type -typically invoke a constructor\iref{class.ctor} -or assignment operator\iref{class.copy.assign}; @@ -2304,7 +2170,7 @@ index d5cb23dc..f3ca38d7 100644 such invocations do not themselves constitute accesses, although they may involve accesses of scalar subobjects. \end{defnote} -@@ -242,10 +242,11 @@ implementation's output messages +@@ -243,10 +243,11 @@ implementation's output messages glvalue refers \begin{example} @@ -2320,7 +2186,7 @@ index d5cb23dc..f3ca38d7 100644 treated similarly. \end{example} -@@ -313,7 +314,7 @@ handler functions (see \ref{support}). +@@ -314,7 +315,7 @@ handler functions (see \ref{support}). \indexdefn{program!ill-formed}% \definition{ill-formed program}{defns.ill.formed} @@ -2329,7 +2195,7 @@ index d5cb23dc..f3ca38d7 100644 \indexdefn{behavior!implementation-defined}% \definition{implementation-defined behavior}{defns.impl.defined} -@@ -798,7 +799,7 @@ a \grammarterm{static_assert-declaration} that fails\iref{dcl.pre}. +@@ -810,7 +811,7 @@ resulting in a contract violation. \indextext{conformance requirements!classes}% \indextext{conformance requirements!class templates}% For classes and class templates, the library Clauses specify partial @@ -2338,7 +2204,7 @@ index d5cb23dc..f3ca38d7 100644 specified, but each implementation shall supply them to complete the definitions according to the description in the library Clauses. -@@ -815,7 +816,7 @@ the appropriate standard library named header unit\iref{using.headers}. +@@ -827,7 +828,7 @@ the appropriate standard library named header unit\iref{using.headers}. \pnum The templates, classes, functions, and objects in the library have @@ -2348,10 +2214,10 @@ index d5cb23dc..f3ca38d7 100644 translation units to form a complete \Cpp{} program\iref{lex.phases}.% \indextext{conformance requirements!library|)} diff --git a/source/iostreams.tex b/source/iostreams.tex -index d9271823..b825f374 100644 +index 1a5a1cc6..015fb1d2 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -555,7 +555,7 @@ is initialized, +@@ -561,7 +561,7 @@ is initialized, returns \tcode{\&cout}. Its state is otherwise the same as required for @@ -2360,7 +2226,7 @@ index d9271823..b825f374 100644 \end{itemdescr} \indexlibraryglobal{cout}% -@@ -588,7 +588,7 @@ is initialized, +@@ -594,7 +594,7 @@ is initialized, \tcode{cerr.flags() \& unitbuf} is nonzero and \tcode{cerr.tie()} returns \tcode{\&cout}. Its state is otherwise the same as required for @@ -2369,7 +2235,7 @@ index d9271823..b825f374 100644 \end{itemdescr} \indexlibraryglobal{clog}% -@@ -625,7 +625,7 @@ is initialized, +@@ -631,7 +631,7 @@ is initialized, returns \tcode{\&wcout}. Its state is otherwise the same as required for @@ -2378,7 +2244,7 @@ index d9271823..b825f374 100644 \end{itemdescr} \indexlibraryglobal{wcout}% -@@ -658,7 +658,7 @@ is initialized, +@@ -664,7 +664,7 @@ is initialized, \tcode{wcerr.flags() \& unitbuf} is nonzero and \tcode{wcerr.tie()} returns \tcode{\&wcout}. Its state is otherwise the same as required for @@ -2387,7 +2253,7 @@ index d9271823..b825f374 100644 \end{itemdescr} \indexlibraryglobal{wclog}% -@@ -1378,7 +1378,7 @@ operate independently of the standard C streams. +@@ -1384,7 +1384,7 @@ operate independently of the standard C streams. \pnum \returns \tcode{true} @@ -2396,7 +2262,7 @@ index d9271823..b825f374 100644 was synchronized and otherwise returns \tcode{false}. The first time it is called, -@@ -1437,8 +1437,8 @@ static int xalloc(); +@@ -1443,8 +1443,8 @@ static int xalloc(); \pnum \remarks @@ -2407,7 +2273,7 @@ index d9271823..b825f374 100644 \end{itemdescr} \indexlibrarymember{iword}{ios_base}% -@@ -2025,12 +2025,12 @@ locale imbue(const locale& loc); +@@ -2031,12 +2031,12 @@ locale imbue(const locale& loc); \pnum \effects Calls @@ -2422,7 +2288,7 @@ index d9271823..b825f374 100644 \pnum \returns -@@ -3283,7 +3283,7 @@ streamsize in_avail(); +@@ -3289,7 +3289,7 @@ streamsize in_avail(); If a read position is available, returns \tcode{egptr() - gptr()}. Otherwise returns @@ -2431,7 +2297,7 @@ index d9271823..b825f374 100644 \end{itemdescr} \indexlibrarymember{snextc}{basic_streambuf}% -@@ -4308,7 +4308,7 @@ namespace std { +@@ -4314,7 +4314,7 @@ namespace std { template> class basic_istream : virtual public basic_ios { public: @@ -2440,7 +2306,7 @@ index d9271823..b825f374 100644 using char_type = charT; using int_type = typename traits::int_type; using pos_type = typename traits::pos_type; -@@ -4714,7 +4714,7 @@ basic_istream& operator>>(void*& val); +@@ -4720,7 +4720,7 @@ basic_istream& operator>>(void*& val); \pnum As in the case of the inserters, these extractors depend on the locale's @@ -2449,7 +2315,7 @@ index d9271823..b825f374 100644 stream data. These extractors behave as formatted input functions (as described in~\ref{istream.formatted.reqmts}). After a \tcode{sentry} object is constructed, the conversion occurs as if performed by the following code fragment, -@@ -5001,7 +5001,7 @@ basic_istream& operator>>(basic_streambuf* sb); +@@ -5007,7 +5007,7 @@ basic_istream& operator>>(basic_streambuf* sb); \begin{itemdescr} \pnum \effects @@ -2458,7 +2324,7 @@ index d9271823..b825f374 100644 If \tcode{sb} is null, calls \tcode{setstate(fail\-bit)}, which may throw -@@ -5396,7 +5396,7 @@ characters and discards them. +@@ -5402,7 +5402,7 @@ characters and discards them. Characters are extracted until any of the following occurs: \begin{itemize} \item @@ -2467,7 +2333,7 @@ index d9271823..b825f374 100644 and \tcode{n} characters have been extracted so far; \item -@@ -5732,12 +5732,12 @@ template +@@ -5738,12 +5738,12 @@ template \begin{itemdescr} \pnum \effects @@ -2482,7 +2348,7 @@ index d9271823..b825f374 100644 If \tcode{ws} stops extracting characters because there are no more available it sets -@@ -5762,7 +5762,7 @@ template +@@ -5768,7 +5768,7 @@ template \pnum \constraints The expression \tcode{is >> std::forward(x)} is well-formed @@ -2491,7 +2357,7 @@ index d9271823..b825f374 100644 \tcode{Istream} is publicly and unambiguously derived from \tcode{ios_base}. \pnum -@@ -5830,7 +5830,7 @@ explicit basic_iostream(basic_streambuf* sb); +@@ -5836,7 +5836,7 @@ explicit basic_iostream(basic_streambuf* sb); Initializes the base class subobjects with \tcode{basic_istream(sb)}\iref{istream} and @@ -2500,7 +2366,7 @@ index d9271823..b825f374 100644 \pnum \ensures -@@ -5916,7 +5916,7 @@ namespace std { +@@ -5922,7 +5922,7 @@ namespace std { template> class basic_ostream : virtual public basic_ios { public: @@ -2509,7 +2375,7 @@ index d9271823..b825f374 100644 using char_type = charT; using int_type = typename traits::int_type; using pos_type = typename traits::pos_type; -@@ -6685,7 +6685,7 @@ return *this << s; +@@ -6691,7 +6691,7 @@ return *this << s; \end{codeblock} where \tcode{s} is an \impldef{NTCTS in \tcode{basic_ostream\& op\-er\-ator<<(nullptr_t)}} @@ -2518,7 +2384,7 @@ index d9271823..b825f374 100644 \end{itemdescr} \rSec4[ostream.inserters.character]{Character inserter function templates} -@@ -6709,7 +6709,7 @@ template +@@ -6715,7 +6715,7 @@ template \begin{itemdescr} \pnum \effects @@ -2527,7 +2393,7 @@ index d9271823..b825f374 100644 of \tcode{out}. Constructs a character sequence \tcode{seq}. If \tcode{c} has type \tcode{char} -@@ -7461,7 +7461,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. +@@ -7468,7 +7468,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. \pnum \effects The expression \tcode{in >> get_money(mon, intl)} described below @@ -2536,7 +2402,7 @@ index d9271823..b825f374 100644 \pnum \returns -@@ -7506,7 +7506,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. +@@ -7513,7 +7513,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. An object of unspecified type such that if \tcode{out} is an object of type \tcode{basic_ostream} then the expression \tcode{out << put_money(mon, intl)} behaves as a @@ -2545,7 +2411,7 @@ index d9271823..b825f374 100644 \tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as: \begin{codeblock} -@@ -7630,7 +7630,7 @@ of \tcode{basic_ostream} with member type \tcode{char_type} the same as +@@ -7637,7 +7637,7 @@ of \tcode{basic_ostream} with member type \tcode{char_type} the same as \tcode{charT} and with member type \tcode{traits_type}, which in the second and third forms is the same as \tcode{traits}, then the expression \tcode{out << quoted(s, delim, escape)} @@ -2554,7 +2420,7 @@ index d9271823..b825f374 100644 of \tcode{out}. This forms a character sequence \tcode{seq}, initially consisting of the following elements: \begin{itemize} -@@ -14109,7 +14109,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. +@@ -14118,7 +14118,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. \pnum \begin{note} @@ -2563,7 +2429,7 @@ index d9271823..b825f374 100644 for how the value types above and their encodings convert to \tcode{path::value_type} and its encoding. \end{note} -@@ -14709,7 +14709,7 @@ by \ref{fs.path.cvt}. +@@ -14718,7 +14718,7 @@ by \ref{fs.path.cvt}. \pnum Generic format observer functions return strings formatted according to the @@ -2572,7 +2438,7 @@ index d9271823..b825f374 100644 A single slash (\tcode{'/'}) character is used as the \grammarterm{directory-separator}. -@@ -15252,11 +15252,11 @@ If normalization\iref{fs.path.generic} is needed +@@ -15261,11 +15261,11 @@ If normalization\iref{fs.path.generic} is needed \indexlibrarymember{path}{iterator}% \pnum Path iterators iterate over the elements of the pathname @@ -2586,7 +2452,7 @@ index d9271823..b825f374 100644 except that, for dereferenceable iterators \tcode{a} and \tcode{b} of type \tcode{path::iterator} -@@ -16613,7 +16613,7 @@ If a file is removed from or added to a directory after the +@@ -16622,7 +16622,7 @@ If a file is removed from or added to a directory after the construction of a \tcode{directory_iterator} for the directory, it is unspecified whether or not subsequently incrementing the iterator will ever result in an iterator referencing the removed or added directory entry. See @@ -2595,7 +2461,7 @@ index d9271823..b825f374 100644 \end{note} \rSec3[fs.dir.itr.members]{Members} -@@ -16705,7 +16705,7 @@ directory_iterator& increment(error_code& ec); +@@ -16714,7 +16714,7 @@ directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -2604,7 +2470,7 @@ index d9271823..b825f374 100644 \pnum \returns -@@ -17017,7 +17017,7 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17026,7 +17026,7 @@ recursive_directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -2613,65 +2479,65 @@ index d9271823..b825f374 100644 except that: \begin{itemize} -@@ -17608,7 +17608,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin +@@ -17617,7 +17617,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin \begin{itemdescr} \pnum \effects --Establishes the postcondition, as if by POSIX \tcode{symlink()}. -+Establishes the postcondition, as if by POSIX \weblink{\tcode{symlink()}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/symlink.html}. +-Establishes the postcondition, as if by POSIX \tcode{symlink}. ++Establishes the postcondition, as if by POSIX \weblink{\tcode{symlink}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/symlink.html}. \pnum \ensures -@@ -17684,7 +17684,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, +@@ -17693,7 +17693,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, \begin{itemdescr} \pnum \effects --Establishes the postcondition, as if by POSIX \tcode{symlink()}. -+Establishes the postcondition, as if by POSIX \weblink{\tcode{symlink()}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/symlink.html}. +-Establishes the postcondition, as if by POSIX \tcode{symlink}. ++Establishes the postcondition, as if by POSIX \weblink{\tcode{symlink}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/symlink.html}. \pnum \ensures -@@ -17717,7 +17717,7 @@ path filesystem::current_path(error_code& ec); +@@ -17726,7 +17726,7 @@ path filesystem::current_path(error_code& ec); \returns The absolute path of the current working directory, whose pathname in the native format is -- obtained as if by POSIX \tcode{getcwd()}. -+ obtained as if by POSIX \weblink{\tcode{getcwd()}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/getcwd.html}. +- obtained as if by POSIX \tcode{getcwd}. ++ obtained as if by POSIX \weblink{\tcode{getcwd}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/getcwd.html}. The signature with argument \tcode{ec} returns \tcode{path()} if an error occurs. -@@ -17754,7 +17754,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; +@@ -17757,7 +17757,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; \begin{itemdescr} \pnum \effects --Establishes the postcondition, as if by POSIX \tcode{chdir()}. -+Establishes the postcondition, as if by POSIX \weblink{\tcode{chdir()}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/chdir.html}. +-Establishes the postcondition, as if by POSIX \tcode{chdir}. ++Establishes the postcondition, as if by POSIX \weblink{\tcode{chdir}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/chdir.html}. \pnum \ensures -@@ -17865,7 +17865,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. +@@ -17868,7 +17868,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. \item If \tcode{is_regular_file(p)}, the size in bytes of the file \tcode{p} resolves to, determined as if by the value of the POSIX \tcode{stat} -- class member \tcode{st_size} obtained as if by POSIX \tcode{stat()}. -+ class member \tcode{st_size} obtained as if by POSIX \weblink{\tcode{stat()}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html}. +- class member \tcode{st_size} obtained as if by POSIX \tcode{stat}. ++ class member \tcode{st_size} obtained as if by POSIX \weblink{\tcode{stat}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html}. \item Otherwise, the result is \impldef{result of \tcode{filesystem::file_size}}. \end{itemize} -@@ -18247,7 +18247,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time, +@@ -18250,7 +18250,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time, \pnum \effects Sets the time of last data modification of the file -- resolved to by \tcode{p} to \tcode{new_time}, as if by POSIX \tcode{futimens()}. -+ resolved to by \tcode{p} to \tcode{new_time}, as if by POSIX \weblink{\tcode{futimens()}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/futimens.html}. +- resolved to by \tcode{p} to \tcode{new_time}, as if by POSIX \tcode{futimens}. ++ resolved to by \tcode{p} to \tcode{new_time}, as if by POSIX \weblink{\tcode{futimens}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/futimens.html}. \pnum \throws diff --git a/source/iterators.tex b/source/iterators.tex -index 7fcbff20..32642559 100644 +index 4cf779c3..395e5bf6 100644 --- a/source/iterators.tex +++ b/source/iterators.tex -@@ -715,7 +715,7 @@ is undefined. +@@ -732,7 +732,7 @@ is undefined. \pnum \indextext{iterator!constexpr}% @@ -2680,7 +2546,7 @@ index 7fcbff20..32642559 100644 if all operations provided to meet iterator category requirements are constexpr functions. \begin{note} -@@ -6835,7 +6835,7 @@ ostream_iterator& operator++(int); +@@ -6852,7 +6852,7 @@ ostream_iterator& operator++(int); The class template \tcode{istreambuf_iterator} @@ -2689,7 +2555,7 @@ index 7fcbff20..32642559 100644 reads successive \textit{characters} from the streambuf for which it was constructed. -@@ -6960,7 +6960,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; +@@ -6977,7 +6977,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; Initializes \tcode{sbuf_} with \keyword{nullptr}. \end{itemdescr} @@ -2697,7 +2563,7 @@ index 7fcbff20..32642559 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(istream_type& s) noexcept; -@@ -6972,7 +6971,6 @@ istreambuf_iterator(istream_type& s) noexcept; +@@ -6989,7 +6988,6 @@ istreambuf_iterator(istream_type& s) noexcept; Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2705,7 +2571,7 @@ index 7fcbff20..32642559 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(streambuf_type* s) noexcept; -@@ -6984,7 +6982,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; +@@ -7001,7 +6999,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; Initializes \tcode{sbuf_} with \tcode{s}. \end{itemdescr} @@ -2713,7 +2579,7 @@ index 7fcbff20..32642559 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept; -@@ -7135,7 +7132,6 @@ is not a null pointer. +@@ -7152,7 +7149,6 @@ is not a null pointer. Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2722,7 +2588,7 @@ index 7fcbff20..32642559 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index f9f23382..bc0f5b3b 100644 +index 5889b42c..ac260145 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2747,7 +2613,7 @@ index f9f23382..bc0f5b3b 100644 \end{note} \indextext{compilation!separate|)} -@@ -2232,7 +2232,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) +@@ -2241,7 +2241,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) \pnum If \placeholder{L} is a \grammarterm{user-defined-character-literal}, let \placeholder{ch} be the literal without its \grammarterm{ud-suffix}. @@ -2757,7 +2623,7 @@ index f9f23382..bc0f5b3b 100644 literal \placeholder{L} is treated as a call of the form diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index fab923bf..6edd7095 100644 +index 61fcbded..2caf8109 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2769,7 +2635,7 @@ index fab923bf..6edd7095 100644 numeric algorithms and complex number components that extend support for numeric processing. The \tcode{valarray} -@@ -481,8 +481,8 @@ of other standards\iref{intro.refs}. +@@ -518,8 +518,8 @@ of other standards\iref{intro.refs}. Subclause \ref{conventions} describes several editorial conventions used to describe the contents of the \Cpp{} standard library. These conventions are for describing @@ -2780,7 +2646,7 @@ index fab923bf..6edd7095 100644 \rSec3[expos.only.entity]{Exposition-only entities, etc.} -@@ -604,7 +604,7 @@ and \ref{depr} are +@@ -641,7 +641,7 @@ and \ref{depr} are Each bitmask type can be implemented as an enumerated type that overloads certain operators, as an integer type, or as a @@ -2789,7 +2655,7 @@ index fab923bf..6edd7095 100644 \indextext{type!enumerated}% \pnum -@@ -730,7 +730,7 @@ locale. +@@ -767,7 +767,7 @@ locale. \item A \defn{character sequence} @@ -2798,7 +2664,7 @@ index fab923bf..6edd7095 100644 can be declared as \tcode{\placeholdernc{T\;A}[\placeholder{N}]}, where \tcode{\placeholder{T}} is any of the types -@@ -911,7 +911,7 @@ signatures, or for virtual destructors that can be generated by default. +@@ -948,7 +948,7 @@ signatures, or for virtual destructors that can be generated by default. \pnum \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr} do not specify the representation of classes, and intentionally @@ -2807,7 +2673,7 @@ index fab923bf..6edd7095 100644 define static or non-static class members, or both, as needed to implement the semantics of the member functions specified in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr}. -@@ -1318,10 +1318,10 @@ std::vector vi; // OK +@@ -1360,10 +1360,10 @@ std::vector vi; // OK Except as noted in \ref{library} through \ref{\lastlibchapter} and \ref{depr}, the contents of each header \tcode{c\placeholder{name}} is the same as that of the corresponding header \tcode{\placeholder{name}.h} as @@ -2820,7 +2686,7 @@ index fab923bf..6edd7095 100644 It is unspecified whether these names (including any overloads added in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr}) are first declared within the global namespace scope -@@ -1635,8 +1635,8 @@ a hosted implementation. +@@ -1680,8 +1680,8 @@ a hosted implementation. \pnum Subclause \ref{using} describes how a \Cpp{} program gains access to the facilities of the \Cpp{} standard library. \ref{using.headers} describes effects during translation @@ -2831,7 +2697,7 @@ index fab923bf..6edd7095 100644 \rSec3[using.headers]{Headers} -@@ -1679,7 +1679,7 @@ declared in that header. No diagnostic is required. +@@ -1724,7 +1724,7 @@ declared in that header. No diagnostic is required. \rSec3[using.linkage]{Linkage} \pnum @@ -2840,7 +2706,7 @@ index fab923bf..6edd7095 100644 Unless otherwise specified, objects and functions have the default \tcode{extern "C++"} linkage\iref{dcl.link}. -@@ -1713,8 +1713,8 @@ the program prior to program startup. +@@ -1758,8 +1758,8 @@ the program prior to program startup. \indextext{startup!program}% \pnum See also @@ -2851,7 +2717,7 @@ index fab923bf..6edd7095 100644 \rSec2[utility.requirements]{Requirements on types and expressions} -@@ -1762,7 +1762,7 @@ rvalue of type \tcode{const T}. +@@ -1807,7 +1807,7 @@ rvalue of type \tcode{const T}. In general, a default constructor is not required. Certain container class member function signatures specify \tcode{T()} as a default argument. \tcode{T()} shall be a well-defined expression\iref{dcl.init} if one of those @@ -2860,7 +2726,7 @@ index fab923bf..6edd7095 100644 \begin{oldconcepttable}{EqualityComparable}{}{cpp17.equalitycomparable} {x{1in}x{1in}p{3in}} -@@ -1888,13 +1888,13 @@ evaluated in the context described below, and +@@ -1933,13 +1933,13 @@ evaluated in the context described below, and \pnum The context in which \tcode{swap(t, u)} and \tcode{swap(u, t)} are evaluated shall @@ -2877,7 +2743,7 @@ index fab923bf..6edd7095 100644 \end{itemize} \begin{note} If \tcode{T} and \tcode{U} are both fundamental types or arrays of -@@ -1997,8 +1997,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in +@@ -2042,8 +2042,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in \end{note} \pnum @@ -2889,7 +2755,7 @@ index fab923bf..6edd7095 100644 had been evaluated in place of \tcode{p}. \pnum -@@ -2101,7 +2102,7 @@ as the memory allocation and deallocation primitives for it. All of the +@@ -2146,7 +2147,7 @@ as the memory allocation and deallocation primitives for it. All of the string types\iref{strings}, containers\iref{containers} (except \tcode{array} and \tcode{inplace_vector}), string buffers and string streams\iref{input.output}, and @@ -2898,7 +2764,7 @@ index fab923bf..6edd7095 100644 allocators. \pnum -@@ -2925,7 +2926,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, +@@ -2970,7 +2971,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, whether or not \tcode{T} is a complete type: \begin{itemize} \item \tcode{X} is a complete type, and @@ -2907,7 +2773,7 @@ index fab923bf..6edd7095 100644 other than \tcode{value_type} are complete types. \end{itemize} -@@ -2936,11 +2937,11 @@ whether or not \tcode{T} is a complete type: +@@ -2981,11 +2982,11 @@ whether or not \tcode{T} is a complete type: \pnum Subclause \ref{constraints} describes restrictions on \Cpp{} programs that use the facilities of the \Cpp{} standard library. The following subclauses specify constraints on the @@ -2923,7 +2789,7 @@ index fab923bf..6edd7095 100644 \rSec3[namespace.constraints]{Namespace use} -@@ -3333,7 +3334,7 @@ are reserved for use by \Cpp{} implementations. +@@ -3378,7 +3379,7 @@ are reserved for use by \Cpp{} implementations. If a file with a name equivalent to the derived file name for one of the \Cpp{} standard library headers is not provided as part of the implementation, and a file with that name @@ -2932,7 +2798,7 @@ index fab923bf..6edd7095 100644 the behavior is undefined.% \indextext{source file}% \indextext{undefined} -@@ -3563,7 +3564,7 @@ specified as being shareable without data races or the user supplies a locking m +@@ -3549,7 +3550,7 @@ specified as being shareable without data races or the user supplies a locking m \pnum If an object of a standard library type is accessed, and @@ -2941,7 +2807,7 @@ index fab923bf..6edd7095 100644 does not happen before the access, or the access does not happen before the end of the object's lifetime, the behavior is undefined unless otherwise specified. -@@ -3623,7 +3624,7 @@ Every such entity shall be defined such that any header that defines it may be +@@ -3615,7 +3616,7 @@ Every such entity shall be defined such that any header that defines it may be included after any other header that also defines it\iref{basic.def.odr}. \pnum @@ -2950,7 +2816,7 @@ index fab923bf..6edd7095 100644 shall include only their corresponding \Cpp{} standard library header, as described in~\ref{headers}. -@@ -3651,7 +3652,7 @@ explicitly stated otherwise. +@@ -3643,7 +3644,7 @@ explicitly stated otherwise. It is unspecified whether any non-member functions in the \Cpp{} standard library are defined as @@ -2959,7 +2825,7 @@ index fab923bf..6edd7095 100644 \pnum A call to a non-member function signature -@@ -3679,7 +3680,7 @@ The phrase ``unless otherwise specified'' applies to cases such as +@@ -3671,7 +3672,7 @@ The phrase ``unless otherwise specified'' applies to cases such as the swappable with requirements\iref{swappable.requirements}. The exception for overloaded operators allows argument-dependent lookup in cases like that of @@ -2968,7 +2834,7 @@ index fab923bf..6edd7095 100644 \effects \begin{codeblock} -@@ -3694,7 +3695,7 @@ return *this; +@@ -3686,7 +3687,7 @@ return *this; \pnum It is unspecified whether any member functions in the \Cpp{} standard library are defined as @@ -2977,7 +2843,7 @@ index fab923bf..6edd7095 100644 \pnum For a non-virtual member function described in the \Cpp{} standard library, -@@ -3773,8 +3774,8 @@ library may be recursively reentered. +@@ -3765,8 +3766,8 @@ library may be recursively reentered. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -2988,7 +2854,7 @@ index fab923bf..6edd7095 100644 Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. -@@ -3817,7 +3818,7 @@ not visible to users and are protected against data races. +@@ -3809,7 +3810,7 @@ not visible to users and are protected against data races. \pnum Unless otherwise specified, \Cpp{} standard library functions shall perform all operations solely within the current thread if those operations have effects that are @@ -2997,7 +2863,7 @@ index fab923bf..6edd7095 100644 \pnum \begin{note} -@@ -3924,7 +3925,7 @@ potentially-throwing exception specification} exceptions. +@@ -3938,7 +3939,7 @@ potentially-throwing exception specification} exceptions. \begin{footnote} In particular, they can report a failure to allocate storage by throwing an exception of type @@ -3006,7 +2872,7 @@ index fab923bf..6edd7095 100644 or a class derived from \tcode{bad_alloc}\iref{bad.alloc}. \end{footnote} -@@ -3943,7 +3944,7 @@ by adding a non-throwing exception specification. +@@ -3966,7 +3967,7 @@ assertions\iref{basic.contract,structure.specifications}. \pnum Certain functions in the \Cpp{} standard library report errors via a @@ -3029,10 +2895,10 @@ index bdc1f3de..efd4eb00 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index cdd0c5d4..8fb33130 100644 +index 2686fc9c..9d12c5b1 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -167,8 +167,8 @@ floating-point evaluation in constant expressions. +@@ -156,8 +156,8 @@ floating-point evaluation in constant expressions. \rSec2[cfenv.thread]{Threads} \pnum @@ -3043,7 +2909,7 @@ index cdd0c5d4..8fb33130 100644 environment is the state of the floating-point environment of the thread that constructs the corresponding \tcode{thread} object\iref{thread.thread.class} or \tcode{jthread} object\iref{thread.jthread.class} -@@ -1574,21 +1574,21 @@ the effect of instantiating a template: +@@ -1565,21 +1565,21 @@ the effect of instantiating a template: is undefined unless the corresponding template argument is cv-unqualified and meets the requirements @@ -3068,7 +2934,7 @@ index cdd0c5d4..8fb33130 100644 \item that has a template type parameter named \tcode{RealType} -@@ -1712,7 +1712,7 @@ In \tref{rand.req.seedseq} and throughout this subclause: +@@ -1703,7 +1703,7 @@ In \tref{rand.req.seedseq} and throughout this subclause: \endhead \tcode{S::result_type} & \tcode{T} @@ -3077,7 +2943,7 @@ index cdd0c5d4..8fb33130 100644 of at least 32 bits. & \\ \rowsep -@@ -1877,7 +1877,7 @@ An engine's state may be established via +@@ -1868,7 +1868,7 @@ An engine's state may be established via \pnum A class \tcode{E} that meets the requirements @@ -3086,7 +2952,7 @@ index cdd0c5d4..8fb33130 100644 also meets the requirements of a \term{random number engine} if the expressions shown -@@ -1898,7 +1898,7 @@ In \tref{rand.req.eng} and throughout this subclause: +@@ -1889,7 +1889,7 @@ In \tref{rand.req.eng} and throughout this subclause: \tcode{s} is a value of \tcode{T}; \item \tcode{q} is an lvalue @@ -3095,7 +2961,7 @@ index cdd0c5d4..8fb33130 100644 \item \tcode{z} is a value of type \tcode{unsigned long long}; -@@ -2290,7 +2290,7 @@ In \tref{rand.req.dist} and throughout this subclause, +@@ -2323,7 +2323,7 @@ In \tref{rand.req.dist} and throughout this subclause, \item \tcode{g}, \tcode{g1}, and \tcode{g2} are lvalues of a type meeting the requirements @@ -3104,7 +2970,7 @@ index cdd0c5d4..8fb33130 100644 \item \tcode{os} is an lvalue of the type of some class template specialization \tcode{basic_ostream}; -@@ -2322,7 +2322,7 @@ according to \ref{strings} and \ref{input.output}. +@@ -2355,7 +2355,7 @@ according to \ref{strings} and \ref{input.output}. \endhead \tcode{D::result_type} & \tcode{T} @@ -3113,7 +2979,7 @@ index cdd0c5d4..8fb33130 100644 & \\ \rowsep \tcode{D::param_type} -@@ -2529,7 +2529,7 @@ using distribution_type = D; +@@ -2597,7 +2597,7 @@ reference to the type of \tcode{is}. Each type instantiated from a class template specified in \ref{rand.eng} meets the requirements @@ -3122,7 +2988,7 @@ index cdd0c5d4..8fb33130 100644 \pnum Except where specified otherwise, -@@ -3321,7 +3321,7 @@ The counter is the value $Z$ introduced at the beginning of this subclause. +@@ -3395,7 +3395,7 @@ The counter is the value $Z$ introduced at the beginning of this subclause. Each type instantiated from a class template specified in \ref{rand.adapt} meets the requirements @@ -3131,7 +2997,7 @@ index cdd0c5d4..8fb33130 100644 \pnum Except where specified otherwise, -@@ -4415,7 +4415,7 @@ than the output when computing $S$. +@@ -4489,7 +4489,7 @@ than the output when computing $S$. Each type instantiated from a class template specified in \ref{rand.dist} meets the requirements @@ -3140,7 +3006,7 @@ index cdd0c5d4..8fb33130 100644 \pnum Descriptions are provided in \ref{rand.dist} -@@ -5267,6 +5267,7 @@ p(x\,|\,\alpha,\beta) = +@@ -5343,6 +5343,7 @@ p(x\,|\,\alpha,\beta) = \indexlibraryglobal{gamma_distribution}% \indexlibrarymember{result_type}{gamma_distribution}% @@ -3148,7 +3014,7 @@ index cdd0c5d4..8fb33130 100644 \begin{codeblock} namespace std { template -@@ -5310,7 +5311,6 @@ namespace std { +@@ -5386,7 +5387,6 @@ namespace std { } \end{codeblock} @@ -3156,7 +3022,7 @@ index cdd0c5d4..8fb33130 100644 \indexlibraryctor{gamma_distribution}% \begin{itemdecl} explicit gamma_distribution(RealType alpha, RealType beta = 1.0); -@@ -5417,7 +5417,7 @@ namespace std { +@@ -5493,7 +5493,7 @@ namespace std { \indexlibraryctor{weibull_distribution}% \begin{itemdecl} explicit weibull_distribution(RealType a, RealType b = 1.0); @@ -3165,7 +3031,7 @@ index cdd0c5d4..8fb33130 100644 \begin{itemdescr} \pnum -@@ -5527,7 +5527,6 @@ namespace std { +@@ -5603,7 +5603,6 @@ namespace std { } \end{codeblock} @@ -3173,7 +3039,7 @@ index cdd0c5d4..8fb33130 100644 \indexlibraryctor{extreme_value_distribution}% \begin{itemdecl} explicit extreme_value_distribution(RealType a, RealType b = 1.0); -@@ -5651,7 +5650,6 @@ namespace std { +@@ -5727,7 +5726,6 @@ namespace std { } \end{codeblock} @@ -3181,7 +3047,7 @@ index cdd0c5d4..8fb33130 100644 \indexlibraryctor{normal_distribution}% \begin{itemdecl} explicit normal_distribution(RealType mean, RealType stddev = 1.0); -@@ -5855,7 +5853,6 @@ namespace std { +@@ -5931,7 +5929,6 @@ namespace std { } \end{codeblock} @@ -3189,7 +3055,7 @@ index cdd0c5d4..8fb33130 100644 \indexlibraryctor{chi_squared_distribution}% \begin{itemdecl} explicit chi_squared_distribution(RealType n); -@@ -6049,7 +6046,6 @@ namespace std { +@@ -6125,7 +6122,6 @@ namespace std { } \end{codeblock} @@ -3197,7 +3063,7 @@ index cdd0c5d4..8fb33130 100644 \indexlibraryctor{fisher_f_distribution}% \begin{itemdecl} explicit fisher_f_distribution(RealType m, RealType n = 1); -@@ -6152,7 +6148,6 @@ namespace std { +@@ -6228,7 +6224,6 @@ namespace std { } \end{codeblock} @@ -3205,7 +3071,7 @@ index cdd0c5d4..8fb33130 100644 \indexlibraryctor{student_t_distribution}% \begin{itemdecl} explicit student_t_distribution(RealType n); -@@ -6268,7 +6263,7 @@ namespace std { +@@ -6344,7 +6339,7 @@ namespace std { } \end{codeblock} @@ -3214,7 +3080,7 @@ index cdd0c5d4..8fb33130 100644 \begin{itemdecl} discrete_distribution(); \end{itemdecl} -@@ -7098,8 +7093,9 @@ additional functions and operators as follows: +@@ -7174,8 +7169,9 @@ additional functions and operators as follows: \begin{itemize} \item for every function taking a @@ -3226,7 +3092,7 @@ index cdd0c5d4..8fb33130 100644 identical functions taking the replacement types shall be added; \item for every function taking two -@@ -7124,7 +7120,7 @@ objects. +@@ -7200,7 +7196,7 @@ objects. \pnum These library functions are permitted to throw a @@ -3235,7 +3101,7 @@ index cdd0c5d4..8fb33130 100644 to carry out the operation. Note that the exception is not mandated. -@@ -7284,7 +7280,7 @@ explicit valarray(size_t n); +@@ -7360,7 +7356,7 @@ explicit valarray(size_t n); \pnum \effects Constructs a \tcode{valarray} that has length \tcode{n}. @@ -3244,7 +3110,7 @@ index cdd0c5d4..8fb33130 100644 \end{itemdescr} \indexlibraryctor{valarray}% -@@ -7544,7 +7540,7 @@ and other techniques to generate efficient +@@ -7620,7 +7616,7 @@ and other techniques to generate efficient \pnum The reference returned by the subscript operator for an array shall be valid until the member function @@ -3253,7 +3119,7 @@ index cdd0c5d4..8fb33130 100644 that array ends, whichever happens first. \end{itemdescr} -@@ -7970,7 +7966,7 @@ places, with zero fill. +@@ -8046,7 +8042,7 @@ places, with zero fill. \pnum \begin{example} If the argument has the value $-2$, @@ -3262,7 +3128,7 @@ index cdd0c5d4..8fb33130 100644 of the first element of \tcode{*this}; etc. \end{example} \end{itemdescr} -@@ -9095,7 +9091,7 @@ parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. +@@ -9171,7 +9167,7 @@ parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. \pnum The iterators returned by \tcode{begin} and \tcode{end} for an array are guaranteed to be valid until the member function @@ -3271,7 +3137,7 @@ index cdd0c5d4..8fb33130 100644 array or until the lifetime of that array ends, whichever happens first. -@@ -9732,12 +9728,12 @@ namespace std { +@@ -9788,12 +9784,12 @@ namespace std { The contents and meaning of the header \libheader{cmath} are the same as the C standard library header \libheader{math.h}, with the addition of @@ -3287,7 +3153,7 @@ index cdd0c5d4..8fb33130 100644 \end{note} \pnum -@@ -9801,7 +9797,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. +@@ -9857,7 +9853,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. If \tcode{abs} is called with an argument of type \tcode{X} for which \tcode{is_unsigned_v} is \tcode{true} and if \tcode{X} cannot be converted to \tcode{int} @@ -3297,7 +3163,7 @@ index cdd0c5d4..8fb33130 100644 Allowing arguments that can be promoted to \tcode{int} provides compatibility with C. diff --git a/source/overloading.tex b/source/overloading.tex -index cf7d8093..8c172ec0 100644 +index 5343a015..db9317ec 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -69,7 +69,7 @@ Overload resolution selects the function to call in seven distinct @@ -3362,7 +3228,7 @@ index cf7d8093..8c172ec0 100644 \begin{ncsimplebnf} postfix-expression \terminal{(} \opt{expression-list} \terminal{)} \end{ncsimplebnf} -@@ -912,7 +912,7 @@ in each case using the selected rewritten \tcode{\keyword{operator}==} candidate +@@ -938,7 +938,7 @@ in each case using the selected rewritten \tcode{\keyword{operator}==} candidate If a built-in candidate is selected by overload resolution, the operands of class type are converted to the types of the corresponding parameters of the selected operation function, except that the second standard conversion @@ -3371,7 +3237,7 @@ index cf7d8093..8c172ec0 100644 Then the operator is treated as the corresponding built-in operator and interpreted according to \ref{expr.compound}. \begin{example} -@@ -995,10 +995,10 @@ void B::f() { +@@ -1021,10 +1021,10 @@ void B::f() { \indextext{overloading!resolution!initialization} \pnum @@ -3384,16 +3250,7 @@ index cf7d8093..8c172ec0 100644 overload resolution selects the constructor. For direct-initialization or default-initialization (including default-initialization in the context of copy-list-initialization), -@@ -1037,7 +1037,7 @@ the candidate functions are selected as follows: - - \begin{itemize} - \item --The converting constructors\iref{class.conv.ctor} of -+The \deflinkx{converting constructors}{constructor!converting}{class.conv.ctor} of - \tcode{T} - are candidate functions. - \item -@@ -1689,7 +1689,7 @@ Third, for +@@ -1715,7 +1715,7 @@ Third, for \tcode{F} to be a viable function, there shall exist for each argument an @@ -3402,7 +3259,7 @@ index cf7d8093..8c172ec0 100644 converts that argument to the corresponding parameter of \tcode{F}. If the parameter has reference type, the implicit conversion sequence -@@ -1753,8 +1753,8 @@ float x = a; // ambiguous: both possibilities require conversions, +@@ -1779,8 +1779,8 @@ float x = a; // ambiguous: both possibilities require conversions, \end{example} or, if not that, @@ -3413,7 +3270,7 @@ index cf7d8093..8c172ec0 100644 return type of $\tcode{F}_1$ is the same kind of reference (lvalue or rvalue) as the reference being initialized, and the return type of $\tcode{F}_2$ is not \begin{example} -@@ -1884,7 +1884,7 @@ $\tcode{F}_1$ is generated from a +@@ -1910,7 +1910,7 @@ $\tcode{F}_1$ is generated from a and $\tcode{F}_2$ is not, or, if not that, \item @@ -3422,7 +3279,7 @@ index cf7d8093..8c172ec0 100644 and $\tcode{F}_2$ is not, or, if not that, \item -@@ -2029,7 +2029,7 @@ parameter. +@@ -2055,7 +2055,7 @@ parameter. \begin{note} Other properties, such as the lifetime, storage duration, linkage, alignment, accessibility of the argument, whether the argument is a bit-field, @@ -3431,7 +3288,7 @@ index cf7d8093..8c172ec0 100644 So, although an implicit conversion sequence can be defined for a given argument-parameter pair, the conversion from the argument to the parameter might still -@@ -2042,11 +2042,11 @@ well-formed implicit conversion +@@ -2068,11 +2068,11 @@ well-formed implicit conversion sequence is one of the following forms: \begin{itemize} \item @@ -3446,7 +3303,7 @@ index cf7d8093..8c172ec0 100644 \end{itemize} \pnum -@@ -2227,10 +2227,10 @@ Each conversion in \tref{over.ics.scs} +@@ -2253,10 +2253,10 @@ Each conversion in \tref{over.ics.scs} also has an associated rank (Exact Match, Promotion, or Conversion). These are used @@ -3460,7 +3317,7 @@ index cf7d8093..8c172ec0 100644 If any of those has Conversion rank, the sequence has Conversion rank; otherwise, if any of those has Promotion rank, the sequence has Promotion rank; otherwise, the sequence has Exact -@@ -2267,7 +2267,7 @@ by a constructor\iref{class.conv.ctor}, the initial standard +@@ -2293,7 +2293,7 @@ by a constructor\iref{class.conv.ctor}, the initial standard conversion sequence converts the source type to the type of the first parameter of that constructor. If the user-defined @@ -3469,7 +3326,7 @@ index cf7d8093..8c172ec0 100644 initial standard conversion sequence converts the source type to the type of the object parameter of that conversion function. -@@ -2403,7 +2403,7 @@ the prohibition on binding a non-\keyword{const} lvalue reference to a bit-field +@@ -2429,7 +2429,7 @@ the prohibition on binding a non-\keyword{const} lvalue reference to a bit-field \rSec4[over.ics.list]{List-initialization sequence} \pnum @@ -3478,7 +3335,7 @@ index cf7d8093..8c172ec0 100644 expression and special rules apply for converting it to a parameter type. \pnum -@@ -2645,13 +2645,13 @@ When comparing the basic forms of implicit conversion sequences +@@ -2671,13 +2671,13 @@ When comparing the basic forms of implicit conversion sequences (as defined in~\ref{over.best.ics}) \begin{itemize} \item @@ -3496,12 +3353,7 @@ index cf7d8093..8c172ec0 100644 \end{itemize} \pnum -@@ -3093,11 +3093,11 @@ The target can be - \item - an object or reference being initialized\iref{dcl.init,dcl.init.ref,dcl.init.list}, - \item --the left side of an assignment\iref{expr.ass}, -+the left side of an \link{assignment}{expr.ass}, +@@ -3123,7 +3123,7 @@ the left side of an assignment\iref{expr.assign}, \item a parameter of a function\iref{expr.call}, \item @@ -3510,7 +3362,7 @@ index cf7d8093..8c172ec0 100644 \item the return value of a function, operator function, or conversion\iref{stmt.return}, \item -@@ -3298,8 +3298,8 @@ The operators +@@ -3323,8 +3323,8 @@ The operators and \tcode{[]} are formed from more than one token. @@ -3521,7 +3373,7 @@ index cf7d8093..8c172ec0 100644 \end{note} \indextext{operator!subscripting}% \indextext{operator!function call}% -@@ -3395,7 +3395,7 @@ this is not required by operator functions. +@@ -3420,7 +3420,7 @@ this is not required by operator functions. \pnum \indextext{argument!overloaded operator and default}% @@ -3530,7 +3382,7 @@ index cf7d8093..8c172ec0 100644 except where explicitly stated below. Operator functions cannot have more or fewer parameters than the -@@ -3731,7 +3731,7 @@ to not be included in the set of candidate functions. +@@ -3756,7 +3756,7 @@ to not be included in the set of candidate functions. In this subclause, the term \defn{promoted integral type} is used to refer to those cv-unqualified integral types which are preserved by @@ -3540,10 +3392,10 @@ index cf7d8093..8c172ec0 100644 and \tcode{long} diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 7c29effc..7dd32efe 100644 +index 3e28b5dd..1118dbca 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex -@@ -425,7 +425,7 @@ shall not appear in any context not mentioned in this subclause. +@@ -504,7 +504,7 @@ shall not appear in any context not mentioned in this subclause. Each preprocessing token that remains (in the list of preprocessing tokens that will become the controlling expression) after all macro replacements have occurred @@ -3552,7 +3404,7 @@ index 7c29effc..7dd32efe 100644 \pnum Preprocessing directives of the forms -@@ -471,8 +471,8 @@ are replaced with the \grammarterm{pp-number} +@@ -551,8 +551,8 @@ are replaced with the \grammarterm{pp-number} \tcode{0}, and then each preprocessing token is converted into a token. \begin{note} @@ -3563,7 +3415,7 @@ index 7c29effc..7dd32efe 100644 even when its spelling consists entirely of letters and underscores. Therefore it is not subject to this replacement. \end{note} -@@ -490,8 +490,8 @@ Thus on an +@@ -570,8 +570,8 @@ Thus on an implementation where \tcode{std::numeric_limits::max()} is \tcode{0x7FFF} and \tcode{std::numeric_limits::max()} is \tcode{0xFFFF}, the integer literal \tcode{0x8000} is signed and positive within a \tcode{\#if} @@ -3574,7 +3426,7 @@ index 7c29effc..7dd32efe 100644 \end{note} This includes interpreting \grammarterm{character-literal}s according to the rules in \ref{lex.ccon}. -@@ -1611,7 +1611,7 @@ of the current source line is +@@ -2041,7 +2041,7 @@ of the current source line is the line number of the current physical source line, i.e., it is one greater than the number of new-line characters read or introduced @@ -3583,7 +3435,7 @@ index 7c29effc..7dd32efe 100644 while processing the source file to the current preprocessing token. \pnum -@@ -1954,7 +1954,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. +@@ -2399,7 +2399,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. \indextext{__stdcpp_threads__@\mname{STDCPP_THREADS}}% \mname{STDCPP_THREADS}\\ Defined, and has the value integer literal 1, if and only if a program @@ -3593,10 +3445,10 @@ index 7c29effc..7dd32efe 100644 \end{description} diff --git a/source/statements.tex b/source/statements.tex -index 7fcee858..74882666 100644 +index 8805695a..67189ecf 100644 --- a/source/statements.tex +++ b/source/statements.tex -@@ -197,7 +197,7 @@ Expression statements have the form +@@ -198,7 +198,7 @@ Expression statements have the form \end{bnf} The expression is @@ -3605,7 +3457,7 @@ index 7fcee858..74882666 100644 All \indextext{side effects}% side effects from an expression statement -@@ -426,10 +426,10 @@ the value of the condition is the value of the \grammarterm{expression}; +@@ -427,10 +427,10 @@ the value of the condition is the value of the \grammarterm{expression}; otherwise, it is the value of the decision variable. The value of the condition shall be of integral type, enumeration type, or class type. If of class type, the @@ -3619,7 +3471,7 @@ index 7fcee858..74882666 100644 to the promoted type. Any statement within the \keyword{switch} statement can be labeled with one or -@@ -439,7 +439,7 @@ more case labels as follows: +@@ -440,7 +440,7 @@ more case labels as follows: \keyword{case} constant-expression \terminal{:} \end{ncbnf} where the \grammarterm{constant-expression} shall be @@ -3628,7 +3480,7 @@ index 7fcee858..74882666 100644 adjusted type of the switch condition. No two of the case constants in the same switch shall have the same value after conversion. -@@ -538,7 +538,7 @@ An \grammarterm{init-statement} ends with a semicolon. +@@ -539,7 +539,7 @@ An \grammarterm{init-statement} ends with a semicolon. \pnum \indextext{scope!\idxgram{iteration-statement}}% The substatement in an \grammarterm{iteration-statement} implicitly defines @@ -3637,7 +3489,7 @@ index 7fcee858..74882666 100644 through the loop. If the substatement in an \grammarterm{iteration-statement} is a single statement and not a \grammarterm{compound-statement}, -@@ -636,7 +636,7 @@ fails. +@@ -637,7 +637,7 @@ fails. \indextext{statement!\idxcode{do}} \pnum @@ -3646,7 +3498,7 @@ index 7fcee858..74882666 100644 if that conversion is ill-formed, the program is ill-formed. \pnum -@@ -805,8 +805,8 @@ Jump statements unconditionally transfer control. +@@ -806,8 +806,8 @@ Jump statements unconditionally transfer control. \indextext{local variable!destruction of}% \indextext{scope!destructor and exit from}% \begin{note} @@ -3657,7 +3509,7 @@ index 7fcee858..74882666 100644 in the reverse order of their construction\iref{stmt.dcl}. For temporaries, see~\ref{class.temporary}. However, the program can be terminated (by calling -@@ -906,7 +906,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; +@@ -907,7 +907,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; the \tcode{return} statement initializes the returned reference or prvalue result object of the (explicit or implicit) function call @@ -3666,16 +3518,16 @@ index 7fcee858..74882666 100644 \begin{note} A constructor or destructor does not have a return type. \end{note} -@@ -1029,7 +1029,7 @@ results in undefined behavior. +@@ -1040,7 +1040,7 @@ results in undefined behavior. The \tcode{goto} statement unconditionally transfers control to the statement labeled by the identifier. The identifier shall be a \indextext{label}% -label\iref{stmt.label} located in the current function. +\link{label}{stmt.label} located in the current function. - \rSec1[stmt.dcl]{Declaration statement}% - \indextext{statement!declaration} -@@ -1098,8 +1098,8 @@ lx: + \rSec1[stmt.contract.assert]{Assertion statement} + +@@ -1151,8 +1151,8 @@ lx: \indextext{initialization!local \tcode{static}}% \indextext{initialization!local \tcode{thread_local}}% Dynamic initialization of a block variable with @@ -3686,7 +3538,7 @@ index 7fcee858..74882666 100644 the first time control passes through its declaration; such a variable is considered initialized upon the completion of its initialization. If the initialization exits by throwing an exception, the initialization is not -@@ -1142,8 +1142,8 @@ will be destroyed if and only if it was constructed. +@@ -1195,8 +1195,8 @@ will be destroyed if and only if it was constructed. \pnum There is an ambiguity in the grammar involving \grammarterm{expression-statement}{s} and \grammarterm{declaration}{s}: An @@ -3698,10 +3550,10 @@ index 7fcee858..74882666 100644 \grammarterm{declarator} starts with a \tcode{(}. In those cases the \grammarterm{statement} is considered a \grammarterm{declaration}, diff --git a/source/strings.tex b/source/strings.tex -index fde8e62c..593a1bd2 100644 +index a9615c7d..0ff1e21f 100644 --- a/source/strings.tex +++ b/source/strings.tex -@@ -5508,13 +5508,13 @@ The contents and meaning of the header \libheaderdef{cstring} +@@ -5505,13 +5505,13 @@ The contents and meaning of the header \libheaderdef{cstring} are the same as the C standard library header \libheader{string.h}. \pnum @@ -3718,7 +3570,7 @@ index fde8e62c..593a1bd2 100644 Each of these functions implicitly creates objects\iref{intro.object} in the destination region of storage immediately prior to copying the sequence of characters to the destination. -@@ -5526,7 +5526,7 @@ otherwise the value of the first parameter. +@@ -5523,7 +5523,7 @@ otherwise the value of the first parameter. The functions \tcode{strchr}, \tcode{strpbrk}, \tcode{strrchr}, \tcode{strstr}, and \tcode{memchr}, have different signatures in this document, @@ -3728,10 +3580,10 @@ index fde8e62c..593a1bd2 100644 \xrefc{7.24} diff --git a/source/support.tex b/source/support.tex -index 72a05074..b171eab1 100644 +index 7d53612a..f48bb793 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -43,22 +43,15 @@ as summarized in \tref{support.summary}. +@@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. \rSec2[cstddef.syn]{Header \tcode{} synopsis} @@ -3759,7 +3611,7 @@ index 72a05074..b171eab1 100644 // \ref{support.types.byteops}, \tcode{byte} type operations template -@@ -80,8 +73,8 @@ namespace std { +@@ -82,8 +75,8 @@ namespace std { constexpr IntType to_integer(byte b) noexcept; } @@ -3770,7 +3622,7 @@ index 72a05074..b171eab1 100644 \end{codeblock} \pnum -@@ -99,11 +92,6 @@ and as noted in +@@ -101,11 +94,6 @@ and as noted in \rSec2[cstdlib.syn]{Header \tcode{} synopsis} \indexheader{cstdlib}% @@ -3782,7 +3634,7 @@ index 72a05074..b171eab1 100644 \indexlibraryglobal{_Exit}% \indexlibraryglobal{abort}% \indexlibraryglobal{abs}% -@@ -120,7 +108,6 @@ and as noted in +@@ -122,7 +110,6 @@ and as noted in \indexlibraryglobal{div_t}% \indexlibraryglobal{exit}% \indexlibraryglobal{free}% @@ -3790,7 +3642,7 @@ index 72a05074..b171eab1 100644 \indexlibraryglobal{labs}% \indexlibraryglobal{ldiv}% \indexlibraryglobal{ldiv_t}% -@@ -155,11 +142,11 @@ namespace std { +@@ -157,11 +144,11 @@ namespace std { using lldiv_t = @\seebelow@; // freestanding } @@ -3807,7 +3659,7 @@ index 72a05074..b171eab1 100644 namespace std { // Exposition-only function type aliases -@@ -178,7 +165,7 @@ namespace std { +@@ -180,7 +167,7 @@ namespace std { [[noreturn]] void _Exit(int status) noexcept; // freestanding [[noreturn]] void quick_exit(int status) noexcept; // freestanding @@ -3816,7 +3668,7 @@ index 72a05074..b171eab1 100644 int system(const char* string); // \ref{c.malloc}, C library memory allocation -@@ -251,7 +238,7 @@ and except as noted in +@@ -253,7 +240,7 @@ and except as noted in \ref{c.math.abs}. \begin{note} Several functions have additional overloads in this document, @@ -3825,7 +3677,7 @@ index 72a05074..b171eab1 100644 \end{note} \xrefc{7.22} -@@ -305,8 +292,8 @@ is required to work as specified even if unary +@@ -307,8 +294,8 @@ is required to work as specified even if unary is overloaded for any of the types involved. \end{footnote} The expression \tcode{offsetof(\placeholder{type}, \placeholder{member-designator})} @@ -3836,7 +3688,7 @@ index 72a05074..b171eab1 100644 dependent. The result of applying the \tcode{offsetof} macro to a static data member or a function member is undefined. No operation invoked by the \tcode{offsetof} macro shall throw an exception and -@@ -1018,7 +1005,7 @@ the specialization on the unqualified type \tcode{T}. +@@ -1068,7 +1055,7 @@ the specialization on the unqualified type \tcode{T}. \pnum Non-arithmetic standard types, such as @@ -3845,7 +3697,7 @@ index 72a05074..b171eab1 100644 \rSec3[numeric.limits.members]{\tcode{numeric_limits} members} -@@ -2082,7 +2069,7 @@ The program is terminated without executing destructors for objects of automatic +@@ -2132,7 +2119,7 @@ The program is terminated without executing destructors for objects with automat thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{_Exit}}% @@ -3854,7 +3706,7 @@ index 72a05074..b171eab1 100644 \end{itemdescr} \indexlibraryglobal{abort}% -@@ -2102,7 +2089,7 @@ automatic, thread, or static storage +@@ -2152,7 +2139,7 @@ automatic, thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{abort}}% @@ -3863,7 +3715,7 @@ index 72a05074..b171eab1 100644 \end{itemdescr} \indexlibraryglobal{atexit}% -@@ -2119,7 +2106,8 @@ The +@@ -2169,7 +2156,8 @@ The functions register the function pointed to by \tcode{f} to be called without arguments at normal program termination. It is unspecified whether a call to \tcode{atexit()} that does not @@ -3873,7 +3725,7 @@ index 72a05074..b171eab1 100644 \begin{note} The \tcode{atexit()} functions do not introduce a data race\iref{res.on.data.races}. -@@ -2213,7 +2201,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; +@@ -2263,7 +2251,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; The \tcode{at_quick_exit()} functions register the function pointed to by \tcode{f} to be called without arguments when \tcode{quick_exit} is called. It is unspecified whether a call to \tcode{at_quick_exit()} that does not @@ -3883,7 +3735,7 @@ index 72a05074..b171eab1 100644 \begin{note} The \tcode{at_quick_exit()} functions do not introduce a -@@ -2265,7 +2254,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s +@@ -2315,7 +2304,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s \pnum \remarks \indextext{signal-safe!\idxcode{quick_exit}}% @@ -3892,7 +3744,7 @@ index 72a05074..b171eab1 100644 when the functions registered with \tcode{at_quick_exit} are. \end{itemdescr} -@@ -2398,7 +2387,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); +@@ -2442,7 +2431,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3901,7 +3753,7 @@ index 72a05074..b171eab1 100644 called by a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -2438,7 +2427,7 @@ a null pointer value, throws +@@ -2478,7 +2467,7 @@ a null pointer value, throws \tcode{bad_alloc}. \item Otherwise, the function calls the current @@ -3910,7 +3762,7 @@ index 72a05074..b171eab1 100644 If the called function returns, the loop repeats. \item The loop terminates when an attempt to allocate the requested storage is -@@ -2654,7 +2643,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); +@@ -2700,7 +2689,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3919,7 +3771,7 @@ index 72a05074..b171eab1 100644 called by the array form of a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -2962,8 +2951,8 @@ versions of \tcode{operator delete}, the C standard library function +@@ -3013,8 +3002,8 @@ versions of \tcode{operator delete}, the C standard library function introduce a data race\iref{res.on.data.races}. Calls to these functions that allocate or deallocate a particular unit of storage shall occur in a single total order, and each such deallocation call @@ -3930,7 +3782,7 @@ index 72a05074..b171eab1 100644 \rSec2[alloc.errors]{Storage allocation errors} -@@ -3117,8 +3106,8 @@ template constexpr T* launder(T* p) noexcept; +@@ -3168,8 +3157,8 @@ template constexpr T* launder(T* p) noexcept; \pnum \expects \tcode{p} represents the address \placeholder{A} of a byte in memory. @@ -3941,7 +3793,7 @@ index 72a05074..b171eab1 100644 is located at the address \placeholder{A}. All bytes of storage that would be reachable through\iref{basic.compound} the result -@@ -3331,7 +3320,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. +@@ -3382,7 +3371,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. \pnum \remarks @@ -3951,7 +3803,7 @@ index 72a05074..b171eab1 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. \end{itemdescr} -@@ -3905,7 +3895,8 @@ the ordinary literal encoding\iref{lex.ccon}. +@@ -3956,7 +3946,8 @@ the ordinary literal encoding\iref{lex.ccon}. \pnum \remarks @@ -3961,14 +3813,7 @@ index 72a05074..b171eab1 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. The return value remains valid until the exception object from which -@@ -4050,13 +4041,13 @@ constexpr int uncaught_exceptions() noexcept; - \begin{itemdescr} - \pnum - \returns --The number of uncaught exceptions\iref{except.uncaught}. -+The number of \link{uncaught exceptions}{except.uncaught}. - - \pnum +@@ -4107,7 +4098,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread. \remarks When \tcode{uncaught_exceptions() > 0}, throwing an exception can result in a call of the function @@ -3977,7 +3822,7 @@ index 72a05074..b171eab1 100644 \end{itemdescr} \rSec2[propagation]{Exception propagation} -@@ -4118,8 +4109,9 @@ constexpr exception_ptr current_exception() noexcept; +@@ -4169,8 +4160,9 @@ constexpr exception_ptr current_exception() noexcept; \begin{itemdescr} \pnum \returns @@ -3989,7 +3834,7 @@ index 72a05074..b171eab1 100644 handled exception, or a null \tcode{exception_ptr} object if no exception is being handled. The referenced object shall remain valid at least as long as there is an \tcode{exception_ptr} object that refers to it. -@@ -4442,7 +4434,7 @@ template constexpr const E* end(initializer_list il) noexcept; +@@ -4755,7 +4747,7 @@ template constexpr const E* end(initializer_list il) noexcept; \pnum The header \libheaderdef{compare} specifies types, objects, and functions for use primarily in connection with @@ -3998,7 +3843,7 @@ index 72a05074..b171eab1 100644 \indexlibraryglobal{is_eq}% \indexlibraryglobal{is_neq}% -@@ -5983,7 +5975,7 @@ environment. +@@ -6296,7 +6288,7 @@ environment. \end{note} \pnum @@ -4007,47 +3852,11 @@ index 72a05074..b171eab1 100644 may introduce a data race with other calls to the \tcode{setlocale} function or with calls to functions that are affected by the current C locale. The implementation shall behave as if no -@@ -5993,21 +5985,16 @@ function. - \rSec2[cstdarg.syn]{Header \tcode{} synopsis} - - \indexheader{cstdarg}% --\indexlibraryglobal{va_list}% --\indexlibraryglobal{va_start}% --\indexlibraryglobal{va_copy}% --\indexlibraryglobal{va_end}% --\indexlibraryglobal{va_arg}% - \begin{codeblock} - // all freestanding - namespace std { -- using va_list = @\seebelow@; -+ using @\libglobal{va_list}@ = @\seebelow@; - } - --#define va_arg(V, P) @\seebelow@ --#define va_copy(VDST, VSRC) @\seebelow@ --#define va_end(V) @\seebelow@ --#define va_start(V, P) @\seebelow@ -+#define @\libglobal{va_arg}@(V, P) @\seebelow@ -+#define @\libglobal{va_copy}@(VDST, VSRC) @\seebelow@ -+#define @\libglobal{va_end}@(V) @\seebelow@ -+#define @\libglobal{va_start}@(V, P) @\seebelow@ - \end{codeblock} - - \pnum diff --git a/source/templates.tex b/source/templates.tex -index d616394c..29472189 100644 +index 0294586d..2224584d 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -603,7 +603,7 @@ If a \grammarterm{template-parameter} is a - optional \grammarterm{identifier} or is a - \grammarterm{parameter-declaration} that declares a - pack\iref{dcl.fct}, then the \grammarterm{template-parameter} --is a template parameter pack\iref{temp.variadic}. -+is a \deflink{template parameter pack}{temp.variadic}. - A template parameter pack that is a \grammarterm{parameter-declaration} whose type - contains one or more unexpanded packs is a pack expansion. Similarly, - a template parameter pack that is a \grammarterm{type-parameter} with a -@@ -635,7 +635,7 @@ template // error: \tcode{Values} expands +@@ -681,7 +681,7 @@ struct A {}; \rSec1[temp.names]{Names of template specializations} \pnum @@ -4056,7 +3865,7 @@ index d616394c..29472189 100644 \grammarterm{template-id}: \begin{bnf} -@@ -932,8 +932,8 @@ specified in a +@@ -973,8 +973,8 @@ specified in a shall match the type and form specified for the corresponding parameter declared by the template in its \grammarterm{template-parameter-list}. @@ -4067,7 +3876,7 @@ index d616394c..29472189 100644 \grammarterm{template-argument}{s}. \begin{example} \begin{codeblock} -@@ -1096,7 +1096,7 @@ the program is ill-formed. +@@ -1137,7 +1137,7 @@ the program is ill-formed. \pnum When a \grammarterm{simple-template-id} does not name a function, a default \grammarterm{template-argument} is @@ -4076,16 +3885,16 @@ index d616394c..29472189 100644 when the value of that default argument is needed. \begin{example} \begin{codeblock} -@@ -1108,7 +1108,7 @@ The default argument for \tcode{U} is instantiated to form the type \tcode{S 1} is not satisfied; the second operand is not checked for satisfaction. \end{example} -@@ -1642,9 +1642,9 @@ in the declaration of a constrained entity (and, therefore, can involve the +@@ -1703,9 +1703,9 @@ in the declaration of a constrained entity (and, therefore, can involve the unsubstituted template parameters of the constrained entity), called the \defn{parameter mapping}\iref{temp.constr.decl}. \begin{note} @@ -4136,7 +3945,7 @@ index d616394c..29472189 100644 \end{note} \pnum -@@ -1721,7 +1721,7 @@ first substituted into its expression. +@@ -1782,7 +1782,7 @@ first substituted into its expression. If substitution results in an invalid type or expression in the immediate context of the atomic constraint\iref{temp.deduct.general}, the constraint is not satisfied. @@ -4145,7 +3954,7 @@ index d616394c..29472189 100644 is performed if necessary, and \tcode{E} shall be a constant expression of type \tcode{bool}. The constraint is satisfied if and only if evaluation of \tcode{E} -@@ -1820,11 +1820,11 @@ A declaration's \defn{associated constraints} are defined as follows: +@@ -1945,11 +1945,11 @@ A declaration's \defn{associated constraints} are defined as follows: the declaration has no associated constraints. \item Otherwise, if there is a single introduced \grammarterm{constraint-expression}, @@ -4160,7 +3969,7 @@ index d616394c..29472189 100644 following order: \begin{itemize} \item -@@ -1921,7 +1921,7 @@ so it does match \#2. +@@ -2046,7 +2046,7 @@ so it does match \#2. \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is @@ -4169,7 +3978,7 @@ index d616394c..29472189 100644 % \begin{itemize} \item -@@ -1930,7 +1930,7 @@ the normal form of \tcode{E}. +@@ -2055,7 +2055,7 @@ the normal form of \tcode{E}. \item The normal form of an expression \tcode{E1 || E2} is @@ -4178,7 +3987,7 @@ index d616394c..29472189 100644 the normal forms of \tcode{E1} and \tcode{E2}. \item -@@ -2090,7 +2090,7 @@ the constraint of $A$ subsumes that of $B$. +@@ -2302,7 +2302,7 @@ the constraint of $A$ subsumes that of $B$. \end{itemize} % \begin{example} @@ -4187,7 +3996,7 @@ index d616394c..29472189 100644 % The constraint $A \land B$ subsumes $A$, but $A$ does not subsume $A \land B$. % -@@ -2282,7 +2282,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. +@@ -2518,7 +2518,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. \end{example} \pnum @@ -4196,7 +4005,7 @@ index d616394c..29472189 100644 \tcode{decltype($e$)} denotes a unique dependent type. Two such \grammarterm{decltype-specifier}{s} refer to the same type only if their \grammarterm{expression}{s} are -@@ -2352,8 +2352,8 @@ default arguments, +@@ -2588,8 +2588,8 @@ default arguments, \grammarterm{requires-clause}{s}, or \grammarterm{noexcept-specifier}{s}. @@ -4207,7 +4016,7 @@ index d616394c..29472189 100644 \pnum Because an \grammarterm{alias-declaration} cannot declare a -@@ -2708,7 +2708,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} +@@ -2943,7 +2943,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} \pnum A local class of non-closure type shall not have member templates. @@ -4216,7 +4025,7 @@ index d616394c..29472189 100644 apply to member template names. A destructor shall not be a member template. -@@ -2920,7 +2920,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. +@@ -3163,7 +3163,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. \item In a \grammarterm{capture-list}\iref{expr.prim.lambda.capture}; the pattern is the \grammarterm{capture} without the ellipsis. @@ -4225,7 +4034,7 @@ index d616394c..29472189 100644 \grammarterm{identifier}. \item In a \grammarterm{pack-index-expression}; -@@ -3539,9 +3539,9 @@ primary template. +@@ -3786,9 +3786,9 @@ primary template. \pnum A partial specialization matches a given actual template argument list if the template arguments of the partial specialization can be @@ -4238,7 +4047,7 @@ index d616394c..29472189 100644 \begin{example} \begin{codeblock} template class A { }; // \#1 -@@ -3603,14 +3603,14 @@ of the primary template. +@@ -3850,14 +3850,14 @@ of the primary template. For two partial specializations, the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more @@ -4256,7 +4065,7 @@ index d616394c..29472189 100644 as the corresponding partial specialization. \item Each function template -@@ -3816,8 +3816,8 @@ void h(int* p) { +@@ -4063,8 +4063,8 @@ void h(int* p) { \end{example} \pnum @@ -4267,7 +4076,7 @@ index d616394c..29472189 100644 \pnum The signature of a function template -@@ -3868,7 +3868,7 @@ For example, a template type parameter can be used in the +@@ -4115,7 +4115,7 @@ For example, a template type parameter can be used in the Two expressions involving template parameters are considered \defnx{equivalent}{equivalent!expressions} if two function definitions containing the expressions would satisfy @@ -4276,7 +4085,7 @@ index d616394c..29472189 100644 to name the template parameters may differ as long as a token used to name a template parameter in one expression is replaced by another token that names the same template parameter in the other expression. -@@ -4038,8 +4038,8 @@ function template +@@ -4287,8 +4287,8 @@ function template specialization is selected to match a placement operator new\iref{basic.stc.dynamic.deallocation,expr.new}; \item @@ -4287,17 +4096,7 @@ index d616394c..29472189 100644 a function template specialization. \end{itemize} -@@ -4057,7 +4057,8 @@ the more constrained template (if one exists) as determined below. - - \pnum - To produce the transformed template, for each type, non-type, or template --template parameter (including template parameter packs\iref{temp.variadic} -+template parameter (including -+\deflinkx{template parameter packs}{template parameter pack}{temp.variadic} - thereof) synthesize a unique type, value, or class template - respectively and substitute it for each occurrence of that parameter - in the function type of the template. -@@ -4407,7 +4408,7 @@ A \grammarterm{concept-definition} +@@ -4670,7 +4670,7 @@ A \grammarterm{concept-definition} shall inhabit a namespace scope\iref{basic.scope.namespace}. \pnum @@ -4306,7 +4105,7 @@ index d616394c..29472189 100644 \pnum A concept is not instantiated\iref{temp.spec}. -@@ -4717,7 +4718,7 @@ was a pack expansion and the corresponding pack is empty, or +@@ -4981,7 +4981,7 @@ was a pack expansion and the corresponding pack is empty, or \item an instantiation uses a default argument or default template argument that had not been defined at the point at which the template was defined, or @@ -4315,7 +4114,7 @@ index d616394c..29472189 100644 instantiation uses \begin{itemize} \item the value of a const object of integral or unscoped enumeration type or -@@ -4970,7 +4971,7 @@ any of the expressions +@@ -5234,7 +5234,7 @@ any of the expressions or \grammarterm{braced-init-list}{s} in the \grammarterm{expression-list} @@ -4324,7 +4123,7 @@ index d616394c..29472189 100644 \item the \grammarterm{unqualified-id} is a \grammarterm{template-id} in which any of the template arguments depends -@@ -5030,7 +5031,7 @@ if it is +@@ -5294,7 +5294,7 @@ if it is \item in the definition of a class template, a nested class of a class template, a member of a class template, or a member of a nested class of a class template, @@ -4333,7 +4132,7 @@ index d616394c..29472189 100644 \item in the definition of a primary class template or a member of a primary class template, the name of the -@@ -5312,7 +5313,7 @@ used without a \grammarterm{template-argument-list}. +@@ -5573,7 +5573,7 @@ used without a \grammarterm{template-argument-list}. \end{footnote} \item a \grammarterm{pack-index-specifier}, or \item denoted by \tcode{decltype(}\grammarterm{expression}{}\tcode{)}, @@ -4342,7 +4141,7 @@ index d616394c..29472189 100644 \end{itemize} \pnum -@@ -5447,7 +5448,7 @@ see~\ref{support.types}. +@@ -5712,7 +5712,7 @@ see~\ref{support.types}. \end{note} \pnum @@ -4351,7 +4150,7 @@ index d616394c..29472189 100644 type-dependent if the terminal name of its \grammarterm{id-expression}, if any, is dependent or the expression refers to a member of the current instantiation and -@@ -5580,7 +5581,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the +@@ -5847,7 +5847,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the instantiation is value-dependent. An expression of the form \tcode{\&}\grammarterm{cast-expression} is also value-dependent if evaluating \grammarterm{cast-expression} @@ -4360,7 +4159,7 @@ index d616394c..29472189 100644 the result of the evaluation refers to a templated entity that is an object with static or thread storage duration or a member function. -@@ -5700,7 +5701,7 @@ within a translation unit. +@@ -5971,7 +5971,7 @@ within a translation unit. A specialization for any template may have points of instantiation in multiple translation units. If two different points of instantiation give a template specialization @@ -4369,7 +4168,7 @@ index d616394c..29472189 100644 the program is ill-formed, no diagnostic required. \rSec3[temp.dep.candidate]{Candidate functions} -@@ -6005,7 +6006,7 @@ of type +@@ -6276,7 +6276,7 @@ of type \pnum If a function declaration acquired its function type through @@ -4378,7 +4177,7 @@ index d616394c..29472189 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -6086,7 +6087,7 @@ X ch; // error: incomplete type \tcode{X} +@@ -6357,7 +6357,7 @@ X ch; // error: incomplete type \tcode{X} \end{example} \begin{note} Within a template declaration, @@ -4387,7 +4186,7 @@ index d616394c..29472189 100644 a local class are never considered to be entities that can be separately instantiated (this includes their default arguments, \grammarterm{noexcept-specifier}{s}, and non-static data member -@@ -6264,7 +6265,7 @@ void x() { +@@ -6535,7 +6535,7 @@ void x() { \end{example} \pnum @@ -4396,7 +4195,7 @@ index d616394c..29472189 100644 can be determined without instantiating a class template definition, it is unspecified whether that instantiation actually takes place. \begin{example} -@@ -6599,7 +6600,7 @@ If an entity is the subject of both an explicit instantiation declaration +@@ -6872,7 +6872,7 @@ If an entity is the subject of both an explicit instantiation declaration and an explicit instantiation definition in the same translation unit, the definition shall follow the declaration. An entity that is the subject of an explicit instantiation declaration and that is also used @@ -4405,7 +4204,7 @@ index d616394c..29472189 100644 in the translation unit shall be the subject of an explicit instantiation definition somewhere in the program; otherwise the program is ill-formed, no diagnostic required. -@@ -7658,7 +7659,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. +@@ -7936,7 +7936,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. In the following example, assuming a \tcode{signed char} cannot represent the value 1000, @@ -4414,7 +4213,7 @@ index d616394c..29472189 100644 would be required to convert the \grammarterm{template-argument} of type \tcode{int} to \tcode{signed char}, -@@ -7767,8 +7768,8 @@ is not a reference type: +@@ -8045,8 +8045,8 @@ is not a reference type: \item If \tcode{A} @@ -4425,7 +4224,7 @@ index d616394c..29472189 100644 \tcode{A} for type deduction; otherwise, -@@ -7776,7 +7777,7 @@ otherwise, +@@ -8054,7 +8054,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -4434,7 +4233,7 @@ index d616394c..29472189 100644 of \tcode{A} for type -@@ -7872,8 +7873,8 @@ The transformed \tcode{A} +@@ -8150,8 +8150,8 @@ The transformed \tcode{A} can be another pointer or pointer-to-member type that can be converted to the deduced \tcode{A} @@ -4445,7 +4244,7 @@ index d616394c..29472189 100644 \item If -@@ -8005,7 +8006,7 @@ void test() { +@@ -8282,7 +8282,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -4454,7 +4253,7 @@ index d616394c..29472189 100644 If there is a target, the function template's function type and the target type are used as the types of -@@ -8052,7 +8053,7 @@ is not a reference type: +@@ -8329,7 +8329,7 @@ is not a reference type: If \tcode{P} is an array type, the pointer type produced by the @@ -4463,7 +4262,7 @@ index d616394c..29472189 100644 \tcode{P} for type deduction; otherwise, -@@ -8060,7 +8061,7 @@ deduction; otherwise, +@@ -8337,7 +8337,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -4472,7 +4271,7 @@ index d616394c..29472189 100644 \tcode{P} for type deduction; otherwise, -@@ -8151,7 +8152,7 @@ after a function has been selected. +@@ -8428,7 +8428,7 @@ after a function has been selected. In the context of a call to a conversion function, the return types of the conversion function templates are used. \item @@ -4481,7 +4280,7 @@ index d616394c..29472189 100644 type is used. \end{itemize} -@@ -8666,7 +8667,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the +@@ -8942,7 +8942,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the template argument list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by $\texttt{P}_i$. @@ -4490,7 +4289,7 @@ index d616394c..29472189 100644 originally a pack expansion: \begin{itemize} \item if \tcode{P} does not contain a template argument corresponding to -@@ -8729,7 +8730,7 @@ each remaining parameter type in the parameter-type-list +@@ -9005,7 +9005,7 @@ each remaining parameter type in the parameter-type-list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by the function parameter pack. @@ -4499,7 +4298,7 @@ index d616394c..29472189 100644 originally a function parameter pack: \begin{itemize} \item if \tcode{P} does not contain a function parameter type corresponding to -@@ -9026,8 +9027,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod +@@ -9299,8 +9299,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod In a declaration whose \grammarterm{declarator-id} refers to a specialization of a function template, template argument deduction is performed to identify the specialization to which the declaration refers. Specifically, this is done @@ -4511,7 +4310,7 @@ index d616394c..29472189 100644 \tcode{operator new}\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index 212367ad..15068b87 100644 +index f5000051..9ebc2602 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4534,7 +4333,7 @@ index 212367ad..15068b87 100644 \begin{itemdecl} m.try_lock_for(rel_time) -@@ -6633,7 +6633,7 @@ namespace std { +@@ -6574,7 +6574,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -4543,7 +4342,7 @@ index 212367ad..15068b87 100644 An execution agent \term{owns} a mutex from the time it successfully calls one of the lock functions until it calls unlock. Mutexes can be either recursive or non-recursive, and can grant simultaneous ownership to one or many execution agents. Both -@@ -6677,7 +6677,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on +@@ -6618,7 +6618,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on a single mutex appears to occur in a single total order. \begin{note} This @@ -4552,7 +4351,7 @@ index 212367ad..15068b87 100644 mutex. \end{note} \begin{note} -@@ -6757,7 +6757,7 @@ in the absence of contending mutex acquisitions. +@@ -6698,7 +6698,7 @@ in the absence of contending mutex acquisitions. \pnum \sync If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations @@ -4561,7 +4360,7 @@ index 212367ad..15068b87 100644 \begin{note} Since \tcode{lock()} does not synchronize with a failed subsequent \tcode{try_lock()}, the visibility rules are weak enough that little would be -@@ -6793,7 +6793,7 @@ Releases the calling thread's ownership of the mutex. +@@ -6734,7 +6734,7 @@ Releases the calling thread's ownership of the mutex. \pnum \sync @@ -4570,7 +4369,7 @@ index 212367ad..15068b87 100644 lock operations that obtain ownership on the same object. \pnum -@@ -6922,9 +6922,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, +@@ -6863,9 +6863,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, meet the requirements set out below. In this description, \tcode{m} denotes an object of a mutex type, \tcode{rel_time} denotes an object of an @@ -4582,7 +4381,7 @@ index 212367ad..15068b87 100644 \begin{note} The timed mutex types meet the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. -@@ -7214,7 +7214,7 @@ Releases a shared lock on the mutex held by the calling thread. +@@ -7155,7 +7155,7 @@ Releases a shared lock on the mutex held by the calling thread. \pnum \sync @@ -4591,7 +4390,7 @@ index 212367ad..15068b87 100644 \tcode{lock()} operations that obtain ownership on the same object. \pnum -@@ -7318,7 +7318,7 @@ meet the requirements set out below. In this description, +@@ -7259,7 +7259,7 @@ meet the requirements set out below. In this description, \tcode{rel_time} denotes an object of an instantiation of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes an object of an instantiation of @@ -4600,7 +4399,7 @@ index 212367ad..15068b87 100644 \begin{note} The shared timed mutex types meet the \oldconcept{SharedTimedLockable} requirements\iref{thread.req.lockable.shared.timed}. -@@ -7529,7 +7529,7 @@ namespace std { +@@ -7470,7 +7470,7 @@ namespace std { \pnum An object of type \tcode{lock_guard} controls the ownership of a lockable object within a scope. A \tcode{lock_guard} object maintains ownership of a lockable @@ -4609,7 +4408,7 @@ index 212367ad..15068b87 100644 The behavior of a program is undefined if the lockable object referenced by \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} -@@ -7602,7 +7602,7 @@ namespace std { +@@ -7543,7 +7543,7 @@ namespace std { \pnum An object of type \tcode{scoped_lock} controls the ownership of lockable objects within a scope. A \tcode{scoped_lock} object maintains ownership of lockable @@ -4618,7 +4417,7 @@ index 212367ad..15068b87 100644 The behavior of a program is undefined if the lockable objects referenced by \tcode{pm} do not exist for the entire lifetime of the \tcode{scoped_lock} object. -@@ -8770,7 +8770,7 @@ earlier returning execution. +@@ -8700,7 +8700,7 @@ earlier returning execution. \pnum \sync For any given \tcode{once_flag}: all active executions occur in a total @@ -4627,7 +4426,7 @@ index 212367ad..15068b87 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -10736,22 +10736,21 @@ the state object. +@@ -10666,22 +10666,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4654,7 +4453,7 @@ index 212367ad..15068b87 100644 \begin{note} This explicitly specifies that the result of the shared state is visible in the objects that reference this state in the sense of data race -@@ -11087,8 +11086,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -11017,8 +11016,8 @@ The class template \tcode{future} defines a type for asynchronous return objects do not share their shared state with other asynchronous return objects. A default-constructed \tcode{future} object has no shared state. A \tcode{future} object with shared state can be created by @@ -4665,7 +4464,7 @@ index 212367ad..15068b87 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -11398,7 +11397,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -11328,7 +11327,7 @@ object has no shared state. A \tcode{shared_future} object with shared state can be created by conversion from a \tcode{future} object and shares its shared state with the @@ -4674,7 +4473,7 @@ index 212367ad..15068b87 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -11847,7 +11846,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -11777,7 +11776,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -4684,7 +4483,7 @@ index 212367ad..15068b87 100644 the first function that successfully detects the ready status of the shared state or diff --git a/source/time.tex b/source/time.tex -index f74e3a87..66f8c4c0 100644 +index 97c79981..afb0df94 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1222,7 +1222,7 @@ unless it meets all of the following conditions: @@ -4733,10 +4532,10 @@ index f74e3a87..66f8c4c0 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index 6c2b5b68..316f0500 100644 +index 54df0b8d..c8862145 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -103,15 +103,15 @@ namespace std { +@@ -104,15 +104,15 @@ namespace std { template struct integer_sequence; template @@ -4755,7 +4554,7 @@ index 6c2b5b68..316f0500 100644 // \ref{pairs}, class template \tcode{pair} template -@@ -317,7 +317,7 @@ of forwarding functions. +@@ -333,7 +333,7 @@ of forwarding functions. \indextext{signal-safe!\idxcode{forward}}% \indextext{signal-safe!\idxcode{move}}% \indextext{signal-safe!\idxcode{move_if_noexcept}}% @@ -4764,7 +4563,7 @@ index 6c2b5b68..316f0500 100644 \indexlibraryglobal{forward}% \indextext{\idxcode{forward}}% -@@ -492,7 +492,7 @@ template constexpr add_const_t& as_const(T& t) noexcept; +@@ -508,7 +508,7 @@ template constexpr add_const_t& as_const(T& t) noexcept; \pnum The library provides the function template \tcode{declval} to simplify the definition of @@ -4773,7 +4572,7 @@ index 6c2b5b68..316f0500 100644 \indexlibraryglobal{declval}% \begin{itemdecl} -@@ -1472,7 +1472,7 @@ inline constexpr piecewise_construct_t piecewise_construct{}; +@@ -1499,7 +1499,7 @@ inline constexpr piecewise_construct_t piecewise_construct{}; The \keyword{struct} \tcode{piecewise_construct_t} is an empty class type used as a unique type to disambiguate constructor and function overloading. Specifically, \tcode{pair} has a constructor with \tcode{piecewise_construct_t} as the @@ -4782,7 +4581,7 @@ index 6c2b5b68..316f0500 100644 for piecewise construction of the elements of the \tcode{pair} object. \rSec1[tuple]{Tuples} -@@ -2117,7 +2117,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. +@@ -2144,7 +2144,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. \pnum \effects Equivalent to the preceding constructors except that each element is constructed with @@ -4791,7 +4590,7 @@ index 6c2b5b68..316f0500 100644 \end{itemdescr} \rSec3[tuple.assign]{Assignment} -@@ -2783,7 +2783,7 @@ template struct tuple_size; +@@ -2810,7 +2810,7 @@ template struct tuple_size; \pnum Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. If the expression \tcode{TS::value} is well-formed @@ -4800,7 +4599,7 @@ index 6c2b5b68..316f0500 100644 each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts} with a base characteristic of \begin{codeblock} -@@ -6325,6 +6325,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); +@@ -6354,6 +6354,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); \rSec2[variant.monostate]{Class \tcode{monostate}}% \indexlibraryglobal{monostate}% @@ -4808,7 +4607,7 @@ index 6c2b5b68..316f0500 100644 \begin{itemdecl} struct monostate{}; \end{itemdecl} -@@ -6491,7 +6492,8 @@ namespace std { +@@ -6522,7 +6523,8 @@ namespace std { \end{codeblock} \pnum @@ -4822,22 +4621,22 @@ index 6c2b5b68..316f0500 100644 2.43.0 -From 1816db977f1ab2b145a2872a18f35b132c2b409b Mon Sep 17 00:00:00 2001 +From a18a8c5f8d114a9142b0308293e5175e55813981 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 -Subject: [PATCH 05/13] Fix dubious \defnx that has see{} in it, and remove +Subject: [PATCH 04/14] Fix dubious \defnx that has see{} in it, and remove range index entry with the same key. --- source/iostreams.tex | 2 +- - source/templates.tex | 5 ++--- - 2 files changed, 3 insertions(+), 4 deletions(-) + source/templates.tex | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index b825f374..448d6af7 100644 +index 015fb1d2..d7c5889b 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -13902,7 +13902,7 @@ without an intervening \grammarterm{root-directory} element. +@@ -13911,7 +13911,7 @@ without an intervening \grammarterm{root-directory} element. \pnum \indextext{path!normalization|(}% @@ -4847,10 +4646,10 @@ index b825f374..448d6af7 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index 29472189..e6cbd553 100644 +index 2224584d..b59dafd4 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -1917,7 +1917,6 @@ so it does match \#2. +@@ -2042,7 +2042,6 @@ so it does match \#2. \end{example} \rSec2[temp.constr.normal]{Constraint normalization} @@ -4858,7 +4657,7 @@ index 29472189..e6cbd553 100644 \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is -@@ -2007,10 +2006,11 @@ whose parameter mapping is the identity mapping. +@@ -2161,10 +2160,11 @@ whose parameter mapping is the identity mapping. \end{itemize} \pnum @@ -4871,22 +4670,14 @@ index 29472189..e6cbd553 100644 \begin{note} Normalization of \grammarterm{constraint-expression}{s} is performed -@@ -2040,7 +2040,6 @@ The associated constraints of \#2 are - The associated constraints of \#3 are - \tcode{requires (T x) \{ ++x; \}} (with mapping $\tcode{T} \mapsto \tcode{U}$). - \end{example} --\indextext{constraint!normalization|)} - - \rSec2[temp.constr.order]{Partial ordering by constraints} - -- 2.43.0 -From d03e3a69b82866688d1a13e8dac648f945e14624 Mon Sep 17 00:00:00 2001 +From 38f8dec965dd7f0c3a62805c4647fd5d7d38281a Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:27:17 +0100 -Subject: [PATCH 06/13] Replace more non-codeblocks with outputblocks. +Subject: [PATCH 05/14] Replace more non-codeblocks with outputblocks. --- source/iostreams.tex | 12 ++++++------ @@ -4894,10 +4685,10 @@ Subject: [PATCH 06/13] Replace more non-codeblocks with outputblocks. 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index 448d6af7..a208b372 100644 +index d7c5889b..49e3d2c1 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -17363,16 +17363,16 @@ library functions called by the implementation shall have an \tcode{error_code} +@@ -17372,16 +17372,16 @@ library functions called by the implementation shall have an \tcode{error_code} \pnum \begin{example} Given this directory structure: @@ -4917,7 +4708,7 @@ index 448d6af7..a208b372 100644 /dir1 file1 file2 -@@ -17381,10 +17381,10 @@ Calling \tcode{copy("/dir1", "/dir3")} would result in: +@@ -17390,10 +17390,10 @@ Calling \tcode{copy("/dir1", "/dir3")} would result in: /dir3 file1 file2 @@ -4930,7 +4721,7 @@ index 448d6af7..a208b372 100644 /dir1 file1 file2 -@@ -17395,7 +17395,7 @@ Alternatively, calling \tcode{copy("/dir1", "/dir3", copy_options::recursive)} w +@@ -17404,7 +17404,7 @@ Alternatively, calling \tcode{copy("/dir1", "/dir3", copy_options::recursive)} w file2 dir2 file3 @@ -4961,10 +4752,10 @@ index ee0bb9c2..5b236c6e 100644 2.43.0 -From 1ce0f8f3ce74f79c5c8aaae1b71a7bc5f228742d Mon Sep 17 00:00:00 2001 +From 78c58264b983ab273ecfa257f9ed7f83796f2117 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 -Subject: [PATCH 07/13] Use cxxdraft-htmlgen macros to annotate non-C++ code +Subject: [PATCH 06/14] Use cxxdraft-htmlgen macros to annotate non-C++ code and literal fragments. --- @@ -4974,7 +4765,7 @@ Subject: [PATCH 07/13] Use cxxdraft-htmlgen macros to annotate non-C++ code 3 files changed, 319 insertions(+), 319 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex -index c5e0e545..c1e16c1e 100644 +index 12cfcb8d..190e0ac6 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -135,11 +135,11 @@ does not declare a variable. @@ -4992,10 +4783,10 @@ index c5e0e545..c1e16c1e 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index bc0f5b3b..217e727b 100644 +index ac260145..b23f0e17 100644 --- a/source/lex.tex +++ b/source/lex.tex -@@ -566,7 +566,7 @@ given character: +@@ -569,7 +569,7 @@ given character: \item \indextext{literal!string!raw}% If the next character begins a sequence of characters that could be the prefix @@ -5004,7 +4795,7 @@ index bc0f5b3b..217e727b 100644 token shall be a raw string literal. Between the initial and final double quote characters of the raw string, any transformations performed in phase 2 (line splicing) are reverted; this reversion -@@ -574,7 +574,7 @@ shall apply before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting +@@ -577,7 +577,7 @@ shall apply before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting parenthesis is identified. The raw string literal is defined as the shortest sequence of characters that matches the raw-string pattern \begin{ncbnf} @@ -5013,7 +4804,7 @@ index bc0f5b3b..217e727b 100644 \end{ncbnf} \item Otherwise, if the next three characters are \tcode{<::} and the subsequent character -@@ -692,15 +692,15 @@ depending on the implementation. +@@ -695,15 +695,15 @@ depending on the implementation. \begin{bnf} \nontermdef{pp-number}\br digit\br @@ -5037,7 +4828,7 @@ index bc0f5b3b..217e727b 100644 \end{bnf} \pnum -@@ -1121,19 +1121,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1128,19 +1128,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. \nontermdef{binary-literal}\br \terminal{0b} binary-digit\br \terminal{0B} binary-digit\br @@ -5060,7 +4851,7 @@ index bc0f5b3b..217e727b 100644 \end{bnf} \begin{bnf} -@@ -1164,14 +1164,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1171,14 +1171,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{hexadecimal-digit-sequence}\br hexadecimal-digit\br @@ -5079,7 +4870,7 @@ index bc0f5b3b..217e727b 100644 \end{bnf} \begin{bnf} -@@ -1186,17 +1186,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1193,17 +1193,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{unsigned-suffix} \textnormal{one of}\br @@ -5100,7 +4891,7 @@ index bc0f5b3b..217e727b 100644 \end{bnf} \begin{bnf} -@@ -1235,7 +1235,7 @@ when determining the value. +@@ -1242,7 +1242,7 @@ when determining the value. \pnum The \grammarterm{hexadecimal-digit}s @@ -5109,7 +4900,7 @@ index bc0f5b3b..217e727b 100644 have decimal values ten through fifteen. \begin{example} The number twelve can be written \tcode{12}, \tcode{014}, -@@ -1279,7 +1279,7 @@ none & +@@ -1286,7 +1286,7 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -5118,7 +4909,7 @@ index bc0f5b3b..217e727b 100644 \tcode{unsigned int} & \tcode{unsigned int}\\ & -@@ -1288,7 +1288,7 @@ none & +@@ -1295,7 +1295,7 @@ none & & \tcode{unsigned long long int} & \tcode{unsigned long long int}\\\hline @@ -5127,7 +4918,7 @@ index bc0f5b3b..217e727b 100644 \tcode{long int} & \tcode{long int}\\ & -@@ -1300,22 +1300,22 @@ none & +@@ -1307,22 +1307,22 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -5155,7 +4946,7 @@ index bc0f5b3b..217e727b 100644 & \\\hline \tcode{z} or \tcode{Z} & -@@ -1363,12 +1363,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1370,12 +1370,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \indextext{literal!character}% \begin{bnf} \nontermdef{character-literal}\br @@ -5170,7 +4961,7 @@ index bc0f5b3b..217e727b 100644 \end{bnf} \begin{bnf} -@@ -1419,16 +1419,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1426,16 +1426,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{octal-escape-sequence}\br @@ -5193,7 +4984,7 @@ index bc0f5b3b..217e727b 100644 \end{bnf} \begin{bnf} -@@ -1616,42 +1616,42 @@ is supported for compatibility with \CppXIV{} and C. +@@ -1623,42 +1623,42 @@ is supported for compatibility with \CppXIV{} and C. \begin{bnf} \nontermdef{fractional-constant}\br @@ -5247,18 +5038,18 @@ index bc0f5b3b..217e727b 100644 \end{bnf} \pnum -@@ -1679,13 +1679,13 @@ are conditionally-supported. See \ref{basic.extended.fp}. +@@ -1686,13 +1686,13 @@ are conditionally-supported. See \ref{basic.extended.fp}. \topline \lhdr{\grammarterm{floating-point-suffix}} & \rhdr{type} \\ \capsep none & \keyword{double} \\ --\tcode{f} or \tcode{F} & \keyword {float} \\ +-\tcode{f} or \tcode{F} & \keyword{float} \\ -\tcode{l} or \tcode{L} & \keyword{long} \keyword{double} \\ -\tcode{f16} or \tcode{F16} & \tcode{std::float16_t} \\ -\tcode{f32} or \tcode{F32} & \tcode{std::float32_t} \\ -\tcode{f64} or \tcode{F64} & \tcode{std::float64_t} \\ -\tcode{f128} or \tcode{F128} & \tcode{std::float128_t} \\ -\tcode{bf16} or \tcode{BF16} & \tcode{std::bfloat16_t} \\ -+\literaltcode{f} or \literaltcode{F} & \keyword {float} \\ ++\literaltcode{f} or \literaltcode{F} & \keyword{float} \\ +\literaltcode{l} or \literaltcode{L} & \keyword{long} \keyword{double} \\ +\literaltcode{f16} or \literaltcode{F16} & \literaltcode{std::float16_t} \\ +\literaltcode{f32} or \literaltcode{F32} & \literaltcode{std::float32_t} \\ @@ -5268,7 +5059,7 @@ index bc0f5b3b..217e727b 100644 \end{simpletypetable} \pnum -@@ -1736,8 +1736,8 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1743,8 +1743,8 @@ chosen in an \impldef{choice of larger or smaller value of \indextext{literal!string}% \begin{bnf} \nontermdef{string-literal}\br @@ -5279,7 +5070,7 @@ index bc0f5b3b..217e727b 100644 \end{bnf} \begin{bnf} -@@ -1760,7 +1760,7 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1767,7 +1767,7 @@ chosen in an \impldef{choice of larger or smaller value of \begin{bnf} \nontermdef{raw-string}\br @@ -5288,7 +5079,7 @@ index bc0f5b3b..217e727b 100644 \end{bnf} \begin{bnf} -@@ -1845,7 +1845,7 @@ UTF-32 & +@@ -1854,7 +1854,7 @@ UTF-32 & \pnum \indextext{literal!string!raw}% @@ -5298,7 +5089,7 @@ index bc0f5b3b..217e727b 100644 in the prefix is a \defn{raw string literal}. The \grammarterm{d-char-sequence} serves as a delimiter. The terminating diff --git a/source/time.tex b/source/time.tex -index 66f8c4c0..7ce27c0a 100644 +index afb0df94..d7ebe6c6 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2200,7 +2200,7 @@ If the parse fails to decode a valid duration, @@ -6318,14 +6109,14 @@ index 66f8c4c0..7ce27c0a 100644 2.43.0 -From cb36885df900e8eaa9d45f8531b44ef9996d73db Mon Sep 17 00:00:00 2001 +From 387bbcd819e62886cb746abef0957ce60f4e3de7 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 -Subject: [PATCH 08/13] Remove more inappropriate paragraph breaks. +Subject: [PATCH 07/14] Remove more inappropriate paragraph breaks. --- source/algorithms.tex | 4 ---- - source/basic.tex | 4 ---- + source/basic.tex | 3 --- source/classes.tex | 8 -------- source/compatibility.tex | 5 ----- source/concepts.tex | 16 ---------------- @@ -6351,13 +6142,13 @@ Subject: [PATCH 08/13] Remove more inappropriate paragraph breaks. source/threads.tex | 17 ----------------- source/time.tex | 19 ------------------- source/utilities.tex | 7 ------- - 27 files changed, 279 deletions(-) + 27 files changed, 278 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 4aa754a4..436d60b1 100644 +index 54de54ac..00711383 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -6828,7 +6828,6 @@ but stronger than those for a partial ordering. +@@ -6831,7 +6831,6 @@ but stronger than those for a partial ordering. If we define \tcode{equiv(a, b)} as \tcode{!comp(a, b) \&\& !comp(b, a)}, then the requirements are that \tcode{comp} and \tcode{equiv} both be transitive relations: @@ -6365,7 +6156,7 @@ index 4aa754a4..436d60b1 100644 \begin{itemize} \item \tcode{comp(a, b) \&\& comp(b, c)} implies \tcode{comp(a, c)} \item \tcode{equiv(a, b) \&\& equiv(b, c)} implies \tcode{equiv(a, c)} -@@ -7751,7 +7750,6 @@ Let $N = \tcode{last - first}$: +@@ -7754,7 +7753,6 @@ Let $N = \tcode{last - first}$: For the overload with an \tcode{ExecutionPolicy}, \bigoh{N \log N} swaps and \bigoh{N} applications of the predicate. \end{itemize} @@ -6373,7 +6164,7 @@ index 4aa754a4..436d60b1 100644 \end{itemdescr} \indexlibraryglobal{stable_partition}% -@@ -8593,7 +8591,6 @@ A random access range \range{a}{b} is a +@@ -8596,7 +8594,6 @@ A random access range \range{a}{b} is a {heap with respect to comp and proj@heap with respect to \tcode{comp} and \tcode{proj}} for a comparator and projection \tcode{comp} and \tcode{proj} if its elements are organized such that: @@ -6381,7 +6172,7 @@ index 4aa754a4..436d60b1 100644 \begin{itemize} \item With \tcode{$N$ = b - a}, for all $i$, $0 < i < N$, -@@ -11169,7 +11166,6 @@ template +@@ -11173,7 +11170,6 @@ template \pnum Some algorithms in this subclause are constrained with the following exposition-only concepts: @@ -6390,10 +6181,10 @@ index 4aa754a4..436d60b1 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index 5c594c75..f29940e9 100644 +index 64f93360..163a9a70 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -255,7 +255,6 @@ enum { up, down }; // defines \tcode{up} and \tcode{down} +@@ -267,7 +267,6 @@ enum { up, down }; // defines \tcode{up} and \tcode{down} namespace N { int d; } // defines \tcode{N} and \tcode{N::d} namespace N1 = N; // defines \tcode{N1} X anX; // defines \tcode{anX} @@ -6401,7 +6192,7 @@ index 5c594c75..f29940e9 100644 \end{codeblock} whereas these are just declarations: \begin{codeblock} -@@ -762,7 +761,6 @@ is subject to the requirements described in this paragraph (recursively). +@@ -775,7 +774,6 @@ is subject to the requirements described in this paragraph (recursively). \pnum For the purposes of the preceding requirements: @@ -6409,7 +6200,7 @@ index 5c594c75..f29940e9 100644 \begin{itemize} \item If \tcode{D} is a class with an implicitly-declared constructor\iref{class.default.ctor,class.copy.ctor}, -@@ -5736,7 +5734,6 @@ has the top-level cv-qualifier \keyword{volatile}. +@@ -5814,7 +5812,6 @@ has the top-level cv-qualifier \keyword{volatile}. \pnum Every integer type has an \term{integer conversion rank} defined as follows: @@ -6417,19 +6208,11 @@ index 5c594c75..f29940e9 100644 \begin{itemize} \item No two signed integer types other than \keyword{char} and \tcode{\keyword{signed} \keyword{char}} (if \keyword{char} is signed) have the same rank, even if they have -@@ -6349,7 +6346,6 @@ the value written by $A$, or - \item - for some evaluation $X$, $A$ is dependency-ordered before $X$ and - $X$ carries a dependency to $B$. -- - \end{itemize} - \begin{note} - The relation ``is dependency-ordered before'' is analogous to diff --git a/source/classes.tex b/source/classes.tex -index 02b6e630..dfd4acc0 100644 +index 5b7a5cbb..4ca4456c 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -1555,7 +1555,6 @@ for each non-static data member of +@@ -1663,7 +1663,6 @@ for each non-static data member of that is of class type (or array thereof), the constructor selected to copy/move that member is trivial; \end{itemize} @@ -6437,7 +6220,7 @@ index 02b6e630..dfd4acc0 100644 \indextext{constructor!move!non-trivial}% otherwise the copy/move constructor is \defnx{non-trivial}{constructor!copy!nontrivial}. -@@ -3171,7 +3170,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat +@@ -3285,7 +3284,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat destructor and \tcode{N} has a non-trivial constructor (for instance, if they declare or inherit virtual functions), the active member of \tcode{u} can be safely switched from \tcode{m} to \tcode{n} using the destructor and placement \grammarterm{new-expression} as follows: @@ -6445,7 +6228,7 @@ index 02b6e630..dfd4acc0 100644 \begin{codeblock} u.m.~M(); new (&u.n) N; -@@ -3349,7 +3347,6 @@ A local class cannot have static data members\iref{class.static.data}. +@@ -3463,7 +3461,6 @@ A local class cannot have static data members\iref{class.static.data}. \indextext{multiple inheritance}% A list of base classes can be specified in a class definition using the notation: @@ -6453,7 +6236,7 @@ index 02b6e630..dfd4acc0 100644 \begin{bnf} \nontermdef{base-clause}\br \terminal{:} base-specifier-list -@@ -5308,7 +5305,6 @@ initializers for direct and virtual base class subobjects and +@@ -5422,7 +5419,6 @@ initializers for direct and virtual base class subobjects and non-static data members can be specified by a \grammarterm{ctor-initializer}, which has the form @@ -6461,7 +6244,7 @@ index 02b6e630..dfd4acc0 100644 \begin{bnf} \nontermdef{ctor-initializer}\br \terminal{:} mem-initializer-list -@@ -5770,7 +5766,6 @@ public: +@@ -5893,7 +5889,6 @@ public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; \end{codeblock} @@ -6469,7 +6252,7 @@ index 02b6e630..dfd4acc0 100644 \end{example} \rSec2[class.inhctor.init]{Initialization by inherited constructor}% -@@ -6422,7 +6417,6 @@ any non-static data member of \tcode{C} is of reference type or +@@ -6549,7 +6544,6 @@ any non-static data member of \tcode{C} is of reference type or A binary operator expression \tcode{a @ b} is \defnx{usable}{usable!binary operator expression} if either @@ -6477,7 +6260,7 @@ index 02b6e630..dfd4acc0 100644 \begin{itemize} \item \tcode{a} or \tcode{b} is of class or enumeration type and -@@ -6543,7 +6537,6 @@ The \defnadj{synthesized}{three-way comparison} +@@ -6670,7 +6664,6 @@ The \defnadj{synthesized}{three-way comparison} of type \tcode{R}\iref{cmp.categories} of glvalues \tcode{a} and \tcode{b} of the same type is defined as follows: @@ -6485,7 +6268,7 @@ index 02b6e630..dfd4acc0 100644 \begin{itemize} \item If \tcode{a <=> b} is usable\iref{class.compare.default} and -@@ -6642,7 +6635,6 @@ The \defn{common comparison type} \tcode{U} +@@ -6770,7 +6763,6 @@ The \defn{common comparison type} \tcode{U} of a possibly-empty list of $n$ comparison category types $\tcode{T}_0$, $\tcode{T}_1$, $\dotsc$, $\tcode{T}_{n-1}$ is defined as follows: @@ -6494,10 +6277,10 @@ index 02b6e630..dfd4acc0 100644 \item If at least one $\tcode{T}_i$ is \tcode{std::partial_ordering}, diff --git a/source/compatibility.tex b/source/compatibility.tex -index 83948563..bce5aa70 100644 +index 1eee7a16..952bff31 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -2501,7 +2501,6 @@ Overspecification. +@@ -2550,7 +2550,6 @@ Overspecification. \effect The signatures of the following member functions changed from taking an \tcode{iterator} to taking a \tcode{const_iterator}: @@ -6505,7 +6288,7 @@ index 83948563..bce5aa70 100644 \begin{itemize} \item \tcode{insert(iter, val)} for \tcode{vector}, \tcode{deque}, \tcode{list}, \tcode{set}, \tcode{multiset}, \tcode{map}, \tcode{multimap} -@@ -2573,7 +2572,6 @@ Clarify intentions, avoid workarounds. +@@ -2622,7 +2621,6 @@ Clarify intentions, avoid workarounds. Valid \CppIII{} code that relies on implicit boolean conversions will fail to compile with this revision of \Cpp{}. Such conversions occur in the following conditions: @@ -6513,7 +6296,7 @@ index 83948563..bce5aa70 100644 \begin{itemize} \item passing a value to a function that takes an argument of type \tcode{bool}; \item using \tcode{operator==} to compare to \tcode{false} or \tcode{true}; -@@ -3676,7 +3674,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in +@@ -3725,7 +3723,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in \pnum Header \libheaderref{cstring}: The following functions have different declarations: @@ -6521,7 +6304,7 @@ index 83948563..bce5aa70 100644 \begin{itemize} \item \tcode{strchr} \item \tcode{strpbrk} -@@ -3690,7 +3687,6 @@ Subclause \ref{cstring.syn} describes the changes. +@@ -3739,7 +3736,6 @@ Subclause \ref{cstring.syn} describes the changes. \pnum Header \libheaderref{cwchar}: The following functions have different declarations: @@ -6529,7 +6312,7 @@ index 83948563..bce5aa70 100644 \begin{itemize} \item \tcode{wcschr} \item \tcode{wcspbrk} -@@ -3715,7 +3711,6 @@ in addition to the names declared in +@@ -3764,7 +3760,6 @@ in addition to the names declared in \pnum Header \libheaderref{cstdlib}: The following functions have different behavior: @@ -6667,10 +6450,10 @@ index 6bd0435e..0bfd8612 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 6de14bf9..16a3e133 100644 +index ebdfaf8d..bbb3230c 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -648,7 +648,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. +@@ -685,7 +685,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. \ref{vector.modifiers}) all container types defined in this Clause meet the following additional requirements: @@ -6678,7 +6461,7 @@ index 6de14bf9..16a3e133 100644 \begin{itemize} \item If an exception is thrown by an -@@ -711,7 +710,6 @@ as input iterators. +@@ -748,7 +747,6 @@ as input iterators. Likewise, the extent to which an implementation determines that a type cannot be an allocator is unspecified, except that as a minimum a type \tcode{A} shall not qualify as an allocator unless it meets both of the following conditions: @@ -6686,7 +6469,7 @@ index 6de14bf9..16a3e133 100644 \begin{itemize} \item The \grammarterm{qualified-id} \tcode{A::value_type} is valid and denotes a type\iref{temp.deduct}. -@@ -940,7 +938,6 @@ is not allocator-aware or is a specialization of \tcode{basic_string}, +@@ -978,7 +976,6 @@ is not allocator-aware or is a specialization of \tcode{basic_string}, the terms below are defined as if \tcode{A} were \tcode{allocator} --- no allocator object needs to be created and user specializations of \tcode{allocator} are not instantiated: @@ -6694,7 +6477,7 @@ index 6de14bf9..16a3e133 100644 \begin{itemize} \item \tcode{T} is \defnx{\oldconcept{DefaultInsertable} into \tcode{X}} -@@ -3965,14 +3962,12 @@ such that distance from +@@ -4037,14 +4034,12 @@ such that distance from to \tcode{j} is positive, the following condition holds: @@ -6709,7 +6492,7 @@ index 6de14bf9..16a3e133 100644 \begin{codeblock} value_comp(*i, *j) != false \end{codeblock} -@@ -5993,7 +5988,6 @@ define class templates that meet the requirements for sequence containers. +@@ -6066,7 +6061,6 @@ define class templates that meet the requirements for sequence containers. \pnum The following exposition-only alias template may appear in deduction guides for sequence containers: @@ -6717,7 +6500,7 @@ index 6de14bf9..16a3e133 100644 \begin{codeblock} template using @\placeholdernc{iter-value-type}@ = typename iterator_traits::value_type; // \expos -@@ -8136,7 +8130,6 @@ If \tcode{size() < sz}, +@@ -9332,7 +9326,6 @@ If \tcode{size() < sz}, appends \tcode{sz - size()} default-inserted elements to the sequence. If \tcode{sz <= size()}, equivalent to: @@ -6725,7 +6508,7 @@ index 6de14bf9..16a3e133 100644 \begin{codeblock} list::iterator it = begin(); advance(it, sz); -@@ -9398,13 +9391,11 @@ static constexpr void swap(reference x, reference y) noexcept; +@@ -10618,13 +10611,11 @@ static constexpr void swap(reference x, reference y) noexcept; \pnum \effects Exchanges the contents of \tcode{x} and \tcode{y} as if by: @@ -6739,7 +6522,7 @@ index 6de14bf9..16a3e133 100644 \end{itemdescr} \begin{itemdecl} -@@ -18839,7 +18830,6 @@ For each of +@@ -20117,7 +20108,6 @@ For each of \tcode{stack}, the library provides the following formatter specialization where \tcode{\placeholder{adaptor-type}} is the name of the template: @@ -6747,7 +6530,7 @@ index 6de14bf9..16a3e133 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -23016,7 +23006,6 @@ typename A::offset_policy +@@ -24301,7 +24291,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6755,7 +6538,7 @@ index 6de14bf9..16a3e133 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -23916,7 +23905,6 @@ the \tcode{SliceSpecifier} arguments. +@@ -25200,7 +25189,6 @@ the \tcode{SliceSpecifier} arguments. \pnum For each function defined in \ref{mdspan.sub} that takes a parameter pack named \tcode{slices} as an argument: @@ -6763,7 +6546,7 @@ index 6de14bf9..16a3e133 100644 \begin{itemize} \item let \tcode{index_type} be \begin{itemize} -@@ -24180,7 +24168,6 @@ $\le \tcode{src.extent($k$)}$ +@@ -25464,7 +25452,6 @@ $\le \tcode{src.extent($k$)}$ \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: @@ -6771,7 +6554,7 @@ index 6de14bf9..16a3e133 100644 \begin{itemize} \item %FIXME: I think we want the count here, "number" is ambiguous. -@@ -24191,7 +24178,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and +@@ -25475,7 +25462,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and for each rank index $k$ of \tcode{Extents} such that \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, \tcode{SubExt\-ents::static_extent(\placeholder{map-rank}[$k$])} equals: @@ -6779,7 +6562,7 @@ index 6de14bf9..16a3e133 100644 \begin{itemize} \item \tcode{Extents::static_extent($k$)} -@@ -24231,7 +24217,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that +@@ -25515,7 +25501,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that for each $k$ for which \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, \tcode{ext.extent(\placeholder{map-rank}[$k$])} equals: @@ -6788,7 +6571,7 @@ index 6de14bf9..16a3e133 100644 \item \tcode{$s_k$.extent == 0 ? 0 : 1 + (\exposid{de-ice}($s_k$.extent) - 1) / \exposid{de-ice}($s_k$.stride)} diff --git a/source/declarations.tex b/source/declarations.tex -index 57271779..4e2cdc02 100644 +index 8a9850e8..ec866e68 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1557,7 +1557,6 @@ a partial specialization\iref{temp.spec.partial}, @@ -6799,7 +6582,7 @@ index 57271779..4e2cdc02 100644 \begin{ncsimplebnf} class-key \opt{attribute-specifier-seq} identifier \terminal{;}\br class-key \opt{attribute-specifier-seq} simple-template-id \terminal{;} -@@ -2376,7 +2375,6 @@ auto* p = new void(*)(char) requires true; // error: not a function declaration +@@ -2396,7 +2395,6 @@ the \grammarterm{declarator} declares a function. \pnum Declarators have the syntax @@ -6807,7 +6590,7 @@ index 57271779..4e2cdc02 100644 \begin{bnf} \nontermdef{declarator}\br ptr-declarator\br -@@ -4274,7 +4272,6 @@ In the following code, +@@ -4294,7 +4292,6 @@ In the following code, \tcode{g} will be called with the value \tcode{f(2)}: @@ -6815,7 +6598,7 @@ index 57271779..4e2cdc02 100644 \begin{codeblock} int a = 1; int f(int); -@@ -4613,7 +4610,6 @@ To +@@ -4953,7 +4950,6 @@ To an object of type \tcode{T} means: @@ -6823,7 +6606,7 @@ index 57271779..4e2cdc02 100644 \begin{itemize} \item If -@@ -4812,7 +4808,6 @@ is sequenced before those associated with +@@ -5152,7 +5148,6 @@ is sequenced before those associated with the initialization of the $j^\text{th}$ element. \item Otherwise, if the destination type is a class type: @@ -6831,7 +6614,7 @@ index 57271779..4e2cdc02 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -5724,7 +5719,6 @@ a program that necessitates such a binding is ill-formed. +@@ -6064,7 +6059,6 @@ a program that necessitates such a binding is ill-formed. A reference to type ``\cvqual{cv1} \tcode{T1}'' is initialized by an expression of type ``\cvqual{cv2} \tcode{T2}'' as follows:% \indextext{binding!reference} @@ -6839,7 +6622,7 @@ index 57271779..4e2cdc02 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6191,7 +6185,6 @@ int j { 1 }; // initialize to 1 +@@ -6531,7 +6525,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -6847,7 +6630,7 @@ index 57271779..4e2cdc02 100644 \end{itemize} \pnum -@@ -7201,7 +7194,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, +@@ -7611,7 +7604,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, where $\tcode{U}_i$ is an lvalue reference if the initializer is an lvalue and an rvalue reference otherwise, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -6855,7 +6638,7 @@ index 57271779..4e2cdc02 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7333,7 +7325,6 @@ struct S { +@@ -7743,7 +7735,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6863,7 +6646,7 @@ index 57271779..4e2cdc02 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7430,7 +7421,6 @@ If the underlying +@@ -7840,7 +7831,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6871,7 +6654,7 @@ index 57271779..4e2cdc02 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -7885,7 +7875,6 @@ void h() { +@@ -8295,7 +8285,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares an alternate name for a namespace according to the following grammar: @@ -6879,7 +6662,7 @@ index 57271779..4e2cdc02 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8040,7 +8029,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8450,7 +8439,6 @@ not declare functions or function templates, the use of the name is ill-formed\i In particular, the name of a variable, function or enumerator does not hide the name of a class or enumeration declared in a different namespace. For example, @@ -6887,7 +6670,7 @@ index 57271779..4e2cdc02 100644 \begin{codeblock} namespace A { class X { }; -@@ -8593,7 +8581,6 @@ otherwise identical. +@@ -9003,7 +8991,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6895,7 +6678,7 @@ index 57271779..4e2cdc02 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -9521,7 +9508,6 @@ may be applied to a function or a lambda call operator or +@@ -9852,7 +9839,6 @@ may be applied to a function or a lambda call operator or to the declaration of a class or enumeration. An \grammarterm{attribute-argument-clause} may be present and, if present, shall have the form: @@ -6904,7 +6687,7 @@ index 57271779..4e2cdc02 100644 \terminal{(} unevaluated-string \terminal{)} \end{ncbnf} diff --git a/source/exceptions.tex b/source/exceptions.tex -index c1e16c1e..900c5da6 100644 +index 190e0ac6..cb9faf71 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -89,7 +89,6 @@ void f() { @@ -6915,7 +6698,7 @@ index c1e16c1e..900c5da6 100644 \end{codeblock} \end{example} \indextext{\idxcode{goto}!and try block}% -@@ -541,12 +540,10 @@ to pointers to private or protected or ambiguous classes +@@ -561,12 +560,10 @@ to pointers to private or protected or ambiguous classes a \link{function pointer conversion}{conv.fctptr} \item% a \link{qualification conversion}{conv.qual}, or @@ -6928,7 +6711,7 @@ index c1e16c1e..900c5da6 100644 \end{itemize} \begin{note} -@@ -1102,9 +1099,7 @@ when \tcode{unhandled_stopped} is called on +@@ -1127,9 +1124,7 @@ when \tcode{unhandled_stopped} is called on a \tcode{with_awaitable_senders} object\iref{exec.with.awaitable.senders} whose continuation is not a handle to a coroutine whose promise type has an \tcode{unhandled_stopped} member function. @@ -6939,10 +6722,10 @@ index c1e16c1e..900c5da6 100644 \pnum diff --git a/source/expressions.tex b/source/expressions.tex -index ca32c4fa..59670879 100644 +index b9a8a9ce..a9bc7fc4 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -463,7 +463,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied +@@ -462,7 +462,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied if and only if the expression is a glvalue of volatile-qualified type and it is one of the following: @@ -6950,7 +6733,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item \tcode{(} \grammarterm{expression} \tcode{)}, where \grammarterm{expression} is one of these expressions, -@@ -506,7 +505,6 @@ Standard conversions are implicit conversions with built-in meaning. +@@ -505,7 +504,6 @@ Standard conversions are implicit conversions with built-in meaning. \ref{conv} enumerates the full set of such conversions. A \defnx{standard conversion sequence}{conversion sequence!standard} is a sequence of standard conversions in the following order: @@ -6958,7 +6741,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item Zero or one conversion from the following set: lvalue-to-rvalue conversion, array-to-pointer conversion, and function-to-pointer -@@ -534,7 +532,6 @@ a required destination type and value category. +@@ -533,7 +531,6 @@ a required destination type and value category. \begin{note} Expressions with a given type will be implicitly converted to other types in several contexts: @@ -6966,7 +6749,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item When used as operands of operators. The operator's requirements for its operands dictate the destination type\iref{expr.compound}. -@@ -660,7 +657,6 @@ int n = g(true); // OK, does not access \tcode{y.n} +@@ -659,7 +656,6 @@ int n = g(true); // OK, does not access \tcode{y.n} \pnum The result of the conversion is determined according to the following rules: @@ -6974,7 +6757,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item If \tcode{T} is \cv{}~\tcode{std::nullptr_t}, the result is a -@@ -1170,7 +1166,6 @@ type cause conversions and yield result types in a similar way. The +@@ -1169,7 +1165,6 @@ type cause conversions and yield result types in a similar way. The purpose is to yield a common type, which is also the type of the result. This pattern is called the \defnx{usual arithmetic conversions}{conversion!usual arithmetic}, which are defined as follows: @@ -6982,7 +6765,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item The lvalue-to-rvalue conversion\iref{conv.lval} is applied to each operand and -@@ -1213,7 +1208,6 @@ As a consequence, operands of type \keyword{bool}, \keyword{char8_t}, \keyword{c +@@ -1212,7 +1207,6 @@ As a consequence, operands of type \keyword{bool}, \keyword{char8_t}, \keyword{c to some integral type. \end{footnote} Then the following rules are applied to determine \tcode{C}: @@ -6990,7 +6773,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item If \tcode{T1} and \tcode{T2} are the same type, \tcode{C} is that type. -@@ -2474,7 +2468,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} +@@ -2719,7 +2713,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} \pnum For the purposes of lambda capture, an expression potentially references local entities as follows: @@ -6998,7 +6781,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item An \grammarterm{id-expression} that names a local entity -@@ -3079,7 +3072,6 @@ The \grammarterm{expression} is an unevaluated operand. +@@ -3324,7 +3317,6 @@ The \grammarterm{expression} is an unevaluated operand. Substitution of template arguments (if any) and verification of semantic properties proceed in the following order: @@ -7006,7 +6789,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -3091,7 +3083,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. +@@ -3336,7 +3328,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. \item If the \grammarterm{return-type-requirement} is present, then: @@ -7014,7 +6797,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -3731,7 +3722,6 @@ the reference is bound, +@@ -4002,7 +3993,6 @@ the reference is bound, otherwise \tcode{E1.E2} designates the object or function to which the corresponding reference member of \tcode{E1} is bound. Otherwise, one of the following rules applies. @@ -7022,7 +6805,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item If \tcode{E2} is a static data member and the type of \tcode{E2} is \tcode{T}, then \tcode{E1.E2} is an lvalue; the expression designates -@@ -3944,7 +3934,6 @@ referred to by \tcode{T}. +@@ -4215,7 +4205,6 @@ referred to by \tcode{T}. \pnum Let \tcode{C} be the class type to which \tcode{T} points or refers. The runtime check logically executes as follows: @@ -7030,7 +6813,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item If, in the most derived object pointed (referred) to by \tcode{v}, \tcode{v} points (refers) to a public base class subobject of a -@@ -4491,7 +4480,6 @@ constness. +@@ -4762,7 +4751,6 @@ constness. The null member pointer value\iref{conv.mem} is converted to the null member pointer value of the destination type. The result of this conversion is unspecified, except in the following cases: @@ -7038,7 +6821,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item Converting a prvalue of type ``pointer to member function'' to a different pointer-to-member-function type and back to its original type -@@ -4907,7 +4895,6 @@ is called a \term{suspension context} of the function. +@@ -5181,7 +5169,6 @@ is called a \term{suspension context} of the function. \pnum Evaluation of an \grammarterm{await-expression} involves the following auxiliary types, expressions, and objects: @@ -7046,7 +6829,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item \placeholder{p} is an lvalue naming the promise -@@ -5288,7 +5275,6 @@ and +@@ -5562,7 +5549,6 @@ and the \grammarterm{new-expression}, then the allocated type is the type deduced for the variable \tcode{x} in the invented declaration\iref{dcl.spec.auto}: @@ -7054,7 +6837,7 @@ index ca32c4fa..59670879 100644 \begin{codeblock} T x @\textrm{\placeholder{init}}@ ; \end{codeblock} -@@ -5640,7 +5626,6 @@ the alignment argument is removed from the argument list; +@@ -5914,7 +5900,6 @@ the alignment argument is removed from the argument list; otherwise, an argument that is the type's alignment and has type \tcode{std::align_val_t} is added into the argument list immediately after the first argument; @@ -7062,7 +6845,7 @@ index ca32c4fa..59670879 100644 \end{itemize} and then overload resolution is performed again. -@@ -5718,7 +5703,6 @@ necessarily be the same as that of the block if the object is an array. +@@ -5992,7 +5977,6 @@ necessarily be the same as that of the block if the object is an array. \indextext{\idxcode{new}!default constructor and}% A \grammarterm{new-expression} that creates an object of type \tcode{T} initializes that object as follows: @@ -7070,7 +6853,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item If the \grammarterm{new-initializer} is omitted, the object is default-initialized\iref{dcl.init}. -@@ -5807,7 +5791,6 @@ struct S { +@@ -6081,7 +6065,6 @@ struct S { S* p = new (0) S; // error: non-placement deallocation function matches // placement allocation function \end{codeblock} @@ -7078,7 +6861,7 @@ index ca32c4fa..59670879 100644 \end{example} \pnum -@@ -5927,7 +5910,6 @@ of their constructor; see~\ref{class.base.init}). +@@ -6201,7 +6184,6 @@ of their constructor; see~\ref{class.base.init}). \pnum If the value of the operand of the \grammarterm{delete-expression} is not a null pointer value, then: @@ -7086,7 +6869,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item If the allocation call for the \grammarterm{new-expression} for the object to -@@ -6551,7 +6533,6 @@ or one operand has integral type and +@@ -6825,7 +6807,6 @@ or one operand has integral type and the other operand has unscoped enumeration type, the \link{usual arithmetic conversions}{expr.arith.conv} are applied to the operands. Then: @@ -7094,7 +6877,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, -@@ -6706,7 +6687,6 @@ is considered to be equivalent to a pointer to a hypothetical array element +@@ -6980,7 +6961,6 @@ is considered to be equivalent to a pointer to a hypothetical array element $n$ for this purpose. \end{footnote} is defined in terms of a partial order consistent with the following rules: @@ -7102,7 +6885,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item If two pointers point to different elements of the same array, or to subobjects thereof, the pointer to the element with the higher subscript -@@ -6719,7 +6699,6 @@ neither member is a subobject of zero size +@@ -6993,7 +6973,6 @@ neither member is a subobject of zero size and their class is not a union. \item Otherwise, neither pointer is required to compare greater than the other. @@ -7110,7 +6893,7 @@ index ca32c4fa..59670879 100644 \end{itemize} \pnum -@@ -6781,7 +6760,6 @@ If at least one of the converted operands is a pointer, +@@ -7055,7 +7034,6 @@ If at least one of the converted operands is a pointer, \link{qualification conversions}{conv.qual} are performed on both operands to bring them to their \deflink{composite pointer type}{expr.type}. Comparing pointers is defined as follows: @@ -7118,7 +6901,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item If one pointer represents the address of a complete object, and another -@@ -6811,7 +6789,6 @@ qualification conversions\iref{conv.qual} +@@ -7085,7 +7063,6 @@ qualification conversions\iref{conv.qual} are performed on both operands to bring them to their composite pointer type\iref{expr.type}. Comparing pointers to members is defined as follows: @@ -7126,7 +6909,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item If two pointers to members are both the null member pointer value, they compare -@@ -7083,7 +7060,6 @@ Attempts are made to form an implicit conversion sequence +@@ -7357,7 +7334,6 @@ Attempts are made to form an implicit conversion sequence from an operand expression \tcode{E1} of type \tcode{T1} to a target type related to the type \tcode{T2} of the operand expression \tcode{E2} as follows: @@ -7134,7 +6917,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item If \tcode{E2} is an lvalue, the target type is ``lvalue reference to \tcode{T2}'', -@@ -7162,7 +7138,6 @@ subclause. +@@ -7436,7 +7412,6 @@ subclause. and \link{function-to-pointer}{conv.func} standard conversions are performed on the second and third operands. After those conversions, one of the following shall hold: @@ -7142,7 +6925,7 @@ index ca32c4fa..59670879 100644 \begin{itemize} \item The second and third operands have the same type; the result is of that type and the result is copy-initialized using the selected operand. -@@ -7192,7 +7167,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. +@@ -7466,7 +7441,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. Both the second and third operands have type \tcode{std::nullptr_t} or one has that type and the other is a null pointer constant. The result is of type \tcode{std::nullptr_t}. @@ -7151,10 +6934,10 @@ index ca32c4fa..59670879 100644 \rSec2[expr.yield]{Yielding a value}% diff --git a/source/future.tex b/source/future.tex -index 0cc895da..13655931 100644 +index 49c04f21..ddaaf96d 100644 --- a/source/future.tex +++ b/source/future.tex -@@ -275,7 +275,6 @@ shown in the above synopsis. +@@ -268,7 +268,6 @@ shown in the above synopsis. \pnum The header \libheaderrefx{type_traits}{meta.type.synop} has the following addition: @@ -7162,7 +6945,7 @@ index 0cc895da..13655931 100644 \begin{codeblock} namespace std { template struct is_trivial; -@@ -515,7 +514,6 @@ template bool operator>=(const T& x, const T& y); +@@ -508,7 +507,6 @@ template bool operator>=(const T& x, const T& y); \pnum The header \libheaderref{tuple} has the following additions: @@ -7170,7 +6953,7 @@ index 0cc895da..13655931 100644 \begin{codeblock} namespace std { template struct tuple_size; -@@ -585,7 +583,6 @@ are included. +@@ -578,7 +576,6 @@ are included. \pnum The header \libheaderref{variant} has the following additions: @@ -7178,7 +6961,7 @@ index 0cc895da..13655931 100644 \begin{codeblock} namespace std { template struct variant_size; -@@ -632,7 +629,6 @@ with a member typedef \tcode{type} that names the following type: +@@ -625,7 +622,6 @@ with a member typedef \tcode{type} that names the following type: \pnum The header \libheaderrefx{iterator}{iterator.synopsis} has the following addition: @@ -7186,7 +6969,7 @@ index 0cc895da..13655931 100644 \indexlibraryglobal{iterator}% \begin{codeblock} namespace std { -@@ -666,7 +662,6 @@ only to callers of that class. +@@ -659,7 +655,6 @@ only to callers of that class. If a \Cpp{} program wants to define a bidirectional iterator for some data structure containing \tcode{double} and such that it works on a large memory model of the implementation, it can do so with: @@ -7194,7 +6977,7 @@ index 0cc895da..13655931 100644 \begin{codeblock} class MyIterator : public iterator { -@@ -680,7 +675,6 @@ class MyIterator : +@@ -673,7 +668,6 @@ class MyIterator : \pnum The following member is declared in addition to those members specified in \ref{move.iter.elem}: @@ -7202,7 +6985,7 @@ index 0cc895da..13655931 100644 \begin{codeblock} namespace std { template -@@ -773,7 +767,6 @@ Equivalent to: \tcode{return visit(std::forward(vis), arg.value);} +@@ -766,7 +760,6 @@ Equivalent to: \tcode{return visit(std::forward(vis), arg.value);} \pnum The header \libheaderrefx{filesystem}{fs.filesystem.syn} has the following additions: @@ -7210,7 +6993,7 @@ index 0cc895da..13655931 100644 \indexlibraryglobal{u8path}% \begin{itemdecl} template -@@ -854,7 +847,6 @@ as it is consistent with \tcode{path}'s handling of other encodings. +@@ -847,7 +840,6 @@ as it is consistent with \tcode{path}'s handling of other encodings. \pnum The header \libheaderrefx{atomic}{atomics.syn} has the following additions. @@ -7219,10 +7002,10 @@ index 0cc895da..13655931 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index a208b372..b2222efe 100644 +index 49e3d2c1..eaf34520 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -2102,14 +2102,12 @@ does nothing. +@@ -2108,14 +2108,12 @@ does nothing. Otherwise assigns to the member objects of \tcode{*this} the corresponding member objects of \tcode{rhs} as follows: @@ -7237,7 +7020,7 @@ index a208b372..b2222efe 100644 \begin{itemize} \item \tcode{rdstate()}, \tcode{rdbuf()}, and \tcode{exceptions()} are left unchanged; -@@ -7204,7 +7202,6 @@ clears \tcode{ios_base::skipws} in the format flags stored in the +@@ -7211,7 +7209,6 @@ clears \tcode{ios_base::skipws} in the format flags stored in the format flags stored in the \tcode{basic_ostream} object \tcode{cout} (the same as \tcode{cout << noshowbase}). \end{footnote} @@ -7245,7 +7028,7 @@ index a208b372..b2222efe 100644 \begin{codeblock} void f(ios_base& str, ios_base::fmtflags mask) { // reset specified flags -@@ -7243,7 +7240,6 @@ then the expression +@@ -7250,7 +7247,6 @@ then the expression behaves as if it called \tcode{f(in, mask)}, where the function \tcode{f} is defined as: \indexlibrarymember{fmtflags}{ios_base}% @@ -7253,7 +7036,7 @@ index a208b372..b2222efe 100644 \begin{codeblock} void f(ios_base& str, ios_base::fmtflags mask) { // set specified flags -@@ -7289,7 +7285,6 @@ then the expression +@@ -7296,7 +7292,6 @@ then the expression \tcode{in >> setbase(base)} behaves as if it called \tcode{f(in, base)}, where the function \tcode{f} is defined as: @@ -7261,7 +7044,7 @@ index a208b372..b2222efe 100644 \begin{codeblock} void f(ios_base& str, int base) { // set \tcode{basefield} -@@ -7332,7 +7327,6 @@ then the expression +@@ -7339,7 +7334,6 @@ then the expression \tcode{out << setfill(c)} behaves as if it called \tcode{f(out, c)}, where the function \tcode{f} is defined as: @@ -7269,7 +7052,7 @@ index a208b372..b2222efe 100644 \begin{codeblock} template void f(basic_ios& str, charT c) { -@@ -7373,7 +7367,6 @@ then the expression +@@ -7380,7 +7374,6 @@ then the expression \tcode{in >> setprecision(n)} behaves as if it called \tcode{f(in, n)}, where the function \tcode{f} is defined as: @@ -7277,7 +7060,7 @@ index a208b372..b2222efe 100644 \begin{codeblock} void f(ios_base& str, int n) { // set precision -@@ -7419,7 +7412,6 @@ then the expression +@@ -7426,7 +7419,6 @@ then the expression \tcode{in >> setw(n)} behaves as if it called \tcode{f(in, n)}, where the function \tcode{f} is defined as: @@ -7285,7 +7068,7 @@ index a208b372..b2222efe 100644 \begin{codeblock} void f(ios_base& str, int n) { // set width -@@ -7469,7 +7461,6 @@ An object of unspecified type such that if +@@ -7476,7 +7468,6 @@ An object of unspecified type such that if \tcode{in} is an object of type \tcode{basic_istream} then the expression \tcode{in >> get_money(mon, intl)} behaves as if it called \tcode{f(in, mon, intl)}, where the function \tcode{f} is defined as: @@ -7293,7 +7076,7 @@ index a208b372..b2222efe 100644 \begin{codeblock} template void f(basic_ios& str, moneyT& mon, bool intl) { -@@ -7508,7 +7499,6 @@ An object of unspecified type such that if +@@ -7515,7 +7506,6 @@ An object of unspecified type such that if then the expression \tcode{out << put_money(mon, intl)} behaves as a \link{formatted output function}{ostream.formatted.reqmts} that calls \tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as: @@ -7301,7 +7084,7 @@ index a208b372..b2222efe 100644 \begin{codeblock} template void f(basic_ios& str, const moneyT& mon, bool intl) { -@@ -7544,7 +7534,6 @@ An object of unspecified type such that if \tcode{in} is an object of type +@@ -7551,7 +7541,6 @@ An object of unspecified type such that if \tcode{in} is an object of type \tcode{basic_istream} then the expression \tcode{in >> get_time(tmb, fmt)} behaves as if it called \tcode{f(in, tmb, fmt)}, where the function \tcode{f} is defined as: @@ -7309,7 +7092,7 @@ index a208b372..b2222efe 100644 \begin{codeblock} template void f(basic_ios& str, tm* tmb, const charT* fmt) { -@@ -7583,7 +7572,6 @@ An object of unspecified type such that if \tcode{out} is an object of +@@ -7590,7 +7579,6 @@ An object of unspecified type such that if \tcode{out} is an object of type \tcode{basic_ostream} then the expression \tcode{out << put_time(tmb, fmt)} behaves as if it called \tcode{f(out, tmb, fmt)}, where the function \tcode{f} is defined as: @@ -7317,7 +7100,7 @@ index a208b372..b2222efe 100644 \begin{codeblock} template void f(basic_ios& str, const tm* tmb, const charT* fmt) { -@@ -11418,7 +11406,6 @@ with the specialization that a sequence of characters is read from the input +@@ -11426,7 +11414,6 @@ with the specialization that a sequence of characters is read from the input sequence as if by reading from the associated file into an internal buffer (\tcode{extern_buf}) and then as if by doing: @@ -7325,7 +7108,7 @@ index a208b372..b2222efe 100644 \begin{codeblock} char extern_buf[XSIZE]; char* extern_end; -@@ -13903,7 +13890,6 @@ without an intervening \grammarterm{root-directory} element. +@@ -13912,7 +13899,6 @@ without an intervening \grammarterm{root-directory} element. \pnum \indextext{path!normalization|(}% \defnx{Normalization}{normalization!path} of a generic format pathname means: @@ -7333,7 +7116,7 @@ index a208b372..b2222efe 100644 \begin{enumerate} \item If the path is empty, stop. \item Replace each slash character in the \grammarterm{root-name} with a \grammarterm{preferred-separator}. -@@ -17019,7 +17005,6 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17028,7 +17014,6 @@ recursive_directory_iterator& increment(error_code& ec); As specified for the prefix increment operation of \link{Input iterators}{input.iterators}, except that: @@ -7342,10 +7125,10 @@ index a208b372..b2222efe 100644 \item If there are no more entries at the current depth, then if \tcode{depth() != 0} iteration over the parent directory resumes; otherwise \tcode{*this = recursive_directory_iterator()}. diff --git a/source/iterators.tex b/source/iterators.tex -index 32642559..8ce7802c 100644 +index 395e5bf6..1427e134 100644 --- a/source/iterators.tex +++ b/source/iterators.tex -@@ -934,7 +934,6 @@ may be defined as \keyword{void}. +@@ -951,7 +951,6 @@ may be defined as \keyword{void}. \pnum The definitions in this subclause make use of the following exposition-only concepts: @@ -7353,7 +7136,7 @@ index 32642559..8ce7802c 100644 \begin{codeblock} template concept @\defexposconcept{cpp17-iterator}@ = -@@ -992,7 +991,6 @@ concept @\defexposconcept{cpp17-random-access-iterator}@ = +@@ -1009,7 +1008,6 @@ concept @\defexposconcept{cpp17-random-access-iterator}@ = \pnum The members of a specialization \tcode{iterator_traits} generated from the \tcode{iterator_traits} primary template are computed as follows: @@ -7361,7 +7144,7 @@ index 32642559..8ce7802c 100644 \begin{itemize} \item If \tcode{I} has valid\iref{temp.deduct} member -@@ -1141,7 +1139,6 @@ The name \tcode{ranges::iter_move} denotes +@@ -1158,7 +1156,6 @@ The name \tcode{ranges::iter_move} denotes a customization point object\iref{customization.point.object}. The expression \tcode{ranges::\-iter_move(E)} for a subexpression \tcode{E} is expression-equivalent to: @@ -7369,7 +7152,7 @@ index 32642559..8ce7802c 100644 \begin{itemize} \item \tcode{iter_move(E)}, if \tcode{E} has class or enumeration type and -@@ -2781,7 +2778,6 @@ namespace std { +@@ -2798,7 +2795,6 @@ namespace std { A program-defined iterator \tcode{BinaryTreeIterator} can be included into the bidirectional iterator category by specializing the \tcode{iterator_traits} template: @@ -7377,7 +7160,7 @@ index 32642559..8ce7802c 100644 \begin{codeblock} template struct iterator_traits> { using iterator_category = bidirectional_iterator_tag; -@@ -2799,7 +2795,6 @@ If +@@ -2816,7 +2812,6 @@ If \tcode{evolve()} is well-defined for bidirectional iterators, but can be implemented more efficiently for random access iterators, then the implementation is as follows: @@ -7385,7 +7168,7 @@ index 32642559..8ce7802c 100644 \begin{codeblock} template inline void -@@ -3380,7 +3375,6 @@ As if by: +@@ -3397,7 +3392,6 @@ As if by: Iterator tmp = current; return *--tmp; \end{codeblock} @@ -7393,7 +7176,7 @@ index 32642559..8ce7802c 100644 \end{itemdescr} \indexlibrarymember{operator->}{reverse_iterator}% -@@ -4762,7 +4756,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 +@@ -4779,7 +4773,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 vector v2(make_move_iterator(s.begin()), make_move_iterator(s.end())); // moves strings into \tcode{v2} \end{codeblock} @@ -7401,7 +7184,7 @@ index 32642559..8ce7802c 100644 \end{example} \rSec3[move.iterator]{Class template \tcode{move_iterator}} -@@ -6481,7 +6474,6 @@ partial_sum(istream_iterator(cin), +@@ -6498,7 +6491,6 @@ partial_sum(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "@\textbackslash@n")); \end{codeblock} @@ -7410,10 +7193,10 @@ index 32642559..8ce7802c 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lex.tex b/source/lex.tex -index 217e727b..1a8e6169 100644 +index b23f0e17..3dd73148 100644 --- a/source/lex.tex +++ b/source/lex.tex -@@ -594,7 +594,6 @@ after the \tcode{include} or \tcode{import} preprocessing token in a +@@ -597,7 +597,6 @@ after the \tcode{include} or \tcode{import} preprocessing token in a \item within a \grammarterm{has-include-expression}. @@ -7422,7 +7205,7 @@ index 217e727b..1a8e6169 100644 \end{itemize} diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 6edd7095..ffeb3db1 100644 +index 2caf8109..b657c9b8 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -196,7 +196,6 @@ save space, items that do not apply to a Clause are omitted. @@ -7473,7 +7256,7 @@ index 6edd7095..ffeb3db1 100644 \begin{itemize} \item \constraints -@@ -576,7 +570,6 @@ values\iref{basic.fundamental}. +@@ -613,7 +607,6 @@ values\iref{basic.fundamental}. \pnum The enumerated type \tcode{\placeholder{enumerated}} can be written: @@ -7481,7 +7264,7 @@ index 6edd7095..ffeb3db1 100644 \begin{codeblock} enum @\placeholder{enumerated}@ { @$\tcode{\placeholder{V}}_{0}$@, @$\tcode{\placeholder{V}}_{1}$@, @$\tcode{\placeholder{V}}_{2}$@, @$\tcode{\placeholder{V}}_{3}$@, @$\ldots$@ }; -@@ -609,7 +602,6 @@ or as a +@@ -646,7 +639,6 @@ or as a \pnum The bitmask type \tcode{\placeholder{bitmask}} can be written: @@ -7489,7 +7272,7 @@ index 6edd7095..ffeb3db1 100644 \begin{codeblock} // For exposition only. // \tcode{int_type} is an integral type capable of representing all values of the bitmask type. -@@ -686,7 +678,6 @@ The value \textit{Y} \defnx{is set}{bitmask!value!is set} in the object +@@ -723,7 +715,6 @@ The value \textit{Y} \defnx{is set}{bitmask!value!is set} in the object The C standard library makes widespread use \indextext{library!C standard}% of characters and character sequences that follow a few uniform conventions: @@ -7497,7 +7280,7 @@ index 6edd7095..ffeb3db1 100644 \begin{itemize} \item Properties specified as \defn{locale-specific} -@@ -922,7 +913,6 @@ some subclauses provide representative declarations, and semantic requirements, +@@ -959,7 +950,6 @@ some subclauses provide representative declarations, and semantic requirements, private members of classes that meet the external specifications of the classes. The declarations for such members are followed by a comment that ends with \expos, as in: @@ -7505,7 +7288,7 @@ index 6edd7095..ffeb3db1 100644 \begin{codeblock} streambuf* sb; // \expos \end{codeblock} -@@ -1879,7 +1869,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if +@@ -1924,7 +1914,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if evaluated in the context described below, and \item these expressions have the following effects: @@ -7513,7 +7296,7 @@ index 6edd7095..ffeb3db1 100644 \begin{itemize} \item the object referred to by \tcode{t} has the value originally held by \tcode{u} and \item the object referred to by \tcode{u} has the value originally held by \tcode{t}. -@@ -2885,7 +2874,6 @@ for that type can fail by throwing an object of type +@@ -2930,7 +2919,6 @@ for that type can fail by throwing an object of type \begin{example} The following is an allocator class template supporting the minimal interface that meets the requirements of \ref{allocator.requirements.general}: @@ -7521,15 +7304,13 @@ index 6edd7095..ffeb3db1 100644 \begin{codeblock} template struct SimpleAllocator { -@@ -3365,7 +3353,6 @@ in the program. - A \Cpp{} program may provide the definition for any of the following - dynamic memory allocation function signatures declared in header - \tcode{}\iref{basic.stc.dynamic,new.syn}: +@@ -3404,13 +3392,11 @@ the description of function semantics apply + to both the default version defined by the \Cpp{} standard library and + the replacement function defined by the program. + - - \indextext{\idxcode{new}!\idxcode{operator}!replaceable}% - \indexlibrarymember{new}{operator}% - \begin{codeblock} -@@ -3424,7 +3411,6 @@ No diagnostic is required. + \rSec3[handler.functions]{Handler functions} + \pnum The \Cpp{} standard library provides a default version of the following handler function\iref{support}: @@ -7537,7 +7318,7 @@ index 6edd7095..ffeb3db1 100644 \begin{itemize} \item \tcode{terminate_handler} -@@ -3445,7 +3431,6 @@ Exception handling. +@@ -3431,7 +3417,6 @@ Exception handling. \pnum A \Cpp{} program can get a pointer to the current handler function by calling the following functions: @@ -7545,15 +7326,15 @@ index 6edd7095..ffeb3db1 100644 \begin{itemize} \item \indexlibraryglobal{get_new_handler}% -@@ -3471,7 +3456,6 @@ on the implementation. +@@ -3457,7 +3442,6 @@ on the implementation. \pnum In particular, the behavior is undefined in the following cases: - \begin{itemize} \item - For replacement functions\iref{new.delete}, if the installed replacement function does not -@@ -3750,7 +3734,6 @@ functions or constructors an implementation shall provide corresponding definiti + For replacement functions\iref{replacement.functions}, if the installed replacement function does not +@@ -3742,7 +3726,6 @@ functions or constructors an implementation shall provide corresponding definiti \indextext{stable algorithm}% When the requirements for an algorithm state that it is ``stable'' without further elaboration, it means: @@ -7572,10 +7353,10 @@ index efd4eb00..12180661 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index ed7d8b8c..47a0dcbe 100644 +index 7b105687..a0c2615e 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1303,7 +1303,6 @@ when considered as an unevaluated operand. +@@ -1455,7 +1455,6 @@ when considered as an unevaluated operand. \pnum Let \exposid{pair-constructor} be an exposition-only class defined as follows: @@ -7583,7 +7364,7 @@ index ed7d8b8c..47a0dcbe 100644 \begin{codeblock} class @\exposid{pair-constructor}@ { using @\exposid{pair-type}@ = remove_cv_t; // \expos -@@ -3413,7 +3412,6 @@ template shared_ptr(nullptr_t p, D d, A a); +@@ -3565,7 +3564,6 @@ template shared_ptr(nullptr_t p, D d, A a); \tcode{is_move_constructible_v} is \tcode{true}, and \tcode{d(p)} is a well-formed expression. For the first two overloads: @@ -7592,10 +7373,10 @@ index ed7d8b8c..47a0dcbe 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index d6bf2847..f8ed03cb 100644 +index 61fa4ca2..d5f690b6 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -1590,7 +1590,6 @@ is_base_of_v // \tcode{false} +@@ -1623,7 +1623,6 @@ is_base_of_v // \tcode{false} The predicate condition for a template specialization \tcode{is_convertible} shall be satisfied if and only if the return expression in the following code would be well-formed, including any implicit conversions to the return type of the function: @@ -7603,7 +7384,7 @@ index d6bf2847..f8ed03cb 100644 \begin{codeblock} To test() { return declval(); -@@ -2066,7 +2065,6 @@ If any of the types computed above is ill-formed, then +@@ -2099,7 +2098,6 @@ If any of the types computed above is ill-formed, then \pnum For the \tcode{common_type} trait applied to a template parameter pack \tcode{T} of types, the member \tcode{type} shall be either defined or not present as follows: @@ -7612,10 +7393,10 @@ index d6bf2847..f8ed03cb 100644 \item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}. diff --git a/source/numerics.tex b/source/numerics.tex -index 8fb33130..d088b19b 100644 +index 9d12c5b1..398d125b 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -616,7 +616,6 @@ template constexpr complex operator+(const complex& lhs); +@@ -605,7 +605,6 @@ template constexpr complex operator+(const complex& lhs); \pnum \returns \tcode{complex(lhs)}. @@ -7623,7 +7404,7 @@ index 8fb33130..d088b19b 100644 \end{itemdescr} \begin{itemdecl} -@@ -755,7 +754,6 @@ template +@@ -744,7 +743,6 @@ template \effects Inserts the complex number \tcode{x} onto the stream \tcode{o} as if it were implemented as follows: @@ -7631,7 +7412,7 @@ index 8fb33130..d088b19b 100644 \begin{codeblock} basic_ostringstream s; s.flags(o.flags()); -@@ -4202,7 +4200,6 @@ template +@@ -4276,7 +4274,6 @@ template each operation is to be carried out modulo $2^{32}$, each indexing operator applied to \tcode{begin} is to be taken modulo $n$, and $T(x)$ is defined as $x \xor (x \rightshift 27)$: @@ -7639,7 +7420,7 @@ index 8fb33130..d088b19b 100644 \begin{itemize} \item By way of initialization, -@@ -8279,7 +8276,6 @@ A unique function with the indicated name can be applied (unqualified) +@@ -8355,7 +8352,6 @@ A unique function with the indicated name can be applied (unqualified) to an operand of type \tcode{T}. This function returns a value of type \tcode{T} or which can be unambiguously implicitly converted to type \tcode{T}. @@ -7647,7 +7428,7 @@ index 8fb33130..d088b19b 100644 \end{itemdescr} \rSec3[valarray.special]{Specialized algorithms} -@@ -8295,7 +8291,6 @@ template void swap(valarray& x, valarray& y) noexcept; +@@ -8371,7 +8367,6 @@ template void swap(valarray& x, valarray& y) noexcept; Equivalent to \tcode{x.swap(y)}. \end{itemdescr} @@ -7655,7 +7436,7 @@ index 8fb33130..d088b19b 100644 \rSec2[class.slice]{Class \tcode{slice}} \rSec3[class.slice.overview]{Overview} -@@ -8715,7 +8710,6 @@ namespace std { +@@ -8791,7 +8786,6 @@ namespace std { This template is a helper template used by the \tcode{gslice} subscript operator @@ -7663,7 +7444,7 @@ index 8fb33130..d088b19b 100644 \indexlibraryglobal{gslice_array}% \indexlibraryglobal{valarray}% \begin{itemdecl} -@@ -8841,7 +8835,6 @@ namespace std { +@@ -8917,7 +8911,6 @@ namespace std { \pnum This template is a helper template used by the mask subscript operator: @@ -7671,7 +7452,7 @@ index 8fb33130..d088b19b 100644 \indexlibrarymember{operator[]}{mask_array}% \begin{itemdecl} mask_array valarray::operator[](const valarray&); -@@ -8958,7 +8951,6 @@ namespace std { +@@ -9034,7 +9027,6 @@ namespace std { \pnum This template is a helper template used by the indirect subscript operator @@ -7680,7 +7461,7 @@ index 8fb33130..d088b19b 100644 \begin{itemdecl} indirect_array valarray::operator[](const valarray&); diff --git a/source/overloading.tex b/source/overloading.tex -index 8c172ec0..8ce84f74 100644 +index db9317ec..d6a68599 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -98,7 +98,6 @@ the list of arguments in its own unique way. @@ -7699,7 +7480,7 @@ index 8c172ec0..8ce84f74 100644 \begin{ncbnf} postfix-expression:\br postfix-expression \terminal{.} id-expression\br -@@ -972,7 +970,6 @@ The lookup rules for operators in expressions are different than +@@ -998,7 +996,6 @@ The lookup rules for operators in expressions are different than the lookup rules for operator function names in a function call, as shown in the following example: @@ -7707,15 +7488,15 @@ index 8c172ec0..8ce84f74 100644 \begin{codeblock} struct A { }; void operator + (A, A); -@@ -1034,7 +1031,6 @@ Assuming that +@@ -1060,7 +1057,6 @@ Assuming that \tcode{T} a class type, the candidate functions are selected as follows: - \begin{itemize} \item - The \deflinkx{converting constructors}{constructor!converting}{class.conv.ctor} of -@@ -1080,7 +1076,6 @@ conversion function to be invoked. + The non-explicit constructors\iref{class.conv.ctor} of +@@ -1106,7 +1102,6 @@ conversion function to be invoked. Assuming that ``\cv{} \tcode{T}'' is the type of the object being initialized, the candidate functions are selected as follows: @@ -7723,7 +7504,7 @@ index 8c172ec0..8ce84f74 100644 \begin{itemize} \item The permissible types for non-explicit conversion functions are -@@ -1152,7 +1147,6 @@ list-initialized such that \ref{dcl.init.list} specifies that overload resolutio +@@ -1178,7 +1173,6 @@ list-initialized such that \ref{dcl.init.list} specifies that overload resolutio is performed according to the rules in this subclause or when forming a list-initialization sequence according to \ref{over.ics.list}, overload resolution selects the constructor in two phases: @@ -7731,7 +7512,7 @@ index 8c172ec0..8ce84f74 100644 \begin{itemize} \item If the initializer list is not empty or \tcode{T} has no default constructor, -@@ -1233,7 +1227,6 @@ called the \defn{copy deduction candidate}. +@@ -1259,7 +1253,6 @@ called the \defn{copy deduction candidate}. For each \grammarterm{deduction-guide}, a function or function template with the following properties: @@ -7739,7 +7520,7 @@ index 8c172ec0..8ce84f74 100644 \begin{itemize} \item The \grammarterm{template-head}, if any, -@@ -2658,7 +2651,6 @@ sequence}{over.ics.ellipsis}. +@@ -2684,7 +2677,6 @@ sequence}{over.ics.ellipsis}. Two implicit conversion sequences of the same form are indistinguishable conversion sequences unless one of the following rules applies: @@ -7747,7 +7528,7 @@ index 8c172ec0..8ce84f74 100644 \begin{itemize} \item List-initialization sequence \tcode{L1} is a better conversion sequence than -@@ -2890,7 +2882,6 @@ int i = f(a); // calls \tcode{f(int)}, because \tcode{short} $ +@@ -2916,7 +2908,6 @@ int i = f(a); // calls \tcode{f(int)}, because \tcode{short} $ // better than \tcode{short} $\to$ \tcode{float}. \end{codeblock} \end{example} @@ -7755,7 +7536,7 @@ index 8c172ec0..8ce84f74 100644 \end{itemize} \pnum -@@ -2899,7 +2890,6 @@ better conversion than a Promotion, which is a better conversion than +@@ -2925,7 +2916,6 @@ better conversion than a Promotion, which is a better conversion than a Conversion. Two conversion sequences with the same rank are indistinguishable unless one of the following rules applies: @@ -7763,7 +7544,7 @@ index 8c172ec0..8ce84f74 100644 \begin{itemize} \item A conversion that does not convert a pointer or a pointer to member -@@ -4067,7 +4057,6 @@ is a \defnx{literal operator template}{literal!operator!template}. +@@ -4092,7 +4082,6 @@ is a \defnx{literal operator template}{literal!operator!template}. \pnum The declaration of a literal operator shall have a \grammarterm{parameter-declaration-clause} equivalent to one of the following: @@ -7772,10 +7553,10 @@ index 8c172ec0..8ce84f74 100644 const char* unsigned long long int diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 7dd32efe..9d4ec367 100644 +index 1118dbca..b54d76fc 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex -@@ -141,7 +141,6 @@ begins with the first character in the source file +@@ -183,7 +183,6 @@ begins with the first character in the source file (optionally after whitespace containing no new-line characters) or follows whitespace containing at least one new-line character, and is @@ -7783,7 +7564,7 @@ index 7dd32efe..9d4ec367 100644 \begin{itemize} \item a \tcode{\#} preprocessing token, or -@@ -565,7 +564,6 @@ including within a preprocessing directive. +@@ -645,7 +644,6 @@ including within a preprocessing directive. \begin{example} This demonstrates a way to include a library \tcode{optional} facility only if it is available: @@ -7791,7 +7572,7 @@ index 7dd32efe..9d4ec367 100644 \begin{codeblock} #if __has_include() # include -@@ -724,14 +722,12 @@ However, using the \tcode{< >} form for headers provided +@@ -804,14 +802,12 @@ However, using the \tcode{< >} form for headers provided with the implementation and the \tcode{" "} form for sources outside the control of the implementation achieves wider portability. For instance: @@ -7806,7 +7587,7 @@ index 7dd32efe..9d4ec367 100644 \end{note} \pnum -@@ -739,7 +735,6 @@ achieves wider portability. For instance: +@@ -819,7 +815,6 @@ achieves wider portability. For instance: This illustrates macro-replaced \tcode{\#include} directives: @@ -7814,7 +7595,7 @@ index 7dd32efe..9d4ec367 100644 \begin{codeblock} #if VERSION == 1 #define INCFILE "vers1.h" -@@ -1465,7 +1460,6 @@ is optional. +@@ -1895,7 +1890,6 @@ is optional. \pnum \begin{example} In the following fragment: @@ -7822,7 +7603,7 @@ index 7dd32efe..9d4ec367 100644 \begin{codeblock} #define hash_hash # ## # #define mkstr(a) # a -@@ -1475,7 +1469,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";} +@@ -1905,7 +1899,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";} \end{codeblock} The expansion produces, at various stages: @@ -7830,7 +7611,7 @@ index 7dd32efe..9d4ec367 100644 \begin{codeblock} join(x, y) in_between(x hash_hash y) -@@ -1705,7 +1698,6 @@ has no effect. +@@ -2135,7 +2128,6 @@ has no effect. \pnum The following macro names shall be defined by the implementation: @@ -7838,7 +7619,7 @@ index 7dd32efe..9d4ec367 100644 \begin{description} \item -@@ -1920,7 +1912,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali +@@ -2355,7 +2347,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali \pnum The following macro names are conditionally defined by the implementation: @@ -7846,7 +7627,7 @@ index 7dd32efe..9d4ec367 100644 \begin{description} \item \indextext{__stdc__@\mname{STDC}}% -@@ -1955,7 +1946,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. +@@ -2400,7 +2391,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. \mname{STDCPP_THREADS}\\ Defined, and has the value integer literal 1, if and only if a program can have more than one \link{thread of execution}{intro.multithread}. @@ -7855,10 +7636,10 @@ index 7dd32efe..9d4ec367 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 4a4b457c..831ed4b8 100644 +index f7c84b51..395a7de1 100644 --- a/source/ranges.tex +++ b/source/ranges.tex -@@ -633,7 +633,6 @@ object\iref{customization.point.object}. +@@ -651,7 +651,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7866,7 +7647,7 @@ index 4a4b457c..831ed4b8 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -694,7 +693,6 @@ object\iref{customization.point.object}. +@@ -712,7 +711,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7874,7 +7655,7 @@ index 4a4b457c..831ed4b8 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -820,7 +818,6 @@ object\iref{customization.point.object}. +@@ -838,7 +836,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7882,7 +7663,7 @@ index 4a4b457c..831ed4b8 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -884,7 +881,6 @@ object\iref{customization.point.object}. +@@ -902,7 +899,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7890,7 +7671,7 @@ index 4a4b457c..831ed4b8 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -1009,7 +1005,6 @@ object\iref{customization.point.object}. +@@ -1027,7 +1023,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7898,7 +7679,7 @@ index 4a4b457c..831ed4b8 100644 \begin{itemize} \item If \tcode{T} is an array of unknown bound\iref{term.array.type}, -@@ -1095,7 +1090,6 @@ object\iref{customization.point.object}. +@@ -1197,7 +1192,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7906,7 +7687,7 @@ index 4a4b457c..831ed4b8 100644 \begin{itemize} \item If \tcode{T} is an array of unknown bound\iref{term.array.type}, -@@ -1146,7 +1140,6 @@ object\iref{customization.point.object}. +@@ -1248,7 +1242,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7914,7 +7695,7 @@ index 4a4b457c..831ed4b8 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -1631,7 +1624,6 @@ manipulating ranges. +@@ -1734,7 +1727,6 @@ manipulating ranges. \pnum Many of the types in \ref{range.utility} are specified in terms of the following exposition-only concepts: @@ -7922,7 +7703,7 @@ index 4a4b457c..831ed4b8 100644 \begin{codeblock} template concept @\defexposconceptnc{simple-view}@ = // \expos -@@ -5721,7 +5713,6 @@ If \tcode{decltype((F))} does not model +@@ -5852,7 +5844,6 @@ If \tcode{decltype((F))} does not model \tcode{views::take(E, F)} is ill-formed. Otherwise, the expression \tcode{views::take(E, F)} is expression-equivalent to: @@ -7930,7 +7711,7 @@ index 4a4b457c..831ed4b8 100644 \begin{itemize} \item If \tcode{T} is a specialization -@@ -5742,7 +5733,6 @@ then +@@ -5873,7 +5864,6 @@ then ranges::be\-gin(E) + std::min(ranges::distance(E), F))}, except that \tcode{E} is evaluated only once, where \tcode{U} is a type determined as follows: @@ -7938,7 +7719,7 @@ index 4a4b457c..831ed4b8 100644 \begin{itemize} \item if \tcode{T} is a specialization of \tcode{span}, then \tcode{U} is \tcode{span}; -@@ -6186,7 +6176,6 @@ If \tcode{decltype((F))} does not model +@@ -6335,7 +6325,6 @@ If \tcode{decltype((F))} does not model \tcode{views::drop(E, F)} is ill-formed. Otherwise, the expression \tcode{views::drop(E, F)} is expression-equivalent to: @@ -7946,7 +7727,7 @@ index 4a4b457c..831ed4b8 100644 \begin{itemize} \item If \tcode{T} is a specialization of -@@ -7245,7 +7234,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and +@@ -7409,7 +7398,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and \exposid{Base} and \exposid{InnerBase} each model \libconcept{forward_range}. In that case, \tcode{\exposid{iterator}::iterator_category} is defined as follows: @@ -7954,7 +7735,7 @@ index 4a4b457c..831ed4b8 100644 \begin{itemize} \item Let \placeholder{OUTERC} denote -@@ -9512,7 +9500,6 @@ appears in the immediate context of a template instantiation. +@@ -9697,7 +9685,6 @@ appears in the immediate context of a template instantiation. \end{note} Otherwise, \tcode{views::counted(E, F)} is expression-equivalent to: @@ -7963,10 +7744,10 @@ index 4a4b457c..831ed4b8 100644 \item If \tcode{T} models \libconcept{contiguous_iterator}, diff --git a/source/statements.tex b/source/statements.tex -index 74882666..7ae850d6 100644 +index 67189ecf..25f4d3b8 100644 --- a/source/statements.tex +++ b/source/statements.tex -@@ -717,7 +717,6 @@ exposition only; and +@@ -718,7 +718,6 @@ exposition only; and \item \exposid{begin-expr} and \exposid{end-expr} are determined as follows: @@ -7974,7 +7755,7 @@ index 74882666..7ae850d6 100644 \begin{itemize} \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are -@@ -848,7 +847,6 @@ The \keyword{continue} statement +@@ -849,7 +848,6 @@ The \keyword{continue} statement causes control to pass to the loop-continuation portion of the smallest such enclosing statement, that is, to the end of the loop. More precisely, in each of the statements @@ -7982,7 +7763,7 @@ index 74882666..7ae850d6 100644 \begin{minipage}{.30\hsize} \begin{codeblock} while (foo) { -@@ -879,7 +877,6 @@ for (;;) { +@@ -880,7 +878,6 @@ for (;;) { } \end{codeblock} \end{minipage} @@ -7991,10 +7772,10 @@ index 74882666..7ae850d6 100644 equivalent to \tcode{goto} \exposid{contin}. diff --git a/source/support.tex b/source/support.tex -index b171eab1..57047ccc 100644 +index f48bb793..5057313b 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -2410,7 +2410,6 @@ This requirement is binding on any replacement versions of these functions. +@@ -2450,7 +2450,6 @@ This requirement is binding on any replacement versions of these functions. \pnum \default @@ -8002,7 +7783,7 @@ index b171eab1..57047ccc 100644 \begin{itemize} \item Executes a loop: -@@ -2878,7 +2877,6 @@ Intentionally performs no other action. +@@ -2929,7 +2928,6 @@ Intentionally performs no other action. \pnum \begin{example} This can be useful for constructing an object at a known address: @@ -8010,7 +7791,7 @@ index b171eab1..57047ccc 100644 \begin{codeblock} void* place = operator new(sizeof(Something)); Something* p = new (place) Something(); -@@ -4508,7 +4506,6 @@ are collectively termed the \defn{comparison category types}. +@@ -4821,7 +4819,6 @@ are collectively termed the \defn{comparison category types}. Each is specified in terms of an exposition-only data member named \tcode{value} whose value typically corresponds to that of an enumerator from one of the following exposition-only enumerations: @@ -8018,7 +7799,7 @@ index b171eab1..57047ccc 100644 \begin{codeblock} enum class @\placeholdernc{ord}@ { @\placeholdernc{equal}@ = 0, @\placeholdernc{equivalent}@ = @\placeholdernc{equal}@, @\placeholdernc{less}@ = -1, @\placeholdernc{greater}@ = 1 }; // \expos enum class @\placeholdernc{ncmp}@ { @\placeholdernc{unordered}@ = -127 }; // \expos -@@ -5418,7 +5415,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and +@@ -5731,7 +5728,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and denotes a type\iref{temp.deduct}, then \tcode{coroutine_traits} has the following publicly accessible member: @@ -8027,7 +7808,7 @@ index b171eab1..57047ccc 100644 using promise_type = typename R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index e6cbd553..40f02d65 100644 +index b59dafd4..e543d403 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -233,7 +233,6 @@ in some translation unit; no diagnostic is required. @@ -8038,7 +7819,7 @@ index e6cbd553..40f02d65 100644 \begin{bnf} \nontermdef{template-parameter}\br type-parameter\br -@@ -1465,7 +1464,6 @@ for function templates}{temp.func.order}. +@@ -1525,7 +1524,6 @@ for function templates}{temp.func.order}. Given an invented class template \tcode{X} with the \grammarterm{template-head} of \tcode{A} (including default arguments and \grammarterm{requires-clause}, if any): @@ -8046,7 +7827,7 @@ index e6cbd553..40f02d65 100644 \begin{itemize} \item Each of the two function templates has the same template parameters -@@ -1798,7 +1796,6 @@ or templated function declaration\iref{dcl.fct} +@@ -1923,7 +1921,6 @@ or templated function declaration\iref{dcl.fct} can be constrained by the use of a \grammarterm{requires-clause}. This allows the specification of constraints for that declaration as an expression: @@ -8054,7 +7835,7 @@ index e6cbd553..40f02d65 100644 \begin{bnf} \nontermdef{constraint-expression}\br logical-or-expression -@@ -1814,7 +1811,6 @@ that are used to constrain the declaration. +@@ -1939,7 +1936,6 @@ that are used to constrain the declaration. \pnum \indextext{constraint!associated|see{associated constraints}}% A declaration's \defn{associated constraints} are defined as follows: @@ -8062,7 +7843,7 @@ index e6cbd553..40f02d65 100644 \begin{itemize} \item If there are no introduced \grammarterm{constraint-expression}{s}, the declaration has no associated constraints. -@@ -2484,7 +2480,6 @@ public: +@@ -2721,7 +2717,6 @@ public: declares three member functions of a class template. The subscript function can be defined like this: @@ -8070,7 +7851,7 @@ index e6cbd553..40f02d65 100644 \begin{codeblock} template T& Array::operator[](int i) { if (i<0 || sz<=i) error("Array: range error"); -@@ -2874,7 +2869,6 @@ produces zero or more instantiations of the pattern in a list (described below). +@@ -3110,7 +3105,6 @@ produces zero or more instantiations of the pattern in a list (described below). The form of the pattern depends on the context in which the expansion occurs. Pack expansions can occur in the following contexts: @@ -8078,15 +7859,15 @@ index e6cbd553..40f02d65 100644 \begin{itemize} \item In a function parameter pack\iref{dcl.fct}; the pattern is the \grammarterm{parameter-declaration} without the ellipsis. -@@ -3464,7 +3458,6 @@ All other non-type arguments are specialized. +@@ -3712,7 +3706,6 @@ All other constant template arguments are specialized. \pnum Within the argument list of a partial specialization, the following restrictions apply: - \begin{itemize} \item - The type of a template parameter corresponding to a specialized non-type argument -@@ -3478,7 +3471,6 @@ template< int X, int (*array_ptr)[X] > class A {}; + The type of a template parameter corresponding to a specialized constant template +@@ -3726,7 +3719,6 @@ template< int X, int (*array_ptr)[X] > class A {}; int array[5]; template< int X > class A { }; // error \end{codeblock} @@ -8094,7 +7875,7 @@ index e6cbd553..40f02d65 100644 \end{example} \item The partial specialization shall be more specialized than the primary -@@ -3604,7 +3596,6 @@ the first is \defn{more specialized} than the second if, given the following +@@ -3852,7 +3844,6 @@ the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more specialized than the second according to the \link{ordering rules for function templates}{temp.func.order}: @@ -8102,7 +7883,7 @@ index e6cbd553..40f02d65 100644 \begin{itemize} \item Each of the two -@@ -3756,7 +3747,6 @@ A::B abci; // uses \#1 +@@ -4004,7 +3995,6 @@ A::B abci; // uses \#1 A function template defines an unbounded set of related functions. \begin{example} A family of sort functions can be declared like this: @@ -8110,7 +7891,7 @@ index e6cbd553..40f02d65 100644 \begin{codeblock} template class Array { }; template void sort(Array&); -@@ -3811,7 +3801,6 @@ void h(int* p) { +@@ -4059,7 +4049,6 @@ void h(int* p) { } \end{codeblock} \end{minipage} @@ -8118,7 +7899,7 @@ index e6cbd553..40f02d65 100644 \end{example} \pnum -@@ -3997,7 +3986,6 @@ to guarantee that functionally equivalent declarations will be treated +@@ -4247,7 +4236,6 @@ to guarantee that functionally equivalent declarations will be treated as distinct. For example, the last two declarations are functionally equivalent and would cause a program to be ill-formed: @@ -8126,7 +7907,7 @@ index e6cbd553..40f02d65 100644 \begin{codeblock} // guaranteed to be the same template void f(A, A); -@@ -4077,7 +4065,6 @@ then the order of the function parameters in its transformed template +@@ -4340,7 +4328,6 @@ then the order of the function parameters in its transformed template is reversed. For a function template $M$ with cv-qualifiers \cv{} that is a member of a class $A$: @@ -8134,7 +7915,7 @@ index e6cbd553..40f02d65 100644 \begin{itemize} \item The type $X(M)$ is ``rvalue reference to \cv{}~$A$'' -@@ -4322,7 +4309,6 @@ template class TT> +@@ -4585,7 +4572,6 @@ template class TT> void g(TT>); g(v); // OK, \tcode{TT} = \tcode{vector} \end{codeblock} @@ -8142,7 +7923,7 @@ index e6cbd553..40f02d65 100644 \end{example} \pnum -@@ -5173,7 +5159,6 @@ of a class that is the current instantiation. +@@ -5435,7 +5421,6 @@ of a class that is the current instantiation. \pnum A qualified name\iref{basic.lookup.qual} is dependent if @@ -8150,7 +7931,7 @@ index e6cbd553..40f02d65 100644 \begin{itemize} \item it is a \grammarterm{conversion-function-id} -@@ -5407,7 +5392,6 @@ specified by the +@@ -5672,7 +5657,6 @@ specified by the or \grammarterm{new-type-id} is dependent, even if any subexpression is type-dependent: @@ -8158,7 +7939,7 @@ index e6cbd553..40f02d65 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br simple-type-specifier braced-init-list\br -@@ -5425,7 +5409,6 @@ typename-specifier braced-init-list\br +@@ -5690,7 +5674,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following forms are never type-dependent (because the type of the expression cannot be dependent): @@ -8166,7 +7947,7 @@ index e6cbd553..40f02d65 100644 \begin{ncsimplebnf} literal\br \keyword{sizeof} unary-expression\br -@@ -5518,7 +5501,6 @@ Expressions of the following form are value-dependent if the +@@ -5785,7 +5768,6 @@ Expressions of the following form are value-dependent if the is type-dependent or the \grammarterm{type-id} is dependent: @@ -8174,7 +7955,7 @@ index e6cbd553..40f02d65 100644 \begin{ncsimplebnf} \keyword{sizeof} unary-expression\br \keyword{sizeof} \terminal{(} type-id \terminal{)}\br -@@ -5546,7 +5528,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} +@@ -5813,7 +5795,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} is value-dependent or any \grammarterm{assignment-expression} in the \grammarterm{braced-init-list} is value-dependent: @@ -8182,7 +7963,7 @@ index e6cbd553..40f02d65 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br typename-specifier \terminal{(} opt{expression-list} \terminal{)}\br -@@ -5561,7 +5542,6 @@ dynamic_cast \terminal{<} type-id \terminal{>} \terminal{(} expression \terminal +@@ -5828,7 +5809,6 @@ dynamic_cast \terminal{<} type-id \terminal{>} \terminal{(} expression \terminal \pnum Expressions of the following form are value-dependent: @@ -8190,7 +7971,7 @@ index e6cbd553..40f02d65 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -6452,7 +6432,6 @@ template. +@@ -6725,7 +6705,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -8198,7 +7979,7 @@ index e6cbd553..40f02d65 100644 \begin{bnf} \nontermdef{explicit-instantiation}\br \opt{\keyword{extern}} \keyword{template} declaration -@@ -6926,7 +6905,6 @@ otherwise, it is a declaration. +@@ -7200,7 +7179,6 @@ otherwise, it is a declaration. The definition of a static data member of a template for which default-initialization is desired can use functional cast notation\iref{expr.type.conv}: @@ -8206,7 +7987,7 @@ index e6cbd553..40f02d65 100644 \begin{codeblock} template<> X Q::x; // declaration template<> X Q::x (); // error: declares a function -@@ -7185,7 +7163,6 @@ An empty template argument list can be used to indicate that a given +@@ -7459,7 +7437,6 @@ An empty template argument list can be used to indicate that a given use refers to a specialization of a function template even when a non-template function\iref{dcl.fct} is visible that would otherwise be used. For example: @@ -8214,7 +7995,7 @@ index e6cbd553..40f02d65 100644 \begin{codeblock} template int f(T); // \#1 int f(int); // \#2 -@@ -7762,7 +7739,6 @@ void h(int x, float& y) { +@@ -8040,7 +8017,6 @@ void h(int x, float& y) { If \tcode{P} is not a reference type: @@ -8222,7 +8003,7 @@ index e6cbd553..40f02d65 100644 \begin{itemize} \item If -@@ -7857,7 +7833,6 @@ the type +@@ -8135,7 +8111,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -8230,7 +8011,7 @@ index e6cbd553..40f02d65 100644 \begin{itemize} \item If the original -@@ -8046,7 +8021,6 @@ of \tcode{P} for type deduction and for any further references to or transformat +@@ -8323,7 +8298,6 @@ of \tcode{P} for type deduction and for any further references to or transformat If \tcode{A} is not a reference type: @@ -8238,7 +8019,7 @@ index e6cbd553..40f02d65 100644 \begin{itemize} \item If -@@ -8092,7 +8066,6 @@ values that will make the deduced +@@ -8369,7 +8343,6 @@ values that will make the deduced identical to \tcode{A}. However, certain attributes of \tcode{A} may be ignored: @@ -8246,7 +8027,7 @@ index e6cbd553..40f02d65 100644 \begin{itemize} \item If the original \tcode{A} is a reference type, -@@ -8137,7 +8110,6 @@ the argument template and template-1 as the parameter template. +@@ -8414,7 +8387,6 @@ the argument template and template-1 as the parameter template. \pnum The types used to determine the ordering depend on the context in which the partial ordering is done: @@ -8254,7 +8035,7 @@ index e6cbd553..40f02d65 100644 \begin{itemize} \item In the context of a function call, the types used are those function parameter types -@@ -8165,7 +8137,6 @@ and +@@ -8442,7 +8414,6 @@ and \pnum Before the partial ordering is done, certain transformations are performed on the types used for partial ordering: @@ -8262,15 +8043,15 @@ index e6cbd553..40f02d65 100644 \begin{itemize} \item If -@@ -8371,7 +8342,6 @@ A given type +@@ -8648,7 +8619,6 @@ A given type \tcode{P} can be composed from a number of other - types, templates, and non-type values: + types, templates, and constant template argument values: - \begin{itemize} \item A function type includes the types of each of the function parameters, -@@ -8413,7 +8383,6 @@ need not have the same form. +@@ -8690,7 +8660,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -8278,7 +8059,7 @@ index e6cbd553..40f02d65 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -8504,7 +8473,6 @@ is deduced. +@@ -8781,7 +8750,6 @@ is deduced. \begin{example} Here is an example in which different parameter/argument pairs produce inconsistent template argument deductions: @@ -8286,7 +8067,7 @@ index e6cbd553..40f02d65 100644 \begin{codeblock} template void f(T x, T y) { @\commentellip@ } struct A { @\commentellip@ }; -@@ -8521,7 +8489,6 @@ Here is an example where two template arguments are deduced from a +@@ -8798,7 +8766,6 @@ Here is an example where two template arguments are deduced from a single function parameter/argument pair. This can lead to conflicts that cause type deduction to fail: @@ -8294,7 +8075,7 @@ index e6cbd553..40f02d65 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -8538,7 +8505,6 @@ void r() { +@@ -8815,7 +8782,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -8302,7 +8083,7 @@ index e6cbd553..40f02d65 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -8557,7 +8523,6 @@ void h() { +@@ -8834,7 +8800,6 @@ void h() { Here is an example where a qualification conversion applies between the argument type on the function call and the deduced template argument type: @@ -8310,7 +8091,7 @@ index e6cbd553..40f02d65 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -8568,7 +8533,6 @@ void s() { +@@ -8845,7 +8810,6 @@ void s() { Here is an example where the template argument is used to instantiate a derived class type of the corresponding function parameter type: @@ -8319,10 +8100,10 @@ index e6cbd553..40f02d65 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 15068b87..9eeff045 100644 +index 9ebc2602..665a3d2e 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -6689,7 +6689,6 @@ and visible to other threads. +@@ -6630,7 +6630,6 @@ and visible to other threads. \pnum The expression \tcode{m.lock()} is well-formed and has the following semantics: @@ -8330,7 +8111,7 @@ index 15068b87..9eeff045 100644 \begin{itemdescr} \pnum \expects -@@ -6732,7 +6731,6 @@ that a deadlock would occur. +@@ -6673,7 +6672,6 @@ that a deadlock would occur. \pnum The expression \tcode{m.try_lock()} is well-formed and has the following semantics: @@ -8338,7 +8119,7 @@ index 15068b87..9eeff045 100644 \begin{itemdescr} \pnum \expects -@@ -6778,7 +6776,6 @@ Nothing. +@@ -6719,7 +6717,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -8346,7 +8127,7 @@ index 15068b87..9eeff045 100644 \begin{itemdescr} \pnum \expects -@@ -6933,7 +6930,6 @@ requirements\iref{thread.req.lockable.timed}. +@@ -6874,7 +6871,6 @@ requirements\iref{thread.req.lockable.timed}. \pnum The expression \tcode{m.try_lock_for(rel_time)} is well-formed and has the following semantics: @@ -8354,7 +8135,7 @@ index 15068b87..9eeff045 100644 \begin{itemdescr} \pnum \expects -@@ -6975,7 +6971,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -6916,7 +6912,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_until(abs_time)} is well-formed and has the following semantics: @@ -8362,7 +8143,7 @@ index 15068b87..9eeff045 100644 \begin{itemdescr} \pnum \expects -@@ -7162,7 +7157,6 @@ shared lock. +@@ -7103,7 +7098,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -8370,7 +8151,7 @@ index 15068b87..9eeff045 100644 \begin{itemdescr} \pnum \expects -@@ -7199,7 +7193,6 @@ The calling thread has a shared lock on the mutex. +@@ -7140,7 +7134,6 @@ The calling thread has a shared lock on the mutex. \pnum The expression \tcode{m.unlock_shared()} is well-formed and has the following semantics: @@ -8378,7 +8159,7 @@ index 15068b87..9eeff045 100644 \begin{itemdescr} \pnum \expects -@@ -7224,7 +7217,6 @@ Nothing. +@@ -7165,7 +7158,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -8386,7 +8167,7 @@ index 15068b87..9eeff045 100644 \begin{itemdescr} \pnum \expects -@@ -7327,7 +7319,6 @@ requirements\iref{thread.req.lockable.shared.timed}. +@@ -7268,7 +7260,6 @@ requirements\iref{thread.req.lockable.shared.timed}. \pnum The expression \tcode{m.try_lock_shared_for(rel_time)} is well-formed and has the following semantics: @@ -8394,7 +8175,7 @@ index 15068b87..9eeff045 100644 \begin{itemdescr} \pnum \expects -@@ -7372,7 +7363,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -7313,7 +7304,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_shared_until(abs_time)} is well-formed and has the following semantics: @@ -8402,7 +8183,7 @@ index 15068b87..9eeff045 100644 \begin{itemdescr} \pnum \expects -@@ -9521,7 +9511,6 @@ template +@@ -9451,7 +9441,6 @@ template \begin{itemdescr} \pnum \effects @@ -8410,7 +8191,7 @@ index 15068b87..9eeff045 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -10932,7 +10921,6 @@ shared state as \tcode{*this}. +@@ -10862,7 +10851,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -8418,7 +8199,7 @@ index 15068b87..9eeff045 100644 \begin{itemize} \item \tcode{future_already_retrieved} if \tcode{get_future} has already been called on a \tcode{promise} with the same shared state as \tcode{*this}. -@@ -10995,7 +10983,6 @@ already has a stored value or exception. +@@ -10925,7 +10913,6 @@ already has a stored value or exception. \pnum \errors @@ -8426,7 +8207,7 @@ index 15068b87..9eeff045 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -11335,7 +11322,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -11265,7 +11252,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -8434,7 +8215,7 @@ index 15068b87..9eeff045 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -11679,7 +11665,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -11609,7 +11595,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8442,7 +8223,7 @@ index 15068b87..9eeff045 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -11714,7 +11699,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -11644,7 +11629,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8450,7 +8231,7 @@ index 15068b87..9eeff045 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -11770,7 +11754,6 @@ The further behavior +@@ -11700,7 +11684,6 @@ The further behavior of the second function depends on the \tcode{policy} argument as follows (if more than one of these conditions applies, the implementation may choose any of the corresponding policies): @@ -8459,7 +8240,7 @@ index 15068b87..9eeff045 100644 \item If \tcode{launch::async} is set in \tcode{policy}, calls diff --git a/source/time.tex b/source/time.tex -index 7ce27c0a..2ab4949b 100644 +index d7ebe6c6..bf00eae4 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2074,7 +2074,6 @@ return os << s.str(); @@ -8609,10 +8390,10 @@ index 7ce27c0a..2ab4949b 100644 \fmtnontermdef{chrono-format-spec}\br \opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs} diff --git a/source/utilities.tex b/source/utilities.tex -index 316f0500..f94c312e 100644 +index c8862145..a6b9d7f9 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -254,7 +254,6 @@ Exchanges values stored in two locations. +@@ -270,7 +270,6 @@ Exchanges values stored in two locations. \pnum \remarks The exception specification is equivalent to: @@ -8620,7 +8401,7 @@ index 316f0500..f94c312e 100644 \begin{codeblock} is_nothrow_move_constructible_v && is_nothrow_move_assignable_v \end{codeblock} -@@ -2193,7 +2192,6 @@ For all $i$, assigns \tcode{std::forward<$\tcode{T}_i$>(get<$i$>(u))} to +@@ -2220,7 +2219,6 @@ For all $i$, assigns \tcode{std::forward<$\tcode{T}_i$>(get<$i$>(u))} to \remarks The exception specification is equivalent to the logical \logop{and} of the following expressions: @@ -8628,7 +8409,7 @@ index 316f0500..f94c312e 100644 \begin{codeblock} is_nothrow_move_assignable_v<@$\mathtt{T}_i$@> \end{codeblock} -@@ -3139,7 +3137,6 @@ As if by \tcode{x.swap(y)}. +@@ -3166,7 +3164,6 @@ As if by \tcode{x.swap(y)}. \pnum \remarks The exception specification is equivalent to: @@ -8636,7 +8417,7 @@ index 316f0500..f94c312e 100644 \begin{codeblock} noexcept(x.swap(y)) \end{codeblock} -@@ -10107,7 +10104,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; +@@ -10142,7 +10139,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8644,7 +8425,7 @@ index 316f0500..f94c312e 100644 \begin{itemize} \item If \tcode{I < pos}, the new value is zero; -@@ -10132,7 +10128,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; +@@ -10167,7 +10163,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8652,7 +8433,7 @@ index 316f0500..f94c312e 100644 \begin{itemize} \item If \tcode{pos >= N - I}, the new value is zero; -@@ -10860,7 +10855,6 @@ namespace std { +@@ -10893,7 +10888,6 @@ namespace std { If a \Cpp{} program wants to have a by-element addition of two vectors \tcode{a} and \tcode{b} containing \tcode{double} and put the result into \tcode{a}, it can do: @@ -8660,7 +8441,7 @@ index 316f0500..f94c312e 100644 \begin{codeblock} transform(a.begin(), a.end(), b.begin(), a.begin(), plus()); \end{codeblock} -@@ -14355,7 +14349,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; +@@ -14373,7 +14367,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; The header provides partial specializations of \tcode{function_ref} for each combination of the possible replacements of the placeholders \cv{} and \placeholder{noex} where: @@ -8672,10 +8453,10 @@ index 316f0500..f94c312e 100644 2.43.0 -From 26305cffbf995abb47d25643d4d030718ab11a03 Mon Sep 17 00:00:00 2001 +From 2ff2442a31a0abab0da89f7dae6fcc9a927ecadd Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 -Subject: [PATCH 09/13] Use monospace font for code in figures. +Subject: [PATCH 08/14] Use monospace font for code in figures. --- source/assets/figdag.dot | 8 ++++---- @@ -8819,10 +8600,10 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From d314b8c625d3457bd547ce86afe96cf9504de8c0 Mon Sep 17 00:00:00 2001 +From caf22378e0967e1d2b000cf13a9f3aaf3e44cd0b Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 -Subject: [PATCH 10/13] [uaxid] Mark code that's not to be highlighted. +Subject: [PATCH 09/14] [uaxid] Mark code that's not to be highlighted. --- source/uax31.tex | 8 ++++---- @@ -8857,13 +8638,13 @@ index 5b236c6e..320ed00a 100644 2.43.0 -From 70e6cb0de0eb28bd06ad9c97f3924c8ef24c3c36 Mon Sep 17 00:00:00 2001 +From 92f545e2d4c89fae3ff7947d3bfd2d68a8797d0c Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 -Subject: [PATCH 11/13] Use cxxdraft-htmlgen macros more. +Subject: [PATCH 10/14] Use cxxdraft-htmlgen macros more. --- - source/algorithms.tex | 194 +++++++++++++------------- + source/algorithms.tex | 194 ++++++++++++------------- source/concepts.tex | 4 +- source/diagnostics.tex | 18 ++- source/exec.tex | 18 +-- @@ -8871,17 +8652,17 @@ Subject: [PATCH 11/13] Use cxxdraft-htmlgen macros more. source/iostreams.tex | 28 ++-- source/lib-intro.tex | 28 ++-- source/memory.tex | 46 +++--- - source/meta.tex | 307 ++++++++++++++++++++--------------------- + source/meta.tex | 313 ++++++++++++++++++++--------------------- source/numerics.tex | 38 ++--- source/strings.tex | 10 +- source/support.tex | 14 +- source/threads.tex | 112 +++++++-------- source/time.tex | 66 ++++----- source/utilities.tex | 138 +++++++++--------- - 15 files changed, 511 insertions(+), 520 deletions(-) + 15 files changed, 514 insertions(+), 523 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 436d60b1..47082ed4 100644 +index 00711383..3b19eb71 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -8928,7 +8709,7 @@ index 436d60b1..47082ed4 100644 if it is required to be a mutable iterator, or model \libconcept{random_access_iterator}\iref{iterator.concept.random.access} otherwise. \end{itemize} -@@ -3606,10 +3606,10 @@ template +@@ -3609,10 +3609,10 @@ template \pnum \expects \tcode{Function} meets @@ -8941,7 +8722,7 @@ index 436d60b1..47082ed4 100644 \end{note} \pnum -@@ -3646,7 +3646,7 @@ template +@@ -3649,7 +3649,7 @@ template \begin{itemdescr} \pnum \expects @@ -8950,7 +8731,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -3732,10 +3732,10 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -3735,10 +3735,10 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8963,7 +8744,7 @@ index 436d60b1..47082ed4 100644 \end{note} \pnum -@@ -3772,7 +3772,7 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -3775,7 +3775,7 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8972,7 +8753,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -4438,7 +4438,7 @@ If +@@ -4441,7 +4441,7 @@ If \item the types of \tcode{first1}, \tcode{last1}, \tcode{first2}, and \tcode{last2} meet the @@ -8981,7 +8762,7 @@ index 436d60b1..47082ed4 100644 and \tcode{last1 - first1 != last2 - first2} for the overloads in namespace \tcode{std}; \item -@@ -4762,7 +4762,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} +@@ -4765,7 +4765,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} \pnum \remarks @@ -8990,7 +8771,7 @@ index 436d60b1..47082ed4 100644 \end{itemdescr} \rSec2[alg.starts.with]{Starts with} -@@ -5177,7 +5177,7 @@ do not overlap. +@@ -5180,7 +5180,7 @@ do not overlap. For the overload with an \tcode{ExecutionPolicy}, there might be a performance cost if \tcode{iterator_traits::value_type} @@ -8999,7 +8780,7 @@ index 436d60b1..47082ed4 100644 \end{note} \pnum -@@ -5988,7 +5988,7 @@ Let $E$ be +@@ -5991,7 +5991,7 @@ Let $E$ be \expects For the algorithms in namespace \tcode{std}, the type of \tcode{*first} @@ -9008,7 +8789,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -6098,7 +6098,7 @@ do not overlap. +@@ -6101,7 +6101,7 @@ do not overlap. For the overloads with an \tcode{ExecutionPolicy}, there might be a performance cost if \tcode{iterator_traits::value_type} does not meet @@ -9017,7 +8798,7 @@ index 436d60b1..47082ed4 100644 \end{note} \pnum -@@ -6171,7 +6171,7 @@ let $E$ be +@@ -6174,7 +6174,7 @@ let $E$ be For the overloads in namespace \tcode{std}, \tcode{pred} is an equivalence relation and the type of \tcode{*first} meets @@ -9026,7 +8807,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -6274,18 +6274,18 @@ let $E$ be +@@ -6277,18 +6277,18 @@ let $E$ be \libconcept{forward_iterator}\iref{iterator.concept.forward}, then there are no additional requirements for \tcode{T}. Otherwise, if \tcode{OutputIterator} meets @@ -9050,7 +8831,7 @@ index 436d60b1..47082ed4 100644 \end{note} \end{itemize} \end{itemize} -@@ -6333,7 +6333,7 @@ template<@\libconcept{bidirectional_range}@ R> +@@ -6336,7 +6336,7 @@ template<@\libconcept{bidirectional_range}@ R> \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9059,7 +8840,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -6425,10 +6425,10 @@ template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S> +@@ -6428,10 +6428,10 @@ template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S> \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -9073,7 +8854,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -6569,13 +6569,13 @@ For the overload in namespace \tcode{std}: +@@ -6572,13 +6572,13 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{PopulationIterator} meets @@ -9090,7 +8871,7 @@ index 436d60b1..47082ed4 100644 unless \tcode{Pop\-ulat\-ion\-Iter\-ator} models \libconcept{forward_iterator}\iref{iterator.concept.forward}. \item -@@ -6643,7 +6643,7 @@ For the overload in namespace \tcode{std}: +@@ -6646,7 +6646,7 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{RandomAccessIterator} meets @@ -9099,7 +8880,7 @@ index 436d60b1..47082ed4 100644 \item The type \tcode{remove_reference_t} meets the uniform random bit generator\iref{rand.req.urng} requirements. -@@ -6695,7 +6695,7 @@ template<@\libconcept{forward_range}@ R> +@@ -6698,7 +6698,7 @@ template<@\libconcept{forward_range}@ R> \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -9108,7 +8889,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -6749,10 +6749,10 @@ template<@\libconcept{forward_range}@ R> +@@ -6752,10 +6752,10 @@ template<@\libconcept{forward_range}@ R> \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -9122,7 +8903,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -6766,7 +6766,7 @@ from \tcode{i = (last - first) - n - 1} and proceeding to \tcode{i = 0} if +@@ -6769,7 +6769,7 @@ from \tcode{i = (last - first) - n - 1} and proceeding to \tcode{i = 0} if \item for the overload in namespace \tcode{std} without an \tcode{ExecutionPolicy} template parameter, @@ -9131,7 +8912,7 @@ index 436d60b1..47082ed4 100644 \item for the overloads in namespace \tcode{ranges}, \tcode{I} models \libconcept{bidirectional_iterator}. -@@ -6922,10 +6922,10 @@ for the overloads with no parameters by those names. +@@ -6925,10 +6925,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9145,7 +8926,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -6980,10 +6980,10 @@ for the overloads with no parameters by those names. +@@ -6983,10 +6983,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9159,7 +8940,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -7050,10 +7050,10 @@ for the overloads with no parameters by those names. +@@ -7053,10 +7053,10 @@ for the overloads with no parameters by those names. \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9173,7 +8954,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -7158,10 +7158,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. +@@ -7161,10 +7161,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9187,7 +8968,7 @@ index 436d60b1..47082ed4 100644 \pnum For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and -@@ -7363,10 +7363,10 @@ for the overloads with no parameters by those names. +@@ -7366,10 +7366,10 @@ for the overloads with no parameters by those names. \range{first}{nth} and \range{nth}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9201,7 +8982,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -7714,7 +7714,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -7717,7 +7717,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -9210,7 +8991,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -7741,7 +7741,7 @@ Let $N = \tcode{last - first}$: +@@ -7744,7 +7744,7 @@ Let $N = \tcode{last - first}$: For the overload with no \tcode{ExecutionPolicy}, exactly $N$ applications of the predicate and projection. At most $N / 2$ swaps if the type of \tcode{first} meets @@ -9219,7 +9000,7 @@ index 436d60b1..47082ed4 100644 for the overloads in namespace \tcode{std} or models \libconcept{bidirectional_iterator} for the overloads in namespace \tcode{ranges}, -@@ -7783,10 +7783,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -7786,10 +7786,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9233,7 +9014,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -7869,7 +7869,7 @@ The input range and output ranges do not overlap. +@@ -7872,7 +7872,7 @@ The input range and output ranges do not overlap. \begin{note} For the overload with an \tcode{ExecutionPolicy}, there might be a performance cost if \tcode{first}'s value type @@ -9242,7 +9023,7 @@ index 436d60b1..47082ed4 100644 \end{note} \pnum -@@ -8074,10 +8074,10 @@ for the overloads with no parameters by those names. +@@ -8077,10 +8077,10 @@ for the overloads with no parameters by those names. sorted with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9256,7 +9037,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -8643,10 +8643,10 @@ The range \range{first}{last - 1} +@@ -8646,10 +8646,10 @@ The range \range{first}{last - 1} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9270,7 +9051,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -8696,10 +8696,10 @@ The range \range{first}{last} +@@ -8699,10 +8699,10 @@ The range \range{first}{last} is a valid non-empty heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9284,7 +9065,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -8752,10 +8752,10 @@ for the overloads with no parameters by those names. +@@ -8755,10 +8755,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9298,7 +9079,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -8805,10 +8805,10 @@ The range \range{first}{last} is +@@ -8808,10 +8808,10 @@ The range \range{first}{last} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9312,7 +9093,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -8967,7 +8967,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -9332,7 +9113,7 @@ index 436d60b1..47082ed4 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9045,7 +9045,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -9352,7 +9133,7 @@ index 436d60b1..47082ed4 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9125,7 +9125,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -9372,7 +9153,7 @@ index 436d60b1..47082ed4 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9359,7 +9359,7 @@ for the overloads with no parameter \tcode{proj}. +@@ -9362,7 +9362,7 @@ for the overloads with no parameter \tcode{proj}. \expects \tcode{bool(invoke(comp, invoke(proj, hi), invoke(proj, lo)))} is \tcode{false}. For the first form, type \tcode{T} @@ -9381,7 +9162,7 @@ index 436d60b1..47082ed4 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9548,7 +9548,7 @@ for overloads with no parameters by those names. +@@ -9551,7 +9551,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9390,7 +9171,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -9607,7 +9607,7 @@ for overloads with no parameters by those names. +@@ -9610,7 +9610,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9399,7 +9180,7 @@ index 436d60b1..47082ed4 100644 \pnum \effects -@@ -9925,8 +9925,8 @@ template +@@ -9929,8 +9929,8 @@ template \pnum \expects \tcode{T} meets @@ -9410,7 +9191,7 @@ index 436d60b1..47082ed4 100644 In the range \crange{first}{last}, \tcode{binary_op} neither modifies elements nor invalidates iterators or subranges. -@@ -10048,7 +10048,7 @@ are convertible to \tcode{T}. +@@ -10052,7 +10052,7 @@ are convertible to \tcode{T}. \expects \begin{itemize} \item @@ -9419,7 +9200,7 @@ index 436d60b1..47082ed4 100644 \item \tcode{binary_op} neither invalidates iterators or subranges, nor modifies elements in the range \crange{first}{last}. -@@ -10092,8 +10092,8 @@ template}. +@@ -10791,7 +10791,7 @@ that denotes an object of type \tcode{minus<>}. \begin{itemize} \item For the overloads with no \tcode{ExecutionPolicy}, @@ -9522,10 +9303,10 @@ index 0bfd8612..b166e3a9 100644 invocation of the destructor does not actually throw. \end{note} diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index b729a13d..be9f913a 100644 +index 8caccce8..0a896c57 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex -@@ -834,9 +834,9 @@ namespace std { +@@ -758,9 +758,9 @@ namespace std { // \ref{syserr}, system error support template @@ -9537,7 +9318,7 @@ index b729a13d..be9f913a 100644 } \end{codeblock} -@@ -847,9 +847,9 @@ Whether or not the \libheader{system_error} implementation +@@ -771,9 +771,9 @@ Whether or not the \libheader{system_error} implementation exposes the \libheader{cerrno} macros is unspecified. \pnum @@ -9549,7 +9330,7 @@ index b729a13d..be9f913a 100644 conversions, respectively. \rSec2[syserr.errcat]{Class \tcode{error_category}} -@@ -874,8 +874,6 @@ even for objects holding the same value. +@@ -798,8 +798,6 @@ even for objects holding the same value. \indexlibraryglobal{error_category}% \indexlibraryctor{error_category}% \indexlibrarydtor{error_category}% @@ -9558,7 +9339,7 @@ index b729a13d..be9f913a 100644 \begin{codeblock} namespace std { class error_category { -@@ -894,8 +892,8 @@ namespace std { +@@ -818,8 +816,8 @@ namespace std { strong_ordering operator<=>(const error_category& rhs) const noexcept; }; @@ -9569,7 +9350,7 @@ index b729a13d..be9f913a 100644 } \end{codeblock} -@@ -1166,7 +1164,7 @@ template +@@ -1090,7 +1088,7 @@ template \begin{itemdescr} \pnum \constraints @@ -9578,7 +9359,7 @@ index b729a13d..be9f913a 100644 \pnum \effects -@@ -1199,7 +1197,7 @@ template +@@ -1123,7 +1121,7 @@ template \begin{itemdescr} \pnum \constraints @@ -9588,7 +9369,7 @@ index b729a13d..be9f913a 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 0403d808..e8eaf162 100644 +index 97e105ec..9daa0bde 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9627,10 +9408,10 @@ index 0403d808..e8eaf162 100644 \\ \end{floattable} diff --git a/source/future.tex b/source/future.tex -index 13655931..c7435927 100644 +index ddaaf96d..fd54144f 100644 --- a/source/future.tex +++ b/source/future.tex -@@ -351,7 +351,7 @@ template struct is_pod; +@@ -344,7 +344,7 @@ template struct is_pod; \pnum \remarks @@ -9639,7 +9420,7 @@ index 13655931..c7435927 100644 with a base characteristic of \tcode{true_type} if \tcode{T} is a POD type, and \tcode{false_type} otherwise. -@@ -535,7 +535,7 @@ Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T} +@@ -528,7 +528,7 @@ Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T} If the expression \tcode{TS::value} is well-formed when treated as an \deflink{unevaluated operand}{expr.context}, then specializations of each of the two templates meet @@ -9648,7 +9429,7 @@ index 13655931..c7435927 100644 \tcode{integral_constant}. Otherwise, they have no member \tcode{value}. -@@ -563,7 +563,7 @@ template struct tuple_element; +@@ -556,7 +556,7 @@ template struct tuple_element; Let \tcode{TE} denote \tcode{tuple_element_t} of the cv-unqualified type \tcode{T}. Then specializations of each of the two templates meet @@ -9657,7 +9438,7 @@ index 13655931..c7435927 100644 with a member typedef \tcode{type} that names the following type: \begin{itemize} \item for the first specialization, \tcode{add_volatile_t}, and -@@ -603,7 +603,7 @@ template struct variant_size; +@@ -596,7 +596,7 @@ template struct variant_size; Let \tcode{VS} denote \tcode{variant_size} of the cv-unqualified type \tcode{T}. Then specializations of each of the two templates meet @@ -9666,7 +9447,7 @@ index 13655931..c7435927 100644 with a base characteristic of \tcode{integral_constant}. \end{itemdescr} -@@ -617,7 +617,7 @@ template struct variant_alternative; +@@ -610,7 +610,7 @@ template struct variant_alternative; Let \tcode{VA} denote \tcode{variant_alternative} of the cv-unqualified type \tcode{T}. Then specializations of each of the two templates meet @@ -9676,10 +9457,10 @@ index 13655931..c7435927 100644 \begin{itemize} \item for the first specialization, \tcode{add_volatile_t}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index b2222efe..b27ba881 100644 +index eaf34520..16d1fb3a 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -1681,10 +1681,10 @@ An \tcode{fpos} type specifies file position information. +@@ -1687,10 +1687,10 @@ An \tcode{fpos} type specifies file position information. It holds a state object whose type is equal to the template parameter \tcode{stateT}. Type \tcode{stateT} shall meet @@ -9694,7 +9475,7 @@ index b2222efe..b27ba881 100644 If \tcode{is_trivially_copy_constructible_v} is \tcode{true}, then \tcode{fpos} has a trivial copy constructor. If \tcode{is_trivially_copy_assignable_v} is \tcode{true}, -@@ -1692,11 +1692,11 @@ then \tcode{fpos} has a trivial copy assignment operator. +@@ -1698,11 +1698,11 @@ then \tcode{fpos} has a trivial copy assignment operator. If \tcode{is_trivially_destructible_v} is \tcode{true}, then \tcode{fpos} has a trivial destructor. All specializations of \tcode{fpos} meet @@ -9711,7 +9492,7 @@ index b2222efe..b27ba881 100644 In addition, the expressions shown in \tref{fpos.operations} are valid and have the indicated semantics. In that table, -@@ -12945,7 +12945,7 @@ namespace std { +@@ -12954,7 +12954,7 @@ namespace std { \pnum \tcode{Allocator} shall meet @@ -9720,7 +9501,7 @@ index b2222efe..b27ba881 100644 \pnum \begin{example} -@@ -13238,7 +13238,7 @@ unless \tcode{EcharT} is one of the encoded character types. +@@ -13247,7 +13247,7 @@ unless \tcode{EcharT} is one of the encoded character types. \pnum Template parameters named \tcode{InputIterator} shall meet the @@ -9729,7 +9510,7 @@ index b2222efe..b27ba881 100644 have a value type that is one of the encoded character types. \pnum -@@ -13252,7 +13252,7 @@ they are not included as permitted types. +@@ -13261,7 +13261,7 @@ they are not included as permitted types. \pnum Template parameters named \tcode{Allocator} shall meet @@ -9738,16 +9519,16 @@ index b2222efe..b27ba881 100644 \rSec2[fs.filesystem.syn]{Header \tcode{} synopsis} -@@ -14065,7 +14065,7 @@ shall be one of: +@@ -14074,7 +14074,7 @@ shall be one of: \item \tcode{basic_string_view}. A function argument \tcode{const Source\&} \tcode{source} shall have an effective range \range{source.begin()}{source.end()}. --\item A type meeting the \oldconcept{InputIterator} requirements that iterates over a NTCTS\@. -+\item A type meeting the \oldconceptref{InputIterator} requirements that iterates over a NTCTS\@. +-\item A type meeting the \oldconcept{InputIterator} requirements that iterates over an NTCTS\@. ++\item A type meeting the \oldconceptref{InputIterator} requirements that iterates over an NTCTS\@. The value type shall be an encoded character type. A function argument \tcode{const Source\&} \tcode{source} shall have an effective range \range{source}{end} where \tcode{end} is the first -@@ -16545,7 +16545,7 @@ namespace std::filesystem { +@@ -16554,7 +16554,7 @@ namespace std::filesystem { \pnum \tcode{directory_iterator} meets the @@ -9757,10 +9538,10 @@ index b2222efe..b27ba881 100644 \pnum If an iterator of type \tcode{directory_iterator} reports an error or diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index ffeb3db1..07d67a8c 100644 +index b657c9b8..a5f0813c 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex -@@ -1809,7 +1809,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1854,7 +1854,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9769,7 +9550,7 @@ index ffeb3db1..07d67a8c 100644 {p{1in}p{4.15in}} \topline \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep -@@ -1836,7 +1836,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1881,7 +1881,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9778,7 +9559,7 @@ index ffeb3db1..07d67a8c 100644 {p{1in}p{1in}p{1in}p{1.9in}} \topline \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Return value} & \hdstyle{Post-condition} \\ \capsep -@@ -1850,7 +1850,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1895,7 +1895,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. \tcode{u.\~T()} & All resources owned by \tcode{u} are reclaimed, no exception is propagated. \\ \rowsep \multicolumn{2}{|l|}{ \begin{tailnote} @@ -9787,7 +9568,7 @@ index ffeb3db1..07d67a8c 100644 \end{tailnote} } \\ \end{oldconcepttable} -@@ -1929,7 +1929,7 @@ void value_swap(T&& t, U&& u) { +@@ -1974,7 +1974,7 @@ void value_swap(T&& t, U&& u) { // for rvalues and lvalues } @@ -9796,7 +9577,7 @@ index ffeb3db1..07d67a8c 100644 template void lv_swap(T& t1, T& t2) { using std::swap; -@@ -1966,9 +1966,9 @@ int main() { +@@ -2011,9 +2011,9 @@ int main() { A \oldconcept{NullablePointer} type is a pointer-like type that supports null values. A type \tcode{P} meets the \oldconcept{\-Nullable\-Pointer} requirements if \begin{itemize} @@ -9809,7 +9590,7 @@ index ffeb3db1..07d67a8c 100644 \item the expressions shown in \tref{cpp17.nullablepointer} are valid and have the indicated semantics, and -@@ -2044,8 +2044,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. +@@ -2089,8 +2089,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. A type \tcode{H} meets the \defnoldconcept{Hash} requirements if \begin{itemize} \item it is a function object type\iref{function.objects}, @@ -9820,7 +9601,7 @@ index ffeb3db1..07d67a8c 100644 \item the expressions shown in \tref{cpp17.hash} are valid and have the indicated semantics. \end{itemize} -@@ -2729,7 +2729,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2774,7 +2774,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be copied when the client container is copy-assigned; if so, \tcode{X} shall meet @@ -9829,7 +9610,7 @@ index ffeb3db1..07d67a8c 100644 the copy operation shall not throw exceptions. \pnum -@@ -2751,7 +2751,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2796,7 +2796,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be moved when the client container is move-assigned; if so, \tcode{X} shall meet @@ -9838,7 +9619,7 @@ index ffeb3db1..07d67a8c 100644 the move operation shall not throw exceptions. \pnum -@@ -2773,7 +2773,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2818,7 +2818,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be swapped when the client container is swapped; if so, @@ -9847,7 +9628,7 @@ index ffeb3db1..07d67a8c 100644 the \tcode{swap} operation shall not throw exceptions. \pnum -@@ -2803,7 +2803,7 @@ Default: \tcode{is_empty::type} +@@ -2848,7 +2848,7 @@ Default: \tcode{is_empty::type} \pnum An allocator type \tcode{X} shall meet the @@ -9856,7 +9637,7 @@ index ffeb3db1..07d67a8c 100644 The \tcode{XX::pointer}, \tcode{XX::const_pointer}, \tcode{XX::void_pointer}, and \tcode{XX::const_void_pointer} types shall meet the \oldconcept{Nullable\-Pointer} requirements (\tref{cpp17.nullablepointer}). -@@ -2811,7 +2811,7 @@ No constructor, +@@ -2856,7 +2856,7 @@ No constructor, comparison operator function, copy operation, move operation, or swap operation on these pointer types shall exit via an exception. \tcode{XX::pointer} and \tcode{XX::const_pointer} shall also meet the requirements for @@ -9866,10 +9647,10 @@ index ffeb3db1..07d67a8c 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index 47a0dcbe..cd1d4682 100644 +index a0c2615e..26449bc4 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1005,7 +1005,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type +@@ -1157,7 +1157,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type disambiguate constructor and function overloading. Specifically, several types (see \tcode{tuple}~\ref{tuple}) have constructors with \tcode{allocator_arg_t} as the first argument, immediately followed by an argument of a type that meets the @@ -9878,7 +9659,7 @@ index 47a0dcbe..cd1d4682 100644 \rSec2[allocator.uses]{\tcode{uses_allocator}} -@@ -1020,7 +1020,7 @@ template struct uses_allocator; +@@ -1172,7 +1172,7 @@ template struct uses_allocator; \pnum \remarks Automatically detects whether \tcode{T} has a nested \tcode{allocator_type} that @@ -9887,7 +9668,7 @@ index 47a0dcbe..cd1d4682 100644 requirements\iref{meta.rqmts}. The implementation shall provide a definition that is derived from \tcode{true_type} if the \grammarterm{qualified-id} \tcode{T::allocator_type} is valid and denotes a type\iref{temp.deduct} and -@@ -1945,8 +1945,8 @@ deleter before such replacement is considered completed. +@@ -2097,8 +2097,8 @@ deleter before such replacement is considered completed. Each object of a type \tcode{U} instantiated from the \tcode{unique_ptr} template specified in \ref{unique.ptr} has the strict ownership semantics, specified above, of a unique pointer. In partial satisfaction of these semantics, each such \tcode{U} @@ -9898,7 +9679,7 @@ index 47a0dcbe..cd1d4682 100644 The template parameter \tcode{T} of \tcode{unique_ptr} may be an incomplete type. \pnum -@@ -2133,7 +2133,7 @@ pointer as appropriate for that deleter. +@@ -2285,7 +2285,7 @@ pointer as appropriate for that deleter. \pnum If the deleter's type \tcode{D} is not a reference type, \tcode{D} shall meet @@ -9907,7 +9688,7 @@ index 47a0dcbe..cd1d4682 100644 \pnum If the \grammarterm{qualified-id} \tcode{remove_reference_t::pointer} is valid and denotes a -@@ -2141,7 +2141,7 @@ type\iref{temp.deduct}, then \tcode{unique_ptr::pointer} shall be a synonym for \tcode{remove_reference_t::pointer}. Otherwise \tcode{unique_ptr::pointer} shall be a synonym for \tcode{element_type*}. The type \tcode{unique_ptr::pointer} shall @@ -9916,7 +9697,7 @@ index 47a0dcbe..cd1d4682 100644 \pnum \begin{example} -@@ -2167,7 +2167,7 @@ constexpr unique_ptr(nullptr_t) noexcept; +@@ -2319,7 +2319,7 @@ constexpr unique_ptr(nullptr_t) noexcept; \pnum \expects @@ -9925,7 +9706,7 @@ index 47a0dcbe..cd1d4682 100644 and that construction does not throw an exception. \pnum -@@ -2194,7 +2194,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; +@@ -2346,7 +2346,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; \pnum \expects @@ -9934,7 +9715,7 @@ index 47a0dcbe..cd1d4682 100644 and that construction does not throw an exception. \pnum -@@ -2223,10 +2223,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex +@@ -2375,10 +2375,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex \pnum \expects For the first constructor, if \tcode{D} is not a reference type, @@ -9947,7 +9728,7 @@ index 47a0dcbe..cd1d4682 100644 such construction does not exit via an exception. \pnum -@@ -2251,8 +2251,8 @@ the second constructor is defined as deleted. +@@ -2403,8 +2403,8 @@ the second constructor is defined as deleted. \begin{example} \begin{codeblock} D d; @@ -9958,7 +9739,7 @@ index 47a0dcbe..cd1d4682 100644 unique_ptr p3(new int, d); // \tcode{p3} holds a reference to \tcode{d} unique_ptr p4(new int, D()); // error: rvalue deleter object combined // with reference deleter type -@@ -2273,7 +2273,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; +@@ -2425,7 +2425,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, @@ -9967,7 +9748,7 @@ index 47a0dcbe..cd1d4682 100644 requirements (\tref{cpp17.moveconstructible}). Construction of the deleter from an rvalue of type \tcode{D} does not -@@ -2382,10 +2382,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; +@@ -2534,10 +2534,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, \tcode{D} meets the @@ -9980,7 +9761,7 @@ index 47a0dcbe..cd1d4682 100644 requirements and assignment of the deleter from an lvalue of type \tcode{D} does not throw an exception. -@@ -3283,8 +3283,8 @@ namespace std { +@@ -3435,8 +3435,8 @@ namespace std { \end{codeblock} \pnum @@ -9991,7 +9772,7 @@ index 47a0dcbe..cd1d4682 100644 containers. Specializations of \tcode{shared_ptr} shall be contextually convertible to \tcode{bool}, allowing their use in boolean expressions and declarations in conditions. -@@ -3429,7 +3429,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. +@@ -3581,7 +3581,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. The expression \tcode{d(p)} has well-defined behavior and does not throw exceptions. \tcode{A} meets @@ -10000,7 +9781,7 @@ index 47a0dcbe..cd1d4682 100644 \pnum \effects -@@ -3946,7 +3946,7 @@ template +@@ -4098,7 +4098,7 @@ template \pnum \expects \tcode{A} meets @@ -10009,7 +9790,7 @@ index 47a0dcbe..cd1d4682 100644 \pnum \effects -@@ -4602,8 +4602,8 @@ namespace std { +@@ -4754,8 +4754,8 @@ namespace std { \end{codeblock} \pnum @@ -10020,7 +9801,7 @@ index 47a0dcbe..cd1d4682 100644 containers. The template parameter \tcode{T} of \tcode{weak_ptr} may be an incomplete type. -@@ -5182,7 +5182,7 @@ namespace std { +@@ -5334,7 +5334,7 @@ namespace std { \end{codeblock} \pnum @@ -10029,7 +9810,7 @@ index 47a0dcbe..cd1d4682 100644 If \tcode{Smart} is a specialization of \tcode{shared_ptr} and \tcode{sizeof...(Args) == 0}, the program is ill-formed. -@@ -5422,7 +5422,7 @@ namespace std { +@@ -5574,7 +5574,7 @@ namespace std { \end{codeblock} \pnum @@ -10039,7 +9820,7 @@ index 47a0dcbe..cd1d4682 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index f8ed03cb..b6d69967 100644 +index d5f690b6..d845f0e5 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -94,12 +94,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -10073,7 +9854,7 @@ index f8ed03cb..b6d69967 100644 the arguments to the template \tcode{integral_constant} determined by the requirements for the particular relationship being described. The member names of the base characteristic shall not be hidden and shall be -@@ -282,17 +282,17 @@ namespace std { +@@ -285,17 +285,17 @@ namespace std { template struct add_cv; template @@ -10097,7 +9878,7 @@ index f8ed03cb..b6d69967 100644 // \ref{meta.trans.ref}, reference modifications template struct remove_reference; -@@ -300,38 +300,38 @@ namespace std { +@@ -303,38 +303,38 @@ namespace std { template struct add_rvalue_reference; template @@ -10145,7 +9926,7 @@ index f8ed03cb..b6d69967 100644 // \ref{meta.trans.other}, other transformations template struct type_identity; -@@ -349,27 +349,27 @@ namespace std { +@@ -352,27 +352,27 @@ namespace std { template struct unwrap_ref_decay; template @@ -10184,7 +9965,7 @@ index f8ed03cb..b6d69967 100644 template using @\libglobal{void_t}@ = void; -@@ -380,200 +380,200 @@ namespace std { +@@ -383,206 +383,206 @@ namespace std { // \ref{meta.unary.cat}, primary type categories template @@ -10264,6 +10045,9 @@ index f8ed03cb..b6d69967 100644 - constexpr bool @\libglobal{is_trivially_copyable_v}@ = is_trivially_copyable::value; + constexpr bool @\libglobal{is_trivially_copyable_v}@ = @\libglobalref{is_trivially_copyable}@::value; template +- constexpr bool @\libglobal{is_trivially_relocatable_v}@ = is_trivially_relocatable::value; ++ constexpr bool @\libglobal{is_trivially_relocatable_v}@ = @\libglobalref{is_trivially_relocatable}@::value; + template - constexpr bool @\libglobal{is_standard_layout_v}@ = is_standard_layout::value; + constexpr bool @\libglobal{is_standard_layout_v}@ = @\libglobalref{is_standard_layout}@::value; template @@ -10399,8 +10183,14 @@ index f8ed03cb..b6d69967 100644 - constexpr bool @\libglobal{is_nothrow_destructible_v}@ = is_nothrow_destructible::value; + constexpr bool @\libglobal{is_nothrow_destructible_v}@ = @\libglobalref{is_nothrow_destructible}@::value; template +- constexpr bool @\libglobal{is_nothrow_relocatable_v}@ = is_nothrow_relocatable::value; ++ constexpr bool @\libglobal{is_nothrow_relocatable_v}@ = @\libglobalref{is_nothrow_relocatable}@::value; + template - constexpr bool @\libglobal{is_implicit_lifetime_v}@ = is_implicit_lifetime::value; -+ constexpr bool @\libglobal{is_implicit_lifetime_v}@ = @\libglobalref{is_implicit_lifetime}@::value; ++ constexpr bool @\libglobal{is_implicit_lifetime_v}@ = @\libglobalref{is_implicit_lifetime}@::value; + template +- constexpr bool @\libglobal{is_replaceable_v}@ = is_replaceable::value; ++ constexpr bool @\libglobal{is_replaceable_v}@ = @\libglobalref{is_replaceable}@::value; template - constexpr bool @\libglobal{has_virtual_destructor_v}@ = has_virtual_destructor::value; + constexpr bool @\libglobal{has_virtual_destructor_v}@ = @\libglobalref{has_virtual_destructor}@::value; @@ -10480,7 +10270,7 @@ index f8ed03cb..b6d69967 100644 // \ref{meta.member}, member relationships template -@@ -625,7 +625,7 @@ properties of a type at compile time. +@@ -634,7 +634,7 @@ properties of a type at compile time. \pnum Each of these templates shall be a @@ -10489,7 +10279,7 @@ index f8ed03cb..b6d69967 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is \tcode{true}, otherwise \tcode{false_type}. -@@ -655,17 +655,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. +@@ -664,17 +664,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. \topline \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead @@ -10510,7 +10300,7 @@ index f8ed03cb..b6d69967 100644 \tcode{T} is an integral type\iref{basic.fundamental} & \\ \rowsep \indexlibraryglobal{is_floating_point}% \tcode{template}\br -@@ -864,9 +861,8 @@ the cv-qualification is subject to adjustment\iref{expr.type}. +@@ -887,9 +884,8 @@ the cv-qualification is subject to adjustment\iref{expr.type}. \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 @@ -10518,10 +10308,10 @@ index f8ed03cb..b6d69967 100644 \tcode{template}\br - \tcode{struct is_final;} & + \tcode{struct \libglobal{is_final};} & - \tcode{T} is a class type marked with the \grammarterm{class-virt-specifier} + \tcode{T} is a class type marked with the \grammarterm{class-property-specifier} \tcode{final}\iref{class.pre}. \begin{tailnote} -@@ -876,9 +872,8 @@ A union is a class type that +@@ -899,9 +895,8 @@ A union is a class type that & If \tcode{T} is a class type, \tcode{T} shall be a complete type. \\ \rowsep @@ -10532,7 +10322,7 @@ index f8ed03cb..b6d69967 100644 \tcode{T} is an aggregate type\iref{dcl.init.aggr} & \tcode{T} shall be an array type, a complete type, or \cv~\keyword{void}. \\ \rowsep -@@ -889,16 +884,14 @@ A union is a class type that +@@ -912,16 +907,14 @@ A union is a class type that \tcode{T(-1) < T(0)}; otherwise, \tcode{false} & \\ \rowsep @@ -10551,7 +10341,7 @@ index f8ed03cb..b6d69967 100644 \tcode{T} is an array type of known bound\iref{dcl.array} & \\ \rowsep -@@ -1392,7 +1385,7 @@ may be used to query properties of types at compile time. +@@ -1425,7 +1418,7 @@ may be used to query properties of types at compile time. \end{libreqtab2a} \pnum @@ -10560,7 +10350,7 @@ index f8ed03cb..b6d69967 100644 base characteristic of \tcode{integral_constant}. \pnum -@@ -1428,7 +1421,7 @@ may be used to query relationships between types at compile time. +@@ -1461,7 +1454,7 @@ may be used to query relationships between types at compile time. \pnum Each of these templates shall be a @@ -10569,7 +10359,7 @@ index f8ed03cb..b6d69967 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is true, otherwise \tcode{false_type}. -@@ -1442,7 +1435,7 @@ with a base characteristic of +@@ -1475,7 +1468,7 @@ with a base characteristic of \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead \tcode{template}\br @@ -10578,7 +10368,7 @@ index f8ed03cb..b6d69967 100644 \tcode{T} and \tcode{U} name the same type with the same cv-qualifications & \\ \rowsep \indexlibraryglobal{is_base_of}% -@@ -1622,7 +1615,7 @@ type to another following some predefined rule. +@@ -1655,7 +1648,7 @@ type to another following some predefined rule. \pnum Each of the templates in \ref{meta.trans} shall be a @@ -10587,7 +10377,7 @@ index f8ed03cb..b6d69967 100644 \rSec3[meta.trans.cv]{Const-volatile modifications} -@@ -1903,16 +1896,16 @@ perform other modifications of a type. +@@ -1936,16 +1929,16 @@ perform other modifications of a type. \tcode{template\br struct \libglobal{remove_cvref};} & The member typedef \tcode{type} denotes @@ -10609,7 +10399,7 @@ index f8ed03cb..b6d69967 100644 \begin{tailnote} This behavior is similar to the lvalue-to-rvalue\iref{conv.lval}, array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} -@@ -1992,7 +1985,7 @@ argument passing. +@@ -2025,7 +2018,7 @@ argument passing. \tcode{template} \tcode{struct \libglobal{unwrap_reference};} & If \tcode{T} is @@ -10618,7 +10408,7 @@ index f8ed03cb..b6d69967 100644 the member typedef \tcode{type} of \tcode{unwrap_reference} denotes \tcode{X\&}, otherwise \tcode{type} denotes \tcode{T}. \\ \rowsep -@@ -2000,7 +1993,7 @@ argument passing. +@@ -2033,7 +2026,7 @@ argument passing. \tcode{template} \tcode{\libglobal{unwrap_ref_decay};} & The member typedef \tcode{type} of \tcode{unwrap_ref_decay} @@ -10627,7 +10417,7 @@ index f8ed03cb..b6d69967 100644 \end{libreqtab2a} \pnum -@@ -2018,7 +2011,7 @@ when the header \tcode{}\iref{functional.syn} is included. +@@ -2051,7 +2044,7 @@ when the header \tcode{}\iref{functional.syn} is included. Let: \begin{itemize} \item \tcode{\placeholdernc{CREF}(A)} be @@ -10636,7 +10426,7 @@ index f8ed03cb..b6d69967 100644 \item \tcode{\placeholdernc{XREF}(A)} denote a unary alias template \tcode{T} such that \tcode{T} denotes the same type as \tcode{U} with the addition of \tcode{A}'s cv and reference qualifiers, for a non-reference cv-unqualified -@@ -2043,15 +2036,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: +@@ -2076,15 +2069,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: \placeholdernc{COPYCV}(\brk{}Y, X) \&)} if that type exists and is a reference type. \item Otherwise, let \tcode{C} be @@ -10655,7 +10445,7 @@ index f8ed03cb..b6d69967 100644 \tcode{true}, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is \tcode{D}. \item Otherwise, if \tcode{A} is an lvalue reference and \tcode{B} is an rvalue reference, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is -@@ -2350,7 +2343,7 @@ template struct negation : @\seebelow@ { }; +@@ -2383,7 +2376,7 @@ template struct negation : @\seebelow@ { }; The class template \tcode{negation} forms the logical negation of its template type argument. The type \tcode{negation} @@ -10665,7 +10455,7 @@ index f8ed03cb..b6d69967 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index d088b19b..dabc36db 100644 +index 398d125b..1ba59329 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul @@ -10683,7 +10473,7 @@ index d088b19b..dabc36db 100644 requirements\iref{utility.arg.requirements}. \begin{footnote} In other words, value types. -@@ -2078,8 +2078,8 @@ according to \ref{strings} and \ref{input.output}. +@@ -2024,8 +2024,8 @@ according to \ref{strings} and \ref{input.output}. \pnum \tcode{E} shall meet the @@ -10694,7 +10484,7 @@ index d088b19b..dabc36db 100644 These operations shall each be of complexity no worse than \bigoh{\text{size of state}}. -@@ -2449,8 +2449,8 @@ according to \ref{strings} and \ref{input.output}. +@@ -2453,8 +2453,8 @@ according to \ref{strings} and \ref{input.output}. \pnum \tcode{D} shall meet the @@ -10705,7 +10495,7 @@ index d088b19b..dabc36db 100644 \pnum The sequence of numbers -@@ -2481,10 +2481,10 @@ for convenience of exposition only. +@@ -2485,10 +2485,10 @@ for convenience of exposition only. \pnum \tcode{P} shall meet the @@ -10719,7 +10509,7 @@ index d088b19b..dabc36db 100644 \pnum For each of the constructors of \tcode{D} -@@ -4158,7 +4158,7 @@ template +@@ -4232,7 +4232,7 @@ template \pnum \expects \tcode{InputIterator} meets the @@ -10728,7 +10518,7 @@ index d088b19b..dabc36db 100644 \pnum \effects -@@ -4185,7 +4185,7 @@ template +@@ -4259,7 +4259,7 @@ template \pnum \expects \tcode{RandomAccessIterator} meets the @@ -10737,7 +10527,7 @@ index d088b19b..dabc36db 100644 and the requirements of a mutable iterator. \pnum -@@ -4298,7 +4298,7 @@ template +@@ -4372,7 +4372,7 @@ template \pnum \expects \tcode{OutputIterator} meets the @@ -10746,7 +10536,7 @@ index d088b19b..dabc36db 100644 \pnum \effects -@@ -6291,7 +6291,7 @@ double>} is \tcode{true}. +@@ -6367,7 +6367,7 @@ double>} is \tcode{true}. \pnum \expects \tcode{InputIterator} meets the @@ -10755,7 +10545,7 @@ index d088b19b..dabc36db 100644 If \tcode{firstW == lastW}, let $n = 1$ and $w_0 = 1$. Otherwise, -@@ -6489,7 +6489,7 @@ are \tcode{true}. +@@ -6565,7 +6565,7 @@ are \tcode{true}. \expects \tcode{InputIteratorB} and \tcode{InputIteratorW} each meet the @@ -10764,7 +10554,7 @@ index d088b19b..dabc36db 100644 If \tcode{firstB == lastB} or \tcode{++firstB == lastB}, let $n = 1$, -@@ -6724,7 +6724,7 @@ are \tcode{true}. +@@ -6800,7 +6800,7 @@ are \tcode{true}. \expects \tcode{InputIteratorB} and \tcode{InputIteratorW} each meet the @@ -10773,7 +10563,7 @@ index d088b19b..dabc36db 100644 If \tcode{firstB == lastB} or \tcode{++firstB == lastB}, let $n = 1$, -@@ -9070,12 +9070,12 @@ object refers. +@@ -9146,12 +9146,12 @@ object refers. \pnum In the \tcode{begin} and \tcode{end} function templates that follow, \unspec{1} is a type that meets the requirements of a mutable @@ -10789,7 +10579,7 @@ index d088b19b..dabc36db 100644 whose \tcode{value_type} is the template parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. diff --git a/source/strings.tex b/source/strings.tex -index 593a1bd2..6fbe952a 100644 +index 0ff1e21f..9e0a3366 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -238,10 +238,10 @@ using state_type = @\seebelow@; @@ -10817,10 +10607,10 @@ index 593a1bd2..6fbe952a 100644 meets the constexpr iterator requirements\iref{iterator.requirements.general}, whose \tcode{value_type} is the template parameter \tcode{charT}. diff --git a/source/support.tex b/source/support.tex -index 57047ccc..844cea53 100644 +index 5057313b..2bceb367 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -3597,11 +3597,11 @@ namespace std { +@@ -3648,11 +3648,11 @@ namespace std { \pnum The type \tcode{source_location} meets the @@ -10837,7 +10627,7 @@ index 57047ccc..844cea53 100644 requirements\iref{utility.arg.requirements,swappable.requirements}. All of the following conditions are \tcode{true}: \begin{itemize} -@@ -4061,7 +4061,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. +@@ -4112,7 +4112,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. \pnum \tcode{exception_ptr} meets the requirements of @@ -10846,7 +10636,7 @@ index 57047ccc..844cea53 100644 \pnum Two non-null values of type \tcode{exception_ptr} are equivalent and compare equal if and -@@ -4261,7 +4261,7 @@ Let \tcode{U} be \tcode{decay_t}. +@@ -4312,7 +4312,7 @@ Let \tcode{U} be \tcode{decay_t}. \pnum \expects @@ -10856,7 +10646,7 @@ index 57047ccc..844cea53 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index 9eeff045..1da6cb43 100644 +index 665a3d2e..15a86a53 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10919,7 +10709,7 @@ index 9eeff045..1da6cb43 100644 the following expressions are well-formed, have type \tcode{bool}, and have the specified semantics (\tcode{m} denotes a value of type \tcode{L}, -@@ -4171,7 +4171,7 @@ namespace std { +@@ -4124,7 +4124,7 @@ namespace std { \indexlibraryglobal{atomic}% \pnum The template argument for \tcode{T} shall meet the @@ -10928,7 +10718,7 @@ index 9eeff045..1da6cb43 100644 The program is ill-formed if any of \begin{itemize} \item \tcode{is_trivially_copyable_v}, -@@ -6650,11 +6650,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, +@@ -6591,11 +6591,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, They meet the requirements set out in \ref{thread.mutex.requirements.mutex}. In this description, \tcode{m} denotes an object of a mutex type. \begin{note} @@ -10942,7 +10732,7 @@ index 9eeff045..1da6cb43 100644 If initialization of an object of a mutex type fails, an exception of type \tcode{system_error} is thrown. The mutex types are neither copyable nor movable. -@@ -6923,7 +6923,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de +@@ -6864,7 +6864,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de object of an instantiation of \link{\tcode{time_point}}{time.point}. \begin{note} @@ -10951,7 +10741,7 @@ index 9eeff045..1da6cb43 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -7135,7 +7135,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally +@@ -7076,7 +7076,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally meet the requirements set out below. In this description, \tcode{m} denotes an object of a shared mutex type. \begin{note} @@ -10960,7 +10750,7 @@ index 9eeff045..1da6cb43 100644 requirements\iref{thread.req.lockable.shared}. \end{note} -@@ -7312,7 +7312,7 @@ meet the requirements set out below. In this description, +@@ -7253,7 +7253,7 @@ meet the requirements set out below. In this description, \tcode{abs_time} denotes an object of an instantiation of \link{\tcode{time_point}}{time.point}. \begin{note} @@ -10969,7 +10759,7 @@ index 9eeff045..1da6cb43 100644 requirements\iref{thread.req.lockable.shared.timed}. \end{note} -@@ -7522,7 +7522,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable +@@ -7463,7 +7463,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable object throughout the \tcode{lock_guard} object's \deflink{lifetime}{basic.life}. The behavior of a program is undefined if the lockable object referenced by \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} @@ -10978,7 +10768,7 @@ index 9eeff045..1da6cb43 100644 requirements\iref{thread.req.lockable.basic}. \indexlibraryctor{lock_guard}% -@@ -7601,12 +7601,12 @@ object. +@@ -7542,12 +7542,12 @@ object. If \tcode{sizeof...(MutexTypes)} is one, let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. \tcode{Mutex} @@ -10993,7 +10783,7 @@ index 9eeff045..1da6cb43 100644 and there is no member \tcode{mutex_type}. \end{itemize} -@@ -7721,17 +7721,17 @@ copyable but are movable. The behavior of a program is undefined if the containe +@@ -7662,17 +7662,17 @@ copyable but are movable. The behavior of a program is undefined if the containe \tcode{pm} is not null and the lockable object pointed to by \tcode{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied @@ -11017,7 +10807,7 @@ index 9eeff045..1da6cb43 100644 \end{note} \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} -@@ -7781,7 +7781,7 @@ unique_lock(mutex_type& m, try_to_lock_t); +@@ -7722,7 +7722,7 @@ unique_lock(mutex_type& m, try_to_lock_t); \begin{itemdescr} \pnum \expects @@ -11026,7 +10816,7 @@ index 9eeff045..1da6cb43 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -7823,7 +7823,7 @@ template +@@ -7764,7 +7764,7 @@ template \pnum \expects The supplied \tcode{Mutex} type meets the @@ -11035,7 +10825,7 @@ index 9eeff045..1da6cb43 100644 \pnum \effects -@@ -7845,7 +7845,7 @@ template +@@ -7786,7 +7786,7 @@ template \begin{itemdescr} \pnum \expects @@ -11044,7 +10834,7 @@ index 9eeff045..1da6cb43 100644 \pnum \effects -@@ -7941,7 +7941,7 @@ bool try_lock(); +@@ -7873,7 +7873,7 @@ bool try_lock(); \begin{itemdescr} \pnum \expects @@ -11053,7 +10843,7 @@ index 9eeff045..1da6cb43 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -7980,7 +7980,7 @@ template +@@ -7912,7 +7912,7 @@ template \begin{itemdescr} \pnum \expects @@ -11062,7 +10852,7 @@ index 9eeff045..1da6cb43 100644 requirements\iref{thread.req.lockable.timed}. \pnum -@@ -8019,7 +8019,7 @@ template +@@ -7951,7 +7951,7 @@ template \begin{itemdescr} \pnum \expects @@ -11071,7 +10861,7 @@ index 9eeff045..1da6cb43 100644 \pnum \effects -@@ -8212,16 +8212,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type +@@ -8144,16 +8144,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type is undefined if the contained pointer \tcode{pm} is not null and the lockable object pointed to by \tcode{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied @@ -11092,7 +10882,7 @@ index 9eeff045..1da6cb43 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -8306,7 +8306,7 @@ template +@@ -8238,7 +8238,7 @@ template \begin{itemdescr} \pnum \expects @@ -11101,7 +10891,7 @@ index 9eeff045..1da6cb43 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8330,7 +8330,7 @@ template +@@ -8262,7 +8262,7 @@ template \begin{itemdescr} \pnum \expects @@ -11110,7 +10900,7 @@ index 9eeff045..1da6cb43 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8457,7 +8457,7 @@ template +@@ -8387,7 +8387,7 @@ template \begin{itemdescr} \pnum \expects @@ -11119,7 +10909,7 @@ index 9eeff045..1da6cb43 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8497,7 +8497,7 @@ template +@@ -8427,7 +8427,7 @@ template \begin{itemdescr} \pnum \expects @@ -11128,7 +10918,7 @@ index 9eeff045..1da6cb43 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8636,7 +8636,7 @@ template int try_lock(L1&, L2&, L3&...); +@@ -8566,7 +8566,7 @@ template int try_lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -11137,7 +10927,7 @@ index 9eeff045..1da6cb43 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -8665,7 +8665,7 @@ template void lock(L1&, L2&, L3&...); +@@ -8595,7 +8595,7 @@ template void lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -11146,7 +10936,7 @@ index 9eeff045..1da6cb43 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9331,7 +9331,7 @@ This can happen if the re-locking of the mutex throws an exception. +@@ -9261,7 +9261,7 @@ This can happen if the re-locking of the mutex throws an exception. \pnum In \ref{thread.condition.condvarany}, template arguments for template parameters named \tcode{Lock} @@ -11155,7 +10945,7 @@ index 9eeff045..1da6cb43 100644 requirements\iref{thread.req.lockable.basic}. \begin{note} All of the standard -@@ -10269,24 +10269,24 @@ execute atomically. +@@ -10199,24 +10199,24 @@ execute atomically. \pnum \tcode{CompletionFunction} shall meet the @@ -11186,7 +10976,7 @@ index 9eeff045..1da6cb43 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -10787,7 +10787,7 @@ namespace std { +@@ -10717,7 +10717,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -11195,7 +10985,7 @@ index 9eeff045..1da6cb43 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -10812,7 +10812,7 @@ template +@@ -10742,7 +10742,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -11204,7 +10994,7 @@ index 9eeff045..1da6cb43 100644 \end{itemdescr} \indexlibraryctor{promise}% -@@ -11133,7 +11133,7 @@ namespace std { +@@ -11063,7 +11063,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -11213,7 +11003,7 @@ index 9eeff045..1da6cb43 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -11439,7 +11439,7 @@ namespace std { +@@ -11369,7 +11369,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -11222,7 +11012,7 @@ index 9eeff045..1da6cb43 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -12347,7 +12347,7 @@ the expression \tcode{d(ptr)} is valid. +@@ -12277,7 +12277,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -11231,7 +11021,7 @@ index 9eeff045..1da6cb43 100644 \pnum If \tcode{D} is trivially copyable, -@@ -12405,7 +12405,7 @@ namespace std { +@@ -12335,7 +12335,7 @@ namespace std { \pnum This class meets the requirements of @@ -11240,7 +11030,7 @@ index 9eeff045..1da6cb43 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -12553,8 +12553,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -12483,8 +12483,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -11251,7 +11041,7 @@ index 9eeff045..1da6cb43 100644 \pnum \effects -@@ -12746,7 +12746,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -12676,7 +12676,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -11261,7 +11051,7 @@ index 9eeff045..1da6cb43 100644 \pnum \tcode{T} may be an incomplete type. diff --git a/source/time.tex b/source/time.tex -index 2ab4949b..12dce5fb 100644 +index bf00eae4..b42c4fad 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1039,13 +1039,13 @@ SI definition is a measure of the quality of implementation. @@ -11474,10 +11264,10 @@ index 2ab4949b..12dce5fb 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index f94c312e..d76ba58d 100644 +index a6b9d7f9..440bd426 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -242,9 +242,9 @@ template +@@ -258,9 +258,9 @@ template Type \tcode{T} meets the @@ -11489,7 +11279,7 @@ index f94c312e..d76ba58d 100644 requirements. \pnum -@@ -2111,7 +2111,7 @@ template +@@ -2138,7 +2138,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -11498,7 +11288,7 @@ index f94c312e..d76ba58d 100644 \pnum \effects -@@ -2741,7 +2741,7 @@ template struct tuple_size; +@@ -2768,7 +2768,7 @@ template struct tuple_size; \pnum Except where specified otherwise, all specializations of \tcode{tuple_size} meet the @@ -11507,7 +11297,7 @@ index f94c312e..d76ba58d 100644 base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -2782,7 +2782,7 @@ template struct tuple_size; +@@ -2809,7 +2809,7 @@ template struct tuple_size; Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. If the expression \tcode{TS::value} is well-formed when treated as an \deflink{unevaluated operand}{expr.context}, then @@ -11516,7 +11306,7 @@ index f94c312e..d76ba58d 100644 with a base characteristic of \begin{codeblock} integral_constant -@@ -2819,7 +2819,7 @@ template struct tuple_element; +@@ -2846,7 +2846,7 @@ template struct tuple_element; \begin{itemdescr} \pnum Let \tcode{TE} denote \tcode{tuple_element_t} of the cv-unqualified type \tcode{T}. Then @@ -11525,7 +11315,7 @@ index f94c312e..d76ba58d 100644 with a member typedef \tcode{type} that names the type \tcode{add_const_t}. \pnum -@@ -3098,7 +3098,7 @@ template +@@ -3125,7 +3125,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -11534,7 +11324,7 @@ index f94c312e..d76ba58d 100644 \pnum \begin{note} -@@ -3351,7 +3351,7 @@ member \tcode{val} points to the contained value. +@@ -3378,7 +3378,7 @@ member \tcode{val} points to the contained value. \pnum \tcode{T} shall be a type other than \cv{} \tcode{in_place_t} or \cv{} \tcode{nullopt_t} @@ -11543,7 +11333,7 @@ index f94c312e..d76ba58d 100644 \rSec3[optional.ctor]{Constructors} -@@ -3971,7 +3971,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); +@@ -3998,7 +3998,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11552,7 +11342,7 @@ index f94c312e..d76ba58d 100644 \pnum \effects -@@ -4028,7 +4028,7 @@ using const_iterator = @\impdef@; +@@ -4055,7 +4055,7 @@ using const_iterator = @\impdef@; \pnum These types model \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, @@ -11561,7 +11351,7 @@ index f94c312e..d76ba58d 100644 meet the requirements for constexpr iterators\iref{iterator.requirements.general}, with value type \tcode{remove_cv_t}. The reference type is \tcode{T\&} for \tcode{iterator} and -@@ -4468,7 +4468,7 @@ template constexpr bool operator==(const optional& x, const +@@ -4497,7 +4497,7 @@ template constexpr bool operator==(const optional& x, const The expression \tcode{*x == *y} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11570,7 +11360,7 @@ index f94c312e..d76ba58d 100644 \end{note} \pnum -@@ -4659,7 +4659,7 @@ template constexpr bool operator==(const optional& x, const +@@ -4688,7 +4688,7 @@ template constexpr bool operator==(const optional& x, const The expression \tcode{*x == v} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11579,7 +11369,7 @@ index f94c312e..d76ba58d 100644 \end{note} \pnum -@@ -5146,7 +5146,7 @@ is nested within\iref{intro.object} the +@@ -5175,7 +5175,7 @@ is nested within\iref{intro.object} the \pnum All types in \tcode{Types} shall meet @@ -11588,7 +11378,7 @@ index f94c312e..d76ba58d 100644 \pnum A program that instantiates the definition of \tcode{variant} with -@@ -5826,7 +5826,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); +@@ -5855,7 +5855,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11597,7 +11387,7 @@ index f94c312e..d76ba58d 100644 \pnum \effects -@@ -5871,7 +5871,7 @@ template struct variant_size; +@@ -5900,7 +5900,7 @@ template struct variant_size; \begin{itemdescr} \pnum All specializations of \tcode{variant_size} meet the @@ -11606,7 +11396,7 @@ index f94c312e..d76ba58d 100644 with a base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -5884,7 +5884,7 @@ template struct variant_size; +@@ -5913,7 +5913,7 @@ template struct variant_size; \pnum Let \tcode{VS} denote \tcode{variant_size} of the cv-unqualified type \tcode{T}. Then each specialization of the template meets the @@ -11615,7 +11405,7 @@ index f94c312e..d76ba58d 100644 base characteristic of \tcode{integral_constant}. \end{itemdescr} -@@ -5904,7 +5904,7 @@ template struct variant_alternative; +@@ -5933,7 +5933,7 @@ template struct variant_alternative; \pnum Let \tcode{VA} denote \tcode{variant_alternative} of the cv-unqualified type \tcode{T}. Then each specialization of the template @@ -11624,7 +11414,7 @@ index f94c312e..d76ba58d 100644 member typedef \tcode{type} that names the type \tcode{add_const_t}. \end{itemdescr} -@@ -6630,7 +6630,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. +@@ -6661,7 +6661,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. \pnum \expects @@ -11633,7 +11423,7 @@ index f94c312e..d76ba58d 100644 \pnum \effects -@@ -6658,7 +6658,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -6689,7 +6689,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11642,7 +11432,7 @@ index f94c312e..d76ba58d 100644 \pnum \effects -@@ -6691,7 +6691,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -6722,7 +6722,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11651,7 +11441,7 @@ index f94c312e..d76ba58d 100644 \pnum \effects -@@ -6776,7 +6776,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -6807,7 +6807,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11660,7 +11450,7 @@ index f94c312e..d76ba58d 100644 \pnum \effects -@@ -6811,7 +6811,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -6842,7 +6842,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11669,7 +11459,7 @@ index f94c312e..d76ba58d 100644 \pnum \effects -@@ -6855,7 +6855,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -6886,7 +6886,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11678,7 +11468,7 @@ index f94c312e..d76ba58d 100644 \pnum \effects -@@ -7557,9 +7557,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -7592,9 +7592,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum When \tcode{T} is not \cv{} \tcode{void}, it shall meet @@ -11690,7 +11480,7 @@ index f94c312e..d76ba58d 100644 \rSec3[expected.object.cons]{Constructors} -@@ -8797,7 +8797,7 @@ template friend constexpr bool operator==(const expected& x, const T2& +@@ -8832,7 +8832,7 @@ template friend constexpr bool operator==(const expected& x, const T2& The expression \tcode{*x == v} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11699,7 +11489,7 @@ index f94c312e..d76ba58d 100644 \end{note} \pnum -@@ -8934,7 +8934,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -8969,7 +8969,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum \tcode{E} shall meet the requirements of @@ -11708,7 +11498,7 @@ index f94c312e..d76ba58d 100644 \rSec3[expected.void.cons]{Constructors} -@@ -10961,8 +10961,8 @@ is ill-formed. +@@ -10994,8 +10994,8 @@ is ill-formed. \indextext{call wrapper}% \indextext{call wrapper!simple}% \indextext{call wrapper!forwarding}% @@ -11719,7 +11509,7 @@ index f94c312e..d76ba58d 100644 An \defn{argument forwarding call wrapper} is a call wrapper that can be called with an arbitrary argument list and delivers the arguments to the target object as references. -@@ -11002,7 +11002,7 @@ with references as described in the corresponding forwarding steps. +@@ -11035,7 +11035,7 @@ with references as described in the corresponding forwarding steps. \pnum \label{term.simple.call.wrapper}% A \defn{simple call wrapper} is a perfect forwarding call wrapper that meets @@ -11728,7 +11518,7 @@ index f94c312e..d76ba58d 100644 and whose copy constructor, move constructor, and assignment operators are constexpr functions that do not throw exceptions. -@@ -11105,7 +11105,7 @@ namespace std { +@@ -11138,7 +11138,7 @@ namespace std { \end{codeblock} \pnum @@ -11737,7 +11527,7 @@ index f94c312e..d76ba58d 100644 around a reference to an object or function of type \tcode{T}. \pnum -@@ -12559,7 +12559,7 @@ is \tcode{true}. +@@ -12592,7 +12592,7 @@ is \tcode{true}. \pnum \expects @@ -11746,7 +11536,7 @@ index f94c312e..d76ba58d 100644 \pnum \returns -@@ -12645,10 +12645,10 @@ is \tcode{true}. +@@ -12678,10 +12678,10 @@ is \tcode{true}. \pnum \expects @@ -11759,7 +11549,7 @@ index f94c312e..d76ba58d 100644 \pnum \returns -@@ -12714,7 +12714,7 @@ then \tcode{f != nullptr} is \tcode{true}. +@@ -12747,7 +12747,7 @@ then \tcode{f != nullptr} is \tcode{true}. \pnum \expects For each $\tcode{T}_i$ in \tcode{BoundArgs}, @@ -11768,7 +11558,7 @@ index f94c312e..d76ba58d 100644 \pnum \returns -@@ -12759,7 +12759,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. +@@ -12792,7 +12792,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. \pnum Specializations of the \tcode{is_bind_expression} template shall meet @@ -11777,7 +11567,7 @@ index f94c312e..d76ba58d 100644 provides a definition that has a base characteristic of \tcode{true_type} if \tcode{T} is a type returned from \tcode{bind}, otherwise it has a base characteristic of \tcode{false_type}. -@@ -12795,7 +12795,7 @@ The function template \tcode{bind} uses +@@ -12828,7 +12828,7 @@ The function template \tcode{bind} uses \pnum Specializations of the \tcode{is_placeholder} template shall meet @@ -11786,7 +11576,7 @@ index f94c312e..d76ba58d 100644 provides a definition that has the base characteristic of \tcode{integral_constant} if \tcode{T} is the type of \tcode{std::placeholders::_\placeholder{J}}, otherwise it has a -@@ -12845,7 +12845,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> +@@ -12878,7 +12878,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> \pnum \expects \tcode{FD} and each $\tcode{TD}_i$ meet @@ -11795,7 +11585,7 @@ index f94c312e..d76ba58d 100644 \tcode{\placeholdernc{INVOKE}(fd, $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc$, $\tcode{w}_N$)}\iref{func.require} is a valid expression for some values $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc{}$, $\tcode{w}_N$, where -@@ -12881,8 +12881,8 @@ the state entities of \tcode{g}. +@@ -12914,8 +12914,8 @@ the state entities of \tcode{g}. \pnum \begin{note} If all of \tcode{FD} and $\tcode{TD}_i$ meet @@ -11806,7 +11596,7 @@ index f94c312e..d76ba58d 100644 \end{note} \end{itemdescr} -@@ -12953,13 +12953,13 @@ The number \tcode{\placeholder{M}} of placeholders is +@@ -12984,13 +12984,13 @@ The number \tcode{\placeholder{M}} of placeholders is \impldef{number of placeholders for bind expressions}. \pnum @@ -11823,7 +11613,7 @@ index f94c312e..d76ba58d 100644 but if so, their copy assignment operators are constexpr functions that do not throw exceptions. -@@ -13240,7 +13240,7 @@ Let \tcode{FD} be \tcode{decay_t}. +@@ -13259,7 +13259,7 @@ Let \tcode{FD} be \tcode{decay_t}. \pnum \expects @@ -11832,7 +11622,7 @@ index f94c312e..d76ba58d 100644 \pnum \ensures -@@ -13666,9 +13666,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -13684,9 +13684,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11844,7 +11634,7 @@ index f94c312e..d76ba58d 100644 \pnum \ensures -@@ -13718,9 +13718,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -13736,9 +13736,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11856,7 +11646,7 @@ index f94c312e..d76ba58d 100644 \pnum \ensures -@@ -13760,9 +13760,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -13778,9 +13778,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11868,7 +11658,7 @@ index f94c312e..d76ba58d 100644 \pnum \ensures -@@ -14084,8 +14084,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14102,8 +14102,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11879,7 +11669,7 @@ index f94c312e..d76ba58d 100644 \pnum \ensures -@@ -14140,8 +14140,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14158,8 +14158,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11890,7 +11680,7 @@ index f94c312e..d76ba58d 100644 \pnum \ensures -@@ -14186,8 +14186,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14204,8 +14204,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11901,7 +11691,7 @@ index f94c312e..d76ba58d 100644 \pnum \ensures -@@ -14702,7 +14702,7 @@ provided to the function call operator. +@@ -14720,7 +14720,7 @@ provided to the function call operator. \pnum Each specialization of a class template specified in \ref{func.search} @@ -11910,7 +11700,7 @@ index f94c312e..d76ba58d 100644 Template parameters named \begin{itemize} \item \tcode{ForwardIterator}, -@@ -14716,7 +14716,7 @@ Template parameters named +@@ -14734,7 +14734,7 @@ Template parameters named of templates specified in \ref{func.search} shall meet the same requirements and semantics as specified in \ref{algorithms.general}. @@ -11919,7 +11709,7 @@ index f94c312e..d76ba58d 100644 requirements (\tref{cpp17.hash}). \pnum -@@ -14825,9 +14825,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, +@@ -14843,9 +14843,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, \pnum \expects The value type of \tcode{RandomAccessIterator1} meets @@ -11932,7 +11722,7 @@ index f94c312e..d76ba58d 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -14926,8 +14926,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, +@@ -14944,8 +14944,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, \begin{itemdescr} \pnum \expects @@ -11943,7 +11733,7 @@ index f94c312e..d76ba58d 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15000,7 +15000,7 @@ as the default hash function. +@@ -15018,7 +15018,7 @@ as the default hash function. Each specialization of \tcode{hash} is either enabled or disabled, as described below. \begin{note} @@ -11952,7 +11742,7 @@ index f94c312e..d76ba58d 100644 disabled specializations do not. \end{note} Each header that declares the template \tcode{hash} -@@ -15027,17 +15027,17 @@ Disabled specializations of \tcode{hash} +@@ -15045,17 +15045,17 @@ Disabled specializations of \tcode{hash} are not function object types\iref{function.objects}. \begin{note} This means that the specialization of \tcode{hash} exists, but @@ -11979,10 +11769,10 @@ index f94c312e..d76ba58d 100644 2.43.0 -From 3cac311726c7092d17b87d4cca22ada684482fa7 Mon Sep 17 00:00:00 2001 +From 637ba0f9e178ca79bb556f80e7b38837fd948b54 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 -Subject: [PATCH 12/13] Remove awkward \linebreaks. +Subject: [PATCH 11/14] Remove awkward \linebreaks. --- source/algorithms.tex | 2 +- @@ -11996,10 +11786,10 @@ Subject: [PATCH 12/13] Remove awkward \linebreaks. 8 files changed, 63 insertions(+), 64 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 47082ed4..b492c24b 100644 +index 3b19eb71..3c0b2091 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -5583,7 +5583,7 @@ Let: +@@ -5586,7 +5586,7 @@ Let: \tcode{invoke(op, invoke(proj, *(first1 + (i - result))))} for unary transforms defined in namespace \tcode{ranges}; \item @@ -12009,10 +11799,10 @@ index 47082ed4..b492c24b 100644 \end{itemize} \end{itemize} diff --git a/source/containers.tex b/source/containers.tex -index 16a3e133..09c8fe9c 100644 +index bbb3230c..9115aaba 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -2372,8 +2372,7 @@ calling \tcode{ator_traits::template rebind_traits::dealloc +@@ -2444,8 +2444,7 @@ calling \tcode{ator_traits::template rebind_traits::dealloc Assigns \tcode{nh.ptr_} to \tcode{ptr_}. \item If \tcode{!alloc\textunderscore} or \tcode{ator_traits::propagate_on_container_move_assignment::value} @@ -12022,7 +11812,7 @@ index 16a3e133..09c8fe9c 100644 \item Assigns \keyword{nullptr} to \tcode{nh.ptr_} and assigns \tcode{nullopt} to -@@ -7391,14 +7390,14 @@ template +@@ -7478,14 +7477,14 @@ template \pnum \expects \tcode{T} is \oldconcept{EmplaceConstructible} into \tcode{forward_list} @@ -12039,7 +11829,7 @@ index 16a3e133..09c8fe9c 100644 \pnum \returns -@@ -9417,7 +9416,7 @@ template +@@ -10637,7 +10636,7 @@ template \pnum The expression \tcode{\exposid{is-vector-bool-reference}} is \tcode{true} @@ -12048,7 +11838,7 @@ index 16a3e133..09c8fe9c 100644 for some type \tcode{Alloc} and \tcode{vector} is not a program-defined specialization. \end{itemdescr} -@@ -10810,7 +10809,7 @@ there is no effect. +@@ -12029,7 +12028,7 @@ there is no effect. Otherwise, let \tcode{r} be \tcode{equal_range(k)}. Constructs an object \tcode{u} of type \tcode{value_type} with \tcode{piecewise_construct, forward_as_tuple(std::forward(k)), @@ -12057,7 +11847,7 @@ index 16a3e133..09c8fe9c 100644 If \tcode{equal_range(u.first) == r} is \tcode{false}, the behavior is undefined. Inserts \tcode{u} into \tcode{*this}. -@@ -16267,7 +16266,7 @@ template +@@ -17515,7 +17514,7 @@ template \pnum \effects Equivalent to \tcode{flat_map(s, key_cont, mapped_cont)} and @@ -12066,7 +11856,7 @@ index 16a3e133..09c8fe9c 100644 except that \tcode{\exposid{c}.keys} and \tcode{\exposid{c}.values} are constructed with uses-allocator construction\iref{allocator.uses.construction}. -@@ -16450,7 +16449,7 @@ template pair emplace(Args&&... args); +@@ -17699,7 +17698,7 @@ template constexpr pair emplace(Args&&... args); \pnum \effects Initializes an object \tcode{t} of type \tcode{pair} @@ -12075,7 +11865,7 @@ index 16a3e133..09c8fe9c 100644 if the map already contains an element whose key is equivalent to \tcode{t.first}, \tcode{*this} is unchanged. -@@ -16727,7 +16726,7 @@ template +@@ -17976,7 +17975,7 @@ template \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -12084,7 +11874,7 @@ index 16a3e133..09c8fe9c 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -16782,7 +16781,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. +@@ -18031,7 +18030,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -12093,7 +11883,7 @@ index 16a3e133..09c8fe9c 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -17387,14 +17386,14 @@ template +@@ -18645,14 +18644,14 @@ template \pnum \effects Equivalent to \tcode{flat_multimap(key_cont, mapped_cont)} and @@ -12110,7 +11900,7 @@ index 16a3e133..09c8fe9c 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -21920,7 +21919,7 @@ is representable as a value of type \tcode{index_type.} +@@ -23205,7 +23204,7 @@ is representable as a value of type \tcode{index_type.} \item If \exposid{rank_} is greater than one, then the product of @@ -12119,7 +11909,7 @@ index 16a3e133..09c8fe9c 100644 all values \tcode{ext.extent($k$)} with $k$ in the range of \range{1}{\exposid{rank_}} is representable as a value of type \tcode{index_type}. -@@ -21999,7 +21998,7 @@ template +@@ -23284,7 +23283,7 @@ template \item If \exposid{rank_} is greater than \tcode{1} and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -12128,7 +11918,7 @@ index 16a3e133..09c8fe9c 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(0))) -@@ -22066,7 +22065,7 @@ is \tcode{true}. +@@ -23351,7 +23350,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -12137,7 +11927,7 @@ index 16a3e133..09c8fe9c 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(0))) -@@ -22464,7 +22463,7 @@ Implementations should not store this value +@@ -23749,7 +23748,7 @@ Implementations should not store this value if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. \begin{note} Using \tcode{extents} @@ -12146,7 +11936,7 @@ index 16a3e133..09c8fe9c 100644 would achieve this. \end{note} \end{itemdescr} -@@ -22547,13 +22546,13 @@ is representable as a value of type \tcode{index_type}. +@@ -23832,13 +23831,13 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -12162,7 +11952,7 @@ index 16a3e133..09c8fe9c 100644 \end{itemize} \pnum -@@ -22626,7 +22625,7 @@ template +@@ -23911,7 +23910,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -12171,7 +11961,7 @@ index 16a3e133..09c8fe9c 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -22694,7 +22693,7 @@ is \tcode{true}. +@@ -23979,7 +23978,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -12180,7 +11970,7 @@ index 16a3e133..09c8fe9c 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) -@@ -24284,7 +24283,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, +@@ -25568,7 +25567,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, \item \tcode{stride(k) * \exposid{de-ice}($s_k$.stride)} if $S_k$ is a specialization of \tcode{strided_slice} and @@ -12189,7 +11979,7 @@ index 16a3e133..09c8fe9c 100644 \item otherwise, \tcode{stride($k$)}. \end{itemize} -@@ -24682,11 +24681,11 @@ is well-formed when treated as an unevaluated operand. +@@ -25966,11 +25965,11 @@ is well-formed when treated as an unevaluated operand. \begin{itemize} \item \tcode{decltype(submdspan_mapping(src.mapping(), slices...))} @@ -12203,7 +11993,7 @@ index 16a3e133..09c8fe9c 100644 is \tcode{true}. \item -@@ -24716,11 +24715,11 @@ all of the following are \tcode{true}: +@@ -26000,11 +25999,11 @@ all of the following are \tcode{true}: \item $0 \le \tcode{\exposid{first_}(slices...)}$ $\le \tcode{\exposid{last_}<$k$>(src.extents(), slices...)}$ @@ -12218,10 +12008,10 @@ index 16a3e133..09c8fe9c 100644 \item diff --git a/source/exec.tex b/source/exec.tex -index e8eaf162..c62dc64d 100644 +index 9daa0bde..e99183a3 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -2823,7 +2823,7 @@ except that \tcode{sch} is evaluated only once. +@@ -2831,7 +2831,7 @@ except that \tcode{sch} is evaluated only once. Let \tcode{out_sndr} and \tcode{env} be subexpressions such that \tcode{OutSndr} is \tcode{decltype((out_sndr))}. If \tcode{\exposconcept{sender-for}} is \tcode{false}, @@ -12230,7 +12020,7 @@ index e8eaf162..c62dc64d 100644 \tcode{starts_on.transform_sender(out_sndr, env)} are ill-formed; otherwise \begin{itemize} \item -@@ -3175,7 +3175,7 @@ except that \tcode{sndr} is evaluated only once. +@@ -3183,7 +3183,7 @@ except that \tcode{sndr} is evaluated only once. \pnum Let \tcode{out_sndr} and \tcode{env} be subexpressions, let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and @@ -12239,7 +12029,7 @@ index e8eaf162..c62dc64d 100644 If \tcode{\exposconcept{sender-for}} is \tcode{false}, then the expressions \tcode{on.transform_env(out_sndr, env)} and \tcode{on.transform_sender(out_sndr, env)} are ill-formed. -@@ -3337,7 +3337,7 @@ Let the expression \exposid{then-cpo} be one of +@@ -3345,7 +3345,7 @@ Let the expression \exposid{then-cpo} be one of For subexpressions \tcode{sndr} and \tcode{f}, if \tcode{decltype((sndr))} does not satisfy \libconcept{sender}, or \tcode{decltype((f))} does not satisfy \exposconcept{movable-value}, @@ -12248,7 +12038,7 @@ index e8eaf162..c62dc64d 100644 \pnum Otherwise, -@@ -3518,7 +3518,7 @@ to the \tcode{completion_signatures} specialization named by +@@ -3526,7 +3526,7 @@ to the \tcode{completion_signatures} specialization named by Let \tcode{LetSigs} be a pack of those types in \tcode{Sigs} with a return type of \tcode{\exposid{decayed-typeof}<\exposid{set-cpo}>}. Let \exposid{as-tuple} be an alias template @@ -12257,7 +12047,7 @@ index e8eaf162..c62dc64d 100644 the type \tcode{\exposid{decayed-tuple}}. Then \tcode{args_variant_t} denotes the type \tcode{variant...>} -@@ -3573,7 +3573,7 @@ is initialized with a callable object equivalent to the following: +@@ -3581,7 +3581,7 @@ is initialized with a callable object equivalent to the following: Let \tcode{sndr} and \tcode{env} be subexpressions, and let \tcode{Sndr} be \tcode{decltype((sndr))}. If @@ -12266,7 +12056,7 @@ index e8eaf162..c62dc64d 100644 is \tcode{false}, then the expression \tcode{\exposid{let-cpo}.transform_env(sndr, env)} is ill-formed. -@@ -4330,7 +4330,7 @@ try { +@@ -4338,7 +4338,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -12275,7 +12065,7 @@ index e8eaf162..c62dc64d 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -4643,7 +4643,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. +@@ -4651,7 +4651,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. \pnum For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. @@ -12284,7 +12074,7 @@ index e8eaf162..c62dc64d 100644 is \tcode{false}, the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: -@@ -4714,7 +4714,7 @@ is \tcode{true}, where $e$ is the \tcode{ap\-ply_sender} expression above. +@@ -4722,7 +4722,7 @@ is \tcode{true}, where $e$ is the \tcode{ap\-ply_sender} expression above. \pnum If \tcode{\exposconcept{callable}} is \tcode{false}, @@ -12293,7 +12083,7 @@ index e8eaf162..c62dc64d 100644 Otherwise, it is equivalent to: \begin{codeblock} using result_type = @\exposid{sync-wait-with-variant-result-type}@; -@@ -4955,7 +4955,7 @@ Let \tcode{Vs} be a pack of the types in the \exposid{type-list} named by +@@ -4963,7 +4963,7 @@ Let \tcode{Vs} be a pack of the types in the \exposid{type-list} named by Let \tcode{Es} be a pack of the types in the \exposid{type-list} named by \tcode{\exposid{gather-signatures}}, where \exposid{error-list} is an alias template @@ -12303,10 +12093,10 @@ index e8eaf162..c62dc64d 100644 \pnum diff --git a/source/memory.tex b/source/memory.tex -index cd1d4682..8aa5bb6c 100644 +index 26449bc4..1977f519 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1103,7 +1103,7 @@ A \tcode{tuple} value determined as follows: +@@ -1255,7 +1255,7 @@ A \tcode{tuple} value determined as follows: \begin{itemize} \item If \tcode{uses_allocator_v, Alloc>} is \tcode{false} and @@ -12315,7 +12105,7 @@ index cd1d4682..8aa5bb6c 100644 return \tcode{forward_as_tuple(std::forward(args)...)}. \item Otherwise, if \tcode{uses_allocator_v, Alloc>} is \tcode{true} and -@@ -4036,7 +4036,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje +@@ -4188,7 +4188,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje the allocator \tcode{a} passed to \tcode{allocate_shared}. \item When a (sub)object of non-array type \tcode{U} is initialized by @@ -12324,7 +12114,7 @@ index cd1d4682..8aa5bb6c 100644 \tcode{allocate_shared_for_overwrite}, it is initialized via the expression \tcode{::new(pv) U}, where \tcode{pv} has type \tcode{void*} and -@@ -5271,7 +5271,7 @@ if (p) { +@@ -5423,7 +5423,7 @@ if (p) { \end{codeblock} if the expression \tcode{s.reset(static_cast(p), std::forward(args)...)} @@ -12334,10 +12124,10 @@ index cd1d4682..8aa5bb6c 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index b6d69967..7968d98f 100644 +index d845f0e5..df25131c 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -2144,7 +2144,7 @@ present as follows: +@@ -2177,7 +2177,7 @@ present as follows: \item Let \tcode{R} be \tcode{\placeholdernc{COMMON-REF}(T1, T2)}. If \tcode{T1} and \tcode{T2} are reference types, \tcode{R} is well-formed, and @@ -12347,10 +12137,10 @@ index b6d69967..7968d98f 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index dabc36db..2c1ccbc9 100644 +index 1ba59329..c5d86c9e 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -13731,7 +13731,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. +@@ -13781,7 +13781,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -12359,7 +12149,7 @@ index dabc36db..2c1ccbc9 100644 \pnum \returns -@@ -13937,7 +13937,7 @@ template +@@ -13987,7 +13987,7 @@ template \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -12369,10 +12159,10 @@ index dabc36db..2c1ccbc9 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 831ed4b8..f42e3511 100644 +index 395a7de1..deeedbad 100644 --- a/source/ranges.tex +++ b/source/ranges.tex -@@ -3532,7 +3532,7 @@ constexpr explicit repeat_view(piecewise_construct_t, +@@ -3637,7 +3637,7 @@ constexpr explicit repeat_view(piecewise_construct_t, Initializes \exposid{value_} with \tcode{make_from_tuple(std::move(value_args))} and @@ -12381,7 +12171,7 @@ index 831ed4b8..f42e3511 100644 \tcode{make_from_tuple(std::move(bound_args))}. The behavior is undefined if \tcode{Bound} is not \tcode{unreachable_sentinel_t} and -@@ -5748,7 +5748,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} +@@ -5879,7 +5879,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} that models \libconcept{random_access_range} and \libconcept{sized_range}, then \tcode{iota_view(*ranges::begin(E), @@ -12390,7 +12180,7 @@ index 831ed4b8..f42e3511 100644 except that \tcode{E} is evaluated only once. \item -@@ -6206,7 +6206,7 @@ if \tcode{T} is +@@ -6355,7 +6355,7 @@ if \tcode{T} is a specialization of \tcode{subrange} that models \libconcept{random_access_range} and \libconcept{sized_range}, then @@ -12399,7 +12189,7 @@ index 831ed4b8..f42e3511 100644 \exposid{to-unsigned-like}(ranges::distance(E) - std::min(ranges::distance(E), F)))}, except that \tcode{E} and \tcode{F} are each evaluated only once. -@@ -7241,7 +7241,7 @@ Let \placeholder{OUTERC} denote +@@ -7405,7 +7405,7 @@ Let \placeholder{OUTERC} denote let \placeholder{INNERC} denote \tcode{iterator_traits<\exposid{InnerIter}>::iterator_category}, and let \placeholder{PATTERNC} denote @@ -12408,7 +12198,7 @@ index 831ed4b8..f42e3511 100644 \item If \begin{codeblock} -@@ -7733,7 +7733,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); +@@ -7904,7 +7904,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -12417,7 +12207,7 @@ index 831ed4b8..f42e3511 100644 \end{itemdescr} \rSec3[range.lazy.split.outer]{Class template \tcode{lazy_split_view::\exposid{outer-iterator}}} -@@ -8044,7 +8044,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: +@@ -8215,7 +8215,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: \begin{itemize} \item \tcode{forward_iterator_tag} if @@ -12426,7 +12216,7 @@ index 831ed4b8..f42e3511 100644 \tcode{\libconcept{derived_from}}; \item otherwise, \tcode{iterator_traits>::iterator_category}. \end{itemize} -@@ -8262,7 +8262,7 @@ constexpr explicit split_view(R&& r, range_value_t e); +@@ -8435,7 +8435,7 @@ constexpr explicit split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -12434,8 +12224,8 @@ index 831ed4b8..f42e3511 100644 +\exposid{pattern_} with \tcode{views::single(std::move(e))}. \end{itemdescr} - \begin{itemdecl} -@@ -8814,7 +8814,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. + \indexlibrarymember{begin}{split_view} +@@ -8999,7 +8999,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. \item Otherwise, if \tcode{\exposconcept{all-forward}} is modeled, @@ -12444,7 +12234,7 @@ index 831ed4b8..f42e3511 100644 \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} -@@ -8840,14 +8840,14 @@ let \tcode{Cs} denote the pack of types +@@ -9025,14 +9025,14 @@ let \tcode{Cs} denote the pack of types \begin{itemize} \item If @@ -12462,7 +12252,7 @@ index 831ed4b8..f42e3511 100644 \item Otherwise, if \tcode{(\libconcept{derived_from} \&\& ...)} -@@ -9299,11 +9299,11 @@ Let +@@ -9484,11 +9484,11 @@ Let %FIXME This is hard to parse. If \tcode{$i_\tcode{x}$ > $i_\tcode{y}$}, let \tcode{$d_\tcode{y}$} be @@ -12477,7 +12267,7 @@ index 831ed4b8..f42e3511 100644 for every integer \tcode{$i$} in the range \range{$i_\tcode{y}$ + 1}{$i_\tcode{x}$} if there is any, and -@@ -9346,7 +9346,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul +@@ -9531,7 +9531,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul Let \tcode{$i_\tcode{x}$} denote \tcode{x.\exposid{it_}.index()}, \tcode{$d_\tcode{x}$} be @@ -12486,7 +12276,7 @@ index 831ed4b8..f42e3511 100644 Let \tcode{$s$} denote the sum of the sizes of all the ranges \tcode{std::get<$i$>(x.\exposid{parent_}->\exposid{views_})} for every integer \tcode{$i$} in the range -@@ -9503,7 +9503,7 @@ is expression-equivalent to: +@@ -9688,7 +9688,7 @@ is expression-equivalent to: \begin{itemize} \item If \tcode{T} models \libconcept{contiguous_iterator}, @@ -12495,7 +12285,7 @@ index 831ed4b8..f42e3511 100644 \item Otherwise, if \tcode{T} models \libconcept{random_access_iterator}, -@@ -13048,7 +13048,7 @@ is defined as follows: +@@ -13353,7 +13353,7 @@ is defined as follows: \item If \tcode{invoke_result_t<\exposid{maybe-const}\&, \exposid{REPEAT}(range_reference_t<\exposid{Base}>, N)...>} @@ -12504,7 +12294,7 @@ index 831ed4b8..f42e3511 100644 \tcode{iterator_category} denotes \tcode{input_iterator_tag}. \item Otherwise, let \tcode{C} denote the type -@@ -14059,7 +14059,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ +@@ -14439,7 +14439,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ \effects Initializes \exposid{current_} with \tcode{current}, \exposid{end_} with \tcode{ranges::end(parent->\exposid{base_})}, @@ -12514,10 +12304,10 @@ index 831ed4b8..f42e3511 100644 \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index d76ba58d..a7cada25 100644 +index 440bd426..20875194 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -2034,7 +2034,7 @@ equals \tcode{tuple_size_v>}, +@@ -2061,7 +2061,7 @@ equals \tcode{tuple_size_v>}, \item \tcode{(is_constructible_v(std::forward(u)))> \&\& ...)} @@ -12526,7 +12316,7 @@ index d76ba58d..a7cada25 100644 \tcode{true}, and \item -@@ -3055,7 +3055,7 @@ struct basic_common_reference { +@@ -3082,7 +3082,7 @@ struct basic_common_reference { denotes a type. \end{itemize} The member \grammarterm{typedef-name} \tcode{type} denotes the type @@ -12535,7 +12325,7 @@ index d76ba58d..a7cada25 100644 \end{itemdescr} \indexlibrarymember{common_type}{tuple}% -@@ -4036,7 +4036,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and +@@ -4063,7 +4063,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and \pnum All requirements on container iterators\iref{container.reqmts} apply to @@ -12544,7 +12334,7 @@ index d76ba58d..a7cada25 100644 \pnum Any operation that initializes or destroys the contained value of an optional object invalidates all iterators into that object. -@@ -8383,7 +8383,7 @@ constexpr const T&& value() const &&; +@@ -8418,7 +8418,7 @@ constexpr const T&& value() const &&; \pnum \mandates \tcode{is_copy_constructible_v} is \tcode{true} and @@ -12553,7 +12343,7 @@ index d76ba58d..a7cada25 100644 \pnum \returns -@@ -14414,7 +14414,7 @@ that models \libconcept{copyable}. +@@ -14432,7 +14432,7 @@ that models \libconcept{copyable}. \pnum Within \ref{func.wrap.ref}, \tcode{\placeholder{call-args}} is an argument pack with elements such that @@ -12566,10 +12356,10 @@ index d76ba58d..a7cada25 100644 2.43.0 -From aacacbada0a6b9b59546588233b1ec3c68cd4a4e Mon Sep 17 00:00:00 2001 +From a782b44a877e8ecddbcccfc62a20c4f9e698c3ae Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 13:48:14 +0200 -Subject: [PATCH 13/13] Avoid `for\-ward`. +Subject: [PATCH 12/14] Avoid `for\-ward`. Because the 'for' gets highlighted as a keyword. --- @@ -12581,10 +12371,10 @@ Because the 'for' gets highlighted as a keyword. 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index b492c24b..ee5088c5 100644 +index 3c0b2091..aa60e0cc 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -11892,7 +11892,7 @@ Otherwise, calls \tcode{ranges::generate(std::forward(r), ref(g))}. +@@ -11896,7 +11896,7 @@ Otherwise, calls \tcode{ranges::generate(std::forward(r), ref(g))}. \pnum \remarks The effects of \tcode{generate_random(r, g)} shall be equivalent to @@ -12594,10 +12384,10 @@ index b492c24b..ee5088c5 100644 This implies that \tcode{g.generate_random(a)} fills \tcode{a} with the same values as produced by invocation of \tcode{g()}. diff --git a/source/containers.tex b/source/containers.tex -index 09c8fe9c..dd4b1974 100644 +index 9115aaba..7f982f0d 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -10714,7 +10714,7 @@ template +@@ -11933,7 +11933,7 @@ template \pnum \expects \tcode{value_type} is \oldconcept{EmplaceConstructible} into \tcode{map} @@ -12606,7 +12396,7 @@ index 09c8fe9c..dd4b1974 100644 \tcode{forward_as_tuple(std::forward(args)...)}. \pnum -@@ -10752,7 +10752,7 @@ template +@@ -11971,7 +11971,7 @@ template \pnum \expects \tcode{value_type} is \oldconcept{EmplaceConstructible} into \tcode{map} @@ -12615,7 +12405,7 @@ index 09c8fe9c..dd4b1974 100644 \tcode{forward_as_tuple(std::forward(args)...)}. \pnum -@@ -10849,7 +10849,7 @@ from \tcode{k}, \tcode{std::forward(obj)}. +@@ -12068,7 +12068,7 @@ from \tcode{k}, \tcode{std::forward(obj)}. \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -12624,7 +12414,7 @@ index 09c8fe9c..dd4b1974 100644 Otherwise inserts an object of type \tcode{value_type} constructed with \tcode{k}, \tcode{std::forward(obj)}. -@@ -10883,13 +10883,13 @@ template +@@ -12102,13 +12102,13 @@ template \pnum \expects \tcode{value_type} is \oldconcept{EmplaceConstructible} into \tcode{map} @@ -12640,7 +12430,7 @@ index 09c8fe9c..dd4b1974 100644 Otherwise inserts an object of type \tcode{value_type} constructed with \tcode{std::\brk{}move(k)}, \tcode{std::forward(obj)}. -@@ -12823,13 +12823,13 @@ template +@@ -14059,13 +14059,13 @@ template \pnum \expects \tcode{value_type} is \oldconcept{EmplaceConstructible} into \tcode{unordered_map} @@ -12656,7 +12446,7 @@ index 09c8fe9c..dd4b1974 100644 Otherwise inserts an object of type \tcode{value_type} constructed with \tcode{k}, \tcode{std::forward(obj)}. -@@ -12869,7 +12869,7 @@ from \tcode{std::move(k)}, \tcode{std::\brk{}forward(obj)}. +@@ -14105,7 +14105,7 @@ from \tcode{std::move(k)}, \tcode{std::\brk{}forward(obj)}. \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -12666,10 +12456,10 @@ index 09c8fe9c..dd4b1974 100644 constructed with \tcode{std::\brk{}move(k)}, \tcode{std::forward(obj)}. diff --git a/source/ranges.tex b/source/ranges.tex -index f42e3511..e6113cb8 100644 +index deeedbad..57713966 100644 --- a/source/ranges.tex +++ b/source/ranges.tex -@@ -6656,7 +6656,7 @@ namespace std::ranges { +@@ -6816,7 +6816,7 @@ namespace std::ranges { then \tcode{iterator_concept} denotes \tcode{bidirectio\-nal_iterator_tag}. \item Otherwise, if \exposid{ref-is-glvalue} is \tcode{true} and \exposid{Base} and \tcode{range_reference_t<\exposid{Base}>} @@ -12678,7 +12468,7 @@ index f42e3511..e6113cb8 100644 \tcode{forward_iterator_tag}. \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} -@@ -11278,7 +11278,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. +@@ -11502,7 +11502,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. \item Otherwise, if \tcode{\exposconcept{all-forward}} is modeled, @@ -12688,10 +12478,10 @@ index f42e3511..e6113cb8 100644 Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} diff --git a/source/threads.tex b/source/threads.tex -index 1da6cb43..4a81db2a 100644 +index 15a86a53..42a0dab7 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -11757,7 +11757,7 @@ the corresponding policies): +@@ -11687,7 +11687,7 @@ the corresponding policies): \begin{itemize} \item If \tcode{launch::async} is set in \tcode{policy}, calls @@ -12700,7 +12490,7 @@ index 1da6cb43..4a81db2a 100644 as if in a new thread of execution represented by a \tcode{thread} object with the values produced by \tcode{auto} being materialized\iref{conv.rval} in the thread that called \tcode{async}. -@@ -11775,7 +11775,7 @@ reference that state. +@@ -11705,7 +11705,7 @@ reference that state. \item If \tcode{launch::deferred} is set in \tcode{policy}, stores \tcode{auto(std::forward(f))} and @@ -12710,10 +12500,10 @@ index 1da6cb43..4a81db2a 100644 a \defnadj{deferred}{function}. Invocation of the deferred function evaluates \tcode{invoke(std::move(g), std::move(xyz))} where \tcode{g} is the stored value of diff --git a/source/utilities.tex b/source/utilities.tex -index a7cada25..93cf79dd 100644 +index 20875194..3fcce1a2 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -6817,7 +6817,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -6848,7 +6848,7 @@ Let \tcode{VT} be \tcode{decay_t}. \effects Calls \tcode{reset()}. Then direct-non-list-initializes the contained value of type \tcode{VT} @@ -12722,7 +12512,7 @@ index a7cada25..93cf79dd 100644 \pnum \ensures -@@ -9692,7 +9692,7 @@ is well-formed. +@@ -9727,7 +9727,7 @@ is well-formed. If \tcode{has_value()} is \tcode{true}, \tcode{expected()}; otherwise, an \tcode{expected} object whose \exposid{has_val} member is \tcode{false} and \exposid{unex} member is direct-non-list-initialized with @@ -12731,7 +12521,7 @@ index a7cada25..93cf79dd 100644 \end{itemdescr} \indexlibrarymember{transform_error}{expected}% -@@ -9720,7 +9720,7 @@ is well-formed. +@@ -9755,7 +9755,7 @@ is well-formed. If \tcode{has_value()} is \tcode{true}, \tcode{expected()}; otherwise, an \tcode{expected} object whose \exposid{has_val} member is \tcode{false} and \exposid{unex} member is direct-non-list-initialized with @@ -12740,7 +12530,7 @@ index a7cada25..93cf79dd 100644 \end{itemdescr} \rSec3[expected.void.eq]{Equality operators} -@@ -13768,7 +13768,7 @@ if \tcode{is_move_constructible_v} is \tcode{true}, +@@ -13786,7 +13786,7 @@ if \tcode{is_move_constructible_v} is \tcode{true}, \ensures \tcode{*this} has a target object of type \tcode{VT} direct-non-list-initialized with @@ -12749,7 +12539,7 @@ index a7cada25..93cf79dd 100644 \pnum \throws -@@ -14193,7 +14193,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14211,7 +14211,7 @@ Let \tcode{VT} be \tcode{decay_t}. \ensures \tcode{*this} has a target object of type \tcode{VT} direct-non-list-initialized with @@ -12761,3 +12551,406 @@ index a7cada25..93cf79dd 100644 -- 2.43.0 + +From d63592a313e697a5121cbddaa4d30f5521db42c6 Mon Sep 17 00:00:00 2001 +From: timsong-cpp +Date: Sat, 22 Mar 2025 22:15:11 -0500 +Subject: [PATCH 13/14] Revert "[std, macros] Use "environ" for grammar + extraction." + +This reverts commit 561a43b6730a360ae786b613e276017717f222fa. +--- + .github/workflows/check.yml | 2 +- + source/grammar.tex | 2 +- + source/macros.tex | 37 +++++++++++++++++-------------------- + source/std.tex | 9 +-------- + 4 files changed, 20 insertions(+), 30 deletions(-) + +diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml +index e6fa6d72..0589ad97 100644 +--- a/.github/workflows/check.yml ++++ b/.github/workflows/check.yml +@@ -52,7 +52,7 @@ jobs: + eval "$(/usr/libexec/path_helper)" + echo "PATH=${PATH}" >> ${GITHUB_ENV} + sudo tlmgr update --self +- sudo tlmgr install latexmk isodate substr relsize ulem fixme rsfs environ layouts enumitem l3packages l3kernel imakeidx splitindex xstring ++ sudo tlmgr install latexmk isodate substr relsize ulem fixme rsfs extract layouts enumitem l3packages l3kernel imakeidx splitindex xstring + + - name: make (Linux) + if: matrix.cfg.os == 'ubuntu-24.04' +diff --git a/source/grammar.tex b/source/grammar.tex +index db27a2f5..8501d394 100644 +--- a/source/grammar.tex ++++ b/source/grammar.tex +@@ -58,4 +58,4 @@ template-name:\br + identifier + \end{ncbnf} + +-\input{std-gram.ext} ++\FlushAndPrintGrammar +diff --git a/source/macros.tex b/source/macros.tex +index ec88684f..06d5bc05 100644 +--- a/source/macros.tex ++++ b/source/macros.tex +@@ -39,18 +39,20 @@ + \newenvironment{addedblock}{\color{addclr}}{\color{black}} + \newenvironment{removedblock}{\color{remclr}}{\color{black}} + +-%%------------------------------------------------------------- ++%%-------------------------------------------------- + %% Grammar extraction. +-%% Assumes that the output file \gramout is managed externally. +-%%------------------------------------------------------------- ++%%-------------------------------------------------- ++\def\gramSec[#1]#2{} ++ + \makeatletter +-\newcommand{\gramWrite}[1]{\protected@write\gramout{}{#1}} +-\newcommand{\meaningbody}[1]{\expandafter\strip@prefix\meaning#1} ++\newcommand{\FlushAndPrintGrammar}{% ++\immediate\closeout\XTR@out% ++\immediate\openout\XTR@out=std-gram-dummy.tmp% ++\def\gramSec[##1]##2{\rSec1[##1]{##2}}% ++\input{std-gram.ext}% ++} + \makeatother + +-\newcommand{\gramSec}[2][]{\gramWrite{% +-\string\rSec1\string[\string#1\string]\string{\string#2\string}}} +- + %%-------------------------------------------------- + % Escaping for index entries. Replaces ! with "! throughout its argument. + %%-------------------------------------------------- +@@ -699,12 +701,7 @@ + \nonfrenchspacing + } + +-% "ncbnf" is the non-copied "base" versions of the bnf environment; +-% instances of the full "bnf" environment is copied to the grammar +-% extraction file. +-% (Similarly for "ncsimplebnf", though in fact we never extract any +-% hypothetical "simplebnf" environments.) +-\newenvironment{ncsimplebnf} ++\newenvironment{simplebnf} + { + \begin{bnfbase} + \BnfNontermshape +@@ -715,7 +712,7 @@ + \end{bnfbase} + } + +-\newenvironment{ncbnf} ++\newenvironment{bnf} + { + \begin{bnfbase} + \begin{bnflist} +@@ -727,7 +724,6 @@ + \end{bnfbase} + } + +-% The regex grammar is never copied. + \newenvironment{ncrebnf} + { + \begin{bnfbase} +@@ -741,10 +737,11 @@ + \end{bnfbase} + } + +-\NewEnviron{bnf}{\begin{ncbnf}% +-\BODY% +-\gramWrite{\string\begin{ncbnf}\meaningbody\BODY\string\end{ncbnf}}% +-\end{ncbnf}}{} ++% non-copied versions of bnf environments ++\let\ncsimplebnf\simplebnf ++\let\endncsimplebnf\endsimplebnf ++\let\ncbnf\bnf ++\let\endncbnf\endbnf + + %%-------------------------------------------------- + %% Environment for imported graphics +diff --git a/source/std.tex b/source/std.tex +index 0170e314..fea8f0a3 100644 +--- a/source/std.tex ++++ b/source/std.tex +@@ -46,7 +46,7 @@ + urlcolor=blue, % ISO/IEC Directives, Part 2, section 6.5 + plainpages=false} + \usepackage{memhfixc} % fix interactions between hyperref and memoir +-\usepackage{environ} ++\usepackage[active,header=false,handles=false,copydocumentclass=false,generate=std-gram.ext,extract-cmdline={gramSec},extract-env={bnf,simplebnf}]{extract} % Grammar extraction + \usepackage{expl3} + \usepackage{xparse} + \usepackage{xstring} +@@ -57,10 +57,6 @@ + + \renewcommand\RSsmallest{5.5pt} % smallest font size for relsize + +-% Begin grammar extraction... +-\newwrite\gramout +-\immediate\openout\gramout=std-gram.ext +- + \input{layout} + \input{styles} + \input{macros} +@@ -158,9 +154,6 @@ + + \numberwithin{table}{chapter} + +-% ... end grammar extraction. +-\immediate\closeout\gramout +- + \include{grammar} + \include{limits} + \include{compatibility} +-- +2.43.0 + + +From 6de66f7e54e9d2ac1bcbf8812a16d7f1ef22fc0a Mon Sep 17 00:00:00 2001 +From: timsong-cpp +Date: Sat, 22 Mar 2025 22:15:47 -0500 +Subject: [PATCH 14/14] Revert "[various] Remove \obeyspaces, and spell out + spaces explicitly." + +This reverts commit f40dd889bf374be908c7a343519ba2bd611e99e1. +--- + source/declarations.tex | 4 ++-- + source/expressions.tex | 2 +- + source/lex.tex | 26 +++++++++++++------------- + source/overloading.tex | 20 ++++++++++---------- + source/preprocessor.tex | 40 ++++++++++++++++++++-------------------- + 5 files changed, 46 insertions(+), 46 deletions(-) + +diff --git a/source/declarations.tex b/source/declarations.tex +index ec866e68..8f61cb27 100644 +--- a/source/declarations.tex ++++ b/source/declarations.tex +@@ -2427,7 +2427,7 @@ Declarators have the syntax + \end{bnf} + + \begin{bnf} +-\microtypesetup{protrusion=false} ++\microtypesetup{protrusion=false}\obeyspaces + \nontermdef{ptr-operator}\br + \terminal{*} \opt{attribute-specifier-seq} \opt{cv-qualifier-seq}\br + \terminal{\&} \opt{attribute-specifier-seq}\br +@@ -9262,7 +9262,7 @@ such as types, variables, names, contract assertions, blocks, or translation uni + \end{bnf} + + \begin{bnf} +-\microtypesetup{protrusion=false} ++\microtypesetup{protrusion=false}\obeyspaces + \nontermdef{balanced-token}\br + \terminal{(} \opt{balanced-token-seq} \terminal{)}\br + \terminal{[} \opt{balanced-token-seq} \terminal{]}\br +diff --git a/source/expressions.tex b/source/expressions.tex +index a9bc7fc4..cd1a4dc4 100644 +--- a/source/expressions.tex ++++ b/source/expressions.tex +@@ -3129,7 +3129,7 @@ or by checking properties of types and expressions. + \end{bnf} + + \begin{bnf} +-\microtypesetup{protrusion=false} ++\microtypesetup{protrusion=false}\obeyspaces + \nontermdef{requirement-body}\br + \terminal{\{} requirement-seq \terminal{\}} + \end{bnf} +diff --git a/source/lex.tex b/source/lex.tex +index 3dd73148..42e43fca 100644 +--- a/source/lex.tex ++++ b/source/lex.tex +@@ -634,7 +634,7 @@ violates a constraint on increment operators, even though the parse + + \indextext{header!name|(}% + \begin{bnf} +-\microtypesetup{protrusion=false} ++\microtypesetup{protrusion=false}\obeyspaces + \nontermdef{header-name}\br + \terminal{<} h-char-sequence \terminal{>}\br + \terminal{"} q-char-sequence \terminal{"} +@@ -734,23 +734,23 @@ are converted into tokens for operators and punctuators: + + \begin{bnf} + %% Ed. note: character protrusion would misalign various operators. +-\microtypesetup{protrusion=false} ++\microtypesetup{protrusion=false}\obeyspaces + \nontermdef{preprocessing-operator} \textnormal{one of}\br +- \terminal{\# \ \ \ \ \ \ \ \#\# \ \ \ \ \ \ \%: \ \ \ \ \ \ \%:\%:} ++ \terminal{\# \#\# \%: \%:\%:} + \end{bnf} + + \begin{bnf} +-\microtypesetup{protrusion=false} ++\microtypesetup{protrusion=false}\obeyspaces + \nontermdef{operator-or-punctuator} \textnormal{one of}\br +- \terminal{\{ \ \ \ \ \ \ \ \} \ \ \ \ \ \ \ [ \ \ \ \ \ \ \ ] \ \ \ \ \ \ \ ( \ \ \ \ \ \ \ )}\br +- \terminal{<\% \ \ \ \ \ \ \%> \ \ \ \ \ \ <: \ \ \ \ \ \ :> \ \ \ \ \ \ ; \ \ \ \ \ \ \ : \ \ \ \ \ \ \ ...}\br +- \terminal{? \ \ \ \ \ \ \ :: \ \ \ \ \ \ . \ \ \ \ \ \ \ .* \ \ \ \ \ \ -> \ \ \ \ \ \ ->* \ \ \ \ \ \~}\br +- \terminal{! \ \ \ \ \ \ \ + \ \ \ \ \ \ \ - \ \ \ \ \ \ \ * \ \ \ \ \ \ \ / \ \ \ \ \ \ \ \% \ \ \ \ \ \ \ \caret{} \ \ \ \ \ \ \ \& \ \ \ \ \ \ \ |}\br +- \terminal{= \ \ \ \ \ \ \ += \ \ \ \ \ \ -= \ \ \ \ \ \ *= \ \ \ \ \ \ /= \ \ \ \ \ \ \%= \ \ \ \ \ \ \caret{}= \ \ \ \ \ \ \&= \ \ \ \ \ \ |=}\br +- \terminal{== \ \ \ \ \ \ != \ \ \ \ \ \ < \ \ \ \ \ \ \ > \ \ \ \ \ \ \ <= \ \ \ \ \ \ >= \ \ \ \ \ \ <=> \ \ \ \ \ \&\& \ \ \ \ \ \ ||}\br +- \terminal{<< \ \ \ \ \ \ >> \ \ \ \ \ \ <<= \ \ \ \ \ >>= \ \ \ \ \ ++ \ \ \ \ \ \ -- \ \ \ \ \ \ ,}\br +- \terminal{\keyword{and} \ \ \ \ \ \keyword{or} \ \ \ \ \ \ \keyword{xor} \ \ \ \ \ \keyword{not} \ \ \ \ \ \keyword{bitand} \ \ \keyword{bitor} \ \ \ \keyword{compl}}\br +- \terminal{\keyword{and_eq} \ \ \keyword{or_eq} \ \ \ \keyword{xor_eq} \ \ \keyword{not_eq}} ++ \terminal{\{ \} [ ] ( )}\br ++ \terminal{<\% \%> <: :> ; : ...}\br ++ \terminal{? :: . .* -> ->* \~}\br ++ \terminal{! + - * / \% \caret{} \& |}\br ++ \terminal{= += -= *= /= \%= \caret{}= \&= |=}\br ++ \terminal{== != < > <= >= <=> \&\& ||}\br ++ \terminal{<< >> <<= >>= ++ -- ,}\br ++ \terminal{\keyword{and} \keyword{or} \keyword{xor} \keyword{not} \keyword{bitand} \keyword{bitor} \keyword{compl}}\br ++ \terminal{\keyword{and_eq} \keyword{or_eq} \keyword{xor_eq} \keyword{not_eq}} + \end{bnf} + + Each \grammarterm{operator-or-punctuator} is converted to a single token +diff --git a/source/overloading.tex b/source/overloading.tex +index d6a68599..8367c4f4 100644 +--- a/source/overloading.tex ++++ b/source/overloading.tex +@@ -3297,13 +3297,13 @@ the operator named in its + + \begin{bnf} + %% Ed. note: character protrusion would misalign various operators. +-\microtypesetup{protrusion=false} ++\microtypesetup{protrusion=false}\obeyspaces + \nontermdef{operator} \textnormal{one of}\br +- \terminal{new \ \ \ \ \ delete \ \ new[] \ \ \ delete[] co_await (\rlap{\,)} \ \ \ \ \ \ \ [\rlap{\,]} \ \ \ \ \ \ \ -> \ \ \ \ \ \ ->*}\br +- \terminal{\~ \ \ \ \ \ \ \ ! \ \ \ \ \ \ \ + \ \ \ \ \ \ \ - \ \ \ \ \ \ \ * \ \ \ \ \ \ \ / \ \ \ \ \ \ \ \% \ \ \ \ \ \ \ \caret{} \ \ \ \ \ \ \ \&}\br +- \terminal{| \ \ \ \ \ \ \ = \ \ \ \ \ \ \ += \ \ \ \ \ \ -= \ \ \ \ \ \ *= \ \ \ \ \ \ /= \ \ \ \ \ \ \%= \ \ \ \ \ \ \caret{}= \ \ \ \ \ \ \&=}\br +- \terminal{|= \ \ \ \ \ \ == \ \ \ \ \ \ != \ \ \ \ \ \ < \ \ \ \ \ \ \ > \ \ \ \ \ \ \ <= \ \ \ \ \ \ >= \ \ \ \ \ \ <=> \ \ \ \ \ \&\&}\br +- \terminal{|| \ \ \ \ \ \ << \ \ \ \ \ \ >> \ \ \ \ \ \ <<= \ \ \ \ \ >>= \ \ \ \ \ ++ \ \ \ \ \ \ -- \ \ \ \ \ \ ,}\br ++ \terminal{new delete new[] delete[] co_await (\rlap{\,)} [\rlap{\,]} -> ->*}\br ++ \terminal{\~ ! + - * / \% \caret{} \&}\br ++ \terminal{| = += -= *= /= \%= \caret{}= \&=}\br ++ \terminal{|= == != < > <= >= <=> \&\&}\br ++ \terminal{|| << >> <<= >>= ++ -- ,}\br + \end{bnf} + \begin{note} + The operators +@@ -3321,8 +3321,8 @@ and \link{subscripting}{expr.sub}. + + \pnum + Both the unary and binary forms of +-\begin{ncsimplebnf} +-\terminal{+ \ \ \ \ \ - \ \ \ \ \ * \ \ \ \ \ \&} ++\begin{ncsimplebnf}\obeyspaces ++\terminal{+ - * \&} + \end{ncsimplebnf} + can be overloaded. + +@@ -3330,8 +3330,8 @@ can be overloaded. + \begin{note} + \indextext{restriction!operator overloading}% + The following operators cannot be overloaded: +-\begin{ncsimplebnf} +-\terminal{. \ \ \ \ \ .* \ \ \ \ :: \ \ \ \ ?:} ++\begin{ncsimplebnf}\obeyspaces ++\terminal{. .* :: ?:} + \end{ncsimplebnf} + nor can the preprocessing symbols + \tcode{\#}\iref{cpp.stringize} +diff --git a/source/preprocessor.tex b/source/preprocessor.tex +index b54d76fc..ff3d1c06 100644 +--- a/source/preprocessor.tex ++++ b/source/preprocessor.tex +@@ -45,18 +45,18 @@ + \terminal{\#} conditionally-supported-directive + \end{bnf} + +-\begin{bnf} ++\begin{bnf}\obeyspaces + \nontermdef{control-line}\br + \terminal{\# include} pp-tokens new-line\br + pp-import\br +- \terminal{\# embed \ } pp-tokens new-line\br ++ \terminal{\# embed } pp-tokens new-line\br + \terminal{\# define } identifier 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 \ } \opt{pp-tokens} new-line\br ++ \terminal{\# undef } identifier new-line\br ++ \terminal{\# line } pp-tokens new-line\br ++ \terminal{\# error } \opt{pp-tokens} new-line\br + \terminal{\# warning} \opt{pp-tokens} new-line\br + \terminal{\# pragma } \opt{pp-tokens} new-line\br + \terminal{\# }new-line +@@ -67,10 +67,10 @@ + if-group \opt{elif-groups} \opt{else-group} endif-line + \end{bnf} + +-\begin{bnf} ++\begin{bnf}\obeyspaces + \nontermdef{if-group}\br +- \terminal{\# if \ \ \ \ } constant-expression new-line \opt{group}\br +- \terminal{\# ifdef \ } identifier new-line \opt{group}\br ++ \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{bnf} + +@@ -79,21 +79,21 @@ + elif-group \opt{elif-groups} + \end{bnf} + +-\begin{bnf} ++\begin{bnf}\obeyspaces + \nontermdef{elif-group}\br +- \terminal{\# elif \ \ \ } constant-expression new-line \opt{group}\br ++ \terminal{\# elif } constant-expression new-line \opt{group}\br + \terminal{\# elifdef } identifier new-line \opt{group}\br + \terminal{\# elifndef} identifier new-line \opt{group} + \end{bnf} + +-\begin{bnf} ++\begin{bnf}\obeyspaces + \nontermdef{else-group}\br +- \terminal{\# else \ \ } new-line \opt{group} ++ \terminal{\# else } new-line \opt{group} + \end{bnf} + +-\begin{bnf} ++\begin{bnf}\obeyspaces + \nontermdef{endif-line}\br +- \terminal{\# endif \ } new-line ++ \terminal{\# endif } new-line + \end{bnf} + + \begin{bnf} +@@ -507,11 +507,11 @@ shall be in the lexical form of a \link{token}{lex.token}. + + \pnum + Preprocessing directives of the forms +-\begin{ncsimplebnf} ++\begin{ncsimplebnf}\obeyspaces + \indextext{\idxcode{\#if}}% +-\terminal{\# if \ \ \ \ } constant-expression new-line \opt{group}\br ++\terminal{\# if } constant-expression new-line \opt{group}\br + \indextext{\idxcode{\#elif}}% +-\terminal{\# elif \ \ } constant-expression new-line \opt{group} ++\terminal{\# elif } constant-expression new-line \opt{group} + \end{ncsimplebnf} + check whether the controlling constant expression evaluates to nonzero. + +@@ -584,10 +584,10 @@ is subjected to integral promotion before processing continues. + + \pnum + Preprocessing directives of the forms +-\begin{ncsimplebnf} +-\terminal{\# ifdef \ \ } identifier new-line \opt{group}\br ++\begin{ncsimplebnf}\obeyspaces ++\terminal{\# ifdef } identifier new-line \opt{group}\br + \indextext{\idxcode{\#ifdef}}% +-\terminal{\# ifndef \ } identifier new-line \opt{group}\br ++\terminal{\# ifndef } identifier new-line \opt{group}\br + \indextext{\idxcode{\#ifndef}}% + \terminal{\# elifdef } identifier new-line \opt{group}\br + \indextext{\idxcode{\#elifdef}}% +-- +2.43.0 + diff --git a/lastbuild.sig b/lastbuild.sig index b02fc3c1d6..2fc2ecf9a5 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ htmlgen abf1ef0ad7a82cac8c331527b3dd80db107c5217 -draft 896196c8c08ed834ef876c29c1182510da9c1a1c -954a02d6e4acebcf5580b47e39b2a8dc9310dc0d htmlgen.patch +draft 2d59c792e2a0228e77a0316d39bde9e51f31d146 +034ef86a0024868112056428c8099c2546219485 htmlgen.patch From 4de617adb50041c65694e87131e96464dd933f71 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Sat, 22 Mar 2025 22:21:23 -0500 Subject: [PATCH 08/36] Update --- gh-pages | 2 +- htmlgen.patch | 20 ++++++++++---------- lastbuild.sig | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/gh-pages b/gh-pages index 189f03c846..c9cdabb9ec 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 189f03c8465b48e74d67d85d97a11ed940076c9c +Subproject commit c9cdabb9ec936624e0dd7b7721742c6370bfbdb5 diff --git a/htmlgen.patch b/htmlgen.patch index f1c06362ef..6d50526a21 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -8638,7 +8638,7 @@ index 5b236c6e..320ed00a 100644 2.43.0 -From 92f545e2d4c89fae3ff7947d3bfd2d68a8797d0c Mon Sep 17 00:00:00 2001 +From 1c9cfd39bf12e6aace960ae594cbced7c22f6693 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 Subject: [PATCH 10/14] Use cxxdraft-htmlgen macros more. @@ -9820,7 +9820,7 @@ index a0c2615e..26449bc4 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index d5f690b6..d845f0e5 100644 +index d5f690b6..4f9a1d9c 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -94,12 +94,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -10184,13 +10184,13 @@ index d5f690b6..d845f0e5 100644 + constexpr bool @\libglobal{is_nothrow_destructible_v}@ = @\libglobalref{is_nothrow_destructible}@::value; template - constexpr bool @\libglobal{is_nothrow_relocatable_v}@ = is_nothrow_relocatable::value; -+ constexpr bool @\libglobal{is_nothrow_relocatable_v}@ = @\libglobalref{is_nothrow_relocatable}@::value; ++ constexpr bool @\libglobal{is_nothrow_relocatable_v}@ = @\libglobalref{is_nothrow_relocatable}@::value; template - constexpr bool @\libglobal{is_implicit_lifetime_v}@ = is_implicit_lifetime::value; -+ constexpr bool @\libglobal{is_implicit_lifetime_v}@ = @\libglobalref{is_implicit_lifetime}@::value; ++ constexpr bool @\libglobal{is_implicit_lifetime_v}@ = @\libglobalref{is_implicit_lifetime}@::value; template - constexpr bool @\libglobal{is_replaceable_v}@ = is_replaceable::value; -+ constexpr bool @\libglobal{is_replaceable_v}@ = @\libglobalref{is_replaceable}@::value; ++ constexpr bool @\libglobal{is_replaceable_v}@ = @\libglobalref{is_replaceable}@::value; template - constexpr bool @\libglobal{has_virtual_destructor_v}@ = has_virtual_destructor::value; + constexpr bool @\libglobal{has_virtual_destructor_v}@ = @\libglobalref{has_virtual_destructor}@::value; @@ -11769,7 +11769,7 @@ index a6b9d7f9..440bd426 100644 2.43.0 -From 637ba0f9e178ca79bb556f80e7b38837fd948b54 Mon Sep 17 00:00:00 2001 +From e8449aa9afe52c8f978a1a49ef12643f5f0efd60 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 Subject: [PATCH 11/14] Remove awkward \linebreaks. @@ -12124,7 +12124,7 @@ index 26449bc4..1977f519 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index d845f0e5..df25131c 100644 +index 4f9a1d9c..938b1101 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -2177,7 +2177,7 @@ present as follows: @@ -12356,7 +12356,7 @@ index 440bd426..20875194 100644 2.43.0 -From a782b44a877e8ecddbcccfc62a20c4f9e698c3ae Mon Sep 17 00:00:00 2001 +From f8467ccecf3b7b9eba3baa2f73be874be7365886 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 13:48:14 +0200 Subject: [PATCH 12/14] Avoid `for\-ward`. @@ -12552,7 +12552,7 @@ index 20875194..3fcce1a2 100644 2.43.0 -From d63592a313e697a5121cbddaa4d30f5521db42c6 Mon Sep 17 00:00:00 2001 +From 5c97ef6c7393b74c677bab93b9a4c9167623c855 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Sat, 22 Mar 2025 22:15:11 -0500 Subject: [PATCH 13/14] Revert "[std, macros] Use "environ" for grammar @@ -12707,7 +12707,7 @@ index 0170e314..fea8f0a3 100644 2.43.0 -From 6de66f7e54e9d2ac1bcbf8812a16d7f1ef22fc0a Mon Sep 17 00:00:00 2001 +From f182fc2b22a287397aa584ee41c4fc37b732c235 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Sat, 22 Mar 2025 22:15:47 -0500 Subject: [PATCH 14/14] Revert "[various] Remove \obeyspaces, and spell out diff --git a/lastbuild.sig b/lastbuild.sig index 2fc2ecf9a5..ecdb1c39fe 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ htmlgen abf1ef0ad7a82cac8c331527b3dd80db107c5217 draft 2d59c792e2a0228e77a0316d39bde9e51f31d146 -034ef86a0024868112056428c8099c2546219485 htmlgen.patch +b36233da26f64d1e7d0fae8b545ec3dcbc1a2722 htmlgen.patch From a97b9c9404ec4e615fea35f6fbac6493f7580030 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Sun, 23 Mar 2025 08:19:55 -0500 Subject: [PATCH 09/36] Update --- cxxdraft-htmlgen | 2 +- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 699 ++++++++++------------------------------------- lastbuild.sig | 6 +- 5 files changed, 154 insertions(+), 557 deletions(-) diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen index abf1ef0ad7..0265b0e6fb 160000 --- a/cxxdraft-htmlgen +++ b/cxxdraft-htmlgen @@ -1 +1 @@ -Subproject commit abf1ef0ad7a82cac8c331527b3dd80db107c5217 +Subproject commit 0265b0e6fb31734944543be5483e1ea77ab0ee7a diff --git a/draft b/draft index 2d59c792e2..9b8a5e5175 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 2d59c792e2a0228e77a0316d39bde9e51f31d146 +Subproject commit 9b8a5e51752efe9edd7a447e96ffab0f3313accc diff --git a/gh-pages b/gh-pages index c9cdabb9ec..3de49ca35c 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit c9cdabb9ec936624e0dd7b7721742c6370bfbdb5 +Subproject commit 3de49ca35c1f0cd41bd55f2a61689ec4f571d02f diff --git a/htmlgen.patch b/htmlgen.patch index 6d50526a21..8da6b10bbb 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,15 +1,15 @@ -From d84bd8c6f3a71b7c7eeae36c6dc29680a0a24c24 Mon Sep 17 00:00:00 2001 +From 635a7d65806aa2bfe2909cfe5ac36c632393f0f8 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sat, 7 Jan 2017 01:59:05 +0100 -Subject: [PATCH 01/14] [rand.req.eng] Omit superfluous dollar-math wrapping +Subject: [PATCH 01/12] [rand.req.eng] Omit superfluous dollar-math wrapping inside \bigoh. [rejected upstream: 1340] --- - source/numerics.tex | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) + source/numerics.tex | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/numerics.tex b/source/numerics.tex -index 9a73928f..2686fc9c 100644 +index 9a73928f..6ebb62b3 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -1928,19 +1928,19 @@ according to \ref{strings} and \ref{input.output}. @@ -35,7 +35,7 @@ index 9a73928f..2686fc9c 100644 \\ \rowsep \tcode{E(q)}% \begin{footnote} -@@ -2015,12 +2015,12 @@ according to \ref{strings} and \ref{input.output}. +@@ -2015,7 +2015,7 @@ according to \ref{strings} and \ref{input.output}. returns \tcode{true} if $S_x = S_y$; else returns \tcode{false}. @@ -44,38 +44,14 @@ index 9a73928f..2686fc9c 100644 \\ \rowsep \tcode{x != y}% & \tcode{bool} - & \tcode{!(x == y)}. -- & \bigoh{$\text{size of state}$} -+ & \bigoh{\text{size of state}} - \\ - \end{libreqtab4d} - -@@ -2066,7 +2066,7 @@ reference to the type of \tcode{os}. - - \pnum - \complexity --\bigoh{$\text{size of state}$} -+\bigoh{\text{size of state}} - \end{itemdescr} - - \begin{itemdecl} -@@ -2116,7 +2116,7 @@ reference to the type of \tcode{is}. - - \pnum - \complexity --\bigoh{$\text{size of state}$} -+\bigoh{\text{size of state}} - \end{itemdescr} - - \indextext{requirements!random number engine|)} -- 2.43.0 -From 35b7f5e3cd9b89f865726523c22bfa0671e28179 Mon Sep 17 00:00:00 2001 +From 5431ec740bd38a9372bfe1c1e6a3e89e509626d8 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 -Subject: [PATCH 02/14] Reduce excessive indentation of comments. Helps layout +Subject: [PATCH 02/12] Reduce excessive indentation of comments. Helps layout on smaller (e.g. half-screen) window sizes. --- @@ -149,22 +125,22 @@ index 7ffe8d6f..955ef6de 100644 2.43.0 -From ede5eb5c52632c9a3969de336d443c3aa58b5aa2 Mon Sep 17 00:00:00 2001 +From 00db679f02105d200a069e820955b1aa18f43314 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 -Subject: [PATCH 03/14] Use new link macros. +Subject: [PATCH 03/12] Use new link macros. --- source/algorithms.tex | 4 +- - source/basic.tex | 107 ++++++++------- + source/basic.tex | 99 +++++++------- source/classes.tex | 24 ++-- source/compatibility.tex | 4 +- source/concepts.tex | 12 +- - source/containers.tex | 50 +++---- + source/containers.tex | 50 ++++---- source/declarations.tex | 69 +++++----- source/diagnostics.tex | 6 +- source/exceptions.tex | 36 +++--- - source/expressions.tex | 272 ++++++++++++++++++++------------------- + source/expressions.tex | 270 ++++++++++++++++++++------------------- source/future.tex | 10 +- source/intro.tex | 19 +-- source/iostreams.tex | 74 +++++------ @@ -173,7 +149,7 @@ Subject: [PATCH 03/14] Use new link macros. source/lib-intro.tex | 73 +++++------ source/limits.tex | 2 +- source/numerics.tex | 60 ++++----- - source/overloading.tex | 64 ++++----- + source/overloading.tex | 64 +++++----- source/preprocessor.tex | 14 +- source/statements.tex | 30 ++--- source/strings.tex | 8 +- @@ -182,7 +158,7 @@ Subject: [PATCH 03/14] Use new link macros. source/threads.tex | 45 ++++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 618 insertions(+), 627 deletions(-) + 27 files changed, 613 insertions(+), 622 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index e6356720..54de54ac 100644 @@ -207,7 +183,7 @@ index e6356720..54de54ac 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index d118aa0e..64f93360 100644 +index d118aa0e..8c292d26 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -139,7 +139,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -442,7 +418,7 @@ index d118aa0e..64f93360 100644 \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -@@ -4350,21 +4349,21 @@ that would match a handler\iref{except.handle} of type +@@ -4350,9 +4349,9 @@ that would match a handler\iref{except.handle} of type \tcode{std::bad_alloc}\iref{bad.alloc}. \pnum @@ -455,22 +431,6 @@ index d118aa0e..64f93360 100644 a coroutine state\iref{dcl.fct.def.coroutine}, or called indirectly through calls to the 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 type \tcode{std::type_info}\iref{expr.typeid}, -+for objects with \link{static storage duration}{basic.stc.static}, -+for objects or references with \link{thread storage duration}{basic.stc.thread}, -+for objects of type \link{\tcode{std::type_info}}{expr.typeid}, - for an object of type \tcode{std::contracts::contract_violation} - when a contract violation occurs\iref{basic.contract.eval}, or --for an exception object\iref{except.throw}. -+for an \link{exception object}{except.throw}. - \end{note} - - \rSec4[basic.stc.dynamic.deallocation]{Deallocation functions} @@ -4848,9 +4847,9 @@ shall be destroyed before impose requirements on implementations regarding the representation of types. @@ -1317,7 +1277,7 @@ index 79684e4c..12cfcb8d 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index 955ef6de..b9a8a9ce 100644 +index 955ef6de..e162be35 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1491,15 +1451,6 @@ index 955ef6de..b9a8a9ce 100644 \end{example} \end{note} -@@ -1704,7 +1704,7 @@ an lvalue - if the entity is a - function, - variable, --structured binding\iref{dcl.struct.bind}, -+\link{structured binding}{dcl.struct.bind}, - result binding\iref{dcl.contract.res}, - data member, or - template parameter object; @@ -2056,8 +2056,8 @@ void abssort(float* x, unsigned N) { A \grammarterm{lambda-expression} is a prvalue whose result object is called the \defn{closure object}. @@ -2895,7 +2846,7 @@ index bdc1f3de..efd4eb00 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index 2686fc9c..9d12c5b1 100644 +index 6ebb62b3..74fb94cb 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -156,8 +156,8 @@ floating-point evaluation in constant expressions. @@ -4621,10 +4572,10 @@ index 54df0b8d..c8862145 100644 2.43.0 -From a18a8c5f8d114a9142b0308293e5175e55813981 Mon Sep 17 00:00:00 2001 +From 1ad2a1722321f5a8461c39a5a742306f15852897 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 -Subject: [PATCH 04/14] Fix dubious \defnx that has see{} in it, and remove +Subject: [PATCH 04/12] Fix dubious \defnx that has see{} in it, and remove range index entry with the same key. --- @@ -4674,10 +4625,10 @@ index 2224584d..b59dafd4 100644 2.43.0 -From 38f8dec965dd7f0c3a62805c4647fd5d7d38281a Mon Sep 17 00:00:00 2001 +From 4289053722982596196de2e2116ae8b01399a210 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:27:17 +0100 -Subject: [PATCH 05/14] Replace more non-codeblocks with outputblocks. +Subject: [PATCH 05/12] Replace more non-codeblocks with outputblocks. --- source/iostreams.tex | 12 ++++++------ @@ -4752,17 +4703,17 @@ index ee0bb9c2..5b236c6e 100644 2.43.0 -From 78c58264b983ab273ecfa257f9ed7f83796f2117 Mon Sep 17 00:00:00 2001 +From 54e247ca88712276cc3928527a3a3bb7deab6737 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 -Subject: [PATCH 06/14] Use cxxdraft-htmlgen macros to annotate non-C++ code +Subject: [PATCH 06/12] Use cxxdraft-htmlgen macros to annotate non-C++ code and literal fragments. --- source/exceptions.tex | 4 +- - source/lex.tex | 116 +++++----- + source/lex.tex | 176 +++++++------- source/time.tex | 518 +++++++++++++++++++++--------------------- - 3 files changed, 319 insertions(+), 319 deletions(-) + 3 files changed, 349 insertions(+), 349 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex index 12cfcb8d..190e0ac6 100644 @@ -4783,9 +4734,90 @@ index 12cfcb8d..190e0ac6 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index ac260145..b23f0e17 100644 +index ac260145..e8da4c1d 100644 --- a/source/lex.tex +++ b/source/lex.tex +@@ -293,43 +293,43 @@ the numerical value has no other meaning in this context. + \ucode{000c} & \uname{form feed} & \\ + \ucode{0020} & \uname{space} & \\ + \ucode{000a} & \uname{line feed} & new-line \\ +-\ucode{0021} & \uname{exclamation mark} & \tcode{!} \\ +-\ucode{0022} & \uname{quotation mark} & \tcode{"} \\ +-\ucode{0023} & \uname{number sign} & \tcode{\#} \\ +-\ucode{0024} & \uname{dollar sign} & \tcode{\$} \\ +-\ucode{0025} & \uname{percent sign} & \tcode{\%} \\ +-\ucode{0026} & \uname{ampersand} & \tcode{\&} \\ +-\ucode{0027} & \uname{apostrophe} & \tcode{'} \\ +-\ucode{0028} & \uname{left parenthesis} & \tcode{(} \\ +-\ucode{0029} & \uname{right parenthesis} & \tcode{)} \\ +-\ucode{002a} & \uname{asterisk} & \tcode{*} \\ +-\ucode{002b} & \uname{plus sign} & \tcode{+} \\ +-\ucode{002c} & \uname{comma} & \tcode{,} \\ +-\ucode{002d} & \uname{hyphen-minus} & \tcode{-} \\ +-\ucode{002e} & \uname{full stop} & \tcode{.} \\ +-\ucode{002f} & \uname{solidus} & \tcode{/} \\ +-\ucode{0030} .. \ucode{0039} & \uname{digit zero .. nine} & \tcode{0 1 2 3 4 5 6 7 8 9} \\ +-\ucode{003a} & \uname{colon} & \tcode{:} \\ +-\ucode{003b} & \uname{semicolon} & \tcode{;} \\ +-\ucode{003c} & \uname{less-than sign} & \tcode{<} \\ +-\ucode{003d} & \uname{equals sign} & \tcode{=} \\ +-\ucode{003e} & \uname{greater-than sign} & \tcode{>} \\ +-\ucode{003f} & \uname{question mark} & \tcode{?} \\ +-\ucode{0040} & \uname{commercial at} & \tcode{@} \\ +-\ucode{0041} .. \ucode{005a} & \uname{latin capital letter a .. z} & \tcode{A B C D E F G H I J K L M} \\ +- & & \tcode{N O P Q R S T U V W X Y Z} \\ +-\ucode{005b} & \uname{left square bracket} & \tcode{[} \\ +-\ucode{005c} & \uname{reverse solidus} & \tcode{\textbackslash} \\ +-\ucode{005d} & \uname{right square bracket} & \tcode{]} \\ +-\ucode{005e} & \uname{circumflex accent} & \tcode{\caret} \\ +-\ucode{005f} & \uname{low line} & \tcode{_} \\ +-\ucode{0060} & \uname{grave accent} & \tcode{\`} \\ +-\ucode{0061} .. \ucode{007a} & \uname{latin small letter a .. z} & \tcode{a b c d e f g h i j k l m} \\ +- & & \tcode{n o p q r s t u v w x y z} \\ +-\ucode{007b} & \uname{left curly bracket} & \tcode{\{} \\ +-\ucode{007c} & \uname{vertical line} & \tcode{|} \\ +-\ucode{007d} & \uname{right curly bracket} & \tcode{\}} \\ +-\ucode{007e} & \uname{tilde} & \tcode{\textasciitilde} \\ ++\ucode{0021} & \uname{exclamation mark} & \noncxxtcode{!} \\ ++\ucode{0022} & \uname{quotation mark} & \noncxxtcode{"} \\ ++\ucode{0023} & \uname{number sign} & \noncxxtcode{\#} \\ ++\ucode{0024} & \uname{dollar sign} & \noncxxtcode{\$} \\ ++\ucode{0025} & \uname{percent sign} & \noncxxtcode{\%} \\ ++\ucode{0026} & \uname{ampersand} & \noncxxtcode{\&} \\ ++\ucode{0027} & \uname{apostrophe} & \noncxxtcode{'} \\ ++\ucode{0028} & \uname{left parenthesis} & \noncxxtcode{(} \\ ++\ucode{0029} & \uname{right parenthesis} & \noncxxtcode{)} \\ ++\ucode{002a} & \uname{asterisk} & \noncxxtcode{*} \\ ++\ucode{002b} & \uname{plus sign} & \noncxxtcode{+} \\ ++\ucode{002c} & \uname{comma} & \noncxxtcode{,} \\ ++\ucode{002d} & \uname{hyphen-minus} & \noncxxtcode{-} \\ ++\ucode{002e} & \uname{full stop} & \noncxxtcode{.} \\ ++\ucode{002f} & \uname{solidus} & \noncxxtcode{/} \\ ++\ucode{0030} .. \ucode{0039} & \uname{digit zero .. nine} & \noncxxtcode{0 1 2 3 4 5 6 7 8 9} \\ ++\ucode{003a} & \uname{colon} & \noncxxtcode{:} \\ ++\ucode{003b} & \uname{semicolon} & \noncxxtcode{;} \\ ++\ucode{003c} & \uname{less-than sign} & \noncxxtcode{<} \\ ++\ucode{003d} & \uname{equals sign} & \noncxxtcode{=} \\ ++\ucode{003e} & \uname{greater-than sign} & \noncxxtcode{>} \\ ++\ucode{003f} & \uname{question mark} & \noncxxtcode{?} \\ ++\ucode{0040} & \uname{commercial at} & \noncxxtcode{@} \\ ++\ucode{0041} .. \ucode{005a} & \uname{latin capital letter a .. z} & \noncxxtcode{A B C D E F G H I J K L M} \\ ++ & & \noncxxtcode{N O P Q R S T U V W X Y Z} \\ ++\ucode{005b} & \uname{left square bracket} & \noncxxtcode{[} \\ ++\ucode{005c} & \uname{reverse solidus} & \noncxxtcode{\textbackslash} \\ ++\ucode{005d} & \uname{right square bracket} & \noncxxtcode{]} \\ ++\ucode{005e} & \uname{circumflex accent} & \noncxxtcode{\caret} \\ ++\ucode{005f} & \uname{low line} & \noncxxtcode{_} \\ ++\ucode{0060} & \uname{grave accent} & \noncxxtcode{\`} \\ ++\ucode{0061} .. \ucode{007a} & \uname{latin small letter a .. z} & \noncxxtcode{a b c d e f g h i j k l m} \\ ++ & & \noncxxtcode{n o p q r s t u v w x y z} \\ ++\ucode{007b} & \uname{left curly bracket} & \noncxxtcode{\{} \\ ++\ucode{007c} & \uname{vertical line} & \noncxxtcode{|} \\ ++\ucode{007d} & \uname{right curly bracket} & \noncxxtcode{\}} \\ ++\ucode{007e} & \uname{tilde} & \noncxxtcode{\textasciitilde} \\ + \end{floattable} + + \pnum @@ -569,7 +569,7 @@ given character: \item \indextext{literal!string!raw}% @@ -5037,27 +5069,6 @@ index ac260145..b23f0e17 100644 + \literalterminal{f l f16 f32 f64 f128 bf16 F L F16 F32 F64 F128 BF16} \end{bnf} - \pnum -@@ -1686,13 +1686,13 @@ are conditionally-supported. See \ref{basic.extended.fp}. - \topline - \lhdr{\grammarterm{floating-point-suffix}} & \rhdr{type} \\ \capsep - none & \keyword{double} \\ --\tcode{f} or \tcode{F} & \keyword{float} \\ --\tcode{l} or \tcode{L} & \keyword{long} \keyword{double} \\ --\tcode{f16} or \tcode{F16} & \tcode{std::float16_t} \\ --\tcode{f32} or \tcode{F32} & \tcode{std::float32_t} \\ --\tcode{f64} or \tcode{F64} & \tcode{std::float64_t} \\ --\tcode{f128} or \tcode{F128} & \tcode{std::float128_t} \\ --\tcode{bf16} or \tcode{BF16} & \tcode{std::bfloat16_t} \\ -+\literaltcode{f} or \literaltcode{F} & \keyword{float} \\ -+\literaltcode{l} or \literaltcode{L} & \keyword{long} \keyword{double} \\ -+\literaltcode{f16} or \literaltcode{F16} & \literaltcode{std::float16_t} \\ -+\literaltcode{f32} or \literaltcode{F32} & \literaltcode{std::float32_t} \\ -+\literaltcode{f64} or \literaltcode{F64} & \literaltcode{std::float64_t} \\ -+\literaltcode{f128} or \literaltcode{F128} & \literaltcode{std::float128_t} \\ -+\literaltcode{bf16} or \literaltcode{BF16} & \literaltcode{std::bfloat16_t} \\ - \end{simpletypetable} - \pnum @@ -1743,8 +1743,8 @@ chosen in an \impldef{choice of larger or smaller value of \indextext{literal!string}% @@ -6109,10 +6120,10 @@ index afb0df94..d7ebe6c6 100644 2.43.0 -From 387bbcd819e62886cb746abef0957ce60f4e3de7 Mon Sep 17 00:00:00 2001 +From 49b4c6368500f9f64bb0bf2357967c83e6ef9383 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 -Subject: [PATCH 07/14] Remove more inappropriate paragraph breaks. +Subject: [PATCH 07/12] Remove more inappropriate paragraph breaks. --- source/algorithms.tex | 4 ---- @@ -6181,7 +6192,7 @@ index 54de54ac..00711383 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index 64f93360..163a9a70 100644 +index 8c292d26..2f92fa3d 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -267,7 +267,6 @@ enum { up, down }; // defines \tcode{up} and \tcode{down} @@ -6722,7 +6733,7 @@ index 190e0ac6..cb9faf71 100644 \pnum diff --git a/source/expressions.tex b/source/expressions.tex -index b9a8a9ce..a9bc7fc4 100644 +index e162be35..082733da 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -462,7 +462,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -7193,7 +7204,7 @@ index 395e5bf6..1427e134 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lex.tex b/source/lex.tex -index b23f0e17..3dd73148 100644 +index e8da4c1d..f5294726 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -597,7 +597,6 @@ after the \tcode{include} or \tcode{import} preprocessing token in a @@ -7393,7 +7404,7 @@ index 61fa4ca2..d5f690b6 100644 \item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}. diff --git a/source/numerics.tex b/source/numerics.tex -index 9d12c5b1..398d125b 100644 +index 74fb94cb..3e884c1e 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -605,7 +605,6 @@ template constexpr complex operator+(const complex& lhs); @@ -7636,7 +7647,7 @@ index 1118dbca..b54d76fc 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index f7c84b51..395a7de1 100644 +index fdeae9ef..f1523bb5 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -651,7 +651,6 @@ object\iref{customization.point.object}. @@ -8453,10 +8464,10 @@ index c8862145..a6b9d7f9 100644 2.43.0 -From 2ff2442a31a0abab0da89f7dae6fcc9a927ecadd Mon Sep 17 00:00:00 2001 +From 3bd232d9d24164296e49c88a6e0a905b6df734c3 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 -Subject: [PATCH 08/14] Use monospace font for code in figures. +Subject: [PATCH 08/12] Use monospace font for code in figures. --- source/assets/figdag.dot | 8 ++++---- @@ -8600,10 +8611,10 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From caf22378e0967e1d2b000cf13a9f3aaf3e44cd0b Mon Sep 17 00:00:00 2001 +From 1641c27120171de9fabc760a404b2b018621adb2 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 -Subject: [PATCH 09/14] [uaxid] Mark code that's not to be highlighted. +Subject: [PATCH 09/12] [uaxid] Mark code that's not to be highlighted. --- source/uax31.tex | 8 ++++---- @@ -8638,13 +8649,13 @@ index 5b236c6e..320ed00a 100644 2.43.0 -From 1c9cfd39bf12e6aace960ae594cbced7c22f6693 Mon Sep 17 00:00:00 2001 +From 21ff22b330eacac74370174cdf8e9c91ba324077 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 -Subject: [PATCH 10/14] Use cxxdraft-htmlgen macros more. +Subject: [PATCH 10/12] Use cxxdraft-htmlgen macros more. --- - source/algorithms.tex | 194 ++++++++++++------------- + source/algorithms.tex | 194 +++++++++++++------------- source/concepts.tex | 4 +- source/diagnostics.tex | 18 ++- source/exec.tex | 18 +-- @@ -8652,14 +8663,14 @@ Subject: [PATCH 10/14] Use cxxdraft-htmlgen macros more. source/iostreams.tex | 28 ++-- source/lib-intro.tex | 28 ++-- source/memory.tex | 46 +++--- - source/meta.tex | 313 ++++++++++++++++++++--------------------- + source/meta.tex | 310 ++++++++++++++++++++--------------------- source/numerics.tex | 38 ++--- source/strings.tex | 10 +- source/support.tex | 14 +- source/threads.tex | 112 +++++++-------- source/time.tex | 66 ++++----- source/utilities.tex | 138 +++++++++--------- - 15 files changed, 514 insertions(+), 523 deletions(-) + 15 files changed, 513 insertions(+), 521 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index 00711383..3b19eb71 100644 @@ -9820,7 +9831,7 @@ index a0c2615e..26449bc4 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index d5f690b6..4f9a1d9c 100644 +index d5f690b6..14c7341b 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -94,12 +94,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -10300,18 +10311,7 @@ index d5f690b6..4f9a1d9c 100644 \tcode{T} is an integral type\iref{basic.fundamental} & \\ \rowsep \indexlibraryglobal{is_floating_point}% \tcode{template}\br -@@ -887,9 +884,8 @@ the cv-qualification is subject to adjustment\iref{expr.type}. - \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 - --\indexlibraryglobal{is_final}% - \tcode{template}\br -- \tcode{struct is_final;} & -+ \tcode{struct \libglobal{is_final};} & - \tcode{T} is a class type marked with the \grammarterm{class-property-specifier} - \tcode{final}\iref{class.pre}. - \begin{tailnote} -@@ -899,9 +895,8 @@ A union is a class type that +@@ -899,9 +896,8 @@ A union is a class type that & If \tcode{T} is a class type, \tcode{T} shall be a complete type. \\ \rowsep @@ -10322,7 +10322,7 @@ index d5f690b6..4f9a1d9c 100644 \tcode{T} is an aggregate type\iref{dcl.init.aggr} & \tcode{T} shall be an array type, a complete type, or \cv~\keyword{void}. \\ \rowsep -@@ -912,16 +907,14 @@ A union is a class type that +@@ -912,16 +908,14 @@ A union is a class type that \tcode{T(-1) < T(0)}; otherwise, \tcode{false} & \\ \rowsep @@ -10341,7 +10341,7 @@ index d5f690b6..4f9a1d9c 100644 \tcode{T} is an array type of known bound\iref{dcl.array} & \\ \rowsep -@@ -1425,7 +1418,7 @@ may be used to query properties of types at compile time. +@@ -1425,7 +1419,7 @@ may be used to query properties of types at compile time. \end{libreqtab2a} \pnum @@ -10350,7 +10350,7 @@ index d5f690b6..4f9a1d9c 100644 base characteristic of \tcode{integral_constant}. \pnum -@@ -1461,7 +1454,7 @@ may be used to query relationships between types at compile time. +@@ -1461,7 +1455,7 @@ may be used to query relationships between types at compile time. \pnum Each of these templates shall be a @@ -10359,7 +10359,7 @@ index d5f690b6..4f9a1d9c 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is true, otherwise \tcode{false_type}. -@@ -1475,7 +1468,7 @@ with a base characteristic of +@@ -1475,7 +1469,7 @@ with a base characteristic of \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead \tcode{template}\br @@ -10368,7 +10368,7 @@ index d5f690b6..4f9a1d9c 100644 \tcode{T} and \tcode{U} name the same type with the same cv-qualifications & \\ \rowsep \indexlibraryglobal{is_base_of}% -@@ -1655,7 +1648,7 @@ type to another following some predefined rule. +@@ -1655,7 +1649,7 @@ type to another following some predefined rule. \pnum Each of the templates in \ref{meta.trans} shall be a @@ -10377,7 +10377,7 @@ index d5f690b6..4f9a1d9c 100644 \rSec3[meta.trans.cv]{Const-volatile modifications} -@@ -1936,16 +1929,16 @@ perform other modifications of a type. +@@ -1936,16 +1930,16 @@ perform other modifications of a type. \tcode{template\br struct \libglobal{remove_cvref};} & The member typedef \tcode{type} denotes @@ -10399,7 +10399,7 @@ index d5f690b6..4f9a1d9c 100644 \begin{tailnote} This behavior is similar to the lvalue-to-rvalue\iref{conv.lval}, array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} -@@ -2025,7 +2018,7 @@ argument passing. +@@ -2025,7 +2019,7 @@ argument passing. \tcode{template} \tcode{struct \libglobal{unwrap_reference};} & If \tcode{T} is @@ -10408,7 +10408,7 @@ index d5f690b6..4f9a1d9c 100644 the member typedef \tcode{type} of \tcode{unwrap_reference} denotes \tcode{X\&}, otherwise \tcode{type} denotes \tcode{T}. \\ \rowsep -@@ -2033,7 +2026,7 @@ argument passing. +@@ -2033,7 +2027,7 @@ argument passing. \tcode{template} \tcode{\libglobal{unwrap_ref_decay};} & The member typedef \tcode{type} of \tcode{unwrap_ref_decay} @@ -10417,7 +10417,7 @@ index d5f690b6..4f9a1d9c 100644 \end{libreqtab2a} \pnum -@@ -2051,7 +2044,7 @@ when the header \tcode{}\iref{functional.syn} is included. +@@ -2051,7 +2045,7 @@ when the header \tcode{}\iref{functional.syn} is included. Let: \begin{itemize} \item \tcode{\placeholdernc{CREF}(A)} be @@ -10426,7 +10426,7 @@ index d5f690b6..4f9a1d9c 100644 \item \tcode{\placeholdernc{XREF}(A)} denote a unary alias template \tcode{T} such that \tcode{T} denotes the same type as \tcode{U} with the addition of \tcode{A}'s cv and reference qualifiers, for a non-reference cv-unqualified -@@ -2076,15 +2069,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: +@@ -2076,15 +2070,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: \placeholdernc{COPYCV}(\brk{}Y, X) \&)} if that type exists and is a reference type. \item Otherwise, let \tcode{C} be @@ -10445,7 +10445,7 @@ index d5f690b6..4f9a1d9c 100644 \tcode{true}, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is \tcode{D}. \item Otherwise, if \tcode{A} is an lvalue reference and \tcode{B} is an rvalue reference, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is -@@ -2383,7 +2376,7 @@ template struct negation : @\seebelow@ { }; +@@ -2383,7 +2377,7 @@ template struct negation : @\seebelow@ { }; The class template \tcode{negation} forms the logical negation of its template type argument. The type \tcode{negation} @@ -10455,7 +10455,7 @@ index d5f690b6..4f9a1d9c 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index 398d125b..1ba59329 100644 +index 3e884c1e..a7a59c37 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul @@ -11769,10 +11769,10 @@ index a6b9d7f9..440bd426 100644 2.43.0 -From e8449aa9afe52c8f978a1a49ef12643f5f0efd60 Mon Sep 17 00:00:00 2001 +From d66f5c978bdedfb55a29134b9fee9fd9dbadf2ad Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 -Subject: [PATCH 11/14] Remove awkward \linebreaks. +Subject: [PATCH 11/12] Remove awkward \linebreaks. --- source/algorithms.tex | 2 +- @@ -12124,10 +12124,10 @@ index 26449bc4..1977f519 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index 4f9a1d9c..938b1101 100644 +index 14c7341b..614569d9 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -2177,7 +2177,7 @@ present as follows: +@@ -2178,7 +2178,7 @@ present as follows: \item Let \tcode{R} be \tcode{\placeholdernc{COMMON-REF}(T1, T2)}. If \tcode{T1} and \tcode{T2} are reference types, \tcode{R} is well-formed, and @@ -12137,7 +12137,7 @@ index 4f9a1d9c..938b1101 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index 1ba59329..c5d86c9e 100644 +index a7a59c37..7454cd9e 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -13781,7 +13781,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. @@ -12159,7 +12159,7 @@ index 1ba59329..c5d86c9e 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 395a7de1..deeedbad 100644 +index f1523bb5..97e4dc1f 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -3637,7 +3637,7 @@ constexpr explicit repeat_view(piecewise_construct_t, @@ -12356,10 +12356,10 @@ index 440bd426..20875194 100644 2.43.0 -From f8467ccecf3b7b9eba3baa2f73be874be7365886 Mon Sep 17 00:00:00 2001 +From 5ac48a40d0dcf6812545ed3b786d5416ad5361de Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 13:48:14 +0200 -Subject: [PATCH 12/14] Avoid `for\-ward`. +Subject: [PATCH 12/12] Avoid `for\-ward`. Because the 'for' gets highlighted as a keyword. --- @@ -12456,7 +12456,7 @@ index 9115aaba..7f982f0d 100644 constructed with \tcode{std::\brk{}move(k)}, \tcode{std::forward(obj)}. diff --git a/source/ranges.tex b/source/ranges.tex -index deeedbad..57713966 100644 +index 97e4dc1f..34f51c49 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -6816,7 +6816,7 @@ namespace std::ranges { @@ -12551,406 +12551,3 @@ index 20875194..3fcce1a2 100644 -- 2.43.0 - -From 5c97ef6c7393b74c677bab93b9a4c9167623c855 Mon Sep 17 00:00:00 2001 -From: timsong-cpp -Date: Sat, 22 Mar 2025 22:15:11 -0500 -Subject: [PATCH 13/14] Revert "[std, macros] Use "environ" for grammar - extraction." - -This reverts commit 561a43b6730a360ae786b613e276017717f222fa. ---- - .github/workflows/check.yml | 2 +- - source/grammar.tex | 2 +- - source/macros.tex | 37 +++++++++++++++++-------------------- - source/std.tex | 9 +-------- - 4 files changed, 20 insertions(+), 30 deletions(-) - -diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml -index e6fa6d72..0589ad97 100644 ---- a/.github/workflows/check.yml -+++ b/.github/workflows/check.yml -@@ -52,7 +52,7 @@ jobs: - eval "$(/usr/libexec/path_helper)" - echo "PATH=${PATH}" >> ${GITHUB_ENV} - sudo tlmgr update --self -- sudo tlmgr install latexmk isodate substr relsize ulem fixme rsfs environ layouts enumitem l3packages l3kernel imakeidx splitindex xstring -+ sudo tlmgr install latexmk isodate substr relsize ulem fixme rsfs extract layouts enumitem l3packages l3kernel imakeidx splitindex xstring - - - name: make (Linux) - if: matrix.cfg.os == 'ubuntu-24.04' -diff --git a/source/grammar.tex b/source/grammar.tex -index db27a2f5..8501d394 100644 ---- a/source/grammar.tex -+++ b/source/grammar.tex -@@ -58,4 +58,4 @@ template-name:\br - identifier - \end{ncbnf} - --\input{std-gram.ext} -+\FlushAndPrintGrammar -diff --git a/source/macros.tex b/source/macros.tex -index ec88684f..06d5bc05 100644 ---- a/source/macros.tex -+++ b/source/macros.tex -@@ -39,18 +39,20 @@ - \newenvironment{addedblock}{\color{addclr}}{\color{black}} - \newenvironment{removedblock}{\color{remclr}}{\color{black}} - --%%------------------------------------------------------------- -+%%-------------------------------------------------- - %% Grammar extraction. --%% Assumes that the output file \gramout is managed externally. --%%------------------------------------------------------------- -+%%-------------------------------------------------- -+\def\gramSec[#1]#2{} -+ - \makeatletter --\newcommand{\gramWrite}[1]{\protected@write\gramout{}{#1}} --\newcommand{\meaningbody}[1]{\expandafter\strip@prefix\meaning#1} -+\newcommand{\FlushAndPrintGrammar}{% -+\immediate\closeout\XTR@out% -+\immediate\openout\XTR@out=std-gram-dummy.tmp% -+\def\gramSec[##1]##2{\rSec1[##1]{##2}}% -+\input{std-gram.ext}% -+} - \makeatother - --\newcommand{\gramSec}[2][]{\gramWrite{% --\string\rSec1\string[\string#1\string]\string{\string#2\string}}} -- - %%-------------------------------------------------- - % Escaping for index entries. Replaces ! with "! throughout its argument. - %%-------------------------------------------------- -@@ -699,12 +701,7 @@ - \nonfrenchspacing - } - --% "ncbnf" is the non-copied "base" versions of the bnf environment; --% instances of the full "bnf" environment is copied to the grammar --% extraction file. --% (Similarly for "ncsimplebnf", though in fact we never extract any --% hypothetical "simplebnf" environments.) --\newenvironment{ncsimplebnf} -+\newenvironment{simplebnf} - { - \begin{bnfbase} - \BnfNontermshape -@@ -715,7 +712,7 @@ - \end{bnfbase} - } - --\newenvironment{ncbnf} -+\newenvironment{bnf} - { - \begin{bnfbase} - \begin{bnflist} -@@ -727,7 +724,6 @@ - \end{bnfbase} - } - --% The regex grammar is never copied. - \newenvironment{ncrebnf} - { - \begin{bnfbase} -@@ -741,10 +737,11 @@ - \end{bnfbase} - } - --\NewEnviron{bnf}{\begin{ncbnf}% --\BODY% --\gramWrite{\string\begin{ncbnf}\meaningbody\BODY\string\end{ncbnf}}% --\end{ncbnf}}{} -+% non-copied versions of bnf environments -+\let\ncsimplebnf\simplebnf -+\let\endncsimplebnf\endsimplebnf -+\let\ncbnf\bnf -+\let\endncbnf\endbnf - - %%-------------------------------------------------- - %% Environment for imported graphics -diff --git a/source/std.tex b/source/std.tex -index 0170e314..fea8f0a3 100644 ---- a/source/std.tex -+++ b/source/std.tex -@@ -46,7 +46,7 @@ - urlcolor=blue, % ISO/IEC Directives, Part 2, section 6.5 - plainpages=false} - \usepackage{memhfixc} % fix interactions between hyperref and memoir --\usepackage{environ} -+\usepackage[active,header=false,handles=false,copydocumentclass=false,generate=std-gram.ext,extract-cmdline={gramSec},extract-env={bnf,simplebnf}]{extract} % Grammar extraction - \usepackage{expl3} - \usepackage{xparse} - \usepackage{xstring} -@@ -57,10 +57,6 @@ - - \renewcommand\RSsmallest{5.5pt} % smallest font size for relsize - --% Begin grammar extraction... --\newwrite\gramout --\immediate\openout\gramout=std-gram.ext -- - \input{layout} - \input{styles} - \input{macros} -@@ -158,9 +154,6 @@ - - \numberwithin{table}{chapter} - --% ... end grammar extraction. --\immediate\closeout\gramout -- - \include{grammar} - \include{limits} - \include{compatibility} --- -2.43.0 - - -From f182fc2b22a287397aa584ee41c4fc37b732c235 Mon Sep 17 00:00:00 2001 -From: timsong-cpp -Date: Sat, 22 Mar 2025 22:15:47 -0500 -Subject: [PATCH 14/14] Revert "[various] Remove \obeyspaces, and spell out - spaces explicitly." - -This reverts commit f40dd889bf374be908c7a343519ba2bd611e99e1. ---- - source/declarations.tex | 4 ++-- - source/expressions.tex | 2 +- - source/lex.tex | 26 +++++++++++++------------- - source/overloading.tex | 20 ++++++++++---------- - source/preprocessor.tex | 40 ++++++++++++++++++++-------------------- - 5 files changed, 46 insertions(+), 46 deletions(-) - -diff --git a/source/declarations.tex b/source/declarations.tex -index ec866e68..8f61cb27 100644 ---- a/source/declarations.tex -+++ b/source/declarations.tex -@@ -2427,7 +2427,7 @@ Declarators have the syntax - \end{bnf} - - \begin{bnf} --\microtypesetup{protrusion=false} -+\microtypesetup{protrusion=false}\obeyspaces - \nontermdef{ptr-operator}\br - \terminal{*} \opt{attribute-specifier-seq} \opt{cv-qualifier-seq}\br - \terminal{\&} \opt{attribute-specifier-seq}\br -@@ -9262,7 +9262,7 @@ such as types, variables, names, contract assertions, blocks, or translation uni - \end{bnf} - - \begin{bnf} --\microtypesetup{protrusion=false} -+\microtypesetup{protrusion=false}\obeyspaces - \nontermdef{balanced-token}\br - \terminal{(} \opt{balanced-token-seq} \terminal{)}\br - \terminal{[} \opt{balanced-token-seq} \terminal{]}\br -diff --git a/source/expressions.tex b/source/expressions.tex -index a9bc7fc4..cd1a4dc4 100644 ---- a/source/expressions.tex -+++ b/source/expressions.tex -@@ -3129,7 +3129,7 @@ or by checking properties of types and expressions. - \end{bnf} - - \begin{bnf} --\microtypesetup{protrusion=false} -+\microtypesetup{protrusion=false}\obeyspaces - \nontermdef{requirement-body}\br - \terminal{\{} requirement-seq \terminal{\}} - \end{bnf} -diff --git a/source/lex.tex b/source/lex.tex -index 3dd73148..42e43fca 100644 ---- a/source/lex.tex -+++ b/source/lex.tex -@@ -634,7 +634,7 @@ violates a constraint on increment operators, even though the parse - - \indextext{header!name|(}% - \begin{bnf} --\microtypesetup{protrusion=false} -+\microtypesetup{protrusion=false}\obeyspaces - \nontermdef{header-name}\br - \terminal{<} h-char-sequence \terminal{>}\br - \terminal{"} q-char-sequence \terminal{"} -@@ -734,23 +734,23 @@ are converted into tokens for operators and punctuators: - - \begin{bnf} - %% Ed. note: character protrusion would misalign various operators. --\microtypesetup{protrusion=false} -+\microtypesetup{protrusion=false}\obeyspaces - \nontermdef{preprocessing-operator} \textnormal{one of}\br -- \terminal{\# \ \ \ \ \ \ \ \#\# \ \ \ \ \ \ \%: \ \ \ \ \ \ \%:\%:} -+ \terminal{\# \#\# \%: \%:\%:} - \end{bnf} - - \begin{bnf} --\microtypesetup{protrusion=false} -+\microtypesetup{protrusion=false}\obeyspaces - \nontermdef{operator-or-punctuator} \textnormal{one of}\br -- \terminal{\{ \ \ \ \ \ \ \ \} \ \ \ \ \ \ \ [ \ \ \ \ \ \ \ ] \ \ \ \ \ \ \ ( \ \ \ \ \ \ \ )}\br -- \terminal{<\% \ \ \ \ \ \ \%> \ \ \ \ \ \ <: \ \ \ \ \ \ :> \ \ \ \ \ \ ; \ \ \ \ \ \ \ : \ \ \ \ \ \ \ ...}\br -- \terminal{? \ \ \ \ \ \ \ :: \ \ \ \ \ \ . \ \ \ \ \ \ \ .* \ \ \ \ \ \ -> \ \ \ \ \ \ ->* \ \ \ \ \ \~}\br -- \terminal{! \ \ \ \ \ \ \ + \ \ \ \ \ \ \ - \ \ \ \ \ \ \ * \ \ \ \ \ \ \ / \ \ \ \ \ \ \ \% \ \ \ \ \ \ \ \caret{} \ \ \ \ \ \ \ \& \ \ \ \ \ \ \ |}\br -- \terminal{= \ \ \ \ \ \ \ += \ \ \ \ \ \ -= \ \ \ \ \ \ *= \ \ \ \ \ \ /= \ \ \ \ \ \ \%= \ \ \ \ \ \ \caret{}= \ \ \ \ \ \ \&= \ \ \ \ \ \ |=}\br -- \terminal{== \ \ \ \ \ \ != \ \ \ \ \ \ < \ \ \ \ \ \ \ > \ \ \ \ \ \ \ <= \ \ \ \ \ \ >= \ \ \ \ \ \ <=> \ \ \ \ \ \&\& \ \ \ \ \ \ ||}\br -- \terminal{<< \ \ \ \ \ \ >> \ \ \ \ \ \ <<= \ \ \ \ \ >>= \ \ \ \ \ ++ \ \ \ \ \ \ -- \ \ \ \ \ \ ,}\br -- \terminal{\keyword{and} \ \ \ \ \ \keyword{or} \ \ \ \ \ \ \keyword{xor} \ \ \ \ \ \keyword{not} \ \ \ \ \ \keyword{bitand} \ \ \keyword{bitor} \ \ \ \keyword{compl}}\br -- \terminal{\keyword{and_eq} \ \ \keyword{or_eq} \ \ \ \keyword{xor_eq} \ \ \keyword{not_eq}} -+ \terminal{\{ \} [ ] ( )}\br -+ \terminal{<\% \%> <: :> ; : ...}\br -+ \terminal{? :: . .* -> ->* \~}\br -+ \terminal{! + - * / \% \caret{} \& |}\br -+ \terminal{= += -= *= /= \%= \caret{}= \&= |=}\br -+ \terminal{== != < > <= >= <=> \&\& ||}\br -+ \terminal{<< >> <<= >>= ++ -- ,}\br -+ \terminal{\keyword{and} \keyword{or} \keyword{xor} \keyword{not} \keyword{bitand} \keyword{bitor} \keyword{compl}}\br -+ \terminal{\keyword{and_eq} \keyword{or_eq} \keyword{xor_eq} \keyword{not_eq}} - \end{bnf} - - Each \grammarterm{operator-or-punctuator} is converted to a single token -diff --git a/source/overloading.tex b/source/overloading.tex -index d6a68599..8367c4f4 100644 ---- a/source/overloading.tex -+++ b/source/overloading.tex -@@ -3297,13 +3297,13 @@ the operator named in its - - \begin{bnf} - %% Ed. note: character protrusion would misalign various operators. --\microtypesetup{protrusion=false} -+\microtypesetup{protrusion=false}\obeyspaces - \nontermdef{operator} \textnormal{one of}\br -- \terminal{new \ \ \ \ \ delete \ \ new[] \ \ \ delete[] co_await (\rlap{\,)} \ \ \ \ \ \ \ [\rlap{\,]} \ \ \ \ \ \ \ -> \ \ \ \ \ \ ->*}\br -- \terminal{\~ \ \ \ \ \ \ \ ! \ \ \ \ \ \ \ + \ \ \ \ \ \ \ - \ \ \ \ \ \ \ * \ \ \ \ \ \ \ / \ \ \ \ \ \ \ \% \ \ \ \ \ \ \ \caret{} \ \ \ \ \ \ \ \&}\br -- \terminal{| \ \ \ \ \ \ \ = \ \ \ \ \ \ \ += \ \ \ \ \ \ -= \ \ \ \ \ \ *= \ \ \ \ \ \ /= \ \ \ \ \ \ \%= \ \ \ \ \ \ \caret{}= \ \ \ \ \ \ \&=}\br -- \terminal{|= \ \ \ \ \ \ == \ \ \ \ \ \ != \ \ \ \ \ \ < \ \ \ \ \ \ \ > \ \ \ \ \ \ \ <= \ \ \ \ \ \ >= \ \ \ \ \ \ <=> \ \ \ \ \ \&\&}\br -- \terminal{|| \ \ \ \ \ \ << \ \ \ \ \ \ >> \ \ \ \ \ \ <<= \ \ \ \ \ >>= \ \ \ \ \ ++ \ \ \ \ \ \ -- \ \ \ \ \ \ ,}\br -+ \terminal{new delete new[] delete[] co_await (\rlap{\,)} [\rlap{\,]} -> ->*}\br -+ \terminal{\~ ! + - * / \% \caret{} \&}\br -+ \terminal{| = += -= *= /= \%= \caret{}= \&=}\br -+ \terminal{|= == != < > <= >= <=> \&\&}\br -+ \terminal{|| << >> <<= >>= ++ -- ,}\br - \end{bnf} - \begin{note} - The operators -@@ -3321,8 +3321,8 @@ and \link{subscripting}{expr.sub}. - - \pnum - Both the unary and binary forms of --\begin{ncsimplebnf} --\terminal{+ \ \ \ \ \ - \ \ \ \ \ * \ \ \ \ \ \&} -+\begin{ncsimplebnf}\obeyspaces -+\terminal{+ - * \&} - \end{ncsimplebnf} - can be overloaded. - -@@ -3330,8 +3330,8 @@ can be overloaded. - \begin{note} - \indextext{restriction!operator overloading}% - The following operators cannot be overloaded: --\begin{ncsimplebnf} --\terminal{. \ \ \ \ \ .* \ \ \ \ :: \ \ \ \ ?:} -+\begin{ncsimplebnf}\obeyspaces -+\terminal{. .* :: ?:} - \end{ncsimplebnf} - nor can the preprocessing symbols - \tcode{\#}\iref{cpp.stringize} -diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index b54d76fc..ff3d1c06 100644 ---- a/source/preprocessor.tex -+++ b/source/preprocessor.tex -@@ -45,18 +45,18 @@ - \terminal{\#} conditionally-supported-directive - \end{bnf} - --\begin{bnf} -+\begin{bnf}\obeyspaces - \nontermdef{control-line}\br - \terminal{\# include} pp-tokens new-line\br - pp-import\br -- \terminal{\# embed \ } pp-tokens new-line\br -+ \terminal{\# embed } pp-tokens new-line\br - \terminal{\# define } identifier 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 \ } \opt{pp-tokens} new-line\br -+ \terminal{\# undef } identifier new-line\br -+ \terminal{\# line } pp-tokens new-line\br -+ \terminal{\# error } \opt{pp-tokens} new-line\br - \terminal{\# warning} \opt{pp-tokens} new-line\br - \terminal{\# pragma } \opt{pp-tokens} new-line\br - \terminal{\# }new-line -@@ -67,10 +67,10 @@ - if-group \opt{elif-groups} \opt{else-group} endif-line - \end{bnf} - --\begin{bnf} -+\begin{bnf}\obeyspaces - \nontermdef{if-group}\br -- \terminal{\# if \ \ \ \ } constant-expression new-line \opt{group}\br -- \terminal{\# ifdef \ } identifier new-line \opt{group}\br -+ \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{bnf} - -@@ -79,21 +79,21 @@ - elif-group \opt{elif-groups} - \end{bnf} - --\begin{bnf} -+\begin{bnf}\obeyspaces - \nontermdef{elif-group}\br -- \terminal{\# elif \ \ \ } constant-expression new-line \opt{group}\br -+ \terminal{\# elif } constant-expression new-line \opt{group}\br - \terminal{\# elifdef } identifier new-line \opt{group}\br - \terminal{\# elifndef} identifier new-line \opt{group} - \end{bnf} - --\begin{bnf} -+\begin{bnf}\obeyspaces - \nontermdef{else-group}\br -- \terminal{\# else \ \ } new-line \opt{group} -+ \terminal{\# else } new-line \opt{group} - \end{bnf} - --\begin{bnf} -+\begin{bnf}\obeyspaces - \nontermdef{endif-line}\br -- \terminal{\# endif \ } new-line -+ \terminal{\# endif } new-line - \end{bnf} - - \begin{bnf} -@@ -507,11 +507,11 @@ shall be in the lexical form of a \link{token}{lex.token}. - - \pnum - Preprocessing directives of the forms --\begin{ncsimplebnf} -+\begin{ncsimplebnf}\obeyspaces - \indextext{\idxcode{\#if}}% --\terminal{\# if \ \ \ \ } constant-expression new-line \opt{group}\br -+\terminal{\# if } constant-expression new-line \opt{group}\br - \indextext{\idxcode{\#elif}}% --\terminal{\# elif \ \ } constant-expression new-line \opt{group} -+\terminal{\# elif } constant-expression new-line \opt{group} - \end{ncsimplebnf} - check whether the controlling constant expression evaluates to nonzero. - -@@ -584,10 +584,10 @@ is subjected to integral promotion before processing continues. - - \pnum - Preprocessing directives of the forms --\begin{ncsimplebnf} --\terminal{\# ifdef \ \ } identifier new-line \opt{group}\br -+\begin{ncsimplebnf}\obeyspaces -+\terminal{\# ifdef } identifier new-line \opt{group}\br - \indextext{\idxcode{\#ifdef}}% --\terminal{\# ifndef \ } identifier new-line \opt{group}\br -+\terminal{\# ifndef } identifier new-line \opt{group}\br - \indextext{\idxcode{\#ifndef}}% - \terminal{\# elifdef } identifier new-line \opt{group}\br - \indextext{\idxcode{\#elifdef}}% --- -2.43.0 - diff --git a/lastbuild.sig b/lastbuild.sig index ecdb1c39fe..2f9afec363 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ -htmlgen abf1ef0ad7a82cac8c331527b3dd80db107c5217 -draft 2d59c792e2a0228e77a0316d39bde9e51f31d146 -b36233da26f64d1e7d0fae8b545ec3dcbc1a2722 htmlgen.patch +htmlgen 0265b0e6fb31734944543be5483e1ea77ab0ee7a +draft 9b8a5e51752efe9edd7a447e96ffab0f3313accc +cbadb4af863399b71d988f0a85a6b863521dcc53 htmlgen.patch From 0346abb45d216aafd11eba143d4d8e0d0981d6bd Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Sun, 23 Mar 2025 18:05:54 -0500 Subject: [PATCH 10/36] Update --- gh-pages | 2 +- htmlgen_code.patch | 25 +++++++++++++++++++++++++ lastbuild.sig | 3 ++- 3 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 htmlgen_code.patch diff --git a/gh-pages b/gh-pages index 3de49ca35c..ad958c3c36 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 3de49ca35c1f0cd41bd55f2a61689ec4f571d02f +Subproject commit ad958c3c3626db1c4fcab6b80797431c59387e26 diff --git a/htmlgen_code.patch b/htmlgen_code.patch new file mode 100644 index 0000000000..9714686058 --- /dev/null +++ b/htmlgen_code.patch @@ -0,0 +1,25 @@ +From 4f9bc8a594c4d24fdaba261a97567964911c1f6e Mon Sep 17 00:00:00 2001 +From: timsong-cpp +Date: Sun, 23 Mar 2025 18:03:20 -0500 +Subject: [PATCH] Highlight __has_embed + +--- + Render.hs | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Render.hs b/Render.hs +index c61d766..a2b4cde 100644 +--- a/Render.hs ++++ b/Render.hs +@@ -337,7 +337,7 @@ highlight ctx x + -- keywords + | (a, x') <- texSpan p x, a /= "" = (case () of + _ | a `elem` keywords -> spanTag "keyword" +- _ | a `elem` ["defined", "__has_include", "__has_cpp_attribute", "_Pragma"] -> spanTag "preprocessordirective" ++ _ | a `elem` ["defined", "__has_include", "__has_embed", "__has_cpp_attribute", "_Pragma"] -> spanTag "preprocessordirective" + _ | a `elem` ["nullptr", "true", "false"] -> spanTag "literal" + _ | otherwise -> id) (render (TeXRaw a) ctx) ++ highlight ctx x' + where p c = isAlphaNum c || c == '_' +-- +2.43.0 + diff --git a/lastbuild.sig b/lastbuild.sig index 2f9afec363..3a581c1864 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,4 @@ -htmlgen 0265b0e6fb31734944543be5483e1ea77ab0ee7a +htmlgen 4f9bc8a594c4d24fdaba261a97567964911c1f6e draft 9b8a5e51752efe9edd7a447e96ffab0f3313accc cbadb4af863399b71d988f0a85a6b863521dcc53 htmlgen.patch +ac9b8a2f76b84ebdc6c8dc1e9f8f86da89506ad7 htmlgen_code.patch From f45a9d7c15f9a22907f508c12cf82bf0c0046e7f Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Fri, 20 Jun 2025 21:25:41 +0100 Subject: [PATCH 11/36] Update --- cxxdraft-htmlgen | 2 +- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 1301 ++++++++++++++++++-------------------------- htmlgen_code.patch | 25 - lastbuild.sig | 7 +- 6 files changed, 527 insertions(+), 812 deletions(-) delete mode 100644 htmlgen_code.patch diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen index 0265b0e6fb..eee5307c45 160000 --- a/cxxdraft-htmlgen +++ b/cxxdraft-htmlgen @@ -1 +1 @@ -Subproject commit 0265b0e6fb31734944543be5483e1ea77ab0ee7a +Subproject commit eee5307c45c04761ef5c27956cbed742e08e5fb4 diff --git a/draft b/draft index 9b8a5e5175..3bce8f7f15 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 9b8a5e51752efe9edd7a447e96ffab0f3313accc +Subproject commit 3bce8f7f15164dc455240e53acce596eeba97d45 diff --git a/gh-pages b/gh-pages index ad958c3c36..cc03e47f5d 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit ad958c3c3626db1c4fcab6b80797431c59387e26 +Subproject commit cc03e47f5de9272ea164aa499d1b6551e2749ea0 diff --git a/htmlgen.patch b/htmlgen.patch index 8da6b10bbb..cf13c068eb 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,58 +1,8 @@ -From 635a7d65806aa2bfe2909cfe5ac36c632393f0f8 Mon Sep 17 00:00:00 2001 -From: Eelis van der Weegen -Date: Sat, 7 Jan 2017 01:59:05 +0100 -Subject: [PATCH 01/12] [rand.req.eng] Omit superfluous dollar-math wrapping - inside \bigoh. [rejected upstream: 1340] - ---- - source/numerics.tex | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/source/numerics.tex b/source/numerics.tex -index 9a73928f..6ebb62b3 100644 ---- a/source/numerics.tex -+++ b/source/numerics.tex -@@ -1928,19 +1928,19 @@ according to \ref{strings} and \ref{input.output}. - with the same initial state - as all other default-constructed engines - of type \tcode{E}. -- & \bigoh{$\text{size of state}$} -+ & \bigoh{\text{size of state}} - \\ \rowsep - \tcode{E(x)} - & - & Creates an engine - that compares equal to \tcode{x}. -- & \bigoh{$\text{size of state}$} -+ & \bigoh{\text{size of state}} - \\ \rowsep - \tcode{E(s)}% - & - & Creates an engine - with initial state determined by \tcode{s}. -- & \bigoh{$\text{size of state}$} -+ & \bigoh{\text{size of state}} - \\ \rowsep - \tcode{E(q)}% - \begin{footnote} -@@ -2015,7 +2015,7 @@ according to \ref{strings} and \ref{input.output}. - returns \tcode{true} - if $S_x = S_y$; - else returns \tcode{false}. -- & \bigoh{$\text{size of state}$} -+ & \bigoh{\text{size of state}} - \\ \rowsep - \tcode{x != y}% - & \tcode{bool} --- -2.43.0 - - -From 5431ec740bd38a9372bfe1c1e6a3e89e509626d8 Mon Sep 17 00:00:00 2001 +From b796196bfcc9d1fad2c27c22e55928b1e3571c27 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 -Subject: [PATCH 02/12] Reduce excessive indentation of comments. Helps layout - on smaller (e.g. half-screen) window sizes. +Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on + smaller (e.g. half-screen) window sizes. --- source/basic.tex | 26 +++++++++++++------------- @@ -60,7 +10,7 @@ Subject: [PATCH 02/12] Reduce excessive indentation of comments. Helps layout 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index 733d6699..d118aa0e 100644 +index 81781294..cc2fab73 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -296,7 +296,7 @@ Given @@ -72,7 +22,7 @@ index 733d6699..d118aa0e 100644 }; int main() { -@@ -2548,23 +2548,23 @@ namespace AB { +@@ -2549,23 +2549,23 @@ namespace AB { void h() { @@ -109,7 +59,7 @@ index 733d6699..d118aa0e 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 7ffe8d6f..955ef6de 100644 +index ebc26464..c6ff9d4a 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2846,7 +2846,7 @@ struct s2 { @@ -125,10 +75,10 @@ index 7ffe8d6f..955ef6de 100644 2.43.0 -From 00db679f02105d200a069e820955b1aa18f43314 Mon Sep 17 00:00:00 2001 +From a3ce21f5aadf27fcd426f4253c15b8752894f043 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 -Subject: [PATCH 03/12] Use new link macros. +Subject: [PATCH 2/9] Use new link macros. --- source/algorithms.tex | 4 +- @@ -142,7 +92,7 @@ Subject: [PATCH 03/12] Use new link macros. source/exceptions.tex | 36 +++--- source/expressions.tex | 270 ++++++++++++++++++++------------------- source/future.tex | 10 +- - source/intro.tex | 19 +-- + source/intro.tex | 14 +- source/iostreams.tex | 74 +++++------ source/iterators.tex | 8 +- source/lex.tex | 10 +- @@ -158,10 +108,10 @@ Subject: [PATCH 03/12] Use new link macros. source/threads.tex | 45 ++++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 613 insertions(+), 622 deletions(-) + 27 files changed, 610 insertions(+), 620 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index e6356720..54de54ac 100644 +index 3790bb78..84d18c8b 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -173,7 +123,7 @@ index e6356720..54de54ac 100644 \pnum The following subclauses describe components for -@@ -8109,7 +8109,7 @@ In either case, twice as many projections as comparisons. +@@ -8111,7 +8111,7 @@ In either case, twice as many projections as comparisons. \pnum \remarks @@ -183,7 +133,7 @@ index e6356720..54de54ac 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index d118aa0e..8c292d26 100644 +index cc2fab73..ed278134 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -139,7 +139,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -252,7 +202,7 @@ index d118aa0e..8c292d26 100644 contains the potential results of the right operand. \item Otherwise, the set is empty. \end{itemize} -@@ -541,8 +540,8 @@ implicitly-defined +@@ -542,8 +541,8 @@ implicitly-defined copy assignment or move assignment function for another class as specified in~\ref{class.copy.assign}. A constructor for a class is odr-used as specified @@ -263,7 +213,7 @@ index d118aa0e..8c292d26 100644 \pnum A local entity\iref{basic.pre} -@@ -614,7 +613,7 @@ void h() { +@@ -615,7 +614,7 @@ void h() { \pnum Every program shall contain at least one definition of every function or variable that is odr-used in that program @@ -272,7 +222,7 @@ index d118aa0e..8c292d26 100644 The definition can appear explicitly in the program, it can be found in the standard or a user-defined library, or (when appropriate) it is implicitly defined (see~\ref{class.default.ctor}, \ref{class.copy.ctor}, -@@ -662,9 +661,9 @@ The rules for declarations and expressions +@@ -663,9 +662,9 @@ The rules for declarations and expressions describe in which contexts complete class types are required. A class type \tcode{T} must be complete if \begin{itemize} @@ -285,7 +235,7 @@ index d118aa0e..8c292d26 100644 \item \tcode{T} is used as the allocated type or array element type in a \grammarterm{new-expression}\iref{expr.new}, or \item an lvalue-to-rvalue conversion is applied to -@@ -684,7 +683,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or +@@ -685,7 +684,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or \keyword{sizeof} operator\iref{expr.sizeof} is applied to an operand of type \tcode{T}, or \item a function with a return type or argument type of type \tcode{T} @@ -294,7 +244,7 @@ index d118aa0e..8c292d26 100644 \item a class with a base class of type \tcode{T} is defined\iref{class.derived}, or \item an lvalue of type \tcode{T} is assigned to\iref{expr.assign}, or -@@ -730,7 +729,7 @@ template specializations\iref{temp.spec.partial.match}, except that a name can r +@@ -731,7 +730,7 @@ template specializations\iref{temp.spec.partial.match}, except that a name can r a non-volatile const object with internal or no linkage if the object \begin{itemize} \item has the same literal type in all definitions of \tcode{D}, @@ -303,7 +253,7 @@ index d118aa0e..8c292d26 100644 \item is not odr-used in any definition of \tcode{D}, and \item has the same value in all definitions of \tcode{D}, \end{itemize} -@@ -2744,7 +2743,7 @@ only namespace names are considered.% +@@ -2745,7 +2744,7 @@ only namespace names are considered.% \pnum \indextext{program}% \indextext{linking}% @@ -312,7 +262,7 @@ index d118aa0e..8c292d26 100644 linked together. A translation unit consists of a sequence of declarations. -@@ -2777,7 +2776,7 @@ are attached to the same module. +@@ -2778,7 +2777,7 @@ are attached to the same module. \indextext{linkage!\idxcode{inline} and}% \indextext{\idxcode{inline}!linkage of}% The name of an entity @@ -321,7 +271,7 @@ index d118aa0e..8c292d26 100644 has internal linkage if it is the name of \begin{itemize} \item -@@ -2818,7 +2817,7 @@ typedef declaration in which the class has the typedef name for linkage +@@ -2819,7 +2818,7 @@ typedef declaration in which the class has the typedef name for linkage purposes\iref{dcl.typedef}; or \item \indextext{enumeration!linkage of}% @@ -330,7 +280,7 @@ index d118aa0e..8c292d26 100644 in a typedef declaration in which the enumeration has the typedef name for linkage purposes\iref{dcl.typedef}; or \item an unnamed enumeration -@@ -2894,7 +2893,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. +@@ -2895,7 +2894,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. \pnum \indextext{linkage!no}% Names not covered by these rules have no linkage. Moreover, except as @@ -339,7 +289,7 @@ index d118aa0e..8c292d26 100644 linkage. \pnum -@@ -3216,8 +3215,8 @@ features of the language, such as references and virtual functions, might +@@ -3217,8 +3216,8 @@ features of the language, such as references and virtual functions, might involve additional memory locations that are not accessible to programs but are managed by the implementation. \end{note} @@ -350,7 +300,7 @@ index d118aa0e..8c292d26 100644 locations without interfering with each other. \pnum -@@ -3261,15 +3260,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but +@@ -3262,15 +3261,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but The constructs in a \Cpp{} program create, destroy, refer to, access, and manipulate objects. An \defn{object} is created @@ -369,7 +319,7 @@ index d118aa0e..8c292d26 100644 and in its period of destruction\iref{class.cdtor}. \begin{note} -@@ -3399,7 +3398,7 @@ A \defn{potentially-overlapping subobject} is either: +@@ -3400,7 +3399,7 @@ A \defn{potentially-overlapping subobject} is either: \begin{itemize} \item a base class subobject, or \item a non-static data member @@ -378,7 +328,7 @@ index d118aa0e..8c292d26 100644 \end{itemize} \pnum -@@ -3420,7 +3419,7 @@ Otherwise, the circumstances under which the object has zero size +@@ -3421,7 +3420,7 @@ Otherwise, the circumstances under which the object has zero size are \impldef{which non-standard-layout objects containing no data are considered empty}. \indextext{most derived object!bit-field}% @@ -387,7 +337,7 @@ index d118aa0e..8c292d26 100644 an object with nonzero size shall occupy one or more bytes of storage, including every byte that is occupied in full or in part -@@ -3985,16 +3984,16 @@ the result of the evaluation is the value so produced but is not erroneous: +@@ -3986,16 +3985,16 @@ the result of the evaluation is the value so produced but is not erroneous: is produced by the evaluation of: \begin{itemize} \item @@ -407,7 +357,7 @@ index d118aa0e..8c292d26 100644 \end{itemize} then the result of the operation is an indeterminate value or that erroneous value, respectively. -@@ -4185,8 +4184,8 @@ specified in~\ref{class.copy.elision}. +@@ -4186,8 +4185,8 @@ specified in~\ref{class.copy.elision}. \indextext{storage duration!dynamic|(} \pnum @@ -418,7 +368,7 @@ index d118aa0e..8c292d26 100644 \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -@@ -4350,9 +4349,9 @@ that would match a handler\iref{except.handle} of type +@@ -4351,9 +4350,9 @@ that would match a handler\iref{except.handle} of type \tcode{std::bad_alloc}\iref{bad.alloc}. \pnum @@ -521,7 +471,7 @@ index d118aa0e..8c292d26 100644 a \grammarterm{constant-expression}\iref{expr.const}, \item diff --git a/source/classes.tex b/source/classes.tex -index 3a80fc15..5b7a5cbb 100644 +index f0d9a262..170c2eb3 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -274,10 +274,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: @@ -614,10 +564,10 @@ index 3a80fc15..5b7a5cbb 100644 corresponding parameter if the meaning of the program will be unchanged except for the execution of a constructor and destructor for the parameter copy object; diff --git a/source/compatibility.tex b/source/compatibility.tex -index fe9d4ce8..1eee7a16 100644 +index 87878a30..3a4119ed 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -1948,8 +1948,8 @@ deallocation functions\iref{expr.new}. +@@ -1950,8 +1950,8 @@ deallocation functions\iref{expr.new}. A conditional expression with a throw expression as its second or third operand keeps the type and value category of the other operand. \rationale @@ -677,10 +627,10 @@ index 4d848e8f..6bd0435e 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index aeedcd2c..ebdfaf8d 100644 +index d7032dfd..9c719111 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -6127,14 +6127,14 @@ namespace std { +@@ -6116,14 +6116,14 @@ namespace std { \indextext{\idxcode{array}!contiguous storage}% The header \libheader{array} defines a class template for storing fixed-size sequences of objects. @@ -697,7 +647,7 @@ index aeedcd2c..ebdfaf8d 100644 list-initialized with up to \tcode{N} elements whose types are convertible to \tcode{T}. -@@ -6145,8 +6145,8 @@ of a container\iref{container.reqmts} and +@@ -6134,8 +6134,8 @@ of a container\iref{container.reqmts} and of a reversible container\iref{container.rev.reqmts}, except that a default constructed \tcode{array} object is not empty if $\tcode{N} > 0$. @@ -708,7 +658,7 @@ index aeedcd2c..ebdfaf8d 100644 Descriptions are provided here only for operations on \tcode{array} that are not described in one of these tables and -@@ -6156,13 +6156,13 @@ for operations where there is additional semantic information. +@@ -6145,13 +6145,13 @@ for operations where there is additional semantic information. \tcode{array} is a structural type\iref{term.structural.type} if \tcode{T} is a structural type. Two values \tcode{a1} and \tcode{a2} of type \tcode{array} @@ -724,7 +674,7 @@ index aeedcd2c..ebdfaf8d 100644 \indexlibraryglobal{array}% \indexlibrarymember{array}{begin}% -@@ -6485,7 +6485,7 @@ namespace std { +@@ -6474,7 +6474,7 @@ namespace std { A \indexlibraryglobal{deque}% \tcode{deque} @@ -733,7 +683,7 @@ index aeedcd2c..ebdfaf8d 100644 In addition, it supports constant time insert and erase operations at the beginning or the end; insert and erase in the middle take linear time. That is, a deque is especially optimized for pushing and popping elements at the beginning and end. -@@ -7149,7 +7149,7 @@ namespace std { +@@ -7138,7 +7138,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{forward_list} if the allocator meets the @@ -742,7 +692,7 @@ index aeedcd2c..ebdfaf8d 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{forward_list} is referenced. -@@ -7733,7 +7733,7 @@ predicate. +@@ -7722,7 +7722,7 @@ predicate. \pnum \remarks @@ -751,7 +701,7 @@ index aeedcd2c..ebdfaf8d 100644 \end{itemdescr} \indexlibrarymember{unique}{forward_list}% -@@ -7838,7 +7838,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( +@@ -7827,7 +7827,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( \pnum \remarks @@ -760,7 +710,7 @@ index aeedcd2c..ebdfaf8d 100644 \end{itemdescr} \indexlibrarymember{reverse}{forward_list}% -@@ -9034,7 +9034,7 @@ A +@@ -9027,7 +9027,7 @@ A is a sequence container that supports bidirectional iterators and allows constant time insert and erase operations anywhere within the sequence, with storage management handled @@ -769,7 +719,7 @@ index aeedcd2c..ebdfaf8d 100644 fast random access to list elements is not supported, but many algorithms only need sequential access anyway. -@@ -9210,7 +9210,7 @@ namespace std { +@@ -9203,7 +9203,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{list} if the allocator meets the @@ -778,7 +728,7 @@ index aeedcd2c..ebdfaf8d 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{list} is referenced. -@@ -9623,7 +9623,7 @@ applications of the corresponding predicate. +@@ -9616,7 +9616,7 @@ applications of the corresponding predicate. \pnum \remarks @@ -787,7 +737,7 @@ index aeedcd2c..ebdfaf8d 100644 \end{itemdescr} \indexlibrarymember{unique}{list}% -@@ -9747,7 +9747,7 @@ comparisons, where +@@ -9739,7 +9739,7 @@ comparisons, where $N$ is \tcode{size()}. \pnum \remarks @@ -796,7 +746,7 @@ index aeedcd2c..ebdfaf8d 100644 \end{itemdescr} \rSec3[list.erasure]{Erasure} -@@ -9852,7 +9852,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, +@@ -9847,7 +9847,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, of a sequence container, including most of the optional sequence container requirements\iref{sequence.reqmts}, and, for an element type other than \tcode{bool}, @@ -805,7 +755,7 @@ index aeedcd2c..ebdfaf8d 100644 The exceptions are the \tcode{push_front}, \tcode{prepend_range}, \tcode{pop_front}, and \tcode{emplace_front} member functions, which are not provided. Descriptions are provided here only for operations on \tcode{vector} -@@ -9990,7 +9990,7 @@ namespace std { +@@ -9985,7 +9985,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{vector} if the allocator meets the @@ -814,7 +764,7 @@ index aeedcd2c..ebdfaf8d 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{vector} is referenced. -@@ -10582,7 +10582,7 @@ Unless described below, all operations have the same requirements and +@@ -10578,7 +10578,7 @@ Unless described below, all operations have the same requirements and semantics as the primary \tcode{vector} template, except that operations dealing with the \tcode{bool} value type map to bit values in the container storage and @@ -823,7 +773,7 @@ index aeedcd2c..ebdfaf8d 100644 is not used to construct these values. \pnum -@@ -15657,9 +15657,9 @@ and +@@ -15653,9 +15653,9 @@ and can be used to instantiate \tcode{queue}. In particular, @@ -835,7 +785,7 @@ index aeedcd2c..ebdfaf8d 100644 can be used. \begin{codeblock} -@@ -16014,15 +16014,15 @@ and +@@ -16010,15 +16010,15 @@ and can be used to instantiate \tcode{priority_queue}. In particular, @@ -854,7 +804,7 @@ index aeedcd2c..ebdfaf8d 100644 \begin{codeblock} namespace std { -@@ -16567,10 +16567,10 @@ and +@@ -16563,10 +16563,10 @@ and can be used to instantiate \tcode{stack}. In particular, @@ -869,7 +819,7 @@ index aeedcd2c..ebdfaf8d 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index 24b34f25..8a9850e8 100644 +index 2e575bbb..1af3ee51 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -513,7 +513,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -1099,7 +1049,7 @@ index 24b34f25..8a9850e8 100644 such a statement is a fallthrough statement. No \grammarterm{attribute-argument-clause} shall be present. diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index 1f5f1ad4..8caccce8 100644 +index 3c4b0c98..b4b70046 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -505,13 +505,13 @@ the current state of \tcode{NDEBUG} each time that @@ -1277,7 +1227,7 @@ index 79684e4c..12cfcb8d 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index 955ef6de..e162be35 100644 +index c6ff9d4a..13e2526b 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1292,9 +1242,9 @@ index 955ef6de..e162be35 100644 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 +-\tcode{++a} meaning \tcode{a += 1}, are not guaranteed for overloaded -operators\iref{over.oper}. -+\tcode{++a} meaning \tcode{a+=1}, are not guaranteed for \link{overloaded ++\tcode{++a} meaning \tcode{a += 1}, are not guaranteed for \link{overloaded +operators}{over.oper}. \end{note} @@ -2107,7 +2057,7 @@ index 50edea0b..49c04f21 100644 the \oldconcept{TransformationTrait} requirements with a base characteristic of \tcode{integral_constant}. diff --git a/source/intro.tex b/source/intro.tex -index 75705a2b..1b5dda28 100644 +index e0ded4cf..736966eb 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -94,8 +94,8 @@ Reads of scalar objects are described in \ref{conv.lval} and @@ -2121,23 +2071,21 @@ index 75705a2b..1b5dda28 100644 such invocations do not themselves constitute accesses, although they may involve accesses of scalar subobjects. \end{defnote} -@@ -243,10 +243,11 @@ implementation's output messages +@@ -243,11 +243,11 @@ implementation's output messages glvalue refers \begin{example} --If a pointer\iref{dcl.ptr} \tcode{p} whose static type is ``pointer to --class \tcode{B}'' is pointing to an object of class \tcode{D}, derived --from \tcode{B}\iref{class.derived}, the dynamic type of the +-If a pointer\iref{dcl.ptr} \tcode{p} whose type is ``pointer to ++If a \link{pointer}{dcl.ptr} \tcode{p} whose type is ``pointer to + class \tcode{B}'' is pointing to a base class subobject + of class \tcode{B}, whose most derived object is of class \tcode{D}, derived + from \tcode{B}\iref{class.derived}, the dynamic type of the -expression \tcode{*p} is ``\tcode{D}''. References\iref{dcl.ref} are -+If a \link{pointer}{dcl.ptr} \tcode{p} whose static type is ``pointer to -+class \tcode{B}'' is pointing to an object of class \tcode{D}, -+\link{derived}{class.derived} -+from \tcode{B}, the dynamic type of the +expression \tcode{*p} is ``\tcode{D}''. \link{References}{dcl.ref} are treated similarly. \end{example} -@@ -314,7 +315,7 @@ handler functions (see \ref{support}). +@@ -315,7 +315,7 @@ handler functions (see \ref{support}). \indexdefn{program!ill-formed}% \definition{ill-formed program}{defns.ill.formed} @@ -2146,7 +2094,7 @@ index 75705a2b..1b5dda28 100644 \indexdefn{behavior!implementation-defined}% \definition{implementation-defined behavior}{defns.impl.defined} -@@ -810,7 +811,7 @@ resulting in a contract violation. +@@ -811,7 +811,7 @@ resulting in a contract violation. \indextext{conformance requirements!classes}% \indextext{conformance requirements!class templates}% For classes and class templates, the library Clauses specify partial @@ -2155,7 +2103,7 @@ index 75705a2b..1b5dda28 100644 specified, but each implementation shall supply them to complete the definitions according to the description in the library Clauses. -@@ -827,7 +828,7 @@ the appropriate standard library named header unit\iref{using.headers}. +@@ -828,7 +828,7 @@ the appropriate standard library named header unit\iref{using.headers}. \pnum The templates, classes, functions, and objects in the library have @@ -2165,7 +2113,7 @@ index 75705a2b..1b5dda28 100644 translation units to form a complete \Cpp{} program\iref{lex.phases}.% \indextext{conformance requirements!library|)} diff --git a/source/iostreams.tex b/source/iostreams.tex -index 1a5a1cc6..015fb1d2 100644 +index 3f925b2b..f89a4754 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -561,7 +561,7 @@ is initialized, @@ -2485,10 +2433,10 @@ index 1a5a1cc6..015fb1d2 100644 \pnum \throws diff --git a/source/iterators.tex b/source/iterators.tex -index 4cf779c3..395e5bf6 100644 +index e073c001..6078fec7 100644 --- a/source/iterators.tex +++ b/source/iterators.tex -@@ -732,7 +732,7 @@ is undefined. +@@ -729,7 +729,7 @@ is undefined. \pnum \indextext{iterator!constexpr}% @@ -2497,7 +2445,7 @@ index 4cf779c3..395e5bf6 100644 if all operations provided to meet iterator category requirements are constexpr functions. \begin{note} -@@ -6852,7 +6852,7 @@ ostream_iterator& operator++(int); +@@ -6849,7 +6849,7 @@ ostream_iterator& operator++(int); The class template \tcode{istreambuf_iterator} @@ -2506,7 +2454,7 @@ index 4cf779c3..395e5bf6 100644 reads successive \textit{characters} from the streambuf for which it was constructed. -@@ -6977,7 +6977,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; +@@ -6974,7 +6974,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; Initializes \tcode{sbuf_} with \keyword{nullptr}. \end{itemdescr} @@ -2514,7 +2462,7 @@ index 4cf779c3..395e5bf6 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(istream_type& s) noexcept; -@@ -6989,7 +6988,6 @@ istreambuf_iterator(istream_type& s) noexcept; +@@ -6986,7 +6985,6 @@ istreambuf_iterator(istream_type& s) noexcept; Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2522,7 +2470,7 @@ index 4cf779c3..395e5bf6 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(streambuf_type* s) noexcept; -@@ -7001,7 +6999,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; +@@ -6998,7 +6996,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; Initializes \tcode{sbuf_} with \tcode{s}. \end{itemdescr} @@ -2530,7 +2478,7 @@ index 4cf779c3..395e5bf6 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept; -@@ -7152,7 +7149,6 @@ is not a null pointer. +@@ -7149,7 +7146,6 @@ is not a null pointer. Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2539,7 +2487,7 @@ index 4cf779c3..395e5bf6 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index 5889b42c..ac260145 100644 +index 6cf011e4..aa909af0 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2564,7 +2512,7 @@ index 5889b42c..ac260145 100644 \end{note} \indextext{compilation!separate|)} -@@ -2241,7 +2241,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) +@@ -2243,7 +2243,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) \pnum If \placeholder{L} is a \grammarterm{user-defined-character-literal}, let \placeholder{ch} be the literal without its \grammarterm{ud-suffix}. @@ -2574,7 +2522,7 @@ index 5889b42c..ac260145 100644 literal \placeholder{L} is treated as a call of the form diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 61fcbded..2caf8109 100644 +index ea7a21b7..10076632 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2827,9 +2775,9 @@ index 61fcbded..2caf8109 100644 \pnum Certain functions in the \Cpp{} standard library report errors via a --\tcode{std::error_code}\iref{syserr.errcode.overview} object. That object's -+\link{\tcode{std::error_code}}{syserr.errcode.overview} object. That object's - \tcode{category()} member shall return \tcode{std::system_category()} for +-\tcode{error_code}\iref{syserr.errcode.overview} object. That object's ++\link{\tcode{error_code}}{syserr.errcode.overview} object. That object's + \tcode{category()} member shall return \tcode{system_category()} for errors originating from the operating system, or a reference to an \impldef{\tcode{error_category} for errors originating outside the diff --git a/source/limits.tex b/source/limits.tex @@ -2846,7 +2794,7 @@ index bdc1f3de..efd4eb00 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index 6ebb62b3..74fb94cb 100644 +index 529ed109..9402c55b 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -156,8 +156,8 @@ floating-point evaluation in constant expressions. @@ -3343,7 +3291,7 @@ index 5343a015..db9317ec 100644 and \tcode{long} diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 3e28b5dd..1118dbca 100644 +index ee7959ab..885db47e 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -504,7 +504,7 @@ shall not appear in any context not mentioned in this subclause. @@ -3396,7 +3344,7 @@ index 3e28b5dd..1118dbca 100644 \end{description} diff --git a/source/statements.tex b/source/statements.tex -index 8805695a..67189ecf 100644 +index ba75c744..9782eab7 100644 --- a/source/statements.tex +++ b/source/statements.tex @@ -198,7 +198,7 @@ Expression statements have the form @@ -3440,7 +3388,7 @@ index 8805695a..67189ecf 100644 through the loop. If the substatement in an \grammarterm{iteration-statement} is a single statement and not a \grammarterm{compound-statement}, -@@ -637,7 +637,7 @@ fails. +@@ -638,7 +638,7 @@ fails. \indextext{statement!\idxcode{do}} \pnum @@ -3449,7 +3397,7 @@ index 8805695a..67189ecf 100644 if that conversion is ill-formed, the program is ill-formed. \pnum -@@ -806,8 +806,8 @@ Jump statements unconditionally transfer control. +@@ -807,8 +807,8 @@ Jump statements unconditionally transfer control. \indextext{local variable!destruction of}% \indextext{scope!destructor and exit from}% \begin{note} @@ -3460,7 +3408,7 @@ index 8805695a..67189ecf 100644 in the reverse order of their construction\iref{stmt.dcl}. For temporaries, see~\ref{class.temporary}. However, the program can be terminated (by calling -@@ -907,7 +907,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; +@@ -908,7 +908,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; the \tcode{return} statement initializes the returned reference or prvalue result object of the (explicit or implicit) function call @@ -3469,7 +3417,7 @@ index 8805695a..67189ecf 100644 \begin{note} A constructor or destructor does not have a return type. \end{note} -@@ -1040,7 +1040,7 @@ results in undefined behavior. +@@ -1041,7 +1041,7 @@ results in undefined behavior. The \tcode{goto} statement unconditionally transfers control to the statement labeled by the identifier. The identifier shall be a \indextext{label}% @@ -3478,7 +3426,7 @@ index 8805695a..67189ecf 100644 \rSec1[stmt.contract.assert]{Assertion statement} -@@ -1151,8 +1151,8 @@ lx: +@@ -1152,8 +1152,8 @@ lx: \indextext{initialization!local \tcode{static}}% \indextext{initialization!local \tcode{thread_local}}% Dynamic initialization of a block variable with @@ -3489,7 +3437,7 @@ index 8805695a..67189ecf 100644 the first time control passes through its declaration; such a variable is considered initialized upon the completion of its initialization. If the initialization exits by throwing an exception, the initialization is not -@@ -1195,8 +1195,8 @@ will be destroyed if and only if it was constructed. +@@ -1196,8 +1196,8 @@ will be destroyed if and only if it was constructed. \pnum There is an ambiguity in the grammar involving \grammarterm{expression-statement}{s} and \grammarterm{declaration}{s}: An @@ -3501,7 +3449,7 @@ index 8805695a..67189ecf 100644 \grammarterm{declarator} starts with a \tcode{(}. In those cases the \grammarterm{statement} is considered a \grammarterm{declaration}, diff --git a/source/strings.tex b/source/strings.tex -index a9615c7d..0ff1e21f 100644 +index 0245aaae..6f584dff 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -5505,13 +5505,13 @@ The contents and meaning of the header \libheaderdef{cstring} @@ -3531,7 +3479,7 @@ index a9615c7d..0ff1e21f 100644 \xrefc{7.24} diff --git a/source/support.tex b/source/support.tex -index 7d53612a..f48bb793 100644 +index 95d674aa..ff85b31b 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3804,7 +3752,7 @@ index 7d53612a..f48bb793 100644 calls to the \tcode{setlocale} function or with calls to functions that are affected by the current C locale. The implementation shall behave as if no diff --git a/source/templates.tex b/source/templates.tex -index 0294586d..2224584d 100644 +index bf283e46..00d8fae6 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -681,7 +681,7 @@ struct A {}; @@ -3938,7 +3886,7 @@ index 0294586d..2224584d 100644 the normal forms of \tcode{E1} and \tcode{E2}. \item -@@ -2302,7 +2302,7 @@ the constraint of $A$ subsumes that of $B$. +@@ -2303,7 +2303,7 @@ the constraint of $A$ subsumes that of $B$. \end{itemize} % \begin{example} @@ -3947,7 +3895,7 @@ index 0294586d..2224584d 100644 % The constraint $A \land B$ subsumes $A$, but $A$ does not subsume $A \land B$. % -@@ -2518,7 +2518,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. +@@ -2519,7 +2519,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. \end{example} \pnum @@ -3956,7 +3904,7 @@ index 0294586d..2224584d 100644 \tcode{decltype($e$)} denotes a unique dependent type. Two such \grammarterm{decltype-specifier}{s} refer to the same type only if their \grammarterm{expression}{s} are -@@ -2588,8 +2588,8 @@ default arguments, +@@ -2589,8 +2589,8 @@ default arguments, \grammarterm{requires-clause}{s}, or \grammarterm{noexcept-specifier}{s}. @@ -3967,7 +3915,7 @@ index 0294586d..2224584d 100644 \pnum Because an \grammarterm{alias-declaration} cannot declare a -@@ -2943,7 +2943,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} +@@ -2944,7 +2944,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} \pnum A local class of non-closure type shall not have member templates. @@ -3976,7 +3924,7 @@ index 0294586d..2224584d 100644 apply to member template names. A destructor shall not be a member template. -@@ -3163,7 +3163,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. +@@ -3164,7 +3164,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. \item In a \grammarterm{capture-list}\iref{expr.prim.lambda.capture}; the pattern is the \grammarterm{capture} without the ellipsis. @@ -3985,7 +3933,7 @@ index 0294586d..2224584d 100644 \grammarterm{identifier}. \item In a \grammarterm{pack-index-expression}; -@@ -3786,9 +3786,9 @@ primary template. +@@ -3787,9 +3787,9 @@ primary template. \pnum A partial specialization matches a given actual template argument list if the template arguments of the partial specialization can be @@ -3998,7 +3946,7 @@ index 0294586d..2224584d 100644 \begin{example} \begin{codeblock} template class A { }; // \#1 -@@ -3850,14 +3850,14 @@ of the primary template. +@@ -3851,14 +3851,14 @@ of the primary template. For two partial specializations, the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more @@ -4016,7 +3964,7 @@ index 0294586d..2224584d 100644 as the corresponding partial specialization. \item Each function template -@@ -4063,8 +4063,8 @@ void h(int* p) { +@@ -4064,8 +4064,8 @@ void h(int* p) { \end{example} \pnum @@ -4027,7 +3975,7 @@ index 0294586d..2224584d 100644 \pnum The signature of a function template -@@ -4115,7 +4115,7 @@ For example, a template type parameter can be used in the +@@ -4116,7 +4116,7 @@ For example, a template type parameter can be used in the Two expressions involving template parameters are considered \defnx{equivalent}{equivalent!expressions} if two function definitions containing the expressions would satisfy @@ -4036,7 +3984,7 @@ index 0294586d..2224584d 100644 to name the template parameters may differ as long as a token used to name a template parameter in one expression is replaced by another token that names the same template parameter in the other expression. -@@ -4287,8 +4287,8 @@ function template +@@ -4286,8 +4286,8 @@ function template specialization is selected to match a placement operator new\iref{basic.stc.dynamic.deallocation,expr.new}; \item @@ -4047,7 +3995,7 @@ index 0294586d..2224584d 100644 a function template specialization. \end{itemize} -@@ -4670,7 +4670,7 @@ A \grammarterm{concept-definition} +@@ -4669,7 +4669,7 @@ A \grammarterm{concept-definition} shall inhabit a namespace scope\iref{basic.scope.namespace}. \pnum @@ -4056,7 +4004,7 @@ index 0294586d..2224584d 100644 \pnum A concept is not instantiated\iref{temp.spec}. -@@ -4981,7 +4981,7 @@ was a pack expansion and the corresponding pack is empty, or +@@ -4980,7 +4980,7 @@ was a pack expansion and the corresponding pack is empty, or \item an instantiation uses a default argument or default template argument that had not been defined at the point at which the template was defined, or @@ -4065,7 +4013,7 @@ index 0294586d..2224584d 100644 instantiation uses \begin{itemize} \item the value of a const object of integral or unscoped enumeration type or -@@ -5234,7 +5234,7 @@ any of the expressions +@@ -5233,7 +5233,7 @@ any of the expressions or \grammarterm{braced-init-list}{s} in the \grammarterm{expression-list} @@ -4074,7 +4022,7 @@ index 0294586d..2224584d 100644 \item the \grammarterm{unqualified-id} is a \grammarterm{template-id} in which any of the template arguments depends -@@ -5294,7 +5294,7 @@ if it is +@@ -5293,7 +5293,7 @@ if it is \item in the definition of a class template, a nested class of a class template, a member of a class template, or a member of a nested class of a class template, @@ -4083,7 +4031,7 @@ index 0294586d..2224584d 100644 \item in the definition of a primary class template or a member of a primary class template, the name of the -@@ -5573,7 +5573,7 @@ used without a \grammarterm{template-argument-list}. +@@ -5572,7 +5572,7 @@ used without a \grammarterm{template-argument-list}. \end{footnote} \item a \grammarterm{pack-index-specifier}, or \item denoted by \tcode{decltype(}\grammarterm{expression}{}\tcode{)}, @@ -4092,7 +4040,7 @@ index 0294586d..2224584d 100644 \end{itemize} \pnum -@@ -5712,7 +5712,7 @@ see~\ref{support.types}. +@@ -5711,7 +5711,7 @@ see~\ref{support.types}. \end{note} \pnum @@ -4101,7 +4049,7 @@ index 0294586d..2224584d 100644 type-dependent if the terminal name of its \grammarterm{id-expression}, if any, is dependent or the expression refers to a member of the current instantiation and -@@ -5847,7 +5847,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the +@@ -5846,7 +5846,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the instantiation is value-dependent. An expression of the form \tcode{\&}\grammarterm{cast-expression} is also value-dependent if evaluating \grammarterm{cast-expression} @@ -4110,7 +4058,7 @@ index 0294586d..2224584d 100644 the result of the evaluation refers to a templated entity that is an object with static or thread storage duration or a member function. -@@ -5971,7 +5971,7 @@ within a translation unit. +@@ -5970,7 +5970,7 @@ within a translation unit. A specialization for any template may have points of instantiation in multiple translation units. If two different points of instantiation give a template specialization @@ -4119,7 +4067,7 @@ index 0294586d..2224584d 100644 the program is ill-formed, no diagnostic required. \rSec3[temp.dep.candidate]{Candidate functions} -@@ -6276,7 +6276,7 @@ of type +@@ -6275,7 +6275,7 @@ of type \pnum If a function declaration acquired its function type through @@ -4128,7 +4076,7 @@ index 0294586d..2224584d 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -6357,7 +6357,7 @@ X ch; // error: incomplete type \tcode{X} +@@ -6356,7 +6356,7 @@ X ch; // error: incomplete type \tcode{X} \end{example} \begin{note} Within a template declaration, @@ -4137,7 +4085,7 @@ index 0294586d..2224584d 100644 a local class are never considered to be entities that can be separately instantiated (this includes their default arguments, \grammarterm{noexcept-specifier}{s}, and non-static data member -@@ -6535,7 +6535,7 @@ void x() { +@@ -6534,7 +6534,7 @@ void x() { \end{example} \pnum @@ -4146,7 +4094,7 @@ index 0294586d..2224584d 100644 can be determined without instantiating a class template definition, it is unspecified whether that instantiation actually takes place. \begin{example} -@@ -6872,7 +6872,7 @@ If an entity is the subject of both an explicit instantiation declaration +@@ -6871,7 +6871,7 @@ If an entity is the subject of both an explicit instantiation declaration and an explicit instantiation definition in the same translation unit, the definition shall follow the declaration. An entity that is the subject of an explicit instantiation declaration and that is also used @@ -4155,7 +4103,7 @@ index 0294586d..2224584d 100644 in the translation unit shall be the subject of an explicit instantiation definition somewhere in the program; otherwise the program is ill-formed, no diagnostic required. -@@ -7936,7 +7936,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. +@@ -7935,7 +7935,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. In the following example, assuming a \tcode{signed char} cannot represent the value 1000, @@ -4164,7 +4112,7 @@ index 0294586d..2224584d 100644 would be required to convert the \grammarterm{template-argument} of type \tcode{int} to \tcode{signed char}, -@@ -8045,8 +8045,8 @@ is not a reference type: +@@ -8044,8 +8044,8 @@ is not a reference type: \item If \tcode{A} @@ -4175,7 +4123,7 @@ index 0294586d..2224584d 100644 \tcode{A} for type deduction; otherwise, -@@ -8054,7 +8054,7 @@ otherwise, +@@ -8053,7 +8053,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -4184,7 +4132,7 @@ index 0294586d..2224584d 100644 of \tcode{A} for type -@@ -8150,8 +8150,8 @@ The transformed \tcode{A} +@@ -8149,8 +8149,8 @@ The transformed \tcode{A} can be another pointer or pointer-to-member type that can be converted to the deduced \tcode{A} @@ -4195,7 +4143,7 @@ index 0294586d..2224584d 100644 \item If -@@ -8282,7 +8282,7 @@ void test() { +@@ -8281,7 +8281,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -4204,7 +4152,7 @@ index 0294586d..2224584d 100644 If there is a target, the function template's function type and the target type are used as the types of -@@ -8329,7 +8329,7 @@ is not a reference type: +@@ -8328,7 +8328,7 @@ is not a reference type: If \tcode{P} is an array type, the pointer type produced by the @@ -4213,7 +4161,7 @@ index 0294586d..2224584d 100644 \tcode{P} for type deduction; otherwise, -@@ -8337,7 +8337,7 @@ deduction; otherwise, +@@ -8336,7 +8336,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -4222,7 +4170,7 @@ index 0294586d..2224584d 100644 \tcode{P} for type deduction; otherwise, -@@ -8428,7 +8428,7 @@ after a function has been selected. +@@ -8427,7 +8427,7 @@ after a function has been selected. In the context of a call to a conversion function, the return types of the conversion function templates are used. \item @@ -4231,7 +4179,7 @@ index 0294586d..2224584d 100644 type is used. \end{itemize} -@@ -8942,7 +8942,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the +@@ -8939,7 +8939,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the template argument list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by $\texttt{P}_i$. @@ -4240,7 +4188,7 @@ index 0294586d..2224584d 100644 originally a pack expansion: \begin{itemize} \item if \tcode{P} does not contain a template argument corresponding to -@@ -9005,7 +9005,7 @@ each remaining parameter type in the parameter-type-list +@@ -9002,7 +9002,7 @@ each remaining parameter type in the parameter-type-list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by the function parameter pack. @@ -4249,7 +4197,7 @@ index 0294586d..2224584d 100644 originally a function parameter pack: \begin{itemize} \item if \tcode{P} does not contain a function parameter type corresponding to -@@ -9299,8 +9299,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod +@@ -9296,8 +9296,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod In a declaration whose \grammarterm{declarator-id} refers to a specialization of a function template, template argument deduction is performed to identify the specialization to which the declaration refers. Specifically, this is done @@ -4261,7 +4209,7 @@ index 0294586d..2224584d 100644 \tcode{operator new}\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index f5000051..9ebc2602 100644 +index 8d418aea..bc6b0a54 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4284,7 +4232,7 @@ index f5000051..9ebc2602 100644 \begin{itemdecl} m.try_lock_for(rel_time) -@@ -6574,7 +6574,7 @@ namespace std { +@@ -6577,7 +6577,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -4293,7 +4241,7 @@ index f5000051..9ebc2602 100644 An execution agent \term{owns} a mutex from the time it successfully calls one of the lock functions until it calls unlock. Mutexes can be either recursive or non-recursive, and can grant simultaneous ownership to one or many execution agents. Both -@@ -6618,7 +6618,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on +@@ -6621,7 +6621,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on a single mutex appears to occur in a single total order. \begin{note} This @@ -4302,7 +4250,7 @@ index f5000051..9ebc2602 100644 mutex. \end{note} \begin{note} -@@ -6698,7 +6698,7 @@ in the absence of contending mutex acquisitions. +@@ -6701,7 +6701,7 @@ in the absence of contending mutex acquisitions. \pnum \sync If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations @@ -4311,7 +4259,7 @@ index f5000051..9ebc2602 100644 \begin{note} Since \tcode{lock()} does not synchronize with a failed subsequent \tcode{try_lock()}, the visibility rules are weak enough that little would be -@@ -6734,7 +6734,7 @@ Releases the calling thread's ownership of the mutex. +@@ -6737,7 +6737,7 @@ Releases the calling thread's ownership of the mutex. \pnum \sync @@ -4320,7 +4268,7 @@ index f5000051..9ebc2602 100644 lock operations that obtain ownership on the same object. \pnum -@@ -6863,9 +6863,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, +@@ -6866,9 +6866,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, meet the requirements set out below. In this description, \tcode{m} denotes an object of a mutex type, \tcode{rel_time} denotes an object of an @@ -4332,7 +4280,7 @@ index f5000051..9ebc2602 100644 \begin{note} The timed mutex types meet the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. -@@ -7155,7 +7155,7 @@ Releases a shared lock on the mutex held by the calling thread. +@@ -7158,7 +7158,7 @@ Releases a shared lock on the mutex held by the calling thread. \pnum \sync @@ -4341,7 +4289,7 @@ index f5000051..9ebc2602 100644 \tcode{lock()} operations that obtain ownership on the same object. \pnum -@@ -7259,7 +7259,7 @@ meet the requirements set out below. In this description, +@@ -7262,7 +7262,7 @@ meet the requirements set out below. In this description, \tcode{rel_time} denotes an object of an instantiation of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes an object of an instantiation of @@ -4350,7 +4298,7 @@ index f5000051..9ebc2602 100644 \begin{note} The shared timed mutex types meet the \oldconcept{SharedTimedLockable} requirements\iref{thread.req.lockable.shared.timed}. -@@ -7470,7 +7470,7 @@ namespace std { +@@ -7473,7 +7473,7 @@ namespace std { \pnum An object of type \tcode{lock_guard} controls the ownership of a lockable object within a scope. A \tcode{lock_guard} object maintains ownership of a lockable @@ -4359,7 +4307,7 @@ index f5000051..9ebc2602 100644 The behavior of a program is undefined if the lockable object referenced by \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} -@@ -7543,7 +7543,7 @@ namespace std { +@@ -7546,7 +7546,7 @@ namespace std { \pnum An object of type \tcode{scoped_lock} controls the ownership of lockable objects within a scope. A \tcode{scoped_lock} object maintains ownership of lockable @@ -4368,7 +4316,7 @@ index f5000051..9ebc2602 100644 The behavior of a program is undefined if the lockable objects referenced by \tcode{pm} do not exist for the entire lifetime of the \tcode{scoped_lock} object. -@@ -8700,7 +8700,7 @@ earlier returning execution. +@@ -8703,7 +8703,7 @@ earlier returning execution. \pnum \sync For any given \tcode{once_flag}: all active executions occur in a total @@ -4377,7 +4325,7 @@ index f5000051..9ebc2602 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -10666,22 +10666,21 @@ the state object. +@@ -10669,22 +10669,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4404,7 +4352,7 @@ index f5000051..9ebc2602 100644 \begin{note} This explicitly specifies that the result of the shared state is visible in the objects that reference this state in the sense of data race -@@ -11017,8 +11016,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -11020,8 +11019,8 @@ The class template \tcode{future} defines a type for asynchronous return objects do not share their shared state with other asynchronous return objects. A default-constructed \tcode{future} object has no shared state. A \tcode{future} object with shared state can be created by @@ -4415,7 +4363,7 @@ index f5000051..9ebc2602 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -11328,7 +11327,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -11331,7 +11330,7 @@ object has no shared state. A \tcode{shared_future} object with shared state can be created by conversion from a \tcode{future} object and shares its shared state with the @@ -4424,7 +4372,7 @@ index f5000051..9ebc2602 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -11777,7 +11776,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -11780,7 +11779,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -4434,7 +4382,7 @@ index f5000051..9ebc2602 100644 the first function that successfully detects the ready status of the shared state or diff --git a/source/time.tex b/source/time.tex -index 97c79981..afb0df94 100644 +index f547e5ef..6c988685 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1222,7 +1222,7 @@ unless it meets all of the following conditions: @@ -4446,7 +4394,7 @@ index 97c79981..afb0df94 100644 \item the expression \tcode{T::now()} is well-formed when treated as an unevaluated operand. -@@ -11083,7 +11083,7 @@ The expression +@@ -11084,7 +11084,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp) \end{codeblock} @@ -4455,7 +4403,7 @@ index 97c79981..afb0df94 100644 \pnum \returns -@@ -11116,7 +11116,7 @@ The expression +@@ -11117,7 +11117,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp, addressof(abbrev)) \end{codeblock} @@ -4464,7 +4412,7 @@ index 97c79981..afb0df94 100644 \pnum \returns -@@ -11153,7 +11153,7 @@ from_stream(declval&>(), +@@ -11154,7 +11154,7 @@ from_stream(declval&>(), declval*>(), &offset) \end{codeblock} @@ -4473,7 +4421,7 @@ index 97c79981..afb0df94 100644 \pnum \returns -@@ -11193,7 +11193,7 @@ The expression +@@ -11194,7 +11194,7 @@ The expression from_stream(declval&>(), @$F$@, tp, addressof(abbrev), &offset) \end{codeblock} @@ -4483,7 +4431,7 @@ index 97c79981..afb0df94 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index 54df0b8d..c8862145 100644 +index d3385267..d72eebe4 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -104,15 +104,15 @@ namespace std { @@ -4572,11 +4520,11 @@ index 54df0b8d..c8862145 100644 2.43.0 -From 1ad2a1722321f5a8461c39a5a742306f15852897 Mon Sep 17 00:00:00 2001 +From 01fbdd3b8c9cdd5cdc252fdb8ca40e9e1521b201 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 -Subject: [PATCH 04/12] Fix dubious \defnx that has see{} in it, and remove - range index entry with the same key. +Subject: [PATCH 3/9] Fix dubious \defnx that has see{} in it, and remove range + index entry with the same key. --- source/iostreams.tex | 2 +- @@ -4584,7 +4532,7 @@ Subject: [PATCH 04/12] Fix dubious \defnx that has see{} in it, and remove 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index 015fb1d2..d7c5889b 100644 +index f89a4754..ee7b1fc6 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -13911,7 +13911,7 @@ without an intervening \grammarterm{root-directory} element. @@ -4597,7 +4545,7 @@ index 015fb1d2..d7c5889b 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index 2224584d..b59dafd4 100644 +index 00d8fae6..cb2c8a8e 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -2042,7 +2042,6 @@ so it does match \#2. @@ -4625,89 +4573,11 @@ index 2224584d..b59dafd4 100644 2.43.0 -From 4289053722982596196de2e2116ae8b01399a210 Mon Sep 17 00:00:00 2001 -From: Eelis van der Weegen -Date: Sun, 11 Nov 2018 02:27:17 +0100 -Subject: [PATCH 05/12] Replace more non-codeblocks with outputblocks. - ---- - source/iostreams.tex | 12 ++++++------ - source/uax31.tex | 4 ++-- - 2 files changed, 8 insertions(+), 8 deletions(-) - -diff --git a/source/iostreams.tex b/source/iostreams.tex -index d7c5889b..49e3d2c1 100644 ---- a/source/iostreams.tex -+++ b/source/iostreams.tex -@@ -17372,16 +17372,16 @@ library functions called by the implementation shall have an \tcode{error_code} - \pnum - \begin{example} - Given this directory structure: --\begin{codeblock} -+\begin{outputblock} - /dir1 - file1 - file2 - dir2 - file3 --\end{codeblock} -+\end{outputblock} - - Calling \tcode{copy("/dir1", "/dir3")} would result in: --\begin{codeblock} -+\begin{outputblock} - /dir1 - file1 - file2 -@@ -17390,10 +17390,10 @@ Calling \tcode{copy("/dir1", "/dir3")} would result in: - /dir3 - file1 - file2 --\end{codeblock} -+\end{outputblock} - - Alternatively, calling \tcode{copy("/dir1", "/dir3", copy_options::recursive)} would result in: --\begin{codeblock} -+\begin{outputblock} - /dir1 - file1 - file2 -@@ -17404,7 +17404,7 @@ Alternatively, calling \tcode{copy("/dir1", "/dir3", copy_options::recursive)} w - file2 - dir2 - file3 --\end{codeblock} -+\end{outputblock} - \end{example} - \end{itemdescr} - -diff --git a/source/uax31.tex b/source/uax31.tex -index ee0bb9c2..5b236c6e 100644 ---- a/source/uax31.tex -+++ b/source/uax31.tex -@@ -34,11 +34,11 @@ to the set of permitted \tcode{} characters, - the \tcode{} set is empty, and - the \tcode{} characters are unmodified. - In the grammar used in \UAX{31}, this is --\begin{codeblock} -+\begin{outputblock} - := * - := XID_Start + @\textrm{\ucode{005f}}@ - := + XID_Continue --\end{codeblock} -+\end{outputblock} - - \pnum - This is described in the \Cpp{} grammar in \ref{lex.name}, --- -2.43.0 - - -From 54e247ca88712276cc3928527a3a3bb7deab6737 Mon Sep 17 00:00:00 2001 +From d77dfbd84167142510a1fa900d84739a5966fe6d Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 -Subject: [PATCH 06/12] Use cxxdraft-htmlgen macros to annotate non-C++ code - and literal fragments. +Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and + literal fragments. --- source/exceptions.tex | 4 +- @@ -4734,7 +4604,7 @@ index 12cfcb8d..190e0ac6 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index ac260145..e8da4c1d 100644 +index aa909af0..fbd79538 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -293,43 +293,43 @@ the numerical value has no other meaning in this context. @@ -4860,7 +4730,7 @@ index ac260145..e8da4c1d 100644 \end{bnf} \pnum -@@ -1128,19 +1128,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1130,19 +1130,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. \nontermdef{binary-literal}\br \terminal{0b} binary-digit\br \terminal{0B} binary-digit\br @@ -4883,7 +4753,7 @@ index ac260145..e8da4c1d 100644 \end{bnf} \begin{bnf} -@@ -1171,14 +1171,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1173,14 +1173,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{hexadecimal-digit-sequence}\br hexadecimal-digit\br @@ -4902,7 +4772,7 @@ index ac260145..e8da4c1d 100644 \end{bnf} \begin{bnf} -@@ -1193,17 +1193,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1195,17 +1195,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{unsigned-suffix} \textnormal{one of}\br @@ -4923,7 +4793,7 @@ index ac260145..e8da4c1d 100644 \end{bnf} \begin{bnf} -@@ -1242,7 +1242,7 @@ when determining the value. +@@ -1244,7 +1244,7 @@ when determining the value. \pnum The \grammarterm{hexadecimal-digit}s @@ -4932,7 +4802,7 @@ index ac260145..e8da4c1d 100644 have decimal values ten through fifteen. \begin{example} The number twelve can be written \tcode{12}, \tcode{014}, -@@ -1286,7 +1286,7 @@ none & +@@ -1288,7 +1288,7 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4941,7 +4811,7 @@ index ac260145..e8da4c1d 100644 \tcode{unsigned int} & \tcode{unsigned int}\\ & -@@ -1295,7 +1295,7 @@ none & +@@ -1297,7 +1297,7 @@ none & & \tcode{unsigned long long int} & \tcode{unsigned long long int}\\\hline @@ -4950,7 +4820,7 @@ index ac260145..e8da4c1d 100644 \tcode{long int} & \tcode{long int}\\ & -@@ -1307,22 +1307,22 @@ none & +@@ -1309,22 +1309,22 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4978,7 +4848,7 @@ index ac260145..e8da4c1d 100644 & \\\hline \tcode{z} or \tcode{Z} & -@@ -1370,12 +1370,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1372,12 +1372,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \indextext{literal!character}% \begin{bnf} \nontermdef{character-literal}\br @@ -4993,7 +4863,7 @@ index ac260145..e8da4c1d 100644 \end{bnf} \begin{bnf} -@@ -1426,16 +1426,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1428,16 +1428,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{octal-escape-sequence}\br @@ -5016,7 +4886,7 @@ index ac260145..e8da4c1d 100644 \end{bnf} \begin{bnf} -@@ -1623,42 +1623,42 @@ is supported for compatibility with \CppXIV{} and C. +@@ -1625,42 +1625,42 @@ is supported for compatibility with \CppXIV{} and C. \begin{bnf} \nontermdef{fractional-constant}\br @@ -5070,7 +4940,7 @@ index ac260145..e8da4c1d 100644 \end{bnf} \pnum -@@ -1743,8 +1743,8 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1745,8 +1745,8 @@ chosen in an \impldef{choice of larger or smaller value of \indextext{literal!string}% \begin{bnf} \nontermdef{string-literal}\br @@ -5081,7 +4951,7 @@ index ac260145..e8da4c1d 100644 \end{bnf} \begin{bnf} -@@ -1767,7 +1767,7 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1769,7 +1769,7 @@ chosen in an \impldef{choice of larger or smaller value of \begin{bnf} \nontermdef{raw-string}\br @@ -5090,7 +4960,7 @@ index ac260145..e8da4c1d 100644 \end{bnf} \begin{bnf} -@@ -1854,7 +1854,7 @@ UTF-32 & +@@ -1856,7 +1856,7 @@ UTF-32 & \pnum \indextext{literal!string!raw}% @@ -5100,7 +4970,7 @@ index ac260145..e8da4c1d 100644 in the prefix is a \defn{raw string literal}. The \grammarterm{d-char-sequence} serves as a delimiter. The terminating diff --git a/source/time.tex b/source/time.tex -index afb0df94..d7ebe6c6 100644 +index 6c988685..bdbef27b 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2200,7 +2200,7 @@ If the parse fails to decode a valid duration, @@ -5581,11 +5451,11 @@ index afb0df94..d7ebe6c6 100644 -\tcode{\%y} & +\noncxxtcode{\%y} & The last two decimal digits of the year. --If the result is a single digit it is prefixed by \tcode{0}. +-If the result is a single digit, it is prefixed by \tcode{0}. -The modified command \tcode{\%Oy} produces the locale's alternative representation. -The modified command \tcode{\%Ey} produces the locale's alternative representation -of offset from \tcode{\%EC} (year only). -+If the result is a single digit it is prefixed by \noncxxtcode{0}. ++If the result is a single digit, it is prefixed by \noncxxtcode{0}. +The modified command \noncxxtcode{\%Oy} produces the locale's alternative representation. +The modified command \noncxxtcode{\%Ey} produces the locale's alternative representation +of offset from \noncxxtcode{\%EC} (year only). @@ -5593,7 +5463,7 @@ index afb0df94..d7ebe6c6 100644 -\tcode{\%Y} & +\noncxxtcode{\%Y} & The year as a decimal number. - If the result is less than four digits + If the result is less than four digits, -it is left-padded with \tcode{0} to four digits. -The modified command \tcode{\%EY} produces +it is left-padded with \noncxxtcode{0} to four digits. @@ -5626,7 +5496,7 @@ index afb0df94..d7ebe6c6 100644 \\ \end{LongTable} -@@ -10858,9 +10858,9 @@ template +@@ -10859,9 +10859,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5638,7 +5508,7 @@ index afb0df94..d7ebe6c6 100644 an offset of \tcode{0min} is formatted. \end{itemdescr} -@@ -10873,9 +10873,9 @@ template +@@ -10874,9 +10874,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5650,7 +5520,7 @@ index afb0df94..d7ebe6c6 100644 an offset of \tcode{0min} is formatted. If the argument represents a time during a positive leap second insertion, and if a seconds field is formatted, -@@ -10892,9 +10892,9 @@ template +@@ -10893,9 +10893,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5662,7 +5532,7 @@ index afb0df94..d7ebe6c6 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted by a \tcode{sys_time} initialized with -@@ -10913,9 +10913,9 @@ template +@@ -10914,9 +10914,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5674,7 +5544,7 @@ index afb0df94..d7ebe6c6 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted by a \tcode{sys_time} initialized with -@@ -10934,9 +10934,9 @@ template +@@ -10935,9 +10935,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5686,7 +5556,7 @@ index afb0df94..d7ebe6c6 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted -@@ -10954,7 +10954,7 @@ template +@@ -10955,7 +10955,7 @@ template \begin{itemdescr} \pnum \remarks @@ -5695,7 +5565,7 @@ index afb0df94..d7ebe6c6 100644 an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -10995,18 +10995,18 @@ passed to \tcode{formatter::format}. +@@ -10996,18 +10996,18 @@ passed to \tcode{formatter::format}. \pnum \remarks If the \fmtgrammarterm{chrono-specs} is omitted, @@ -5719,7 +5589,7 @@ index afb0df94..d7ebe6c6 100644 and \tcode{f.offset_sec} is a null pointer value, then an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -11210,8 +11210,8 @@ except that they have an unspecified effect +@@ -11211,8 +11211,8 @@ except that they have an unspecified effect on the value returned by subsequent calls to \tcode{basic_istream<>::gcount()}. Each overload takes a format string containing ordinary characters and flags which have special meaning. @@ -5730,7 +5600,7 @@ index afb0df94..d7ebe6c6 100644 During parsing each flag interprets characters as parts of date and time types according to~\tref{time.parse.spec}. Some flags can be modified by a width parameter -@@ -11229,7 +11229,7 @@ the information that the format flag refers to, +@@ -11230,7 +11230,7 @@ the information that the format flag refers to, A \tcode{duration} cannot represent a \tcode{weekday}. \end{example} However, if a flag refers to a ``time of day'' @@ -5739,7 +5609,7 @@ index afb0df94..d7ebe6c6 100644 then a specialization of \tcode{duration} is parsed as the time of day elapsed since midnight. -@@ -11249,251 +11249,251 @@ is called on the \tcode{basic_istream}. +@@ -11250,251 +11250,251 @@ is called on the \tcode{basic_istream}. \hline \lhdr{Flag} & \rhdr{Parsed value} \\ \capsep \endhead @@ -6105,7 +5975,7 @@ index afb0df94..d7ebe6c6 100644 The time zone abbreviation or name. A single word is parsed. This word can only contain characters -@@ -11501,8 +11501,8 @@ from the basic character set\iref{lex.charset} +@@ -11502,8 +11502,8 @@ from the basic character set\iref{lex.charset} that are alphanumeric, or one of \tcode{'_'}, \tcode{'/'}, \tcode{'-'}, or \tcode{'+'}. \\ \rowsep @@ -6120,10 +5990,10 @@ index afb0df94..d7ebe6c6 100644 2.43.0 -From 49b4c6368500f9f64bb0bf2357967c83e6ef9383 Mon Sep 17 00:00:00 2001 +From 8055969f8b7ca0f9f53507cbfdea44c8949f19a8 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 -Subject: [PATCH 07/12] Remove more inappropriate paragraph breaks. +Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. --- source/algorithms.tex | 4 ---- @@ -6156,10 +6026,10 @@ Subject: [PATCH 07/12] Remove more inappropriate paragraph breaks. 27 files changed, 278 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 54de54ac..00711383 100644 +index 84d18c8b..71678537 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -6831,7 +6831,6 @@ but stronger than those for a partial ordering. +@@ -6833,7 +6833,6 @@ but stronger than those for a partial ordering. If we define \tcode{equiv(a, b)} as \tcode{!comp(a, b) \&\& !comp(b, a)}, then the requirements are that \tcode{comp} and \tcode{equiv} both be transitive relations: @@ -6167,7 +6037,7 @@ index 54de54ac..00711383 100644 \begin{itemize} \item \tcode{comp(a, b) \&\& comp(b, c)} implies \tcode{comp(a, c)} \item \tcode{equiv(a, b) \&\& equiv(b, c)} implies \tcode{equiv(a, c)} -@@ -7754,7 +7753,6 @@ Let $N = \tcode{last - first}$: +@@ -7756,7 +7755,6 @@ Let $N = \tcode{last - first}$: For the overload with an \tcode{ExecutionPolicy}, \bigoh{N \log N} swaps and \bigoh{N} applications of the predicate. \end{itemize} @@ -6175,7 +6045,7 @@ index 54de54ac..00711383 100644 \end{itemdescr} \indexlibraryglobal{stable_partition}% -@@ -8596,7 +8594,6 @@ A random access range \range{a}{b} is a +@@ -8598,7 +8596,6 @@ A random access range \range{a}{b} is a {heap with respect to comp and proj@heap with respect to \tcode{comp} and \tcode{proj}} for a comparator and projection \tcode{comp} and \tcode{proj} if its elements are organized such that: @@ -6183,7 +6053,7 @@ index 54de54ac..00711383 100644 \begin{itemize} \item With \tcode{$N$ = b - a}, for all $i$, $0 < i < N$, -@@ -11173,7 +11170,6 @@ template +@@ -11175,7 +11172,6 @@ template \pnum Some algorithms in this subclause are constrained with the following exposition-only concepts: @@ -6192,7 +6062,7 @@ index 54de54ac..00711383 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index 8c292d26..2f92fa3d 100644 +index ed278134..728170cc 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -267,7 +267,6 @@ enum { up, down }; // defines \tcode{up} and \tcode{down} @@ -6203,7 +6073,7 @@ index 8c292d26..2f92fa3d 100644 \end{codeblock} whereas these are just declarations: \begin{codeblock} -@@ -775,7 +774,6 @@ is subject to the requirements described in this paragraph (recursively). +@@ -776,7 +775,6 @@ is subject to the requirements described in this paragraph (recursively). \pnum For the purposes of the preceding requirements: @@ -6220,7 +6090,7 @@ index 8c292d26..2f92fa3d 100644 \item No two signed integer types other than \keyword{char} and \tcode{\keyword{signed} \keyword{char}} (if \keyword{char} is signed) have the same rank, even if they have diff --git a/source/classes.tex b/source/classes.tex -index 5b7a5cbb..4ca4456c 100644 +index 170c2eb3..dc2b7d0f 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -1663,7 +1663,6 @@ for each non-static data member of @@ -6288,10 +6158,10 @@ index 5b7a5cbb..4ca4456c 100644 \item If at least one $\tcode{T}_i$ is \tcode{std::partial_ordering}, diff --git a/source/compatibility.tex b/source/compatibility.tex -index 1eee7a16..952bff31 100644 +index 3a4119ed..543204a0 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -2550,7 +2550,6 @@ Overspecification. +@@ -2552,7 +2552,6 @@ Overspecification. \effect The signatures of the following member functions changed from taking an \tcode{iterator} to taking a \tcode{const_iterator}: @@ -6299,7 +6169,7 @@ index 1eee7a16..952bff31 100644 \begin{itemize} \item \tcode{insert(iter, val)} for \tcode{vector}, \tcode{deque}, \tcode{list}, \tcode{set}, \tcode{multiset}, \tcode{map}, \tcode{multimap} -@@ -2622,7 +2621,6 @@ Clarify intentions, avoid workarounds. +@@ -2624,7 +2623,6 @@ Clarify intentions, avoid workarounds. Valid \CppIII{} code that relies on implicit boolean conversions will fail to compile with this revision of \Cpp{}. Such conversions occur in the following conditions: @@ -6307,7 +6177,7 @@ index 1eee7a16..952bff31 100644 \begin{itemize} \item passing a value to a function that takes an argument of type \tcode{bool}; \item using \tcode{operator==} to compare to \tcode{false} or \tcode{true}; -@@ -3725,7 +3723,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in +@@ -3727,7 +3725,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in \pnum Header \libheaderref{cstring}: The following functions have different declarations: @@ -6315,7 +6185,7 @@ index 1eee7a16..952bff31 100644 \begin{itemize} \item \tcode{strchr} \item \tcode{strpbrk} -@@ -3739,7 +3736,6 @@ Subclause \ref{cstring.syn} describes the changes. +@@ -3741,7 +3738,6 @@ Subclause \ref{cstring.syn} describes the changes. \pnum Header \libheaderref{cwchar}: The following functions have different declarations: @@ -6323,7 +6193,7 @@ index 1eee7a16..952bff31 100644 \begin{itemize} \item \tcode{wcschr} \item \tcode{wcspbrk} -@@ -3764,7 +3760,6 @@ in addition to the names declared in +@@ -3766,7 +3762,6 @@ in addition to the names declared in \pnum Header \libheaderref{cstdlib}: The following functions have different behavior: @@ -6461,7 +6331,7 @@ index 6bd0435e..0bfd8612 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index ebdfaf8d..bbb3230c 100644 +index 9c719111..b1b1b3fb 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -685,7 +685,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6488,7 +6358,7 @@ index ebdfaf8d..bbb3230c 100644 \begin{itemize} \item \tcode{T} is \defnx{\oldconcept{DefaultInsertable} into \tcode{X}} -@@ -4037,14 +4034,12 @@ such that distance from +@@ -4036,14 +4033,12 @@ such that distance from to \tcode{j} is positive, the following condition holds: @@ -6503,7 +6373,7 @@ index ebdfaf8d..bbb3230c 100644 \begin{codeblock} value_comp(*i, *j) != false \end{codeblock} -@@ -6066,7 +6061,6 @@ define class templates that meet the requirements for sequence containers. +@@ -6055,7 +6050,6 @@ define class templates that meet the requirements for sequence containers. \pnum The following exposition-only alias template may appear in deduction guides for sequence containers: @@ -6511,7 +6381,7 @@ index ebdfaf8d..bbb3230c 100644 \begin{codeblock} template using @\placeholdernc{iter-value-type}@ = typename iterator_traits::value_type; // \expos -@@ -9332,7 +9326,6 @@ If \tcode{size() < sz}, +@@ -9325,7 +9319,6 @@ If \tcode{size() < sz}, appends \tcode{sz - size()} default-inserted elements to the sequence. If \tcode{sz <= size()}, equivalent to: @@ -6519,7 +6389,7 @@ index ebdfaf8d..bbb3230c 100644 \begin{codeblock} list::iterator it = begin(); advance(it, sz); -@@ -10618,13 +10611,11 @@ static constexpr void swap(reference x, reference y) noexcept; +@@ -10614,13 +10607,11 @@ static constexpr void swap(reference x, reference y) noexcept; \pnum \effects Exchanges the contents of \tcode{x} and \tcode{y} as if by: @@ -6533,7 +6403,7 @@ index ebdfaf8d..bbb3230c 100644 \end{itemdescr} \begin{itemdecl} -@@ -20117,7 +20108,6 @@ For each of +@@ -20114,7 +20105,6 @@ For each of \tcode{stack}, the library provides the following formatter specialization where \tcode{\placeholder{adaptor-type}} is the name of the template: @@ -6541,7 +6411,7 @@ index ebdfaf8d..bbb3230c 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -24301,7 +24291,6 @@ typename A::offset_policy +@@ -24298,7 +24288,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6549,7 +6419,7 @@ index ebdfaf8d..bbb3230c 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -25200,7 +25189,6 @@ the \tcode{SliceSpecifier} arguments. +@@ -25197,7 +25186,6 @@ the \tcode{SliceSpecifier} arguments. \pnum For each function defined in \ref{mdspan.sub} that takes a parameter pack named \tcode{slices} as an argument: @@ -6557,7 +6427,7 @@ index ebdfaf8d..bbb3230c 100644 \begin{itemize} \item let \tcode{index_type} be \begin{itemize} -@@ -25464,7 +25452,6 @@ $\le \tcode{src.extent($k$)}$ +@@ -25461,7 +25449,6 @@ $\le \tcode{src.extent($k$)}$ \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: @@ -6565,7 +6435,7 @@ index ebdfaf8d..bbb3230c 100644 \begin{itemize} \item %FIXME: I think we want the count here, "number" is ambiguous. -@@ -25475,7 +25462,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and +@@ -25472,7 +25459,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and for each rank index $k$ of \tcode{Extents} such that \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, \tcode{SubExt\-ents::static_extent(\placeholder{map-rank}[$k$])} equals: @@ -6573,7 +6443,7 @@ index ebdfaf8d..bbb3230c 100644 \begin{itemize} \item \tcode{Extents::static_extent($k$)} -@@ -25515,7 +25501,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that +@@ -25512,7 +25498,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that for each $k$ for which \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, \tcode{ext.extent(\placeholder{map-rank}[$k$])} equals: @@ -6582,7 +6452,7 @@ index ebdfaf8d..bbb3230c 100644 \item \tcode{$s_k$.extent == 0 ? 0 : 1 + (\exposid{de-ice}($s_k$.extent) - 1) / \exposid{de-ice}($s_k$.stride)} diff --git a/source/declarations.tex b/source/declarations.tex -index 8a9850e8..ec866e68 100644 +index 1af3ee51..b27354dd 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1557,7 +1557,6 @@ a partial specialization\iref{temp.spec.partial}, @@ -6733,7 +6603,7 @@ index 190e0ac6..cb9faf71 100644 \pnum diff --git a/source/expressions.tex b/source/expressions.tex -index e162be35..082733da 100644 +index 13e2526b..61ca8c1d 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -462,7 +462,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -7013,7 +6883,7 @@ index 49c04f21..ddaaf96d 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index 49e3d2c1..eaf34520 100644 +index ee7b1fc6..f01c8ec2 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -2108,14 +2108,12 @@ does nothing. @@ -7136,10 +7006,10 @@ index 49e3d2c1..eaf34520 100644 \item If there are no more entries at the current depth, then if \tcode{depth() != 0} iteration over the parent directory resumes; otherwise \tcode{*this = recursive_directory_iterator()}. diff --git a/source/iterators.tex b/source/iterators.tex -index 395e5bf6..1427e134 100644 +index 6078fec7..d022554d 100644 --- a/source/iterators.tex +++ b/source/iterators.tex -@@ -951,7 +951,6 @@ may be defined as \keyword{void}. +@@ -948,7 +948,6 @@ may be defined as \keyword{void}. \pnum The definitions in this subclause make use of the following exposition-only concepts: @@ -7147,7 +7017,7 @@ index 395e5bf6..1427e134 100644 \begin{codeblock} template concept @\defexposconcept{cpp17-iterator}@ = -@@ -1009,7 +1008,6 @@ concept @\defexposconcept{cpp17-random-access-iterator}@ = +@@ -1006,7 +1005,6 @@ concept @\defexposconcept{cpp17-random-access-iterator}@ = \pnum The members of a specialization \tcode{iterator_traits} generated from the \tcode{iterator_traits} primary template are computed as follows: @@ -7155,7 +7025,7 @@ index 395e5bf6..1427e134 100644 \begin{itemize} \item If \tcode{I} has valid\iref{temp.deduct} member -@@ -1158,7 +1156,6 @@ The name \tcode{ranges::iter_move} denotes +@@ -1155,7 +1153,6 @@ The name \tcode{ranges::iter_move} denotes a customization point object\iref{customization.point.object}. The expression \tcode{ranges::\-iter_move(E)} for a subexpression \tcode{E} is expression-equivalent to: @@ -7163,7 +7033,7 @@ index 395e5bf6..1427e134 100644 \begin{itemize} \item \tcode{iter_move(E)}, if \tcode{E} has class or enumeration type and -@@ -2798,7 +2795,6 @@ namespace std { +@@ -2795,7 +2792,6 @@ namespace std { A program-defined iterator \tcode{BinaryTreeIterator} can be included into the bidirectional iterator category by specializing the \tcode{iterator_traits} template: @@ -7171,7 +7041,7 @@ index 395e5bf6..1427e134 100644 \begin{codeblock} template struct iterator_traits> { using iterator_category = bidirectional_iterator_tag; -@@ -2816,7 +2812,6 @@ If +@@ -2813,7 +2809,6 @@ If \tcode{evolve()} is well-defined for bidirectional iterators, but can be implemented more efficiently for random access iterators, then the implementation is as follows: @@ -7179,7 +7049,7 @@ index 395e5bf6..1427e134 100644 \begin{codeblock} template inline void -@@ -3397,7 +3392,6 @@ As if by: +@@ -3394,7 +3389,6 @@ As if by: Iterator tmp = current; return *--tmp; \end{codeblock} @@ -7187,7 +7057,7 @@ index 395e5bf6..1427e134 100644 \end{itemdescr} \indexlibrarymember{operator->}{reverse_iterator}% -@@ -4779,7 +4773,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 +@@ -4776,7 +4770,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 vector v2(make_move_iterator(s.begin()), make_move_iterator(s.end())); // moves strings into \tcode{v2} \end{codeblock} @@ -7195,7 +7065,7 @@ index 395e5bf6..1427e134 100644 \end{example} \rSec3[move.iterator]{Class template \tcode{move_iterator}} -@@ -6498,7 +6491,6 @@ partial_sum(istream_iterator(cin), +@@ -6495,7 +6488,6 @@ partial_sum(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "@\textbackslash@n")); \end{codeblock} @@ -7204,7 +7074,7 @@ index 395e5bf6..1427e134 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lex.tex b/source/lex.tex -index e8da4c1d..f5294726 100644 +index fbd79538..d09869b8 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -597,7 +597,6 @@ after the \tcode{include} or \tcode{import} preprocessing token in a @@ -7216,7 +7086,7 @@ index e8da4c1d..f5294726 100644 \end{itemize} diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 2caf8109..b657c9b8 100644 +index 10076632..6effcd33 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -196,7 +196,6 @@ save space, items that do not apply to a Clause are omitted. @@ -7364,7 +7234,7 @@ index efd4eb00..12180661 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index 7b105687..a0c2615e 100644 +index d4451b02..add15a22 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1455,7 +1455,6 @@ when considered as an unevaluated operand. @@ -7384,7 +7254,7 @@ index 7b105687..a0c2615e 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index 61fa4ca2..d5f690b6 100644 +index 9484e79a..cd75eee5 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -1623,7 +1623,6 @@ is_base_of_v // \tcode{false} @@ -7395,7 +7265,7 @@ index 61fa4ca2..d5f690b6 100644 \begin{codeblock} To test() { return declval(); -@@ -2099,7 +2098,6 @@ If any of the types computed above is ill-formed, then +@@ -2105,7 +2104,6 @@ If any of the types computed above is ill-formed, then \pnum For the \tcode{common_type} trait applied to a template parameter pack \tcode{T} of types, the member \tcode{type} shall be either defined or not present as follows: @@ -7404,7 +7274,7 @@ index 61fa4ca2..d5f690b6 100644 \item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}. diff --git a/source/numerics.tex b/source/numerics.tex -index 74fb94cb..3e884c1e 100644 +index 9402c55b..c37ff4f3 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -605,7 +605,6 @@ template constexpr complex operator+(const complex& lhs); @@ -7564,7 +7434,7 @@ index db9317ec..d6a68599 100644 const char* unsigned long long int diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 1118dbca..b54d76fc 100644 +index 885db47e..2d3e5cb6 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -183,7 +183,6 @@ begins with the first character in the source file @@ -7630,7 +7500,7 @@ index 1118dbca..b54d76fc 100644 \begin{description} \item -@@ -2355,7 +2347,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali +@@ -2365,7 +2357,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali \pnum The following macro names are conditionally defined by the implementation: @@ -7647,7 +7517,7 @@ index 1118dbca..b54d76fc 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index fdeae9ef..f1523bb5 100644 +index c16eba7f..24fc04eb 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -651,7 +651,6 @@ object\iref{customization.point.object}. @@ -7690,7 +7560,7 @@ index fdeae9ef..f1523bb5 100644 \begin{itemize} \item If \tcode{T} is an array of unknown bound\iref{term.array.type}, -@@ -1197,7 +1192,6 @@ object\iref{customization.point.object}. +@@ -1157,7 +1152,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7698,7 +7568,7 @@ index fdeae9ef..f1523bb5 100644 \begin{itemize} \item If \tcode{T} is an array of unknown bound\iref{term.array.type}, -@@ -1248,7 +1242,6 @@ object\iref{customization.point.object}. +@@ -1208,7 +1202,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7755,10 +7625,10 @@ index fdeae9ef..f1523bb5 100644 \item If \tcode{T} models \libconcept{contiguous_iterator}, diff --git a/source/statements.tex b/source/statements.tex -index 67189ecf..25f4d3b8 100644 +index 9782eab7..62f29828 100644 --- a/source/statements.tex +++ b/source/statements.tex -@@ -718,7 +718,6 @@ exposition only; and +@@ -719,7 +719,6 @@ exposition only; and \item \exposid{begin-expr} and \exposid{end-expr} are determined as follows: @@ -7766,7 +7636,7 @@ index 67189ecf..25f4d3b8 100644 \begin{itemize} \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are -@@ -849,7 +848,6 @@ The \keyword{continue} statement +@@ -850,7 +849,6 @@ The \keyword{continue} statement causes control to pass to the loop-continuation portion of the smallest such enclosing statement, that is, to the end of the loop. More precisely, in each of the statements @@ -7774,7 +7644,7 @@ index 67189ecf..25f4d3b8 100644 \begin{minipage}{.30\hsize} \begin{codeblock} while (foo) { -@@ -880,7 +878,6 @@ for (;;) { +@@ -881,7 +879,6 @@ for (;;) { } \end{codeblock} \end{minipage} @@ -7783,7 +7653,7 @@ index 67189ecf..25f4d3b8 100644 equivalent to \tcode{goto} \exposid{contin}. diff --git a/source/support.tex b/source/support.tex -index f48bb793..5057313b 100644 +index ff85b31b..b67bffbb 100644 --- a/source/support.tex +++ b/source/support.tex @@ -2450,7 +2450,6 @@ This requirement is binding on any replacement versions of these functions. @@ -7819,7 +7689,7 @@ index f48bb793..5057313b 100644 using promise_type = typename R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index b59dafd4..e543d403 100644 +index cb2c8a8e..a4582e22 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -233,7 +233,6 @@ in some translation unit; no diagnostic is required. @@ -7854,7 +7724,7 @@ index b59dafd4..e543d403 100644 \begin{itemize} \item If there are no introduced \grammarterm{constraint-expression}{s}, the declaration has no associated constraints. -@@ -2721,7 +2717,6 @@ public: +@@ -2722,7 +2718,6 @@ public: declares three member functions of a class template. The subscript function can be defined like this: @@ -7862,7 +7732,7 @@ index b59dafd4..e543d403 100644 \begin{codeblock} template T& Array::operator[](int i) { if (i<0 || sz<=i) error("Array: range error"); -@@ -3110,7 +3105,6 @@ produces zero or more instantiations of the pattern in a list (described below). +@@ -3111,7 +3106,6 @@ produces zero or more instantiations of the pattern in a list (described below). The form of the pattern depends on the context in which the expansion occurs. Pack expansions can occur in the following contexts: @@ -7870,7 +7740,7 @@ index b59dafd4..e543d403 100644 \begin{itemize} \item In a function parameter pack\iref{dcl.fct}; the pattern is the \grammarterm{parameter-declaration} without the ellipsis. -@@ -3712,7 +3706,6 @@ All other constant template arguments are specialized. +@@ -3713,7 +3707,6 @@ All other constant template arguments are specialized. \pnum Within the argument list of a partial specialization, the following restrictions apply: @@ -7878,7 +7748,7 @@ index b59dafd4..e543d403 100644 \begin{itemize} \item The type of a template parameter corresponding to a specialized constant template -@@ -3726,7 +3719,6 @@ template< int X, int (*array_ptr)[X] > class A {}; +@@ -3727,7 +3720,6 @@ template< int X, int (*array_ptr)[X] > class A {}; int array[5]; template< int X > class A { }; // error \end{codeblock} @@ -7886,7 +7756,7 @@ index b59dafd4..e543d403 100644 \end{example} \item The partial specialization shall be more specialized than the primary -@@ -3852,7 +3844,6 @@ the first is \defn{more specialized} than the second if, given the following +@@ -3853,7 +3845,6 @@ the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more specialized than the second according to the \link{ordering rules for function templates}{temp.func.order}: @@ -7894,7 +7764,7 @@ index b59dafd4..e543d403 100644 \begin{itemize} \item Each of the two -@@ -4004,7 +3995,6 @@ A::B abci; // uses \#1 +@@ -4005,7 +3996,6 @@ A::B abci; // uses \#1 A function template defines an unbounded set of related functions. \begin{example} A family of sort functions can be declared like this: @@ -7902,7 +7772,7 @@ index b59dafd4..e543d403 100644 \begin{codeblock} template class Array { }; template void sort(Array&); -@@ -4059,7 +4049,6 @@ void h(int* p) { +@@ -4060,7 +4050,6 @@ void h(int* p) { } \end{codeblock} \end{minipage} @@ -7910,7 +7780,7 @@ index b59dafd4..e543d403 100644 \end{example} \pnum -@@ -4247,7 +4236,6 @@ to guarantee that functionally equivalent declarations will be treated +@@ -4246,7 +4235,6 @@ to guarantee that functionally equivalent declarations will be treated as distinct. For example, the last two declarations are functionally equivalent and would cause a program to be ill-formed: @@ -7918,7 +7788,7 @@ index b59dafd4..e543d403 100644 \begin{codeblock} // guaranteed to be the same template void f(A, A); -@@ -4340,7 +4328,6 @@ then the order of the function parameters in its transformed template +@@ -4339,7 +4327,6 @@ then the order of the function parameters in its transformed template is reversed. For a function template $M$ with cv-qualifiers \cv{} that is a member of a class $A$: @@ -7926,7 +7796,7 @@ index b59dafd4..e543d403 100644 \begin{itemize} \item The type $X(M)$ is ``rvalue reference to \cv{}~$A$'' -@@ -4585,7 +4572,6 @@ template class TT> +@@ -4584,7 +4571,6 @@ template class TT> void g(TT>); g(v); // OK, \tcode{TT} = \tcode{vector} \end{codeblock} @@ -7934,7 +7804,7 @@ index b59dafd4..e543d403 100644 \end{example} \pnum -@@ -5435,7 +5421,6 @@ of a class that is the current instantiation. +@@ -5434,7 +5420,6 @@ of a class that is the current instantiation. \pnum A qualified name\iref{basic.lookup.qual} is dependent if @@ -7942,7 +7812,7 @@ index b59dafd4..e543d403 100644 \begin{itemize} \item it is a \grammarterm{conversion-function-id} -@@ -5672,7 +5657,6 @@ specified by the +@@ -5671,7 +5656,6 @@ specified by the or \grammarterm{new-type-id} is dependent, even if any subexpression is type-dependent: @@ -7950,7 +7820,7 @@ index b59dafd4..e543d403 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br simple-type-specifier braced-init-list\br -@@ -5690,7 +5674,6 @@ typename-specifier braced-init-list\br +@@ -5689,7 +5673,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following forms are never type-dependent (because the type of the expression cannot be dependent): @@ -7958,7 +7828,7 @@ index b59dafd4..e543d403 100644 \begin{ncsimplebnf} literal\br \keyword{sizeof} unary-expression\br -@@ -5785,7 +5768,6 @@ Expressions of the following form are value-dependent if the +@@ -5784,7 +5767,6 @@ Expressions of the following form are value-dependent if the is type-dependent or the \grammarterm{type-id} is dependent: @@ -7966,15 +7836,15 @@ index b59dafd4..e543d403 100644 \begin{ncsimplebnf} \keyword{sizeof} unary-expression\br \keyword{sizeof} \terminal{(} type-id \terminal{)}\br -@@ -5813,7 +5795,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} +@@ -5812,7 +5794,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} is value-dependent or any \grammarterm{assignment-expression} in the \grammarterm{braced-init-list} is value-dependent: - \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br - typename-specifier \terminal{(} opt{expression-list} \terminal{)}\br -@@ -5828,7 +5809,6 @@ dynamic_cast \terminal{<} type-id \terminal{>} \terminal{(} expression \terminal + typename-specifier \terminal{(} \opt{expression-list} \terminal{)}\br +@@ -5827,7 +5808,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following form are value-dependent: @@ -7982,7 +7852,7 @@ index b59dafd4..e543d403 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -6725,7 +6705,6 @@ template. +@@ -6724,7 +6704,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -7990,7 +7860,7 @@ index b59dafd4..e543d403 100644 \begin{bnf} \nontermdef{explicit-instantiation}\br \opt{\keyword{extern}} \keyword{template} declaration -@@ -7200,7 +7179,6 @@ otherwise, it is a declaration. +@@ -7199,7 +7178,6 @@ otherwise, it is a declaration. The definition of a static data member of a template for which default-initialization is desired can use functional cast notation\iref{expr.type.conv}: @@ -7998,7 +7868,7 @@ index b59dafd4..e543d403 100644 \begin{codeblock} template<> X Q::x; // declaration template<> X Q::x (); // error: declares a function -@@ -7459,7 +7437,6 @@ An empty template argument list can be used to indicate that a given +@@ -7458,7 +7436,6 @@ An empty template argument list can be used to indicate that a given use refers to a specialization of a function template even when a non-template function\iref{dcl.fct} is visible that would otherwise be used. For example: @@ -8006,7 +7876,7 @@ index b59dafd4..e543d403 100644 \begin{codeblock} template int f(T); // \#1 int f(int); // \#2 -@@ -8040,7 +8017,6 @@ void h(int x, float& y) { +@@ -8039,7 +8016,6 @@ void h(int x, float& y) { If \tcode{P} is not a reference type: @@ -8014,7 +7884,7 @@ index b59dafd4..e543d403 100644 \begin{itemize} \item If -@@ -8135,7 +8111,6 @@ the type +@@ -8134,7 +8110,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -8022,7 +7892,7 @@ index b59dafd4..e543d403 100644 \begin{itemize} \item If the original -@@ -8323,7 +8298,6 @@ of \tcode{P} for type deduction and for any further references to or transformat +@@ -8322,7 +8297,6 @@ of \tcode{P} for type deduction and for any further references to or transformat If \tcode{A} is not a reference type: @@ -8030,7 +7900,7 @@ index b59dafd4..e543d403 100644 \begin{itemize} \item If -@@ -8369,7 +8343,6 @@ values that will make the deduced +@@ -8368,7 +8342,6 @@ values that will make the deduced identical to \tcode{A}. However, certain attributes of \tcode{A} may be ignored: @@ -8038,7 +7908,7 @@ index b59dafd4..e543d403 100644 \begin{itemize} \item If the original \tcode{A} is a reference type, -@@ -8414,7 +8387,6 @@ the argument template and template-1 as the parameter template. +@@ -8413,7 +8386,6 @@ the argument template and template-1 as the parameter template. \pnum The types used to determine the ordering depend on the context in which the partial ordering is done: @@ -8046,7 +7916,7 @@ index b59dafd4..e543d403 100644 \begin{itemize} \item In the context of a function call, the types used are those function parameter types -@@ -8442,7 +8414,6 @@ and +@@ -8441,7 +8413,6 @@ and \pnum Before the partial ordering is done, certain transformations are performed on the types used for partial ordering: @@ -8054,7 +7924,7 @@ index b59dafd4..e543d403 100644 \begin{itemize} \item If -@@ -8648,7 +8619,6 @@ A given type +@@ -8647,7 +8618,6 @@ A given type \tcode{P} can be composed from a number of other types, templates, and constant template argument values: @@ -8062,7 +7932,7 @@ index b59dafd4..e543d403 100644 \begin{itemize} \item A function type includes the types of each of the function parameters, -@@ -8690,7 +8660,6 @@ need not have the same form. +@@ -8689,7 +8659,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -8070,7 +7940,7 @@ index b59dafd4..e543d403 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -8781,7 +8750,6 @@ is deduced. +@@ -8780,7 +8749,6 @@ is deduced. \begin{example} Here is an example in which different parameter/argument pairs produce inconsistent template argument deductions: @@ -8078,7 +7948,7 @@ index b59dafd4..e543d403 100644 \begin{codeblock} template void f(T x, T y) { @\commentellip@ } struct A { @\commentellip@ }; -@@ -8798,7 +8766,6 @@ Here is an example where two template arguments are deduced from a +@@ -8797,7 +8765,6 @@ Here is an example where two template arguments are deduced from a single function parameter/argument pair. This can lead to conflicts that cause type deduction to fail: @@ -8086,7 +7956,7 @@ index b59dafd4..e543d403 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -8815,7 +8782,6 @@ void r() { +@@ -8814,7 +8781,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -8094,7 +7964,7 @@ index b59dafd4..e543d403 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -8834,7 +8800,6 @@ void h() { +@@ -8833,7 +8799,6 @@ void h() { Here is an example where a qualification conversion applies between the argument type on the function call and the deduced template argument type: @@ -8102,7 +7972,7 @@ index b59dafd4..e543d403 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -8845,7 +8810,6 @@ void s() { +@@ -8844,7 +8809,6 @@ void s() { Here is an example where the template argument is used to instantiate a derived class type of the corresponding function parameter type: @@ -8111,10 +7981,10 @@ index b59dafd4..e543d403 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 9ebc2602..665a3d2e 100644 +index bc6b0a54..9e0d743e 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -6630,7 +6630,6 @@ and visible to other threads. +@@ -6633,7 +6633,6 @@ and visible to other threads. \pnum The expression \tcode{m.lock()} is well-formed and has the following semantics: @@ -8122,7 +7992,7 @@ index 9ebc2602..665a3d2e 100644 \begin{itemdescr} \pnum \expects -@@ -6673,7 +6672,6 @@ that a deadlock would occur. +@@ -6676,7 +6675,6 @@ that a deadlock would occur. \pnum The expression \tcode{m.try_lock()} is well-formed and has the following semantics: @@ -8130,7 +8000,7 @@ index 9ebc2602..665a3d2e 100644 \begin{itemdescr} \pnum \expects -@@ -6719,7 +6717,6 @@ Nothing. +@@ -6722,7 +6720,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -8138,7 +8008,7 @@ index 9ebc2602..665a3d2e 100644 \begin{itemdescr} \pnum \expects -@@ -6874,7 +6871,6 @@ requirements\iref{thread.req.lockable.timed}. +@@ -6877,7 +6874,6 @@ requirements\iref{thread.req.lockable.timed}. \pnum The expression \tcode{m.try_lock_for(rel_time)} is well-formed and has the following semantics: @@ -8146,7 +8016,7 @@ index 9ebc2602..665a3d2e 100644 \begin{itemdescr} \pnum \expects -@@ -6916,7 +6912,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -6919,7 +6915,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_until(abs_time)} is well-formed and has the following semantics: @@ -8154,7 +8024,7 @@ index 9ebc2602..665a3d2e 100644 \begin{itemdescr} \pnum \expects -@@ -7103,7 +7098,6 @@ shared lock. +@@ -7106,7 +7101,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -8162,7 +8032,7 @@ index 9ebc2602..665a3d2e 100644 \begin{itemdescr} \pnum \expects -@@ -7140,7 +7134,6 @@ The calling thread has a shared lock on the mutex. +@@ -7143,7 +7137,6 @@ The calling thread has a shared lock on the mutex. \pnum The expression \tcode{m.unlock_shared()} is well-formed and has the following semantics: @@ -8170,7 +8040,7 @@ index 9ebc2602..665a3d2e 100644 \begin{itemdescr} \pnum \expects -@@ -7165,7 +7158,6 @@ Nothing. +@@ -7168,7 +7161,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -8178,7 +8048,7 @@ index 9ebc2602..665a3d2e 100644 \begin{itemdescr} \pnum \expects -@@ -7268,7 +7260,6 @@ requirements\iref{thread.req.lockable.shared.timed}. +@@ -7271,7 +7263,6 @@ requirements\iref{thread.req.lockable.shared.timed}. \pnum The expression \tcode{m.try_lock_shared_for(rel_time)} is well-formed and has the following semantics: @@ -8186,7 +8056,7 @@ index 9ebc2602..665a3d2e 100644 \begin{itemdescr} \pnum \expects -@@ -7313,7 +7304,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -7316,7 +7307,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_shared_until(abs_time)} is well-formed and has the following semantics: @@ -8194,7 +8064,7 @@ index 9ebc2602..665a3d2e 100644 \begin{itemdescr} \pnum \expects -@@ -9451,7 +9441,6 @@ template +@@ -9454,7 +9444,6 @@ template \begin{itemdescr} \pnum \effects @@ -8202,7 +8072,7 @@ index 9ebc2602..665a3d2e 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -10862,7 +10851,6 @@ shared state as \tcode{*this}. +@@ -10865,7 +10854,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -8210,7 +8080,7 @@ index 9ebc2602..665a3d2e 100644 \begin{itemize} \item \tcode{future_already_retrieved} if \tcode{get_future} has already been called on a \tcode{promise} with the same shared state as \tcode{*this}. -@@ -10925,7 +10913,6 @@ already has a stored value or exception. +@@ -10928,7 +10916,6 @@ already has a stored value or exception. \pnum \errors @@ -8218,7 +8088,7 @@ index 9ebc2602..665a3d2e 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -11265,7 +11252,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -11268,7 +11255,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -8226,7 +8096,7 @@ index 9ebc2602..665a3d2e 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -11609,7 +11595,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -11612,7 +11598,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8234,7 +8104,7 @@ index 9ebc2602..665a3d2e 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -11644,7 +11629,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -11647,7 +11632,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8242,7 +8112,7 @@ index 9ebc2602..665a3d2e 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -11700,7 +11684,6 @@ The further behavior +@@ -11703,7 +11687,6 @@ The further behavior of the second function depends on the \tcode{policy} argument as follows (if more than one of these conditions applies, the implementation may choose any of the corresponding policies): @@ -8251,7 +8121,7 @@ index 9ebc2602..665a3d2e 100644 \item If \tcode{launch::async} is set in \tcode{policy}, calls diff --git a/source/time.tex b/source/time.tex -index d7ebe6c6..bf00eae4 100644 +index bdbef27b..39598098 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2074,7 +2074,6 @@ return os << s.str(); @@ -8401,7 +8271,7 @@ index d7ebe6c6..bf00eae4 100644 \fmtnontermdef{chrono-format-spec}\br \opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs} diff --git a/source/utilities.tex b/source/utilities.tex -index c8862145..a6b9d7f9 100644 +index d72eebe4..171c1b2f 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -270,7 +270,6 @@ Exchanges values stored in two locations. @@ -8464,10 +8334,10 @@ index c8862145..a6b9d7f9 100644 2.43.0 -From 3bd232d9d24164296e49c88a6e0a905b6df734c3 Mon Sep 17 00:00:00 2001 +From 8c2a1f3b37b90223214962e13527a379312559b3 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 -Subject: [PATCH 08/12] Use monospace font for code in figures. +Subject: [PATCH 6/9] Use monospace font for code in figures. --- source/assets/figdag.dot | 8 ++++---- @@ -8611,30 +8481,20 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From 1641c27120171de9fabc760a404b2b018621adb2 Mon Sep 17 00:00:00 2001 +From 9a9990629bc027308fd3dc678b50b74b0f494943 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 -Subject: [PATCH 09/12] [uaxid] Mark code that's not to be highlighted. +Subject: [PATCH 7/9] [uaxid] Mark code that's not to be highlighted. --- - source/uax31.tex | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + source/uax31.tex | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/uax31.tex b/source/uax31.tex -index 5b236c6e..320ed00a 100644 +index 641ab63b..db586c1f 100644 --- a/source/uax31.tex +++ b/source/uax31.tex -@@ -23,16 +23,16 @@ are either alternatives not taken or do not apply to this document. - \UAX{31} specifies a default syntax for identifiers - based on properties from the Unicode Character Database, \UAX{44}. - The general syntax is --\begin{codeblock} -+\begin{outputblock} - := * ( +)* --\end{codeblock} -+\end{outputblock} - where \tcode{} has the XID_Start property, - \tcode{} has the XID_Continue property, and +@@ -33,8 +33,8 @@ where \tcode{} has the XID_Start property, \tcode{} is a list of characters permitted between continue characters. For \Cpp{} we add the character \unicode{005f}{low line}, or \tcode{_}, to the set of permitted \tcode{} characters, @@ -8649,10 +8509,10 @@ index 5b236c6e..320ed00a 100644 2.43.0 -From 21ff22b330eacac74370174cdf8e9c91ba324077 Mon Sep 17 00:00:00 2001 +From 1e1456fe7d42e1eae06d3a41a6ad9e541cbbfe8a Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 -Subject: [PATCH 10/12] Use cxxdraft-htmlgen macros more. +Subject: [PATCH 8/9] Use cxxdraft-htmlgen macros more. --- source/algorithms.tex | 194 +++++++++++++------------- @@ -8673,7 +8533,7 @@ Subject: [PATCH 10/12] Use cxxdraft-htmlgen macros more. 15 files changed, 513 insertions(+), 521 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 00711383..3b19eb71 100644 +index 71678537..9b6f07ea 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -8720,7 +8580,7 @@ index 00711383..3b19eb71 100644 if it is required to be a mutable iterator, or model \libconcept{random_access_iterator}\iref{iterator.concept.random.access} otherwise. \end{itemize} -@@ -3609,10 +3609,10 @@ template +@@ -3611,10 +3611,10 @@ template \pnum \expects \tcode{Function} meets @@ -8733,7 +8593,7 @@ index 00711383..3b19eb71 100644 \end{note} \pnum -@@ -3649,7 +3649,7 @@ template +@@ -3651,7 +3651,7 @@ template \begin{itemdescr} \pnum \expects @@ -8742,7 +8602,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -3735,10 +3735,10 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -3737,10 +3737,10 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8755,7 +8615,7 @@ index 00711383..3b19eb71 100644 \end{note} \pnum -@@ -3775,7 +3775,7 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -3777,7 +3777,7 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8764,7 +8624,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -4441,7 +4441,7 @@ If +@@ -4443,7 +4443,7 @@ If \item the types of \tcode{first1}, \tcode{last1}, \tcode{first2}, and \tcode{last2} meet the @@ -8773,7 +8633,7 @@ index 00711383..3b19eb71 100644 and \tcode{last1 - first1 != last2 - first2} for the overloads in namespace \tcode{std}; \item -@@ -4765,7 +4765,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} +@@ -4767,7 +4767,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} \pnum \remarks @@ -8782,7 +8642,7 @@ index 00711383..3b19eb71 100644 \end{itemdescr} \rSec2[alg.starts.with]{Starts with} -@@ -5180,7 +5180,7 @@ do not overlap. +@@ -5182,7 +5182,7 @@ do not overlap. For the overload with an \tcode{ExecutionPolicy}, there might be a performance cost if \tcode{iterator_traits::value_type} @@ -8791,7 +8651,7 @@ index 00711383..3b19eb71 100644 \end{note} \pnum -@@ -5991,7 +5991,7 @@ Let $E$ be +@@ -5993,7 +5993,7 @@ Let $E$ be \expects For the algorithms in namespace \tcode{std}, the type of \tcode{*first} @@ -8800,7 +8660,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -6101,7 +6101,7 @@ do not overlap. +@@ -6103,7 +6103,7 @@ do not overlap. For the overloads with an \tcode{ExecutionPolicy}, there might be a performance cost if \tcode{iterator_traits::value_type} does not meet @@ -8809,7 +8669,7 @@ index 00711383..3b19eb71 100644 \end{note} \pnum -@@ -6174,7 +6174,7 @@ let $E$ be +@@ -6176,7 +6176,7 @@ let $E$ be For the overloads in namespace \tcode{std}, \tcode{pred} is an equivalence relation and the type of \tcode{*first} meets @@ -8818,7 +8678,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -6277,18 +6277,18 @@ let $E$ be +@@ -6279,18 +6279,18 @@ let $E$ be \libconcept{forward_iterator}\iref{iterator.concept.forward}, then there are no additional requirements for \tcode{T}. Otherwise, if \tcode{OutputIterator} meets @@ -8842,7 +8702,7 @@ index 00711383..3b19eb71 100644 \end{note} \end{itemize} \end{itemize} -@@ -6336,7 +6336,7 @@ template<@\libconcept{bidirectional_range}@ R> +@@ -6338,7 +6338,7 @@ template<@\libconcept{bidirectional_range}@ R> \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8851,7 +8711,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -6428,10 +6428,10 @@ template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S> +@@ -6430,10 +6430,10 @@ template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S> \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -8865,7 +8725,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -6572,13 +6572,13 @@ For the overload in namespace \tcode{std}: +@@ -6574,13 +6574,13 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{PopulationIterator} meets @@ -8882,7 +8742,7 @@ index 00711383..3b19eb71 100644 unless \tcode{Pop\-ulat\-ion\-Iter\-ator} models \libconcept{forward_iterator}\iref{iterator.concept.forward}. \item -@@ -6646,7 +6646,7 @@ For the overload in namespace \tcode{std}: +@@ -6648,7 +6648,7 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{RandomAccessIterator} meets @@ -8891,7 +8751,7 @@ index 00711383..3b19eb71 100644 \item The type \tcode{remove_reference_t} meets the uniform random bit generator\iref{rand.req.urng} requirements. -@@ -6698,7 +6698,7 @@ template<@\libconcept{forward_range}@ R> +@@ -6700,7 +6700,7 @@ template<@\libconcept{forward_range}@ R> \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8900,7 +8760,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -6752,10 +6752,10 @@ template<@\libconcept{forward_range}@ R> +@@ -6754,10 +6754,10 @@ template<@\libconcept{forward_range}@ R> \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8914,7 +8774,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -6769,7 +6769,7 @@ from \tcode{i = (last - first) - n - 1} and proceeding to \tcode{i = 0} if +@@ -6771,7 +6771,7 @@ from \tcode{i = (last - first) - n - 1} and proceeding to \tcode{i = 0} if \item for the overload in namespace \tcode{std} without an \tcode{ExecutionPolicy} template parameter, @@ -8923,7 +8783,7 @@ index 00711383..3b19eb71 100644 \item for the overloads in namespace \tcode{ranges}, \tcode{I} models \libconcept{bidirectional_iterator}. -@@ -6925,10 +6925,10 @@ for the overloads with no parameters by those names. +@@ -6927,10 +6927,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8937,7 +8797,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -6983,10 +6983,10 @@ for the overloads with no parameters by those names. +@@ -6985,10 +6985,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8951,7 +8811,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -7053,10 +7053,10 @@ for the overloads with no parameters by those names. +@@ -7055,10 +7055,10 @@ for the overloads with no parameters by those names. \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8965,7 +8825,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -7161,10 +7161,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. +@@ -7163,10 +7163,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8979,7 +8839,7 @@ index 00711383..3b19eb71 100644 \pnum For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and -@@ -7366,10 +7366,10 @@ for the overloads with no parameters by those names. +@@ -7368,10 +7368,10 @@ for the overloads with no parameters by those names. \range{first}{nth} and \range{nth}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8993,7 +8853,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -7717,7 +7717,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -7719,7 +7719,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -9002,7 +8862,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -7744,7 +7744,7 @@ Let $N = \tcode{last - first}$: +@@ -7746,7 +7746,7 @@ Let $N = \tcode{last - first}$: For the overload with no \tcode{ExecutionPolicy}, exactly $N$ applications of the predicate and projection. At most $N / 2$ swaps if the type of \tcode{first} meets @@ -9011,7 +8871,7 @@ index 00711383..3b19eb71 100644 for the overloads in namespace \tcode{std} or models \libconcept{bidirectional_iterator} for the overloads in namespace \tcode{ranges}, -@@ -7786,10 +7786,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -7788,10 +7788,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9025,7 +8885,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -7872,7 +7872,7 @@ The input range and output ranges do not overlap. +@@ -7874,7 +7874,7 @@ The input range and output ranges do not overlap. \begin{note} For the overload with an \tcode{ExecutionPolicy}, there might be a performance cost if \tcode{first}'s value type @@ -9034,7 +8894,7 @@ index 00711383..3b19eb71 100644 \end{note} \pnum -@@ -8077,10 +8077,10 @@ for the overloads with no parameters by those names. +@@ -8079,10 +8079,10 @@ for the overloads with no parameters by those names. sorted with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9048,7 +8908,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -8646,10 +8646,10 @@ The range \range{first}{last - 1} +@@ -8648,10 +8648,10 @@ The range \range{first}{last - 1} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9062,7 +8922,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -8699,10 +8699,10 @@ The range \range{first}{last} +@@ -8701,10 +8701,10 @@ The range \range{first}{last} is a valid non-empty heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9076,7 +8936,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -8755,10 +8755,10 @@ for the overloads with no parameters by those names. +@@ -8757,10 +8757,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9090,7 +8950,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -8808,10 +8808,10 @@ The range \range{first}{last} is +@@ -8810,10 +8810,10 @@ The range \range{first}{last} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -9104,7 +8964,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -8970,7 +8970,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -9124,7 +8984,7 @@ index 00711383..3b19eb71 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9048,7 +9048,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -9144,7 +9004,7 @@ index 00711383..3b19eb71 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9128,7 +9128,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -9164,7 +9024,7 @@ index 00711383..3b19eb71 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9362,7 +9362,7 @@ for the overloads with no parameter \tcode{proj}. +@@ -9364,7 +9364,7 @@ for the overloads with no parameter \tcode{proj}. \expects \tcode{bool(invoke(comp, invoke(proj, hi), invoke(proj, lo)))} is \tcode{false}. For the first form, type \tcode{T} @@ -9173,7 +9033,7 @@ index 00711383..3b19eb71 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9551,7 +9551,7 @@ for overloads with no parameters by those names. +@@ -9553,7 +9553,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9182,7 +9042,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -9610,7 +9610,7 @@ for overloads with no parameters by those names. +@@ -9612,7 +9612,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9191,7 +9051,7 @@ index 00711383..3b19eb71 100644 \pnum \effects -@@ -9929,8 +9929,8 @@ template +@@ -9931,8 +9931,8 @@ template \pnum \expects \tcode{T} meets @@ -9202,7 +9062,7 @@ index 00711383..3b19eb71 100644 In the range \crange{first}{last}, \tcode{binary_op} neither modifies elements nor invalidates iterators or subranges. -@@ -10052,7 +10052,7 @@ are convertible to \tcode{T}. +@@ -10054,7 +10054,7 @@ are convertible to \tcode{T}. \expects \begin{itemize} \item @@ -9211,7 +9071,7 @@ index 00711383..3b19eb71 100644 \item \tcode{binary_op} neither invalidates iterators or subranges, nor modifies elements in the range \crange{first}{last}. -@@ -10096,8 +10096,8 @@ template}. +@@ -10793,7 +10793,7 @@ that denotes an object of type \tcode{minus<>}. \begin{itemize} \item For the overloads with no \tcode{ExecutionPolicy}, @@ -9314,7 +9174,7 @@ index 0bfd8612..b166e3a9 100644 invocation of the destructor does not actually throw. \end{note} diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index 8caccce8..0a896c57 100644 +index b4b70046..b734f13a 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -758,9 +758,9 @@ namespace std { @@ -9380,7 +9240,7 @@ index 8caccce8..0a896c57 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 97e105ec..9daa0bde 100644 +index 251a81ab..d141246e 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9468,7 +9328,7 @@ index ddaaf96d..fd54144f 100644 \begin{itemize} \item for the first specialization, \tcode{add_volatile_t}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index eaf34520..16d1fb3a 100644 +index f01c8ec2..e15caea7 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -1687,10 +1687,10 @@ An \tcode{fpos} type specifies file position information. @@ -9549,7 +9409,7 @@ index eaf34520..16d1fb3a 100644 \pnum If an iterator of type \tcode{directory_iterator} reports an error or diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index b657c9b8..a5f0813c 100644 +index 6effcd33..db29b7c9 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -1854,7 +1854,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. @@ -9658,7 +9518,7 @@ index b657c9b8..a5f0813c 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index a0c2615e..26449bc4 100644 +index add15a22..2d81c518 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1157,7 +1157,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type @@ -9831,7 +9691,7 @@ index a0c2615e..26449bc4 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index d5f690b6..14c7341b 100644 +index cd75eee5..bbe21840 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -94,12 +94,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -10377,7 +10237,7 @@ index d5f690b6..14c7341b 100644 \rSec3[meta.trans.cv]{Const-volatile modifications} -@@ -1936,16 +1930,16 @@ perform other modifications of a type. +@@ -1942,16 +1936,16 @@ perform other modifications of a type. \tcode{template\br struct \libglobal{remove_cvref};} & The member typedef \tcode{type} denotes @@ -10399,7 +10259,7 @@ index d5f690b6..14c7341b 100644 \begin{tailnote} This behavior is similar to the lvalue-to-rvalue\iref{conv.lval}, array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} -@@ -2025,7 +2019,7 @@ argument passing. +@@ -2031,7 +2025,7 @@ argument passing. \tcode{template} \tcode{struct \libglobal{unwrap_reference};} & If \tcode{T} is @@ -10408,7 +10268,7 @@ index d5f690b6..14c7341b 100644 the member typedef \tcode{type} of \tcode{unwrap_reference} denotes \tcode{X\&}, otherwise \tcode{type} denotes \tcode{T}. \\ \rowsep -@@ -2033,7 +2027,7 @@ argument passing. +@@ -2039,7 +2033,7 @@ argument passing. \tcode{template} \tcode{\libglobal{unwrap_ref_decay};} & The member typedef \tcode{type} of \tcode{unwrap_ref_decay} @@ -10417,7 +10277,7 @@ index d5f690b6..14c7341b 100644 \end{libreqtab2a} \pnum -@@ -2051,7 +2045,7 @@ when the header \tcode{}\iref{functional.syn} is included. +@@ -2057,7 +2051,7 @@ when the header \tcode{}\iref{functional.syn} is included. Let: \begin{itemize} \item \tcode{\placeholdernc{CREF}(A)} be @@ -10426,7 +10286,7 @@ index d5f690b6..14c7341b 100644 \item \tcode{\placeholdernc{XREF}(A)} denote a unary alias template \tcode{T} such that \tcode{T} denotes the same type as \tcode{U} with the addition of \tcode{A}'s cv and reference qualifiers, for a non-reference cv-unqualified -@@ -2076,15 +2070,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: +@@ -2082,15 +2076,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: \placeholdernc{COPYCV}(\brk{}Y, X) \&)} if that type exists and is a reference type. \item Otherwise, let \tcode{C} be @@ -10445,7 +10305,7 @@ index d5f690b6..14c7341b 100644 \tcode{true}, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is \tcode{D}. \item Otherwise, if \tcode{A} is an lvalue reference and \tcode{B} is an rvalue reference, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is -@@ -2383,7 +2377,7 @@ template struct negation : @\seebelow@ { }; +@@ -2389,7 +2383,7 @@ template struct negation : @\seebelow@ { }; The class template \tcode{negation} forms the logical negation of its template type argument. The type \tcode{negation} @@ -10455,7 +10315,7 @@ index d5f690b6..14c7341b 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index 3e884c1e..a7a59c37 100644 +index c37ff4f3..57b2e5a8 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul @@ -10579,7 +10439,7 @@ index 3e884c1e..a7a59c37 100644 whose \tcode{value_type} is the template parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. diff --git a/source/strings.tex b/source/strings.tex -index 0ff1e21f..9e0a3366 100644 +index 6f584dff..18f79d6b 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -238,10 +238,10 @@ using state_type = @\seebelow@; @@ -10607,7 +10467,7 @@ index 0ff1e21f..9e0a3366 100644 meets the constexpr iterator requirements\iref{iterator.requirements.general}, whose \tcode{value_type} is the template parameter \tcode{charT}. diff --git a/source/support.tex b/source/support.tex -index 5057313b..2bceb367 100644 +index b67bffbb..c11f5627 100644 --- a/source/support.tex +++ b/source/support.tex @@ -3648,11 +3648,11 @@ namespace std { @@ -10646,7 +10506,7 @@ index 5057313b..2bceb367 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index 665a3d2e..15a86a53 100644 +index 9e0d743e..cac7b8b1 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10709,7 +10569,7 @@ index 665a3d2e..15a86a53 100644 the following expressions are well-formed, have type \tcode{bool}, and have the specified semantics (\tcode{m} denotes a value of type \tcode{L}, -@@ -4124,7 +4124,7 @@ namespace std { +@@ -4127,7 +4127,7 @@ namespace std { \indexlibraryglobal{atomic}% \pnum The template argument for \tcode{T} shall meet the @@ -10718,7 +10578,7 @@ index 665a3d2e..15a86a53 100644 The program is ill-formed if any of \begin{itemize} \item \tcode{is_trivially_copyable_v}, -@@ -6591,11 +6591,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, +@@ -6594,11 +6594,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, They meet the requirements set out in \ref{thread.mutex.requirements.mutex}. In this description, \tcode{m} denotes an object of a mutex type. \begin{note} @@ -10732,7 +10592,7 @@ index 665a3d2e..15a86a53 100644 If initialization of an object of a mutex type fails, an exception of type \tcode{system_error} is thrown. The mutex types are neither copyable nor movable. -@@ -6864,7 +6864,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de +@@ -6867,7 +6867,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de object of an instantiation of \link{\tcode{time_point}}{time.point}. \begin{note} @@ -10741,7 +10601,7 @@ index 665a3d2e..15a86a53 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -7076,7 +7076,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally +@@ -7079,7 +7079,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally meet the requirements set out below. In this description, \tcode{m} denotes an object of a shared mutex type. \begin{note} @@ -10750,7 +10610,7 @@ index 665a3d2e..15a86a53 100644 requirements\iref{thread.req.lockable.shared}. \end{note} -@@ -7253,7 +7253,7 @@ meet the requirements set out below. In this description, +@@ -7256,7 +7256,7 @@ meet the requirements set out below. In this description, \tcode{abs_time} denotes an object of an instantiation of \link{\tcode{time_point}}{time.point}. \begin{note} @@ -10759,7 +10619,7 @@ index 665a3d2e..15a86a53 100644 requirements\iref{thread.req.lockable.shared.timed}. \end{note} -@@ -7463,7 +7463,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable +@@ -7466,7 +7466,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable object throughout the \tcode{lock_guard} object's \deflink{lifetime}{basic.life}. The behavior of a program is undefined if the lockable object referenced by \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} @@ -10768,7 +10628,7 @@ index 665a3d2e..15a86a53 100644 requirements\iref{thread.req.lockable.basic}. \indexlibraryctor{lock_guard}% -@@ -7542,12 +7542,12 @@ object. +@@ -7545,12 +7545,12 @@ object. If \tcode{sizeof...(MutexTypes)} is one, let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. \tcode{Mutex} @@ -10783,7 +10643,7 @@ index 665a3d2e..15a86a53 100644 and there is no member \tcode{mutex_type}. \end{itemize} -@@ -7662,17 +7662,17 @@ copyable but are movable. The behavior of a program is undefined if the containe +@@ -7665,17 +7665,17 @@ copyable but are movable. The behavior of a program is undefined if the containe \tcode{pm} is not null and the lockable object pointed to by \tcode{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied @@ -10807,7 +10667,7 @@ index 665a3d2e..15a86a53 100644 \end{note} \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} -@@ -7722,7 +7722,7 @@ unique_lock(mutex_type& m, try_to_lock_t); +@@ -7725,7 +7725,7 @@ unique_lock(mutex_type& m, try_to_lock_t); \begin{itemdescr} \pnum \expects @@ -10816,7 +10676,7 @@ index 665a3d2e..15a86a53 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -7764,7 +7764,7 @@ template +@@ -7767,7 +7767,7 @@ template \pnum \expects The supplied \tcode{Mutex} type meets the @@ -10825,7 +10685,7 @@ index 665a3d2e..15a86a53 100644 \pnum \effects -@@ -7786,7 +7786,7 @@ template +@@ -7789,7 +7789,7 @@ template \begin{itemdescr} \pnum \expects @@ -10834,7 +10694,7 @@ index 665a3d2e..15a86a53 100644 \pnum \effects -@@ -7873,7 +7873,7 @@ bool try_lock(); +@@ -7876,7 +7876,7 @@ bool try_lock(); \begin{itemdescr} \pnum \expects @@ -10843,7 +10703,7 @@ index 665a3d2e..15a86a53 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -7912,7 +7912,7 @@ template +@@ -7915,7 +7915,7 @@ template \begin{itemdescr} \pnum \expects @@ -10852,7 +10712,7 @@ index 665a3d2e..15a86a53 100644 requirements\iref{thread.req.lockable.timed}. \pnum -@@ -7951,7 +7951,7 @@ template +@@ -7954,7 +7954,7 @@ template \begin{itemdescr} \pnum \expects @@ -10861,7 +10721,7 @@ index 665a3d2e..15a86a53 100644 \pnum \effects -@@ -8144,16 +8144,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type +@@ -8147,16 +8147,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type is undefined if the contained pointer \tcode{pm} is not null and the lockable object pointed to by \tcode{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied @@ -10882,7 +10742,7 @@ index 665a3d2e..15a86a53 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -8238,7 +8238,7 @@ template +@@ -8241,7 +8241,7 @@ template \begin{itemdescr} \pnum \expects @@ -10891,7 +10751,7 @@ index 665a3d2e..15a86a53 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8262,7 +8262,7 @@ template +@@ -8265,7 +8265,7 @@ template \begin{itemdescr} \pnum \expects @@ -10900,7 +10760,7 @@ index 665a3d2e..15a86a53 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8387,7 +8387,7 @@ template +@@ -8390,7 +8390,7 @@ template \begin{itemdescr} \pnum \expects @@ -10909,7 +10769,7 @@ index 665a3d2e..15a86a53 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8427,7 +8427,7 @@ template +@@ -8430,7 +8430,7 @@ template \begin{itemdescr} \pnum \expects @@ -10918,7 +10778,7 @@ index 665a3d2e..15a86a53 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8566,7 +8566,7 @@ template int try_lock(L1&, L2&, L3&...); +@@ -8569,7 +8569,7 @@ template int try_lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10927,7 +10787,7 @@ index 665a3d2e..15a86a53 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -8595,7 +8595,7 @@ template void lock(L1&, L2&, L3&...); +@@ -8598,7 +8598,7 @@ template void lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10936,7 +10796,7 @@ index 665a3d2e..15a86a53 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9261,7 +9261,7 @@ This can happen if the re-locking of the mutex throws an exception. +@@ -9264,7 +9264,7 @@ This can happen if the re-locking of the mutex throws an exception. \pnum In \ref{thread.condition.condvarany}, template arguments for template parameters named \tcode{Lock} @@ -10945,7 +10805,7 @@ index 665a3d2e..15a86a53 100644 requirements\iref{thread.req.lockable.basic}. \begin{note} All of the standard -@@ -10199,24 +10199,24 @@ execute atomically. +@@ -10202,24 +10202,24 @@ execute atomically. \pnum \tcode{CompletionFunction} shall meet the @@ -10976,7 +10836,7 @@ index 665a3d2e..15a86a53 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -10717,7 +10717,7 @@ namespace std { +@@ -10720,7 +10720,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10985,7 +10845,7 @@ index 665a3d2e..15a86a53 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -10742,7 +10742,7 @@ template +@@ -10745,7 +10745,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -10994,7 +10854,7 @@ index 665a3d2e..15a86a53 100644 \end{itemdescr} \indexlibraryctor{promise}% -@@ -11063,7 +11063,7 @@ namespace std { +@@ -11066,7 +11066,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -11003,7 +10863,7 @@ index 665a3d2e..15a86a53 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -11369,7 +11369,7 @@ namespace std { +@@ -11372,7 +11372,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -11012,7 +10872,7 @@ index 665a3d2e..15a86a53 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -12277,7 +12277,7 @@ the expression \tcode{d(ptr)} is valid. +@@ -12280,7 +12280,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -11021,7 +10881,7 @@ index 665a3d2e..15a86a53 100644 \pnum If \tcode{D} is trivially copyable, -@@ -12335,7 +12335,7 @@ namespace std { +@@ -12338,7 +12338,7 @@ namespace std { \pnum This class meets the requirements of @@ -11030,7 +10890,7 @@ index 665a3d2e..15a86a53 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -12483,8 +12483,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -12486,8 +12486,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -11041,7 +10901,7 @@ index 665a3d2e..15a86a53 100644 \pnum \effects -@@ -12676,7 +12676,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -12679,7 +12679,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -11051,7 +10911,7 @@ index 665a3d2e..15a86a53 100644 \pnum \tcode{T} may be an incomplete type. diff --git a/source/time.tex b/source/time.tex -index bf00eae4..b42c4fad 100644 +index 39598098..ca78ddce 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1039,13 +1039,13 @@ SI definition is a measure of the quality of implementation. @@ -11254,7 +11114,7 @@ index bf00eae4..b42c4fad 100644 and has a value type of \tcode{tzdb}. \indexlibrarymember{front}{tzdb_list}% -@@ -11554,7 +11554,7 @@ template<> struct hash; +@@ -11555,7 +11555,7 @@ template<> struct hash; The specializations are enabled\iref{unord.hash}. \begin{note} All the \tcode{hash} specializations listed above meet the @@ -11264,7 +11124,7 @@ index bf00eae4..b42c4fad 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index a6b9d7f9..440bd426 100644 +index 171c1b2f..44c92b72 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -258,9 +258,9 @@ template @@ -11769,27 +11629,28 @@ index a6b9d7f9..440bd426 100644 2.43.0 -From d66f5c978bdedfb55a29134b9fee9fd9dbadf2ad Mon Sep 17 00:00:00 2001 +From 4643552b8be6397673946055d2d05a54d04e7867 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 -Subject: [PATCH 11/12] Remove awkward \linebreaks. +Subject: [PATCH 9/9] Remove awkward \linebreaks. --- - source/algorithms.tex | 2 +- - source/containers.tex | 49 +++++++++++++++++++++---------------------- - source/exec.tex | 18 ++++++++-------- - source/memory.tex | 6 +++--- + source/algorithms.tex | 4 ++-- + source/containers.tex | 53 +++++++++++++++++++++---------------------- + source/exec.tex | 18 +++++++-------- + source/memory.tex | 6 ++--- source/meta.tex | 2 +- source/numerics.tex | 4 ++-- - source/ranges.tex | 36 +++++++++++++++---------------- - source/utilities.tex | 10 ++++----- - 8 files changed, 63 insertions(+), 64 deletions(-) + source/ranges.tex | 38 +++++++++++++++---------------- + source/threads.tex | 8 +++---- + source/utilities.tex | 10 ++++---- + 9 files changed, 71 insertions(+), 72 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 3b19eb71..3c0b2091 100644 +index 9b6f07ea..267f4770 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -5586,7 +5586,7 @@ Let: +@@ -5588,7 +5588,7 @@ Let: \tcode{invoke(op, invoke(proj, *(first1 + (i - result))))} for unary transforms defined in namespace \tcode{ranges}; \item @@ -11798,10 +11659,37 @@ index 3b19eb71..3c0b2091 100644 for binary transforms defined in namespace \tcode{ranges}. \end{itemize} \end{itemize} +@@ -11738,7 +11738,7 @@ namespace ranges { + \pnum + \constraints + \tcode{is_unbounded_array_v} is \tcode{false}. +-The expression \tcode{::new (declval()) T(\linebreak{}declval()...)} ++The expression \tcode{::new (declval()) T(declval()...)} + is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand}. + + \pnum diff --git a/source/containers.tex b/source/containers.tex -index bbb3230c..9115aaba 100644 +index b1b1b3fb..6ae695de 100644 --- a/source/containers.tex +++ b/source/containers.tex +@@ -1456,7 +1456,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. + \pnum + \recommended + If \tcode{R} models \tcode{ranges::\libconcept{approximately_sized_range}} and +-\tcode{ranges::distance(\linebreak{}rg) <= ranges::reserve_hint(rg)} is \tcode{true}, ++\tcode{ranges::distance(rg) <= ranges::reserve_hint(rg)} is \tcode{true}, + an implementation should not perform more than a single reallocation. + + \pnum +@@ -1828,7 +1828,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. + \pnum + \recommended + If \tcode{R} models \tcode{ranges::\libconcept{approximately_sized_range}} and +-\tcode{ranges::distance(\linebreak{}rg) <= ranges::reserve_hint(rg)} is \tcode{true}, ++\tcode{ranges::distance(rg) <= ranges::reserve_hint(rg)} is \tcode{true}, + an implementation should not perform any reallocation. + \end{itemdescr} + @@ -2444,8 +2444,7 @@ calling \tcode{ator_traits::template rebind_traits::dealloc Assigns \tcode{nh.ptr_} to \tcode{ptr_}. \item @@ -11812,7 +11700,7 @@ index bbb3230c..9115aaba 100644 \item Assigns \keyword{nullptr} to \tcode{nh.ptr_} and assigns \tcode{nullopt} to -@@ -7478,14 +7477,14 @@ template +@@ -7467,14 +7466,14 @@ template \pnum \expects \tcode{T} is \oldconcept{EmplaceConstructible} into \tcode{forward_list} @@ -11829,7 +11717,7 @@ index bbb3230c..9115aaba 100644 \pnum \returns -@@ -10637,7 +10636,7 @@ template +@@ -10633,7 +10632,7 @@ template \pnum The expression \tcode{\exposid{is-vector-bool-reference}} is \tcode{true} @@ -11838,7 +11726,7 @@ index bbb3230c..9115aaba 100644 for some type \tcode{Alloc} and \tcode{vector} is not a program-defined specialization. \end{itemdescr} -@@ -12029,7 +12028,7 @@ there is no effect. +@@ -12025,7 +12024,7 @@ there is no effect. Otherwise, let \tcode{r} be \tcode{equal_range(k)}. Constructs an object \tcode{u} of type \tcode{value_type} with \tcode{piecewise_construct, forward_as_tuple(std::forward(k)), @@ -11847,16 +11735,16 @@ index bbb3230c..9115aaba 100644 If \tcode{equal_range(u.first) == r} is \tcode{false}, the behavior is undefined. Inserts \tcode{u} into \tcode{*this}. -@@ -17515,7 +17514,7 @@ template +@@ -17511,7 +17510,7 @@ template \pnum \effects - Equivalent to \tcode{flat_map(s, key_cont, mapped_cont)} and --\tcode{flat_map(s, key_cont, \linebreak{}mapped_cont, comp)}, respectively, -+\tcode{flat_map(s, key_cont, mapped_cont, comp)}, respectively, + Equivalent to \tcode{flat_map(sorted_unique, key_cont, mapped_cont)} and +-\tcode{flat_map(sorted_unique, key_cont, \linebreak{}mapped_cont, comp)}, respectively, ++\tcode{flat_map(sorted_unique, key_cont, mapped_cont, comp)}, respectively, except that \tcode{\exposid{c}.keys} and \tcode{\exposid{c}.values} are constructed with uses-allocator construction\iref{allocator.uses.construction}. -@@ -17699,7 +17698,7 @@ template constexpr pair emplace(Args&&... args); +@@ -17695,7 +17694,7 @@ template constexpr pair emplace(Args&&... args); \pnum \effects Initializes an object \tcode{t} of type \tcode{pair} @@ -11865,7 +11753,7 @@ index bbb3230c..9115aaba 100644 if the map already contains an element whose key is equivalent to \tcode{t.first}, \tcode{*this} is unchanged. -@@ -17976,7 +17975,7 @@ template +@@ -17972,7 +17971,7 @@ template \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11874,7 +11762,7 @@ index bbb3230c..9115aaba 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18031,7 +18030,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. +@@ -18027,7 +18026,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11883,7 +11771,7 @@ index bbb3230c..9115aaba 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18645,14 +18644,14 @@ template +@@ -18641,14 +18640,14 @@ template \pnum \effects Equivalent to \tcode{flat_multimap(key_cont, mapped_cont)} and @@ -11900,7 +11788,7 @@ index bbb3230c..9115aaba 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -23205,7 +23204,7 @@ is representable as a value of type \tcode{index_type.} +@@ -23202,7 +23201,7 @@ is representable as a value of type \tcode{index_type.} \item If \exposid{rank_} is greater than one, then the product of @@ -11909,7 +11797,7 @@ index bbb3230c..9115aaba 100644 all values \tcode{ext.extent($k$)} with $k$ in the range of \range{1}{\exposid{rank_}} is representable as a value of type \tcode{index_type}. -@@ -23284,7 +23283,7 @@ template +@@ -23281,7 +23280,7 @@ template \item If \exposid{rank_} is greater than \tcode{1} and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11918,7 +11806,7 @@ index bbb3230c..9115aaba 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(0))) -@@ -23351,7 +23350,7 @@ is \tcode{true}. +@@ -23348,7 +23347,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11927,7 +11815,7 @@ index bbb3230c..9115aaba 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(0))) -@@ -23749,7 +23748,7 @@ Implementations should not store this value +@@ -23746,7 +23745,7 @@ Implementations should not store this value if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. \begin{note} Using \tcode{extents} @@ -11936,7 +11824,7 @@ index bbb3230c..9115aaba 100644 would achieve this. \end{note} \end{itemdescr} -@@ -23832,13 +23831,13 @@ is representable as a value of type \tcode{index_type}. +@@ -23829,13 +23828,13 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -11952,7 +11840,7 @@ index bbb3230c..9115aaba 100644 \end{itemize} \pnum -@@ -23911,7 +23910,7 @@ template +@@ -23908,7 +23907,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11961,7 +11849,7 @@ index bbb3230c..9115aaba 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -23979,7 +23978,7 @@ is \tcode{true}. +@@ -23976,7 +23975,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11970,7 +11858,7 @@ index bbb3230c..9115aaba 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) -@@ -25568,7 +25567,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, +@@ -25565,7 +25564,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, \item \tcode{stride(k) * \exposid{de-ice}($s_k$.stride)} if $S_k$ is a specialization of \tcode{strided_slice} and @@ -11979,7 +11867,7 @@ index bbb3230c..9115aaba 100644 \item otherwise, \tcode{stride($k$)}. \end{itemize} -@@ -25966,11 +25965,11 @@ is well-formed when treated as an unevaluated operand. +@@ -25963,11 +25962,11 @@ is well-formed when treated as an unevaluated operand. \begin{itemize} \item \tcode{decltype(submdspan_mapping(src.mapping(), slices...))} @@ -11993,7 +11881,7 @@ index bbb3230c..9115aaba 100644 is \tcode{true}. \item -@@ -26000,11 +25999,11 @@ all of the following are \tcode{true}: +@@ -25997,11 +25996,11 @@ all of the following are \tcode{true}: \item $0 \le \tcode{\exposid{first_}(slices...)}$ $\le \tcode{\exposid{last_}<$k$>(src.extents(), slices...)}$ @@ -12008,7 +11896,7 @@ index bbb3230c..9115aaba 100644 \item diff --git a/source/exec.tex b/source/exec.tex -index 9daa0bde..e99183a3 100644 +index d141246e..1730edd5 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -2831,7 +2831,7 @@ except that \tcode{sch} is evaluated only once. @@ -12083,7 +11971,7 @@ index 9daa0bde..e99183a3 100644 Otherwise, it is equivalent to: \begin{codeblock} using result_type = @\exposid{sync-wait-with-variant-result-type}@; -@@ -4963,7 +4963,7 @@ Let \tcode{Vs} be a pack of the types in the \exposid{type-list} named by +@@ -4962,7 +4962,7 @@ Let \tcode{Vs} be a pack of the types in the \exposid{type-list} named by Let \tcode{Es} be a pack of the types in the \exposid{type-list} named by \tcode{\exposid{gather-signatures}}, where \exposid{error-list} is an alias template @@ -12093,7 +11981,7 @@ index 9daa0bde..e99183a3 100644 \pnum diff --git a/source/memory.tex b/source/memory.tex -index 26449bc4..1977f519 100644 +index 2d81c518..8c64e657 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1255,7 +1255,7 @@ A \tcode{tuple} value determined as follows: @@ -12124,10 +12012,10 @@ index 26449bc4..1977f519 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index 14c7341b..614569d9 100644 +index bbe21840..71ecd729 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -2178,7 +2178,7 @@ present as follows: +@@ -2184,7 +2184,7 @@ present as follows: \item Let \tcode{R} be \tcode{\placeholdernc{COMMON-REF}(T1, T2)}. If \tcode{T1} and \tcode{T2} are reference types, \tcode{R} is well-formed, and @@ -12137,7 +12025,7 @@ index 14c7341b..614569d9 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index a7a59c37..7454cd9e 100644 +index 57b2e5a8..05ccf975 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -13781,7 +13781,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. @@ -12159,9 +12047,18 @@ index a7a59c37..7454cd9e 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index f1523bb5..97e4dc1f 100644 +index 24fc04eb..1705fe1a 100644 --- a/source/ranges.tex +++ b/source/ranges.tex +@@ -1446,7 +1446,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, + regardless of the evaluation of \tcode{ranges::begin(t)}. + \begin{note} + \tcode{ranges::reserve_hint(t)} is otherwise not required to be well-defined +-after evaluating \tcode{ranges::\linebreak begin(t)}. ++after evaluating \tcode{ranges::begin(t)}. + For example, + it is possible for \tcode{ranges::reserve_hint(t)} to be well-defined for + an \libconceptx{approximate\-ly_sized_range}{approximately_sized_range} whose @@ -3637,7 +3637,7 @@ constexpr explicit repeat_view(piecewise_construct_t, Initializes \exposid{value_} with \tcode{make_from_tuple(std::move(value_args))} @@ -12303,8 +12200,48 @@ index f1523bb5..97e4dc1f 100644 \exposid{missing_} with \tcode{missing}. \end{itemdescr} +diff --git a/source/threads.tex b/source/threads.tex +index cac7b8b1..50facedd 100644 +--- a/source/threads.tex ++++ b/source/threads.tex +@@ -3412,7 +3412,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, + \tcode{failure} is + \tcode{memory_order::relaxed}, + \tcode{memory_order::acquire}, or +-\tcode{memory_order::\linebreak seq_cst}. ++\tcode{memory_order::seq_cst}. + + \pnum + \effects +@@ -4420,7 +4420,7 @@ For the \tcode{volatile} overload of this function, + \tcode{failure} is + \tcode{memory_order::relaxed}, + \tcode{memory_order::acquire}, or +-\tcode{memory_order::\linebreak seq_cst}. ++\tcode{memory_order::seq_cst}. + + \pnum + \effects +@@ -5579,7 +5579,7 @@ bool compare_exchange_strong(shared_ptr& expected, shared_ptr desired, + \tcode{failure} is + \tcode{memory_order::relaxed}, + \tcode{memory_order::acquire}, or +-\tcode{memory_order::\linebreak seq_cst}. ++\tcode{memory_order::seq_cst}. + + \pnum + \effects +@@ -5892,7 +5892,7 @@ bool compare_exchange_strong(weak_ptr& expected, weak_ptr desired, + \tcode{failure} is + \tcode{memory_order::relaxed}, + \tcode{memory_order::acquire}, or +-\tcode{memory_order::\linebreak seq_cst}. ++\tcode{memory_order::seq_cst}. + + \pnum + \effects diff --git a/source/utilities.tex b/source/utilities.tex -index 440bd426..20875194 100644 +index 44c92b72..895b43b3 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -2061,7 +2061,7 @@ equals \tcode{tuple_size_v>}, @@ -12355,199 +12292,3 @@ index 440bd426..20875194 100644 -- 2.43.0 - -From 5ac48a40d0dcf6812545ed3b786d5416ad5361de Mon Sep 17 00:00:00 2001 -From: Eelis van der Weegen -Date: Sun, 28 Jul 2024 13:48:14 +0200 -Subject: [PATCH 12/12] Avoid `for\-ward`. - -Because the 'for' gets highlighted as a keyword. ---- - source/algorithms.tex | 2 +- - source/containers.tex | 16 ++++++++-------- - source/ranges.tex | 4 ++-- - source/threads.tex | 4 ++-- - source/utilities.tex | 10 +++++----- - 5 files changed, 18 insertions(+), 18 deletions(-) - -diff --git a/source/algorithms.tex b/source/algorithms.tex -index 3c0b2091..aa60e0cc 100644 ---- a/source/algorithms.tex -+++ b/source/algorithms.tex -@@ -11896,7 +11896,7 @@ Otherwise, calls \tcode{ranges::generate(std::forward(r), ref(g))}. - \pnum - \remarks - The effects of \tcode{generate_random(r, g)} shall be equivalent to --\tcode{ranges::generate(std::for\-ward(r), ref(g))}. -+\tcode{ranges::generate(std::forward(r), ref(g))}. - \begin{note} - This implies that \tcode{g.generate_random(a)} fills \tcode{a} - with the same values as produced by invocation of \tcode{g()}. -diff --git a/source/containers.tex b/source/containers.tex -index 9115aaba..7f982f0d 100644 ---- a/source/containers.tex -+++ b/source/containers.tex -@@ -11933,7 +11933,7 @@ template - \pnum - \expects - \tcode{value_type} is \oldconcept{EmplaceConstructible} into \tcode{map} --from \tcode{piecewise_construct}, \tcode{for\-ward_as_tuple(k)}, -+from \tcode{piecewise_construct}, \tcode{forward_as_tuple(k)}, - \tcode{forward_as_tuple(std::forward(args)...)}. - - \pnum -@@ -11971,7 +11971,7 @@ template - \pnum - \expects - \tcode{value_type} is \oldconcept{EmplaceConstructible} into \tcode{map} --from \tcode{piecewise_construct}, \tcode{for\-ward_as_tuple(std::move(k))}, -+from \tcode{piecewise_construct}, \tcode{forward_as_tuple(std::move(k))}, - \tcode{forward_as_tuple(std::forward(args)...)}. - - \pnum -@@ -12068,7 +12068,7 @@ from \tcode{k}, \tcode{std::forward(obj)}. - \effects - If the map already contains an element \tcode{e} - whose key is equivalent to \tcode{k}, --assigns \tcode{std::for\-ward(obj)} to \tcode{e.second}. -+assigns \tcode{std::forward(obj)} to \tcode{e.second}. - Otherwise inserts an object of type \tcode{value_type} - constructed with \tcode{k}, \tcode{std::forward(obj)}. - -@@ -12102,13 +12102,13 @@ template - \pnum - \expects - \tcode{value_type} is \oldconcept{EmplaceConstructible} into \tcode{map} --from \tcode{std::move(k)}, \tcode{std::for\-ward(obj)}. -+from \tcode{std::move(k)}, \tcode{std::forward(obj)}. - - \pnum - \effects - If the map already contains an element \tcode{e} - whose key is equivalent to \tcode{k}, --assigns \tcode{std::for\-ward(obj)} to \tcode{e.second}. -+assigns \tcode{std::forward(obj)} to \tcode{e.second}. - Otherwise inserts an object of type \tcode{value_type} - constructed with \tcode{std::\brk{}move(k)}, \tcode{std::forward(obj)}. - -@@ -14059,13 +14059,13 @@ template - \pnum - \expects - \tcode{value_type} is \oldconcept{EmplaceConstructible} into \tcode{unordered_map} --from \tcode{k}, \tcode{std::for\-ward(obj)}. -+from \tcode{k}, \tcode{std::forward(obj)}. - - \pnum - \effects - If the map already contains an element \tcode{e} - whose key is equivalent to \tcode{k}, --assigns \tcode{std::for\-ward(obj)} to \tcode{e.second}. -+assigns \tcode{std::forward(obj)} to \tcode{e.second}. - Otherwise inserts an object of type \tcode{value_type} - constructed with \tcode{k}, \tcode{std::forward(obj)}. - -@@ -14105,7 +14105,7 @@ from \tcode{std::move(k)}, \tcode{std::\brk{}forward(obj)}. - \effects - If the map already contains an element \tcode{e} - whose key is equivalent to \tcode{k}, --assigns \tcode{std::for\-ward(obj)} to \tcode{e.second}. -+assigns \tcode{std::forward(obj)} to \tcode{e.second}. - Otherwise inserts an object of type \tcode{value_type} - constructed with \tcode{std::\brk{}move(k)}, \tcode{std::forward(obj)}. - -diff --git a/source/ranges.tex b/source/ranges.tex -index 97e4dc1f..34f51c49 100644 ---- a/source/ranges.tex -+++ b/source/ranges.tex -@@ -6816,7 +6816,7 @@ namespace std::ranges { - then \tcode{iterator_concept} denotes \tcode{bidirectio\-nal_iterator_tag}. - \item Otherwise, if \exposid{ref-is-glvalue} is \tcode{true} and - \exposid{Base} and \tcode{range_reference_t<\exposid{Base}>} -- each model \libconceptx{for\-ward_range}{forward_range}, then \tcode{iterator_concept} denotes -+ each model \libconceptx{forward_range}{forward_range}, then \tcode{iterator_concept} denotes - \tcode{forward_iterator_tag}. - \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. - \end{itemize} -@@ -11502,7 +11502,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. - \item - Otherwise, - if \tcode{\exposconcept{all-forward}} is modeled, --then \tcode{iterator_concept} denotes \tcode{for\-ward_iterator_tag}. -+then \tcode{iterator_concept} denotes \tcode{forward_iterator_tag}. - \item - Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. - \end{itemize} -diff --git a/source/threads.tex b/source/threads.tex -index 15a86a53..42a0dab7 100644 ---- a/source/threads.tex -+++ b/source/threads.tex -@@ -11687,7 +11687,7 @@ the corresponding policies): - \begin{itemize} - \item - If \tcode{launch::async} is set in \tcode{policy}, calls --\tcode{invoke(auto(std::forward(f)), auto(std::for\-ward(args))...)}\iref{func.invoke,thread.thread.constr} -+\tcode{invoke(auto(std::forward(f)), auto(std::forward(args))...)}\iref{func.invoke,thread.thread.constr} - as if in a new thread of execution represented by a \tcode{thread} object - with the values produced by \tcode{auto} - being materialized\iref{conv.rval} in the thread that called \tcode{async}. -@@ -11705,7 +11705,7 @@ reference that state. - \item - If \tcode{launch::deferred} is set in \tcode{policy}, - stores \tcode{auto(std::forward(f))} and --\tcode{auto(std::for\-ward(args))...} -+\tcode{auto(std::forward(args))...} - in the shared state. These copies of \tcode{f} and \tcode{args} constitute - a \defnadj{deferred}{function}. Invocation of the deferred function evaluates - \tcode{invoke(std::move(g), std::move(xyz))} where \tcode{g} is the stored value of -diff --git a/source/utilities.tex b/source/utilities.tex -index 20875194..3fcce1a2 100644 ---- a/source/utilities.tex -+++ b/source/utilities.tex -@@ -6848,7 +6848,7 @@ Let \tcode{VT} be \tcode{decay_t}. - \effects - Calls \tcode{reset()}. - Then direct-non-list-initializes the contained value of type \tcode{VT} --with \tcode{std::for\-ward(args)...}. -+with \tcode{std::forward(args)...}. - - \pnum - \ensures -@@ -9727,7 +9727,7 @@ is well-formed. - If \tcode{has_value()} is \tcode{true}, \tcode{expected()}; otherwise, an - \tcode{expected} object whose \exposid{has_val} member is \tcode{false} - and \exposid{unex} member is direct-non-list-initialized with --\tcode{invoke(std::for\-ward(f), error())}. -+\tcode{invoke(std::forward(f), error())}. - \end{itemdescr} - - \indexlibrarymember{transform_error}{expected}% -@@ -9755,7 +9755,7 @@ is well-formed. - If \tcode{has_value()} is \tcode{true}, \tcode{expected()}; otherwise, an - \tcode{expected} object whose \exposid{has_val} member is \tcode{false} - and \exposid{unex} member is direct-non-list-initialized with --\tcode{invoke(std::for\-ward(f), std::move(error()))}. -+\tcode{invoke(std::forward(f), std::move(error()))}. - \end{itemdescr} - - \rSec3[expected.void.eq]{Equality operators} -@@ -13786,7 +13786,7 @@ if \tcode{is_move_constructible_v} is \tcode{true}, - \ensures - \tcode{*this} has a target object of type \tcode{VT} - direct-non-list-initialized with --\tcode{ilist, std::for\-ward(args)...}. -+\tcode{ilist, std::forward(args)...}. - - \pnum - \throws -@@ -14211,7 +14211,7 @@ Let \tcode{VT} be \tcode{decay_t}. - \ensures - \tcode{*this} has a target object of type \tcode{VT} - direct-non-list-initialized with --\tcode{ilist, std::for\-ward(args)...}. -+\tcode{ilist, std::forward(args)...}. - - \pnum - \throws --- -2.43.0 - diff --git a/htmlgen_code.patch b/htmlgen_code.patch deleted file mode 100644 index 9714686058..0000000000 --- a/htmlgen_code.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 4f9bc8a594c4d24fdaba261a97567964911c1f6e Mon Sep 17 00:00:00 2001 -From: timsong-cpp -Date: Sun, 23 Mar 2025 18:03:20 -0500 -Subject: [PATCH] Highlight __has_embed - ---- - Render.hs | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Render.hs b/Render.hs -index c61d766..a2b4cde 100644 ---- a/Render.hs -+++ b/Render.hs -@@ -337,7 +337,7 @@ highlight ctx x - -- keywords - | (a, x') <- texSpan p x, a /= "" = (case () of - _ | a `elem` keywords -> spanTag "keyword" -- _ | a `elem` ["defined", "__has_include", "__has_cpp_attribute", "_Pragma"] -> spanTag "preprocessordirective" -+ _ | a `elem` ["defined", "__has_include", "__has_embed", "__has_cpp_attribute", "_Pragma"] -> spanTag "preprocessordirective" - _ | a `elem` ["nullptr", "true", "false"] -> spanTag "literal" - _ | otherwise -> id) (render (TeXRaw a) ctx) ++ highlight ctx x' - where p c = isAlphaNum c || c == '_' --- -2.43.0 - diff --git a/lastbuild.sig b/lastbuild.sig index 3a581c1864..3a4c189bfa 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,4 +1,3 @@ -htmlgen 4f9bc8a594c4d24fdaba261a97567964911c1f6e -draft 9b8a5e51752efe9edd7a447e96ffab0f3313accc -cbadb4af863399b71d988f0a85a6b863521dcc53 htmlgen.patch -ac9b8a2f76b84ebdc6c8dc1e9f8f86da89506ad7 htmlgen_code.patch +htmlgen eee5307c45c04761ef5c27956cbed742e08e5fb4 +draft 3bce8f7f15164dc455240e53acce596eeba97d45 +91ee1bafbee7fa1046b20953959ea058b939e826 htmlgen.patch From 3d77898c182ceee9b04057d2827ecd77438853ca Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Sat, 21 Jun 2025 09:03:49 +0100 Subject: [PATCH 12/36] Update --- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 26 +++++++++++++------------- lastbuild.sig | 4 ++-- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/draft b/draft index 3bce8f7f15..ac78ae76c5 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 3bce8f7f15164dc455240e53acce596eeba97d45 +Subproject commit ac78ae76c579883a32a9eb5b00346150a41e8e47 diff --git a/gh-pages b/gh-pages index cc03e47f5d..df7adc3717 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit cc03e47f5de9272ea164aa499d1b6551e2749ea0 +Subproject commit df7adc371752eab2b4d197727a7fe5e65c8787f1 diff --git a/htmlgen.patch b/htmlgen.patch index cf13c068eb..7b86ae2bdc 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From b796196bfcc9d1fad2c27c22e55928b1e3571c27 Mon Sep 17 00:00:00 2001 +From 087b7b86b346f3a15a16a3c7efdbb44f38a208a4 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on @@ -75,7 +75,7 @@ index ebc26464..c6ff9d4a 100644 2.43.0 -From a3ce21f5aadf27fcd426f4253c15b8752894f043 Mon Sep 17 00:00:00 2001 +From eadd0f8aa92e9ad7489c01c436b187171a2cd451 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 Subject: [PATCH 2/9] Use new link macros. @@ -4209,7 +4209,7 @@ index bf283e46..00d8fae6 100644 \tcode{operator new}\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index 8d418aea..bc6b0a54 100644 +index 1b3e2577..8a388c9f 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4520,7 +4520,7 @@ index d3385267..d72eebe4 100644 2.43.0 -From 01fbdd3b8c9cdd5cdc252fdb8ca40e9e1521b201 Mon Sep 17 00:00:00 2001 +From 6a179860206436f600f5af84ec4b9005e34e09eb Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 Subject: [PATCH 3/9] Fix dubious \defnx that has see{} in it, and remove range @@ -4573,7 +4573,7 @@ index 00d8fae6..cb2c8a8e 100644 2.43.0 -From d77dfbd84167142510a1fa900d84739a5966fe6d Mon Sep 17 00:00:00 2001 +From 7fdc0e78d979cade12db47da3ae52290fbc3f8a2 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and @@ -5990,7 +5990,7 @@ index 6c988685..bdbef27b 100644 2.43.0 -From 8055969f8b7ca0f9f53507cbfdea44c8949f19a8 Mon Sep 17 00:00:00 2001 +From fd2502ad8ac71c2486a37945c222a60c4a2d6333 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. @@ -7981,7 +7981,7 @@ index cb2c8a8e..a4582e22 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index bc6b0a54..9e0d743e 100644 +index 8a388c9f..8c1b16d3 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -6633,7 +6633,6 @@ and visible to other threads. @@ -8334,7 +8334,7 @@ index d72eebe4..171c1b2f 100644 2.43.0 -From 8c2a1f3b37b90223214962e13527a379312559b3 Mon Sep 17 00:00:00 2001 +From 28f9650c9f22d94dd88610aec105f0d73e5fd8e1 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 Subject: [PATCH 6/9] Use monospace font for code in figures. @@ -8481,7 +8481,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From 9a9990629bc027308fd3dc678b50b74b0f494943 Mon Sep 17 00:00:00 2001 +From ce6fc20d159a2a02d68ce6dbeaf186db5697c2d5 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 Subject: [PATCH 7/9] [uaxid] Mark code that's not to be highlighted. @@ -8509,7 +8509,7 @@ index 641ab63b..db586c1f 100644 2.43.0 -From 1e1456fe7d42e1eae06d3a41a6ad9e541cbbfe8a Mon Sep 17 00:00:00 2001 +From 3c4fcf9e927ba196d3104396ecea1c36e30469b3 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 Subject: [PATCH 8/9] Use cxxdraft-htmlgen macros more. @@ -10506,7 +10506,7 @@ index b67bffbb..c11f5627 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index 9e0d743e..cac7b8b1 100644 +index 8c1b16d3..b16503f4 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -11629,7 +11629,7 @@ index 171c1b2f..44c92b72 100644 2.43.0 -From 4643552b8be6397673946055d2d05a54d04e7867 Mon Sep 17 00:00:00 2001 +From 994f6337ccb16283db09320be852eb716809095d Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 Subject: [PATCH 9/9] Remove awkward \linebreaks. @@ -12201,7 +12201,7 @@ index 24fc04eb..1705fe1a 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index cac7b8b1..50facedd 100644 +index b16503f4..3f35f11a 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -3412,7 +3412,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, diff --git a/lastbuild.sig b/lastbuild.sig index 3a4c189bfa..68ff4fcd2a 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ htmlgen eee5307c45c04761ef5c27956cbed742e08e5fb4 -draft 3bce8f7f15164dc455240e53acce596eeba97d45 -91ee1bafbee7fa1046b20953959ea058b939e826 htmlgen.patch +draft ac78ae76c579883a32a9eb5b00346150a41e8e47 +ee2954f9c7635674003d9c2892fb2b5776fe4f95 htmlgen.patch From ee85ce612a86cc12fa4885eb67acf230d89ad8c6 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Fri, 25 Jul 2025 09:07:58 -0500 Subject: [PATCH 13/36] Update --- draft | 2 +- gen_html_std.sh | 10 +- gh-pages | 2 +- htmlgen.patch | 2255 +++++++++++++++++++++----------------------- htmlgen_code.patch | 38 + lastbuild.sig | 5 +- 6 files changed, 1118 insertions(+), 1194 deletions(-) create mode 100644 htmlgen_code.patch diff --git a/draft b/draft index ac78ae76c5..454ba171cb 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit ac78ae76c579883a32a9eb5b00346150a41e8e47 +Subproject commit 454ba171cb14531639e641cb1200617fbf8d943f diff --git a/gen_html_std.sh b/gen_html_std.sh index e4d5de4a88..2e18c5df43 100755 --- a/gen_html_std.sh +++ b/gen_html_std.sh @@ -1,4 +1,4 @@ -#! /bin/sh -e +#! /bin/bash -e # check if we need to rebuild cd cxxdraft-htmlgen @@ -47,23 +47,25 @@ cp std.pdf std_orig.pdf # create the "annex-f" file that maps stable names to section numbers +shopt -s extglob # Memoir 3.8 changed the content of the .aux files so as to require a different incantation -if grep -q TitleReference *.aux +if grep -q TitleReference !(back).aux then # Memoir < 3.8 - grep -h '^\\newlabel{' *.aux \ + grep -h '^\\newlabel{' !(back).aux \ | sed 's/\\newlabel{\([^}]*\)}.*TitleReference {\([^}]*\)}.*/\1 \2/' \ | sed 's/\\newlabel{\([^}]*\)}{{\(Clause\|Annex\) \([^}]*\)}.*/\1 \3/' \ | sed 's/\\newlabel{\(eq:[^}]*\)}{{\([^}]*\)}.*/\1 \2/' \ | grep -v '^\\' \ | sort > annex-f else - grep -h '^\\newlabel{' *.aux \ + grep -h '^\\newlabel{' !(back).aux \ | sed 's/^\\newlabel{\([^}]*\)}{{\([^}]*\)}.*/\1 \2/' \ | grep -v '^\\' \ | sed 's/\(Clause\|Annex\) //' \ | sort > annex-f fi +shopt -u extglob if [ -f ../../htmlgen.patch ] diff --git a/gh-pages b/gh-pages index df7adc3717..3583928dd9 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit df7adc371752eab2b4d197727a7fe5e65c8787f1 +Subproject commit 3583928dd9a445d9c9870bd565fa2db9ad21bbcf diff --git a/htmlgen.patch b/htmlgen.patch index 7b86ae2bdc..4b2137add5 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,8 +1,8 @@ -From 087b7b86b346f3a15a16a3c7efdbb44f38a208a4 Mon Sep 17 00:00:00 2001 +From b4d8ee6d649994aafd969b8b42a1f511e00b3f48 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 -Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on - smaller (e.g. half-screen) window sizes. +Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout + on smaller (e.g. half-screen) window sizes. --- source/basic.tex | 26 +++++++++++++------------- @@ -10,10 +10,10 @@ Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index 81781294..cc2fab73 100644 +index c5ad9eb0..a5e431a0 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -296,7 +296,7 @@ Given +@@ -314,7 +314,7 @@ Given #include struct C { @@ -22,7 +22,7 @@ index 81781294..cc2fab73 100644 }; int main() { -@@ -2549,23 +2549,23 @@ namespace AB { +@@ -2616,23 +2616,23 @@ namespace AB { void h() { @@ -59,10 +59,10 @@ index 81781294..cc2fab73 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index ebc26464..c6ff9d4a 100644 +index 51ff9a3c..77878571 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -2846,7 +2846,7 @@ struct s2 { +@@ -2924,7 +2924,7 @@ struct s2 { } auto g() { return [] { @@ -75,32 +75,32 @@ index ebc26464..c6ff9d4a 100644 2.43.0 -From eadd0f8aa92e9ad7489c01c436b187171a2cd451 Mon Sep 17 00:00:00 2001 +From d2066d5b092f42e8ebb3d97b8006c77484caaba8 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 -Subject: [PATCH 2/9] Use new link macros. +Subject: [PATCH 02/10] Use new link macros. --- source/algorithms.tex | 4 +- - source/basic.tex | 99 +++++++------- - source/classes.tex | 24 ++-- + source/basic.tex | 99 ++++++++------- + source/classes.tex | 22 ++-- source/compatibility.tex | 4 +- source/concepts.tex | 12 +- source/containers.tex | 50 ++++---- source/declarations.tex | 69 +++++----- source/diagnostics.tex | 6 +- source/exceptions.tex | 36 +++--- - source/expressions.tex | 270 ++++++++++++++++++++------------------- + source/expressions.tex | 266 ++++++++++++++++++++------------------- source/future.tex | 10 +- - source/intro.tex | 14 +- + source/intro.tex | 19 +-- source/iostreams.tex | 74 +++++------ source/iterators.tex | 8 +- source/lex.tex | 10 +- - source/lib-intro.tex | 73 +++++------ + source/lib-intro.tex | 71 +++++------ source/limits.tex | 2 +- - source/numerics.tex | 60 ++++----- + source/numerics.tex | 60 +++++---- source/overloading.tex | 64 +++++----- - source/preprocessor.tex | 14 +- + source/preprocessor.tex | 14 +-- source/statements.tex | 30 ++--- source/strings.tex | 8 +- source/support.tex | 90 ++++++------- @@ -108,10 +108,10 @@ Subject: [PATCH 2/9] Use new link macros. source/threads.tex | 45 ++++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 610 insertions(+), 620 deletions(-) + 27 files changed, 609 insertions(+), 618 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 3790bb78..84d18c8b 100644 +index f4e3bec3..9f29a804 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -123,7 +123,7 @@ index 3790bb78..84d18c8b 100644 \pnum The following subclauses describe components for -@@ -8111,7 +8111,7 @@ In either case, twice as many projections as comparisons. +@@ -10228,7 +10228,7 @@ In either case, twice as many projections as comparisons. \pnum \remarks @@ -133,10 +133,10 @@ index 3790bb78..84d18c8b 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index cc2fab73..ed278134 100644 +index a5e431a0..be952625 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -139,7 +139,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. +@@ -155,7 +155,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. \indextext{linkage}% A name used in more than one translation unit can potentially refer to the same entity in these translation units depending on the @@ -145,7 +145,7 @@ index cc2fab73..ed278134 100644 translation unit. \rSec1[basic.def]{Declarations and definitions} -@@ -162,7 +162,7 @@ A declaration may also have effects including: +@@ -178,7 +178,7 @@ A declaration may also have effects including: \item a static assertion\iref{dcl.pre}, \item controlling template instantiation\iref{temp.explicit}, \item guiding template argument deduction for constructors\iref{temp.deduct.guide}, @@ -154,7 +154,7 @@ index cc2fab73..ed278134 100644 \item nothing (in the case of an \grammarterm{empty-declaration}). \end{itemize} -@@ -246,7 +246,7 @@ that defines a function, a class, a variable, or a static data member, +@@ -264,7 +264,7 @@ that defines a function, a class, a variable, or a static data member, \item it is an explicit instantiation declaration\iref{temp.explicit}, or \item it is @@ -163,7 +163,7 @@ index cc2fab73..ed278134 100644 \grammarterm{declaration} is not a definition. \end{itemize} A declaration is said to be a \defn{definition} of each entity that it defines. -@@ -288,7 +288,7 @@ In some circumstances, \Cpp{} implementations implicitly define the +@@ -306,7 +306,7 @@ In some circumstances, \Cpp{} implementations implicitly define the default constructor\iref{class.default.ctor}, copy constructor, move constructor\iref{class.copy.ctor}, copy assignment operator, move assignment operator\iref{class.copy.assign}, @@ -172,16 +172,16 @@ index cc2fab73..ed278134 100644 \end{note} \begin{example} Given -@@ -372,7 +372,7 @@ defined as follows: - \item If $E$ is an - \grammarterm{id-expression}\iref{expr.prim.id}, the set +@@ -391,7 +391,7 @@ defined as follows: + an \grammarterm{id-expression}\iref{expr.prim.id} or + a \grammarterm{splice-expression}\iref{expr.prim.splice}, the set contains only $E$. -\item If $E$ is a subscripting operation\iref{expr.sub} with +\item If $E$ is a \link{subscripting}{expr.sub} operation with an array operand, the set contains the potential results of that operand. \item If $E$ is a class member access expression\iref{expr.ref} of the form -@@ -382,16 +382,15 @@ the set contains the potential results of $E_1$. +@@ -401,16 +401,15 @@ the set contains the potential results of $E_1$. \item If $E$ is a class member access expression naming a static data member, the set contains the \grammarterm{id-expression} designating the data member. @@ -202,7 +202,7 @@ index cc2fab73..ed278134 100644 contains the potential results of the right operand. \item Otherwise, the set is empty. \end{itemize} -@@ -542,8 +541,8 @@ implicitly-defined +@@ -572,8 +571,8 @@ implicitly-defined copy assignment or move assignment function for another class as specified in~\ref{class.copy.assign}. A constructor for a class is odr-used as specified @@ -213,7 +213,7 @@ index cc2fab73..ed278134 100644 \pnum A local entity\iref{basic.pre} -@@ -615,7 +614,7 @@ void h() { +@@ -645,7 +644,7 @@ void h() { \pnum Every program shall contain at least one definition of every function or variable that is odr-used in that program @@ -222,7 +222,7 @@ index cc2fab73..ed278134 100644 The definition can appear explicitly in the program, it can be found in the standard or a user-defined library, or (when appropriate) it is implicitly defined (see~\ref{class.default.ctor}, \ref{class.copy.ctor}, -@@ -663,9 +662,9 @@ The rules for declarations and expressions +@@ -693,9 +692,9 @@ The rules for declarations and expressions describe in which contexts complete class types are required. A class type \tcode{T} must be complete if \begin{itemize} @@ -235,7 +235,7 @@ index cc2fab73..ed278134 100644 \item \tcode{T} is used as the allocated type or array element type in a \grammarterm{new-expression}\iref{expr.new}, or \item an lvalue-to-rvalue conversion is applied to -@@ -685,7 +684,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or +@@ -715,7 +714,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or \keyword{sizeof} operator\iref{expr.sizeof} is applied to an operand of type \tcode{T}, or \item a function with a return type or argument type of type \tcode{T} @@ -244,7 +244,7 @@ index cc2fab73..ed278134 100644 \item a class with a base class of type \tcode{T} is defined\iref{class.derived}, or \item an lvalue of type \tcode{T} is assigned to\iref{expr.assign}, or -@@ -731,7 +730,7 @@ template specializations\iref{temp.spec.partial.match}, except that a name can r +@@ -770,7 +769,7 @@ template specializations\iref{temp.spec.partial.match}, except that a name can r a non-volatile const object with internal or no linkage if the object \begin{itemize} \item has the same literal type in all definitions of \tcode{D}, @@ -253,7 +253,7 @@ index cc2fab73..ed278134 100644 \item is not odr-used in any definition of \tcode{D}, and \item has the same value in all definitions of \tcode{D}, \end{itemize} -@@ -2745,7 +2744,7 @@ only namespace names are considered.% +@@ -2876,7 +2875,7 @@ consteval int bad_splice(std::meta::info v) { \pnum \indextext{program}% \indextext{linking}% @@ -262,7 +262,7 @@ index cc2fab73..ed278134 100644 linked together. A translation unit consists of a sequence of declarations. -@@ -2778,7 +2777,7 @@ are attached to the same module. +@@ -2909,7 +2908,7 @@ are attached to the same module. \indextext{linkage!\idxcode{inline} and}% \indextext{\idxcode{inline}!linkage of}% The name of an entity @@ -271,7 +271,7 @@ index cc2fab73..ed278134 100644 has internal linkage if it is the name of \begin{itemize} \item -@@ -2819,7 +2818,7 @@ typedef declaration in which the class has the typedef name for linkage +@@ -2950,7 +2949,7 @@ typedef declaration in which the class has the typedef name for linkage purposes\iref{dcl.typedef}; or \item \indextext{enumeration!linkage of}% @@ -280,7 +280,7 @@ index cc2fab73..ed278134 100644 in a typedef declaration in which the enumeration has the typedef name for linkage purposes\iref{dcl.typedef}; or \item an unnamed enumeration -@@ -2895,7 +2894,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. +@@ -3026,7 +3025,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. \pnum \indextext{linkage!no}% Names not covered by these rules have no linkage. Moreover, except as @@ -289,7 +289,7 @@ index cc2fab73..ed278134 100644 linkage. \pnum -@@ -3217,8 +3216,8 @@ features of the language, such as references and virtual functions, might +@@ -3384,8 +3383,8 @@ features of the language, such as references and virtual functions, might involve additional memory locations that are not accessible to programs but are managed by the implementation. \end{note} @@ -300,7 +300,7 @@ index cc2fab73..ed278134 100644 locations without interfering with each other. \pnum -@@ -3262,15 +3261,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but +@@ -3429,15 +3428,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but The constructs in a \Cpp{} program create, destroy, refer to, access, and manipulate objects. An \defn{object} is created @@ -319,7 +319,7 @@ index cc2fab73..ed278134 100644 and in its period of destruction\iref{class.cdtor}. \begin{note} -@@ -3400,7 +3399,7 @@ A \defn{potentially-overlapping subobject} is either: +@@ -3567,7 +3566,7 @@ A \defn{potentially-overlapping subobject} is either: \begin{itemize} \item a base class subobject, or \item a non-static data member @@ -328,7 +328,7 @@ index cc2fab73..ed278134 100644 \end{itemize} \pnum -@@ -3421,7 +3420,7 @@ Otherwise, the circumstances under which the object has zero size +@@ -3588,7 +3587,7 @@ Otherwise, the circumstances under which the object has zero size are \impldef{which non-standard-layout objects containing no data are considered empty}. \indextext{most derived object!bit-field}% @@ -337,7 +337,7 @@ index cc2fab73..ed278134 100644 an object with nonzero size shall occupy one or more bytes of storage, including every byte that is occupied in full or in part -@@ -3986,16 +3985,16 @@ the result of the evaluation is the value so produced but is not erroneous: +@@ -4161,16 +4160,16 @@ the result of the evaluation is the value so produced but is not erroneous: is produced by the evaluation of: \begin{itemize} \item @@ -357,7 +357,7 @@ index cc2fab73..ed278134 100644 \end{itemize} then the result of the operation is an indeterminate value or that erroneous value, respectively. -@@ -4186,8 +4185,8 @@ specified in~\ref{class.copy.elision}. +@@ -4361,8 +4360,8 @@ specified in~\ref{class.copy.elision}. \indextext{storage duration!dynamic|(} \pnum @@ -368,7 +368,7 @@ index cc2fab73..ed278134 100644 \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -@@ -4351,9 +4350,9 @@ that would match a handler\iref{except.handle} of type +@@ -4526,9 +4525,9 @@ that would match a handler\iref{except.handle} of type \tcode{std::bad_alloc}\iref{bad.alloc}. \pnum @@ -381,7 +381,7 @@ index cc2fab73..ed278134 100644 a coroutine state\iref{dcl.fct.def.coroutine}, or called indirectly through calls to the functions in the \Cpp{} standard library. -@@ -4848,9 +4847,9 @@ shall be destroyed before +@@ -5034,9 +5033,9 @@ shall be destroyed before impose requirements on implementations regarding the representation of types. There are two kinds of types: fundamental types and compound types. @@ -394,16 +394,16 @@ index cc2fab73..ed278134 100644 \end{note} \pnum -@@ -5024,7 +5023,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, +@@ -5210,7 +5209,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, pointer types, pointer-to-member types\iref{basic.compound}, - \tcode{std::nullptr_t}, + \tcode{std::meta::\brk{}info}, \tcode{std::nullptr_t}, and -cv-qualified\iref{basic.type.qualifier} versions of these +\link{cv-qualified}{basic.type.qualifier} versions of these types are collectively called \defnadjx{scalar}{types}{type}. \label{term.trivially.copyable.type}% -@@ -5057,7 +5056,7 @@ A type is a \defnadj{literal}{type} if it is: +@@ -5243,7 +5242,7 @@ A type is a \defnadj{literal}{type} if it is: \item a scalar type; or \item a reference type; or \item an array of literal type; or @@ -412,7 +412,7 @@ index cc2fab73..ed278134 100644 has all of the following properties: \begin{itemize} \item it has a constexpr destructor\iref{dcl.constexpr}, -@@ -5091,8 +5090,8 @@ will be usable in a constant expression. +@@ -5277,8 +5276,8 @@ will be usable in a constant expression. Two types \cvqual{cv1} \tcode{T1} and \cvqual{cv2} \tcode{T2} are \defnadjx{layout-compatible}{types}{type} if \tcode{T1} and \tcode{T2} are the same type, @@ -421,9 +421,9 @@ index cc2fab73..ed278134 100644 +\deflinkx{layout-compatible enumerations}{layout-compatible!enumeration}{dcl.enum}, or +\deflinkx{layout-compatible standard-layout class types}{layout-compatible!class}{class.mem}. - \rSec2[basic.fundamental]{Fundamental types} - -@@ -5540,7 +5539,7 @@ ordinary pointers to objects or functions. + \pnum + A type is \defn{consteval-only} if it is either +@@ -5831,7 +5830,7 @@ ordinary pointers to objects or functions. which identify members of a given type within objects of a given class, \ref{dcl.mptr}. Pointers to data members and pointers to member functions are collectively @@ -432,7 +432,7 @@ index cc2fab73..ed278134 100644 \end{itemize} \pnum -@@ -5618,7 +5617,7 @@ layout-compatible types shall +@@ -5909,7 +5908,7 @@ layout-compatible types shall have the same value representation and alignment requirements\iref{basic.align}. \begin{note} @@ -441,7 +441,7 @@ index cc2fab73..ed278134 100644 representation, but their range of valid values is restricted by the extended alignment requirement. \end{note} -@@ -5933,8 +5932,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. +@@ -6224,8 +6223,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. \indextext{program execution|(} \pnum @@ -452,7 +452,7 @@ index cc2fab73..ed278134 100644 block. Such an object exists and retains its last-stored value during the execution of the block and while the block is suspended (by a call of a function, suspension of a coroutine\iref{expr.await}, or receipt of a signal). -@@ -5979,7 +5978,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, +@@ -6270,7 +6269,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, the initialization of the entities captured by copy and the constituent expressions of the \grammarterm{initializer} of the \grammarterm{init-capture}{s}, \item @@ -461,7 +461,7 @@ index cc2fab73..ed278134 100644 the constituent expressions of each default argument\iref{dcl.fct.default} used in the call, or \item -@@ -6010,7 +6009,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope +@@ -6301,7 +6300,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope A \defn{full-expression} is \begin{itemize} \item @@ -471,7 +471,7 @@ index cc2fab73..ed278134 100644 a \grammarterm{constant-expression}\iref{expr.const}, \item diff --git a/source/classes.tex b/source/classes.tex -index f0d9a262..170c2eb3 100644 +index a1287851..5fa5e3b8 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -274,10 +274,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: @@ -488,7 +488,7 @@ index f0d9a262..170c2eb3 100644 for all non-static data members, \item has no non-standard-layout base classes, -@@ -658,7 +658,7 @@ if it is +@@ -660,7 +660,7 @@ if it is \end{itemize} For any other \grammarterm{member-declaration}, each declared entity @@ -497,7 +497,7 @@ index f0d9a262..170c2eb3 100644 is a member of the class, and each such \grammarterm{member-declaration} shall either -@@ -673,7 +673,7 @@ Nested types are classes\iref{class.name,class.nest} and +@@ -675,7 +675,7 @@ Nested types are classes\iref{class.name,class.nest} and enumerations\iref{dcl.enum} declared in the class and arbitrary types declared as members by use of a typedef declaration\iref{dcl.typedef} or \grammarterm{alias-declaration}. @@ -506,16 +506,7 @@ index f0d9a262..170c2eb3 100644 are members of the class. \pnum -@@ -688,7 +688,7 @@ Any other data member or member function is a \defnadj{non-static}{member} - \defnadj{non-static}{member function}\iref{class.mfct.non.static}, respectively). - \begin{note} - A non-static data member of non-reference --type is a member subobject of a class object\iref{intro.object}. -+type is a \deflink{member subobject}{intro.object} of a class object. - \end{note} - - \pnum -@@ -808,9 +808,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali +@@ -821,9 +821,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali The \grammarterm{member-declarator-list} can be omitted only after a \grammarterm{class-specifier} or an \grammarterm{enum-specifier} or in a @@ -527,7 +518,7 @@ index f0d9a262..170c2eb3 100644 that is not a friend declaration. \pnum -@@ -913,7 +913,7 @@ unscoped enumeration type; and +@@ -926,7 +926,7 @@ unscoped enumeration type; and \pnum In addition, if class \tcode{T} has a user-declared @@ -536,7 +527,7 @@ index f0d9a262..170c2eb3 100644 \tcode{T} shall have a name different from \tcode{T}. \pnum -@@ -963,7 +963,7 @@ non-static data members (in any order) have layout-compatible +@@ -976,7 +976,7 @@ non-static data members (in any order) have layout-compatible types\iref{term.layout.compatible.type}. \pnum @@ -545,7 +536,7 @@ index f0d9a262..170c2eb3 100644 of struct type \tcode{T1}, it is permitted to read a non-static data member \tcode{m} of another union member of struct type \tcode{T2} provided \tcode{m} is part of the common initial sequence of \tcode{T1} and \tcode{T2}; -@@ -2257,7 +2257,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation +@@ -2309,7 +2309,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation An array of class type contains several subobjects for each of which the destructor is invoked. \end{note} @@ -554,7 +545,7 @@ index f0d9a262..170c2eb3 100644 if it is invoked or as specified in~\ref{expr.new}, \ref{stmt.return}, \ref{dcl.init.aggr}, \ref{class.base.init}, and~\ref{except.throw}. -@@ -6342,7 +6342,7 @@ associated with a \grammarterm{try-block} (if there is one), +@@ -6410,7 +6410,7 @@ associated with a \grammarterm{try-block} (if there is one), the copy-initialization of the exception object can be omitted by constructing $o$ directly into the exception object; @@ -564,10 +555,10 @@ index f0d9a262..170c2eb3 100644 corresponding parameter if the meaning of the program will be unchanged except for the execution of a constructor and destructor for the parameter copy object; diff --git a/source/compatibility.tex b/source/compatibility.tex -index 87878a30..3a4119ed 100644 +index a46c9a71..8c70dc05 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -1950,8 +1950,8 @@ deallocation functions\iref{expr.new}. +@@ -2017,8 +2017,8 @@ deallocation functions\iref{expr.new}. A conditional expression with a throw expression as its second or third operand keeps the type and value category of the other operand. \rationale @@ -627,7 +618,7 @@ index 4d848e8f..6bd0435e 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index d7032dfd..9c719111 100644 +index 6a71104d..77036c1f 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -6116,14 +6116,14 @@ namespace std { @@ -819,10 +810,10 @@ index d7032dfd..9c719111 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index 2e575bbb..1af3ee51 100644 +index 341c1bc1..4951f281 100644 --- a/source/declarations.tex +++ b/source/declarations.tex -@@ -513,7 +513,7 @@ in explicit specializations and explicit instantiations, respectively. +@@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. \begin{note} A variable declared without a \grammarterm{storage-class-specifier} at block scope or declared as a function parameter @@ -831,7 +822,7 @@ index 2e575bbb..1af3ee51 100644 \end{note} \pnum -@@ -783,10 +783,10 @@ an alias template or a type template template parameter. +@@ -814,10 +814,10 @@ an alias template or a type template template parameter. A \grammarterm{simple-template-id} that names a class template specialization is a \grammarterm{class-name}\iref{class.name}. If a \grammarterm{typedef-name} is used to identify the subject of an @@ -846,7 +837,7 @@ index 2e575bbb..1af3ee51 100644 \end{note} \begin{example} \begin{codeblock} -@@ -1127,7 +1127,7 @@ If an inline function or variable that is attached to a named module +@@ -1152,7 +1152,7 @@ If an inline function or variable that is attached to a named module is declared in a definition domain, it shall be defined in that domain. \begin{note} @@ -855,7 +846,7 @@ index 2e575bbb..1af3ee51 100644 In the global module, a function defined within a class definition is implicitly inline\iref{class.mfct,class.friend}. \end{note} -@@ -1272,7 +1272,7 @@ the object referenced is a non-const object and can be modified through +@@ -1297,7 +1297,7 @@ the object referenced is a non-const object and can be modified through some other access path. \begin{note} Cv-qualifiers are supported by the type system so that they cannot be @@ -864,7 +855,7 @@ index 2e575bbb..1af3ee51 100644 \end{note} \pnum -@@ -1693,8 +1693,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; +@@ -1733,8 +1733,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; \item otherwise, \tcode{decltype($E$)} is the type of $E$. \end{itemize} @@ -874,7 +865,7 @@ index 2e575bbb..1af3ee51 100644 \begin{example} \begin{codeblock} -@@ -1890,7 +1889,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. +@@ -1932,7 +1931,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. If the \grammarterm{init-declarator-list} contains more than one \grammarterm{init-declarator}, they shall all form declarations of variables. The type of each declared variable is determined @@ -883,7 +874,7 @@ index 2e575bbb..1af3ee51 100644 and if the type that replaces the placeholder type is not the same in each deduction, the program is ill-formed. -@@ -2032,7 +2031,7 @@ A function declared with a return type that uses a placeholder type shall not +@@ -2074,7 +2073,7 @@ A function declared with a return type that uses a placeholder type shall not be a coroutine\iref{dcl.fct.def.coroutine}. \pnum @@ -892,7 +883,7 @@ index 2e575bbb..1af3ee51 100644 instantiation of an entity declared using a placeholder type, but it also does not prevent that entity from being instantiated as needed to determine its type. -@@ -2144,7 +2143,7 @@ Obtain \tcode{P} from +@@ -2186,7 +2185,7 @@ Obtain \tcode{P} from a new invented type template parameter \tcode{U} or, if the initialization is copy-list-initialization, with \tcode{std::initializer_list}. Deduce a value for \tcode{U} using the rules @@ -901,7 +892,7 @@ index 2e575bbb..1af3ee51 100644 where \tcode{P} is a function template parameter type and the corresponding argument is $E$. -@@ -2243,7 +2242,7 @@ in the \grammarterm{type-specifier-seq} +@@ -2285,7 +2284,7 @@ in the \grammarterm{type-specifier-seq} in the \grammarterm{new-type-id} or \grammarterm{type-id} of a \grammarterm{new-expression}\iref{expr.new}, as the \grammarterm{simple-type-specifier} @@ -910,7 +901,7 @@ index 2e575bbb..1af3ee51 100644 or as the \grammarterm{type-specifier} in the \grammarterm{parameter-declaration} of a \grammarterm{template-parameter}\iref{temp.param}. -@@ -4390,7 +4389,7 @@ int a; +@@ -4494,7 +4493,7 @@ int a; int f(int a, int b = a); // error: parameter \tcode{a} used as default argument typedef int I; int g(float I, int b = I(2)); // error: parameter \tcode{I} found @@ -918,8 +909,8 @@ index 2e575bbb..1af3ee51 100644 +int h(int a, int b = sizeof(a)); // OK, \deflink{unevaluated operand}{expr.context} \end{codeblock} \end{example} - A non-static member shall not appear in a default argument unless it appears as -@@ -6087,15 +6086,15 @@ This requires a conversion + A non-static member shall not be designated in a default argument unless +@@ -6206,15 +6205,15 @@ This requires a conversion function\iref{class.conv.fct} returning a reference type. \end{footnote} (this conversion is selected by enumerating the applicable conversion @@ -939,7 +930,7 @@ index 2e575bbb..1af3ee51 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7601,7 +7600,7 @@ the initializer is +@@ -7724,7 +7723,7 @@ the initializer is where \tcode{get} undergoes argument-dependent lookup\iref{basic.lookup.argdep}. In either case, \tcode{get} is interpreted as a \grammarterm{template-id}. \begin{note} @@ -948,7 +939,7 @@ index 2e575bbb..1af3ee51 100644 \end{note} In either case, \exposid{e} is an lvalue if the type of the entity \exposid{e} is an lvalue reference and an xvalue otherwise. -@@ -7752,7 +7751,7 @@ is not looked up and is introduced by +@@ -7875,7 +7874,7 @@ is not looked up and is introduced by the \grammarterm{enum-specifier} or \grammarterm{opaque-enum-declaration}. If the \grammarterm{enum-head-name} of an \grammarterm{opaque-enum-declaration} contains a \grammarterm{nested-name-specifier}, @@ -957,7 +948,7 @@ index 2e575bbb..1af3ee51 100644 \pnum \indextext{constant!enumeration}% -@@ -7834,8 +7833,9 @@ If the underlying type is fixed, the type of each enumerator +@@ -7957,8 +7956,9 @@ If the underlying type is fixed, the type of each enumerator prior to the closing brace is the underlying type and the \grammarterm{constant-expression} in the \grammarterm{enumerator-definition} @@ -969,7 +960,7 @@ index 2e575bbb..1af3ee51 100644 If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as -@@ -7844,8 +7844,9 @@ follows: +@@ -7967,8 +7967,9 @@ follows: \begin{itemize} \item If an initializer is specified for an enumerator, the @@ -981,7 +972,7 @@ index 2e575bbb..1af3ee51 100644 unscoped enumeration type, the enumerator has the underlying type of that enumeration type, otherwise it has the same type as the expression. -@@ -7917,7 +7918,7 @@ if they have the same underlying type. +@@ -8040,7 +8041,7 @@ if they have the same underlying type. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -990,7 +981,7 @@ index 2e575bbb..1af3ee51 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8196,7 +8197,7 @@ appertains to the namespace being defined or extended. +@@ -8323,7 +8324,7 @@ appertains to the namespace being defined or extended. Members of an inline namespace can be used in most respects as though they were members of the innermost enclosing namespace. Specifically, the inline namespace and its enclosing namespace are both added to the set of associated namespaces used in @@ -999,7 +990,7 @@ index 2e575bbb..1af3ee51 100644 and a \grammarterm{using-directive}\iref{namespace.udir} that names the inline namespace is implicitly inserted into the enclosing namespace as for an unnamed namespace\iref{namespace.unnamed}. Furthermore, each -@@ -9000,7 +9001,7 @@ different language linkages are distinct types even if they are +@@ -9146,7 +9147,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -1008,14 +999,17 @@ index 2e575bbb..1af3ee51 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9317,16 +9318,16 @@ For each individual attribute, the form of the +@@ -9476,19 +9477,19 @@ For each individual attribute, the form of the \pnum In an \grammarterm{attribute-list}, an ellipsis may appear only if that \grammarterm{attribute}'s specification permits it. An \grammarterm{attribute} followed -by an ellipsis is a pack expansion\iref{temp.variadic}. +by an ellipsis is a \deflink{pack expansion}{temp.variadic}. - An \grammarterm{attribute-specifier} that contains no \grammarterm{attribute}{s} has no - effect. The order in which the \grammarterm{attribute-token}{s} appear in an + An \grammarterm{attribute-specifier} that contains + an \grammarterm{attribute-list} with no \grammarterm{attribute}s + and no \grammarterm{alignment-specifier} + has no effect. + The order in which the \grammarterm{attribute-token}{s} appear in an \grammarterm{attribute-list} is not significant. If a -keyword\iref{lex.key} -or an alternative token\iref{lex.digraph} that satisfies the syntactic requirements @@ -1030,7 +1024,7 @@ index 2e575bbb..1af3ee51 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9433,7 +9434,7 @@ declaration, the program is ill-formed. +@@ -9599,7 +9600,7 @@ declaration, the program is ill-formed. \pnum An \grammarterm{alignment-specifier} of the form \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same @@ -1039,7 +1033,7 @@ index 2e575bbb..1af3ee51 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9613,7 +9614,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9779,7 +9780,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -1049,7 +1043,7 @@ index 2e575bbb..1af3ee51 100644 such a statement is a fallthrough statement. No \grammarterm{attribute-argument-clause} shall be present. diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index 3c4b0c98..b4b70046 100644 +index d16f516a..df926181 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -505,13 +505,13 @@ the current state of \tcode{NDEBUG} each time that @@ -1078,7 +1072,7 @@ index 3c4b0c98..b4b70046 100644 \end{note} \indexlibraryglobal{system_error}% diff --git a/source/exceptions.tex b/source/exceptions.tex -index 79684e4c..12cfcb8d 100644 +index ba2d34d0..cd476d28 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -184,7 +184,7 @@ try : i(f(ii)), d(id) { @@ -1227,7 +1221,7 @@ index 79684e4c..12cfcb8d 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index c6ff9d4a..13e2526b 100644 +index 77878571..45f82de6 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1249,7 +1243,7 @@ index c6ff9d4a..13e2526b 100644 \end{note} \pnum -@@ -212,7 +212,7 @@ xvalues; rvalue references to functions are treated as lvalues whether named or +@@ -213,7 +213,7 @@ xvalues; rvalue references to functions are treated as lvalues whether named or \begin{example} \begin{codeblock} struct A { @@ -1258,7 +1252,7 @@ index c6ff9d4a..13e2526b 100644 }; A&& operator+(A, A); A&& f(); -@@ -268,7 +268,7 @@ Unless otherwise specified\iref{expr.reinterpret.cast, expr.const.cast}, +@@ -269,7 +269,7 @@ Unless otherwise specified\iref{expr.reinterpret.cast, expr.const.cast}, whenever a prvalue that is not the result of the lvalue-to-rvalue conversion\iref{conv.lval} appears as an operand of an operator, @@ -1267,7 +1261,7 @@ index c6ff9d4a..13e2526b 100644 applied to convert the expression to an xvalue. \pnum -@@ -450,31 +450,31 @@ An unevaluated operand is not evaluated. +@@ -452,31 +452,31 @@ An unevaluated operand is not evaluated. In an unevaluated operand, a non-static class member can be named\iref{expr.prim.id} and naming of objects or functions does not, by itself, require that a definition be provided\iref{basic.def.odr}. @@ -1293,26 +1287,24 @@ index c6ff9d4a..13e2526b 100644 - \grammarterm{expression} is one of these expressions, +\grammarterm{expression} is one of these expressions, \item \grammarterm{id-expression}\iref{expr.prim.id}, + \item \grammarterm{splice-expression}\iref{expr.prim.splice}, -\item subscripting\iref{expr.sub}, -\item class member access\iref{expr.ref}, -\item indirection\iref{expr.unary.op}, -\item pointer-to-member operation\iref{expr.mptr.oper}, -\item conditional expression\iref{expr.cond} where both the second and the -- third operands are one of these expressions, or --\item comma expression\iref{expr.comma} where the right operand is one of -- these expressions. +\item \link{subscripting}{expr.sub}, +\item \link{class member access}{expr.ref}, +\item \deflink{indirection}{expr.unary.op}, +\item \link{pointer-to-member operation}{expr.mptr.oper}, +\item \link{conditional expression}{expr.cond} where both the second and the -+ third operands are one of these expressions, or + third operands are one of these expressions, or +-\item comma expression\iref{expr.comma} where the right operand is one of +\item \link{comma expression}{expr.comma} where the right operand is one of -+ these expressions. + these expressions. \end{itemize} - \begin{note} -@@ -612,7 +612,7 @@ descriptions of those operators and contexts. +@@ -615,7 +615,7 @@ descriptions of those operators and contexts. \pnum \indextext{conversion!lvalue-to-rvalue}% \indextext{type!incomplete}% @@ -1321,7 +1313,7 @@ index c6ff9d4a..13e2526b 100644 can be converted to a prvalue. \begin{footnote} -@@ -637,18 +637,18 @@ is applied to an expression $E$, and either +@@ -640,18 +640,18 @@ is applied to an expression $E$, and either \begin{itemize} \item $E$ is not potentially evaluated, or \item the evaluation of $E$ results in the evaluation of a member @@ -1346,7 +1338,7 @@ index c6ff9d4a..13e2526b 100644 } auto g = f(); int m = g(false); // undefined behavior: access of \tcode{x.n} outside its lifetime -@@ -820,11 +820,11 @@ allowed), a program could inadvertently modify a const object +@@ -819,11 +819,11 @@ allowed), a program could inadvertently modify a const object (as it is done on line \#2). For example, \begin{codeblock} int main() { @@ -1363,7 +1355,7 @@ index c6ff9d4a..13e2526b 100644 } \end{codeblock} \end{note} -@@ -1081,7 +1081,7 @@ the derived class object. +@@ -1080,7 +1080,7 @@ the derived class object. \indextext{conversion!pointer-to-member}% \indextext{null member pointer conversion|see{conversion, null member pointer}}% \indextext{constant!null pointer}% @@ -1392,7 +1384,7 @@ index c6ff9d4a..13e2526b 100644 \end{note} \pnum -@@ -1501,7 +1501,7 @@ In each case, the constraints of \tcode{f} are not satisfied. +@@ -1507,7 +1507,7 @@ In each case, the constraints of \tcode{f} are not satisfied. In the declaration of \tcode{p2}, those constraints need to be satisfied even though @@ -1401,7 +1393,7 @@ index c6ff9d4a..13e2526b 100644 \end{example} \end{note} -@@ -2056,8 +2056,8 @@ void abssort(float* x, unsigned N) { +@@ -2126,8 +2126,8 @@ void abssort(float* x, unsigned N) { A \grammarterm{lambda-expression} is a prvalue whose result object is called the \defn{closure object}. \begin{note} @@ -1412,7 +1404,7 @@ index c6ff9d4a..13e2526b 100644 \end{note} \pnum -@@ -2386,7 +2386,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no +@@ -2462,7 +2462,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no and no explicit object parameter\iref{dcl.fct} whose constraints (if any) are satisfied has a conversion function to pointer to @@ -1421,7 +1413,7 @@ index c6ff9d4a..13e2526b 100644 the same parameter and return types as the closure type's function call operator. The conversion is to ``pointer to \keyword{noexcept} function'' if the function call operator -@@ -2495,8 +2495,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} +@@ -2571,8 +2571,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} \pnum The conversion function or conversion function template is public, @@ -1432,7 +1424,7 @@ index c6ff9d4a..13e2526b 100644 \begin{example} \begin{codeblock} auto Fwd = [](int (*fp)(int), auto a) { return fp(a); }; -@@ -2552,9 +2552,9 @@ implicitly-declared destructor\iref{class.dtor}. +@@ -2630,9 +2630,9 @@ implicitly-declared destructor\iref{class.dtor}. \pnum A member of a closure type shall not be @@ -1445,7 +1437,7 @@ index c6ff9d4a..13e2526b 100644 \rSec3[expr.prim.lambda.capture]{Captures}% -@@ -3122,7 +3122,7 @@ A fold expression is a pack expansion. +@@ -3200,7 +3200,7 @@ A fold expression is a pack expansion. \pnum A \grammarterm{requires-expression} provides a concise way to express requirements on template arguments @@ -1454,7 +1446,7 @@ index c6ff9d4a..13e2526b 100644 or by checking properties of types and expressions. \begin{bnf} -@@ -3551,7 +3551,7 @@ or a prvalue of function pointer type. +@@ -3780,7 +3780,7 @@ or a prvalue of function pointer type. If the selected function is non-virtual, or if the \grammarterm{id-expression} in the class member access expression is a \grammarterm{qualified-id}, that function is @@ -1463,7 +1455,7 @@ index c6ff9d4a..13e2526b 100644 of the object expression is called; such a call is referred to as a \defnx{virtual function call}{function!virtual function call}. \begin{note} -@@ -3564,8 +3564,8 @@ an object under construction or destruction. +@@ -3793,8 +3793,8 @@ an object under construction or destruction. \pnum \begin{note} @@ -1474,7 +1466,7 @@ index c6ff9d4a..13e2526b 100644 the program is ill-formed. No function is implicitly declared by such a call. \end{note} -@@ -3632,7 +3632,7 @@ function, +@@ -3861,7 +3861,7 @@ function, the object expression of the class member access shall be a glvalue and the implicit object parameter of the function\iref{over.match.funcs} is initialized with that glvalue, @@ -1483,7 +1475,7 @@ index c6ff9d4a..13e2526b 100644 \begin{note} There is no access or ambiguity checking on this conversion; the access checking and disambiguation are done as part of the (possibly implicit) -@@ -3769,10 +3769,10 @@ pointer parameters. +@@ -3998,10 +3998,10 @@ pointer parameters. \pnum \indextext{declaration!ellipsis in function}% \indextext{parameter list!variable}% @@ -1497,7 +1489,7 @@ index c6ff9d4a..13e2526b 100644 \begin{note} This implies that, except where the ellipsis (\tcode{...}) or a function parameter pack is used, a parameter is available for each argument. -@@ -3790,8 +3790,8 @@ thus each such argument has a corresponding parameter when a function template +@@ -4019,8 +4019,8 @@ thus each such argument has a corresponding parameter when a function template specialization is actually called. \end{note} The @@ -1508,7 +1500,7 @@ index c6ff9d4a..13e2526b 100644 performed on the argument expression. An argument that has type \cv{}~\tcode{std::nullptr_t} is converted to type \tcode{\keyword{void}*}\iref{conv.ptr}. -@@ -3806,16 +3806,16 @@ an eligible non-trivial move constructor, or +@@ -4035,16 +4035,16 @@ an eligible non-trivial move constructor, or a non-trivial destructor\iref{class.dtor}, with no corresponding parameter, is conditionally-supported with \impldef{passing argument of class type through ellipsis} semantics. If the argument has @@ -1530,7 +1522,7 @@ index c6ff9d4a..13e2526b 100644 \pnum A function call is an lvalue -@@ -3834,8 +3834,8 @@ except as specified in \ref{dcl.type.decltype}. +@@ -4063,8 +4063,8 @@ except as specified in \ref{dcl.type.decltype}. \indextext{type conversion, explicit|see{casting}}% \indextext{conversion explicit type|see{casting}}% \indextext{casting}% @@ -1541,7 +1533,7 @@ index c6ff9d4a..13e2526b 100644 by a parenthesized optional \grammarterm{expression-list} or by a \grammarterm{braced-init-list} (the initializer) -@@ -3846,7 +3846,7 @@ If the type is a placeholder +@@ -4075,7 +4075,7 @@ If the type is a placeholder for a deduced class type, it is replaced by the return type of the function selected by overload resolution @@ -1550,7 +1542,7 @@ index c6ff9d4a..13e2526b 100644 for the remainder of this subclause. Otherwise, if the type contains a placeholder type, it is replaced by the type -@@ -4183,8 +4183,8 @@ void foo(D* dp) { +@@ -4470,8 +4470,8 @@ void foo(D* dp) { \end{example} \pnum @@ -1561,7 +1553,7 @@ index c6ff9d4a..13e2526b 100644 \pnum If \tcode{v} is a null pointer value, the result is a null pointer value. -@@ -4235,9 +4235,9 @@ runtime check \term{fails}. +@@ -4522,9 +4522,9 @@ runtime check \term{fails}. \pnum The value of a failed cast to pointer type is the null pointer value of @@ -1574,7 +1566,7 @@ index c6ff9d4a..13e2526b 100644 \indextext{\idxcode{bad_cast}}% \indexlibraryglobal{bad_cast}% -@@ -4326,13 +4326,13 @@ glvalue refers. +@@ -4613,13 +4613,13 @@ glvalue refers. When \keyword{typeid} is applied to an expression other than a glvalue of a polymorphic class type, the result refers to a \tcode{std::type_info} object representing the static type of the expression. @@ -1592,7 +1584,7 @@ index c6ff9d4a..13e2526b 100644 \pnum When \keyword{typeid} is applied to a \grammarterm{type-id}, the result -@@ -4427,7 +4427,7 @@ of type \tcode{T1} can be cast to type ``rvalue +@@ -4713,7 +4713,7 @@ of type \tcode{T1} can be cast to type ``rvalue reference to \tcode{T2}'' if \tcode{T2} is reference-compatible with \tcode{T1}\iref{dcl.init.ref}. If the value is not a bit-field, the result refers to the object or the specified base class subobject @@ -1601,7 +1593,7 @@ index c6ff9d4a..13e2526b 100644 is applied to the bit-field and the resulting prvalue is used as the operand of the \keyword{static_cast} for the remainder of this subclause. If \tcode{T2} is an inaccessible\iref{class.access} or -@@ -4557,7 +4557,8 @@ Otherwise, the behavior is undefined. +@@ -4818,7 +4818,8 @@ Otherwise, the behavior is undefined. A prvalue of type ``pointer to \cvqual{cv1} \tcode{B}'', where \tcode{B} is a class type, can be converted to a prvalue of type ``pointer to \cvqual{cv2} \tcode{D}'', @@ -1611,7 +1603,7 @@ index c6ff9d4a..13e2526b 100644 from \tcode{B}, if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. -@@ -4578,7 +4579,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} +@@ -4839,7 +4840,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} \tcode{T}'' can be converted to a prvalue of type ``pointer to member of \tcode{B} of type \cvqual{cv2} \tcode{T}'', where \tcode{D} is a complete class type and @@ -1620,7 +1612,7 @@ index c6ff9d4a..13e2526b 100644 if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. \begin{note} -@@ -4589,7 +4590,7 @@ If no valid standard conversion +@@ -4850,7 +4851,7 @@ If no valid standard conversion from ``pointer to member of \tcode{B} of type \tcode{T}'' to ``pointer to member of \tcode{D} of type \tcode{T}'' exists\iref{conv.mem}, the program is ill-formed. @@ -1629,7 +1621,7 @@ index c6ff9d4a..13e2526b 100644 member pointer value of the destination type. If class \tcode{B} contains the original member, or is a base class of the class containing the original member, the resulting pointer to member points -@@ -4612,7 +4613,7 @@ If the original pointer value represents the address +@@ -4873,7 +4874,7 @@ If the original pointer value represents the address then the resulting pointer value\iref{basic.compound} is unspecified. Otherwise, if the original pointer value points to an object \placeholder{a}, and there is an object \placeholder{b} of type similar to \tcode{T} @@ -1638,7 +1630,7 @@ index c6ff9d4a..13e2526b 100644 the result is a pointer to \placeholder{b}. Otherwise, the pointer value is unchanged by the conversion. \begin{example} -@@ -4638,8 +4639,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. +@@ -4896,8 +4897,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. If \tcode{T} is an lvalue reference type or an rvalue reference to function type, the result is an lvalue; if \tcode{T} is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the @@ -1649,7 +1641,7 @@ index c6ff9d4a..13e2526b 100644 performed on the expression \tcode{v}. Conversions that can be performed explicitly using \keyword{reinterpret_cast} are listed below. No other conversion can be performed explicitly using \keyword{reinterpret_cast}. -@@ -4808,10 +4809,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type +@@ -5066,10 +5067,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type lvalue; if \tcode{T} is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the @@ -1663,7 +1655,7 @@ index c6ff9d4a..13e2526b 100644 performed on \tcode{v}, other than as specified below. Conversions that can be performed explicitly using \keyword{const_cast} are listed below. No other conversion shall be -@@ -5348,7 +5349,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside +@@ -5619,7 +5620,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside The \keyword{sizeof} operator yields the number of bytes occupied by a non-potentially-overlapping object of the type of its operand. The operand is either an expression, @@ -1672,7 +1664,7 @@ index c6ff9d4a..13e2526b 100644 \grammarterm{type-id}. \indextext{type!incomplete}% The \keyword{sizeof} operator shall not be applied to an expression that -@@ -5403,7 +5404,7 @@ array-to-pointer\iref{conv.array}, and +@@ -5674,7 +5675,7 @@ array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} standard conversions are not applied to the operand of \keyword{sizeof}. If the operand is a prvalue, @@ -1681,7 +1673,7 @@ index c6ff9d4a..13e2526b 100644 is applied. \pnum -@@ -5548,7 +5549,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. +@@ -5819,7 +5820,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. \end{bnf} \pnum @@ -1690,7 +1682,7 @@ index c6ff9d4a..13e2526b 100644 a placeholder for a deduced class type\iref{dcl.type.class.deduct} appears in the \grammarterm{type-specifier-seq} of a \grammarterm{new-type-id} or -@@ -5676,7 +5677,7 @@ is less than zero; +@@ -5947,7 +5948,7 @@ is less than zero; \item its value is such that the size of the allocated object would exceed the @@ -1699,7 +1691,7 @@ index c6ff9d4a..13e2526b 100644 \item the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} and the -@@ -5701,7 +5702,7 @@ is the null pointer value of the required result type; +@@ -5972,7 +5973,7 @@ is the null pointer value of the required result type; \item otherwise, the \grammarterm{new-expression} terminates by throwing an exception of a type that would match a handler\iref{except.handle} of type @@ -1708,7 +1700,7 @@ index c6ff9d4a..13e2526b 100644 \end{itemize} \end{itemize} When the value of the \grammarterm{expression} is zero, the allocation -@@ -5752,8 +5753,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( +@@ -6023,8 +6024,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( A \grammarterm{new-expression} may obtain storage for the object by calling an allocation function\iref{basic.stc.dynamic.allocation}. If the \grammarterm{new-expression} terminates by throwing an exception, it @@ -1719,7 +1711,7 @@ index c6ff9d4a..13e2526b 100644 is a non-array type, the allocation function's name is \indextext{\idxcode{operator new}}% \indextext{\idxcode{operator delete}}% -@@ -5864,7 +5865,7 @@ the difference between the +@@ -6135,7 +6136,7 @@ the difference between the result of the \grammarterm{new-expression} and the address returned by the allocation function shall be an integral multiple of the strictest fundamental @@ -1728,7 +1720,7 @@ index c6ff9d4a..13e2526b 100644 is no greater than the size of the array being created. \begin{note} \indextext{allocation!alignment storage}% -@@ -5955,7 +5956,7 @@ invocation of \keyword{new} to another. +@@ -6226,7 +6227,7 @@ invocation of \keyword{new} to another. \pnum \begin{note} Unless an allocation function has a non-throwing @@ -1737,7 +1729,7 @@ index c6ff9d4a..13e2526b 100644 it indicates failure to allocate storage by throwing a \indextext{\idxcode{bad_alloc}}% \indexlibraryglobal{bad_alloc}% -@@ -6101,8 +6102,8 @@ to both the allocation and deallocation functions. +@@ -6372,8 +6373,8 @@ to both the allocation and deallocation functions. \pnum \indextext{expression!\idxcode{delete}}% \indextext{\idxcode{delete}}% @@ -1748,7 +1740,7 @@ index c6ff9d4a..13e2526b 100644 \grammarterm{new-expression}. \begin{bnf} -@@ -6205,8 +6206,8 @@ null pointer value, then: +@@ -6476,8 +6477,8 @@ null pointer value, then: \item If the allocation call for the \grammarterm{new-expression} for the object to be deleted was not omitted and the allocation was not extended\iref{expr.new}, the @@ -1759,7 +1751,7 @@ index c6ff9d4a..13e2526b 100644 allocation call of the \grammarterm{new-expression} shall be passed as the first argument to the deallocation function. -@@ -6565,8 +6566,8 @@ The result of a \tcode{.*} expression +@@ -7062,8 +7063,8 @@ The result of a \tcode{.*} expression whose second operand is a pointer to a data member is an lvalue if the first operand is an lvalue and an xvalue otherwise. The result of a \tcode{.*} expression whose second operand is a pointer to a member function is a prvalue. @@ -1770,7 +1762,7 @@ index c6ff9d4a..13e2526b 100644 \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -6595,7 +6596,7 @@ left-to-right. +@@ -7092,7 +7093,7 @@ left-to-right. \pnum The operands of \tcode{*} and \tcode{/} shall have arithmetic or unscoped enumeration type; the operands of \tcode{\%} shall have integral or unscoped @@ -1779,7 +1771,7 @@ index c6ff9d4a..13e2526b 100644 operands and determine the type of the result. \pnum -@@ -6731,7 +6732,7 @@ the behavior is undefined\iref{expr.pre}. +@@ -7228,7 +7229,7 @@ the behavior is undefined\iref{expr.pre}. \pnum For addition or subtraction, if the expressions \tcode{P} or \tcode{Q} have type ``pointer to \cv{}~\tcode{T}'', where \tcode{T} and the array element type @@ -1788,7 +1780,7 @@ index c6ff9d4a..13e2526b 100644 \begin{example} \begin{codeblock} int arr[5] = {1, 2, 3, 4, 5}; -@@ -6822,12 +6823,12 @@ and the other is not, the program is ill-formed. +@@ -7319,12 +7320,12 @@ and the other is not, the program is ill-formed. If both operands have arithmetic types, or one operand has integral type and the other operand has unscoped enumeration type, @@ -1803,7 +1795,7 @@ index c6ff9d4a..13e2526b 100644 other than from an integral type to a floating-point type, the program is ill-formed. -@@ -6869,13 +6870,13 @@ the other operand is of object pointer or array type, +@@ -7366,13 +7367,13 @@ the other operand is of object pointer or array type, array-to-pointer conversions\iref{conv.array}, pointer conversions\iref{conv.ptr}, and @@ -1819,7 +1811,7 @@ index c6ff9d4a..13e2526b 100644 \end{note} In this case, \tcode{p <=> q} is of type \tcode{std::strong_ordering} and -@@ -6964,7 +6965,7 @@ pointer conversions\iref{conv.ptr}, +@@ -7461,7 +7462,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring @@ -1828,7 +1820,7 @@ index c6ff9d4a..13e2526b 100644 After conversions, the operands shall have the same type. \pnum -@@ -7049,10 +7050,10 @@ same type after the specified conversions have been applied. +@@ -7546,10 +7547,10 @@ same type after the specified conversions have been applied. \indextext{comparison!pointer}% \indextext{comparison!pointer to function}% If at least one of the converted operands is a pointer, @@ -1843,7 +1835,7 @@ index c6ff9d4a..13e2526b 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -7069,7 +7070,8 @@ the result of the comparison is unspecified. +@@ -7566,7 +7567,8 @@ the result of the comparison is unspecified. \item Otherwise, if the pointers are both null, both point to the same \indextext{address}% @@ -1853,7 +1845,7 @@ index c6ff9d4a..13e2526b 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -7114,12 +7116,12 @@ bool b1 = (bx == cx); // unspecified +@@ -7611,12 +7613,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -1868,7 +1860,7 @@ index c6ff9d4a..13e2526b 100644 indirection with a hypothetical object of the associated class type were performed, otherwise they compare unequal. \begin{example} -@@ -7345,7 +7347,7 @@ Otherwise, if the second and third operand have different types and +@@ -7856,7 +7858,7 @@ Otherwise, if the second and third operand have different types and either has (possibly cv-qualified) class type, or if both are glvalues of the same value category and the same type except for cv-qualification, an attempt is made to @@ -1877,7 +1869,7 @@ index c6ff9d4a..13e2526b 100644 each of those operands to the type of the other. \begin{note} Properties such as access, whether an operand is a bit-field, or whether -@@ -7387,9 +7389,9 @@ denotes the cv-qualifiers of \tcode{T1}; +@@ -7898,9 +7900,9 @@ denotes the cv-qualifiers of \tcode{T1}; \item otherwise, the target type is the type that \tcode{E2} would have after applying the @@ -1890,7 +1882,7 @@ index c6ff9d4a..13e2526b 100644 standard conversions. \end{itemize} \end{itemize} -@@ -7430,8 +7432,8 @@ are used in place of the original operands for the remainder of this +@@ -7941,8 +7943,8 @@ are used in place of the original operands for the remainder of this subclause. \pnum @@ -1901,7 +1893,7 @@ index c6ff9d4a..13e2526b 100644 performed on the second and third operands. After those conversions, one of the following shall hold: -@@ -7440,16 +7442,16 @@ of the following shall hold: +@@ -7951,16 +7953,16 @@ of the following shall hold: that type and the result is copy-initialized using the selected operand. \item The second and third operands have arithmetic or enumeration type; @@ -1924,7 +1916,7 @@ index c6ff9d4a..13e2526b 100644 pointer type. \item One or both of the second and third operands have pointer-to-member type; -@@ -7633,7 +7635,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. +@@ -8144,7 +8146,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. \pnum \indextext{assignment!conversion by}% If the right operand is an expression, it is implicitly @@ -1933,7 +1925,7 @@ index c6ff9d4a..13e2526b 100644 operand. \pnum -@@ -7647,7 +7649,7 @@ resulting value of the bit-field is +@@ -8158,7 +8160,7 @@ resulting value of the bit-field is An assignment whose left operand is of a volatile-qualified type is deprecated\iref{depr.volatile.type} unless the (possibly parenthesized) assignment is a discarded-value expression or @@ -1942,7 +1934,7 @@ index c6ff9d4a..13e2526b 100644 \pnum The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} -@@ -7719,7 +7721,7 @@ The comma operator groups left-to-right. +@@ -8230,7 +8232,7 @@ The comma operator groups left-to-right. A pair of expressions separated by a comma is evaluated left-to-right; the left expression is @@ -1951,7 +1943,7 @@ index c6ff9d4a..13e2526b 100644 The left expression is sequenced before the right expression\iref{intro.execution}. \indextext{operator!side effects and comma}% -@@ -7753,7 +7755,7 @@ Certain contexts require expressions that satisfy additional +@@ -8264,7 +8266,7 @@ Certain contexts require expressions that satisfy additional requirements as detailed in this subclause; other contexts have different semantics depending on whether or not an expression satisfies these requirements. Expressions that satisfy these requirements, @@ -1960,7 +1952,7 @@ index c6ff9d4a..13e2526b 100644 are called \indexdefn{expression!constant}% \defnx{constant expressions}{constant expression}. -@@ -7936,9 +7938,9 @@ a temporary object of non-volatile const-qualified literal type +@@ -8447,9 +8449,9 @@ a temporary object of non-volatile const-qualified literal type whose lifetime is extended\iref{class.temporary} to that of a variable that is usable in constant expressions at $P$, \item @@ -1972,7 +1964,7 @@ index c6ff9d4a..13e2526b 100644 \item a non-mutable subobject of any of the above, or \item -@@ -8029,7 +8031,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. +@@ -8540,7 +8542,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -1981,7 +1973,7 @@ index c6ff9d4a..13e2526b 100644 it is applied to \begin{itemize} \item -@@ -8051,7 +8053,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -8562,7 +8564,7 @@ that refers to a non-active member of a union or a subobject thereof; \item an lvalue-to-rvalue conversion that is applied to @@ -1990,7 +1982,7 @@ index c6ff9d4a..13e2526b 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -8418,7 +8420,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -8935,7 +8937,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte Such expressions can be used as bit-field lengths\iref{class.bit}, as enumerator initializers if the underlying type is not fixed\iref{dcl.enum}, @@ -1999,7 +1991,7 @@ index c6ff9d4a..13e2526b 100644 \end{note} \pnum -@@ -8739,7 +8741,7 @@ if it is: +@@ -9436,7 +9438,7 @@ if it is: a manifestly constant-evaluated expression, \item @@ -2008,7 +2000,7 @@ index c6ff9d4a..13e2526b 100644 \item an immediate subexpression of a \grammarterm{braced-init-list}, -@@ -8766,7 +8768,9 @@ A function or variable is +@@ -9463,7 +9465,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -2020,7 +2012,7 @@ index c6ff9d4a..13e2526b 100644 \item diff --git a/source/future.tex b/source/future.tex -index 50edea0b..49c04f21 100644 +index f94b2c33..4c6942b4 100644 --- a/source/future.tex +++ b/source/future.tex @@ -14,7 +14,7 @@ is defined as: @@ -2047,7 +2039,7 @@ index 50edea0b..49c04f21 100644 as defaulted is deprecated if the class has a user-declared copy constructor or a user-declared destructor. -@@ -528,7 +528,7 @@ template struct tuple_size; +@@ -543,7 +543,7 @@ template struct tuple_size; \pnum Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. If the expression \tcode{TS::value} is well-formed @@ -2057,10 +2049,10 @@ index 50edea0b..49c04f21 100644 the \oldconcept{TransformationTrait} requirements with a base characteristic of \tcode{integral_constant}. diff --git a/source/intro.tex b/source/intro.tex -index e0ded4cf..736966eb 100644 +index e4014b96..abc66134 100644 --- a/source/intro.tex +++ b/source/intro.tex -@@ -94,8 +94,8 @@ Reads of scalar objects are described in \ref{conv.lval} and +@@ -105,8 +105,8 @@ Reads of scalar objects are described in \ref{conv.lval} and modifications of scalar objects are described in \ref{expr.assign}, \ref{expr.post.incr}, and \ref{expr.pre.incr}. Attempts to read or modify an object of class type @@ -2071,21 +2063,24 @@ index e0ded4cf..736966eb 100644 such invocations do not themselves constitute accesses, although they may involve accesses of scalar subobjects. \end{defnote} -@@ -243,11 +243,11 @@ implementation's output messages +@@ -254,11 +254,12 @@ implementation's output messages glvalue refers \begin{example} -If a pointer\iref{dcl.ptr} \tcode{p} whose type is ``pointer to +If a \link{pointer}{dcl.ptr} \tcode{p} whose type is ``pointer to class \tcode{B}'' is pointing to a base class subobject - of class \tcode{B}, whose most derived object is of class \tcode{D}, derived - from \tcode{B}\iref{class.derived}, the dynamic type of the +-of class \tcode{B}, whose most derived object is of class \tcode{D}, derived +-from \tcode{B}\iref{class.derived}, the dynamic type of the -expression \tcode{*p} is ``\tcode{D}''. References\iref{dcl.ref} are ++of class \tcode{B}, whose most derived object is of class \tcode{D}, ++\link{derived}{class.derived} ++from \tcode{B}, the dynamic type of the +expression \tcode{*p} is ``\tcode{D}''. \link{References}{dcl.ref} are treated similarly. \end{example} -@@ -315,7 +315,7 @@ handler functions (see \ref{support}). +@@ -326,7 +327,7 @@ handler functions (see \ref{support}). \indexdefn{program!ill-formed}% \definition{ill-formed program}{defns.ill.formed} @@ -2094,7 +2089,7 @@ index e0ded4cf..736966eb 100644 \indexdefn{behavior!implementation-defined}% \definition{implementation-defined behavior}{defns.impl.defined} -@@ -811,7 +811,7 @@ resulting in a contract violation. +@@ -822,7 +823,7 @@ resulting in a contract violation. \indextext{conformance requirements!classes}% \indextext{conformance requirements!class templates}% For classes and class templates, the library Clauses specify partial @@ -2103,7 +2098,7 @@ index e0ded4cf..736966eb 100644 specified, but each implementation shall supply them to complete the definitions according to the description in the library Clauses. -@@ -828,7 +828,7 @@ the appropriate standard library named header unit\iref{using.headers}. +@@ -839,7 +840,7 @@ the appropriate standard library named header unit\iref{using.headers}. \pnum The templates, classes, functions, and objects in the library have @@ -2113,10 +2108,10 @@ index e0ded4cf..736966eb 100644 translation units to form a complete \Cpp{} program\iref{lex.phases}.% \indextext{conformance requirements!library|)} diff --git a/source/iostreams.tex b/source/iostreams.tex -index 3f925b2b..f89a4754 100644 +index 4e61b9be..a7c59c26 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -561,7 +561,7 @@ is initialized, +@@ -555,7 +555,7 @@ is initialized, returns \tcode{\&cout}. Its state is otherwise the same as required for @@ -2125,7 +2120,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \indexlibraryglobal{cout}% -@@ -594,7 +594,7 @@ is initialized, +@@ -588,7 +588,7 @@ is initialized, \tcode{cerr.flags() \& unitbuf} is nonzero and \tcode{cerr.tie()} returns \tcode{\&cout}. Its state is otherwise the same as required for @@ -2134,7 +2129,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \indexlibraryglobal{clog}% -@@ -631,7 +631,7 @@ is initialized, +@@ -625,7 +625,7 @@ is initialized, returns \tcode{\&wcout}. Its state is otherwise the same as required for @@ -2143,7 +2138,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \indexlibraryglobal{wcout}% -@@ -664,7 +664,7 @@ is initialized, +@@ -658,7 +658,7 @@ is initialized, \tcode{wcerr.flags() \& unitbuf} is nonzero and \tcode{wcerr.tie()} returns \tcode{\&wcout}. Its state is otherwise the same as required for @@ -2152,7 +2147,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \indexlibraryglobal{wclog}% -@@ -1384,7 +1384,7 @@ operate independently of the standard C streams. +@@ -1378,7 +1378,7 @@ operate independently of the standard C streams. \pnum \returns \tcode{true} @@ -2161,7 +2156,7 @@ index 3f925b2b..f89a4754 100644 was synchronized and otherwise returns \tcode{false}. The first time it is called, -@@ -1443,8 +1443,8 @@ static int xalloc(); +@@ -1437,8 +1437,8 @@ static int xalloc(); \pnum \remarks @@ -2172,7 +2167,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \indexlibrarymember{iword}{ios_base}% -@@ -2031,12 +2031,12 @@ locale imbue(const locale& loc); +@@ -2025,12 +2025,12 @@ locale imbue(const locale& loc); \pnum \effects Calls @@ -2187,7 +2182,7 @@ index 3f925b2b..f89a4754 100644 \pnum \returns -@@ -3289,7 +3289,7 @@ streamsize in_avail(); +@@ -3283,7 +3283,7 @@ streamsize in_avail(); If a read position is available, returns \tcode{egptr() - gptr()}. Otherwise returns @@ -2196,7 +2191,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \indexlibrarymember{snextc}{basic_streambuf}% -@@ -4314,7 +4314,7 @@ namespace std { +@@ -4308,7 +4308,7 @@ namespace std { template> class basic_istream : virtual public basic_ios { public: @@ -2205,7 +2200,7 @@ index 3f925b2b..f89a4754 100644 using char_type = charT; using int_type = typename traits::int_type; using pos_type = typename traits::pos_type; -@@ -4720,7 +4720,7 @@ basic_istream& operator>>(void*& val); +@@ -4715,7 +4715,7 @@ basic_istream& operator>>(void*& val); \pnum As in the case of the inserters, these extractors depend on the locale's @@ -2214,7 +2209,7 @@ index 3f925b2b..f89a4754 100644 stream data. These extractors behave as formatted input functions (as described in~\ref{istream.formatted.reqmts}). After a \tcode{sentry} object is constructed, the conversion occurs as if performed by the following code fragment, -@@ -5007,7 +5007,7 @@ basic_istream& operator>>(basic_streambuf* sb); +@@ -5002,7 +5002,7 @@ basic_istream& operator>>(basic_streambuf* sb); \begin{itemdescr} \pnum \effects @@ -2223,7 +2218,7 @@ index 3f925b2b..f89a4754 100644 If \tcode{sb} is null, calls \tcode{setstate(fail\-bit)}, which may throw -@@ -5402,7 +5402,7 @@ characters and discards them. +@@ -5397,7 +5397,7 @@ characters and discards them. Characters are extracted until any of the following occurs: \begin{itemize} \item @@ -2232,7 +2227,7 @@ index 3f925b2b..f89a4754 100644 and \tcode{n} characters have been extracted so far; \item -@@ -5738,12 +5738,12 @@ template +@@ -5748,12 +5748,12 @@ template \begin{itemdescr} \pnum \effects @@ -2247,7 +2242,7 @@ index 3f925b2b..f89a4754 100644 If \tcode{ws} stops extracting characters because there are no more available it sets -@@ -5768,7 +5768,7 @@ template +@@ -5778,7 +5778,7 @@ template \pnum \constraints The expression \tcode{is >> std::forward(x)} is well-formed @@ -2256,7 +2251,7 @@ index 3f925b2b..f89a4754 100644 \tcode{Istream} is publicly and unambiguously derived from \tcode{ios_base}. \pnum -@@ -5836,7 +5836,7 @@ explicit basic_iostream(basic_streambuf* sb); +@@ -5846,7 +5846,7 @@ explicit basic_iostream(basic_streambuf* sb); Initializes the base class subobjects with \tcode{basic_istream(sb)}\iref{istream} and @@ -2265,7 +2260,7 @@ index 3f925b2b..f89a4754 100644 \pnum \ensures -@@ -5922,7 +5922,7 @@ namespace std { +@@ -5932,7 +5932,7 @@ namespace std { template> class basic_ostream : virtual public basic_ios { public: @@ -2274,7 +2269,7 @@ index 3f925b2b..f89a4754 100644 using char_type = charT; using int_type = typename traits::int_type; using pos_type = typename traits::pos_type; -@@ -6691,7 +6691,7 @@ return *this << s; +@@ -6702,7 +6702,7 @@ return *this << s; \end{codeblock} where \tcode{s} is an \impldef{NTCTS in \tcode{basic_ostream\& op\-er\-ator<<(nullptr_t)}} @@ -2283,7 +2278,7 @@ index 3f925b2b..f89a4754 100644 \end{itemdescr} \rSec4[ostream.inserters.character]{Character inserter function templates} -@@ -6715,7 +6715,7 @@ template +@@ -6726,7 +6726,7 @@ template \begin{itemdescr} \pnum \effects @@ -2292,7 +2287,7 @@ index 3f925b2b..f89a4754 100644 of \tcode{out}. Constructs a character sequence \tcode{seq}. If \tcode{c} has type \tcode{char} -@@ -7468,7 +7468,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. +@@ -7479,7 +7479,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. \pnum \effects The expression \tcode{in >> get_money(mon, intl)} described below @@ -2301,7 +2296,7 @@ index 3f925b2b..f89a4754 100644 \pnum \returns -@@ -7513,7 +7513,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. +@@ -7524,7 +7524,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. An object of unspecified type such that if \tcode{out} is an object of type \tcode{basic_ostream} then the expression \tcode{out << put_money(mon, intl)} behaves as a @@ -2310,7 +2305,7 @@ index 3f925b2b..f89a4754 100644 \tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as: \begin{codeblock} -@@ -7637,7 +7637,7 @@ of \tcode{basic_ostream} with member type \tcode{char_type} the same as +@@ -7648,7 +7648,7 @@ of \tcode{basic_ostream} with member type \tcode{char_type} the same as \tcode{charT} and with member type \tcode{traits_type}, which in the second and third forms is the same as \tcode{traits}, then the expression \tcode{out << quoted(s, delim, escape)} @@ -2319,7 +2314,7 @@ index 3f925b2b..f89a4754 100644 of \tcode{out}. This forms a character sequence \tcode{seq}, initially consisting of the following elements: \begin{itemize} -@@ -14118,7 +14118,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. +@@ -14126,7 +14126,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. \pnum \begin{note} @@ -2328,7 +2323,7 @@ index 3f925b2b..f89a4754 100644 for how the value types above and their encodings convert to \tcode{path::value_type} and its encoding. \end{note} -@@ -14718,7 +14718,7 @@ by \ref{fs.path.cvt}. +@@ -14738,7 +14738,7 @@ and print functions\iref{print.fun}. \pnum Generic format observer functions return strings formatted according to the @@ -2337,7 +2332,7 @@ index 3f925b2b..f89a4754 100644 A single slash (\tcode{'/'}) character is used as the \grammarterm{directory-separator}. -@@ -15261,11 +15261,11 @@ If normalization\iref{fs.path.generic} is needed +@@ -15294,11 +15294,11 @@ If normalization\iref{fs.path.generic} is needed \indexlibrarymember{path}{iterator}% \pnum Path iterators iterate over the elements of the pathname @@ -2351,7 +2346,7 @@ index 3f925b2b..f89a4754 100644 except that, for dereferenceable iterators \tcode{a} and \tcode{b} of type \tcode{path::iterator} -@@ -16622,7 +16622,7 @@ If a file is removed from or added to a directory after the +@@ -16655,7 +16655,7 @@ If a file is removed from or added to a directory after the construction of a \tcode{directory_iterator} for the directory, it is unspecified whether or not subsequently incrementing the iterator will ever result in an iterator referencing the removed or added directory entry. See @@ -2360,7 +2355,7 @@ index 3f925b2b..f89a4754 100644 \end{note} \rSec3[fs.dir.itr.members]{Members} -@@ -16714,7 +16714,7 @@ directory_iterator& increment(error_code& ec); +@@ -16747,7 +16747,7 @@ directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -2369,7 +2364,7 @@ index 3f925b2b..f89a4754 100644 \pnum \returns -@@ -17026,7 +17026,7 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17059,7 +17059,7 @@ recursive_directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -2378,7 +2373,7 @@ index 3f925b2b..f89a4754 100644 except that: \begin{itemize} -@@ -17617,7 +17617,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin +@@ -17650,7 +17650,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin \begin{itemdescr} \pnum \effects @@ -2387,7 +2382,7 @@ index 3f925b2b..f89a4754 100644 \pnum \ensures -@@ -17693,7 +17693,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, +@@ -17726,7 +17726,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, \begin{itemdescr} \pnum \effects @@ -2396,7 +2391,7 @@ index 3f925b2b..f89a4754 100644 \pnum \ensures -@@ -17726,7 +17726,7 @@ path filesystem::current_path(error_code& ec); +@@ -17759,7 +17759,7 @@ path filesystem::current_path(error_code& ec); \returns The absolute path of the current working directory, whose pathname in the native format is @@ -2405,7 +2400,7 @@ index 3f925b2b..f89a4754 100644 The signature with argument \tcode{ec} returns \tcode{path()} if an error occurs. -@@ -17757,7 +17757,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; +@@ -17790,7 +17790,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; \begin{itemdescr} \pnum \effects @@ -2414,7 +2409,7 @@ index 3f925b2b..f89a4754 100644 \pnum \ensures -@@ -17868,7 +17868,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. +@@ -17901,7 +17901,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. \item If \tcode{is_regular_file(p)}, the size in bytes of the file \tcode{p} resolves to, determined as if by the value of the POSIX \tcode{stat} @@ -2423,7 +2418,7 @@ index 3f925b2b..f89a4754 100644 \item Otherwise, the result is \impldef{result of \tcode{filesystem::file_size}}. \end{itemize} -@@ -18250,7 +18250,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time, +@@ -18283,7 +18283,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time, \pnum \effects Sets the time of last data modification of the file @@ -2433,7 +2428,7 @@ index 3f925b2b..f89a4754 100644 \pnum \throws diff --git a/source/iterators.tex b/source/iterators.tex -index e073c001..6078fec7 100644 +index e0116c79..7acd9d21 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -729,7 +729,7 @@ is undefined. @@ -2445,7 +2440,7 @@ index e073c001..6078fec7 100644 if all operations provided to meet iterator category requirements are constexpr functions. \begin{note} -@@ -6849,7 +6849,7 @@ ostream_iterator& operator++(int); +@@ -6853,7 +6853,7 @@ ostream_iterator& operator++(int); The class template \tcode{istreambuf_iterator} @@ -2454,7 +2449,7 @@ index e073c001..6078fec7 100644 reads successive \textit{characters} from the streambuf for which it was constructed. -@@ -6974,7 +6974,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; +@@ -6978,7 +6978,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; Initializes \tcode{sbuf_} with \keyword{nullptr}. \end{itemdescr} @@ -2462,7 +2457,7 @@ index e073c001..6078fec7 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(istream_type& s) noexcept; -@@ -6986,7 +6985,6 @@ istreambuf_iterator(istream_type& s) noexcept; +@@ -6990,7 +6989,6 @@ istreambuf_iterator(istream_type& s) noexcept; Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2470,7 +2465,7 @@ index e073c001..6078fec7 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(streambuf_type* s) noexcept; -@@ -6998,7 +6996,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; +@@ -7002,7 +7000,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; Initializes \tcode{sbuf_} with \tcode{s}. \end{itemdescr} @@ -2478,7 +2473,7 @@ index e073c001..6078fec7 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept; -@@ -7149,7 +7146,6 @@ is not a null pointer. +@@ -7153,7 +7150,6 @@ is not a null pointer. Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2487,7 +2482,7 @@ index e073c001..6078fec7 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index 6cf011e4..aa909af0 100644 +index 7c818101..dad2c6a2 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2501,18 +2496,18 @@ index 6cf011e4..aa909af0 100644 directive \tcode{\#include}, less any source lines skipped by any of the conditional inclusion\iref{cpp.cond} preprocessing directives, as modified by the implementation-defined behavior of any -@@ -50,8 +50,8 @@ example) - calls to functions whose identifiers have external or module linkage, - manipulation of objects whose identifiers have external or module linkage, or - manipulation of data files. Translation units can be separately --translated and then later linked to produce an executable --program\iref{basic.link}. -+translated and then later \link{linked}{basic.link} to produce an executable -+program. +@@ -39,8 +39,8 @@ if any, is + called a \defnadj{preprocessing}{translation unit}. + \begin{note} + A \Cpp{} program need not all be translated at the same time. +-Translation units can be separately translated and then later linked +-to produce an executable program\iref{basic.link}. ++Translation units can be separately translated and then later \link{linked}{basic.link} ++to produce an executable program. \end{note} \indextext{compilation!separate|)} -@@ -2243,7 +2243,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) +@@ -2294,7 +2294,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) \pnum If \placeholder{L} is a \grammarterm{user-defined-character-literal}, let \placeholder{ch} be the literal without its \grammarterm{ud-suffix}. @@ -2522,7 +2517,7 @@ index 6cf011e4..aa909af0 100644 literal \placeholder{L} is treated as a call of the form diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index ea7a21b7..10076632 100644 +index 7d6d3012..9c2a79b8 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2534,7 +2529,7 @@ index ea7a21b7..10076632 100644 numeric algorithms and complex number components that extend support for numeric processing. The \tcode{valarray} -@@ -518,8 +518,8 @@ of other standards\iref{intro.refs}. +@@ -524,8 +524,8 @@ of other standards\iref{intro.refs}. Subclause \ref{conventions} describes several editorial conventions used to describe the contents of the \Cpp{} standard library. These conventions are for describing @@ -2545,7 +2540,7 @@ index ea7a21b7..10076632 100644 \rSec3[expos.only.entity]{Exposition-only entities, etc.} -@@ -641,7 +641,7 @@ and \ref{depr} are +@@ -647,7 +647,7 @@ and \ref{depr} are Each bitmask type can be implemented as an enumerated type that overloads certain operators, as an integer type, or as a @@ -2554,7 +2549,7 @@ index ea7a21b7..10076632 100644 \indextext{type!enumerated}% \pnum -@@ -767,7 +767,7 @@ locale. +@@ -773,7 +773,7 @@ locale. \item A \defn{character sequence} @@ -2563,7 +2558,7 @@ index ea7a21b7..10076632 100644 can be declared as \tcode{\placeholdernc{T\;A}[\placeholder{N}]}, where \tcode{\placeholder{T}} is any of the types -@@ -948,7 +948,7 @@ signatures, or for virtual destructors that can be generated by default. +@@ -954,7 +954,7 @@ signatures, or for virtual destructors that can be generated by default. \pnum \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr} do not specify the representation of classes, and intentionally @@ -2572,7 +2567,7 @@ index ea7a21b7..10076632 100644 define static or non-static class members, or both, as needed to implement the semantics of the member functions specified in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr}. -@@ -1360,10 +1360,10 @@ std::vector vi; // OK +@@ -1367,10 +1367,10 @@ std::vector vi; // OK Except as noted in \ref{library} through \ref{\lastlibchapter} and \ref{depr}, the contents of each header \tcode{c\placeholder{name}} is the same as that of the corresponding header \tcode{\placeholder{name}.h} as @@ -2585,7 +2580,7 @@ index ea7a21b7..10076632 100644 It is unspecified whether these names (including any overloads added in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr}) are first declared within the global namespace scope -@@ -1680,8 +1680,8 @@ a hosted implementation. +@@ -1688,8 +1688,8 @@ a hosted implementation. \pnum Subclause \ref{using} describes how a \Cpp{} program gains access to the facilities of the \Cpp{} standard library. \ref{using.headers} describes effects during translation @@ -2596,7 +2591,7 @@ index ea7a21b7..10076632 100644 \rSec3[using.headers]{Headers} -@@ -1724,7 +1724,7 @@ declared in that header. No diagnostic is required. +@@ -1732,7 +1732,7 @@ declared in that header. No diagnostic is required. \rSec3[using.linkage]{Linkage} \pnum @@ -2605,7 +2600,7 @@ index ea7a21b7..10076632 100644 Unless otherwise specified, objects and functions have the default \tcode{extern "C++"} linkage\iref{dcl.link}. -@@ -1758,8 +1758,8 @@ the program prior to program startup. +@@ -1766,8 +1766,8 @@ the program prior to program startup. \indextext{startup!program}% \pnum See also @@ -2616,7 +2611,7 @@ index ea7a21b7..10076632 100644 \rSec2[utility.requirements]{Requirements on types and expressions} -@@ -1807,7 +1807,7 @@ rvalue of type \tcode{const T}. +@@ -1815,7 +1815,7 @@ rvalue of type \tcode{const T}. In general, a default constructor is not required. Certain container class member function signatures specify \tcode{T()} as a default argument. \tcode{T()} shall be a well-defined expression\iref{dcl.init} if one of those @@ -2625,7 +2620,7 @@ index ea7a21b7..10076632 100644 \begin{oldconcepttable}{EqualityComparable}{}{cpp17.equalitycomparable} {x{1in}x{1in}p{3in}} -@@ -1933,13 +1933,13 @@ evaluated in the context described below, and +@@ -1941,13 +1941,13 @@ evaluated in the context described below, and \pnum The context in which \tcode{swap(t, u)} and \tcode{swap(u, t)} are evaluated shall @@ -2642,7 +2637,7 @@ index ea7a21b7..10076632 100644 \end{itemize} \begin{note} If \tcode{T} and \tcode{U} are both fundamental types or arrays of -@@ -2042,8 +2042,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in +@@ -2050,8 +2050,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in \end{note} \pnum @@ -2654,7 +2649,7 @@ index ea7a21b7..10076632 100644 had been evaluated in place of \tcode{p}. \pnum -@@ -2146,7 +2147,7 @@ as the memory allocation and deallocation primitives for it. All of the +@@ -2154,7 +2155,7 @@ as the memory allocation and deallocation primitives for it. All of the string types\iref{strings}, containers\iref{containers} (except \tcode{array} and \tcode{inplace_vector}), string buffers and string streams\iref{input.output}, and @@ -2663,7 +2658,7 @@ index ea7a21b7..10076632 100644 allocators. \pnum -@@ -2970,7 +2971,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, +@@ -2978,7 +2979,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, whether or not \tcode{T} is a complete type: \begin{itemize} \item \tcode{X} is a complete type, and @@ -2672,7 +2667,7 @@ index ea7a21b7..10076632 100644 other than \tcode{value_type} are complete types. \end{itemize} -@@ -2981,11 +2982,11 @@ whether or not \tcode{T} is a complete type: +@@ -2989,11 +2990,11 @@ whether or not \tcode{T} is a complete type: \pnum Subclause \ref{constraints} describes restrictions on \Cpp{} programs that use the facilities of the \Cpp{} standard library. The following subclauses specify constraints on the @@ -2688,7 +2683,7 @@ index ea7a21b7..10076632 100644 \rSec3[namespace.constraints]{Namespace use} -@@ -3378,7 +3379,7 @@ are reserved for use by \Cpp{} implementations. +@@ -3396,7 +3397,7 @@ are reserved for use by \Cpp{} implementations. If a file with a name equivalent to the derived file name for one of the \Cpp{} standard library headers is not provided as part of the implementation, and a file with that name @@ -2697,7 +2692,7 @@ index ea7a21b7..10076632 100644 the behavior is undefined.% \indextext{source file}% \indextext{undefined} -@@ -3549,7 +3550,7 @@ specified as being shareable without data races or the user supplies a locking m +@@ -3567,7 +3568,7 @@ specified as being shareable without data races or the user supplies a locking m \pnum If an object of a standard library type is accessed, and @@ -2706,7 +2701,7 @@ index ea7a21b7..10076632 100644 does not happen before the access, or the access does not happen before the end of the object's lifetime, the behavior is undefined unless otherwise specified. -@@ -3615,7 +3616,7 @@ Every such entity shall be defined such that any header that defines it may be +@@ -3633,7 +3634,7 @@ Every such entity shall be defined such that any header that defines it may be included after any other header that also defines it\iref{basic.def.odr}. \pnum @@ -2715,7 +2710,7 @@ index ea7a21b7..10076632 100644 shall include only their corresponding \Cpp{} standard library header, as described in~\ref{headers}. -@@ -3643,7 +3644,7 @@ explicitly stated otherwise. +@@ -3661,7 +3662,7 @@ explicitly stated otherwise. It is unspecified whether any non-member functions in the \Cpp{} standard library are defined as @@ -2724,7 +2719,7 @@ index ea7a21b7..10076632 100644 \pnum A call to a non-member function signature -@@ -3671,7 +3672,7 @@ The phrase ``unless otherwise specified'' applies to cases such as +@@ -3689,7 +3690,7 @@ The phrase ``unless otherwise specified'' applies to cases such as the swappable with requirements\iref{swappable.requirements}. The exception for overloaded operators allows argument-dependent lookup in cases like that of @@ -2733,7 +2728,7 @@ index ea7a21b7..10076632 100644 \effects \begin{codeblock} -@@ -3686,7 +3687,7 @@ return *this; +@@ -3704,7 +3705,7 @@ return *this; \pnum It is unspecified whether any member functions in the \Cpp{} standard library are defined as @@ -2742,7 +2737,7 @@ index ea7a21b7..10076632 100644 \pnum For a non-virtual member function described in the \Cpp{} standard library, -@@ -3765,8 +3766,8 @@ library may be recursively reentered. +@@ -3783,8 +3784,8 @@ library may be recursively reentered. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -2753,7 +2748,7 @@ index ea7a21b7..10076632 100644 Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. -@@ -3809,7 +3810,7 @@ not visible to users and are protected against data races. +@@ -3827,7 +3828,7 @@ not visible to users and are protected against data races. \pnum Unless otherwise specified, \Cpp{} standard library functions shall perform all operations solely within the current thread if those operations have effects that are @@ -2762,7 +2757,7 @@ index ea7a21b7..10076632 100644 \pnum \begin{note} -@@ -3938,7 +3939,7 @@ potentially-throwing exception specification} exceptions. +@@ -3956,7 +3957,7 @@ potentially-throwing exception specification} exceptions. \begin{footnote} In particular, they can report a failure to allocate storage by throwing an exception of type @@ -2771,15 +2766,6 @@ index ea7a21b7..10076632 100644 or a class derived from \tcode{bad_alloc}\iref{bad.alloc}. \end{footnote} -@@ -3966,7 +3967,7 @@ assertions\iref{basic.contract,structure.specifications}. - - \pnum - Certain functions in the \Cpp{} standard library report errors via a --\tcode{error_code}\iref{syserr.errcode.overview} object. That object's -+\link{\tcode{error_code}}{syserr.errcode.overview} object. That object's - \tcode{category()} member shall return \tcode{system_category()} for - errors originating from the operating system, or a reference to an - \impldef{\tcode{error_category} for errors originating outside the diff --git a/source/limits.tex b/source/limits.tex index bdc1f3de..efd4eb00 100644 --- a/source/limits.tex @@ -2794,10 +2780,10 @@ index bdc1f3de..efd4eb00 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index 529ed109..9402c55b 100644 +index da32b9a2..e0a5e89d 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -156,8 +156,8 @@ floating-point evaluation in constant expressions. +@@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. \rSec2[cfenv.thread]{Threads} \pnum @@ -2808,7 +2794,7 @@ index 529ed109..9402c55b 100644 environment is the state of the floating-point environment of the thread that constructs the corresponding \tcode{thread} object\iref{thread.thread.class} or \tcode{jthread} object\iref{thread.jthread.class} -@@ -1565,21 +1565,21 @@ the effect of instantiating a template: +@@ -1566,21 +1566,21 @@ the effect of instantiating a template: is undefined unless the corresponding template argument is cv-unqualified and meets the requirements @@ -2833,7 +2819,7 @@ index 529ed109..9402c55b 100644 \item that has a template type parameter named \tcode{RealType} -@@ -1703,7 +1703,7 @@ In \tref{rand.req.seedseq} and throughout this subclause: +@@ -1704,7 +1704,7 @@ In \tref{rand.req.seedseq} and throughout this subclause: \endhead \tcode{S::result_type} & \tcode{T} @@ -2842,7 +2828,7 @@ index 529ed109..9402c55b 100644 of at least 32 bits. & \\ \rowsep -@@ -1868,7 +1868,7 @@ An engine's state may be established via +@@ -1869,7 +1869,7 @@ An engine's state may be established via \pnum A class \tcode{E} that meets the requirements @@ -2851,7 +2837,7 @@ index 529ed109..9402c55b 100644 also meets the requirements of a \term{random number engine} if the expressions shown -@@ -1889,7 +1889,7 @@ In \tref{rand.req.eng} and throughout this subclause: +@@ -1890,7 +1890,7 @@ In \tref{rand.req.eng} and throughout this subclause: \tcode{s} is a value of \tcode{T}; \item \tcode{q} is an lvalue @@ -2860,7 +2846,7 @@ index 529ed109..9402c55b 100644 \item \tcode{z} is a value of type \tcode{unsigned long long}; -@@ -2323,7 +2323,7 @@ In \tref{rand.req.dist} and throughout this subclause, +@@ -2324,7 +2324,7 @@ In \tref{rand.req.dist} and throughout this subclause, \item \tcode{g}, \tcode{g1}, and \tcode{g2} are lvalues of a type meeting the requirements @@ -2869,7 +2855,7 @@ index 529ed109..9402c55b 100644 \item \tcode{os} is an lvalue of the type of some class template specialization \tcode{basic_ostream}; -@@ -2355,7 +2355,7 @@ according to \ref{strings} and \ref{input.output}. +@@ -2356,7 +2356,7 @@ according to \ref{strings} and \ref{input.output}. \endhead \tcode{D::result_type} & \tcode{T} @@ -2878,7 +2864,7 @@ index 529ed109..9402c55b 100644 & \\ \rowsep \tcode{D::param_type} -@@ -2597,7 +2597,7 @@ reference to the type of \tcode{is}. +@@ -2598,7 +2598,7 @@ reference to the type of \tcode{is}. Each type instantiated from a class template specified in \ref{rand.eng} meets the requirements @@ -2887,7 +2873,7 @@ index 529ed109..9402c55b 100644 \pnum Except where specified otherwise, -@@ -3395,7 +3395,7 @@ The counter is the value $Z$ introduced at the beginning of this subclause. +@@ -3396,7 +3396,7 @@ The counter is the value $Z$ introduced at the beginning of this subclause. Each type instantiated from a class template specified in \ref{rand.adapt} meets the requirements @@ -2896,7 +2882,7 @@ index 529ed109..9402c55b 100644 \pnum Except where specified otherwise, -@@ -4489,7 +4489,7 @@ than the output when computing $S$. +@@ -4490,7 +4490,7 @@ than the output when computing $S$. Each type instantiated from a class template specified in \ref{rand.dist} meets the requirements @@ -2905,7 +2891,7 @@ index 529ed109..9402c55b 100644 \pnum Descriptions are provided in \ref{rand.dist} -@@ -5343,6 +5343,7 @@ p(x\,|\,\alpha,\beta) = +@@ -5344,6 +5344,7 @@ p(x\,|\,\alpha,\beta) = \indexlibraryglobal{gamma_distribution}% \indexlibrarymember{result_type}{gamma_distribution}% @@ -2913,7 +2899,7 @@ index 529ed109..9402c55b 100644 \begin{codeblock} namespace std { template -@@ -5386,7 +5387,6 @@ namespace std { +@@ -5387,7 +5388,6 @@ namespace std { } \end{codeblock} @@ -2921,7 +2907,7 @@ index 529ed109..9402c55b 100644 \indexlibraryctor{gamma_distribution}% \begin{itemdecl} explicit gamma_distribution(RealType alpha, RealType beta = 1.0); -@@ -5493,7 +5493,7 @@ namespace std { +@@ -5494,7 +5494,7 @@ namespace std { \indexlibraryctor{weibull_distribution}% \begin{itemdecl} explicit weibull_distribution(RealType a, RealType b = 1.0); @@ -2930,7 +2916,7 @@ index 529ed109..9402c55b 100644 \begin{itemdescr} \pnum -@@ -5603,7 +5603,6 @@ namespace std { +@@ -5604,7 +5604,6 @@ namespace std { } \end{codeblock} @@ -2938,7 +2924,7 @@ index 529ed109..9402c55b 100644 \indexlibraryctor{extreme_value_distribution}% \begin{itemdecl} explicit extreme_value_distribution(RealType a, RealType b = 1.0); -@@ -5727,7 +5726,6 @@ namespace std { +@@ -5728,7 +5727,6 @@ namespace std { } \end{codeblock} @@ -2946,7 +2932,7 @@ index 529ed109..9402c55b 100644 \indexlibraryctor{normal_distribution}% \begin{itemdecl} explicit normal_distribution(RealType mean, RealType stddev = 1.0); -@@ -5931,7 +5929,6 @@ namespace std { +@@ -5932,7 +5930,6 @@ namespace std { } \end{codeblock} @@ -2954,7 +2940,7 @@ index 529ed109..9402c55b 100644 \indexlibraryctor{chi_squared_distribution}% \begin{itemdecl} explicit chi_squared_distribution(RealType n); -@@ -6125,7 +6122,6 @@ namespace std { +@@ -6126,7 +6123,6 @@ namespace std { } \end{codeblock} @@ -2962,7 +2948,7 @@ index 529ed109..9402c55b 100644 \indexlibraryctor{fisher_f_distribution}% \begin{itemdecl} explicit fisher_f_distribution(RealType m, RealType n = 1); -@@ -6228,7 +6224,6 @@ namespace std { +@@ -6229,7 +6225,6 @@ namespace std { } \end{codeblock} @@ -2970,7 +2956,7 @@ index 529ed109..9402c55b 100644 \indexlibraryctor{student_t_distribution}% \begin{itemdecl} explicit student_t_distribution(RealType n); -@@ -6344,7 +6339,7 @@ namespace std { +@@ -6345,7 +6340,7 @@ namespace std { } \end{codeblock} @@ -2979,7 +2965,7 @@ index 529ed109..9402c55b 100644 \begin{itemdecl} discrete_distribution(); \end{itemdecl} -@@ -7174,8 +7169,9 @@ additional functions and operators as follows: +@@ -7175,8 +7170,9 @@ additional functions and operators as follows: \begin{itemize} \item for every function taking a @@ -2991,7 +2977,7 @@ index 529ed109..9402c55b 100644 identical functions taking the replacement types shall be added; \item for every function taking two -@@ -7200,7 +7196,7 @@ objects. +@@ -7201,7 +7197,7 @@ objects. \pnum These library functions are permitted to throw a @@ -3000,7 +2986,7 @@ index 529ed109..9402c55b 100644 to carry out the operation. Note that the exception is not mandated. -@@ -7360,7 +7356,7 @@ explicit valarray(size_t n); +@@ -7361,7 +7357,7 @@ explicit valarray(size_t n); \pnum \effects Constructs a \tcode{valarray} that has length \tcode{n}. @@ -3009,7 +2995,7 @@ index 529ed109..9402c55b 100644 \end{itemdescr} \indexlibraryctor{valarray}% -@@ -7620,7 +7616,7 @@ and other techniques to generate efficient +@@ -7621,7 +7617,7 @@ and other techniques to generate efficient \pnum The reference returned by the subscript operator for an array shall be valid until the member function @@ -3018,7 +3004,7 @@ index 529ed109..9402c55b 100644 that array ends, whichever happens first. \end{itemdescr} -@@ -8046,7 +8042,7 @@ places, with zero fill. +@@ -8047,7 +8043,7 @@ places, with zero fill. \pnum \begin{example} If the argument has the value $-2$, @@ -3027,7 +3013,7 @@ index 529ed109..9402c55b 100644 of the first element of \tcode{*this}; etc. \end{example} \end{itemdescr} -@@ -9171,7 +9167,7 @@ parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. +@@ -9172,7 +9168,7 @@ parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. \pnum The iterators returned by \tcode{begin} and \tcode{end} for an array are guaranteed to be valid until the member function @@ -3036,9 +3022,9 @@ index 529ed109..9402c55b 100644 array or until the lifetime of that array ends, whichever happens first. -@@ -9788,12 +9784,12 @@ namespace std { - The contents and meaning of the header \libheader{cmath} - are the same as the C standard library header \libheader{math.h}, +@@ -9809,12 +9805,12 @@ The contents and meaning of the header \libheader{cmath} + are a subset of the C standard library header \libheader{math.h} and + only the declarations shown in the synopsis above are present, with the addition of -a three-dimensional hypotenuse function\iref{c.math.hypot3}, -a linear interpolation function\iref{c.math.lerp}, and @@ -3052,7 +3038,7 @@ index 529ed109..9402c55b 100644 \end{note} \pnum -@@ -9857,7 +9853,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. +@@ -9878,7 +9874,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. If \tcode{abs} is called with an argument of type \tcode{X} for which \tcode{is_unsigned_v} is \tcode{true} and if \tcode{X} cannot be converted to \tcode{int} @@ -3062,10 +3048,10 @@ index 529ed109..9402c55b 100644 Allowing arguments that can be promoted to \tcode{int} provides compatibility with C. diff --git a/source/overloading.tex b/source/overloading.tex -index 5343a015..db9317ec 100644 +index 7b882855..8e2bc352 100644 --- a/source/overloading.tex +++ b/source/overloading.tex -@@ -69,7 +69,7 @@ Overload resolution selects the function to call in seven distinct +@@ -74,7 +74,7 @@ Overload resolution selects the function to call in seven distinct contexts within the language: \begin{itemize} \item @@ -3074,7 +3060,7 @@ index 5343a015..db9317ec 100644 \item invocation of a function call operator, a pointer-to-function conversion function, a reference-to-pointer-to-function conversion -@@ -83,14 +83,14 @@ invocation of a constructor for default- or direct-initialization\iref{dcl.init} +@@ -88,14 +88,14 @@ invocation of a constructor for default- or direct-initialization\iref{dcl.init} of a class object\iref{over.match.ctor}; \item invocation of a user-defined conversion for @@ -3091,7 +3077,7 @@ index 5343a015..db9317ec 100644 \end{itemize} Each of these contexts defines the set of candidate functions and -@@ -108,7 +108,7 @@ conditions) is selected to form a set of +@@ -113,7 +113,7 @@ conditions) is selected to form a set of viable functions\iref{over.match.viable}. \item Then the best viable function is selected based on the @@ -3100,7 +3086,7 @@ index 5343a015..db9317ec 100644 match each argument to the corresponding parameter of each viable function. \end{itemize} -@@ -119,7 +119,7 @@ resolution succeeds and produces it as the result. +@@ -124,7 +124,7 @@ resolution succeeds and produces it as the result. Otherwise overload resolution fails and the invocation is ill-formed. When overload resolution succeeds, @@ -3109,7 +3095,7 @@ index 5343a015..db9317ec 100644 in which it is used, the program is ill-formed. -@@ -233,7 +233,7 @@ as long as in all other respects the argument can be +@@ -238,7 +238,7 @@ as long as in all other respects the argument can be converted to the type of the implicit object parameter. \begin{note} The fact that such an argument is an rvalue does not @@ -3118,7 +3104,7 @@ index 5343a015..db9317ec 100644 \end{note} \pnum -@@ -356,7 +356,7 @@ B b3 = C(); // calls \#4 +@@ -361,7 +361,7 @@ B b3 = C(); // calls \#4 \indextext{overloading!resolution!function call syntax|(} \pnum @@ -3127,7 +3113,7 @@ index 5343a015..db9317ec 100644 \begin{ncsimplebnf} postfix-expression \terminal{(} \opt{expression-list} \terminal{)} \end{ncsimplebnf} -@@ -938,7 +938,7 @@ in each case using the selected rewritten \tcode{\keyword{operator}==} candidate +@@ -954,7 +954,7 @@ in each case using the selected rewritten \tcode{\keyword{operator}==} candidate If a built-in candidate is selected by overload resolution, the operands of class type are converted to the types of the corresponding parameters of the selected operation function, except that the second standard conversion @@ -3136,7 +3122,7 @@ index 5343a015..db9317ec 100644 Then the operator is treated as the corresponding built-in operator and interpreted according to \ref{expr.compound}. \begin{example} -@@ -1021,10 +1021,10 @@ void B::f() { +@@ -1037,10 +1037,10 @@ void B::f() { \indextext{overloading!resolution!initialization} \pnum @@ -3149,7 +3135,7 @@ index 5343a015..db9317ec 100644 overload resolution selects the constructor. For direct-initialization or default-initialization (including default-initialization in the context of copy-list-initialization), -@@ -1715,7 +1715,7 @@ Third, for +@@ -1797,7 +1797,7 @@ Third, for \tcode{F} to be a viable function, there shall exist for each argument an @@ -3158,7 +3144,7 @@ index 5343a015..db9317ec 100644 converts that argument to the corresponding parameter of \tcode{F}. If the parameter has reference type, the implicit conversion sequence -@@ -1779,8 +1779,8 @@ float x = a; // ambiguous: both possibilities require conversions, +@@ -1861,8 +1861,8 @@ float x = a; // ambiguous: both possibilities require conversions, \end{example} or, if not that, @@ -3169,7 +3155,7 @@ index 5343a015..db9317ec 100644 return type of $\tcode{F}_1$ is the same kind of reference (lvalue or rvalue) as the reference being initialized, and the return type of $\tcode{F}_2$ is not \begin{example} -@@ -1910,7 +1910,7 @@ $\tcode{F}_1$ is generated from a +@@ -1992,7 +1992,7 @@ $\tcode{F}_1$ is generated from a and $\tcode{F}_2$ is not, or, if not that, \item @@ -3178,7 +3164,7 @@ index 5343a015..db9317ec 100644 and $\tcode{F}_2$ is not, or, if not that, \item -@@ -2055,7 +2055,7 @@ parameter. +@@ -2118,7 +2118,7 @@ parameter. \begin{note} Other properties, such as the lifetime, storage duration, linkage, alignment, accessibility of the argument, whether the argument is a bit-field, @@ -3187,7 +3173,7 @@ index 5343a015..db9317ec 100644 So, although an implicit conversion sequence can be defined for a given argument-parameter pair, the conversion from the argument to the parameter might still -@@ -2068,11 +2068,11 @@ well-formed implicit conversion +@@ -2131,11 +2131,11 @@ well-formed implicit conversion sequence is one of the following forms: \begin{itemize} \item @@ -3202,7 +3188,7 @@ index 5343a015..db9317ec 100644 \end{itemize} \pnum -@@ -2253,10 +2253,10 @@ Each conversion in \tref{over.ics.scs} +@@ -2313,10 +2313,10 @@ Each conversion in \tref{over.ics.scs} also has an associated rank (Exact Match, Promotion, or Conversion). These are used @@ -3216,7 +3202,7 @@ index 5343a015..db9317ec 100644 If any of those has Conversion rank, the sequence has Conversion rank; otherwise, if any of those has Promotion rank, the sequence has Promotion rank; otherwise, the sequence has Exact -@@ -2293,7 +2293,7 @@ by a constructor\iref{class.conv.ctor}, the initial standard +@@ -2353,7 +2353,7 @@ by a constructor\iref{class.conv.ctor}, the initial standard conversion sequence converts the source type to the type of the first parameter of that constructor. If the user-defined @@ -3225,7 +3211,7 @@ index 5343a015..db9317ec 100644 initial standard conversion sequence converts the source type to the type of the object parameter of that conversion function. -@@ -2429,7 +2429,7 @@ the prohibition on binding a non-\keyword{const} lvalue reference to a bit-field +@@ -2489,7 +2489,7 @@ the prohibition on binding a non-\keyword{const} lvalue reference to a bit-field \rSec4[over.ics.list]{List-initialization sequence} \pnum @@ -3234,7 +3220,7 @@ index 5343a015..db9317ec 100644 expression and special rules apply for converting it to a parameter type. \pnum -@@ -2671,13 +2671,13 @@ When comparing the basic forms of implicit conversion sequences +@@ -2731,13 +2731,13 @@ When comparing the basic forms of implicit conversion sequences (as defined in~\ref{over.best.ics}) \begin{itemize} \item @@ -3252,7 +3238,7 @@ index 5343a015..db9317ec 100644 \end{itemize} \pnum -@@ -3123,7 +3123,7 @@ the left side of an assignment\iref{expr.assign}, +@@ -3183,7 +3183,7 @@ the left side of an assignment\iref{expr.assign}, \item a parameter of a function\iref{expr.call}, \item @@ -3261,7 +3247,7 @@ index 5343a015..db9317ec 100644 \item the return value of a function, operator function, or conversion\iref{stmt.return}, \item -@@ -3323,8 +3323,8 @@ The operators +@@ -3383,8 +3383,8 @@ The operators and \tcode{[]} are formed from more than one token. @@ -3272,7 +3258,7 @@ index 5343a015..db9317ec 100644 \end{note} \indextext{operator!subscripting}% \indextext{operator!function call}% -@@ -3420,7 +3420,7 @@ this is not required by operator functions. +@@ -3480,7 +3480,7 @@ this is not required by operator functions. \pnum \indextext{argument!overloaded operator and default}% @@ -3281,7 +3267,7 @@ index 5343a015..db9317ec 100644 except where explicitly stated below. Operator functions cannot have more or fewer parameters than the -@@ -3756,7 +3756,7 @@ to not be included in the set of candidate functions. +@@ -3816,7 +3816,7 @@ to not be included in the set of candidate functions. In this subclause, the term \defn{promoted integral type} is used to refer to those cv-unqualified integral types which are preserved by @@ -3291,10 +3277,10 @@ index 5343a015..db9317ec 100644 and \tcode{long} diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index ee7959ab..885db47e 100644 +index 38c59533..a6fd4d0f 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex -@@ -504,7 +504,7 @@ shall not appear in any context not mentioned in this subclause. +@@ -508,7 +508,7 @@ shall not appear in any context not mentioned in this subclause. Each preprocessing token that remains (in the list of preprocessing tokens that will become the controlling expression) after all macro replacements have occurred @@ -3303,7 +3289,7 @@ index ee7959ab..885db47e 100644 \pnum Preprocessing directives of the forms -@@ -551,8 +551,8 @@ are replaced with the \grammarterm{pp-number} +@@ -562,8 +562,8 @@ are replaced with the \grammarterm{pp-number} \tcode{0}, and then each preprocessing token is converted into a token. \begin{note} @@ -3314,7 +3300,7 @@ index ee7959ab..885db47e 100644 even when its spelling consists entirely of letters and underscores. Therefore it is not subject to this replacement. \end{note} -@@ -570,8 +570,8 @@ Thus on an +@@ -581,8 +581,8 @@ Thus on an implementation where \tcode{std::numeric_limits::max()} is \tcode{0x7FFF} and \tcode{std::numeric_limits::max()} is \tcode{0xFFFF}, the integer literal \tcode{0x8000} is signed and positive within a \tcode{\#if} @@ -3325,7 +3311,7 @@ index ee7959ab..885db47e 100644 \end{note} This includes interpreting \grammarterm{character-literal}s according to the rules in \ref{lex.ccon}. -@@ -2041,7 +2041,7 @@ of the current source line is +@@ -2083,7 +2083,7 @@ of the current source line is the line number of the current physical source line, i.e., it is one greater than the number of new-line characters read or introduced @@ -3334,7 +3320,7 @@ index ee7959ab..885db47e 100644 while processing the source file to the current preprocessing token. \pnum -@@ -2399,7 +2399,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. +@@ -2446,7 +2446,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. \indextext{__stdcpp_threads__@\mname{STDCPP_THREADS}}% \mname{STDCPP_THREADS}\\ Defined, and has the value integer literal 1, if and only if a program @@ -3344,10 +3330,10 @@ index ee7959ab..885db47e 100644 \end{description} diff --git a/source/statements.tex b/source/statements.tex -index ba75c744..9782eab7 100644 +index 18bd3aca..6bc31cb2 100644 --- a/source/statements.tex +++ b/source/statements.tex -@@ -198,7 +198,7 @@ Expression statements have the form +@@ -222,7 +222,7 @@ Expression statements have the form \end{bnf} The expression is @@ -3356,7 +3342,7 @@ index ba75c744..9782eab7 100644 All \indextext{side effects}% side effects from an expression statement -@@ -427,10 +427,10 @@ the value of the condition is the value of the \grammarterm{expression}; +@@ -451,10 +451,10 @@ the value of the condition is the value of the \grammarterm{expression}; otherwise, it is the value of the decision variable. The value of the condition shall be of integral type, enumeration type, or class type. If of class type, the @@ -3370,7 +3356,7 @@ index ba75c744..9782eab7 100644 to the promoted type. Any statement within the \keyword{switch} statement can be labeled with one or -@@ -440,7 +440,7 @@ more case labels as follows: +@@ -464,7 +464,7 @@ more case labels as follows: \keyword{case} constant-expression \terminal{:} \end{ncbnf} where the \grammarterm{constant-expression} shall be @@ -3379,7 +3365,7 @@ index ba75c744..9782eab7 100644 adjusted type of the switch condition. No two of the case constants in the same switch shall have the same value after conversion. -@@ -539,7 +539,7 @@ An \grammarterm{init-statement} ends with a semicolon. +@@ -550,7 +550,7 @@ An \grammarterm{init-statement} ends with a semicolon. \pnum \indextext{scope!\idxgram{iteration-statement}}% The substatement in an \grammarterm{iteration-statement} implicitly defines @@ -3388,7 +3374,7 @@ index ba75c744..9782eab7 100644 through the loop. If the substatement in an \grammarterm{iteration-statement} is a single statement and not a \grammarterm{compound-statement}, -@@ -638,7 +638,7 @@ fails. +@@ -649,7 +649,7 @@ fails. \indextext{statement!\idxcode{do}} \pnum @@ -3397,7 +3383,7 @@ index ba75c744..9782eab7 100644 if that conversion is ill-formed, the program is ill-formed. \pnum -@@ -807,8 +807,8 @@ Jump statements unconditionally transfer control. +@@ -1008,8 +1008,8 @@ Jump statements unconditionally transfer control. \indextext{local variable!destruction of}% \indextext{scope!destructor and exit from}% \begin{note} @@ -3408,7 +3394,7 @@ index ba75c744..9782eab7 100644 in the reverse order of their construction\iref{stmt.dcl}. For temporaries, see~\ref{class.temporary}. However, the program can be terminated (by calling -@@ -908,7 +908,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; +@@ -1079,7 +1079,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; the \tcode{return} statement initializes the returned reference or prvalue result object of the (explicit or implicit) function call @@ -3417,7 +3403,7 @@ index ba75c744..9782eab7 100644 \begin{note} A constructor or destructor does not have a return type. \end{note} -@@ -1041,7 +1041,7 @@ results in undefined behavior. +@@ -1212,7 +1212,7 @@ results in undefined behavior. The \tcode{goto} statement unconditionally transfers control to the statement labeled by the identifier. The identifier shall be a \indextext{label}% @@ -3426,7 +3412,7 @@ index ba75c744..9782eab7 100644 \rSec1[stmt.contract.assert]{Assertion statement} -@@ -1152,8 +1152,8 @@ lx: +@@ -1323,8 +1323,8 @@ lx: \indextext{initialization!local \tcode{static}}% \indextext{initialization!local \tcode{thread_local}}% Dynamic initialization of a block variable with @@ -3437,7 +3423,7 @@ index ba75c744..9782eab7 100644 the first time control passes through its declaration; such a variable is considered initialized upon the completion of its initialization. If the initialization exits by throwing an exception, the initialization is not -@@ -1196,8 +1196,8 @@ will be destroyed if and only if it was constructed. +@@ -1367,8 +1367,8 @@ will be destroyed if and only if it was constructed. \pnum There is an ambiguity in the grammar involving \grammarterm{expression-statement}{s} and \grammarterm{declaration}{s}: An @@ -3449,10 +3435,10 @@ index ba75c744..9782eab7 100644 \grammarterm{declarator} starts with a \tcode{(}. In those cases the \grammarterm{statement} is considered a \grammarterm{declaration}, diff --git a/source/strings.tex b/source/strings.tex -index 0245aaae..6f584dff 100644 +index cc13d13f..e943eef1 100644 --- a/source/strings.tex +++ b/source/strings.tex -@@ -5505,13 +5505,13 @@ The contents and meaning of the header \libheaderdef{cstring} +@@ -5528,13 +5528,13 @@ The contents and meaning of the header \libheaderdef{cstring} are the same as the C standard library header \libheader{string.h}. \pnum @@ -3469,7 +3455,7 @@ index 0245aaae..6f584dff 100644 Each of these functions implicitly creates objects\iref{intro.object} in the destination region of storage immediately prior to copying the sequence of characters to the destination. -@@ -5523,7 +5523,7 @@ otherwise the value of the first parameter. +@@ -5546,7 +5546,7 @@ otherwise the value of the first parameter. The functions \tcode{strchr}, \tcode{strpbrk}, \tcode{strrchr}, \tcode{strstr}, and \tcode{memchr}, have different signatures in this document, @@ -3477,9 +3463,9 @@ index 0245aaae..6f584dff 100644 +but they have the same behavior as in the \link{C standard library}{library.c}. \end{note} - \xrefc{7.24} + \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index 95d674aa..ff85b31b 100644 +index f0277042..eeac4a21 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3521,7 +3507,7 @@ index 95d674aa..ff85b31b 100644 \end{codeblock} \pnum -@@ -101,11 +94,6 @@ and as noted in +@@ -102,11 +95,6 @@ and as noted in \rSec2[cstdlib.syn]{Header \tcode{} synopsis} \indexheader{cstdlib}% @@ -3533,7 +3519,7 @@ index 95d674aa..ff85b31b 100644 \indexlibraryglobal{_Exit}% \indexlibraryglobal{abort}% \indexlibraryglobal{abs}% -@@ -122,7 +110,6 @@ and as noted in +@@ -123,7 +111,6 @@ and as noted in \indexlibraryglobal{div_t}% \indexlibraryglobal{exit}% \indexlibraryglobal{free}% @@ -3541,7 +3527,7 @@ index 95d674aa..ff85b31b 100644 \indexlibraryglobal{labs}% \indexlibraryglobal{ldiv}% \indexlibraryglobal{ldiv_t}% -@@ -157,11 +144,11 @@ namespace std { +@@ -158,11 +145,11 @@ namespace std { using lldiv_t = @\seebelow@; // freestanding } @@ -3558,7 +3544,7 @@ index 95d674aa..ff85b31b 100644 namespace std { // Exposition-only function type aliases -@@ -180,7 +167,7 @@ namespace std { +@@ -181,7 +168,7 @@ namespace std { [[noreturn]] void _Exit(int status) noexcept; // freestanding [[noreturn]] void quick_exit(int status) noexcept; // freestanding @@ -3567,7 +3553,7 @@ index 95d674aa..ff85b31b 100644 int system(const char* string); // \ref{c.malloc}, C library memory allocation -@@ -253,7 +240,7 @@ and except as noted in +@@ -265,7 +252,7 @@ and except as noted in \ref{c.math.abs}. \begin{note} Several functions have additional overloads in this document, @@ -3575,8 +3561,8 @@ index 95d674aa..ff85b31b 100644 +but they have the same behavior as in the \link{C standard library}{library.c}. \end{note} - \xrefc{7.22} -@@ -307,8 +294,8 @@ is required to work as specified even if unary + \xrefc{7.24} +@@ -319,8 +306,8 @@ is required to work as specified even if unary is overloaded for any of the types involved. \end{footnote} The expression \tcode{offsetof(\placeholder{type}, \placeholder{member-designator})} @@ -3587,7 +3573,7 @@ index 95d674aa..ff85b31b 100644 dependent. The result of applying the \tcode{offsetof} macro to a static data member or a function member is undefined. No operation invoked by the \tcode{offsetof} macro shall throw an exception and -@@ -1068,7 +1055,7 @@ the specialization on the unqualified type \tcode{T}. +@@ -1099,7 +1086,7 @@ the specialization on the unqualified type \tcode{T}. \pnum Non-arithmetic standard types, such as @@ -3596,7 +3582,7 @@ index 95d674aa..ff85b31b 100644 \rSec3[numeric.limits.members]{\tcode{numeric_limits} members} -@@ -2132,7 +2119,7 @@ The program is terminated without executing destructors for objects with automat +@@ -2141,7 +2128,7 @@ The program is terminated without executing destructors for objects with automat thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{_Exit}}% @@ -3605,7 +3591,7 @@ index 95d674aa..ff85b31b 100644 \end{itemdescr} \indexlibraryglobal{abort}% -@@ -2152,7 +2139,7 @@ automatic, thread, or static storage +@@ -2161,7 +2148,7 @@ automatic, thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{abort}}% @@ -3614,7 +3600,7 @@ index 95d674aa..ff85b31b 100644 \end{itemdescr} \indexlibraryglobal{atexit}% -@@ -2169,7 +2156,8 @@ The +@@ -2178,7 +2165,8 @@ The functions register the function pointed to by \tcode{f} to be called without arguments at normal program termination. It is unspecified whether a call to \tcode{atexit()} that does not @@ -3624,7 +3610,7 @@ index 95d674aa..ff85b31b 100644 \begin{note} The \tcode{atexit()} functions do not introduce a data race\iref{res.on.data.races}. -@@ -2263,7 +2251,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; +@@ -2272,7 +2260,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; The \tcode{at_quick_exit()} functions register the function pointed to by \tcode{f} to be called without arguments when \tcode{quick_exit} is called. It is unspecified whether a call to \tcode{at_quick_exit()} that does not @@ -3634,7 +3620,7 @@ index 95d674aa..ff85b31b 100644 \begin{note} The \tcode{at_quick_exit()} functions do not introduce a -@@ -2315,7 +2304,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s +@@ -2324,7 +2313,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s \pnum \remarks \indextext{signal-safe!\idxcode{quick_exit}}% @@ -3643,7 +3629,7 @@ index 95d674aa..ff85b31b 100644 when the functions registered with \tcode{at_quick_exit} are. \end{itemdescr} -@@ -2442,7 +2431,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); +@@ -2451,7 +2440,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3652,7 +3638,7 @@ index 95d674aa..ff85b31b 100644 called by a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -2478,7 +2467,7 @@ a null pointer value, throws +@@ -2487,7 +2476,7 @@ a null pointer value, throws \tcode{bad_alloc}. \item Otherwise, the function calls the current @@ -3661,7 +3647,7 @@ index 95d674aa..ff85b31b 100644 If the called function returns, the loop repeats. \item The loop terminates when an attempt to allocate the requested storage is -@@ -2700,7 +2689,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); +@@ -2709,7 +2698,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3670,7 +3656,7 @@ index 95d674aa..ff85b31b 100644 called by the array form of a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -3013,8 +3002,8 @@ versions of \tcode{operator delete}, the C standard library function +@@ -3022,8 +3011,8 @@ versions of \tcode{operator delete}, the C standard library function introduce a data race\iref{res.on.data.races}. Calls to these functions that allocate or deallocate a particular unit of storage shall occur in a single total order, and each such deallocation call @@ -3681,7 +3667,7 @@ index 95d674aa..ff85b31b 100644 \rSec2[alloc.errors]{Storage allocation errors} -@@ -3168,8 +3157,8 @@ template constexpr T* launder(T* p) noexcept; +@@ -3177,8 +3166,8 @@ template constexpr T* launder(T* p) noexcept; \pnum \expects \tcode{p} represents the address \placeholder{A} of a byte in memory. @@ -3692,7 +3678,7 @@ index 95d674aa..ff85b31b 100644 is located at the address \placeholder{A}. All bytes of storage that would be reachable through\iref{basic.compound} the result -@@ -3382,7 +3371,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. +@@ -3391,7 +3380,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. \pnum \remarks @@ -3702,7 +3688,7 @@ index 95d674aa..ff85b31b 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. \end{itemdescr} -@@ -3956,7 +3946,8 @@ the ordinary literal encoding\iref{lex.ccon}. +@@ -3967,7 +3957,8 @@ the ordinary literal encoding\iref{lex.ccon}. \pnum \remarks @@ -3712,7 +3698,7 @@ index 95d674aa..ff85b31b 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. The return value remains valid until the exception object from which -@@ -4107,7 +4098,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread. +@@ -4118,7 +4109,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread. \remarks When \tcode{uncaught_exceptions() > 0}, throwing an exception can result in a call of the function @@ -3721,7 +3707,7 @@ index 95d674aa..ff85b31b 100644 \end{itemdescr} \rSec2[propagation]{Exception propagation} -@@ -4169,8 +4160,9 @@ constexpr exception_ptr current_exception() noexcept; +@@ -4181,8 +4172,9 @@ constexpr exception_ptr current_exception() noexcept; \begin{itemdescr} \pnum \returns @@ -3733,7 +3719,7 @@ index 95d674aa..ff85b31b 100644 handled exception, or a null \tcode{exception_ptr} object if no exception is being handled. The referenced object shall remain valid at least as long as there is an \tcode{exception_ptr} object that refers to it. -@@ -4755,7 +4747,7 @@ template constexpr const E* end(initializer_list il) noexcept; +@@ -4793,7 +4785,7 @@ template constexpr const E* end(initializer_list il) noexcept; \pnum The header \libheaderdef{compare} specifies types, objects, and functions for use primarily in connection with @@ -3742,7 +3728,7 @@ index 95d674aa..ff85b31b 100644 \indexlibraryglobal{is_eq}% \indexlibraryglobal{is_neq}% -@@ -6296,7 +6288,7 @@ environment. +@@ -6381,7 +6373,7 @@ environment. \end{note} \pnum @@ -3752,10 +3738,10 @@ index 95d674aa..ff85b31b 100644 calls to the \tcode{setlocale} function or with calls to functions that are affected by the current C locale. The implementation shall behave as if no diff --git a/source/templates.tex b/source/templates.tex -index bf283e46..00d8fae6 100644 +index 9ef3133a..3894c832 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -681,7 +681,7 @@ struct A {}; +@@ -687,7 +687,7 @@ struct A {}; \rSec1[temp.names]{Names of template specializations} \pnum @@ -3764,7 +3750,7 @@ index bf283e46..00d8fae6 100644 \grammarterm{template-id}: \begin{bnf} -@@ -973,8 +973,8 @@ specified in a +@@ -1015,8 +1015,8 @@ in a \grammarterm{splice-specialization-specifier} shall match the type and form specified for the corresponding parameter declared by the template in its \grammarterm{template-parameter-list}. @@ -3775,16 +3761,16 @@ index bf283e46..00d8fae6 100644 \grammarterm{template-argument}{s}. \begin{example} \begin{codeblock} -@@ -1137,7 +1137,7 @@ the program is ill-formed. - \pnum - When a \grammarterm{simple-template-id} does not name a function, +@@ -1181,7 +1181,7 @@ When a \grammarterm{simple-template-id} or + \grammarterm{splice-specialization-specifier} + does not designate a function, a default \grammarterm{template-argument} is -implicitly instantiated\iref{temp.inst} +\link{implicitly instantiated}{temp.inst} when the value of that default argument is needed. \begin{example} \begin{codeblock} -@@ -1149,7 +1149,7 @@ The default argument for \tcode{U} is instantiated to form the type \tcode{S 1} is not satisfied; the second operand is not checked for satisfaction. \end{example} -@@ -1703,9 +1703,9 @@ in the declaration of a constrained entity (and, therefore, can involve the +@@ -1747,9 +1747,9 @@ in the declaration of a constrained entity (and, therefore, can involve the unsubstituted template parameters of the constrained entity), called the \defn{parameter mapping}\iref{temp.constr.decl}. \begin{note} @@ -3844,7 +3830,7 @@ index bf283e46..00d8fae6 100644 \end{note} \pnum -@@ -1782,7 +1782,7 @@ first substituted into its expression. +@@ -1826,7 +1826,7 @@ first substituted into its expression. If substitution results in an invalid type or expression in the immediate context of the atomic constraint\iref{temp.deduct.general}, the constraint is not satisfied. @@ -3853,7 +3839,7 @@ index bf283e46..00d8fae6 100644 is performed if necessary, and \tcode{E} shall be a constant expression of type \tcode{bool}. The constraint is satisfied if and only if evaluation of \tcode{E} -@@ -1945,11 +1945,11 @@ A declaration's \defn{associated constraints} are defined as follows: +@@ -1988,11 +1988,11 @@ A declaration's \defn{associated constraints} are defined as follows: the declaration has no associated constraints. \item Otherwise, if there is a single introduced \grammarterm{constraint-expression}, @@ -3868,7 +3854,7 @@ index bf283e46..00d8fae6 100644 following order: \begin{itemize} \item -@@ -2046,7 +2046,7 @@ so it does match \#2. +@@ -2089,7 +2089,7 @@ so it does match \#2. \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is @@ -3877,7 +3863,7 @@ index bf283e46..00d8fae6 100644 % \begin{itemize} \item -@@ -2055,7 +2055,7 @@ the normal form of \tcode{E}. +@@ -2098,7 +2098,7 @@ the normal form of \tcode{E}. \item The normal form of an expression \tcode{E1 || E2} is @@ -3886,7 +3872,7 @@ index bf283e46..00d8fae6 100644 the normal forms of \tcode{E1} and \tcode{E2}. \item -@@ -2303,7 +2303,7 @@ the constraint of $A$ subsumes that of $B$. +@@ -2346,7 +2346,7 @@ the constraint of $A$ subsumes that of $B$. \end{itemize} % \begin{example} @@ -3895,7 +3881,7 @@ index bf283e46..00d8fae6 100644 % The constraint $A \land B$ subsumes $A$, but $A$ does not subsume $A \land B$. % -@@ -2519,7 +2519,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. +@@ -2566,7 +2566,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. \end{example} \pnum @@ -3904,7 +3890,7 @@ index bf283e46..00d8fae6 100644 \tcode{decltype($e$)} denotes a unique dependent type. Two such \grammarterm{decltype-specifier}{s} refer to the same type only if their \grammarterm{expression}{s} are -@@ -2589,8 +2589,8 @@ default arguments, +@@ -2636,8 +2636,8 @@ default arguments, \grammarterm{requires-clause}{s}, or \grammarterm{noexcept-specifier}{s}. @@ -3912,10 +3898,10 @@ index bf283e46..00d8fae6 100644 -statement\iref{stmt.if} are considered definitions. +For the purpose of instantiation, the substatements of a +\deflink{constexpr if}{stmt.if} statement are considered definitions. - - \pnum - Because an \grammarterm{alias-declaration} cannot declare a -@@ -2944,7 +2944,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} + For the purpose of name lookup and instantiation, + the \grammarterm{compound-statement} of an \grammarterm{expansion-statement} + is considered a template definition. +@@ -2994,7 +2994,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} \pnum A local class of non-closure type shall not have member templates. @@ -3924,7 +3910,7 @@ index bf283e46..00d8fae6 100644 apply to member template names. A destructor shall not be a member template. -@@ -3164,7 +3164,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. +@@ -3219,7 +3219,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. \item In a \grammarterm{capture-list}\iref{expr.prim.lambda.capture}; the pattern is the \grammarterm{capture} without the ellipsis. @@ -3933,7 +3919,7 @@ index bf283e46..00d8fae6 100644 \grammarterm{identifier}. \item In a \grammarterm{pack-index-expression}; -@@ -3787,9 +3787,9 @@ primary template. +@@ -3842,9 +3842,9 @@ primary template. \pnum A partial specialization matches a given actual template argument list if the template arguments of the partial specialization can be @@ -3946,7 +3932,7 @@ index bf283e46..00d8fae6 100644 \begin{example} \begin{codeblock} template class A { }; // \#1 -@@ -3851,14 +3851,14 @@ of the primary template. +@@ -3906,14 +3906,14 @@ of the primary template. For two partial specializations, the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more @@ -3964,7 +3950,7 @@ index bf283e46..00d8fae6 100644 as the corresponding partial specialization. \item Each function template -@@ -4064,8 +4064,8 @@ void h(int* p) { +@@ -4119,8 +4119,8 @@ void h(int* p) { \end{example} \pnum @@ -3975,7 +3961,7 @@ index bf283e46..00d8fae6 100644 \pnum The signature of a function template -@@ -4116,7 +4116,7 @@ For example, a template type parameter can be used in the +@@ -4171,7 +4171,7 @@ For example, a template type parameter can be used in the Two expressions involving template parameters are considered \defnx{equivalent}{equivalent!expressions} if two function definitions containing the expressions would satisfy @@ -3984,7 +3970,7 @@ index bf283e46..00d8fae6 100644 to name the template parameters may differ as long as a token used to name a template parameter in one expression is replaced by another token that names the same template parameter in the other expression. -@@ -4286,8 +4286,8 @@ function template +@@ -4341,8 +4341,8 @@ function template specialization is selected to match a placement operator new\iref{basic.stc.dynamic.deallocation,expr.new}; \item @@ -3995,7 +3981,7 @@ index bf283e46..00d8fae6 100644 a function template specialization. \end{itemize} -@@ -4669,7 +4669,7 @@ A \grammarterm{concept-definition} +@@ -4735,7 +4735,7 @@ A \grammarterm{concept-definition} shall inhabit a namespace scope\iref{basic.scope.namespace}. \pnum @@ -4004,7 +3990,7 @@ index bf283e46..00d8fae6 100644 \pnum A concept is not instantiated\iref{temp.spec}. -@@ -4980,7 +4980,7 @@ was a pack expansion and the corresponding pack is empty, or +@@ -5062,7 +5062,7 @@ was a pack expansion and the corresponding pack is empty, or \item an instantiation uses a default argument or default template argument that had not been defined at the point at which the template was defined, or @@ -4013,7 +3999,7 @@ index bf283e46..00d8fae6 100644 instantiation uses \begin{itemize} \item the value of a const object of integral or unscoped enumeration type or -@@ -5233,7 +5233,7 @@ any of the expressions +@@ -5315,7 +5315,7 @@ any of the expressions or \grammarterm{braced-init-list}{s} in the \grammarterm{expression-list} @@ -4022,7 +4008,7 @@ index bf283e46..00d8fae6 100644 \item the \grammarterm{unqualified-id} is a \grammarterm{template-id} in which any of the template arguments depends -@@ -5293,7 +5293,7 @@ if it is +@@ -5375,7 +5375,7 @@ if it is \item in the definition of a class template, a nested class of a class template, a member of a class template, or a member of a nested class of a class template, @@ -4031,16 +4017,16 @@ index bf283e46..00d8fae6 100644 \item in the definition of a primary class template or a member of a primary class template, the name of the -@@ -5572,7 +5572,7 @@ used without a \grammarterm{template-argument-list}. +@@ -5654,7 +5654,7 @@ used without a \grammarterm{template-argument-list}. \end{footnote} - \item a \grammarterm{pack-index-specifier}, or + \item a \grammarterm{pack-index-specifier}, \item denoted by \tcode{decltype(}\grammarterm{expression}{}\tcode{)}, --where \grammarterm{expression} is type-dependent\iref{temp.dep.expr}. -+where \grammarterm{expression} is \link{type-dependent}{temp.dep.expr}. - \end{itemize} - - \pnum -@@ -5711,7 +5711,7 @@ see~\ref{support.types}. +-where \grammarterm{expression} is type-dependent\iref{temp.dep.expr}, or ++where \grammarterm{expression} is \link{type-dependent}{temp.dep.expr}, or + \item denoted by a \grammarterm{splice-type-specifier} in which either + the \grammarterm{splice-specifier} or + \grammarterm{splice-specialization-specifier} +@@ -5806,7 +5806,7 @@ see~\ref{support.types}. \end{note} \pnum @@ -4049,7 +4035,7 @@ index bf283e46..00d8fae6 100644 type-dependent if the terminal name of its \grammarterm{id-expression}, if any, is dependent or the expression refers to a member of the current instantiation and -@@ -5846,7 +5846,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the +@@ -5950,7 +5950,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the instantiation is value-dependent. An expression of the form \tcode{\&}\grammarterm{cast-expression} is also value-dependent if evaluating \grammarterm{cast-expression} @@ -4058,7 +4044,7 @@ index bf283e46..00d8fae6 100644 the result of the evaluation refers to a templated entity that is an object with static or thread storage duration or a member function. -@@ -5970,7 +5970,7 @@ within a translation unit. +@@ -6173,7 +6173,7 @@ within a translation unit. A specialization for any template may have points of instantiation in multiple translation units. If two different points of instantiation give a template specialization @@ -4066,8 +4052,8 @@ index bf283e46..00d8fae6 100644 +different meanings according to the \link{one-definition rule}{basic.def.odr}, the program is ill-formed, no diagnostic required. - \rSec3[temp.dep.candidate]{Candidate functions} -@@ -6275,7 +6275,7 @@ of type + \pnum +@@ -6486,7 +6486,7 @@ of type \pnum If a function declaration acquired its function type through @@ -4076,7 +4062,7 @@ index bf283e46..00d8fae6 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -6356,7 +6356,7 @@ X ch; // error: incomplete type \tcode{X} +@@ -6567,7 +6567,7 @@ X ch; // error: incomplete type \tcode{X} \end{example} \begin{note} Within a template declaration, @@ -4085,7 +4071,7 @@ index bf283e46..00d8fae6 100644 a local class are never considered to be entities that can be separately instantiated (this includes their default arguments, \grammarterm{noexcept-specifier}{s}, and non-static data member -@@ -6534,7 +6534,7 @@ void x() { +@@ -6745,7 +6745,7 @@ void x() { \end{example} \pnum @@ -4094,7 +4080,7 @@ index bf283e46..00d8fae6 100644 can be determined without instantiating a class template definition, it is unspecified whether that instantiation actually takes place. \begin{example} -@@ -6871,7 +6871,7 @@ If an entity is the subject of both an explicit instantiation declaration +@@ -7082,7 +7082,7 @@ If an entity is the subject of both an explicit instantiation declaration and an explicit instantiation definition in the same translation unit, the definition shall follow the declaration. An entity that is the subject of an explicit instantiation declaration and that is also used @@ -4103,7 +4089,7 @@ index bf283e46..00d8fae6 100644 in the translation unit shall be the subject of an explicit instantiation definition somewhere in the program; otherwise the program is ill-formed, no diagnostic required. -@@ -7935,7 +7935,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. +@@ -8147,7 +8147,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. In the following example, assuming a \tcode{signed char} cannot represent the value 1000, @@ -4112,7 +4098,7 @@ index bf283e46..00d8fae6 100644 would be required to convert the \grammarterm{template-argument} of type \tcode{int} to \tcode{signed char}, -@@ -8044,8 +8044,8 @@ is not a reference type: +@@ -8256,8 +8256,8 @@ is not a reference type: \item If \tcode{A} @@ -4123,7 +4109,7 @@ index bf283e46..00d8fae6 100644 \tcode{A} for type deduction; otherwise, -@@ -8053,7 +8053,7 @@ otherwise, +@@ -8265,7 +8265,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -4132,7 +4118,7 @@ index bf283e46..00d8fae6 100644 of \tcode{A} for type -@@ -8149,8 +8149,8 @@ The transformed \tcode{A} +@@ -8361,8 +8361,8 @@ The transformed \tcode{A} can be another pointer or pointer-to-member type that can be converted to the deduced \tcode{A} @@ -4143,7 +4129,7 @@ index bf283e46..00d8fae6 100644 \item If -@@ -8281,7 +8281,7 @@ void test() { +@@ -8495,7 +8495,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -4152,7 +4138,7 @@ index bf283e46..00d8fae6 100644 If there is a target, the function template's function type and the target type are used as the types of -@@ -8328,7 +8328,7 @@ is not a reference type: +@@ -8542,7 +8542,7 @@ is not a reference type: If \tcode{P} is an array type, the pointer type produced by the @@ -4161,7 +4147,7 @@ index bf283e46..00d8fae6 100644 \tcode{P} for type deduction; otherwise, -@@ -8336,7 +8336,7 @@ deduction; otherwise, +@@ -8550,7 +8550,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -4170,7 +4156,7 @@ index bf283e46..00d8fae6 100644 \tcode{P} for type deduction; otherwise, -@@ -8427,7 +8427,7 @@ after a function has been selected. +@@ -8641,7 +8641,7 @@ after a function has been selected. In the context of a call to a conversion function, the return types of the conversion function templates are used. \item @@ -4179,7 +4165,7 @@ index bf283e46..00d8fae6 100644 type is used. \end{itemize} -@@ -8939,7 +8939,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the +@@ -9157,7 +9157,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the template argument list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by $\texttt{P}_i$. @@ -4188,7 +4174,7 @@ index bf283e46..00d8fae6 100644 originally a pack expansion: \begin{itemize} \item if \tcode{P} does not contain a template argument corresponding to -@@ -9002,7 +9002,7 @@ each remaining parameter type in the parameter-type-list +@@ -9220,7 +9220,7 @@ each remaining parameter type in the parameter-type-list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by the function parameter pack. @@ -4197,7 +4183,7 @@ index bf283e46..00d8fae6 100644 originally a function parameter pack: \begin{itemize} \item if \tcode{P} does not contain a function parameter type corresponding to -@@ -9296,8 +9296,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod +@@ -9514,8 +9514,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod In a declaration whose \grammarterm{declarator-id} refers to a specialization of a function template, template argument deduction is performed to identify the specialization to which the declaration refers. Specifically, this is done @@ -4209,7 +4195,7 @@ index bf283e46..00d8fae6 100644 \tcode{operator new}\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index 1b3e2577..8a388c9f 100644 +index 7ea4191b..4b2c5273 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4232,7 +4218,7 @@ index 1b3e2577..8a388c9f 100644 \begin{itemdecl} m.try_lock_for(rel_time) -@@ -6577,7 +6577,7 @@ namespace std { +@@ -7316,7 +7316,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -4241,7 +4227,7 @@ index 1b3e2577..8a388c9f 100644 An execution agent \term{owns} a mutex from the time it successfully calls one of the lock functions until it calls unlock. Mutexes can be either recursive or non-recursive, and can grant simultaneous ownership to one or many execution agents. Both -@@ -6621,7 +6621,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on +@@ -7360,7 +7360,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on a single mutex appears to occur in a single total order. \begin{note} This @@ -4250,7 +4236,7 @@ index 1b3e2577..8a388c9f 100644 mutex. \end{note} \begin{note} -@@ -6701,7 +6701,7 @@ in the absence of contending mutex acquisitions. +@@ -7440,7 +7440,7 @@ in the absence of contending mutex acquisitions. \pnum \sync If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations @@ -4259,7 +4245,7 @@ index 1b3e2577..8a388c9f 100644 \begin{note} Since \tcode{lock()} does not synchronize with a failed subsequent \tcode{try_lock()}, the visibility rules are weak enough that little would be -@@ -6737,7 +6737,7 @@ Releases the calling thread's ownership of the mutex. +@@ -7476,7 +7476,7 @@ Releases the calling thread's ownership of the mutex. \pnum \sync @@ -4268,7 +4254,7 @@ index 1b3e2577..8a388c9f 100644 lock operations that obtain ownership on the same object. \pnum -@@ -6866,9 +6866,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, +@@ -7605,9 +7605,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, meet the requirements set out below. In this description, \tcode{m} denotes an object of a mutex type, \tcode{rel_time} denotes an object of an @@ -4280,7 +4266,7 @@ index 1b3e2577..8a388c9f 100644 \begin{note} The timed mutex types meet the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. -@@ -7158,7 +7158,7 @@ Releases a shared lock on the mutex held by the calling thread. +@@ -7897,7 +7897,7 @@ Releases a shared lock on the mutex held by the calling thread. \pnum \sync @@ -4289,7 +4275,7 @@ index 1b3e2577..8a388c9f 100644 \tcode{lock()} operations that obtain ownership on the same object. \pnum -@@ -7262,7 +7262,7 @@ meet the requirements set out below. In this description, +@@ -8001,7 +8001,7 @@ meet the requirements set out below. In this description, \tcode{rel_time} denotes an object of an instantiation of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes an object of an instantiation of @@ -4298,7 +4284,7 @@ index 1b3e2577..8a388c9f 100644 \begin{note} The shared timed mutex types meet the \oldconcept{SharedTimedLockable} requirements\iref{thread.req.lockable.shared.timed}. -@@ -7473,7 +7473,7 @@ namespace std { +@@ -8212,7 +8212,7 @@ namespace std { \pnum An object of type \tcode{lock_guard} controls the ownership of a lockable object within a scope. A \tcode{lock_guard} object maintains ownership of a lockable @@ -4307,7 +4293,7 @@ index 1b3e2577..8a388c9f 100644 The behavior of a program is undefined if the lockable object referenced by \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} -@@ -7546,7 +7546,7 @@ namespace std { +@@ -8285,7 +8285,7 @@ namespace std { \pnum An object of type \tcode{scoped_lock} controls the ownership of lockable objects within a scope. A \tcode{scoped_lock} object maintains ownership of lockable @@ -4316,7 +4302,7 @@ index 1b3e2577..8a388c9f 100644 The behavior of a program is undefined if the lockable objects referenced by \tcode{pm} do not exist for the entire lifetime of the \tcode{scoped_lock} object. -@@ -8703,7 +8703,7 @@ earlier returning execution. +@@ -9442,7 +9442,7 @@ earlier returning execution. \pnum \sync For any given \tcode{once_flag}: all active executions occur in a total @@ -4325,7 +4311,7 @@ index 1b3e2577..8a388c9f 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -10669,22 +10669,21 @@ the state object. +@@ -11408,22 +11408,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4352,7 +4338,7 @@ index 1b3e2577..8a388c9f 100644 \begin{note} This explicitly specifies that the result of the shared state is visible in the objects that reference this state in the sense of data race -@@ -11020,8 +11019,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -11742,8 +11741,8 @@ The class template \tcode{future} defines a type for asynchronous return objects do not share their shared state with other asynchronous return objects. A default-constructed \tcode{future} object has no shared state. A \tcode{future} object with shared state can be created by @@ -4363,7 +4349,7 @@ index 1b3e2577..8a388c9f 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -11331,7 +11330,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -12053,7 +12052,7 @@ object has no shared state. A \tcode{shared_future} object with shared state can be created by conversion from a \tcode{future} object and shares its shared state with the @@ -4372,7 +4358,7 @@ index 1b3e2577..8a388c9f 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -11780,7 +11779,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -12502,7 +12501,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -4382,7 +4368,7 @@ index 1b3e2577..8a388c9f 100644 the first function that successfully detects the ready status of the shared state or diff --git a/source/time.tex b/source/time.tex -index f547e5ef..6c988685 100644 +index 2e3e9b55..2939c865 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1222,7 +1222,7 @@ unless it meets all of the following conditions: @@ -4431,7 +4417,7 @@ index f547e5ef..6c988685 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index d3385267..d72eebe4 100644 +index 0a26e026..faf5d946 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -104,15 +104,15 @@ namespace std { @@ -4480,7 +4466,7 @@ index d3385267..d72eebe4 100644 for piecewise construction of the elements of the \tcode{pair} object. \rSec1[tuple]{Tuples} -@@ -2144,7 +2144,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. +@@ -2145,7 +2145,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. \pnum \effects Equivalent to the preceding constructors except that each element is constructed with @@ -4489,7 +4475,7 @@ index d3385267..d72eebe4 100644 \end{itemdescr} \rSec3[tuple.assign]{Assignment} -@@ -2810,7 +2810,7 @@ template struct tuple_size; +@@ -2803,7 +2803,7 @@ template struct tuple_size; \pnum Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. If the expression \tcode{TS::value} is well-formed @@ -4498,7 +4484,7 @@ index d3385267..d72eebe4 100644 each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts} with a base characteristic of \begin{codeblock} -@@ -6354,6 +6354,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); +@@ -6909,6 +6909,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); \rSec2[variant.monostate]{Class \tcode{monostate}}% \indexlibraryglobal{monostate}% @@ -4506,7 +4492,7 @@ index d3385267..d72eebe4 100644 \begin{itemdecl} struct monostate{}; \end{itemdecl} -@@ -6522,7 +6523,8 @@ namespace std { +@@ -7077,7 +7078,8 @@ namespace std { \end{codeblock} \pnum @@ -4520,11 +4506,11 @@ index d3385267..d72eebe4 100644 2.43.0 -From 6a179860206436f600f5af84ec4b9005e34e09eb Mon Sep 17 00:00:00 2001 +From 9c0922367d2937f1cbfade5e26da9203f9f1f307 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 -Subject: [PATCH 3/9] Fix dubious \defnx that has see{} in it, and remove range - index entry with the same key. +Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove + range index entry with the same key. --- source/iostreams.tex | 2 +- @@ -4532,10 +4518,10 @@ Subject: [PATCH 3/9] Fix dubious \defnx that has see{} in it, and remove range 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index f89a4754..ee7b1fc6 100644 +index a7c59c26..0804ddd3 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -13911,7 +13911,7 @@ without an intervening \grammarterm{root-directory} element. +@@ -13919,7 +13919,7 @@ without an intervening \grammarterm{root-directory} element. \pnum \indextext{path!normalization|(}% @@ -4545,10 +4531,10 @@ index f89a4754..ee7b1fc6 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index 00d8fae6..cb2c8a8e 100644 +index 3894c832..c17177bc 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -2042,7 +2042,6 @@ so it does match \#2. +@@ -2085,7 +2085,6 @@ so it does match \#2. \end{example} \rSec2[temp.constr.normal]{Constraint normalization} @@ -4556,7 +4542,7 @@ index 00d8fae6..cb2c8a8e 100644 \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is -@@ -2161,10 +2160,11 @@ whose parameter mapping is the identity mapping. +@@ -2204,10 +2203,11 @@ whose parameter mapping is the identity mapping. \end{itemize} \pnum @@ -4573,11 +4559,11 @@ index 00d8fae6..cb2c8a8e 100644 2.43.0 -From 7fdc0e78d979cade12db47da3ae52290fbc3f8a2 Mon Sep 17 00:00:00 2001 +From 0ab03aaecca8d74ec38dd35d15a19e9651f5191e Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 -Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and - literal fragments. +Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code + and literal fragments. --- source/exceptions.tex | 4 +- @@ -4586,7 +4572,7 @@ Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and 3 files changed, 349 insertions(+), 349 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex -index 12cfcb8d..190e0ac6 100644 +index cd476d28..df489ab5 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -135,11 +135,11 @@ does not declare a variable. @@ -4604,10 +4590,10 @@ index 12cfcb8d..190e0ac6 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index aa909af0..fbd79538 100644 +index dad2c6a2..542d3f30 100644 --- a/source/lex.tex +++ b/source/lex.tex -@@ -293,43 +293,43 @@ the numerical value has no other meaning in this context. +@@ -330,43 +330,43 @@ the numerical value has no other meaning in this context. \ucode{000c} & \uname{form feed} & \\ \ucode{0020} & \uname{space} & \\ \ucode{000a} & \uname{line feed} & new-line \\ @@ -4688,7 +4674,7 @@ index aa909af0..fbd79538 100644 \end{floattable} \pnum -@@ -569,7 +569,7 @@ given character: +@@ -603,7 +603,7 @@ given character: \item \indextext{literal!string!raw}% If the next character begins a sequence of characters that could be the prefix @@ -4697,7 +4683,7 @@ index aa909af0..fbd79538 100644 token shall be a raw string literal. Between the initial and final double quote characters of the raw string, any transformations performed in phase 2 (line splicing) are reverted; this reversion -@@ -577,7 +577,7 @@ shall apply before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting +@@ -611,7 +611,7 @@ shall apply before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting parenthesis is identified. The raw string literal is defined as the shortest sequence of characters that matches the raw-string pattern \begin{ncbnf} @@ -4706,7 +4692,7 @@ index aa909af0..fbd79538 100644 \end{ncbnf} \item Otherwise, if the next three characters are \tcode{<::} and the subsequent character -@@ -695,15 +695,15 @@ depending on the implementation. +@@ -746,15 +746,15 @@ depending on the implementation. \begin{bnf} \nontermdef{pp-number}\br digit\br @@ -4730,7 +4716,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \pnum -@@ -1130,19 +1130,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1181,19 +1181,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. \nontermdef{binary-literal}\br \terminal{0b} binary-digit\br \terminal{0B} binary-digit\br @@ -4753,7 +4739,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \begin{bnf} -@@ -1173,14 +1173,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1224,14 +1224,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{hexadecimal-digit-sequence}\br hexadecimal-digit\br @@ -4772,7 +4758,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \begin{bnf} -@@ -1195,17 +1195,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1246,17 +1246,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{unsigned-suffix} \textnormal{one of}\br @@ -4793,7 +4779,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \begin{bnf} -@@ -1244,7 +1244,7 @@ when determining the value. +@@ -1295,7 +1295,7 @@ when determining the value. \pnum The \grammarterm{hexadecimal-digit}s @@ -4802,7 +4788,7 @@ index aa909af0..fbd79538 100644 have decimal values ten through fifteen. \begin{example} The number twelve can be written \tcode{12}, \tcode{014}, -@@ -1288,7 +1288,7 @@ none & +@@ -1339,7 +1339,7 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4811,7 +4797,7 @@ index aa909af0..fbd79538 100644 \tcode{unsigned int} & \tcode{unsigned int}\\ & -@@ -1297,7 +1297,7 @@ none & +@@ -1348,7 +1348,7 @@ none & & \tcode{unsigned long long int} & \tcode{unsigned long long int}\\\hline @@ -4820,7 +4806,7 @@ index aa909af0..fbd79538 100644 \tcode{long int} & \tcode{long int}\\ & -@@ -1309,22 +1309,22 @@ none & +@@ -1360,22 +1360,22 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4848,7 +4834,7 @@ index aa909af0..fbd79538 100644 & \\\hline \tcode{z} or \tcode{Z} & -@@ -1372,12 +1372,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1423,12 +1423,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \indextext{literal!character}% \begin{bnf} \nontermdef{character-literal}\br @@ -4863,7 +4849,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \begin{bnf} -@@ -1428,16 +1428,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1479,16 +1479,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{octal-escape-sequence}\br @@ -4886,7 +4872,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \begin{bnf} -@@ -1625,42 +1625,42 @@ is supported for compatibility with \CppXIV{} and C. +@@ -1676,42 +1676,42 @@ is supported for compatibility with \CppXIV{} and C. \begin{bnf} \nontermdef{fractional-constant}\br @@ -4940,7 +4926,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \pnum -@@ -1745,8 +1745,8 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1796,8 +1796,8 @@ chosen in an \impldef{choice of larger or smaller value of \indextext{literal!string}% \begin{bnf} \nontermdef{string-literal}\br @@ -4951,7 +4937,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \begin{bnf} -@@ -1769,7 +1769,7 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1820,7 +1820,7 @@ chosen in an \impldef{choice of larger or smaller value of \begin{bnf} \nontermdef{raw-string}\br @@ -4960,7 +4946,7 @@ index aa909af0..fbd79538 100644 \end{bnf} \begin{bnf} -@@ -1856,7 +1856,7 @@ UTF-32 & +@@ -1907,7 +1907,7 @@ UTF-32 & \pnum \indextext{literal!string!raw}% @@ -4970,7 +4956,7 @@ index aa909af0..fbd79538 100644 in the prefix is a \defn{raw string literal}. The \grammarterm{d-char-sequence} serves as a delimiter. The terminating diff --git a/source/time.tex b/source/time.tex -index 6c988685..bdbef27b 100644 +index 2939c865..c37f5bba 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2200,7 +2200,7 @@ If the parse fails to decode a valid duration, @@ -5990,10 +5976,10 @@ index 6c988685..bdbef27b 100644 2.43.0 -From fd2502ad8ac71c2486a37945c222a60c4a2d6333 Mon Sep 17 00:00:00 2001 +From fdafb10b7fe732645af179694f0dde87f3b2b1f3 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 -Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. +Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. --- source/algorithms.tex | 4 ---- @@ -6003,12 +5989,11 @@ Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. source/concepts.tex | 16 ---------------- source/containers.tex | 15 --------------- source/declarations.tex | 14 -------------- - source/exceptions.tex | 5 ----- - source/expressions.tex | 26 -------------------------- + source/exceptions.tex | 3 --- + source/expressions.tex | 25 ------------------------- source/future.tex | 8 -------- source/iostreams.tex | 15 --------------- source/iterators.tex | 8 -------- - source/lex.tex | 1 - source/lib-intro.tex | 17 ----------------- source/limits.tex | 1 - source/memory.tex | 2 -- @@ -6017,19 +6002,19 @@ Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. source/overloading.tex | 11 ----------- source/preprocessor.tex | 10 ---------- source/ranges.tex | 13 ------------- - source/statements.tex | 3 --- + source/statements.tex | 1 - source/support.tex | 4 ---- source/templates.tex | 36 ------------------------------------ source/threads.tex | 17 ----------------- source/time.tex | 19 ------------------- source/utilities.tex | 7 ------- - 27 files changed, 278 deletions(-) + 26 files changed, 272 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 84d18c8b..71678537 100644 +index 9f29a804..1e39d96e 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -6833,7 +6833,6 @@ but stronger than those for a partial ordering. +@@ -8704,7 +8704,6 @@ but stronger than those for a partial ordering. If we define \tcode{equiv(a, b)} as \tcode{!comp(a, b) \&\& !comp(b, a)}, then the requirements are that \tcode{comp} and \tcode{equiv} both be transitive relations: @@ -6037,15 +6022,15 @@ index 84d18c8b..71678537 100644 \begin{itemize} \item \tcode{comp(a, b) \&\& comp(b, c)} implies \tcode{comp(a, c)} \item \tcode{equiv(a, b) \&\& equiv(b, c)} implies \tcode{equiv(a, c)} -@@ -7756,7 +7755,6 @@ Let $N = \tcode{last - first}$: - For the overload with an \tcode{ExecutionPolicy}, +@@ -9753,7 +9752,6 @@ Let $N = \tcode{last - first}$: + For the parallel algorithm overloads, \bigoh{N \log N} swaps and \bigoh{N} applications of the predicate. \end{itemize} - \end{itemdescr} \indexlibraryglobal{stable_partition}% -@@ -8598,7 +8596,6 @@ A random access range \range{a}{b} is a +@@ -10893,7 +10891,6 @@ A random access range \range{a}{b} is a {heap with respect to comp and proj@heap with respect to \tcode{comp} and \tcode{proj}} for a comparator and projection \tcode{comp} and \tcode{proj} if its elements are organized such that: @@ -6053,7 +6038,7 @@ index 84d18c8b..71678537 100644 \begin{itemize} \item With \tcode{$N$ = b - a}, for all $i$, $0 < i < N$, -@@ -11175,7 +11172,6 @@ template +@@ -13557,7 +13554,6 @@ template \pnum Some algorithms in this subclause are constrained with the following exposition-only concepts: @@ -6062,18 +6047,18 @@ index 84d18c8b..71678537 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index ed278134..728170cc 100644 +index be952625..37b7b347 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -267,7 +267,6 @@ enum { up, down }; // defines \tcode{up} and \tcode{down} +@@ -284,7 +284,6 @@ int X::y = 1; // defines \tcode{X::y} + enum { up, down }; // defines \tcode{up} and \tcode{down} namespace N { int d; } // defines \tcode{N} and \tcode{N::d} - namespace N1 = N; // defines \tcode{N1} X anX; // defines \tcode{anX} - \end{codeblock} whereas these are just declarations: \begin{codeblock} -@@ -776,7 +775,6 @@ is subject to the requirements described in this paragraph (recursively). +@@ -821,7 +820,6 @@ compute equivalent values\iref{expr.eq}. \pnum For the purposes of the preceding requirements: @@ -6081,7 +6066,7 @@ index ed278134..728170cc 100644 \begin{itemize} \item If \tcode{D} is a class with an implicitly-declared constructor\iref{class.default.ctor,class.copy.ctor}, -@@ -5814,7 +5812,6 @@ has the top-level cv-qualifier \keyword{volatile}. +@@ -6105,7 +6103,6 @@ has the top-level cv-qualifier \keyword{volatile}. \pnum Every integer type has an \term{integer conversion rank} defined as follows: @@ -6090,10 +6075,10 @@ index ed278134..728170cc 100644 \item No two signed integer types other than \keyword{char} and \tcode{\keyword{signed} \keyword{char}} (if \keyword{char} is signed) have the same rank, even if they have diff --git a/source/classes.tex b/source/classes.tex -index 170c2eb3..dc2b7d0f 100644 +index 5fa5e3b8..0b409248 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -1663,7 +1663,6 @@ for each non-static data member of +@@ -1716,7 +1716,6 @@ for each non-static data member of that is of class type (or array thereof), the constructor selected to copy/move that member is trivial; \end{itemize} @@ -6101,7 +6086,7 @@ index 170c2eb3..dc2b7d0f 100644 \indextext{constructor!move!non-trivial}% otherwise the copy/move constructor is \defnx{non-trivial}{constructor!copy!nontrivial}. -@@ -3285,7 +3284,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat +@@ -3337,7 +3336,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat destructor and \tcode{N} has a non-trivial constructor (for instance, if they declare or inherit virtual functions), the active member of \tcode{u} can be safely switched from \tcode{m} to \tcode{n} using the destructor and placement \grammarterm{new-expression} as follows: @@ -6109,7 +6094,7 @@ index 170c2eb3..dc2b7d0f 100644 \begin{codeblock} u.m.~M(); new (&u.n) N; -@@ -3463,7 +3461,6 @@ A local class cannot have static data members\iref{class.static.data}. +@@ -3515,7 +3513,6 @@ A local class cannot have static data members\iref{class.static.data}. \indextext{multiple inheritance}% A list of base classes can be specified in a class definition using the notation: @@ -6117,7 +6102,7 @@ index 170c2eb3..dc2b7d0f 100644 \begin{bnf} \nontermdef{base-clause}\br \terminal{:} base-specifier-list -@@ -5422,7 +5419,6 @@ initializers for direct and virtual base class subobjects and +@@ -5490,7 +5487,6 @@ initializers for direct and virtual base class subobjects and non-static data members can be specified by a \grammarterm{ctor-initializer}, which has the form @@ -6125,7 +6110,7 @@ index 170c2eb3..dc2b7d0f 100644 \begin{bnf} \nontermdef{ctor-initializer}\br \terminal{:} mem-initializer-list -@@ -5893,7 +5889,6 @@ public: +@@ -5961,7 +5957,6 @@ public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; \end{codeblock} @@ -6133,7 +6118,7 @@ index 170c2eb3..dc2b7d0f 100644 \end{example} \rSec2[class.inhctor.init]{Initialization by inherited constructor}% -@@ -6549,7 +6544,6 @@ any non-static data member of \tcode{C} is of reference type or +@@ -6617,7 +6612,6 @@ any non-static data member of \tcode{C} is of reference type or A binary operator expression \tcode{a @ b} is \defnx{usable}{usable!binary operator expression} if either @@ -6141,7 +6126,7 @@ index 170c2eb3..dc2b7d0f 100644 \begin{itemize} \item \tcode{a} or \tcode{b} is of class or enumeration type and -@@ -6670,7 +6664,6 @@ The \defnadj{synthesized}{three-way comparison} +@@ -6738,7 +6732,6 @@ The \defnadj{synthesized}{three-way comparison} of type \tcode{R}\iref{cmp.categories} of glvalues \tcode{a} and \tcode{b} of the same type is defined as follows: @@ -6149,7 +6134,7 @@ index 170c2eb3..dc2b7d0f 100644 \begin{itemize} \item If \tcode{a <=> b} is usable\iref{class.compare.default} and -@@ -6770,7 +6763,6 @@ The \defn{common comparison type} \tcode{U} +@@ -6838,7 +6831,6 @@ The \defn{common comparison type} \tcode{U} of a possibly-empty list of $n$ comparison category types $\tcode{T}_0$, $\tcode{T}_1$, $\dotsc$, $\tcode{T}_{n-1}$ is defined as follows: @@ -6158,10 +6143,10 @@ index 170c2eb3..dc2b7d0f 100644 \item If at least one $\tcode{T}_i$ is \tcode{std::partial_ordering}, diff --git a/source/compatibility.tex b/source/compatibility.tex -index 3a4119ed..543204a0 100644 +index 8c70dc05..b258ea47 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -2552,7 +2552,6 @@ Overspecification. +@@ -2619,7 +2619,6 @@ Overspecification. \effect The signatures of the following member functions changed from taking an \tcode{iterator} to taking a \tcode{const_iterator}: @@ -6169,7 +6154,7 @@ index 3a4119ed..543204a0 100644 \begin{itemize} \item \tcode{insert(iter, val)} for \tcode{vector}, \tcode{deque}, \tcode{list}, \tcode{set}, \tcode{multiset}, \tcode{map}, \tcode{multimap} -@@ -2624,7 +2623,6 @@ Clarify intentions, avoid workarounds. +@@ -2691,7 +2690,6 @@ Clarify intentions, avoid workarounds. Valid \CppIII{} code that relies on implicit boolean conversions will fail to compile with this revision of \Cpp{}. Such conversions occur in the following conditions: @@ -6177,7 +6162,7 @@ index 3a4119ed..543204a0 100644 \begin{itemize} \item passing a value to a function that takes an argument of type \tcode{bool}; \item using \tcode{operator==} to compare to \tcode{false} or \tcode{true}; -@@ -3727,7 +3725,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in +@@ -3771,7 +3769,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in \pnum Header \libheaderref{cstring}: The following functions have different declarations: @@ -6185,7 +6170,7 @@ index 3a4119ed..543204a0 100644 \begin{itemize} \item \tcode{strchr} \item \tcode{strpbrk} -@@ -3741,7 +3738,6 @@ Subclause \ref{cstring.syn} describes the changes. +@@ -3785,7 +3782,6 @@ Subclause \ref{cstring.syn} describes the changes. \pnum Header \libheaderref{cwchar}: The following functions have different declarations: @@ -6193,7 +6178,7 @@ index 3a4119ed..543204a0 100644 \begin{itemize} \item \tcode{wcschr} \item \tcode{wcspbrk} -@@ -3766,7 +3762,6 @@ in addition to the names declared in +@@ -3810,7 +3806,6 @@ in addition to the names declared in \pnum Header \libheaderref{cstdlib}: The following functions have different behavior: @@ -6331,7 +6316,7 @@ index 6bd0435e..0bfd8612 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 9c719111..b1b1b3fb 100644 +index 77036c1f..e49a887b 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -685,7 +685,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6411,7 +6396,7 @@ index 9c719111..b1b1b3fb 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -24298,7 +24288,6 @@ typename A::offset_policy +@@ -24306,7 +24296,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6419,7 +6404,7 @@ index 9c719111..b1b1b3fb 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -25197,7 +25186,6 @@ the \tcode{SliceSpecifier} arguments. +@@ -25276,7 +25265,6 @@ the \tcode{SliceSpecifier} arguments. \pnum For each function defined in \ref{mdspan.sub} that takes a parameter pack named \tcode{slices} as an argument: @@ -6427,7 +6412,7 @@ index 9c719111..b1b1b3fb 100644 \begin{itemize} \item let \tcode{index_type} be \begin{itemize} -@@ -25461,7 +25449,6 @@ $\le \tcode{src.extent($k$)}$ +@@ -25540,7 +25528,6 @@ $\le \tcode{src.extent($k$)}$ \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: @@ -6435,7 +6420,7 @@ index 9c719111..b1b1b3fb 100644 \begin{itemize} \item %FIXME: I think we want the count here, "number" is ambiguous. -@@ -25472,7 +25459,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and +@@ -25551,7 +25538,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and for each rank index $k$ of \tcode{Extents} such that \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, \tcode{SubExt\-ents::static_extent(\placeholder{map-rank}[$k$])} equals: @@ -6443,7 +6428,7 @@ index 9c719111..b1b1b3fb 100644 \begin{itemize} \item \tcode{Extents::static_extent($k$)} -@@ -25512,7 +25498,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that +@@ -25591,7 +25577,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that for each $k$ for which \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, \tcode{ext.extent(\placeholder{map-rank}[$k$])} equals: @@ -6452,10 +6437,10 @@ index 9c719111..b1b1b3fb 100644 \item \tcode{$s_k$.extent == 0 ? 0 : 1 + (\exposid{de-ice}($s_k$.extent) - 1) / \exposid{de-ice}($s_k$.stride)} diff --git a/source/declarations.tex b/source/declarations.tex -index 1af3ee51..b27354dd 100644 +index 4951f281..ad9508aa 100644 --- a/source/declarations.tex +++ b/source/declarations.tex -@@ -1557,7 +1557,6 @@ a partial specialization\iref{temp.spec.partial}, +@@ -1593,7 +1593,6 @@ a partial specialization\iref{temp.spec.partial}, an explicit instantiation\iref{temp.explicit}, or it has one of the following forms: @@ -6463,7 +6448,7 @@ index 1af3ee51..b27354dd 100644 \begin{ncsimplebnf} class-key \opt{attribute-specifier-seq} identifier \terminal{;}\br class-key \opt{attribute-specifier-seq} simple-template-id \terminal{;} -@@ -2396,7 +2395,6 @@ the \grammarterm{declarator} declares a function. +@@ -2491,7 +2490,6 @@ the \grammarterm{declarator} declares a function. \pnum Declarators have the syntax @@ -6471,7 +6456,7 @@ index 1af3ee51..b27354dd 100644 \begin{bnf} \nontermdef{declarator}\br ptr-declarator\br -@@ -4294,7 +4292,6 @@ In the following code, +@@ -4398,7 +4396,6 @@ In the following code, \tcode{g} will be called with the value \tcode{f(2)}: @@ -6479,7 +6464,7 @@ index 1af3ee51..b27354dd 100644 \begin{codeblock} int a = 1; int f(int); -@@ -4953,7 +4950,6 @@ To +@@ -5068,7 +5065,6 @@ To an object of type \tcode{T} means: @@ -6487,7 +6472,7 @@ index 1af3ee51..b27354dd 100644 \begin{itemize} \item If -@@ -5152,7 +5148,6 @@ is sequenced before those associated with +@@ -5271,7 +5267,6 @@ is sequenced before those associated with the initialization of the $j^\text{th}$ element. \item Otherwise, if the destination type is a class type: @@ -6495,7 +6480,7 @@ index 1af3ee51..b27354dd 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -6064,7 +6059,6 @@ a program that necessitates such a binding is ill-formed. +@@ -6183,7 +6178,6 @@ a program that necessitates such a binding is ill-formed. A reference to type ``\cvqual{cv1} \tcode{T1}'' is initialized by an expression of type ``\cvqual{cv2} \tcode{T2}'' as follows:% \indextext{binding!reference} @@ -6503,7 +6488,7 @@ index 1af3ee51..b27354dd 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6531,7 +6525,6 @@ int j { 1 }; // initialize to 1 +@@ -6651,7 +6645,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -6511,7 +6496,7 @@ index 1af3ee51..b27354dd 100644 \end{itemize} \pnum -@@ -7611,7 +7604,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, +@@ -7734,7 +7727,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, where $\tcode{U}_i$ is an lvalue reference if the initializer is an lvalue and an rvalue reference otherwise, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -6519,7 +6504,7 @@ index 1af3ee51..b27354dd 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7743,7 +7735,6 @@ struct S { +@@ -7866,7 +7858,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6527,7 +6512,7 @@ index 1af3ee51..b27354dd 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7840,7 +7831,6 @@ If the underlying +@@ -7963,7 +7954,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6535,15 +6520,15 @@ index 1af3ee51..b27354dd 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8295,7 +8285,6 @@ void h() { +@@ -8422,7 +8412,6 @@ void h() { \pnum - A \grammarterm{namespace-alias-definition} declares an alternate name for a - namespace according to the following grammar: + A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} + according to the following grammar: - \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8450,7 +8439,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8596,7 +8585,6 @@ not declare functions or function templates, the use of the name is ill-formed\i In particular, the name of a variable, function or enumerator does not hide the name of a class or enumeration declared in a different namespace. For example, @@ -6551,7 +6536,7 @@ index 1af3ee51..b27354dd 100644 \begin{codeblock} namespace A { class X { }; -@@ -9003,7 +8991,6 @@ otherwise identical. +@@ -9149,7 +9137,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6559,7 +6544,7 @@ index 1af3ee51..b27354dd 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -9852,7 +9839,6 @@ may be applied to a function or a lambda call operator or +@@ -10018,7 +10005,6 @@ may be applied to a function or a lambda call operator or to the declaration of a class or enumeration. An \grammarterm{attribute-argument-clause} may be present and, if present, shall have the form: @@ -6568,7 +6553,7 @@ index 1af3ee51..b27354dd 100644 \terminal{(} unevaluated-string \terminal{)} \end{ncbnf} diff --git a/source/exceptions.tex b/source/exceptions.tex -index 190e0ac6..cb9faf71 100644 +index df489ab5..17fe2711 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -89,7 +89,6 @@ void f() { @@ -6592,21 +6577,11 @@ index 190e0ac6..cb9faf71 100644 \end{itemize} \begin{note} -@@ -1127,9 +1124,7 @@ when \tcode{unhandled_stopped} is called on - a \tcode{with_awaitable_senders} object\iref{exec.with.awaitable.senders} - whose continuation is not a handle to a coroutine - whose promise type has an \tcode{unhandled_stopped} member function. -- - \end{itemize} -- - \end{note} - - \pnum diff --git a/source/expressions.tex b/source/expressions.tex -index 13e2526b..61ca8c1d 100644 +index 45f82de6..0bd95225 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -462,7 +462,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied +@@ -464,7 +464,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied if and only if the expression is a glvalue of volatile-qualified type and it is one of the following: @@ -6614,7 +6589,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item \tcode{(} \grammarterm{expression} \tcode{)}, where \grammarterm{expression} is one of these expressions, -@@ -505,7 +504,6 @@ Standard conversions are implicit conversions with built-in meaning. +@@ -508,7 +507,6 @@ Standard conversions are implicit conversions with built-in meaning. \ref{conv} enumerates the full set of such conversions. A \defnx{standard conversion sequence}{conversion sequence!standard} is a sequence of standard conversions in the following order: @@ -6622,7 +6597,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item Zero or one conversion from the following set: lvalue-to-rvalue conversion, array-to-pointer conversion, and function-to-pointer -@@ -533,7 +531,6 @@ a required destination type and value category. +@@ -536,7 +534,6 @@ a required destination type and value category. \begin{note} Expressions with a given type will be implicitly converted to other types in several contexts: @@ -6630,7 +6605,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item When used as operands of operators. The operator's requirements for its operands dictate the destination type\iref{expr.compound}. -@@ -659,7 +656,6 @@ int n = g(true); // OK, does not access \tcode{y.n} +@@ -662,7 +659,6 @@ int n = g(true); // OK, does not access \tcode{y.n} \pnum The result of the conversion is determined according to the following rules: @@ -6638,7 +6613,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If \tcode{T} is \cv{}~\tcode{std::nullptr_t}, the result is a -@@ -1169,7 +1165,6 @@ type cause conversions and yield result types in a similar way. The +@@ -1168,7 +1164,6 @@ type cause conversions and yield result types in a similar way. The purpose is to yield a common type, which is also the type of the result. This pattern is called the \defnx{usual arithmetic conversions}{conversion!usual arithmetic}, which are defined as follows: @@ -6646,7 +6621,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item The lvalue-to-rvalue conversion\iref{conv.lval} is applied to each operand and -@@ -1212,7 +1207,6 @@ As a consequence, operands of type \keyword{bool}, \keyword{char8_t}, \keyword{c +@@ -1211,7 +1206,6 @@ As a consequence, operands of type \keyword{bool}, \keyword{char8_t}, \keyword{c to some integral type. \end{footnote} Then the following rules are applied to determine \tcode{C}: @@ -6654,7 +6629,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If \tcode{T1} and \tcode{T2} are the same type, \tcode{C} is that type. -@@ -2719,7 +2713,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} +@@ -2797,7 +2791,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} \pnum For the purposes of lambda capture, an expression potentially references local entities as follows: @@ -6662,7 +6637,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item An \grammarterm{id-expression} that names a local entity -@@ -3324,7 +3317,6 @@ The \grammarterm{expression} is an unevaluated operand. +@@ -3407,7 +3400,6 @@ The \grammarterm{expression} is an unevaluated operand. Substitution of template arguments (if any) and verification of semantic properties proceed in the following order: @@ -6670,7 +6645,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -3336,7 +3328,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. +@@ -3419,7 +3411,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. \item If the \grammarterm{return-type-requirement} is present, then: @@ -6678,15 +6653,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -4002,7 +3993,6 @@ the reference is bound, - otherwise \tcode{E1.E2} designates the object or function to which - the corresponding reference member of \tcode{E1} is bound. - Otherwise, one of the following rules applies. -- - \begin{itemize} - \item If \tcode{E2} is a static data member and the type of \tcode{E2} - is \tcode{T}, then \tcode{E1.E2} is an lvalue; the expression designates -@@ -4215,7 +4205,6 @@ referred to by \tcode{T}. +@@ -4502,7 +4493,6 @@ referred to by \tcode{T}. \pnum Let \tcode{C} be the class type to which \tcode{T} points or refers. The runtime check logically executes as follows: @@ -6694,7 +6661,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If, in the most derived object pointed (referred) to by \tcode{v}, \tcode{v} points (refers) to a public base class subobject of a -@@ -4762,7 +4751,6 @@ constness. +@@ -5020,7 +5010,6 @@ constness. The null member pointer value\iref{conv.mem} is converted to the null member pointer value of the destination type. The result of this conversion is unspecified, except in the following cases: @@ -6702,7 +6669,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item Converting a prvalue of type ``pointer to member function'' to a different pointer-to-member-function type and back to its original type -@@ -5181,7 +5169,6 @@ is called a \term{suspension context} of the function. +@@ -5452,7 +5441,6 @@ is called a \term{suspension context} of the function. \pnum Evaluation of an \grammarterm{await-expression} involves the following auxiliary types, expressions, and objects: @@ -6710,7 +6677,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item \placeholder{p} is an lvalue naming the promise -@@ -5562,7 +5549,6 @@ and +@@ -5833,7 +5821,6 @@ and the \grammarterm{new-expression}, then the allocated type is the type deduced for the variable \tcode{x} in the invented declaration\iref{dcl.spec.auto}: @@ -6718,7 +6685,7 @@ index 13e2526b..61ca8c1d 100644 \begin{codeblock} T x @\textrm{\placeholder{init}}@ ; \end{codeblock} -@@ -5914,7 +5900,6 @@ the alignment argument is removed from the argument list; +@@ -6185,7 +6172,6 @@ the alignment argument is removed from the argument list; otherwise, an argument that is the type's alignment and has type \tcode{std::align_val_t} is added into the argument list immediately after the first argument; @@ -6726,7 +6693,7 @@ index 13e2526b..61ca8c1d 100644 \end{itemize} and then overload resolution is performed again. -@@ -5992,7 +5977,6 @@ necessarily be the same as that of the block if the object is an array. +@@ -6263,7 +6249,6 @@ necessarily be the same as that of the block if the object is an array. \indextext{\idxcode{new}!default constructor and}% A \grammarterm{new-expression} that creates an object of type \tcode{T} initializes that object as follows: @@ -6734,7 +6701,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If the \grammarterm{new-initializer} is omitted, the object is default-initialized\iref{dcl.init}. -@@ -6081,7 +6065,6 @@ struct S { +@@ -6352,7 +6337,6 @@ struct S { S* p = new (0) S; // error: non-placement deallocation function matches // placement allocation function \end{codeblock} @@ -6742,7 +6709,7 @@ index 13e2526b..61ca8c1d 100644 \end{example} \pnum -@@ -6201,7 +6184,6 @@ of their constructor; see~\ref{class.base.init}). +@@ -6472,7 +6456,6 @@ of their constructor; see~\ref{class.base.init}). \pnum If the value of the operand of the \grammarterm{delete-expression} is not a null pointer value, then: @@ -6750,7 +6717,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If the allocation call for the \grammarterm{new-expression} for the object to -@@ -6825,7 +6807,6 @@ or one operand has integral type and +@@ -7322,7 +7305,6 @@ or one operand has integral type and the other operand has unscoped enumeration type, the \link{usual arithmetic conversions}{expr.arith.conv} are applied to the operands. Then: @@ -6758,7 +6725,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, -@@ -6980,7 +6961,6 @@ is considered to be equivalent to a pointer to a hypothetical array element +@@ -7477,7 +7459,6 @@ is considered to be equivalent to a pointer to a hypothetical array element $n$ for this purpose. \end{footnote} is defined in terms of a partial order consistent with the following rules: @@ -6766,7 +6733,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If two pointers point to different elements of the same array, or to subobjects thereof, the pointer to the element with the higher subscript -@@ -6993,7 +6973,6 @@ neither member is a subobject of zero size +@@ -7490,7 +7471,6 @@ neither member is a subobject of zero size and their class is not a union. \item Otherwise, neither pointer is required to compare greater than the other. @@ -6774,7 +6741,7 @@ index 13e2526b..61ca8c1d 100644 \end{itemize} \pnum -@@ -7055,7 +7034,6 @@ If at least one of the converted operands is a pointer, +@@ -7552,7 +7532,6 @@ If at least one of the converted operands is a pointer, \link{qualification conversions}{conv.qual} are performed on both operands to bring them to their \deflink{composite pointer type}{expr.type}. Comparing pointers is defined as follows: @@ -6782,7 +6749,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If one pointer represents the address of a complete object, and another -@@ -7085,7 +7063,6 @@ qualification conversions\iref{conv.qual} +@@ -7582,7 +7561,6 @@ qualification conversions\iref{conv.qual} are performed on both operands to bring them to their composite pointer type\iref{expr.type}. Comparing pointers to members is defined as follows: @@ -6790,7 +6757,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If two pointers to members are both the null member pointer value, they compare -@@ -7357,7 +7334,6 @@ Attempts are made to form an implicit conversion sequence +@@ -7868,7 +7846,6 @@ Attempts are made to form an implicit conversion sequence from an operand expression \tcode{E1} of type \tcode{T1} to a target type related to the type \tcode{T2} of the operand expression \tcode{E2} as follows: @@ -6798,7 +6765,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item If \tcode{E2} is an lvalue, the target type is ``lvalue reference to \tcode{T2}'', -@@ -7436,7 +7412,6 @@ subclause. +@@ -7947,7 +7924,6 @@ subclause. and \link{function-to-pointer}{conv.func} standard conversions are performed on the second and third operands. After those conversions, one of the following shall hold: @@ -6806,7 +6773,7 @@ index 13e2526b..61ca8c1d 100644 \begin{itemize} \item The second and third operands have the same type; the result is of that type and the result is copy-initialized using the selected operand. -@@ -7466,7 +7441,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. +@@ -7977,7 +7953,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. Both the second and third operands have type \tcode{std::nullptr_t} or one has that type and the other is a null pointer constant. The result is of type \tcode{std::nullptr_t}. @@ -6815,10 +6782,10 @@ index 13e2526b..61ca8c1d 100644 \rSec2[expr.yield]{Yielding a value}% diff --git a/source/future.tex b/source/future.tex -index 49c04f21..ddaaf96d 100644 +index 4c6942b4..04969113 100644 --- a/source/future.tex +++ b/source/future.tex -@@ -268,7 +268,6 @@ shown in the above synopsis. +@@ -283,7 +283,6 @@ shown in the above synopsis. \pnum The header \libheaderrefx{type_traits}{meta.type.synop} has the following addition: @@ -6826,7 +6793,7 @@ index 49c04f21..ddaaf96d 100644 \begin{codeblock} namespace std { template struct is_trivial; -@@ -508,7 +507,6 @@ template bool operator>=(const T& x, const T& y); +@@ -523,7 +522,6 @@ template bool operator>=(const T& x, const T& y); \pnum The header \libheaderref{tuple} has the following additions: @@ -6834,7 +6801,7 @@ index 49c04f21..ddaaf96d 100644 \begin{codeblock} namespace std { template struct tuple_size; -@@ -578,7 +576,6 @@ are included. +@@ -593,7 +591,6 @@ are included. \pnum The header \libheaderref{variant} has the following additions: @@ -6842,7 +6809,7 @@ index 49c04f21..ddaaf96d 100644 \begin{codeblock} namespace std { template struct variant_size; -@@ -625,7 +622,6 @@ with a member typedef \tcode{type} that names the following type: +@@ -640,7 +637,6 @@ with a member typedef \tcode{type} that names the following type: \pnum The header \libheaderrefx{iterator}{iterator.synopsis} has the following addition: @@ -6850,7 +6817,7 @@ index 49c04f21..ddaaf96d 100644 \indexlibraryglobal{iterator}% \begin{codeblock} namespace std { -@@ -659,7 +655,6 @@ only to callers of that class. +@@ -674,7 +670,6 @@ only to callers of that class. If a \Cpp{} program wants to define a bidirectional iterator for some data structure containing \tcode{double} and such that it works on a large memory model of the implementation, it can do so with: @@ -6858,7 +6825,7 @@ index 49c04f21..ddaaf96d 100644 \begin{codeblock} class MyIterator : public iterator { -@@ -673,7 +668,6 @@ class MyIterator : +@@ -688,7 +683,6 @@ class MyIterator : \pnum The following member is declared in addition to those members specified in \ref{move.iter.elem}: @@ -6866,7 +6833,7 @@ index 49c04f21..ddaaf96d 100644 \begin{codeblock} namespace std { template -@@ -766,7 +760,6 @@ Equivalent to: \tcode{return visit(std::forward(vis), arg.value);} +@@ -798,7 +792,6 @@ are not required to avoid data races\iref{res.on.data.races}. \pnum The header \libheaderrefx{filesystem}{fs.filesystem.syn} has the following additions: @@ -6874,7 +6841,7 @@ index 49c04f21..ddaaf96d 100644 \indexlibraryglobal{u8path}% \begin{itemdecl} template -@@ -847,7 +840,6 @@ as it is consistent with \tcode{path}'s handling of other encodings. +@@ -918,7 +911,6 @@ std::string generic_string() const; \pnum The header \libheaderrefx{atomic}{atomics.syn} has the following additions. @@ -6883,10 +6850,10 @@ index 49c04f21..ddaaf96d 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index ee7b1fc6..f01c8ec2 100644 +index 0804ddd3..2bcd6f9a 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -2108,14 +2108,12 @@ does nothing. +@@ -2102,14 +2102,12 @@ does nothing. Otherwise assigns to the member objects of \tcode{*this} the corresponding member objects of \tcode{rhs} as follows: @@ -6901,7 +6868,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{itemize} \item \tcode{rdstate()}, \tcode{rdbuf()}, and \tcode{exceptions()} are left unchanged; -@@ -7211,7 +7209,6 @@ clears \tcode{ios_base::skipws} in the format flags stored in the +@@ -7222,7 +7220,6 @@ clears \tcode{ios_base::skipws} in the format flags stored in the format flags stored in the \tcode{basic_ostream} object \tcode{cout} (the same as \tcode{cout << noshowbase}). \end{footnote} @@ -6909,7 +6876,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} void f(ios_base& str, ios_base::fmtflags mask) { // reset specified flags -@@ -7250,7 +7247,6 @@ then the expression +@@ -7261,7 +7258,6 @@ then the expression behaves as if it called \tcode{f(in, mask)}, where the function \tcode{f} is defined as: \indexlibrarymember{fmtflags}{ios_base}% @@ -6917,7 +6884,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} void f(ios_base& str, ios_base::fmtflags mask) { // set specified flags -@@ -7296,7 +7292,6 @@ then the expression +@@ -7307,7 +7303,6 @@ then the expression \tcode{in >> setbase(base)} behaves as if it called \tcode{f(in, base)}, where the function \tcode{f} is defined as: @@ -6925,7 +6892,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} void f(ios_base& str, int base) { // set \tcode{basefield} -@@ -7339,7 +7334,6 @@ then the expression +@@ -7350,7 +7345,6 @@ then the expression \tcode{out << setfill(c)} behaves as if it called \tcode{f(out, c)}, where the function \tcode{f} is defined as: @@ -6933,7 +6900,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} template void f(basic_ios& str, charT c) { -@@ -7380,7 +7374,6 @@ then the expression +@@ -7391,7 +7385,6 @@ then the expression \tcode{in >> setprecision(n)} behaves as if it called \tcode{f(in, n)}, where the function \tcode{f} is defined as: @@ -6941,7 +6908,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} void f(ios_base& str, int n) { // set precision -@@ -7426,7 +7419,6 @@ then the expression +@@ -7437,7 +7430,6 @@ then the expression \tcode{in >> setw(n)} behaves as if it called \tcode{f(in, n)}, where the function \tcode{f} is defined as: @@ -6949,7 +6916,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} void f(ios_base& str, int n) { // set width -@@ -7476,7 +7468,6 @@ An object of unspecified type such that if +@@ -7487,7 +7479,6 @@ An object of unspecified type such that if \tcode{in} is an object of type \tcode{basic_istream} then the expression \tcode{in >> get_money(mon, intl)} behaves as if it called \tcode{f(in, mon, intl)}, where the function \tcode{f} is defined as: @@ -6957,7 +6924,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} template void f(basic_ios& str, moneyT& mon, bool intl) { -@@ -7515,7 +7506,6 @@ An object of unspecified type such that if +@@ -7526,7 +7517,6 @@ An object of unspecified type such that if then the expression \tcode{out << put_money(mon, intl)} behaves as a \link{formatted output function}{ostream.formatted.reqmts} that calls \tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as: @@ -6965,7 +6932,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} template void f(basic_ios& str, const moneyT& mon, bool intl) { -@@ -7551,7 +7541,6 @@ An object of unspecified type such that if \tcode{in} is an object of type +@@ -7562,7 +7552,6 @@ An object of unspecified type such that if \tcode{in} is an object of type \tcode{basic_istream} then the expression \tcode{in >> get_time(tmb, fmt)} behaves as if it called \tcode{f(in, tmb, fmt)}, where the function \tcode{f} is defined as: @@ -6973,7 +6940,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} template void f(basic_ios& str, tm* tmb, const charT* fmt) { -@@ -7590,7 +7579,6 @@ An object of unspecified type such that if \tcode{out} is an object of +@@ -7601,7 +7590,6 @@ An object of unspecified type such that if \tcode{out} is an object of type \tcode{basic_ostream} then the expression \tcode{out << put_time(tmb, fmt)} behaves as if it called \tcode{f(out, tmb, fmt)}, where the function \tcode{f} is defined as: @@ -6981,7 +6948,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} template void f(basic_ios& str, const tm* tmb, const charT* fmt) { -@@ -11426,7 +11414,6 @@ with the specialization that a sequence of characters is read from the input +@@ -11429,7 +11417,6 @@ with the specialization that a sequence of characters is read from the input sequence as if by reading from the associated file into an internal buffer (\tcode{extern_buf}) and then as if by doing: @@ -6989,7 +6956,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{codeblock} char extern_buf[XSIZE]; char* extern_end; -@@ -13912,7 +13899,6 @@ without an intervening \grammarterm{root-directory} element. +@@ -13920,7 +13907,6 @@ without an intervening \grammarterm{root-directory} element. \pnum \indextext{path!normalization|(}% \defnx{Normalization}{normalization!path} of a generic format pathname means: @@ -6997,7 +6964,7 @@ index ee7b1fc6..f01c8ec2 100644 \begin{enumerate} \item If the path is empty, stop. \item Replace each slash character in the \grammarterm{root-name} with a \grammarterm{preferred-separator}. -@@ -17028,7 +17014,6 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17061,7 +17047,6 @@ recursive_directory_iterator& increment(error_code& ec); As specified for the prefix increment operation of \link{Input iterators}{input.iterators}, except that: @@ -7006,7 +6973,7 @@ index ee7b1fc6..f01c8ec2 100644 \item If there are no more entries at the current depth, then if \tcode{depth() != 0} iteration over the parent directory resumes; otherwise \tcode{*this = recursive_directory_iterator()}. diff --git a/source/iterators.tex b/source/iterators.tex -index 6078fec7..d022554d 100644 +index 7acd9d21..85213808 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -948,7 +948,6 @@ may be defined as \keyword{void}. @@ -7025,7 +6992,7 @@ index 6078fec7..d022554d 100644 \begin{itemize} \item If \tcode{I} has valid\iref{temp.deduct} member -@@ -1155,7 +1153,6 @@ The name \tcode{ranges::iter_move} denotes +@@ -1153,7 +1151,6 @@ The name \tcode{ranges::iter_move} denotes a customization point object\iref{customization.point.object}. The expression \tcode{ranges::\-iter_move(E)} for a subexpression \tcode{E} is expression-equivalent to: @@ -7033,7 +7000,7 @@ index 6078fec7..d022554d 100644 \begin{itemize} \item \tcode{iter_move(E)}, if \tcode{E} has class or enumeration type and -@@ -2795,7 +2792,6 @@ namespace std { +@@ -2793,7 +2790,6 @@ namespace std { A program-defined iterator \tcode{BinaryTreeIterator} can be included into the bidirectional iterator category by specializing the \tcode{iterator_traits} template: @@ -7041,7 +7008,7 @@ index 6078fec7..d022554d 100644 \begin{codeblock} template struct iterator_traits> { using iterator_category = bidirectional_iterator_tag; -@@ -2813,7 +2809,6 @@ If +@@ -2811,7 +2807,6 @@ If \tcode{evolve()} is well-defined for bidirectional iterators, but can be implemented more efficiently for random access iterators, then the implementation is as follows: @@ -7049,7 +7016,7 @@ index 6078fec7..d022554d 100644 \begin{codeblock} template inline void -@@ -3394,7 +3389,6 @@ As if by: +@@ -3398,7 +3393,6 @@ As if by: Iterator tmp = current; return *--tmp; \end{codeblock} @@ -7057,7 +7024,7 @@ index 6078fec7..d022554d 100644 \end{itemdescr} \indexlibrarymember{operator->}{reverse_iterator}% -@@ -4776,7 +4770,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 +@@ -4780,7 +4774,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 vector v2(make_move_iterator(s.begin()), make_move_iterator(s.end())); // moves strings into \tcode{v2} \end{codeblock} @@ -7065,7 +7032,7 @@ index 6078fec7..d022554d 100644 \end{example} \rSec3[move.iterator]{Class template \tcode{move_iterator}} -@@ -6495,7 +6488,6 @@ partial_sum(istream_iterator(cin), +@@ -6499,7 +6492,6 @@ partial_sum(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "@\textbackslash@n")); \end{codeblock} @@ -7073,20 +7040,8 @@ index 6078fec7..d022554d 100644 reads a file containing floating-point numbers from \tcode{cin}, and prints the partial sums onto -diff --git a/source/lex.tex b/source/lex.tex -index fbd79538..d09869b8 100644 ---- a/source/lex.tex -+++ b/source/lex.tex -@@ -597,7 +597,6 @@ after the \tcode{include} or \tcode{import} preprocessing token in a - - \item - within a \grammarterm{has-include-expression}. -- - \end{itemize} - \end{itemize} - diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 10076632..6effcd33 100644 +index 9c2a79b8..2b281173 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -196,7 +196,6 @@ save space, items that do not apply to a Clause are omitted. @@ -7137,7 +7092,7 @@ index 10076632..6effcd33 100644 \begin{itemize} \item \constraints -@@ -613,7 +607,6 @@ values\iref{basic.fundamental}. +@@ -619,7 +613,6 @@ values\iref{basic.fundamental}. \pnum The enumerated type \tcode{\placeholder{enumerated}} can be written: @@ -7145,7 +7100,7 @@ index 10076632..6effcd33 100644 \begin{codeblock} enum @\placeholder{enumerated}@ { @$\tcode{\placeholder{V}}_{0}$@, @$\tcode{\placeholder{V}}_{1}$@, @$\tcode{\placeholder{V}}_{2}$@, @$\tcode{\placeholder{V}}_{3}$@, @$\ldots$@ }; -@@ -646,7 +639,6 @@ or as a +@@ -652,7 +645,6 @@ or as a \pnum The bitmask type \tcode{\placeholder{bitmask}} can be written: @@ -7153,7 +7108,7 @@ index 10076632..6effcd33 100644 \begin{codeblock} // For exposition only. // \tcode{int_type} is an integral type capable of representing all values of the bitmask type. -@@ -723,7 +715,6 @@ The value \textit{Y} \defnx{is set}{bitmask!value!is set} in the object +@@ -729,7 +721,6 @@ The value \textit{Y} \defnx{is set}{bitmask!value!is set} in the object The C standard library makes widespread use \indextext{library!C standard}% of characters and character sequences that follow a few uniform conventions: @@ -7161,7 +7116,7 @@ index 10076632..6effcd33 100644 \begin{itemize} \item Properties specified as \defn{locale-specific} -@@ -959,7 +950,6 @@ some subclauses provide representative declarations, and semantic requirements, +@@ -965,7 +956,6 @@ some subclauses provide representative declarations, and semantic requirements, private members of classes that meet the external specifications of the classes. The declarations for such members are followed by a comment that ends with \expos, as in: @@ -7169,7 +7124,7 @@ index 10076632..6effcd33 100644 \begin{codeblock} streambuf* sb; // \expos \end{codeblock} -@@ -1924,7 +1914,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if +@@ -1932,7 +1922,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if evaluated in the context described below, and \item these expressions have the following effects: @@ -7177,7 +7132,7 @@ index 10076632..6effcd33 100644 \begin{itemize} \item the object referred to by \tcode{t} has the value originally held by \tcode{u} and \item the object referred to by \tcode{u} has the value originally held by \tcode{t}. -@@ -2930,7 +2919,6 @@ for that type can fail by throwing an object of type +@@ -2938,7 +2927,6 @@ for that type can fail by throwing an object of type \begin{example} The following is an allocator class template supporting the minimal interface that meets the requirements of \ref{allocator.requirements.general}: @@ -7185,7 +7140,7 @@ index 10076632..6effcd33 100644 \begin{codeblock} template struct SimpleAllocator { -@@ -3404,13 +3392,11 @@ the description of function semantics apply +@@ -3422,13 +3410,11 @@ the description of function semantics apply to both the default version defined by the \Cpp{} standard library and the replacement function defined by the program. @@ -7199,7 +7154,7 @@ index 10076632..6effcd33 100644 \begin{itemize} \item \tcode{terminate_handler} -@@ -3431,7 +3417,6 @@ Exception handling. +@@ -3449,7 +3435,6 @@ Exception handling. \pnum A \Cpp{} program can get a pointer to the current handler function by calling the following functions: @@ -7207,7 +7162,7 @@ index 10076632..6effcd33 100644 \begin{itemize} \item \indexlibraryglobal{get_new_handler}% -@@ -3457,7 +3442,6 @@ on the implementation. +@@ -3475,7 +3460,6 @@ on the implementation. \pnum In particular, the behavior is undefined in the following cases: @@ -7215,7 +7170,7 @@ index 10076632..6effcd33 100644 \begin{itemize} \item For replacement functions\iref{replacement.functions}, if the installed replacement function does not -@@ -3742,7 +3726,6 @@ functions or constructors an implementation shall provide corresponding definiti +@@ -3760,7 +3744,6 @@ functions or constructors an implementation shall provide corresponding definiti \indextext{stable algorithm}% When the requirements for an algorithm state that it is ``stable'' without further elaboration, it means: @@ -7234,10 +7189,10 @@ index efd4eb00..12180661 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index d4451b02..add15a22 100644 +index afb0ae18..768a50eb 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1455,7 +1455,6 @@ when considered as an unevaluated operand. +@@ -1571,7 +1571,6 @@ when considered as an unevaluated operand. \pnum Let \exposid{pair-constructor} be an exposition-only class defined as follows: @@ -7245,7 +7200,7 @@ index d4451b02..add15a22 100644 \begin{codeblock} class @\exposid{pair-constructor}@ { using @\exposid{pair-type}@ = remove_cv_t; // \expos -@@ -3565,7 +3564,6 @@ template shared_ptr(nullptr_t p, D d, A a); +@@ -3706,7 +3705,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a); \tcode{is_move_constructible_v} is \tcode{true}, and \tcode{d(p)} is a well-formed expression. For the first two overloads: @@ -7254,10 +7209,10 @@ index d4451b02..add15a22 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index 9484e79a..cd75eee5 100644 +index b9d9144c..c30353cd 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -1623,7 +1623,6 @@ is_base_of_v // \tcode{false} +@@ -1943,7 +1943,6 @@ is_base_of_v // \tcode{false} The predicate condition for a template specialization \tcode{is_convertible} shall be satisfied if and only if the return expression in the following code would be well-formed, including any implicit conversions to the return type of the function: @@ -7265,7 +7220,7 @@ index 9484e79a..cd75eee5 100644 \begin{codeblock} To test() { return declval(); -@@ -2105,7 +2104,6 @@ If any of the types computed above is ill-formed, then +@@ -2451,7 +2450,6 @@ If any of the types computed above is ill-formed, then \pnum For the \tcode{common_type} trait applied to a template parameter pack \tcode{T} of types, the member \tcode{type} shall be either defined or not present as follows: @@ -7274,10 +7229,10 @@ index 9484e79a..cd75eee5 100644 \item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}. diff --git a/source/numerics.tex b/source/numerics.tex -index 9402c55b..c37ff4f3 100644 +index e0a5e89d..b46401da 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -605,7 +605,6 @@ template constexpr complex operator+(const complex& lhs); +@@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); \pnum \returns \tcode{complex(lhs)}. @@ -7285,7 +7240,7 @@ index 9402c55b..c37ff4f3 100644 \end{itemdescr} \begin{itemdecl} -@@ -744,7 +743,6 @@ template +@@ -745,7 +744,6 @@ template \effects Inserts the complex number \tcode{x} onto the stream \tcode{o} as if it were implemented as follows: @@ -7293,7 +7248,7 @@ index 9402c55b..c37ff4f3 100644 \begin{codeblock} basic_ostringstream s; s.flags(o.flags()); -@@ -4276,7 +4274,6 @@ template +@@ -4277,7 +4275,6 @@ template each operation is to be carried out modulo $2^{32}$, each indexing operator applied to \tcode{begin} is to be taken modulo $n$, and $T(x)$ is defined as $x \xor (x \rightshift 27)$: @@ -7301,7 +7256,7 @@ index 9402c55b..c37ff4f3 100644 \begin{itemize} \item By way of initialization, -@@ -8355,7 +8352,6 @@ A unique function with the indicated name can be applied (unqualified) +@@ -8356,7 +8353,6 @@ A unique function with the indicated name can be applied (unqualified) to an operand of type \tcode{T}. This function returns a value of type \tcode{T} or which can be unambiguously implicitly converted to type \tcode{T}. @@ -7309,7 +7264,7 @@ index 9402c55b..c37ff4f3 100644 \end{itemdescr} \rSec3[valarray.special]{Specialized algorithms} -@@ -8371,7 +8367,6 @@ template void swap(valarray& x, valarray& y) noexcept; +@@ -8372,7 +8368,6 @@ template void swap(valarray& x, valarray& y) noexcept; Equivalent to \tcode{x.swap(y)}. \end{itemdescr} @@ -7317,7 +7272,7 @@ index 9402c55b..c37ff4f3 100644 \rSec2[class.slice]{Class \tcode{slice}} \rSec3[class.slice.overview]{Overview} -@@ -8791,7 +8786,6 @@ namespace std { +@@ -8792,7 +8787,6 @@ namespace std { This template is a helper template used by the \tcode{gslice} subscript operator @@ -7325,7 +7280,7 @@ index 9402c55b..c37ff4f3 100644 \indexlibraryglobal{gslice_array}% \indexlibraryglobal{valarray}% \begin{itemdecl} -@@ -8917,7 +8911,6 @@ namespace std { +@@ -8918,7 +8912,6 @@ namespace std { \pnum This template is a helper template used by the mask subscript operator: @@ -7333,7 +7288,7 @@ index 9402c55b..c37ff4f3 100644 \indexlibrarymember{operator[]}{mask_array}% \begin{itemdecl} mask_array valarray::operator[](const valarray&); -@@ -9034,7 +9027,6 @@ namespace std { +@@ -9035,7 +9028,6 @@ namespace std { \pnum This template is a helper template used by the indirect subscript operator @@ -7342,10 +7297,10 @@ index 9402c55b..c37ff4f3 100644 \begin{itemdecl} indirect_array valarray::operator[](const valarray&); diff --git a/source/overloading.tex b/source/overloading.tex -index db9317ec..d6a68599 100644 +index 8e2bc352..f94e7c05 100644 --- a/source/overloading.tex +++ b/source/overloading.tex -@@ -98,7 +98,6 @@ the list of arguments in its own unique way. +@@ -103,7 +103,6 @@ the list of arguments in its own unique way. But, once the candidate functions and argument lists have been identified, the selection of the best function is the same in all cases: @@ -7353,7 +7308,7 @@ index db9317ec..d6a68599 100644 \begin{itemize} \item First, a subset of the candidate functions (those that have -@@ -391,7 +390,6 @@ Such a +@@ -396,7 +395,6 @@ Such a \grammarterm{postfix-expression}, perhaps nested arbitrarily deep in parentheses, has one of the following forms: @@ -7361,7 +7316,7 @@ index db9317ec..d6a68599 100644 \begin{ncbnf} postfix-expression:\br postfix-expression \terminal{.} id-expression\br -@@ -998,7 +996,6 @@ The lookup rules for operators in expressions are different than +@@ -1014,7 +1012,6 @@ The lookup rules for operators in expressions are different than the lookup rules for operator function names in a function call, as shown in the following example: @@ -7369,7 +7324,7 @@ index db9317ec..d6a68599 100644 \begin{codeblock} struct A { }; void operator + (A, A); -@@ -1060,7 +1057,6 @@ Assuming that +@@ -1076,7 +1073,6 @@ Assuming that \tcode{T} a class type, the candidate functions are selected as follows: @@ -7377,7 +7332,7 @@ index db9317ec..d6a68599 100644 \begin{itemize} \item The non-explicit constructors\iref{class.conv.ctor} of -@@ -1106,7 +1102,6 @@ conversion function to be invoked. +@@ -1122,7 +1118,6 @@ conversion function to be invoked. Assuming that ``\cv{} \tcode{T}'' is the type of the object being initialized, the candidate functions are selected as follows: @@ -7385,7 +7340,7 @@ index db9317ec..d6a68599 100644 \begin{itemize} \item The permissible types for non-explicit conversion functions are -@@ -1178,7 +1173,6 @@ list-initialized such that \ref{dcl.init.list} specifies that overload resolutio +@@ -1194,7 +1189,6 @@ list-initialized such that \ref{dcl.init.list} specifies that overload resolutio is performed according to the rules in this subclause or when forming a list-initialization sequence according to \ref{over.ics.list}, overload resolution selects the constructor in two phases: @@ -7393,7 +7348,7 @@ index db9317ec..d6a68599 100644 \begin{itemize} \item If the initializer list is not empty or \tcode{T} has no default constructor, -@@ -1259,7 +1253,6 @@ called the \defn{copy deduction candidate}. +@@ -1276,7 +1270,6 @@ called the \defn{copy deduction candidate}. For each \grammarterm{deduction-guide}, a function or function template with the following properties: @@ -7401,7 +7356,7 @@ index db9317ec..d6a68599 100644 \begin{itemize} \item The \grammarterm{template-head}, if any, -@@ -2684,7 +2677,6 @@ sequence}{over.ics.ellipsis}. +@@ -2744,7 +2737,6 @@ sequence}{over.ics.ellipsis}. Two implicit conversion sequences of the same form are indistinguishable conversion sequences unless one of the following rules applies: @@ -7409,7 +7364,7 @@ index db9317ec..d6a68599 100644 \begin{itemize} \item List-initialization sequence \tcode{L1} is a better conversion sequence than -@@ -2916,7 +2908,6 @@ int i = f(a); // calls \tcode{f(int)}, because \tcode{short} $ +@@ -2976,7 +2968,6 @@ int i = f(a); // calls \tcode{f(int)}, because \tcode{short} $ // better than \tcode{short} $\to$ \tcode{float}. \end{codeblock} \end{example} @@ -7417,7 +7372,7 @@ index db9317ec..d6a68599 100644 \end{itemize} \pnum -@@ -2925,7 +2916,6 @@ better conversion than a Promotion, which is a better conversion than +@@ -2985,7 +2976,6 @@ better conversion than a Promotion, which is a better conversion than a Conversion. Two conversion sequences with the same rank are indistinguishable unless one of the following rules applies: @@ -7425,7 +7380,7 @@ index db9317ec..d6a68599 100644 \begin{itemize} \item A conversion that does not convert a pointer or a pointer to member -@@ -4092,7 +4082,6 @@ is a \defnx{literal operator template}{literal!operator!template}. +@@ -4152,7 +4142,6 @@ is a \defnx{literal operator template}{literal!operator!template}. \pnum The declaration of a literal operator shall have a \grammarterm{parameter-declaration-clause} equivalent to one of the following: @@ -7434,7 +7389,7 @@ index db9317ec..d6a68599 100644 const char* unsigned long long int diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 885db47e..2d3e5cb6 100644 +index a6fd4d0f..da2270a0 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -183,7 +183,6 @@ begins with the first character in the source file @@ -7445,7 +7400,7 @@ index 885db47e..2d3e5cb6 100644 \begin{itemize} \item a \tcode{\#} preprocessing token, or -@@ -645,7 +644,6 @@ including within a preprocessing directive. +@@ -656,7 +655,6 @@ including within a preprocessing directive. \begin{example} This demonstrates a way to include a library \tcode{optional} facility only if it is available: @@ -7453,7 +7408,7 @@ index 885db47e..2d3e5cb6 100644 \begin{codeblock} #if __has_include() # include -@@ -804,14 +802,12 @@ However, using the \tcode{< >} form for headers provided +@@ -813,14 +811,12 @@ However, using the \tcode{< >} form for headers provided with the implementation and the \tcode{" "} form for sources outside the control of the implementation achieves wider portability. For instance: @@ -7468,7 +7423,7 @@ index 885db47e..2d3e5cb6 100644 \end{note} \pnum -@@ -819,7 +815,6 @@ achieves wider portability. For instance: +@@ -828,7 +824,6 @@ achieves wider portability. For instance: This illustrates macro-replaced \tcode{\#include} directives: @@ -7476,7 +7431,7 @@ index 885db47e..2d3e5cb6 100644 \begin{codeblock} #if VERSION == 1 #define INCFILE "vers1.h" -@@ -1895,7 +1890,6 @@ is optional. +@@ -1937,7 +1932,6 @@ is optional. \pnum \begin{example} In the following fragment: @@ -7484,7 +7439,7 @@ index 885db47e..2d3e5cb6 100644 \begin{codeblock} #define hash_hash # ## # #define mkstr(a) # a -@@ -1905,7 +1899,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";} +@@ -1947,7 +1941,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";} \end{codeblock} The expansion produces, at various stages: @@ -7492,7 +7447,7 @@ index 885db47e..2d3e5cb6 100644 \begin{codeblock} join(x, y) in_between(x hash_hash y) -@@ -2135,7 +2128,6 @@ has no effect. +@@ -2179,7 +2172,6 @@ has no effect. \pnum The following macro names shall be defined by the implementation: @@ -7500,7 +7455,7 @@ index 885db47e..2d3e5cb6 100644 \begin{description} \item -@@ -2365,7 +2357,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali +@@ -2412,7 +2404,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali \pnum The following macro names are conditionally defined by the implementation: @@ -7508,7 +7463,7 @@ index 885db47e..2d3e5cb6 100644 \begin{description} \item \indextext{__stdc__@\mname{STDC}}% -@@ -2400,7 +2391,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. +@@ -2447,7 +2438,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. \mname{STDCPP_THREADS}\\ Defined, and has the value integer literal 1, if and only if a program can have more than one \link{thread of execution}{intro.multithread}. @@ -7517,10 +7472,10 @@ index 885db47e..2d3e5cb6 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index c16eba7f..24fc04eb 100644 +index 2a606adf..8b0f4e38 100644 --- a/source/ranges.tex +++ b/source/ranges.tex -@@ -651,7 +651,6 @@ object\iref{customization.point.object}. +@@ -657,7 +657,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7528,7 +7483,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -712,7 +711,6 @@ object\iref{customization.point.object}. +@@ -718,7 +717,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7536,7 +7491,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -838,7 +836,6 @@ object\iref{customization.point.object}. +@@ -844,7 +842,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7544,7 +7499,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -902,7 +899,6 @@ object\iref{customization.point.object}. +@@ -908,7 +905,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7552,7 +7507,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -1027,7 +1023,6 @@ object\iref{customization.point.object}. +@@ -1033,7 +1029,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7560,7 +7515,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{T} is an array of unknown bound\iref{term.array.type}, -@@ -1157,7 +1152,6 @@ object\iref{customization.point.object}. +@@ -1163,7 +1158,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7568,7 +7523,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{T} is an array of unknown bound\iref{term.array.type}, -@@ -1208,7 +1202,6 @@ object\iref{customization.point.object}. +@@ -1214,7 +1208,6 @@ object\iref{customization.point.object}. Given a subexpression \tcode{E} with type \tcode{T}, let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. Then: @@ -7576,7 +7531,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{E} is an rvalue and -@@ -1734,7 +1727,6 @@ manipulating ranges. +@@ -1755,7 +1748,6 @@ manipulating ranges. \pnum Many of the types in \ref{range.utility} are specified in terms of the following exposition-only concepts: @@ -7584,7 +7539,7 @@ index c16eba7f..24fc04eb 100644 \begin{codeblock} template concept @\defexposconceptnc{simple-view}@ = // \expos -@@ -5852,7 +5844,6 @@ If \tcode{decltype((F))} does not model +@@ -5886,7 +5878,6 @@ If \tcode{decltype((F))} does not model \tcode{views::take(E, F)} is ill-formed. Otherwise, the expression \tcode{views::take(E, F)} is expression-equivalent to: @@ -7592,7 +7547,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{T} is a specialization -@@ -5873,7 +5864,6 @@ then +@@ -5907,7 +5898,6 @@ then ranges::be\-gin(E) + std::min(ranges::distance(E), F))}, except that \tcode{E} is evaluated only once, where \tcode{U} is a type determined as follows: @@ -7600,7 +7555,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item if \tcode{T} is a specialization of \tcode{span}, then \tcode{U} is \tcode{span}; -@@ -6335,7 +6325,6 @@ If \tcode{decltype((F))} does not model +@@ -6369,7 +6359,6 @@ If \tcode{decltype((F))} does not model \tcode{views::drop(E, F)} is ill-formed. Otherwise, the expression \tcode{views::drop(E, F)} is expression-equivalent to: @@ -7608,7 +7563,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item If \tcode{T} is a specialization of -@@ -7409,7 +7398,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and +@@ -7445,7 +7434,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and \exposid{Base} and \exposid{InnerBase} each model \libconcept{forward_range}. In that case, \tcode{\exposid{iterator}::iterator_category} is defined as follows: @@ -7616,7 +7571,7 @@ index c16eba7f..24fc04eb 100644 \begin{itemize} \item Let \placeholder{OUTERC} denote -@@ -9697,7 +9685,6 @@ appears in the immediate context of a template instantiation. +@@ -9744,7 +9732,6 @@ appears in the immediate context of a template instantiation. \end{note} Otherwise, \tcode{views::counted(E, F)} is expression-equivalent to: @@ -7625,10 +7580,10 @@ index c16eba7f..24fc04eb 100644 \item If \tcode{T} models \libconcept{contiguous_iterator}, diff --git a/source/statements.tex b/source/statements.tex -index 9782eab7..62f29828 100644 +index 6bc31cb2..4426fbf0 100644 --- a/source/statements.tex +++ b/source/statements.tex -@@ -719,7 +719,6 @@ exposition only; and +@@ -730,7 +730,6 @@ exposition only; and \item \exposid{begin-expr} and \exposid{end-expr} are determined as follows: @@ -7636,27 +7591,11 @@ index 9782eab7..62f29828 100644 \begin{itemize} \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are -@@ -850,7 +849,6 @@ The \keyword{continue} statement - causes control to pass to the loop-continuation portion of the - smallest such enclosing statement, that is, to the end - of the loop. More precisely, in each of the statements -- - \begin{minipage}{.30\hsize} - \begin{codeblock} - while (foo) { -@@ -881,7 +879,6 @@ for (;;) { - } - \end{codeblock} - \end{minipage} -- - a \keyword{continue} not contained in an enclosed iteration statement is - equivalent to \tcode{goto} \exposid{contin}. - diff --git a/source/support.tex b/source/support.tex -index ff85b31b..b67bffbb 100644 +index eeac4a21..e360471d 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -2450,7 +2450,6 @@ This requirement is binding on any replacement versions of these functions. +@@ -2459,7 +2459,6 @@ This requirement is binding on any replacement versions of these functions. \pnum \default @@ -7664,7 +7603,7 @@ index ff85b31b..b67bffbb 100644 \begin{itemize} \item Executes a loop: -@@ -2929,7 +2928,6 @@ Intentionally performs no other action. +@@ -2938,7 +2937,6 @@ Intentionally performs no other action. \pnum \begin{example} This can be useful for constructing an object at a known address: @@ -7672,7 +7611,7 @@ index ff85b31b..b67bffbb 100644 \begin{codeblock} void* place = operator new(sizeof(Something)); Something* p = new (place) Something(); -@@ -4821,7 +4819,6 @@ are collectively termed the \defn{comparison category types}. +@@ -4867,7 +4865,6 @@ are collectively termed the \defn{comparison category types}. Each is specified in terms of an exposition-only data member named \tcode{value} whose value typically corresponds to that of an enumerator from one of the following exposition-only enumerations: @@ -7680,7 +7619,7 @@ index ff85b31b..b67bffbb 100644 \begin{codeblock} enum class @\placeholdernc{ord}@ { @\placeholdernc{equal}@ = 0, @\placeholdernc{equivalent}@ = @\placeholdernc{equal}@, @\placeholdernc{less}@ = -1, @\placeholdernc{greater}@ = 1 }; // \expos enum class @\placeholdernc{ncmp}@ { @\placeholdernc{unordered}@ = -127 }; // \expos -@@ -5731,7 +5728,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and +@@ -5816,7 +5813,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and denotes a type\iref{temp.deduct}, then \tcode{coroutine_traits} has the following publicly accessible member: @@ -7689,10 +7628,10 @@ index ff85b31b..b67bffbb 100644 using promise_type = typename R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index cb2c8a8e..a4582e22 100644 +index c17177bc..fc802e62 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -233,7 +233,6 @@ in some translation unit; no diagnostic is required. +@@ -235,7 +235,6 @@ in some translation unit; no diagnostic is required. The syntax for \grammarterm{template-parameter}{s} is: @@ -7700,7 +7639,7 @@ index cb2c8a8e..a4582e22 100644 \begin{bnf} \nontermdef{template-parameter}\br type-parameter\br -@@ -1525,7 +1524,6 @@ for function templates}{temp.func.order}. +@@ -1569,7 +1568,6 @@ for function templates}{temp.func.order}. Given an invented class template \tcode{X} with the \grammarterm{template-head} of \tcode{A} (including default arguments and \grammarterm{requires-clause}, if any): @@ -7708,7 +7647,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item Each of the two function templates has the same template parameters -@@ -1923,7 +1921,6 @@ or templated function declaration\iref{dcl.fct} +@@ -1966,7 +1964,6 @@ or templated function declaration\iref{dcl.fct} can be constrained by the use of a \grammarterm{requires-clause}. This allows the specification of constraints for that declaration as an expression: @@ -7716,7 +7655,7 @@ index cb2c8a8e..a4582e22 100644 \begin{bnf} \nontermdef{constraint-expression}\br logical-or-expression -@@ -1939,7 +1936,6 @@ that are used to constrain the declaration. +@@ -1982,7 +1979,6 @@ that are used to constrain the declaration. \pnum \indextext{constraint!associated|see{associated constraints}}% A declaration's \defn{associated constraints} are defined as follows: @@ -7724,7 +7663,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item If there are no introduced \grammarterm{constraint-expression}{s}, the declaration has no associated constraints. -@@ -2722,7 +2718,6 @@ public: +@@ -2772,7 +2768,6 @@ public: declares three member functions of a class template. The subscript function can be defined like this: @@ -7732,7 +7671,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template T& Array::operator[](int i) { if (i<0 || sz<=i) error("Array: range error"); -@@ -3111,7 +3106,6 @@ produces zero or more instantiations of the pattern in a list (described below). +@@ -3164,7 +3159,6 @@ produces zero or more instantiations of the pattern in a list (described below). The form of the pattern depends on the context in which the expansion occurs. Pack expansions can occur in the following contexts: @@ -7740,7 +7679,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item In a function parameter pack\iref{dcl.fct}; the pattern is the \grammarterm{parameter-declaration} without the ellipsis. -@@ -3713,7 +3707,6 @@ All other constant template arguments are specialized. +@@ -3768,7 +3762,6 @@ All other constant template arguments are specialized. \pnum Within the argument list of a partial specialization, the following restrictions apply: @@ -7748,7 +7687,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item The type of a template parameter corresponding to a specialized constant template -@@ -3727,7 +3720,6 @@ template< int X, int (*array_ptr)[X] > class A {}; +@@ -3782,7 +3775,6 @@ template< int X, int (*array_ptr)[X] > class A {}; int array[5]; template< int X > class A { }; // error \end{codeblock} @@ -7756,7 +7695,7 @@ index cb2c8a8e..a4582e22 100644 \end{example} \item The partial specialization shall be more specialized than the primary -@@ -3853,7 +3845,6 @@ the first is \defn{more specialized} than the second if, given the following +@@ -3908,7 +3900,6 @@ the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more specialized than the second according to the \link{ordering rules for function templates}{temp.func.order}: @@ -7764,7 +7703,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item Each of the two -@@ -4005,7 +3996,6 @@ A::B abci; // uses \#1 +@@ -4060,7 +4051,6 @@ A::B abci; // uses \#1 A function template defines an unbounded set of related functions. \begin{example} A family of sort functions can be declared like this: @@ -7772,7 +7711,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template class Array { }; template void sort(Array&); -@@ -4060,7 +4050,6 @@ void h(int* p) { +@@ -4115,7 +4105,6 @@ void h(int* p) { } \end{codeblock} \end{minipage} @@ -7780,7 +7719,7 @@ index cb2c8a8e..a4582e22 100644 \end{example} \pnum -@@ -4246,7 +4235,6 @@ to guarantee that functionally equivalent declarations will be treated +@@ -4301,7 +4290,6 @@ to guarantee that functionally equivalent declarations will be treated as distinct. For example, the last two declarations are functionally equivalent and would cause a program to be ill-formed: @@ -7788,7 +7727,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} // guaranteed to be the same template void f(A, A); -@@ -4339,7 +4327,6 @@ then the order of the function parameters in its transformed template +@@ -4394,7 +4382,6 @@ then the order of the function parameters in its transformed template is reversed. For a function template $M$ with cv-qualifiers \cv{} that is a member of a class $A$: @@ -7796,7 +7735,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item The type $X(M)$ is ``rvalue reference to \cv{}~$A$'' -@@ -4584,7 +4571,6 @@ template class TT> +@@ -4650,7 +4637,6 @@ template class TT> void g(TT>); g(v); // OK, \tcode{TT} = \tcode{vector} \end{codeblock} @@ -7804,7 +7743,7 @@ index cb2c8a8e..a4582e22 100644 \end{example} \pnum -@@ -5434,7 +5420,6 @@ of a class that is the current instantiation. +@@ -5516,7 +5502,6 @@ of a class that is the current instantiation. \pnum A qualified name\iref{basic.lookup.qual} is dependent if @@ -7812,7 +7751,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item it is a \grammarterm{conversion-function-id} -@@ -5671,7 +5656,6 @@ specified by the +@@ -5765,7 +5750,6 @@ specified by the or \grammarterm{new-type-id} is dependent, even if any subexpression is type-dependent: @@ -7820,7 +7759,7 @@ index cb2c8a8e..a4582e22 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br simple-type-specifier braced-init-list\br -@@ -5689,7 +5673,6 @@ typename-specifier braced-init-list\br +@@ -5783,7 +5767,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following forms are never type-dependent (because the type of the expression cannot be dependent): @@ -7828,7 +7767,7 @@ index cb2c8a8e..a4582e22 100644 \begin{ncsimplebnf} literal\br \keyword{sizeof} unary-expression\br -@@ -5784,7 +5767,6 @@ Expressions of the following form are value-dependent if the +@@ -5888,7 +5871,6 @@ Expressions of the following form are value-dependent if the is type-dependent or the \grammarterm{type-id} is dependent: @@ -7836,7 +7775,7 @@ index cb2c8a8e..a4582e22 100644 \begin{ncsimplebnf} \keyword{sizeof} unary-expression\br \keyword{sizeof} \terminal{(} type-id \terminal{)}\br -@@ -5812,7 +5794,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} +@@ -5916,7 +5898,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} is value-dependent or any \grammarterm{assignment-expression} in the \grammarterm{braced-init-list} is value-dependent: @@ -7844,7 +7783,7 @@ index cb2c8a8e..a4582e22 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br typename-specifier \terminal{(} \opt{expression-list} \terminal{)}\br -@@ -5827,7 +5808,6 @@ typename-specifier braced-init-list\br +@@ -5931,7 +5912,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following form are value-dependent: @@ -7852,7 +7791,7 @@ index cb2c8a8e..a4582e22 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -6724,7 +6704,6 @@ template. +@@ -6935,7 +6915,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -7860,7 +7799,7 @@ index cb2c8a8e..a4582e22 100644 \begin{bnf} \nontermdef{explicit-instantiation}\br \opt{\keyword{extern}} \keyword{template} declaration -@@ -7199,7 +7178,6 @@ otherwise, it is a declaration. +@@ -7410,7 +7389,6 @@ otherwise, it is a declaration. The definition of a static data member of a template for which default-initialization is desired can use functional cast notation\iref{expr.type.conv}: @@ -7868,7 +7807,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template<> X Q::x; // declaration template<> X Q::x (); // error: declares a function -@@ -7458,7 +7436,6 @@ An empty template argument list can be used to indicate that a given +@@ -7669,7 +7647,6 @@ An empty template argument list can be used to indicate that a given use refers to a specialization of a function template even when a non-template function\iref{dcl.fct} is visible that would otherwise be used. For example: @@ -7876,7 +7815,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template int f(T); // \#1 int f(int); // \#2 -@@ -8039,7 +8016,6 @@ void h(int x, float& y) { +@@ -8251,7 +8228,6 @@ void h(int x, float& y) { If \tcode{P} is not a reference type: @@ -7884,7 +7823,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item If -@@ -8134,7 +8110,6 @@ the type +@@ -8346,7 +8322,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -7892,7 +7831,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item If the original -@@ -8322,7 +8297,6 @@ of \tcode{P} for type deduction and for any further references to or transformat +@@ -8536,7 +8511,6 @@ of \tcode{P} for type deduction and for any further references to or transformat If \tcode{A} is not a reference type: @@ -7900,7 +7839,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item If -@@ -8368,7 +8342,6 @@ values that will make the deduced +@@ -8582,7 +8556,6 @@ values that will make the deduced identical to \tcode{A}. However, certain attributes of \tcode{A} may be ignored: @@ -7908,7 +7847,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item If the original \tcode{A} is a reference type, -@@ -8413,7 +8386,6 @@ the argument template and template-1 as the parameter template. +@@ -8627,7 +8600,6 @@ the argument template and template-1 as the parameter template. \pnum The types used to determine the ordering depend on the context in which the partial ordering is done: @@ -7916,7 +7855,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item In the context of a function call, the types used are those function parameter types -@@ -8441,7 +8413,6 @@ and +@@ -8655,7 +8627,6 @@ and \pnum Before the partial ordering is done, certain transformations are performed on the types used for partial ordering: @@ -7924,7 +7863,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item If -@@ -8647,7 +8618,6 @@ A given type +@@ -8861,7 +8832,6 @@ A given type \tcode{P} can be composed from a number of other types, templates, and constant template argument values: @@ -7932,7 +7871,7 @@ index cb2c8a8e..a4582e22 100644 \begin{itemize} \item A function type includes the types of each of the function parameters, -@@ -8689,7 +8659,6 @@ need not have the same form. +@@ -8903,7 +8873,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -7940,7 +7879,7 @@ index cb2c8a8e..a4582e22 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -8780,7 +8749,6 @@ is deduced. +@@ -8998,7 +8967,6 @@ is deduced. \begin{example} Here is an example in which different parameter/argument pairs produce inconsistent template argument deductions: @@ -7948,7 +7887,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template void f(T x, T y) { @\commentellip@ } struct A { @\commentellip@ }; -@@ -8797,7 +8765,6 @@ Here is an example where two template arguments are deduced from a +@@ -9015,7 +8983,6 @@ Here is an example where two template arguments are deduced from a single function parameter/argument pair. This can lead to conflicts that cause type deduction to fail: @@ -7956,7 +7895,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -8814,7 +8781,6 @@ void r() { +@@ -9032,7 +8999,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -7964,7 +7903,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -8833,7 +8799,6 @@ void h() { +@@ -9051,7 +9017,6 @@ void h() { Here is an example where a qualification conversion applies between the argument type on the function call and the deduced template argument type: @@ -7972,7 +7911,7 @@ index cb2c8a8e..a4582e22 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -8844,7 +8809,6 @@ void s() { +@@ -9062,7 +9027,6 @@ void s() { Here is an example where the template argument is used to instantiate a derived class type of the corresponding function parameter type: @@ -7981,10 +7920,10 @@ index cb2c8a8e..a4582e22 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 8a388c9f..8c1b16d3 100644 +index 4b2c5273..f78b53b1 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -6633,7 +6633,6 @@ and visible to other threads. +@@ -7372,7 +7372,6 @@ and visible to other threads. \pnum The expression \tcode{m.lock()} is well-formed and has the following semantics: @@ -7992,7 +7931,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -6676,7 +6675,6 @@ that a deadlock would occur. +@@ -7415,7 +7414,6 @@ that a deadlock would occur. \pnum The expression \tcode{m.try_lock()} is well-formed and has the following semantics: @@ -8000,7 +7939,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -6722,7 +6720,6 @@ Nothing. +@@ -7461,7 +7459,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -8008,7 +7947,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -6877,7 +6874,6 @@ requirements\iref{thread.req.lockable.timed}. +@@ -7616,7 +7613,6 @@ requirements\iref{thread.req.lockable.timed}. \pnum The expression \tcode{m.try_lock_for(rel_time)} is well-formed and has the following semantics: @@ -8016,7 +7955,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -6919,7 +6915,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -7658,7 +7654,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_until(abs_time)} is well-formed and has the following semantics: @@ -8024,7 +7963,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -7106,7 +7101,6 @@ shared lock. +@@ -7845,7 +7840,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -8032,7 +7971,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -7143,7 +7137,6 @@ The calling thread has a shared lock on the mutex. +@@ -7882,7 +7876,6 @@ The calling thread has a shared lock on the mutex. \pnum The expression \tcode{m.unlock_shared()} is well-formed and has the following semantics: @@ -8040,7 +7979,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -7168,7 +7161,6 @@ Nothing. +@@ -7907,7 +7900,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -8048,7 +7987,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -7271,7 +7263,6 @@ requirements\iref{thread.req.lockable.shared.timed}. +@@ -8010,7 +8002,6 @@ requirements\iref{thread.req.lockable.shared.timed}. \pnum The expression \tcode{m.try_lock_shared_for(rel_time)} is well-formed and has the following semantics: @@ -8056,7 +7995,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -7316,7 +7307,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -8055,7 +8046,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_shared_until(abs_time)} is well-formed and has the following semantics: @@ -8064,7 +8003,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemdescr} \pnum \expects -@@ -9454,7 +9444,6 @@ template +@@ -10193,7 +10183,6 @@ template \begin{itemdescr} \pnum \effects @@ -8072,7 +8011,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -10865,7 +10854,6 @@ shared state as \tcode{*this}. +@@ -11587,7 +11576,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -8080,7 +8019,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemize} \item \tcode{future_already_retrieved} if \tcode{get_future} has already been called on a \tcode{promise} with the same shared state as \tcode{*this}. -@@ -10928,7 +10916,6 @@ already has a stored value or exception. +@@ -11650,7 +11638,6 @@ already has a stored value or exception. \pnum \errors @@ -8088,7 +8027,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -11268,7 +11255,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -11990,7 +11977,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -8096,7 +8035,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -11612,7 +11598,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -12334,7 +12320,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8104,7 +8043,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -11647,7 +11632,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -12369,7 +12354,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8112,7 +8051,7 @@ index 8a388c9f..8c1b16d3 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -11703,7 +11687,6 @@ The further behavior +@@ -12425,7 +12409,6 @@ The further behavior of the second function depends on the \tcode{policy} argument as follows (if more than one of these conditions applies, the implementation may choose any of the corresponding policies): @@ -8121,7 +8060,7 @@ index 8a388c9f..8c1b16d3 100644 \item If \tcode{launch::async} is set in \tcode{policy}, calls diff --git a/source/time.tex b/source/time.tex -index bdbef27b..39598098 100644 +index c37f5bba..f52ab7f4 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2074,7 +2074,6 @@ return os << s.str(); @@ -8271,7 +8210,7 @@ index bdbef27b..39598098 100644 \fmtnontermdef{chrono-format-spec}\br \opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs} diff --git a/source/utilities.tex b/source/utilities.tex -index d72eebe4..171c1b2f 100644 +index faf5d946..b79fc8d3 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -270,7 +270,6 @@ Exchanges values stored in two locations. @@ -8282,7 +8221,7 @@ index d72eebe4..171c1b2f 100644 \begin{codeblock} is_nothrow_move_constructible_v && is_nothrow_move_assignable_v \end{codeblock} -@@ -2220,7 +2219,6 @@ For all $i$, assigns \tcode{std::forward<$\tcode{T}_i$>(get<$i$>(u))} to +@@ -2221,7 +2220,6 @@ For all $i$, assigns \tcode{std::forward<$\tcode{T}_i$>(get<$i$>(u))} to \remarks The exception specification is equivalent to the logical \logop{and} of the following expressions: @@ -8290,7 +8229,7 @@ index d72eebe4..171c1b2f 100644 \begin{codeblock} is_nothrow_move_assignable_v<@$\mathtt{T}_i$@> \end{codeblock} -@@ -3166,7 +3164,6 @@ As if by \tcode{x.swap(y)}. +@@ -3159,7 +3157,6 @@ As if by \tcode{x.swap(y)}. \pnum \remarks The exception specification is equivalent to: @@ -8298,7 +8237,7 @@ index d72eebe4..171c1b2f 100644 \begin{codeblock} noexcept(x.swap(y)) \end{codeblock} -@@ -10142,7 +10139,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; +@@ -10699,7 +10696,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8306,7 +8245,7 @@ index d72eebe4..171c1b2f 100644 \begin{itemize} \item If \tcode{I < pos}, the new value is zero; -@@ -10167,7 +10163,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; +@@ -10724,7 +10720,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8314,7 +8253,7 @@ index d72eebe4..171c1b2f 100644 \begin{itemize} \item If \tcode{pos >= N - I}, the new value is zero; -@@ -10893,7 +10888,6 @@ namespace std { +@@ -11450,7 +11445,6 @@ namespace std { If a \Cpp{} program wants to have a by-element addition of two vectors \tcode{a} and \tcode{b} containing \tcode{double} and put the result into \tcode{a}, it can do: @@ -8322,7 +8261,7 @@ index d72eebe4..171c1b2f 100644 \begin{codeblock} transform(a.begin(), a.end(), b.begin(), a.begin(), plus()); \end{codeblock} -@@ -14373,7 +14367,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; +@@ -14930,7 +14924,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; The header provides partial specializations of \tcode{function_ref} for each combination of the possible replacements of the placeholders \cv{} and \placeholder{noex} where: @@ -8334,10 +8273,10 @@ index d72eebe4..171c1b2f 100644 2.43.0 -From 28f9650c9f22d94dd88610aec105f0d73e5fd8e1 Mon Sep 17 00:00:00 2001 +From 143d20fb7c38beb48e10cdfbdc6dbcbf526265ce Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 -Subject: [PATCH 6/9] Use monospace font for code in figures. +Subject: [PATCH 06/10] Use monospace font for code in figures. --- source/assets/figdag.dot | 8 ++++---- @@ -8481,17 +8420,17 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From ce6fc20d159a2a02d68ce6dbeaf186db5697c2d5 Mon Sep 17 00:00:00 2001 +From fca0248016250ead1b0ce7a814acea409c6e7d17 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 -Subject: [PATCH 7/9] [uaxid] Mark code that's not to be highlighted. +Subject: [PATCH 07/10] [uaxid] Mark code that's not to be highlighted. --- source/uax31.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/uax31.tex b/source/uax31.tex -index 641ab63b..db586c1f 100644 +index 79f0f7d0..80b2d666 100644 --- a/source/uax31.tex +++ b/source/uax31.tex @@ -33,8 +33,8 @@ where \tcode{} has the XID_Start property, @@ -8509,31 +8448,31 @@ index 641ab63b..db586c1f 100644 2.43.0 -From 3c4fcf9e927ba196d3104396ecea1c36e30469b3 Mon Sep 17 00:00:00 2001 +From 6cecacff753d0b1b1c00c828390b1367a5529a3f Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 -Subject: [PATCH 8/9] Use cxxdraft-htmlgen macros more. +Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. --- - source/algorithms.tex | 194 +++++++++++++------------- + source/algorithms.tex | 180 +++++++++++++------------- source/concepts.tex | 4 +- source/diagnostics.tex | 18 ++- source/exec.tex | 18 +-- source/future.tex | 10 +- source/iostreams.tex | 28 ++-- source/lib-intro.tex | 28 ++-- - source/memory.tex | 46 +++--- - source/meta.tex | 310 ++++++++++++++++++++--------------------- - source/numerics.tex | 38 ++--- + source/memory.tex | 46 +++---- + source/meta.tex | 282 ++++++++++++++++++++--------------------- + source/numerics.tex | 38 +++--- source/strings.tex | 10 +- source/support.tex | 14 +- - source/threads.tex | 112 +++++++-------- - source/time.tex | 66 ++++----- - source/utilities.tex | 138 +++++++++--------- - 15 files changed, 513 insertions(+), 521 deletions(-) + source/threads.tex | 110 ++++++++-------- + source/time.tex | 66 +++++----- + source/utilities.tex | 136 ++++++++++---------- + 15 files changed, 490 insertions(+), 498 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 71678537..9b6f07ea 100644 +index 1e39d96e..af6bebcd 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -8580,7 +8519,7 @@ index 71678537..9b6f07ea 100644 if it is required to be a mutable iterator, or model \libconcept{random_access_iterator}\iref{iterator.concept.random.access} otherwise. \end{itemize} -@@ -3611,10 +3611,10 @@ template +@@ -4618,10 +4618,10 @@ template \pnum \expects \tcode{Function} meets @@ -8593,7 +8532,7 @@ index 71678537..9b6f07ea 100644 \end{note} \pnum -@@ -3651,7 +3651,7 @@ template +@@ -4658,7 +4658,7 @@ template \begin{itemdescr} \pnum \expects @@ -8602,7 +8541,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -3737,10 +3737,10 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4792,10 +4792,10 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8615,7 +8554,7 @@ index 71678537..9b6f07ea 100644 \end{note} \pnum -@@ -3777,7 +3777,7 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4832,7 +4832,7 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8624,7 +8563,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -4443,7 +4443,7 @@ If +@@ -5684,7 +5684,7 @@ If \item the types of \tcode{first1}, \tcode{last1}, \tcode{first2}, and \tcode{last2} meet the @@ -8633,7 +8572,7 @@ index 71678537..9b6f07ea 100644 and \tcode{last1 - first1 != last2 - first2} for the overloads in namespace \tcode{std}; \item -@@ -4767,7 +4767,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} +@@ -6028,7 +6028,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} \pnum \remarks @@ -8642,16 +8581,7 @@ index 71678537..9b6f07ea 100644 \end{itemdescr} \rSec2[alg.starts.with]{Starts with} -@@ -5182,7 +5182,7 @@ do not overlap. - For the overload with an \tcode{ExecutionPolicy}, - there might be a performance cost - if \tcode{iterator_traits::value_type} --is not \oldconcept{\-Move\-Constructible} (\tref{cpp17.moveconstructible}). -+is not \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}). - \end{note} - - \pnum -@@ -5993,7 +5993,7 @@ Let $E$ be +@@ -7610,7 +7610,7 @@ Let $E$ be \expects For the algorithms in namespace \tcode{std}, the type of \tcode{*first} @@ -8660,16 +8590,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6103,7 +6103,7 @@ do not overlap. - For the overloads with an \tcode{ExecutionPolicy}, - there might be a performance cost - if \tcode{iterator_traits::value_type} does not meet --the \oldconcept{\-Move\-Constructible} (\tref{cpp17.moveconstructible}) requirements. -+the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements. - \end{note} - - \pnum -@@ -6176,7 +6176,7 @@ let $E$ be +@@ -7859,7 +7859,7 @@ let $E$ be For the overloads in namespace \tcode{std}, \tcode{pred} is an equivalence relation and the type of \tcode{*first} meets @@ -8678,7 +8599,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6279,18 +6279,18 @@ let $E$ be +@@ -7989,10 +7989,10 @@ Let: \libconcept{forward_iterator}\iref{iterator.concept.forward}, then there are no additional requirements for \tcode{T}. Otherwise, if \tcode{OutputIterator} meets @@ -8689,20 +8610,9 @@ index 71678537..9b6f07ea 100644 - the \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. + the \oldconceptref{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. Otherwise, \tcode{T} meets both -- the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and -- \oldconcept{CopyAssignable} requirements. -+ the \oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}) and -+ \oldconceptref{CopyAssignable} requirements. - \begin{note} - For the overloads with an \tcode{ExecutionPolicy}, - there might be a performance cost - if the value type of \tcode{ForwardIterator1} does not meet both the -- \oldconcept{CopyConstructible} and \oldconcept{CopyAssignable} requirements. -+ \oldconceptref{CopyConstructible} and \oldconceptref{CopyAssignable} requirements. - \end{note} - \end{itemize} - \end{itemize} -@@ -6338,7 +6338,7 @@ template<@\libconcept{bidirectional_range}@ R> + the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and + \oldconcept{CopyAssignable} requirements. +@@ -8071,7 +8071,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8711,7 +8621,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6430,10 +6430,10 @@ template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S> +@@ -8203,10 +8203,10 @@ template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S> \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -8725,7 +8635,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6574,13 +6574,13 @@ For the overload in namespace \tcode{std}: +@@ -8426,13 +8426,13 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{PopulationIterator} meets @@ -8742,7 +8652,7 @@ index 71678537..9b6f07ea 100644 unless \tcode{Pop\-ulat\-ion\-Iter\-ator} models \libconcept{forward_iterator}\iref{iterator.concept.forward}. \item -@@ -6648,7 +6648,7 @@ For the overload in namespace \tcode{std}: +@@ -8500,7 +8500,7 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{RandomAccessIterator} meets @@ -8751,7 +8661,7 @@ index 71678537..9b6f07ea 100644 \item The type \tcode{remove_reference_t} meets the uniform random bit generator\iref{rand.req.urng} requirements. -@@ -6700,7 +6700,7 @@ template<@\libconcept{forward_range}@ R> +@@ -8561,7 +8561,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8760,7 +8670,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6754,10 +6754,10 @@ template<@\libconcept{forward_range}@ R> +@@ -8625,10 +8625,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8774,16 +8684,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6771,7 +6771,7 @@ from \tcode{i = (last - first) - n - 1} and proceeding to \tcode{i = 0} if - \item - for the overload in namespace \tcode{std} - without an \tcode{ExecutionPolicy} template parameter, --\tcode{Forward\-Iterator} meets the \oldconcept{BidirectionalIterator} requirements, -+\tcode{Forward\-Iterator} meets the \oldconceptref{BidirectionalIterator} requirements, - \item - for the overloads in namespace \tcode{ranges}, - \tcode{I} models \libconcept{bidirectional_iterator}. -@@ -6927,10 +6927,10 @@ for the overloads with no parameters by those names. +@@ -8807,10 +8807,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8797,7 +8698,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -6985,10 +6985,10 @@ for the overloads with no parameters by those names. +@@ -8875,10 +8875,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8811,7 +8712,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -7055,10 +7055,10 @@ for the overloads with no parameters by those names. +@@ -8949,10 +8949,10 @@ for the overloads with no parameters by those names. \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8825,7 +8726,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -7163,10 +7163,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. +@@ -9095,10 +9095,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8839,7 +8740,7 @@ index 71678537..9b6f07ea 100644 \pnum For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and -@@ -7368,10 +7368,10 @@ for the overloads with no parameters by those names. +@@ -9333,10 +9333,10 @@ for the overloads with no parameters by those names. \range{first}{nth} and \range{nth}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8853,7 +8754,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -7719,7 +7719,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9716,7 +9716,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -8862,8 +8763,8 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -7746,7 +7746,7 @@ Let $N = \tcode{last - first}$: - For the overload with no \tcode{ExecutionPolicy}, +@@ -9743,7 +9743,7 @@ Let $N = \tcode{last - first}$: + For the non-parallel algorithm overloads, exactly $N$ applications of the predicate and projection. At most $N / 2$ swaps if the type of \tcode{first} meets - the \oldconcept{BidirectionalIterator} requirements @@ -8871,7 +8772,7 @@ index 71678537..9b6f07ea 100644 for the overloads in namespace \tcode{std} or models \libconcept{bidirectional_iterator} for the overloads in namespace \tcode{ranges}, -@@ -7788,10 +7788,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9796,10 +9796,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8885,16 +8786,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -7874,7 +7874,7 @@ The input range and output ranges do not overlap. - \begin{note} - For the overload with an \tcode{ExecutionPolicy}, - there might be a performance cost if \tcode{first}'s value type --does not meet the \oldconcept{CopyConstructible} requirements. -+does not meet the \oldconceptref{CopyConstructible} requirements. - \end{note} - - \pnum -@@ -8079,10 +8079,10 @@ for the overloads with no parameters by those names. +@@ -10196,10 +10196,10 @@ for the overloads with no parameters by those names. sorted with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8908,7 +8800,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -8648,10 +8648,10 @@ The range \range{first}{last - 1} +@@ -10943,10 +10943,10 @@ The range \range{first}{last - 1} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8922,7 +8814,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -8701,10 +8701,10 @@ The range \range{first}{last} +@@ -10996,10 +10996,10 @@ The range \range{first}{last} is a valid non-empty heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8936,7 +8828,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -8757,10 +8757,10 @@ for the overloads with no parameters by those names. +@@ -11052,10 +11052,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8950,7 +8842,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -8810,10 +8810,10 @@ The range \range{first}{last} is +@@ -11105,10 +11105,10 @@ The range \range{first}{last} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8964,7 +8856,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -8972,7 +8972,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8984,7 +8876,7 @@ index 71678537..9b6f07ea 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9050,7 +9050,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -9004,7 +8896,7 @@ index 71678537..9b6f07ea 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9130,7 +9130,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -9024,7 +8916,7 @@ index 71678537..9b6f07ea 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9364,7 +9364,7 @@ for the overloads with no parameter \tcode{proj}. +@@ -11732,7 +11732,7 @@ for the overloads with no parameter \tcode{proj}. \expects \tcode{bool(invoke(comp, invoke(proj, hi), invoke(proj, lo)))} is \tcode{false}. For the first form, type \tcode{T} @@ -9033,7 +8925,7 @@ index 71678537..9b6f07ea 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -9553,7 +9553,7 @@ for overloads with no parameters by those names. +@@ -11935,7 +11935,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9042,7 +8934,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -9612,7 +9612,7 @@ for overloads with no parameters by those names. +@@ -11994,7 +11994,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -9051,7 +8943,7 @@ index 71678537..9b6f07ea 100644 \pnum \effects -@@ -9931,8 +9931,8 @@ template +@@ -12313,8 +12313,8 @@ template \pnum \expects \tcode{T} meets @@ -9062,7 +8954,7 @@ index 71678537..9b6f07ea 100644 In the range \crange{first}{last}, \tcode{binary_op} neither modifies elements nor invalidates iterators or subranges. -@@ -10054,7 +10054,7 @@ are convertible to \tcode{T}. +@@ -12436,7 +12436,7 @@ are convertible to \tcode{T}. \expects \begin{itemize} \item @@ -9071,7 +8963,7 @@ index 71678537..9b6f07ea 100644 \item \tcode{binary_op} neither invalidates iterators or subranges, nor modifies elements in the range \crange{first}{last}. -@@ -10098,8 +10098,8 @@ template}. +@@ -13175,7 +13175,7 @@ that denotes an object of type \tcode{minus<>}. \begin{itemize} \item For the overloads with no \tcode{ExecutionPolicy}, @@ -9174,7 +9066,7 @@ index 0bfd8612..b166e3a9 100644 invocation of the destructor does not actually throw. \end{note} diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index b4b70046..b734f13a 100644 +index df926181..ffcb4e9f 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -758,9 +758,9 @@ namespace std { @@ -9240,7 +9132,7 @@ index b4b70046..b734f13a 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 251a81ab..d141246e 100644 +index c8c912f6..58cf02c5 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9279,10 +9171,10 @@ index 251a81ab..d141246e 100644 \\ \end{floattable} diff --git a/source/future.tex b/source/future.tex -index ddaaf96d..fd54144f 100644 +index 04969113..8c17e33e 100644 --- a/source/future.tex +++ b/source/future.tex -@@ -344,7 +344,7 @@ template struct is_pod; +@@ -359,7 +359,7 @@ template struct is_pod; \pnum \remarks @@ -9291,7 +9183,7 @@ index ddaaf96d..fd54144f 100644 with a base characteristic of \tcode{true_type} if \tcode{T} is a POD type, and \tcode{false_type} otherwise. -@@ -528,7 +528,7 @@ Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T} +@@ -543,7 +543,7 @@ Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T} If the expression \tcode{TS::value} is well-formed when treated as an \deflink{unevaluated operand}{expr.context}, then specializations of each of the two templates meet @@ -9300,7 +9192,7 @@ index ddaaf96d..fd54144f 100644 \tcode{integral_constant}. Otherwise, they have no member \tcode{value}. -@@ -556,7 +556,7 @@ template struct tuple_element; +@@ -571,7 +571,7 @@ template struct tuple_element; Let \tcode{TE} denote \tcode{tuple_element_t} of the cv-unqualified type \tcode{T}. Then specializations of each of the two templates meet @@ -9309,7 +9201,7 @@ index ddaaf96d..fd54144f 100644 with a member typedef \tcode{type} that names the following type: \begin{itemize} \item for the first specialization, \tcode{add_volatile_t}, and -@@ -596,7 +596,7 @@ template struct variant_size; +@@ -611,7 +611,7 @@ template struct variant_size; Let \tcode{VS} denote \tcode{variant_size} of the cv-unqualified type \tcode{T}. Then specializations of each of the two templates meet @@ -9318,7 +9210,7 @@ index ddaaf96d..fd54144f 100644 with a base characteristic of \tcode{integral_constant}. \end{itemdescr} -@@ -610,7 +610,7 @@ template struct variant_alternative; +@@ -625,7 +625,7 @@ template struct variant_alternative; Let \tcode{VA} denote \tcode{variant_alternative} of the cv-unqualified type \tcode{T}. Then specializations of each of the two templates meet @@ -9328,10 +9220,10 @@ index ddaaf96d..fd54144f 100644 \begin{itemize} \item for the first specialization, \tcode{add_volatile_t}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index f01c8ec2..e15caea7 100644 +index 2bcd6f9a..f5f73c3b 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -1687,10 +1687,10 @@ An \tcode{fpos} type specifies file position information. +@@ -1681,10 +1681,10 @@ An \tcode{fpos} type specifies file position information. It holds a state object whose type is equal to the template parameter \tcode{stateT}. Type \tcode{stateT} shall meet @@ -9346,7 +9238,7 @@ index f01c8ec2..e15caea7 100644 If \tcode{is_trivially_copy_constructible_v} is \tcode{true}, then \tcode{fpos} has a trivial copy constructor. If \tcode{is_trivially_copy_assignable_v} is \tcode{true}, -@@ -1698,11 +1698,11 @@ then \tcode{fpos} has a trivial copy assignment operator. +@@ -1692,11 +1692,11 @@ then \tcode{fpos} has a trivial copy assignment operator. If \tcode{is_trivially_destructible_v} is \tcode{true}, then \tcode{fpos} has a trivial destructor. All specializations of \tcode{fpos} meet @@ -9363,7 +9255,7 @@ index f01c8ec2..e15caea7 100644 In addition, the expressions shown in \tref{fpos.operations} are valid and have the indicated semantics. In that table, -@@ -12954,7 +12954,7 @@ namespace std { +@@ -12957,7 +12957,7 @@ namespace std { \pnum \tcode{Allocator} shall meet @@ -9372,7 +9264,7 @@ index f01c8ec2..e15caea7 100644 \pnum \begin{example} -@@ -13247,7 +13247,7 @@ unless \tcode{EcharT} is one of the encoded character types. +@@ -13250,7 +13250,7 @@ unless \tcode{EcharT} is one of the encoded character types. \pnum Template parameters named \tcode{InputIterator} shall meet the @@ -9381,7 +9273,7 @@ index f01c8ec2..e15caea7 100644 have a value type that is one of the encoded character types. \pnum -@@ -13261,7 +13261,7 @@ they are not included as permitted types. +@@ -13264,7 +13264,7 @@ they are not included as permitted types. \pnum Template parameters named \tcode{Allocator} shall meet @@ -9390,7 +9282,7 @@ index f01c8ec2..e15caea7 100644 \rSec2[fs.filesystem.syn]{Header \tcode{} synopsis} -@@ -14074,7 +14074,7 @@ shall be one of: +@@ -14082,7 +14082,7 @@ shall be one of: \item \tcode{basic_string_view}. A function argument \tcode{const Source\&} \tcode{source} shall have an effective range \range{source.begin()}{source.end()}. @@ -9399,7 +9291,7 @@ index f01c8ec2..e15caea7 100644 The value type shall be an encoded character type. A function argument \tcode{const Source\&} \tcode{source} shall have an effective range \range{source}{end} where \tcode{end} is the first -@@ -16554,7 +16554,7 @@ namespace std::filesystem { +@@ -16587,7 +16587,7 @@ namespace std::filesystem { \pnum \tcode{directory_iterator} meets the @@ -9409,10 +9301,10 @@ index f01c8ec2..e15caea7 100644 \pnum If an iterator of type \tcode{directory_iterator} reports an error or diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 6effcd33..db29b7c9 100644 +index 2b281173..d159fc9d 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex -@@ -1854,7 +1854,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1862,7 +1862,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9421,7 +9313,7 @@ index 6effcd33..db29b7c9 100644 {p{1in}p{4.15in}} \topline \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep -@@ -1881,7 +1881,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1889,7 +1889,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9430,7 +9322,7 @@ index 6effcd33..db29b7c9 100644 {p{1in}p{1in}p{1in}p{1.9in}} \topline \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Return value} & \hdstyle{Post-condition} \\ \capsep -@@ -1895,7 +1895,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1903,7 +1903,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. \tcode{u.\~T()} & All resources owned by \tcode{u} are reclaimed, no exception is propagated. \\ \rowsep \multicolumn{2}{|l|}{ \begin{tailnote} @@ -9439,7 +9331,7 @@ index 6effcd33..db29b7c9 100644 \end{tailnote} } \\ \end{oldconcepttable} -@@ -1974,7 +1974,7 @@ void value_swap(T&& t, U&& u) { +@@ -1982,7 +1982,7 @@ void value_swap(T&& t, U&& u) { // for rvalues and lvalues } @@ -9448,7 +9340,7 @@ index 6effcd33..db29b7c9 100644 template void lv_swap(T& t1, T& t2) { using std::swap; -@@ -2011,9 +2011,9 @@ int main() { +@@ -2019,9 +2019,9 @@ int main() { A \oldconcept{NullablePointer} type is a pointer-like type that supports null values. A type \tcode{P} meets the \oldconcept{\-Nullable\-Pointer} requirements if \begin{itemize} @@ -9461,7 +9353,7 @@ index 6effcd33..db29b7c9 100644 \item the expressions shown in \tref{cpp17.nullablepointer} are valid and have the indicated semantics, and -@@ -2089,8 +2089,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. +@@ -2097,8 +2097,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. A type \tcode{H} meets the \defnoldconcept{Hash} requirements if \begin{itemize} \item it is a function object type\iref{function.objects}, @@ -9472,7 +9364,7 @@ index 6effcd33..db29b7c9 100644 \item the expressions shown in \tref{cpp17.hash} are valid and have the indicated semantics. \end{itemize} -@@ -2774,7 +2774,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2782,7 +2782,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be copied when the client container is copy-assigned; if so, \tcode{X} shall meet @@ -9481,7 +9373,7 @@ index 6effcd33..db29b7c9 100644 the copy operation shall not throw exceptions. \pnum -@@ -2796,7 +2796,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2804,7 +2804,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be moved when the client container is move-assigned; if so, \tcode{X} shall meet @@ -9490,7 +9382,7 @@ index 6effcd33..db29b7c9 100644 the move operation shall not throw exceptions. \pnum -@@ -2818,7 +2818,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2826,7 +2826,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be swapped when the client container is swapped; if so, @@ -9499,7 +9391,7 @@ index 6effcd33..db29b7c9 100644 the \tcode{swap} operation shall not throw exceptions. \pnum -@@ -2848,7 +2848,7 @@ Default: \tcode{is_empty::type} +@@ -2856,7 +2856,7 @@ Default: \tcode{is_empty::type} \pnum An allocator type \tcode{X} shall meet the @@ -9508,7 +9400,7 @@ index 6effcd33..db29b7c9 100644 The \tcode{XX::pointer}, \tcode{XX::const_pointer}, \tcode{XX::void_pointer}, and \tcode{XX::const_void_pointer} types shall meet the \oldconcept{Nullable\-Pointer} requirements (\tref{cpp17.nullablepointer}). -@@ -2856,7 +2856,7 @@ No constructor, +@@ -2864,7 +2864,7 @@ No constructor, comparison operator function, copy operation, move operation, or swap operation on these pointer types shall exit via an exception. \tcode{XX::pointer} and \tcode{XX::const_pointer} shall also meet the requirements for @@ -9518,10 +9410,10 @@ index 6effcd33..db29b7c9 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index add15a22..2d81c518 100644 +index 768a50eb..fb24bbe3 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1157,7 +1157,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type +@@ -1273,7 +1273,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type disambiguate constructor and function overloading. Specifically, several types (see \tcode{tuple}~\ref{tuple}) have constructors with \tcode{allocator_arg_t} as the first argument, immediately followed by an argument of a type that meets the @@ -9530,7 +9422,7 @@ index add15a22..2d81c518 100644 \rSec2[allocator.uses]{\tcode{uses_allocator}} -@@ -1172,7 +1172,7 @@ template struct uses_allocator; +@@ -1288,7 +1288,7 @@ template struct uses_allocator; \pnum \remarks Automatically detects whether \tcode{T} has a nested \tcode{allocator_type} that @@ -9539,7 +9431,7 @@ index add15a22..2d81c518 100644 requirements\iref{meta.rqmts}. The implementation shall provide a definition that is derived from \tcode{true_type} if the \grammarterm{qualified-id} \tcode{T::allocator_type} is valid and denotes a type\iref{temp.deduct} and -@@ -2097,8 +2097,8 @@ deleter before such replacement is considered completed. +@@ -2238,8 +2238,8 @@ deleter before such replacement is considered completed. Each object of a type \tcode{U} instantiated from the \tcode{unique_ptr} template specified in \ref{unique.ptr} has the strict ownership semantics, specified above, of a unique pointer. In partial satisfaction of these semantics, each such \tcode{U} @@ -9550,7 +9442,7 @@ index add15a22..2d81c518 100644 The template parameter \tcode{T} of \tcode{unique_ptr} may be an incomplete type. \pnum -@@ -2285,7 +2285,7 @@ pointer as appropriate for that deleter. +@@ -2426,7 +2426,7 @@ pointer as appropriate for that deleter. \pnum If the deleter's type \tcode{D} is not a reference type, \tcode{D} shall meet @@ -9559,7 +9451,7 @@ index add15a22..2d81c518 100644 \pnum If the \grammarterm{qualified-id} \tcode{remove_reference_t::pointer} is valid and denotes a -@@ -2293,7 +2293,7 @@ type\iref{temp.deduct}, then \tcode{unique_ptr::pointer} shall be a synonym for \tcode{remove_reference_t::pointer}. Otherwise \tcode{unique_ptr::pointer} shall be a synonym for \tcode{element_type*}. The type \tcode{unique_ptr::pointer} shall @@ -9568,7 +9460,7 @@ index add15a22..2d81c518 100644 \pnum \begin{example} -@@ -2319,7 +2319,7 @@ constexpr unique_ptr(nullptr_t) noexcept; +@@ -2460,7 +2460,7 @@ constexpr unique_ptr(nullptr_t) noexcept; \pnum \expects @@ -9577,7 +9469,7 @@ index add15a22..2d81c518 100644 and that construction does not throw an exception. \pnum -@@ -2346,7 +2346,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; +@@ -2487,7 +2487,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; \pnum \expects @@ -9586,7 +9478,7 @@ index add15a22..2d81c518 100644 and that construction does not throw an exception. \pnum -@@ -2375,10 +2375,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex +@@ -2516,10 +2516,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex \pnum \expects For the first constructor, if \tcode{D} is not a reference type, @@ -9599,7 +9491,7 @@ index add15a22..2d81c518 100644 such construction does not exit via an exception. \pnum -@@ -2403,8 +2403,8 @@ the second constructor is defined as deleted. +@@ -2544,8 +2544,8 @@ the second constructor is defined as deleted. \begin{example} \begin{codeblock} D d; @@ -9610,7 +9502,7 @@ index add15a22..2d81c518 100644 unique_ptr p3(new int, d); // \tcode{p3} holds a reference to \tcode{d} unique_ptr p4(new int, D()); // error: rvalue deleter object combined // with reference deleter type -@@ -2425,7 +2425,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; +@@ -2566,7 +2566,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, @@ -9619,7 +9511,7 @@ index add15a22..2d81c518 100644 requirements (\tref{cpp17.moveconstructible}). Construction of the deleter from an rvalue of type \tcode{D} does not -@@ -2534,10 +2534,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; +@@ -2675,10 +2675,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, \tcode{D} meets the @@ -9632,7 +9524,7 @@ index add15a22..2d81c518 100644 requirements and assignment of the deleter from an lvalue of type \tcode{D} does not throw an exception. -@@ -3435,8 +3435,8 @@ namespace std { +@@ -3576,8 +3576,8 @@ namespace std { \end{codeblock} \pnum @@ -9643,7 +9535,7 @@ index add15a22..2d81c518 100644 containers. Specializations of \tcode{shared_ptr} shall be contextually convertible to \tcode{bool}, allowing their use in boolean expressions and declarations in conditions. -@@ -3581,7 +3581,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. +@@ -3722,7 +3722,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. The expression \tcode{d(p)} has well-defined behavior and does not throw exceptions. \tcode{A} meets @@ -9652,7 +9544,7 @@ index add15a22..2d81c518 100644 \pnum \effects -@@ -4098,7 +4098,7 @@ template +@@ -4242,7 +4242,7 @@ template \pnum \expects \tcode{A} meets @@ -9661,7 +9553,7 @@ index add15a22..2d81c518 100644 \pnum \effects -@@ -4754,8 +4754,8 @@ namespace std { +@@ -4898,8 +4898,8 @@ namespace std { \end{codeblock} \pnum @@ -9672,7 +9564,7 @@ index add15a22..2d81c518 100644 containers. The template parameter \tcode{T} of \tcode{weak_ptr} may be an incomplete type. -@@ -5334,7 +5334,7 @@ namespace std { +@@ -5478,7 +5478,7 @@ namespace std { \end{codeblock} \pnum @@ -9681,7 +9573,7 @@ index add15a22..2d81c518 100644 If \tcode{Smart} is a specialization of \tcode{shared_ptr} and \tcode{sizeof...(Args) == 0}, the program is ill-formed. -@@ -5574,7 +5574,7 @@ namespace std { +@@ -5718,7 +5718,7 @@ namespace std { \end{codeblock} \pnum @@ -9691,10 +9583,10 @@ index add15a22..2d81c518 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index cd75eee5..bbe21840 100644 +index c30353cd..27831f74 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -94,12 +94,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal +@@ -95,12 +95,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal A \defnoldconcept{UnaryTypeTrait} describes a property of a type. It shall be a class template that takes one template type argument and, optionally, additional arguments that help define the @@ -9710,7 +9602,7 @@ index cd75eee5..bbe21840 100644 the arguments to the template \tcode{integral_constant} determined by the requirements for the particular property being described. The member names of the base characteristic shall not be hidden and shall be -@@ -110,12 +110,12 @@ A \defnoldconcept{BinaryTypeTrait} describes a +@@ -111,12 +111,12 @@ A \defnoldconcept{BinaryTypeTrait} describes a relationship between two types. It shall be a class template that takes two template type arguments and, optionally, additional arguments that help define the relationship being described. It shall @@ -9725,7 +9617,7 @@ index cd75eee5..bbe21840 100644 the arguments to the template \tcode{integral_constant} determined by the requirements for the particular relationship being described. The member names of the base characteristic shall not be hidden and shall be -@@ -285,17 +285,17 @@ namespace std { +@@ -307,17 +307,17 @@ namespace std { template struct add_cv; template @@ -9749,7 +9641,7 @@ index cd75eee5..bbe21840 100644 // \ref{meta.trans.ref}, reference modifications template struct remove_reference; -@@ -303,38 +303,38 @@ namespace std { +@@ -325,38 +325,38 @@ namespace std { template struct add_rvalue_reference; template @@ -9797,7 +9689,7 @@ index cd75eee5..bbe21840 100644 // \ref{meta.trans.other}, other transformations template struct type_identity; -@@ -352,27 +352,27 @@ namespace std { +@@ -375,29 +375,29 @@ namespace std { template struct unwrap_ref_decay; template @@ -9827,6 +9719,9 @@ index cd75eee5..bbe21840 100644 template - using @\libglobal{invoke_result_t}@ = typename invoke_result::type; + using @\libglobal{invoke_result_t}@ = typename @\libglobalref{invoke_result}@::type; + template +- using @\libglobal{apply_result_t}@ = typename apply_result::type; ++ using @\libglobal{apply_result_t}@ = typename @\libglobalref{apply_result}@::type; template - using unwrap_reference_t = typename unwrap_reference::type; + using @\libglobal{unwrap_reference_t}@ = typename @\libglobalref{unwrap_reference}@::type; @@ -9836,7 +9731,7 @@ index cd75eee5..bbe21840 100644 template using @\libglobal{void_t}@ = void; -@@ -383,206 +383,206 @@ namespace std { +@@ -408,191 +408,191 @@ namespace std { // \ref{meta.unary.cat}, primary type categories template @@ -9881,6 +9776,9 @@ index cd75eee5..bbe21840 100644 template - constexpr bool @\libglobal{is_function_v}@ = is_function::value; + constexpr bool @\libglobal{is_function_v}@ = @\libglobalref{is_function}@::value; + template +- constexpr bool @\libglobal{is_reflection_v}@ = is_reflection::value; ++ constexpr bool @\libglobal{is_reflection_v}@ = @\libglobalref{is_reflection}@::value; // \ref{meta.unary.comp}, composite type categories template @@ -9936,6 +9834,9 @@ index cd75eee5..bbe21840 100644 - constexpr bool @\libglobal{is_aggregate_v}@ = is_aggregate::value; + constexpr bool @\libglobal{is_aggregate_v}@ = @\libglobalref{is_aggregate}@::value; template +- constexpr bool @\libglobal{is_consteval_only_v}@ = is_consteval_only::value; ++ constexpr bool @\libglobal{is_consteval_only_v}@ = @\libglobalref{is_consteval_only}@::value; + template constexpr bool @\libglobal{is_signed_v}@ = is_signed::value; template - constexpr bool @\libglobal{is_unsigned_v}@ = is_unsigned::value; @@ -9980,61 +9881,37 @@ index cd75eee5..bbe21840 100644 - constexpr bool @\libglobal{is_destructible_v}@ = is_destructible::value; + constexpr bool @\libglobal{is_destructible_v}@ = @\libglobalref{is_destructible}@::value; template -- constexpr bool is_trivially_constructible_v -- = is_trivially_constructible::value; -+ constexpr @\libglobal{bool is_trivially_constructible_v}@ -+ = @\libglobalref{is_trivially_constructible}@::value; + constexpr bool is_trivially_constructible_v = is_trivially_constructible::value; template - constexpr bool is_trivially_default_constructible_v - = is_trivially_default_constructible::value; + constexpr bool @\libglobal{is_trivially_default_constructible_v}@ + = @\libglobalref{is_trivially_default_constructible}@::value; template -- constexpr bool is_trivially_copy_constructible_v -- = is_trivially_copy_constructible::value; -+ constexpr bool @\libglobal{is_trivially_copy_constructible_v}@ -+ = @\libglobalref{is_trivially_copy_constructible}@::value; + constexpr bool is_trivially_copy_constructible_v = is_trivially_copy_constructible::value; template -- constexpr bool is_trivially_move_constructible_v -- = is_trivially_move_constructible::value; -+ constexpr bool @\libglobal{is_trivially_move_constructible_v}@ -+ = @\libglobalref{is_trivially_move_constructible}@::value; + constexpr bool is_trivially_move_constructible_v = is_trivially_move_constructible::value; template - constexpr bool @\libglobal{is_trivially_assignable_v}@ = is_trivially_assignable::value; + constexpr bool @\libglobal{is_trivially_assignable_v}@ = @\libglobalref{is_trivially_assignable}@::value; template -- constexpr bool is_trivially_copy_assignable_v -- = is_trivially_copy_assignable::value; -+ constexpr bool @\libglobal{is_trivially_copy_assignable_v}@ -+ = @\libglobalref{is_trivially_copy_assignable}@::value; + constexpr bool is_trivially_copy_assignable_v = is_trivially_copy_assignable::value; template -- constexpr bool is_trivially_move_assignable_v -- = is_trivially_move_assignable::value; -+ constexpr bool @\libglobal{is_trivially_move_assignable_v}@ -+ = @\libglobalref{is_trivially_move_assignable}@::value; + constexpr bool is_trivially_move_assignable_v = is_trivially_move_assignable::value; template - constexpr bool @\libglobal{is_trivially_destructible_v}@ = is_trivially_destructible::value; + constexpr bool @\libglobal{is_trivially_destructible_v}@ = @\libglobalref{is_trivially_destructible}@::value; template -- constexpr bool is_nothrow_constructible_v -- = is_nothrow_constructible::value; -+ constexpr bool @\libglobal{is_nothrow_constructible_v}@ -+ = @\libglobalref{is_nothrow_constructible}@::value; + constexpr bool is_nothrow_constructible_v = is_nothrow_constructible::value; template - constexpr bool is_nothrow_default_constructible_v - = is_nothrow_default_constructible::value; + constexpr bool @\libglobal{is_nothrow_default_constructible_v}@ + = @\libglobalref{is_nothrow_default_constructible}@::value; template -- constexpr bool is_nothrow_copy_constructible_v -- = is_nothrow_copy_constructible::value; -+ constexpr bool @\libglobal{is_nothrow_copy_constructible_v}@ -+ = @\libglobalref{is_nothrow_copy_constructible}@::value; + constexpr bool is_nothrow_copy_constructible_v = is_nothrow_copy_constructible::value; template -- constexpr bool is_nothrow_move_constructible_v -- = is_nothrow_move_constructible::value; -+ constexpr bool @\libglobal{is_nothrow_move_constructible_v}@ -+ = @\libglobalref{is_nothrow_move_constructible}@::value; + constexpr bool is_nothrow_move_constructible_v = is_nothrow_move_constructible::value; template - constexpr bool @\libglobal{is_nothrow_assignable_v}@ = is_nothrow_assignable::value; + constexpr bool @\libglobal{is_nothrow_assignable_v}@ = @\libglobalref{is_nothrow_assignable}@::value; @@ -10124,9 +10001,9 @@ index cd75eee5..bbe21840 100644 - constexpr bool @\libglobal{is_nothrow_invocable_v}@ = is_nothrow_invocable::value; + constexpr bool @\libglobal{is_nothrow_invocable_v}@ = @\libglobalref{is_nothrow_invocable}@::value; template - constexpr bool is_nothrow_invocable_r_v -- = is_nothrow_invocable_r::value; -+ = @\libglobalref{is_nothrow_invocable_r}@::value; + constexpr bool is_nothrow_invocable_r_v = is_nothrow_invocable_r::value; + template +@@ -602,11 +602,11 @@ namespace std { // \ref{meta.logical}, logical operator traits template @@ -10141,7 +10018,7 @@ index cd75eee5..bbe21840 100644 // \ref{meta.member}, member relationships template -@@ -634,7 +634,7 @@ properties of a type at compile time. +@@ -916,7 +916,7 @@ properties of a type at compile time. \pnum Each of these templates shall be a @@ -10150,7 +10027,7 @@ index cd75eee5..bbe21840 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is \tcode{true}, otherwise \tcode{false_type}. -@@ -664,17 +664,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. +@@ -953,17 +953,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. \topline \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead @@ -10171,7 +10048,7 @@ index cd75eee5..bbe21840 100644 \tcode{T} is an integral type\iref{basic.fundamental} & \\ \rowsep \indexlibraryglobal{is_floating_point}% \tcode{template}\br -@@ -899,9 +896,8 @@ A union is a class type that +@@ -1192,9 +1189,8 @@ A union is a class type that & If \tcode{T} is a class type, \tcode{T} shall be a complete type. \\ \rowsep @@ -10182,7 +10059,7 @@ index cd75eee5..bbe21840 100644 \tcode{T} is an aggregate type\iref{dcl.init.aggr} & \tcode{T} shall be an array type, a complete type, or \cv~\keyword{void}. \\ \rowsep -@@ -912,16 +908,14 @@ A union is a class type that +@@ -1211,16 +1207,14 @@ A union is a class type that \tcode{T(-1) < T(0)}; otherwise, \tcode{false} & \\ \rowsep @@ -10201,7 +10078,7 @@ index cd75eee5..bbe21840 100644 \tcode{T} is an array type of known bound\iref{dcl.array} & \\ \rowsep -@@ -1425,7 +1419,7 @@ may be used to query properties of types at compile time. +@@ -1724,7 +1718,7 @@ may be used to query properties of types at compile time. \end{libreqtab2a} \pnum @@ -10210,7 +10087,7 @@ index cd75eee5..bbe21840 100644 base characteristic of \tcode{integral_constant}. \pnum -@@ -1461,7 +1455,7 @@ may be used to query relationships between types at compile time. +@@ -1760,7 +1754,7 @@ may be used to query relationships between types at compile time. \pnum Each of these templates shall be a @@ -10219,7 +10096,7 @@ index cd75eee5..bbe21840 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is true, otherwise \tcode{false_type}. -@@ -1475,7 +1469,7 @@ with a base characteristic of +@@ -1774,7 +1768,7 @@ with a base characteristic of \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead \tcode{template}\br @@ -10228,7 +10105,7 @@ index cd75eee5..bbe21840 100644 \tcode{T} and \tcode{U} name the same type with the same cv-qualifications & \\ \rowsep \indexlibraryglobal{is_base_of}% -@@ -1655,7 +1649,7 @@ type to another following some predefined rule. +@@ -1975,7 +1969,7 @@ type to another following some predefined rule. \pnum Each of the templates in \ref{meta.trans} shall be a @@ -10237,7 +10114,7 @@ index cd75eee5..bbe21840 100644 \rSec3[meta.trans.cv]{Const-volatile modifications} -@@ -1942,16 +1936,16 @@ perform other modifications of a type. +@@ -2262,16 +2256,16 @@ perform other modifications of a type. \tcode{template\br struct \libglobal{remove_cvref};} & The member typedef \tcode{type} denotes @@ -10259,7 +10136,7 @@ index cd75eee5..bbe21840 100644 \begin{tailnote} This behavior is similar to the lvalue-to-rvalue\iref{conv.lval}, array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} -@@ -2031,7 +2025,7 @@ argument passing. +@@ -2377,7 +2371,7 @@ argument passing. \tcode{template} \tcode{struct \libglobal{unwrap_reference};} & If \tcode{T} is @@ -10268,7 +10145,7 @@ index cd75eee5..bbe21840 100644 the member typedef \tcode{type} of \tcode{unwrap_reference} denotes \tcode{X\&}, otherwise \tcode{type} denotes \tcode{T}. \\ \rowsep -@@ -2039,7 +2033,7 @@ argument passing. +@@ -2385,7 +2379,7 @@ argument passing. \tcode{template} \tcode{\libglobal{unwrap_ref_decay};} & The member typedef \tcode{type} of \tcode{unwrap_ref_decay} @@ -10277,7 +10154,7 @@ index cd75eee5..bbe21840 100644 \end{libreqtab2a} \pnum -@@ -2057,7 +2051,7 @@ when the header \tcode{}\iref{functional.syn} is included. +@@ -2403,7 +2397,7 @@ when the header \tcode{}\iref{functional.syn} is included. Let: \begin{itemize} \item \tcode{\placeholdernc{CREF}(A)} be @@ -10286,7 +10163,7 @@ index cd75eee5..bbe21840 100644 \item \tcode{\placeholdernc{XREF}(A)} denote a unary alias template \tcode{T} such that \tcode{T} denotes the same type as \tcode{U} with the addition of \tcode{A}'s cv and reference qualifiers, for a non-reference cv-unqualified -@@ -2082,15 +2076,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: +@@ -2428,15 +2422,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: \placeholdernc{COPYCV}(\brk{}Y, X) \&)} if that type exists and is a reference type. \item Otherwise, let \tcode{C} be @@ -10305,7 +10182,7 @@ index cd75eee5..bbe21840 100644 \tcode{true}, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is \tcode{D}. \item Otherwise, if \tcode{A} is an lvalue reference and \tcode{B} is an rvalue reference, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is -@@ -2389,7 +2383,7 @@ template struct negation : @\seebelow@ { }; +@@ -2735,7 +2729,7 @@ template struct negation : @\seebelow@ { }; The class template \tcode{negation} forms the logical negation of its template type argument. The type \tcode{negation} @@ -10315,7 +10192,7 @@ index cd75eee5..bbe21840 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index c37ff4f3..57b2e5a8 100644 +index b46401da..021e5dbb 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul @@ -10333,7 +10210,7 @@ index c37ff4f3..57b2e5a8 100644 requirements\iref{utility.arg.requirements}. \begin{footnote} In other words, value types. -@@ -2024,8 +2024,8 @@ according to \ref{strings} and \ref{input.output}. +@@ -2025,8 +2025,8 @@ according to \ref{strings} and \ref{input.output}. \pnum \tcode{E} shall meet the @@ -10344,7 +10221,7 @@ index c37ff4f3..57b2e5a8 100644 These operations shall each be of complexity no worse than \bigoh{\text{size of state}}. -@@ -2453,8 +2453,8 @@ according to \ref{strings} and \ref{input.output}. +@@ -2454,8 +2454,8 @@ according to \ref{strings} and \ref{input.output}. \pnum \tcode{D} shall meet the @@ -10355,7 +10232,7 @@ index c37ff4f3..57b2e5a8 100644 \pnum The sequence of numbers -@@ -2485,10 +2485,10 @@ for convenience of exposition only. +@@ -2486,10 +2486,10 @@ for convenience of exposition only. \pnum \tcode{P} shall meet the @@ -10369,7 +10246,7 @@ index c37ff4f3..57b2e5a8 100644 \pnum For each of the constructors of \tcode{D} -@@ -4232,7 +4232,7 @@ template +@@ -4233,7 +4233,7 @@ template \pnum \expects \tcode{InputIterator} meets the @@ -10378,7 +10255,7 @@ index c37ff4f3..57b2e5a8 100644 \pnum \effects -@@ -4259,7 +4259,7 @@ template +@@ -4260,7 +4260,7 @@ template \pnum \expects \tcode{RandomAccessIterator} meets the @@ -10387,7 +10264,7 @@ index c37ff4f3..57b2e5a8 100644 and the requirements of a mutable iterator. \pnum -@@ -4372,7 +4372,7 @@ template +@@ -4373,7 +4373,7 @@ template \pnum \expects \tcode{OutputIterator} meets the @@ -10396,7 +10273,7 @@ index c37ff4f3..57b2e5a8 100644 \pnum \effects -@@ -6367,7 +6367,7 @@ double>} is \tcode{true}. +@@ -6368,7 +6368,7 @@ double>} is \tcode{true}. \pnum \expects \tcode{InputIterator} meets the @@ -10405,7 +10282,7 @@ index c37ff4f3..57b2e5a8 100644 If \tcode{firstW == lastW}, let $n = 1$ and $w_0 = 1$. Otherwise, -@@ -6565,7 +6565,7 @@ are \tcode{true}. +@@ -6566,7 +6566,7 @@ are \tcode{true}. \expects \tcode{InputIteratorB} and \tcode{InputIteratorW} each meet the @@ -10414,7 +10291,7 @@ index c37ff4f3..57b2e5a8 100644 If \tcode{firstB == lastB} or \tcode{++firstB == lastB}, let $n = 1$, -@@ -6800,7 +6800,7 @@ are \tcode{true}. +@@ -6801,7 +6801,7 @@ are \tcode{true}. \expects \tcode{InputIteratorB} and \tcode{InputIteratorW} each meet the @@ -10423,7 +10300,7 @@ index c37ff4f3..57b2e5a8 100644 If \tcode{firstB == lastB} or \tcode{++firstB == lastB}, let $n = 1$, -@@ -9146,12 +9146,12 @@ object refers. +@@ -9147,12 +9147,12 @@ object refers. \pnum In the \tcode{begin} and \tcode{end} function templates that follow, \unspec{1} is a type that meets the requirements of a mutable @@ -10439,7 +10316,7 @@ index c37ff4f3..57b2e5a8 100644 whose \tcode{value_type} is the template parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. diff --git a/source/strings.tex b/source/strings.tex -index 6f584dff..18f79d6b 100644 +index e943eef1..13b33fa6 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -238,10 +238,10 @@ using state_type = @\seebelow@; @@ -10457,7 +10334,7 @@ index 6f584dff..18f79d6b 100644 \end{itemdescr} \rSec2[char.traits.specializations]{\tcode{char_traits} specializations} -@@ -926,7 +926,7 @@ using const_iterator = @\impdefx{type of \tcode{basic_string_view::const_iterato +@@ -928,7 +928,7 @@ using const_iterator = @\impdefx{type of \tcode{basic_string_view::const_iterato \pnum A type that meets the requirements of a constant @@ -10467,10 +10344,10 @@ index 6f584dff..18f79d6b 100644 meets the constexpr iterator requirements\iref{iterator.requirements.general}, whose \tcode{value_type} is the template parameter \tcode{charT}. diff --git a/source/support.tex b/source/support.tex -index b67bffbb..c11f5627 100644 +index e360471d..6212b511 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -3648,11 +3648,11 @@ namespace std { +@@ -3657,11 +3657,11 @@ namespace std { \pnum The type \tcode{source_location} meets the @@ -10487,7 +10364,7 @@ index b67bffbb..c11f5627 100644 requirements\iref{utility.arg.requirements,swappable.requirements}. All of the following conditions are \tcode{true}: \begin{itemize} -@@ -4112,7 +4112,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. +@@ -4123,7 +4123,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. \pnum \tcode{exception_ptr} meets the requirements of @@ -10496,7 +10373,7 @@ index b67bffbb..c11f5627 100644 \pnum Two non-null values of type \tcode{exception_ptr} are equivalent and compare equal if and -@@ -4312,7 +4312,7 @@ Let \tcode{U} be \tcode{decay_t}. +@@ -4350,7 +4350,7 @@ Let \tcode{U} be \tcode{decay_t}. \pnum \expects @@ -10506,7 +10383,7 @@ index b67bffbb..c11f5627 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index 8c1b16d3..b16503f4 100644 +index f78b53b1..f538f650 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10569,7 +10446,7 @@ index 8c1b16d3..b16503f4 100644 the following expressions are well-formed, have type \tcode{bool}, and have the specified semantics (\tcode{m} denotes a value of type \tcode{L}, -@@ -4127,7 +4127,7 @@ namespace std { +@@ -4499,7 +4499,7 @@ namespace std { \indexlibraryglobal{atomic}% \pnum The template argument for \tcode{T} shall meet the @@ -10578,7 +10455,7 @@ index 8c1b16d3..b16503f4 100644 The program is ill-formed if any of \begin{itemize} \item \tcode{is_trivially_copyable_v}, -@@ -6594,11 +6594,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, +@@ -7333,11 +7333,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, They meet the requirements set out in \ref{thread.mutex.requirements.mutex}. In this description, \tcode{m} denotes an object of a mutex type. \begin{note} @@ -10592,7 +10469,7 @@ index 8c1b16d3..b16503f4 100644 If initialization of an object of a mutex type fails, an exception of type \tcode{system_error} is thrown. The mutex types are neither copyable nor movable. -@@ -6867,7 +6867,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de +@@ -7606,7 +7606,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de object of an instantiation of \link{\tcode{time_point}}{time.point}. \begin{note} @@ -10601,7 +10478,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -7079,7 +7079,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally +@@ -7818,7 +7818,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally meet the requirements set out below. In this description, \tcode{m} denotes an object of a shared mutex type. \begin{note} @@ -10610,7 +10487,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.shared}. \end{note} -@@ -7256,7 +7256,7 @@ meet the requirements set out below. In this description, +@@ -7995,7 +7995,7 @@ meet the requirements set out below. In this description, \tcode{abs_time} denotes an object of an instantiation of \link{\tcode{time_point}}{time.point}. \begin{note} @@ -10619,7 +10496,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.shared.timed}. \end{note} -@@ -7466,7 +7466,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable +@@ -8205,7 +8205,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable object throughout the \tcode{lock_guard} object's \deflink{lifetime}{basic.life}. The behavior of a program is undefined if the lockable object referenced by \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} @@ -10628,7 +10505,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.basic}. \indexlibraryctor{lock_guard}% -@@ -7545,12 +7545,12 @@ object. +@@ -8284,12 +8284,12 @@ object. If \tcode{sizeof...(MutexTypes)} is one, let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. \tcode{Mutex} @@ -10643,7 +10520,7 @@ index 8c1b16d3..b16503f4 100644 and there is no member \tcode{mutex_type}. \end{itemize} -@@ -7665,17 +7665,17 @@ copyable but are movable. The behavior of a program is undefined if the containe +@@ -8404,17 +8404,17 @@ copyable but are movable. The behavior of a program is undefined if the containe \tcode{pm} is not null and the lockable object pointed to by \tcode{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied @@ -10667,7 +10544,7 @@ index 8c1b16d3..b16503f4 100644 \end{note} \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} -@@ -7725,7 +7725,7 @@ unique_lock(mutex_type& m, try_to_lock_t); +@@ -8464,7 +8464,7 @@ unique_lock(mutex_type& m, try_to_lock_t); \begin{itemdescr} \pnum \expects @@ -10676,7 +10553,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -7767,7 +7767,7 @@ template +@@ -8506,7 +8506,7 @@ template \pnum \expects The supplied \tcode{Mutex} type meets the @@ -10685,7 +10562,7 @@ index 8c1b16d3..b16503f4 100644 \pnum \effects -@@ -7789,7 +7789,7 @@ template +@@ -8528,7 +8528,7 @@ template \begin{itemdescr} \pnum \expects @@ -10694,7 +10571,7 @@ index 8c1b16d3..b16503f4 100644 \pnum \effects -@@ -7876,7 +7876,7 @@ bool try_lock(); +@@ -8615,7 +8615,7 @@ bool try_lock(); \begin{itemdescr} \pnum \expects @@ -10703,7 +10580,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -7915,7 +7915,7 @@ template +@@ -8654,7 +8654,7 @@ template \begin{itemdescr} \pnum \expects @@ -10712,7 +10589,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.timed}. \pnum -@@ -7954,7 +7954,7 @@ template +@@ -8693,7 +8693,7 @@ template \begin{itemdescr} \pnum \expects @@ -10721,7 +10598,7 @@ index 8c1b16d3..b16503f4 100644 \pnum \effects -@@ -8147,16 +8147,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type +@@ -8886,16 +8886,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type is undefined if the contained pointer \tcode{pm} is not null and the lockable object pointed to by \tcode{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied @@ -10742,7 +10619,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -8241,7 +8241,7 @@ template +@@ -8980,7 +8980,7 @@ template \begin{itemdescr} \pnum \expects @@ -10751,7 +10628,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8265,7 +8265,7 @@ template +@@ -9004,7 +9004,7 @@ template \begin{itemdescr} \pnum \expects @@ -10760,7 +10637,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8390,7 +8390,7 @@ template +@@ -9129,7 +9129,7 @@ template \begin{itemdescr} \pnum \expects @@ -10769,7 +10646,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8430,7 +8430,7 @@ template +@@ -9169,7 +9169,7 @@ template \begin{itemdescr} \pnum \expects @@ -10778,7 +10655,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8569,7 +8569,7 @@ template int try_lock(L1&, L2&, L3&...); +@@ -9308,7 +9308,7 @@ template int try_lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10787,7 +10664,7 @@ index 8c1b16d3..b16503f4 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -8598,7 +8598,7 @@ template void lock(L1&, L2&, L3&...); +@@ -9337,7 +9337,7 @@ template void lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10796,7 +10673,7 @@ index 8c1b16d3..b16503f4 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9264,7 +9264,7 @@ This can happen if the re-locking of the mutex throws an exception. +@@ -10003,7 +10003,7 @@ This can happen if the re-locking of the mutex throws an exception. \pnum In \ref{thread.condition.condvarany}, template arguments for template parameters named \tcode{Lock} @@ -10805,7 +10682,7 @@ index 8c1b16d3..b16503f4 100644 requirements\iref{thread.req.lockable.basic}. \begin{note} All of the standard -@@ -10202,24 +10202,24 @@ execute atomically. +@@ -10941,24 +10941,24 @@ execute atomically. \pnum \tcode{CompletionFunction} shall meet the @@ -10836,7 +10713,7 @@ index 8c1b16d3..b16503f4 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -10720,7 +10720,7 @@ namespace std { +@@ -11456,7 +11456,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10845,16 +10722,7 @@ index 8c1b16d3..b16503f4 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -10745,7 +10745,7 @@ template - \pnum - \expects - \tcode{Alloc} meets --the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. -+the \oldconceptref{Allocator} requirements\iref{allocator.requirements.general}. - \end{itemdescr} - - \indexlibraryctor{promise}% -@@ -11066,7 +11066,7 @@ namespace std { +@@ -11788,7 +11788,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10863,7 +10731,7 @@ index 8c1b16d3..b16503f4 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -11372,7 +11372,7 @@ namespace std { +@@ -12094,7 +12094,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10872,7 +10740,7 @@ index 8c1b16d3..b16503f4 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -12280,7 +12280,7 @@ the expression \tcode{d(ptr)} is valid. +@@ -13032,7 +13032,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -10881,7 +10749,7 @@ index 8c1b16d3..b16503f4 100644 \pnum If \tcode{D} is trivially copyable, -@@ -12338,7 +12338,7 @@ namespace std { +@@ -13090,7 +13090,7 @@ namespace std { \pnum This class meets the requirements of @@ -10890,7 +10758,7 @@ index 8c1b16d3..b16503f4 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -12486,8 +12486,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -13238,8 +13238,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -10901,7 +10769,7 @@ index 8c1b16d3..b16503f4 100644 \pnum \effects -@@ -12679,7 +12679,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -13431,7 +13431,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -10911,7 +10779,7 @@ index 8c1b16d3..b16503f4 100644 \pnum \tcode{T} may be an incomplete type. diff --git a/source/time.tex b/source/time.tex -index 39598098..ca78ddce 100644 +index f52ab7f4..c0a4aaf9 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1039,13 +1039,13 @@ SI definition is a measure of the quality of implementation. @@ -11124,7 +10992,7 @@ index 39598098..ca78ddce 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index 171c1b2f..44c92b72 100644 +index b79fc8d3..76b19166 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -258,9 +258,9 @@ template @@ -11139,7 +11007,7 @@ index 171c1b2f..44c92b72 100644 requirements. \pnum -@@ -2138,7 +2138,7 @@ template +@@ -2139,7 +2139,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -11148,7 +11016,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -2768,7 +2768,7 @@ template struct tuple_size; +@@ -2761,7 +2761,7 @@ template struct tuple_size; \pnum Except where specified otherwise, all specializations of \tcode{tuple_size} meet the @@ -11157,7 +11025,7 @@ index 171c1b2f..44c92b72 100644 base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -2809,7 +2809,7 @@ template struct tuple_size; +@@ -2802,7 +2802,7 @@ template struct tuple_size; Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. If the expression \tcode{TS::value} is well-formed when treated as an \deflink{unevaluated operand}{expr.context}, then @@ -11166,7 +11034,7 @@ index 171c1b2f..44c92b72 100644 with a base characteristic of \begin{codeblock} integral_constant -@@ -2846,7 +2846,7 @@ template struct tuple_element; +@@ -2839,7 +2839,7 @@ template struct tuple_element; \begin{itemdescr} \pnum Let \tcode{TE} denote \tcode{tuple_element_t} of the cv-unqualified type \tcode{T}. Then @@ -11175,7 +11043,7 @@ index 171c1b2f..44c92b72 100644 with a member typedef \tcode{type} that names the type \tcode{add_const_t}. \pnum -@@ -3125,7 +3125,7 @@ template +@@ -3118,7 +3118,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -11184,16 +11052,7 @@ index 171c1b2f..44c92b72 100644 \pnum \begin{note} -@@ -3378,7 +3378,7 @@ member \tcode{val} points to the contained value. - \pnum - \tcode{T} shall be a type - other than \cv{} \tcode{in_place_t} or \cv{} \tcode{nullopt_t} --that meets the \oldconcept{Destructible} requirements (\tref{cpp17.destructible}). -+that meets the \oldconceptref{Destructible} requirements (\tref{cpp17.destructible}). - - \rSec3[optional.ctor]{Constructors} - -@@ -3998,7 +3998,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); +@@ -4002,7 +4002,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11202,7 +11061,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -4055,7 +4055,7 @@ using const_iterator = @\impdef@; +@@ -4059,7 +4059,7 @@ using const_iterator = @\impdef@; \pnum These types model \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, @@ -11211,7 +11070,7 @@ index 171c1b2f..44c92b72 100644 meet the requirements for constexpr iterators\iref{iterator.requirements.general}, with value type \tcode{remove_cv_t}. The reference type is \tcode{T\&} for \tcode{iterator} and -@@ -4497,7 +4497,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5044,7 +5044,7 @@ template constexpr bool operator==(const optional& x, const The expression \tcode{*x == *y} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11220,7 +11079,7 @@ index 171c1b2f..44c92b72 100644 \end{note} \pnum -@@ -4688,7 +4688,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5235,7 +5235,7 @@ template constexpr bool operator==(const optional& x, const The expression \tcode{*x == v} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11229,7 +11088,7 @@ index 171c1b2f..44c92b72 100644 \end{note} \pnum -@@ -5175,7 +5175,7 @@ is nested within\iref{intro.object} the +@@ -5730,7 +5730,7 @@ is nested within\iref{intro.object} the \pnum All types in \tcode{Types} shall meet @@ -11238,7 +11097,7 @@ index 171c1b2f..44c92b72 100644 \pnum A program that instantiates the definition of \tcode{variant} with -@@ -5855,7 +5855,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); +@@ -6410,7 +6410,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11247,7 +11106,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -5900,7 +5900,7 @@ template struct variant_size; +@@ -6455,7 +6455,7 @@ template struct variant_size; \begin{itemdescr} \pnum All specializations of \tcode{variant_size} meet the @@ -11256,7 +11115,7 @@ index 171c1b2f..44c92b72 100644 with a base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -5913,7 +5913,7 @@ template struct variant_size; +@@ -6468,7 +6468,7 @@ template struct variant_size; \pnum Let \tcode{VS} denote \tcode{variant_size} of the cv-unqualified type \tcode{T}. Then each specialization of the template meets the @@ -11265,7 +11124,7 @@ index 171c1b2f..44c92b72 100644 base characteristic of \tcode{integral_constant}. \end{itemdescr} -@@ -5933,7 +5933,7 @@ template struct variant_alternative; +@@ -6488,7 +6488,7 @@ template struct variant_alternative; \pnum Let \tcode{VA} denote \tcode{variant_alternative} of the cv-unqualified type \tcode{T}. Then each specialization of the template @@ -11274,7 +11133,7 @@ index 171c1b2f..44c92b72 100644 member typedef \tcode{type} that names the type \tcode{add_const_t}. \end{itemdescr} -@@ -6661,7 +6661,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. +@@ -7216,7 +7216,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. \pnum \expects @@ -11283,7 +11142,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -6689,7 +6689,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7244,7 +7244,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11292,7 +11151,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -6722,7 +6722,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7277,7 +7277,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11301,7 +11160,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -6807,7 +6807,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7362,7 +7362,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11310,7 +11169,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -6842,7 +6842,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7397,7 +7397,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11319,7 +11178,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -6886,7 +6886,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7441,7 +7441,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11328,7 +11187,7 @@ index 171c1b2f..44c92b72 100644 \pnum \effects -@@ -7592,9 +7592,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -8147,9 +8147,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum When \tcode{T} is not \cv{} \tcode{void}, it shall meet @@ -11340,7 +11199,7 @@ index 171c1b2f..44c92b72 100644 \rSec3[expected.object.cons]{Constructors} -@@ -8832,7 +8832,7 @@ template friend constexpr bool operator==(const expected& x, const T2& +@@ -9389,7 +9389,7 @@ template friend constexpr bool operator==(const expected& x, const T2& The expression \tcode{*x == v} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11349,7 +11208,7 @@ index 171c1b2f..44c92b72 100644 \end{note} \pnum -@@ -8969,7 +8969,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -9526,7 +9526,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum \tcode{E} shall meet the requirements of @@ -11358,7 +11217,7 @@ index 171c1b2f..44c92b72 100644 \rSec3[expected.void.cons]{Constructors} -@@ -10994,8 +10994,8 @@ is ill-formed. +@@ -11551,8 +11551,8 @@ is ill-formed. \indextext{call wrapper}% \indextext{call wrapper!simple}% \indextext{call wrapper!forwarding}% @@ -11369,7 +11228,7 @@ index 171c1b2f..44c92b72 100644 An \defn{argument forwarding call wrapper} is a call wrapper that can be called with an arbitrary argument list and delivers the arguments to the target object as references. -@@ -11035,7 +11035,7 @@ with references as described in the corresponding forwarding steps. +@@ -11592,7 +11592,7 @@ with references as described in the corresponding forwarding steps. \pnum \label{term.simple.call.wrapper}% A \defn{simple call wrapper} is a perfect forwarding call wrapper that meets @@ -11378,7 +11237,7 @@ index 171c1b2f..44c92b72 100644 and whose copy constructor, move constructor, and assignment operators are constexpr functions that do not throw exceptions. -@@ -11138,7 +11138,7 @@ namespace std { +@@ -11695,7 +11695,7 @@ namespace std { \end{codeblock} \pnum @@ -11387,7 +11246,7 @@ index 171c1b2f..44c92b72 100644 around a reference to an object or function of type \tcode{T}. \pnum -@@ -12592,7 +12592,7 @@ is \tcode{true}. +@@ -13149,7 +13149,7 @@ is \tcode{true}. \pnum \expects @@ -11396,7 +11255,7 @@ index 171c1b2f..44c92b72 100644 \pnum \returns -@@ -12678,10 +12678,10 @@ is \tcode{true}. +@@ -13235,10 +13235,10 @@ is \tcode{true}. \pnum \expects @@ -11409,7 +11268,7 @@ index 171c1b2f..44c92b72 100644 \pnum \returns -@@ -12747,7 +12747,7 @@ then \tcode{f != nullptr} is \tcode{true}. +@@ -13304,7 +13304,7 @@ then \tcode{f != nullptr} is \tcode{true}. \pnum \expects For each $\tcode{T}_i$ in \tcode{BoundArgs}, @@ -11418,7 +11277,7 @@ index 171c1b2f..44c92b72 100644 \pnum \returns -@@ -12792,7 +12792,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. +@@ -13349,7 +13349,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. \pnum Specializations of the \tcode{is_bind_expression} template shall meet @@ -11427,7 +11286,7 @@ index 171c1b2f..44c92b72 100644 provides a definition that has a base characteristic of \tcode{true_type} if \tcode{T} is a type returned from \tcode{bind}, otherwise it has a base characteristic of \tcode{false_type}. -@@ -12828,7 +12828,7 @@ The function template \tcode{bind} uses +@@ -13385,7 +13385,7 @@ The function template \tcode{bind} uses \pnum Specializations of the \tcode{is_placeholder} template shall meet @@ -11436,7 +11295,7 @@ index 171c1b2f..44c92b72 100644 provides a definition that has the base characteristic of \tcode{integral_constant} if \tcode{T} is the type of \tcode{std::placeholders::_\placeholder{J}}, otherwise it has a -@@ -12878,7 +12878,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> +@@ -13435,7 +13435,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> \pnum \expects \tcode{FD} and each $\tcode{TD}_i$ meet @@ -11445,7 +11304,7 @@ index 171c1b2f..44c92b72 100644 \tcode{\placeholdernc{INVOKE}(fd, $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc$, $\tcode{w}_N$)}\iref{func.require} is a valid expression for some values $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc{}$, $\tcode{w}_N$, where -@@ -12914,8 +12914,8 @@ the state entities of \tcode{g}. +@@ -13471,8 +13471,8 @@ the state entities of \tcode{g}. \pnum \begin{note} If all of \tcode{FD} and $\tcode{TD}_i$ meet @@ -11456,7 +11315,7 @@ index 171c1b2f..44c92b72 100644 \end{note} \end{itemdescr} -@@ -12984,13 +12984,13 @@ The number \tcode{\placeholder{M}} of placeholders is +@@ -13541,13 +13541,13 @@ The number \tcode{\placeholder{M}} of placeholders is \impldef{number of placeholders for bind expressions}. \pnum @@ -11473,7 +11332,7 @@ index 171c1b2f..44c92b72 100644 but if so, their copy assignment operators are constexpr functions that do not throw exceptions. -@@ -13259,7 +13259,7 @@ Let \tcode{FD} be \tcode{decay_t}. +@@ -13816,7 +13816,7 @@ Let \tcode{FD} be \tcode{decay_t}. \pnum \expects @@ -11482,7 +11341,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -13684,9 +13684,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14241,9 +14241,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11494,7 +11353,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -13736,9 +13736,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14293,9 +14293,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11506,7 +11365,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -13778,9 +13778,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14335,9 +14335,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11518,7 +11377,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -14102,8 +14102,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14659,8 +14659,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11529,7 +11388,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -14158,8 +14158,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14715,8 +14715,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11540,7 +11399,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -14204,8 +14204,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14761,8 +14761,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11551,7 +11410,7 @@ index 171c1b2f..44c92b72 100644 \pnum \ensures -@@ -14720,7 +14720,7 @@ provided to the function call operator. +@@ -15277,7 +15277,7 @@ provided to the function call operator. \pnum Each specialization of a class template specified in \ref{func.search} @@ -11560,7 +11419,7 @@ index 171c1b2f..44c92b72 100644 Template parameters named \begin{itemize} \item \tcode{ForwardIterator}, -@@ -14734,7 +14734,7 @@ Template parameters named +@@ -15291,7 +15291,7 @@ Template parameters named of templates specified in \ref{func.search} shall meet the same requirements and semantics as specified in \ref{algorithms.general}. @@ -11569,7 +11428,7 @@ index 171c1b2f..44c92b72 100644 requirements (\tref{cpp17.hash}). \pnum -@@ -14843,9 +14843,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, +@@ -15400,9 +15400,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, \pnum \expects The value type of \tcode{RandomAccessIterator1} meets @@ -11582,7 +11441,7 @@ index 171c1b2f..44c92b72 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -14944,8 +14944,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, +@@ -15501,8 +15501,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, \begin{itemdescr} \pnum \expects @@ -11593,7 +11452,7 @@ index 171c1b2f..44c92b72 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15018,7 +15018,7 @@ as the default hash function. +@@ -15575,7 +15575,7 @@ as the default hash function. Each specialization of \tcode{hash} is either enabled or disabled, as described below. \begin{note} @@ -11602,7 +11461,7 @@ index 171c1b2f..44c92b72 100644 disabled specializations do not. \end{note} Each header that declares the template \tcode{hash} -@@ -15045,17 +15045,17 @@ Disabled specializations of \tcode{hash} +@@ -15602,17 +15602,17 @@ Disabled specializations of \tcode{hash} are not function object types\iref{function.objects}. \begin{note} This means that the specialization of \tcode{hash} exists, but @@ -11629,28 +11488,28 @@ index 171c1b2f..44c92b72 100644 2.43.0 -From 994f6337ccb16283db09320be852eb716809095d Mon Sep 17 00:00:00 2001 +From aaf2b011197979dbd69a8a84aba641fdfb91df6a Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 -Subject: [PATCH 9/9] Remove awkward \linebreaks. +Subject: [PATCH 09/10] Remove awkward \linebreaks. --- source/algorithms.tex | 4 ++-- source/containers.tex | 53 +++++++++++++++++++++---------------------- - source/exec.tex | 18 +++++++-------- + source/exec.tex | 12 +++++----- source/memory.tex | 6 ++--- source/meta.tex | 2 +- source/numerics.tex | 4 ++-- source/ranges.tex | 38 +++++++++++++++---------------- source/threads.tex | 8 +++---- source/utilities.tex | 10 ++++---- - 9 files changed, 71 insertions(+), 72 deletions(-) + 9 files changed, 68 insertions(+), 69 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 9b6f07ea..267f4770 100644 +index af6bebcd..45b81bf2 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -5588,7 +5588,7 @@ Let: +@@ -7076,7 +7076,7 @@ Let: \tcode{invoke(op, invoke(proj, *(first1 + (i - result))))} for unary transforms defined in namespace \tcode{ranges}; \item @@ -11659,7 +11518,7 @@ index 9b6f07ea..267f4770 100644 for binary transforms defined in namespace \tcode{ranges}. \end{itemize} \end{itemize} -@@ -11738,7 +11738,7 @@ namespace ranges { +@@ -14202,7 +14202,7 @@ namespace ranges { \pnum \constraints \tcode{is_unbounded_array_v} is \tcode{false}. @@ -11669,7 +11528,7 @@ index 9b6f07ea..267f4770 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index b1b1b3fb..6ae695de 100644 +index e49a887b..492a1a7d 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1456,7 +1456,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11788,7 +11647,7 @@ index b1b1b3fb..6ae695de 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -23202,7 +23201,7 @@ is representable as a value of type \tcode{index_type.} +@@ -23209,7 +23208,7 @@ is representable as a value of type \tcode{index_type.} \item If \exposid{rank_} is greater than one, then the product of @@ -11797,7 +11656,7 @@ index b1b1b3fb..6ae695de 100644 all values \tcode{ext.extent($k$)} with $k$ in the range of \range{1}{\exposid{rank_}} is representable as a value of type \tcode{index_type}. -@@ -23281,7 +23280,7 @@ template +@@ -23288,7 +23287,7 @@ template \item If \exposid{rank_} is greater than \tcode{1} and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11806,7 +11665,7 @@ index b1b1b3fb..6ae695de 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(0))) -@@ -23348,7 +23347,7 @@ is \tcode{true}. +@@ -23356,7 +23355,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11815,7 +11674,7 @@ index b1b1b3fb..6ae695de 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(0))) -@@ -23746,7 +23745,7 @@ Implementations should not store this value +@@ -23754,7 +23753,7 @@ Implementations should not store this value if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. \begin{note} Using \tcode{extents} @@ -11824,7 +11683,7 @@ index b1b1b3fb..6ae695de 100644 would achieve this. \end{note} \end{itemdescr} -@@ -23829,13 +23828,13 @@ is representable as a value of type \tcode{index_type}. +@@ -23837,13 +23836,13 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -11840,7 +11699,7 @@ index b1b1b3fb..6ae695de 100644 \end{itemize} \pnum -@@ -23908,7 +23907,7 @@ template +@@ -23916,7 +23915,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11849,7 +11708,7 @@ index b1b1b3fb..6ae695de 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -23976,7 +23975,7 @@ is \tcode{true}. +@@ -23984,7 +23983,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11858,7 +11717,7 @@ index b1b1b3fb..6ae695de 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) -@@ -25565,7 +25564,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, +@@ -25644,7 +25643,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, \item \tcode{stride(k) * \exposid{de-ice}($s_k$.stride)} if $S_k$ is a specialization of \tcode{strided_slice} and @@ -11867,7 +11726,7 @@ index b1b1b3fb..6ae695de 100644 \item otherwise, \tcode{stride($k$)}. \end{itemize} -@@ -25963,11 +25962,11 @@ is well-formed when treated as an unevaluated operand. +@@ -26042,11 +26041,11 @@ is well-formed when treated as an unevaluated operand. \begin{itemize} \item \tcode{decltype(submdspan_mapping(src.mapping(), slices...))} @@ -11881,7 +11740,7 @@ index b1b1b3fb..6ae695de 100644 is \tcode{true}. \item -@@ -25997,11 +25996,11 @@ all of the following are \tcode{true}: +@@ -26076,11 +26075,11 @@ all of the following are \tcode{true}: \item $0 \le \tcode{\exposid{first_}(slices...)}$ $\le \tcode{\exposid{last_}<$k$>(src.extents(), slices...)}$ @@ -11896,10 +11755,10 @@ index b1b1b3fb..6ae695de 100644 \item diff --git a/source/exec.tex b/source/exec.tex -index d141246e..1730edd5 100644 +index 58cf02c5..cda92c93 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -2831,7 +2831,7 @@ except that \tcode{sch} is evaluated only once. +@@ -3290,7 +3290,7 @@ except that \tcode{sch} is evaluated only once. Let \tcode{out_sndr} and \tcode{env} be subexpressions such that \tcode{OutSndr} is \tcode{decltype((out_sndr))}. If \tcode{\exposconcept{sender-for}} is \tcode{false}, @@ -11908,7 +11767,7 @@ index d141246e..1730edd5 100644 \tcode{starts_on.transform_sender(out_sndr, env)} are ill-formed; otherwise \begin{itemize} \item -@@ -3183,7 +3183,7 @@ except that \tcode{sndr} is evaluated only once. +@@ -3670,7 +3670,7 @@ except that \tcode{sndr} is evaluated only once. \pnum Let \tcode{out_sndr} and \tcode{env} be subexpressions, let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and @@ -11917,7 +11776,7 @@ index d141246e..1730edd5 100644 If \tcode{\exposconcept{sender-for}} is \tcode{false}, then the expressions \tcode{on.transform_env(out_sndr, env)} and \tcode{on.transform_sender(out_sndr, env)} are ill-formed. -@@ -3345,7 +3345,7 @@ Let the expression \exposid{then-cpo} be one of +@@ -3812,7 +3812,7 @@ Let the expression \exposid{then-cpo} be one of For subexpressions \tcode{sndr} and \tcode{f}, if \tcode{decltype((sndr))} does not satisfy \libconcept{sender}, or \tcode{decltype((f))} does not satisfy \exposconcept{movable-value}, @@ -11926,16 +11785,7 @@ index d141246e..1730edd5 100644 \pnum Otherwise, -@@ -3526,7 +3526,7 @@ to the \tcode{completion_signatures} specialization named by - Let \tcode{LetSigs} be a pack of those types in \tcode{Sigs} - with a return type of \tcode{\exposid{decayed-typeof}<\exposid{set-cpo}>}. - Let \exposid{as-tuple} be an alias template --such that \tcode{\exposid{as-tuple}<\linebreak Tag(Args...)>} denotes -+such that \tcode{\exposid{as-tuple}} denotes - the type \tcode{\exposid{decayed-tuple}}. - Then \tcode{args_variant_t} denotes - the type \tcode{variant...>} -@@ -3581,7 +3581,7 @@ is initialized with a callable object equivalent to the following: +@@ -4117,7 +4117,7 @@ is initialized with a callable object equivalent to the following: Let \tcode{sndr} and \tcode{env} be subexpressions, and let \tcode{Sndr} be \tcode{decltype((sndr))}. If @@ -11944,7 +11794,7 @@ index d141246e..1730edd5 100644 is \tcode{false}, then the expression \tcode{\exposid{let-cpo}.transform_env(sndr, env)} is ill-formed. -@@ -4338,7 +4338,7 @@ try { +@@ -4732,7 +4732,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -11953,7 +11803,7 @@ index d141246e..1730edd5 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -4651,7 +4651,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. +@@ -5775,7 +5775,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. \pnum For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. @@ -11962,29 +11812,11 @@ index d141246e..1730edd5 100644 is \tcode{false}, the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: -@@ -4722,7 +4722,7 @@ is \tcode{true}, where $e$ is the \tcode{ap\-ply_sender} expression above. - - \pnum - If \tcode{\exposconcept{callable}} is \tcode{false}, --the expression \tcode{sync_wait_with_variant.apply_sender(\linebreak sndr)} is ill-formed. -+the expression \tcode{sync_wait_with_variant.apply_sender(sndr)} is ill-formed. - Otherwise, it is equivalent to: - \begin{codeblock} - using result_type = @\exposid{sync-wait-with-variant-result-type}@; -@@ -4962,7 +4962,7 @@ Let \tcode{Vs} be a pack of the types in the \exposid{type-list} named by - Let \tcode{Es} be a pack of the types in the \exposid{type-list} named by - \tcode{\exposid{gather-signatures}}, - where \exposid{error-list} is an alias template --such that \tcode{\exposid{error-list}<\linebreak Ts...>} is -+such that \tcode{\exposid{error-list}} is - \tcode{\exposid{type-list}...>}. - - \pnum diff --git a/source/memory.tex b/source/memory.tex -index 2d81c518..8c64e657 100644 +index fb24bbe3..15c181cc 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1255,7 +1255,7 @@ A \tcode{tuple} value determined as follows: +@@ -1371,7 +1371,7 @@ A \tcode{tuple} value determined as follows: \begin{itemize} \item If \tcode{uses_allocator_v, Alloc>} is \tcode{false} and @@ -11993,7 +11825,7 @@ index 2d81c518..8c64e657 100644 return \tcode{forward_as_tuple(std::forward(args)...)}. \item Otherwise, if \tcode{uses_allocator_v, Alloc>} is \tcode{true} and -@@ -4188,7 +4188,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje +@@ -4332,7 +4332,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje the allocator \tcode{a} passed to \tcode{allocate_shared}. \item When a (sub)object of non-array type \tcode{U} is initialized by @@ -12002,7 +11834,7 @@ index 2d81c518..8c64e657 100644 \tcode{allocate_shared_for_overwrite}, it is initialized via the expression \tcode{::new(pv) U}, where \tcode{pv} has type \tcode{void*} and -@@ -5423,7 +5423,7 @@ if (p) { +@@ -5567,7 +5567,7 @@ if (p) { \end{codeblock} if the expression \tcode{s.reset(static_cast(p), std::forward(args)...)} @@ -12012,10 +11844,10 @@ index 2d81c518..8c64e657 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index bbe21840..71ecd729 100644 +index 27831f74..81f32de8 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -2184,7 +2184,7 @@ present as follows: +@@ -2530,7 +2530,7 @@ present as follows: \item Let \tcode{R} be \tcode{\placeholdernc{COMMON-REF}(T1, T2)}. If \tcode{T1} and \tcode{T2} are reference types, \tcode{R} is well-formed, and @@ -12025,10 +11857,10 @@ index bbe21840..71ecd729 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index 57b2e5a8..05ccf975 100644 +index 021e5dbb..be582f6f 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -13781,7 +13781,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. +@@ -13802,7 +13802,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -12037,7 +11869,7 @@ index 57b2e5a8..05ccf975 100644 \pnum \returns -@@ -13987,7 +13987,7 @@ template +@@ -14008,7 +14008,7 @@ template \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -12047,10 +11879,10 @@ index 57b2e5a8..05ccf975 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 24fc04eb..1705fe1a 100644 +index 8b0f4e38..fccb59d1 100644 --- a/source/ranges.tex +++ b/source/ranges.tex -@@ -1446,7 +1446,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, +@@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, regardless of the evaluation of \tcode{ranges::begin(t)}. \begin{note} \tcode{ranges::reserve_hint(t)} is otherwise not required to be well-defined @@ -12059,7 +11891,7 @@ index 24fc04eb..1705fe1a 100644 For example, it is possible for \tcode{ranges::reserve_hint(t)} to be well-defined for an \libconceptx{approximate\-ly_sized_range}{approximately_sized_range} whose -@@ -3637,7 +3637,7 @@ constexpr explicit repeat_view(piecewise_construct_t, +@@ -3671,7 +3671,7 @@ constexpr explicit repeat_view(piecewise_construct_t, Initializes \exposid{value_} with \tcode{make_from_tuple(std::move(value_args))} and @@ -12068,7 +11900,7 @@ index 24fc04eb..1705fe1a 100644 \tcode{make_from_tuple(std::move(bound_args))}. The behavior is undefined if \tcode{Bound} is not \tcode{unreachable_sentinel_t} and -@@ -5879,7 +5879,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} +@@ -5913,7 +5913,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} that models \libconcept{random_access_range} and \libconcept{sized_range}, then \tcode{iota_view(*ranges::begin(E), @@ -12077,7 +11909,7 @@ index 24fc04eb..1705fe1a 100644 except that \tcode{E} is evaluated only once. \item -@@ -6355,7 +6355,7 @@ if \tcode{T} is +@@ -6389,7 +6389,7 @@ if \tcode{T} is a specialization of \tcode{subrange} that models \libconcept{random_access_range} and \libconcept{sized_range}, then @@ -12086,7 +11918,7 @@ index 24fc04eb..1705fe1a 100644 \exposid{to-unsigned-like}(ranges::distance(E) - std::min(ranges::distance(E), F)))}, except that \tcode{E} and \tcode{F} are each evaluated only once. -@@ -7405,7 +7405,7 @@ Let \placeholder{OUTERC} denote +@@ -7441,7 +7441,7 @@ Let \placeholder{OUTERC} denote let \placeholder{INNERC} denote \tcode{iterator_traits<\exposid{InnerIter}>::iterator_category}, and let \placeholder{PATTERNC} denote @@ -12095,7 +11927,7 @@ index 24fc04eb..1705fe1a 100644 \item If \begin{codeblock} -@@ -7904,7 +7904,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); +@@ -7950,7 +7950,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -12104,7 +11936,7 @@ index 24fc04eb..1705fe1a 100644 \end{itemdescr} \rSec3[range.lazy.split.outer]{Class template \tcode{lazy_split_view::\exposid{outer-iterator}}} -@@ -8215,7 +8215,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: +@@ -8261,7 +8261,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: \begin{itemize} \item \tcode{forward_iterator_tag} if @@ -12113,7 +11945,7 @@ index 24fc04eb..1705fe1a 100644 \tcode{\libconcept{derived_from}}; \item otherwise, \tcode{iterator_traits>::iterator_category}. \end{itemize} -@@ -8435,7 +8435,7 @@ constexpr explicit split_view(R&& r, range_value_t e); +@@ -8481,7 +8481,7 @@ constexpr explicit split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -12122,7 +11954,7 @@ index 24fc04eb..1705fe1a 100644 \end{itemdescr} \indexlibrarymember{begin}{split_view} -@@ -8999,7 +8999,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. +@@ -9046,7 +9046,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. \item Otherwise, if \tcode{\exposconcept{all-forward}} is modeled, @@ -12131,7 +11963,7 @@ index 24fc04eb..1705fe1a 100644 \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} -@@ -9025,14 +9025,14 @@ let \tcode{Cs} denote the pack of types +@@ -9072,14 +9072,14 @@ let \tcode{Cs} denote the pack of types \begin{itemize} \item If @@ -12149,7 +11981,7 @@ index 24fc04eb..1705fe1a 100644 \item Otherwise, if \tcode{(\libconcept{derived_from} \&\& ...)} -@@ -9484,11 +9484,11 @@ Let +@@ -9531,11 +9531,11 @@ Let %FIXME This is hard to parse. If \tcode{$i_\tcode{x}$ > $i_\tcode{y}$}, let \tcode{$d_\tcode{y}$} be @@ -12164,7 +11996,7 @@ index 24fc04eb..1705fe1a 100644 for every integer \tcode{$i$} in the range \range{$i_\tcode{y}$ + 1}{$i_\tcode{x}$} if there is any, and -@@ -9531,7 +9531,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul +@@ -9578,7 +9578,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul Let \tcode{$i_\tcode{x}$} denote \tcode{x.\exposid{it_}.index()}, \tcode{$d_\tcode{x}$} be @@ -12173,7 +12005,7 @@ index 24fc04eb..1705fe1a 100644 Let \tcode{$s$} denote the sum of the sizes of all the ranges \tcode{std::get<$i$>(x.\exposid{parent_}->\exposid{views_})} for every integer \tcode{$i$} in the range -@@ -9688,7 +9688,7 @@ is expression-equivalent to: +@@ -9735,7 +9735,7 @@ is expression-equivalent to: \begin{itemize} \item If \tcode{T} models \libconcept{contiguous_iterator}, @@ -12182,7 +12014,7 @@ index 24fc04eb..1705fe1a 100644 \item Otherwise, if \tcode{T} models \libconcept{random_access_iterator}, -@@ -13353,7 +13353,7 @@ is defined as follows: +@@ -13431,7 +13431,7 @@ is defined as follows: \item If \tcode{invoke_result_t<\exposid{maybe-const}\&, \exposid{REPEAT}(range_reference_t<\exposid{Base}>, N)...>} @@ -12191,7 +12023,7 @@ index 24fc04eb..1705fe1a 100644 \tcode{iterator_category} denotes \tcode{input_iterator_tag}. \item Otherwise, let \tcode{C} denote the type -@@ -14439,7 +14439,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ +@@ -14542,7 +14542,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ \effects Initializes \exposid{current_} with \tcode{current}, \exposid{end_} with \tcode{ranges::end(parent->\exposid{base_})}, @@ -12201,10 +12033,10 @@ index 24fc04eb..1705fe1a 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index b16503f4..3f35f11a 100644 +index f538f650..39025707 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -3412,7 +3412,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, +@@ -3517,7 +3517,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12213,7 +12045,7 @@ index b16503f4..3f35f11a 100644 \pnum \effects -@@ -4420,7 +4420,7 @@ For the \tcode{volatile} overload of this function, +@@ -4792,7 +4792,7 @@ For the \tcode{volatile} overload of this function, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12222,7 +12054,7 @@ index b16503f4..3f35f11a 100644 \pnum \effects -@@ -5579,7 +5579,7 @@ bool compare_exchange_strong(shared_ptr& expected, shared_ptr desired, +@@ -6313,7 +6313,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12231,7 +12063,7 @@ index b16503f4..3f35f11a 100644 \pnum \effects -@@ -5892,7 +5892,7 @@ bool compare_exchange_strong(weak_ptr& expected, weak_ptr desired, +@@ -6629,7 +6629,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12241,10 +12073,10 @@ index b16503f4..3f35f11a 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index 44c92b72..895b43b3 100644 +index 76b19166..a53d2ff0 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -2061,7 +2061,7 @@ equals \tcode{tuple_size_v>}, +@@ -2062,7 +2062,7 @@ equals \tcode{tuple_size_v>}, \item \tcode{(is_constructible_v(std::forward(u)))> \&\& ...)} @@ -12253,7 +12085,7 @@ index 44c92b72..895b43b3 100644 \tcode{true}, and \item -@@ -3082,7 +3082,7 @@ struct basic_common_reference { +@@ -3075,7 +3075,7 @@ struct basic_common_reference { denotes a type. \end{itemize} The member \grammarterm{typedef-name} \tcode{type} denotes the type @@ -12262,7 +12094,7 @@ index 44c92b72..895b43b3 100644 \end{itemdescr} \indexlibrarymember{common_type}{tuple}% -@@ -4063,7 +4063,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and +@@ -4067,7 +4067,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and \pnum All requirements on container iterators\iref{container.reqmts} apply to @@ -12271,7 +12103,7 @@ index 44c92b72..895b43b3 100644 \pnum Any operation that initializes or destroys the contained value of an optional object invalidates all iterators into that object. -@@ -8418,7 +8418,7 @@ constexpr const T&& value() const &&; +@@ -8975,7 +8975,7 @@ constexpr const T&& value() const &&; \pnum \mandates \tcode{is_copy_constructible_v} is \tcode{true} and @@ -12280,7 +12112,7 @@ index 44c92b72..895b43b3 100644 \pnum \returns -@@ -14432,7 +14432,7 @@ that models \libconcept{copyable}. +@@ -14989,7 +14989,7 @@ that models \libconcept{copyable}. \pnum Within \ref{func.wrap.ref}, \tcode{\placeholder{call-args}} is an argument pack with elements such that @@ -12292,3 +12124,54 @@ index 44c92b72..895b43b3 100644 -- 2.43.0 + +From 98949e2e6dd60065b463a4b2a718ad8a8b6bb118 Mon Sep 17 00:00:00 2001 +From: timsong-cpp +Date: Fri, 25 Jul 2025 00:06:14 -0500 +Subject: [PATCH 10/10] Revert "[intro] Special page header before Clause 1 + (#6070)" + +This reverts commit 0b41c12760d8079ee4c460df6ddecaf220f2dfb6. +--- + source/intro.tex | 11 ----------- + source/layout.tex | 2 +- + 2 files changed, 1 insertion(+), 12 deletions(-) + +diff --git a/source/intro.tex b/source/intro.tex +index abc66134..4d40f89b 100644 +--- a/source/intro.tex ++++ b/source/intro.tex +@@ -1,17 +1,6 @@ + %!TEX root = std.tex + +-\clearpage +-\bigskip\noindent\textlarger{\textbf{Programming languages --- \Cpp{}}} +-\bigskip\bigskip +- +-\begingroup +-\let\clearpage\relax + \rSec0[intro.scope]{Scope} +-\endgroup +-\copypagestyle{cpppageone}{cpppage} +-\makeoddhead{cpppageone}{\textbf{WORKING DRAFT}}{}{\leaders\hrule height 2pt\hfill\kern0pt\\\textbf{\docno}} +-\makeheadrule{cpppageone}{\textwidth}{2pt} +-\thispagestyle{cpppageone} + + \pnum + \indextext{scope|(}% +diff --git a/source/layout.tex b/source/layout.tex +index 98564d8b..1f82bd20 100644 +--- a/source/layout.tex ++++ b/source/layout.tex +@@ -10,7 +10,7 @@ + %%-------------------------------------------------- + %% set header and footer positions and sizes + +-\setheadfoot{3\onelineskip}{4\onelineskip} ++\setheadfoot{\onelineskip}{4\onelineskip} + \setheaderspaces{*}{2\onelineskip}{*} + + %%-------------------------------------------------- +-- +2.43.0 + diff --git a/htmlgen_code.patch b/htmlgen_code.patch new file mode 100644 index 0000000000..a500da21f6 --- /dev/null +++ b/htmlgen_code.patch @@ -0,0 +1,38 @@ +From 6c9496d048c4c3534524ea3212c780776844f025 Mon Sep 17 00:00:00 2001 +From: timsong-cpp +Date: Fri, 25 Jul 2025 09:03:35 -0500 +Subject: [PATCH] Handle \bot + +--- + RawDocument.hs | 2 +- + Render.hs | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/RawDocument.hs b/RawDocument.hs +index c1f82bc..935878c 100644 +--- a/RawDocument.hs ++++ b/RawDocument.hs +@@ -195,7 +195,7 @@ storeCmds = + "phi int theta zeta FlushAndPrintGrammar break backslash centering " ++ + "normalbaselineskip land lor mapsto normalfont textmu tablerefname figurerefname newline " ++ + "obeyspaces bnfindent vdots tabcolsep columnbreak emergencystretch commentellip " ++ +- "gamma widowpenalties sffamily parskip left right `") ++ "gamma widowpenalties sffamily parskip left right bot `") + , (1, "hspace footnote textit textrm textnormal texttt textbf ensuremath ref ref* mbox bibitem mathop " ++ + "terminal literalterminal noncxxterminal textsl textsc textsf text term overline " ++ + "tcode noncxxtcode literaltcode footnotetext microtypesetup cline mathtt mathit mathrm mathsf " ++ +diff --git a/Render.hs b/Render.hs +index 4b34cb6..2df6e74 100644 +--- a/Render.hs ++++ b/Render.hs +@@ -128,6 +128,7 @@ simpleMacros = + , (">" , " ") + , ("bnfindent" , "   ") + , ("\n" , "\n") ++ , ("bot" , "⊥") + ] + ++ [(n, Text.pack [c]) | (n, c) <- greekAlphabet] + +-- +2.43.0 + diff --git a/lastbuild.sig b/lastbuild.sig index 68ff4fcd2a..f6ca263c54 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,4 @@ htmlgen eee5307c45c04761ef5c27956cbed742e08e5fb4 -draft ac78ae76c579883a32a9eb5b00346150a41e8e47 -ee2954f9c7635674003d9c2892fb2b5776fe4f95 htmlgen.patch +draft 454ba171cb14531639e641cb1200617fbf8d943f +91135fa8481acf3787c89864b8c715e925279fbb htmlgen.patch +cc80936cb44795c5712f5b4d193389be54551403 htmlgen_code.patch From a543aa62e37b18eba67f725d11c22fa90cfd3c22 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Fri, 1 Aug 2025 02:15:12 -0500 Subject: [PATCH 14/36] Update --- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 431 ++++++++++++++++++++++++-------------------------- lastbuild.sig | 4 +- 4 files changed, 214 insertions(+), 225 deletions(-) diff --git a/draft b/draft index 454ba171cb..e4a7f6da57 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 454ba171cb14531639e641cb1200617fbf8d943f +Subproject commit e4a7f6da57891013ed378672c470970d95ea190e diff --git a/gh-pages b/gh-pages index 3583928dd9..ab5693fc2a 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 3583928dd9a445d9c9870bd565fa2db9ad21bbcf +Subproject commit ab5693fc2a7154ade14e4e7abc80c5b38a0cd7fc diff --git a/htmlgen.patch b/htmlgen.patch index 4b2137add5..6587411e6d 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From b4d8ee6d649994aafd969b8b42a1f511e00b3f48 Mon Sep 17 00:00:00 2001 +From 9a6ef05469016f4ebf7f3e5bb5c19cf6a8df4f06 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout @@ -10,7 +10,7 @@ Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index c5ad9eb0..a5e431a0 100644 +index a1b8f00c..326cf97f 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -314,7 +314,7 @@ Given @@ -59,7 +59,7 @@ index c5ad9eb0..a5e431a0 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 51ff9a3c..77878571 100644 +index edd0ad86..11dfe14b 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2924,7 +2924,7 @@ struct s2 { @@ -75,7 +75,7 @@ index 51ff9a3c..77878571 100644 2.43.0 -From d2066d5b092f42e8ebb3d97b8006c77484caaba8 Mon Sep 17 00:00:00 2001 +From 0017500dd3bb021bbe0beda5a01d682db38b6d86 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 Subject: [PATCH 02/10] Use new link macros. @@ -95,7 +95,7 @@ Subject: [PATCH 02/10] Use new link macros. source/intro.tex | 19 +-- source/iostreams.tex | 74 +++++------ source/iterators.tex | 8 +- - source/lex.tex | 10 +- + source/lex.tex | 6 +- source/lib-intro.tex | 71 +++++------ source/limits.tex | 2 +- source/numerics.tex | 60 +++++---- @@ -108,10 +108,10 @@ Subject: [PATCH 02/10] Use new link macros. source/threads.tex | 45 ++++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 609 insertions(+), 618 deletions(-) + 27 files changed, 607 insertions(+), 616 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index f4e3bec3..9f29a804 100644 +index 43aac8ff..7ded19bb 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -123,7 +123,7 @@ index f4e3bec3..9f29a804 100644 \pnum The following subclauses describe components for -@@ -10228,7 +10228,7 @@ In either case, twice as many projections as comparisons. +@@ -10222,7 +10222,7 @@ In either case, twice as many projections as comparisons. \pnum \remarks @@ -133,7 +133,7 @@ index f4e3bec3..9f29a804 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index a5e431a0..be952625 100644 +index 326cf97f..c83a9d0b 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -155,7 +155,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -1221,7 +1221,7 @@ index ba2d34d0..cd476d28 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index 77878571..45f82de6 100644 +index 11dfe14b..98aac71a 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1655,7 +1655,7 @@ index 77878571..45f82de6 100644 performed on \tcode{v}, other than as specified below. Conversions that can be performed explicitly using \keyword{const_cast} are listed below. No other conversion shall be -@@ -5619,7 +5620,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside +@@ -5622,7 +5623,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside The \keyword{sizeof} operator yields the number of bytes occupied by a non-potentially-overlapping object of the type of its operand. The operand is either an expression, @@ -1664,7 +1664,7 @@ index 77878571..45f82de6 100644 \grammarterm{type-id}. \indextext{type!incomplete}% The \keyword{sizeof} operator shall not be applied to an expression that -@@ -5674,7 +5675,7 @@ array-to-pointer\iref{conv.array}, and +@@ -5677,7 +5678,7 @@ array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} standard conversions are not applied to the operand of \keyword{sizeof}. If the operand is a prvalue, @@ -1673,7 +1673,7 @@ index 77878571..45f82de6 100644 is applied. \pnum -@@ -5819,7 +5820,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. +@@ -5822,7 +5823,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. \end{bnf} \pnum @@ -1682,7 +1682,7 @@ index 77878571..45f82de6 100644 a placeholder for a deduced class type\iref{dcl.type.class.deduct} appears in the \grammarterm{type-specifier-seq} of a \grammarterm{new-type-id} or -@@ -5947,7 +5948,7 @@ is less than zero; +@@ -5950,7 +5951,7 @@ is less than zero; \item its value is such that the size of the allocated object would exceed the @@ -1691,7 +1691,7 @@ index 77878571..45f82de6 100644 \item the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} and the -@@ -5972,7 +5973,7 @@ is the null pointer value of the required result type; +@@ -5975,7 +5976,7 @@ is the null pointer value of the required result type; \item otherwise, the \grammarterm{new-expression} terminates by throwing an exception of a type that would match a handler\iref{except.handle} of type @@ -1700,7 +1700,7 @@ index 77878571..45f82de6 100644 \end{itemize} \end{itemize} When the value of the \grammarterm{expression} is zero, the allocation -@@ -6023,8 +6024,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( +@@ -6026,8 +6027,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( A \grammarterm{new-expression} may obtain storage for the object by calling an allocation function\iref{basic.stc.dynamic.allocation}. If the \grammarterm{new-expression} terminates by throwing an exception, it @@ -1711,7 +1711,7 @@ index 77878571..45f82de6 100644 is a non-array type, the allocation function's name is \indextext{\idxcode{operator new}}% \indextext{\idxcode{operator delete}}% -@@ -6135,7 +6136,7 @@ the difference between the +@@ -6138,7 +6139,7 @@ the difference between the result of the \grammarterm{new-expression} and the address returned by the allocation function shall be an integral multiple of the strictest fundamental @@ -1720,7 +1720,7 @@ index 77878571..45f82de6 100644 is no greater than the size of the array being created. \begin{note} \indextext{allocation!alignment storage}% -@@ -6226,7 +6227,7 @@ invocation of \keyword{new} to another. +@@ -6229,7 +6230,7 @@ invocation of \keyword{new} to another. \pnum \begin{note} Unless an allocation function has a non-throwing @@ -1729,7 +1729,7 @@ index 77878571..45f82de6 100644 it indicates failure to allocate storage by throwing a \indextext{\idxcode{bad_alloc}}% \indexlibraryglobal{bad_alloc}% -@@ -6372,8 +6373,8 @@ to both the allocation and deallocation functions. +@@ -6375,8 +6376,8 @@ to both the allocation and deallocation functions. \pnum \indextext{expression!\idxcode{delete}}% \indextext{\idxcode{delete}}% @@ -1740,7 +1740,7 @@ index 77878571..45f82de6 100644 \grammarterm{new-expression}. \begin{bnf} -@@ -6476,8 +6477,8 @@ null pointer value, then: +@@ -6479,8 +6480,8 @@ null pointer value, then: \item If the allocation call for the \grammarterm{new-expression} for the object to be deleted was not omitted and the allocation was not extended\iref{expr.new}, the @@ -1751,7 +1751,7 @@ index 77878571..45f82de6 100644 allocation call of the \grammarterm{new-expression} shall be passed as the first argument to the deallocation function. -@@ -7062,8 +7063,8 @@ The result of a \tcode{.*} expression +@@ -7065,8 +7066,8 @@ The result of a \tcode{.*} expression whose second operand is a pointer to a data member is an lvalue if the first operand is an lvalue and an xvalue otherwise. The result of a \tcode{.*} expression whose second operand is a pointer to a member function is a prvalue. @@ -1762,7 +1762,7 @@ index 77878571..45f82de6 100644 \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -7092,7 +7093,7 @@ left-to-right. +@@ -7095,7 +7096,7 @@ left-to-right. \pnum The operands of \tcode{*} and \tcode{/} shall have arithmetic or unscoped enumeration type; the operands of \tcode{\%} shall have integral or unscoped @@ -1771,7 +1771,7 @@ index 77878571..45f82de6 100644 operands and determine the type of the result. \pnum -@@ -7228,7 +7229,7 @@ the behavior is undefined\iref{expr.pre}. +@@ -7231,7 +7232,7 @@ the behavior is undefined\iref{expr.pre}. \pnum For addition or subtraction, if the expressions \tcode{P} or \tcode{Q} have type ``pointer to \cv{}~\tcode{T}'', where \tcode{T} and the array element type @@ -1780,7 +1780,7 @@ index 77878571..45f82de6 100644 \begin{example} \begin{codeblock} int arr[5] = {1, 2, 3, 4, 5}; -@@ -7319,12 +7320,12 @@ and the other is not, the program is ill-formed. +@@ -7322,12 +7323,12 @@ and the other is not, the program is ill-formed. If both operands have arithmetic types, or one operand has integral type and the other operand has unscoped enumeration type, @@ -1795,7 +1795,7 @@ index 77878571..45f82de6 100644 other than from an integral type to a floating-point type, the program is ill-formed. -@@ -7366,13 +7367,13 @@ the other operand is of object pointer or array type, +@@ -7369,13 +7370,13 @@ the other operand is of object pointer or array type, array-to-pointer conversions\iref{conv.array}, pointer conversions\iref{conv.ptr}, and @@ -1811,7 +1811,7 @@ index 77878571..45f82de6 100644 \end{note} In this case, \tcode{p <=> q} is of type \tcode{std::strong_ordering} and -@@ -7461,7 +7462,7 @@ pointer conversions\iref{conv.ptr}, +@@ -7464,7 +7465,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring @@ -1820,7 +1820,7 @@ index 77878571..45f82de6 100644 After conversions, the operands shall have the same type. \pnum -@@ -7546,10 +7547,10 @@ same type after the specified conversions have been applied. +@@ -7549,10 +7550,10 @@ same type after the specified conversions have been applied. \indextext{comparison!pointer}% \indextext{comparison!pointer to function}% If at least one of the converted operands is a pointer, @@ -1835,7 +1835,7 @@ index 77878571..45f82de6 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -7566,7 +7567,8 @@ the result of the comparison is unspecified. +@@ -7569,7 +7570,8 @@ the result of the comparison is unspecified. \item Otherwise, if the pointers are both null, both point to the same \indextext{address}% @@ -1845,7 +1845,7 @@ index 77878571..45f82de6 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -7611,12 +7613,12 @@ bool b1 = (bx == cx); // unspecified +@@ -7614,12 +7616,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -1860,7 +1860,7 @@ index 77878571..45f82de6 100644 indirection with a hypothetical object of the associated class type were performed, otherwise they compare unequal. \begin{example} -@@ -7856,7 +7858,7 @@ Otherwise, if the second and third operand have different types and +@@ -7859,7 +7861,7 @@ Otherwise, if the second and third operand have different types and either has (possibly cv-qualified) class type, or if both are glvalues of the same value category and the same type except for cv-qualification, an attempt is made to @@ -1869,7 +1869,7 @@ index 77878571..45f82de6 100644 each of those operands to the type of the other. \begin{note} Properties such as access, whether an operand is a bit-field, or whether -@@ -7898,9 +7900,9 @@ denotes the cv-qualifiers of \tcode{T1}; +@@ -7901,9 +7903,9 @@ denotes the cv-qualifiers of \tcode{T1}; \item otherwise, the target type is the type that \tcode{E2} would have after applying the @@ -1882,7 +1882,7 @@ index 77878571..45f82de6 100644 standard conversions. \end{itemize} \end{itemize} -@@ -7941,8 +7943,8 @@ are used in place of the original operands for the remainder of this +@@ -7944,8 +7946,8 @@ are used in place of the original operands for the remainder of this subclause. \pnum @@ -1893,7 +1893,7 @@ index 77878571..45f82de6 100644 performed on the second and third operands. After those conversions, one of the following shall hold: -@@ -7951,16 +7953,16 @@ of the following shall hold: +@@ -7954,16 +7956,16 @@ of the following shall hold: that type and the result is copy-initialized using the selected operand. \item The second and third operands have arithmetic or enumeration type; @@ -1916,7 +1916,7 @@ index 77878571..45f82de6 100644 pointer type. \item One or both of the second and third operands have pointer-to-member type; -@@ -8144,7 +8146,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. +@@ -8147,7 +8149,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. \pnum \indextext{assignment!conversion by}% If the right operand is an expression, it is implicitly @@ -1925,7 +1925,7 @@ index 77878571..45f82de6 100644 operand. \pnum -@@ -8158,7 +8160,7 @@ resulting value of the bit-field is +@@ -8161,7 +8163,7 @@ resulting value of the bit-field is An assignment whose left operand is of a volatile-qualified type is deprecated\iref{depr.volatile.type} unless the (possibly parenthesized) assignment is a discarded-value expression or @@ -1934,7 +1934,7 @@ index 77878571..45f82de6 100644 \pnum The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} -@@ -8230,7 +8232,7 @@ The comma operator groups left-to-right. +@@ -8233,7 +8235,7 @@ The comma operator groups left-to-right. A pair of expressions separated by a comma is evaluated left-to-right; the left expression is @@ -1943,7 +1943,7 @@ index 77878571..45f82de6 100644 The left expression is sequenced before the right expression\iref{intro.execution}. \indextext{operator!side effects and comma}% -@@ -8264,7 +8266,7 @@ Certain contexts require expressions that satisfy additional +@@ -8267,7 +8269,7 @@ Certain contexts require expressions that satisfy additional requirements as detailed in this subclause; other contexts have different semantics depending on whether or not an expression satisfies these requirements. Expressions that satisfy these requirements, @@ -1952,7 +1952,7 @@ index 77878571..45f82de6 100644 are called \indexdefn{expression!constant}% \defnx{constant expressions}{constant expression}. -@@ -8447,9 +8449,9 @@ a temporary object of non-volatile const-qualified literal type +@@ -8450,9 +8452,9 @@ a temporary object of non-volatile const-qualified literal type whose lifetime is extended\iref{class.temporary} to that of a variable that is usable in constant expressions at $P$, \item @@ -1964,7 +1964,7 @@ index 77878571..45f82de6 100644 \item a non-mutable subobject of any of the above, or \item -@@ -8540,7 +8542,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. +@@ -8543,7 +8545,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -1973,7 +1973,7 @@ index 77878571..45f82de6 100644 it is applied to \begin{itemize} \item -@@ -8562,7 +8564,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -8565,7 +8567,7 @@ that refers to a non-active member of a union or a subobject thereof; \item an lvalue-to-rvalue conversion that is applied to @@ -1982,7 +1982,7 @@ index 77878571..45f82de6 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -8935,7 +8937,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -8938,7 +8940,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte Such expressions can be used as bit-field lengths\iref{class.bit}, as enumerator initializers if the underlying type is not fixed\iref{dcl.enum}, @@ -1991,7 +1991,7 @@ index 77878571..45f82de6 100644 \end{note} \pnum -@@ -9436,7 +9438,7 @@ if it is: +@@ -9439,7 +9441,7 @@ if it is: a manifestly constant-evaluated expression, \item @@ -2000,7 +2000,7 @@ index 77878571..45f82de6 100644 \item an immediate subexpression of a \grammarterm{braced-init-list}, -@@ -9463,7 +9465,9 @@ A function or variable is +@@ -9466,7 +9468,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -2108,7 +2108,7 @@ index e4014b96..abc66134 100644 translation units to form a complete \Cpp{} program\iref{lex.phases}.% \indextext{conformance requirements!library|)} diff --git a/source/iostreams.tex b/source/iostreams.tex -index 4e61b9be..a7c59c26 100644 +index 7381d9c3..987b4d2d 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -555,7 +555,7 @@ is initialized, @@ -2482,7 +2482,7 @@ index e0116c79..7acd9d21 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index 7c818101..dad2c6a2 100644 +index 7c818101..372fc8c2 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2496,17 +2496,6 @@ index 7c818101..dad2c6a2 100644 directive \tcode{\#include}, less any source lines skipped by any of the conditional inclusion\iref{cpp.cond} preprocessing directives, as modified by the implementation-defined behavior of any -@@ -39,8 +39,8 @@ if any, is - called a \defnadj{preprocessing}{translation unit}. - \begin{note} - A \Cpp{} program need not all be translated at the same time. --Translation units can be separately translated and then later linked --to produce an executable program\iref{basic.link}. -+Translation units can be separately translated and then later \link{linked}{basic.link} -+to produce an executable program. - \end{note} - \indextext{compilation!separate|)} - @@ -2294,7 +2294,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) \pnum If \placeholder{L} is a \grammarterm{user-defined-character-literal}, let \placeholder{ch} be the @@ -2517,7 +2506,7 @@ index 7c818101..dad2c6a2 100644 literal \placeholder{L} is treated as a call of the form diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 7d6d3012..9c2a79b8 100644 +index c6339101..c3fcf8d5 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2780,7 +2769,7 @@ index bdc1f3de..efd4eb00 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index da32b9a2..e0a5e89d 100644 +index 7b1f65de..4457140a 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -3330,7 +3319,7 @@ index 38c59533..a6fd4d0f 100644 \end{description} diff --git a/source/statements.tex b/source/statements.tex -index 18bd3aca..6bc31cb2 100644 +index 34018bd6..785798f7 100644 --- a/source/statements.tex +++ b/source/statements.tex @@ -222,7 +222,7 @@ Expression statements have the form @@ -3383,7 +3372,7 @@ index 18bd3aca..6bc31cb2 100644 if that conversion is ill-formed, the program is ill-formed. \pnum -@@ -1008,8 +1008,8 @@ Jump statements unconditionally transfer control. +@@ -1009,8 +1009,8 @@ Jump statements unconditionally transfer control. \indextext{local variable!destruction of}% \indextext{scope!destructor and exit from}% \begin{note} @@ -3394,7 +3383,7 @@ index 18bd3aca..6bc31cb2 100644 in the reverse order of their construction\iref{stmt.dcl}. For temporaries, see~\ref{class.temporary}. However, the program can be terminated (by calling -@@ -1079,7 +1079,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; +@@ -1080,7 +1080,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; the \tcode{return} statement initializes the returned reference or prvalue result object of the (explicit or implicit) function call @@ -3403,7 +3392,7 @@ index 18bd3aca..6bc31cb2 100644 \begin{note} A constructor or destructor does not have a return type. \end{note} -@@ -1212,7 +1212,7 @@ results in undefined behavior. +@@ -1213,7 +1213,7 @@ results in undefined behavior. The \tcode{goto} statement unconditionally transfers control to the statement labeled by the identifier. The identifier shall be a \indextext{label}% @@ -3412,7 +3401,7 @@ index 18bd3aca..6bc31cb2 100644 \rSec1[stmt.contract.assert]{Assertion statement} -@@ -1323,8 +1323,8 @@ lx: +@@ -1324,8 +1324,8 @@ lx: \indextext{initialization!local \tcode{static}}% \indextext{initialization!local \tcode{thread_local}}% Dynamic initialization of a block variable with @@ -3423,7 +3412,7 @@ index 18bd3aca..6bc31cb2 100644 the first time control passes through its declaration; such a variable is considered initialized upon the completion of its initialization. If the initialization exits by throwing an exception, the initialization is not -@@ -1367,8 +1367,8 @@ will be destroyed if and only if it was constructed. +@@ -1368,8 +1368,8 @@ will be destroyed if and only if it was constructed. \pnum There is an ambiguity in the grammar involving \grammarterm{expression-statement}{s} and \grammarterm{declaration}{s}: An @@ -3465,7 +3454,7 @@ index cc13d13f..e943eef1 100644 \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index f0277042..eeac4a21 100644 +index 19e19d6f..cee9e901 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -4195,7 +4184,7 @@ index 9ef3133a..3894c832 100644 \tcode{operator new}\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index 7ea4191b..4b2c5273 100644 +index 6202596d..b2e9462e 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4311,7 +4300,7 @@ index 7ea4191b..4b2c5273 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -11408,22 +11408,21 @@ the state object. +@@ -11405,22 +11405,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4338,7 +4327,7 @@ index 7ea4191b..4b2c5273 100644 \begin{note} This explicitly specifies that the result of the shared state is visible in the objects that reference this state in the sense of data race -@@ -11742,8 +11741,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -11739,8 +11738,8 @@ The class template \tcode{future} defines a type for asynchronous return objects do not share their shared state with other asynchronous return objects. A default-constructed \tcode{future} object has no shared state. A \tcode{future} object with shared state can be created by @@ -4349,7 +4338,7 @@ index 7ea4191b..4b2c5273 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -12053,7 +12052,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -12050,7 +12049,7 @@ object has no shared state. A \tcode{shared_future} object with shared state can be created by conversion from a \tcode{future} object and shares its shared state with the @@ -4358,7 +4347,7 @@ index 7ea4191b..4b2c5273 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -12502,7 +12501,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -12499,7 +12498,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -4506,7 +4495,7 @@ index 0a26e026..faf5d946 100644 2.43.0 -From 9c0922367d2937f1cbfade5e26da9203f9f1f307 Mon Sep 17 00:00:00 2001 +From 6ca4f417e91c75dc33c1da989c31995aaf9488af Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove @@ -4518,7 +4507,7 @@ Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index a7c59c26..0804ddd3 100644 +index 987b4d2d..8a5caca8 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -13919,7 +13919,7 @@ without an intervening \grammarterm{root-directory} element. @@ -4559,7 +4548,7 @@ index 3894c832..c17177bc 100644 2.43.0 -From 0ab03aaecca8d74ec38dd35d15a19e9651f5191e Mon Sep 17 00:00:00 2001 +From 3929c43d79a3bca6ad6d20f28703b0dfcfd12392 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code @@ -4590,7 +4579,7 @@ index cd476d28..df489ab5 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index dad2c6a2..542d3f30 100644 +index 372fc8c2..67fc8aaf 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -330,43 +330,43 @@ the numerical value has no other meaning in this context. @@ -5976,7 +5965,7 @@ index 2939c865..c37f5bba 100644 2.43.0 -From fdafb10b7fe732645af179694f0dde87f3b2b1f3 Mon Sep 17 00:00:00 2001 +From 028d09d4f951a2ba57932f1962ac9d8b9c989509 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. @@ -6011,10 +6000,10 @@ Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. 26 files changed, 272 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 9f29a804..1e39d96e 100644 +index 7ded19bb..a46b6385 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -8704,7 +8704,6 @@ but stronger than those for a partial ordering. +@@ -8698,7 +8698,6 @@ but stronger than those for a partial ordering. If we define \tcode{equiv(a, b)} as \tcode{!comp(a, b) \&\& !comp(b, a)}, then the requirements are that \tcode{comp} and \tcode{equiv} both be transitive relations: @@ -6022,7 +6011,7 @@ index 9f29a804..1e39d96e 100644 \begin{itemize} \item \tcode{comp(a, b) \&\& comp(b, c)} implies \tcode{comp(a, c)} \item \tcode{equiv(a, b) \&\& equiv(b, c)} implies \tcode{equiv(a, c)} -@@ -9753,7 +9752,6 @@ Let $N = \tcode{last - first}$: +@@ -9747,7 +9746,6 @@ Let $N = \tcode{last - first}$: For the parallel algorithm overloads, \bigoh{N \log N} swaps and \bigoh{N} applications of the predicate. \end{itemize} @@ -6030,7 +6019,7 @@ index 9f29a804..1e39d96e 100644 \end{itemdescr} \indexlibraryglobal{stable_partition}% -@@ -10893,7 +10891,6 @@ A random access range \range{a}{b} is a +@@ -10882,7 +10880,6 @@ A random access range \range{a}{b} is a {heap with respect to comp and proj@heap with respect to \tcode{comp} and \tcode{proj}} for a comparator and projection \tcode{comp} and \tcode{proj} if its elements are organized such that: @@ -6038,7 +6027,7 @@ index 9f29a804..1e39d96e 100644 \begin{itemize} \item With \tcode{$N$ = b - a}, for all $i$, $0 < i < N$, -@@ -13557,7 +13554,6 @@ template +@@ -13546,7 +13543,6 @@ template \pnum Some algorithms in this subclause are constrained with the following exposition-only concepts: @@ -6047,7 +6036,7 @@ index 9f29a804..1e39d96e 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index be952625..37b7b347 100644 +index c83a9d0b..e84497ce 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -284,7 +284,6 @@ int X::y = 1; // defines \tcode{X::y} @@ -6578,7 +6567,7 @@ index df489ab5..17fe2711 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 45f82de6..0bd95225 100644 +index 98aac71a..cd0d1cce 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -464,7 +464,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -6669,7 +6658,7 @@ index 45f82de6..0bd95225 100644 \begin{itemize} \item Converting a prvalue of type ``pointer to member function'' to a different pointer-to-member-function type and back to its original type -@@ -5452,7 +5441,6 @@ is called a \term{suspension context} of the function. +@@ -5455,7 +5444,6 @@ is called a \term{suspension context} of the function. \pnum Evaluation of an \grammarterm{await-expression} involves the following auxiliary types, expressions, and objects: @@ -6677,7 +6666,7 @@ index 45f82de6..0bd95225 100644 \begin{itemize} \item \placeholder{p} is an lvalue naming the promise -@@ -5833,7 +5821,6 @@ and +@@ -5836,7 +5824,6 @@ and the \grammarterm{new-expression}, then the allocated type is the type deduced for the variable \tcode{x} in the invented declaration\iref{dcl.spec.auto}: @@ -6685,7 +6674,7 @@ index 45f82de6..0bd95225 100644 \begin{codeblock} T x @\textrm{\placeholder{init}}@ ; \end{codeblock} -@@ -6185,7 +6172,6 @@ the alignment argument is removed from the argument list; +@@ -6188,7 +6175,6 @@ the alignment argument is removed from the argument list; otherwise, an argument that is the type's alignment and has type \tcode{std::align_val_t} is added into the argument list immediately after the first argument; @@ -6693,7 +6682,7 @@ index 45f82de6..0bd95225 100644 \end{itemize} and then overload resolution is performed again. -@@ -6263,7 +6249,6 @@ necessarily be the same as that of the block if the object is an array. +@@ -6266,7 +6252,6 @@ necessarily be the same as that of the block if the object is an array. \indextext{\idxcode{new}!default constructor and}% A \grammarterm{new-expression} that creates an object of type \tcode{T} initializes that object as follows: @@ -6701,7 +6690,7 @@ index 45f82de6..0bd95225 100644 \begin{itemize} \item If the \grammarterm{new-initializer} is omitted, the object is default-initialized\iref{dcl.init}. -@@ -6352,7 +6337,6 @@ struct S { +@@ -6355,7 +6340,6 @@ struct S { S* p = new (0) S; // error: non-placement deallocation function matches // placement allocation function \end{codeblock} @@ -6709,7 +6698,7 @@ index 45f82de6..0bd95225 100644 \end{example} \pnum -@@ -6472,7 +6456,6 @@ of their constructor; see~\ref{class.base.init}). +@@ -6475,7 +6459,6 @@ of their constructor; see~\ref{class.base.init}). \pnum If the value of the operand of the \grammarterm{delete-expression} is not a null pointer value, then: @@ -6717,7 +6706,7 @@ index 45f82de6..0bd95225 100644 \begin{itemize} \item If the allocation call for the \grammarterm{new-expression} for the object to -@@ -7322,7 +7305,6 @@ or one operand has integral type and +@@ -7325,7 +7308,6 @@ or one operand has integral type and the other operand has unscoped enumeration type, the \link{usual arithmetic conversions}{expr.arith.conv} are applied to the operands. Then: @@ -6725,7 +6714,7 @@ index 45f82de6..0bd95225 100644 \begin{itemize} \item If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, -@@ -7477,7 +7459,6 @@ is considered to be equivalent to a pointer to a hypothetical array element +@@ -7480,7 +7462,6 @@ is considered to be equivalent to a pointer to a hypothetical array element $n$ for this purpose. \end{footnote} is defined in terms of a partial order consistent with the following rules: @@ -6733,7 +6722,7 @@ index 45f82de6..0bd95225 100644 \begin{itemize} \item If two pointers point to different elements of the same array, or to subobjects thereof, the pointer to the element with the higher subscript -@@ -7490,7 +7471,6 @@ neither member is a subobject of zero size +@@ -7493,7 +7474,6 @@ neither member is a subobject of zero size and their class is not a union. \item Otherwise, neither pointer is required to compare greater than the other. @@ -6741,7 +6730,7 @@ index 45f82de6..0bd95225 100644 \end{itemize} \pnum -@@ -7552,7 +7532,6 @@ If at least one of the converted operands is a pointer, +@@ -7555,7 +7535,6 @@ If at least one of the converted operands is a pointer, \link{qualification conversions}{conv.qual} are performed on both operands to bring them to their \deflink{composite pointer type}{expr.type}. Comparing pointers is defined as follows: @@ -6749,7 +6738,7 @@ index 45f82de6..0bd95225 100644 \begin{itemize} \item If one pointer represents the address of a complete object, and another -@@ -7582,7 +7561,6 @@ qualification conversions\iref{conv.qual} +@@ -7585,7 +7564,6 @@ qualification conversions\iref{conv.qual} are performed on both operands to bring them to their composite pointer type\iref{expr.type}. Comparing pointers to members is defined as follows: @@ -6757,7 +6746,7 @@ index 45f82de6..0bd95225 100644 \begin{itemize} \item If two pointers to members are both the null member pointer value, they compare -@@ -7868,7 +7846,6 @@ Attempts are made to form an implicit conversion sequence +@@ -7871,7 +7849,6 @@ Attempts are made to form an implicit conversion sequence from an operand expression \tcode{E1} of type \tcode{T1} to a target type related to the type \tcode{T2} of the operand expression \tcode{E2} as follows: @@ -6765,7 +6754,7 @@ index 45f82de6..0bd95225 100644 \begin{itemize} \item If \tcode{E2} is an lvalue, the target type is ``lvalue reference to \tcode{T2}'', -@@ -7947,7 +7924,6 @@ subclause. +@@ -7950,7 +7927,6 @@ subclause. and \link{function-to-pointer}{conv.func} standard conversions are performed on the second and third operands. After those conversions, one of the following shall hold: @@ -6773,7 +6762,7 @@ index 45f82de6..0bd95225 100644 \begin{itemize} \item The second and third operands have the same type; the result is of that type and the result is copy-initialized using the selected operand. -@@ -7977,7 +7953,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. +@@ -7980,7 +7956,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. Both the second and third operands have type \tcode{std::nullptr_t} or one has that type and the other is a null pointer constant. The result is of type \tcode{std::nullptr_t}. @@ -6850,7 +6839,7 @@ index 4c6942b4..04969113 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index 0804ddd3..2bcd6f9a 100644 +index 8a5caca8..19837154 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -2102,14 +2102,12 @@ does nothing. @@ -7041,7 +7030,7 @@ index 7acd9d21..85213808 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 9c2a79b8..2b281173 100644 +index c3fcf8d5..729bd1dc 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -196,7 +196,6 @@ save space, items that do not apply to a Clause are omitted. @@ -7189,10 +7178,10 @@ index efd4eb00..12180661 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index afb0ae18..768a50eb 100644 +index 4b3d1682..0dd2d462 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1571,7 +1571,6 @@ when considered as an unevaluated operand. +@@ -1568,7 +1568,6 @@ when considered as an unevaluated operand. \pnum Let \exposid{pair-constructor} be an exposition-only class defined as follows: @@ -7200,7 +7189,7 @@ index afb0ae18..768a50eb 100644 \begin{codeblock} class @\exposid{pair-constructor}@ { using @\exposid{pair-type}@ = remove_cv_t; // \expos -@@ -3706,7 +3705,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a); +@@ -3703,7 +3702,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a); \tcode{is_move_constructible_v} is \tcode{true}, and \tcode{d(p)} is a well-formed expression. For the first two overloads: @@ -7209,7 +7198,7 @@ index afb0ae18..768a50eb 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index b9d9144c..c30353cd 100644 +index 81df5dfe..5c016e13 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -1943,7 +1943,6 @@ is_base_of_v // \tcode{false} @@ -7229,7 +7218,7 @@ index b9d9144c..c30353cd 100644 \item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}. diff --git a/source/numerics.tex b/source/numerics.tex -index e0a5e89d..b46401da 100644 +index 4457140a..52a0e3ec 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); @@ -7580,7 +7569,7 @@ index 2a606adf..8b0f4e38 100644 \item If \tcode{T} models \libconcept{contiguous_iterator}, diff --git a/source/statements.tex b/source/statements.tex -index 6bc31cb2..4426fbf0 100644 +index 785798f7..fa5898d3 100644 --- a/source/statements.tex +++ b/source/statements.tex @@ -730,7 +730,6 @@ exposition only; and @@ -7592,7 +7581,7 @@ index 6bc31cb2..4426fbf0 100644 \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are diff --git a/source/support.tex b/source/support.tex -index eeac4a21..e360471d 100644 +index cee9e901..09e93b10 100644 --- a/source/support.tex +++ b/source/support.tex @@ -2459,7 +2459,6 @@ This requirement is binding on any replacement versions of these functions. @@ -7920,7 +7909,7 @@ index c17177bc..fc802e62 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 4b2c5273..f78b53b1 100644 +index b2e9462e..bec330ff 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -7372,7 +7372,6 @@ and visible to other threads. @@ -8011,7 +8000,7 @@ index 4b2c5273..f78b53b1 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -11587,7 +11576,6 @@ shared state as \tcode{*this}. +@@ -11584,7 +11573,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -8019,7 +8008,7 @@ index 4b2c5273..f78b53b1 100644 \begin{itemize} \item \tcode{future_already_retrieved} if \tcode{get_future} has already been called on a \tcode{promise} with the same shared state as \tcode{*this}. -@@ -11650,7 +11638,6 @@ already has a stored value or exception. +@@ -11647,7 +11635,6 @@ already has a stored value or exception. \pnum \errors @@ -8027,7 +8016,7 @@ index 4b2c5273..f78b53b1 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -11990,7 +11977,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -11987,7 +11974,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -8035,7 +8024,7 @@ index 4b2c5273..f78b53b1 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12334,7 +12320,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -12331,7 +12317,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8043,7 +8032,7 @@ index 4b2c5273..f78b53b1 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12369,7 +12354,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -12366,7 +12351,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8051,7 +8040,7 @@ index 4b2c5273..f78b53b1 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12425,7 +12409,6 @@ The further behavior +@@ -12422,7 +12406,6 @@ The further behavior of the second function depends on the \tcode{policy} argument as follows (if more than one of these conditions applies, the implementation may choose any of the corresponding policies): @@ -8273,7 +8262,7 @@ index faf5d946..b79fc8d3 100644 2.43.0 -From 143d20fb7c38beb48e10cdfbdc6dbcbf526265ce Mon Sep 17 00:00:00 2001 +From be362eefd57463af046e289dc5c3ad9a9355002d Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 Subject: [PATCH 06/10] Use monospace font for code in figures. @@ -8420,7 +8409,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From fca0248016250ead1b0ce7a814acea409c6e7d17 Mon Sep 17 00:00:00 2001 +From e43cfbb40830a5df1ee972847d0115dedc28bac8 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 Subject: [PATCH 07/10] [uaxid] Mark code that's not to be highlighted. @@ -8448,7 +8437,7 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From 6cecacff753d0b1b1c00c828390b1367a5529a3f Mon Sep 17 00:00:00 2001 +From 56c5cd7c3ef9a04cc8ea8d06b1b05ae93c4e712a Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. @@ -8472,7 +8461,7 @@ Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. 15 files changed, 490 insertions(+), 498 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 1e39d96e..af6bebcd 100644 +index a46b6385..087fbc82 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -8519,7 +8508,7 @@ index 1e39d96e..af6bebcd 100644 if it is required to be a mutable iterator, or model \libconcept{random_access_iterator}\iref{iterator.concept.random.access} otherwise. \end{itemize} -@@ -4618,10 +4618,10 @@ template +@@ -4616,10 +4616,10 @@ template \pnum \expects \tcode{Function} meets @@ -8532,7 +8521,7 @@ index 1e39d96e..af6bebcd 100644 \end{note} \pnum -@@ -4658,7 +4658,7 @@ template +@@ -4656,7 +4656,7 @@ template \begin{itemdescr} \pnum \expects @@ -8541,7 +8530,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -4792,10 +4792,10 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4790,10 +4790,10 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8554,7 +8543,7 @@ index 1e39d96e..af6bebcd 100644 \end{note} \pnum -@@ -4832,7 +4832,7 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4830,7 +4830,7 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8563,7 +8552,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -5684,7 +5684,7 @@ If +@@ -5678,7 +5678,7 @@ If \item the types of \tcode{first1}, \tcode{last1}, \tcode{first2}, and \tcode{last2} meet the @@ -8572,7 +8561,7 @@ index 1e39d96e..af6bebcd 100644 and \tcode{last1 - first1 != last2 - first2} for the overloads in namespace \tcode{std}; \item -@@ -6028,7 +6028,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} +@@ -6022,7 +6022,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} \pnum \remarks @@ -8581,7 +8570,7 @@ index 1e39d96e..af6bebcd 100644 \end{itemdescr} \rSec2[alg.starts.with]{Starts with} -@@ -7610,7 +7610,7 @@ Let $E$ be +@@ -7604,7 +7604,7 @@ Let $E$ be \expects For the algorithms in namespace \tcode{std}, the type of \tcode{*first} @@ -8590,7 +8579,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -7859,7 +7859,7 @@ let $E$ be +@@ -7853,7 +7853,7 @@ let $E$ be For the overloads in namespace \tcode{std}, \tcode{pred} is an equivalence relation and the type of \tcode{*first} meets @@ -8599,7 +8588,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -7989,10 +7989,10 @@ Let: +@@ -7983,10 +7983,10 @@ Let: \libconcept{forward_iterator}\iref{iterator.concept.forward}, then there are no additional requirements for \tcode{T}. Otherwise, if \tcode{OutputIterator} meets @@ -8612,7 +8601,7 @@ index 1e39d96e..af6bebcd 100644 Otherwise, \tcode{T} meets both the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and \oldconcept{CopyAssignable} requirements. -@@ -8071,7 +8071,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8065,7 +8065,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8621,7 +8610,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -8203,10 +8203,10 @@ template<@\libconcept{permutable}@ I, @\libconcept{sentinel_for}@ S> +@@ -8200,10 +8200,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterat \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -8635,7 +8624,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -8426,13 +8426,13 @@ For the overload in namespace \tcode{std}: +@@ -8420,13 +8420,13 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{PopulationIterator} meets @@ -8652,7 +8641,7 @@ index 1e39d96e..af6bebcd 100644 unless \tcode{Pop\-ulat\-ion\-Iter\-ator} models \libconcept{forward_iterator}\iref{iterator.concept.forward}. \item -@@ -8500,7 +8500,7 @@ For the overload in namespace \tcode{std}: +@@ -8494,7 +8494,7 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{RandomAccessIterator} meets @@ -8661,7 +8650,7 @@ index 1e39d96e..af6bebcd 100644 \item The type \tcode{remove_reference_t} meets the uniform random bit generator\iref{rand.req.urng} requirements. -@@ -8561,7 +8561,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8555,7 +8555,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8670,7 +8659,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -8625,10 +8625,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8619,10 +8619,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8684,7 +8673,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -8807,10 +8807,10 @@ for the overloads with no parameters by those names. +@@ -8801,10 +8801,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8698,7 +8687,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -8875,10 +8875,10 @@ for the overloads with no parameters by those names. +@@ -8869,10 +8869,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8712,7 +8701,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -8949,10 +8949,10 @@ for the overloads with no parameters by those names. +@@ -8943,10 +8943,10 @@ for the overloads with no parameters by those names. \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8726,7 +8715,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -9095,10 +9095,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. +@@ -9089,10 +9089,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8740,7 +8729,7 @@ index 1e39d96e..af6bebcd 100644 \pnum For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and -@@ -9333,10 +9333,10 @@ for the overloads with no parameters by those names. +@@ -9327,10 +9327,10 @@ for the overloads with no parameters by those names. \range{first}{nth} and \range{nth}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8754,7 +8743,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -9716,7 +9716,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9710,7 +9710,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -8763,7 +8752,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -9743,7 +9743,7 @@ Let $N = \tcode{last - first}$: +@@ -9737,7 +9737,7 @@ Let $N = \tcode{last - first}$: For the non-parallel algorithm overloads, exactly $N$ applications of the predicate and projection. At most $N / 2$ swaps if the type of \tcode{first} meets @@ -8772,7 +8761,7 @@ index 1e39d96e..af6bebcd 100644 for the overloads in namespace \tcode{std} or models \libconcept{bidirectional_iterator} for the overloads in namespace \tcode{ranges}, -@@ -9796,10 +9796,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9790,10 +9790,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8786,7 +8775,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -10196,10 +10196,10 @@ for the overloads with no parameters by those names. +@@ -10190,10 +10190,10 @@ for the overloads with no parameters by those names. sorted with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8800,7 +8789,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -10943,10 +10943,10 @@ The range \range{first}{last - 1} +@@ -10932,10 +10932,10 @@ The range \range{first}{last - 1} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8814,7 +8803,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -10996,10 +10996,10 @@ The range \range{first}{last} +@@ -10985,10 +10985,10 @@ The range \range{first}{last} is a valid non-empty heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8828,7 +8817,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -11052,10 +11052,10 @@ for the overloads with no parameters by those names. +@@ -11041,10 +11041,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8842,7 +8831,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -11105,10 +11105,10 @@ The range \range{first}{last} is +@@ -11094,10 +11094,10 @@ The range \range{first}{last} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8856,7 +8845,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -11295,7 +11295,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8876,7 +8865,7 @@ index 1e39d96e..af6bebcd 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11378,7 +11378,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8896,7 +8885,7 @@ index 1e39d96e..af6bebcd 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11463,7 +11463,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8916,7 +8905,7 @@ index 1e39d96e..af6bebcd 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11732,7 +11732,7 @@ for the overloads with no parameter \tcode{proj}. +@@ -11721,7 +11721,7 @@ for the overloads with no parameter \tcode{proj}. \expects \tcode{bool(invoke(comp, invoke(proj, hi), invoke(proj, lo)))} is \tcode{false}. For the first form, type \tcode{T} @@ -8925,7 +8914,7 @@ index 1e39d96e..af6bebcd 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11935,7 +11935,7 @@ for overloads with no parameters by those names. +@@ -11924,7 +11924,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8934,7 +8923,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -11994,7 +11994,7 @@ for overloads with no parameters by those names. +@@ -11983,7 +11983,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8943,7 +8932,7 @@ index 1e39d96e..af6bebcd 100644 \pnum \effects -@@ -12313,8 +12313,8 @@ template +@@ -12302,8 +12302,8 @@ template \pnum \expects \tcode{T} meets @@ -8954,7 +8943,7 @@ index 1e39d96e..af6bebcd 100644 In the range \crange{first}{last}, \tcode{binary_op} neither modifies elements nor invalidates iterators or subranges. -@@ -12436,7 +12436,7 @@ are convertible to \tcode{T}. +@@ -12425,7 +12425,7 @@ are convertible to \tcode{T}. \expects \begin{itemize} \item @@ -8963,7 +8952,7 @@ index 1e39d96e..af6bebcd 100644 \item \tcode{binary_op} neither invalidates iterators or subranges, nor modifies elements in the range \crange{first}{last}. -@@ -12480,8 +12480,8 @@ template}. +@@ -13164,7 +13164,7 @@ that denotes an object of type \tcode{minus<>}. \begin{itemize} \item For the overloads with no \tcode{ExecutionPolicy}, @@ -9132,7 +9121,7 @@ index df926181..ffcb4e9f 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index c8c912f6..58cf02c5 100644 +index 92c01d1f..9d80adfb 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9220,7 +9209,7 @@ index 04969113..8c17e33e 100644 \begin{itemize} \item for the first specialization, \tcode{add_volatile_t}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index 2bcd6f9a..f5f73c3b 100644 +index 19837154..ba13c1f7 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -1681,10 +1681,10 @@ An \tcode{fpos} type specifies file position information. @@ -9301,7 +9290,7 @@ index 2bcd6f9a..f5f73c3b 100644 \pnum If an iterator of type \tcode{directory_iterator} reports an error or diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 2b281173..d159fc9d 100644 +index 729bd1dc..2ff6567d 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -1862,7 +1862,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. @@ -9410,10 +9399,10 @@ index 2b281173..d159fc9d 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index 768a50eb..fb24bbe3 100644 +index 0dd2d462..9ed63972 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1273,7 +1273,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type +@@ -1270,7 +1270,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type disambiguate constructor and function overloading. Specifically, several types (see \tcode{tuple}~\ref{tuple}) have constructors with \tcode{allocator_arg_t} as the first argument, immediately followed by an argument of a type that meets the @@ -9422,7 +9411,7 @@ index 768a50eb..fb24bbe3 100644 \rSec2[allocator.uses]{\tcode{uses_allocator}} -@@ -1288,7 +1288,7 @@ template struct uses_allocator; +@@ -1285,7 +1285,7 @@ template struct uses_allocator; \pnum \remarks Automatically detects whether \tcode{T} has a nested \tcode{allocator_type} that @@ -9431,7 +9420,7 @@ index 768a50eb..fb24bbe3 100644 requirements\iref{meta.rqmts}. The implementation shall provide a definition that is derived from \tcode{true_type} if the \grammarterm{qualified-id} \tcode{T::allocator_type} is valid and denotes a type\iref{temp.deduct} and -@@ -2238,8 +2238,8 @@ deleter before such replacement is considered completed. +@@ -2235,8 +2235,8 @@ deleter before such replacement is considered completed. Each object of a type \tcode{U} instantiated from the \tcode{unique_ptr} template specified in \ref{unique.ptr} has the strict ownership semantics, specified above, of a unique pointer. In partial satisfaction of these semantics, each such \tcode{U} @@ -9442,7 +9431,7 @@ index 768a50eb..fb24bbe3 100644 The template parameter \tcode{T} of \tcode{unique_ptr} may be an incomplete type. \pnum -@@ -2426,7 +2426,7 @@ pointer as appropriate for that deleter. +@@ -2423,7 +2423,7 @@ pointer as appropriate for that deleter. \pnum If the deleter's type \tcode{D} is not a reference type, \tcode{D} shall meet @@ -9451,7 +9440,7 @@ index 768a50eb..fb24bbe3 100644 \pnum If the \grammarterm{qualified-id} \tcode{remove_reference_t::pointer} is valid and denotes a -@@ -2434,7 +2434,7 @@ type\iref{temp.deduct}, then \tcode{unique_ptr::pointer} shall be a synonym for \tcode{remove_reference_t::pointer}. Otherwise \tcode{unique_ptr::pointer} shall be a synonym for \tcode{element_type*}. The type \tcode{unique_ptr::pointer} shall @@ -9460,7 +9449,7 @@ index 768a50eb..fb24bbe3 100644 \pnum \begin{example} -@@ -2460,7 +2460,7 @@ constexpr unique_ptr(nullptr_t) noexcept; +@@ -2457,7 +2457,7 @@ constexpr unique_ptr(nullptr_t) noexcept; \pnum \expects @@ -9469,7 +9458,7 @@ index 768a50eb..fb24bbe3 100644 and that construction does not throw an exception. \pnum -@@ -2487,7 +2487,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; +@@ -2484,7 +2484,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; \pnum \expects @@ -9478,7 +9467,7 @@ index 768a50eb..fb24bbe3 100644 and that construction does not throw an exception. \pnum -@@ -2516,10 +2516,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex +@@ -2513,10 +2513,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex \pnum \expects For the first constructor, if \tcode{D} is not a reference type, @@ -9491,7 +9480,7 @@ index 768a50eb..fb24bbe3 100644 such construction does not exit via an exception. \pnum -@@ -2544,8 +2544,8 @@ the second constructor is defined as deleted. +@@ -2541,8 +2541,8 @@ the second constructor is defined as deleted. \begin{example} \begin{codeblock} D d; @@ -9502,7 +9491,7 @@ index 768a50eb..fb24bbe3 100644 unique_ptr p3(new int, d); // \tcode{p3} holds a reference to \tcode{d} unique_ptr p4(new int, D()); // error: rvalue deleter object combined // with reference deleter type -@@ -2566,7 +2566,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; +@@ -2563,7 +2563,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, @@ -9511,7 +9500,7 @@ index 768a50eb..fb24bbe3 100644 requirements (\tref{cpp17.moveconstructible}). Construction of the deleter from an rvalue of type \tcode{D} does not -@@ -2675,10 +2675,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; +@@ -2672,10 +2672,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, \tcode{D} meets the @@ -9524,7 +9513,7 @@ index 768a50eb..fb24bbe3 100644 requirements and assignment of the deleter from an lvalue of type \tcode{D} does not throw an exception. -@@ -3576,8 +3576,8 @@ namespace std { +@@ -3573,8 +3573,8 @@ namespace std { \end{codeblock} \pnum @@ -9535,7 +9524,7 @@ index 768a50eb..fb24bbe3 100644 containers. Specializations of \tcode{shared_ptr} shall be contextually convertible to \tcode{bool}, allowing their use in boolean expressions and declarations in conditions. -@@ -3722,7 +3722,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. +@@ -3719,7 +3719,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. The expression \tcode{d(p)} has well-defined behavior and does not throw exceptions. \tcode{A} meets @@ -9544,7 +9533,7 @@ index 768a50eb..fb24bbe3 100644 \pnum \effects -@@ -4242,7 +4242,7 @@ template +@@ -4239,7 +4239,7 @@ template \pnum \expects \tcode{A} meets @@ -9553,7 +9542,7 @@ index 768a50eb..fb24bbe3 100644 \pnum \effects -@@ -4898,8 +4898,8 @@ namespace std { +@@ -4895,8 +4895,8 @@ namespace std { \end{codeblock} \pnum @@ -9564,7 +9553,7 @@ index 768a50eb..fb24bbe3 100644 containers. The template parameter \tcode{T} of \tcode{weak_ptr} may be an incomplete type. -@@ -5478,7 +5478,7 @@ namespace std { +@@ -5475,7 +5475,7 @@ namespace std { \end{codeblock} \pnum @@ -9573,7 +9562,7 @@ index 768a50eb..fb24bbe3 100644 If \tcode{Smart} is a specialization of \tcode{shared_ptr} and \tcode{sizeof...(Args) == 0}, the program is ill-formed. -@@ -5718,7 +5718,7 @@ namespace std { +@@ -5715,7 +5715,7 @@ namespace std { \end{codeblock} \pnum @@ -9583,7 +9572,7 @@ index 768a50eb..fb24bbe3 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index c30353cd..27831f74 100644 +index 5c016e13..fea40b8a 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -95,12 +95,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -10027,7 +10016,7 @@ index c30353cd..27831f74 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is \tcode{true}, otherwise \tcode{false_type}. -@@ -953,17 +953,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. +@@ -946,17 +946,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. \topline \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead @@ -10048,7 +10037,7 @@ index c30353cd..27831f74 100644 \tcode{T} is an integral type\iref{basic.fundamental} & \\ \rowsep \indexlibraryglobal{is_floating_point}% \tcode{template}\br -@@ -1192,9 +1189,8 @@ A union is a class type that +@@ -1185,9 +1182,8 @@ A union is a class type that & If \tcode{T} is a class type, \tcode{T} shall be a complete type. \\ \rowsep @@ -10059,7 +10048,7 @@ index c30353cd..27831f74 100644 \tcode{T} is an aggregate type\iref{dcl.init.aggr} & \tcode{T} shall be an array type, a complete type, or \cv~\keyword{void}. \\ \rowsep -@@ -1211,16 +1207,14 @@ A union is a class type that +@@ -1204,16 +1200,14 @@ A union is a class type that \tcode{T(-1) < T(0)}; otherwise, \tcode{false} & \\ \rowsep @@ -10078,7 +10067,7 @@ index c30353cd..27831f74 100644 \tcode{T} is an array type of known bound\iref{dcl.array} & \\ \rowsep -@@ -1724,7 +1718,7 @@ may be used to query properties of types at compile time. +@@ -1717,7 +1711,7 @@ may be used to query properties of types at compile time. \end{libreqtab2a} \pnum @@ -10087,7 +10076,7 @@ index c30353cd..27831f74 100644 base characteristic of \tcode{integral_constant}. \pnum -@@ -1760,7 +1754,7 @@ may be used to query relationships between types at compile time. +@@ -1753,7 +1747,7 @@ may be used to query relationships between types at compile time. \pnum Each of these templates shall be a @@ -10096,7 +10085,7 @@ index c30353cd..27831f74 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is true, otherwise \tcode{false_type}. -@@ -1774,7 +1768,7 @@ with a base characteristic of +@@ -1774,7 +1768,7 @@ Let \tcode{\placeholdernc{ELEMS-OF}(T)} be the parameter pack \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead \tcode{template}\br @@ -10192,7 +10181,7 @@ index c30353cd..27831f74 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index b46401da..021e5dbb 100644 +index 52a0e3ec..0aac59a4 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul @@ -10344,7 +10333,7 @@ index e943eef1..13b33fa6 100644 meets the constexpr iterator requirements\iref{iterator.requirements.general}, whose \tcode{value_type} is the template parameter \tcode{charT}. diff --git a/source/support.tex b/source/support.tex -index e360471d..6212b511 100644 +index 09e93b10..4ee8d4ed 100644 --- a/source/support.tex +++ b/source/support.tex @@ -3657,11 +3657,11 @@ namespace std { @@ -10383,7 +10372,7 @@ index e360471d..6212b511 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index f78b53b1..f538f650 100644 +index bec330ff..da485dc5 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10713,7 +10702,7 @@ index f78b53b1..f538f650 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -11456,7 +11456,7 @@ namespace std { +@@ -11453,7 +11453,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10722,7 +10711,7 @@ index f78b53b1..f538f650 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -11788,7 +11788,7 @@ namespace std { +@@ -11785,7 +11785,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10731,7 +10720,7 @@ index f78b53b1..f538f650 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -12094,7 +12094,7 @@ namespace std { +@@ -12091,7 +12091,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10740,7 +10729,7 @@ index f78b53b1..f538f650 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -13032,7 +13032,7 @@ the expression \tcode{d(ptr)} is valid. +@@ -13029,7 +13029,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -10749,7 +10738,7 @@ index f78b53b1..f538f650 100644 \pnum If \tcode{D} is trivially copyable, -@@ -13090,7 +13090,7 @@ namespace std { +@@ -13087,7 +13087,7 @@ namespace std { \pnum This class meets the requirements of @@ -10758,7 +10747,7 @@ index f78b53b1..f538f650 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -13238,8 +13238,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -13235,8 +13235,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -10769,7 +10758,7 @@ index f78b53b1..f538f650 100644 \pnum \effects -@@ -13431,7 +13431,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -13428,7 +13428,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -11488,7 +11477,7 @@ index b79fc8d3..76b19166 100644 2.43.0 -From aaf2b011197979dbd69a8a84aba641fdfb91df6a Mon Sep 17 00:00:00 2001 +From 9425687f2e0b2eca9ada0e103a2f3b5827649eaf Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 Subject: [PATCH 09/10] Remove awkward \linebreaks. @@ -11506,10 +11495,10 @@ Subject: [PATCH 09/10] Remove awkward \linebreaks. 9 files changed, 68 insertions(+), 69 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index af6bebcd..45b81bf2 100644 +index 087fbc82..245e9633 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -7076,7 +7076,7 @@ Let: +@@ -7070,7 +7070,7 @@ Let: \tcode{invoke(op, invoke(proj, *(first1 + (i - result))))} for unary transforms defined in namespace \tcode{ranges}; \item @@ -11518,7 +11507,7 @@ index af6bebcd..45b81bf2 100644 for binary transforms defined in namespace \tcode{ranges}. \end{itemize} \end{itemize} -@@ -14202,7 +14202,7 @@ namespace ranges { +@@ -14191,7 +14191,7 @@ namespace ranges { \pnum \constraints \tcode{is_unbounded_array_v} is \tcode{false}. @@ -11755,10 +11744,10 @@ index e49a887b..492a1a7d 100644 \item diff --git a/source/exec.tex b/source/exec.tex -index 58cf02c5..cda92c93 100644 +index 9d80adfb..b1663e28 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -3290,7 +3290,7 @@ except that \tcode{sch} is evaluated only once. +@@ -3239,7 +3239,7 @@ except that \tcode{sch} is evaluated only once. Let \tcode{out_sndr} and \tcode{env} be subexpressions such that \tcode{OutSndr} is \tcode{decltype((out_sndr))}. If \tcode{\exposconcept{sender-for}} is \tcode{false}, @@ -11767,7 +11756,7 @@ index 58cf02c5..cda92c93 100644 \tcode{starts_on.transform_sender(out_sndr, env)} are ill-formed; otherwise \begin{itemize} \item -@@ -3670,7 +3670,7 @@ except that \tcode{sndr} is evaluated only once. +@@ -3619,7 +3619,7 @@ except that \tcode{sndr} is evaluated only once. \pnum Let \tcode{out_sndr} and \tcode{env} be subexpressions, let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and @@ -11776,7 +11765,7 @@ index 58cf02c5..cda92c93 100644 If \tcode{\exposconcept{sender-for}} is \tcode{false}, then the expressions \tcode{on.transform_env(out_sndr, env)} and \tcode{on.transform_sender(out_sndr, env)} are ill-formed. -@@ -3812,7 +3812,7 @@ Let the expression \exposid{then-cpo} be one of +@@ -3761,7 +3761,7 @@ Let the expression \exposid{then-cpo} be one of For subexpressions \tcode{sndr} and \tcode{f}, if \tcode{decltype((sndr))} does not satisfy \libconcept{sender}, or \tcode{decltype((f))} does not satisfy \exposconcept{movable-value}, @@ -11785,7 +11774,7 @@ index 58cf02c5..cda92c93 100644 \pnum Otherwise, -@@ -4117,7 +4117,7 @@ is initialized with a callable object equivalent to the following: +@@ -4066,7 +4066,7 @@ is initialized with a callable object equivalent to the following: Let \tcode{sndr} and \tcode{env} be subexpressions, and let \tcode{Sndr} be \tcode{decltype((sndr))}. If @@ -11794,7 +11783,7 @@ index 58cf02c5..cda92c93 100644 is \tcode{false}, then the expression \tcode{\exposid{let-cpo}.transform_env(sndr, env)} is ill-formed. -@@ -4732,7 +4732,7 @@ try { +@@ -4681,7 +4681,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -11803,7 +11792,7 @@ index 58cf02c5..cda92c93 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -5775,7 +5775,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. +@@ -5724,7 +5724,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. \pnum For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. @@ -11813,10 +11802,10 @@ index 58cf02c5..cda92c93 100644 the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: diff --git a/source/memory.tex b/source/memory.tex -index fb24bbe3..15c181cc 100644 +index 9ed63972..9e2e335e 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1371,7 +1371,7 @@ A \tcode{tuple} value determined as follows: +@@ -1368,7 +1368,7 @@ A \tcode{tuple} value determined as follows: \begin{itemize} \item If \tcode{uses_allocator_v, Alloc>} is \tcode{false} and @@ -11825,7 +11814,7 @@ index fb24bbe3..15c181cc 100644 return \tcode{forward_as_tuple(std::forward(args)...)}. \item Otherwise, if \tcode{uses_allocator_v, Alloc>} is \tcode{true} and -@@ -4332,7 +4332,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje +@@ -4329,7 +4329,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje the allocator \tcode{a} passed to \tcode{allocate_shared}. \item When a (sub)object of non-array type \tcode{U} is initialized by @@ -11834,7 +11823,7 @@ index fb24bbe3..15c181cc 100644 \tcode{allocate_shared_for_overwrite}, it is initialized via the expression \tcode{::new(pv) U}, where \tcode{pv} has type \tcode{void*} and -@@ -5567,7 +5567,7 @@ if (p) { +@@ -5564,7 +5564,7 @@ if (p) { \end{codeblock} if the expression \tcode{s.reset(static_cast(p), std::forward(args)...)} @@ -11844,7 +11833,7 @@ index fb24bbe3..15c181cc 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index 27831f74..81f32de8 100644 +index fea40b8a..22cd406d 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -2530,7 +2530,7 @@ present as follows: @@ -11857,7 +11846,7 @@ index 27831f74..81f32de8 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index 021e5dbb..be582f6f 100644 +index 0aac59a4..7ae9bd01 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -13802,7 +13802,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. @@ -12033,7 +12022,7 @@ index 8b0f4e38..fccb59d1 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index f538f650..39025707 100644 +index da485dc5..fe9533b5 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -3517,7 +3517,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, @@ -12125,9 +12114,9 @@ index 76b19166..a53d2ff0 100644 2.43.0 -From 98949e2e6dd60065b463a4b2a718ad8a8b6bb118 Mon Sep 17 00:00:00 2001 +From b134c41454c39404f9c82115b172882a9571fc44 Mon Sep 17 00:00:00 2001 From: timsong-cpp -Date: Fri, 25 Jul 2025 00:06:14 -0500 +Date: Fri, 1 Aug 2025 02:09:27 -0500 Subject: [PATCH 10/10] Revert "[intro] Special page header before Clause 1 (#6070)" diff --git a/lastbuild.sig b/lastbuild.sig index f6ca263c54..8ade7387c1 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,4 +1,4 @@ htmlgen eee5307c45c04761ef5c27956cbed742e08e5fb4 -draft 454ba171cb14531639e641cb1200617fbf8d943f -91135fa8481acf3787c89864b8c715e925279fbb htmlgen.patch +draft e4a7f6da57891013ed378672c470970d95ea190e +4ae608c57971a38daeac4182a9463106b4ddfd06 htmlgen.patch cc80936cb44795c5712f5b4d193389be54551403 htmlgen_code.patch From 93f89b1c2b73fc8245d9c6b5173d8b3c88b0d904 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Wed, 6 Aug 2025 08:27:48 -0500 Subject: [PATCH 15/36] Update --- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 140 +++++++++++++++++++++++++------------------------- lastbuild.sig | 4 +- 4 files changed, 74 insertions(+), 74 deletions(-) diff --git a/draft b/draft index e4a7f6da57..c3bd02a2e4 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit e4a7f6da57891013ed378672c470970d95ea190e +Subproject commit c3bd02a2e44c53c8fe7ba5b48a94bacc9186235d diff --git a/gh-pages b/gh-pages index ab5693fc2a..51fa57f956 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit ab5693fc2a7154ade14e4e7abc80c5b38a0cd7fc +Subproject commit 51fa57f956efbbe41d0384d39e3d798bb4e44441 diff --git a/htmlgen.patch b/htmlgen.patch index 6587411e6d..7099c1c272 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From 9a6ef05469016f4ebf7f3e5bb5c19cf6a8df4f06 Mon Sep 17 00:00:00 2001 +From 363f55f01f56681d378bad6f8c32a4a703e40248 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout @@ -59,7 +59,7 @@ index a1b8f00c..326cf97f 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index edd0ad86..11dfe14b 100644 +index 1d3c4df1..c6c49338 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2924,7 +2924,7 @@ struct s2 { @@ -75,7 +75,7 @@ index edd0ad86..11dfe14b 100644 2.43.0 -From 0017500dd3bb021bbe0beda5a01d682db38b6d86 Mon Sep 17 00:00:00 2001 +From 26f62ae64ced3a459f7ed769e3163c31e023d882 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 Subject: [PATCH 02/10] Use new link macros. @@ -111,7 +111,7 @@ Subject: [PATCH 02/10] Use new link macros. 27 files changed, 607 insertions(+), 616 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 43aac8ff..7ded19bb 100644 +index c9ab8d9d..afec9113 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -810,7 +810,7 @@ index 6a71104d..77036c1f 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index 341c1bc1..4951f281 100644 +index 6214e7ef..6960c3e5 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -910,7 +910,7 @@ index 341c1bc1..4951f281 100644 \end{codeblock} \end{example} A non-static member shall not be designated in a default argument unless -@@ -6206,15 +6205,15 @@ This requires a conversion +@@ -6207,15 +6206,15 @@ This requires a conversion function\iref{class.conv.fct} returning a reference type. \end{footnote} (this conversion is selected by enumerating the applicable conversion @@ -930,7 +930,7 @@ index 341c1bc1..4951f281 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7724,7 +7723,7 @@ the initializer is +@@ -7725,7 +7724,7 @@ the initializer is where \tcode{get} undergoes argument-dependent lookup\iref{basic.lookup.argdep}. In either case, \tcode{get} is interpreted as a \grammarterm{template-id}. \begin{note} @@ -939,7 +939,7 @@ index 341c1bc1..4951f281 100644 \end{note} In either case, \exposid{e} is an lvalue if the type of the entity \exposid{e} is an lvalue reference and an xvalue otherwise. -@@ -7875,7 +7874,7 @@ is not looked up and is introduced by +@@ -7876,7 +7875,7 @@ is not looked up and is introduced by the \grammarterm{enum-specifier} or \grammarterm{opaque-enum-declaration}. If the \grammarterm{enum-head-name} of an \grammarterm{opaque-enum-declaration} contains a \grammarterm{nested-name-specifier}, @@ -948,7 +948,7 @@ index 341c1bc1..4951f281 100644 \pnum \indextext{constant!enumeration}% -@@ -7957,8 +7956,9 @@ If the underlying type is fixed, the type of each enumerator +@@ -7958,8 +7957,9 @@ If the underlying type is fixed, the type of each enumerator prior to the closing brace is the underlying type and the \grammarterm{constant-expression} in the \grammarterm{enumerator-definition} @@ -960,7 +960,7 @@ index 341c1bc1..4951f281 100644 If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as -@@ -7967,8 +7967,9 @@ follows: +@@ -7968,8 +7968,9 @@ follows: \begin{itemize} \item If an initializer is specified for an enumerator, the @@ -972,7 +972,7 @@ index 341c1bc1..4951f281 100644 unscoped enumeration type, the enumerator has the underlying type of that enumeration type, otherwise it has the same type as the expression. -@@ -8040,7 +8041,7 @@ if they have the same underlying type. +@@ -8041,7 +8042,7 @@ if they have the same underlying type. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -981,7 +981,7 @@ index 341c1bc1..4951f281 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8323,7 +8324,7 @@ appertains to the namespace being defined or extended. +@@ -8324,7 +8325,7 @@ appertains to the namespace being defined or extended. Members of an inline namespace can be used in most respects as though they were members of the innermost enclosing namespace. Specifically, the inline namespace and its enclosing namespace are both added to the set of associated namespaces used in @@ -990,7 +990,7 @@ index 341c1bc1..4951f281 100644 and a \grammarterm{using-directive}\iref{namespace.udir} that names the inline namespace is implicitly inserted into the enclosing namespace as for an unnamed namespace\iref{namespace.unnamed}. Furthermore, each -@@ -9146,7 +9147,7 @@ different language linkages are distinct types even if they are +@@ -9147,7 +9148,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -999,7 +999,7 @@ index 341c1bc1..4951f281 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9476,19 +9477,19 @@ For each individual attribute, the form of the +@@ -9477,19 +9478,19 @@ For each individual attribute, the form of the \pnum In an \grammarterm{attribute-list}, an ellipsis may appear only if that \grammarterm{attribute}'s specification permits it. An \grammarterm{attribute} followed @@ -1024,7 +1024,7 @@ index 341c1bc1..4951f281 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9599,7 +9600,7 @@ declaration, the program is ill-formed. +@@ -9600,7 +9601,7 @@ declaration, the program is ill-formed. \pnum An \grammarterm{alignment-specifier} of the form \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same @@ -1033,7 +1033,7 @@ index 341c1bc1..4951f281 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9779,7 +9780,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9780,7 +9781,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -1221,7 +1221,7 @@ index ba2d34d0..cd476d28 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index 11dfe14b..98aac71a 100644 +index c6c49338..8e108f2c 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -4495,7 +4495,7 @@ index 0a26e026..faf5d946 100644 2.43.0 -From 6ca4f417e91c75dc33c1da989c31995aaf9488af Mon Sep 17 00:00:00 2001 +From b35c2a39f115c496d62b54a79e8377f38162bd87 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove @@ -4548,7 +4548,7 @@ index 3894c832..c17177bc 100644 2.43.0 -From 3929c43d79a3bca6ad6d20f28703b0dfcfd12392 Mon Sep 17 00:00:00 2001 +From f0016951bd4aa94a2fe8f54e7c2b726cad6a0623 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code @@ -5965,7 +5965,7 @@ index 2939c865..c37f5bba 100644 2.43.0 -From 028d09d4f951a2ba57932f1962ac9d8b9c989509 Mon Sep 17 00:00:00 2001 +From 6b869084fe0b2cec85d080f2babb0c92c9b9adcc Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. @@ -6000,7 +6000,7 @@ Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. 26 files changed, 272 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 7ded19bb..a46b6385 100644 +index afec9113..011292f7 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -8698,7 +8698,6 @@ but stronger than those for a partial ordering. @@ -6426,7 +6426,7 @@ index 77036c1f..e49a887b 100644 \item \tcode{$s_k$.extent == 0 ? 0 : 1 + (\exposid{de-ice}($s_k$.extent) - 1) / \exposid{de-ice}($s_k$.stride)} diff --git a/source/declarations.tex b/source/declarations.tex -index 4951f281..ad9508aa 100644 +index 6960c3e5..2bd0300a 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1593,7 +1593,6 @@ a partial specialization\iref{temp.spec.partial}, @@ -6461,7 +6461,7 @@ index 4951f281..ad9508aa 100644 \begin{itemize} \item If -@@ -5271,7 +5267,6 @@ is sequenced before those associated with +@@ -5272,7 +5268,6 @@ is sequenced before those associated with the initialization of the $j^\text{th}$ element. \item Otherwise, if the destination type is a class type: @@ -6469,7 +6469,7 @@ index 4951f281..ad9508aa 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -6183,7 +6178,6 @@ a program that necessitates such a binding is ill-formed. +@@ -6184,7 +6179,6 @@ a program that necessitates such a binding is ill-formed. A reference to type ``\cvqual{cv1} \tcode{T1}'' is initialized by an expression of type ``\cvqual{cv2} \tcode{T2}'' as follows:% \indextext{binding!reference} @@ -6477,7 +6477,7 @@ index 4951f281..ad9508aa 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6651,7 +6645,6 @@ int j { 1 }; // initialize to 1 +@@ -6652,7 +6646,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -6485,7 +6485,7 @@ index 4951f281..ad9508aa 100644 \end{itemize} \pnum -@@ -7734,7 +7727,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, +@@ -7735,7 +7728,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, where $\tcode{U}_i$ is an lvalue reference if the initializer is an lvalue and an rvalue reference otherwise, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -6493,7 +6493,7 @@ index 4951f281..ad9508aa 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7866,7 +7858,6 @@ struct S { +@@ -7867,7 +7859,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6501,7 +6501,7 @@ index 4951f281..ad9508aa 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7963,7 +7954,6 @@ If the underlying +@@ -7964,7 +7955,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6509,7 +6509,7 @@ index 4951f281..ad9508aa 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8422,7 +8412,6 @@ void h() { +@@ -8423,7 +8413,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} according to the following grammar: @@ -6517,7 +6517,7 @@ index 4951f281..ad9508aa 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8596,7 +8585,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8597,7 +8586,6 @@ not declare functions or function templates, the use of the name is ill-formed\i In particular, the name of a variable, function or enumerator does not hide the name of a class or enumeration declared in a different namespace. For example, @@ -6525,7 +6525,7 @@ index 4951f281..ad9508aa 100644 \begin{codeblock} namespace A { class X { }; -@@ -9149,7 +9137,6 @@ otherwise identical. +@@ -9150,7 +9138,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6533,7 +6533,7 @@ index 4951f281..ad9508aa 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -10018,7 +10005,6 @@ may be applied to a function or a lambda call operator or +@@ -10019,7 +10006,6 @@ may be applied to a function or a lambda call operator or to the declaration of a class or enumeration. An \grammarterm{attribute-argument-clause} may be present and, if present, shall have the form: @@ -6567,7 +6567,7 @@ index df489ab5..17fe2711 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 98aac71a..cd0d1cce 100644 +index 8e108f2c..9ae43f93 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -464,7 +464,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -7178,10 +7178,10 @@ index efd4eb00..12180661 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index 4b3d1682..0dd2d462 100644 +index 8ad74c93..92ff4466 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1568,7 +1568,6 @@ when considered as an unevaluated operand. +@@ -1571,7 +1571,6 @@ when considered as an unevaluated operand. \pnum Let \exposid{pair-constructor} be an exposition-only class defined as follows: @@ -7189,7 +7189,7 @@ index 4b3d1682..0dd2d462 100644 \begin{codeblock} class @\exposid{pair-constructor}@ { using @\exposid{pair-type}@ = remove_cv_t; // \expos -@@ -3703,7 +3702,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a); +@@ -3706,7 +3705,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a); \tcode{is_move_constructible_v} is \tcode{true}, and \tcode{d(p)} is a well-formed expression. For the first two overloads: @@ -7198,7 +7198,7 @@ index 4b3d1682..0dd2d462 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index 81df5dfe..5c016e13 100644 +index 08347e95..0e7255dd 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -1943,7 +1943,6 @@ is_base_of_v // \tcode{false} @@ -8262,7 +8262,7 @@ index faf5d946..b79fc8d3 100644 2.43.0 -From be362eefd57463af046e289dc5c3ad9a9355002d Mon Sep 17 00:00:00 2001 +From 713553b603864c1b414be8d05b59173e693ee343 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 Subject: [PATCH 06/10] Use monospace font for code in figures. @@ -8409,7 +8409,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From e43cfbb40830a5df1ee972847d0115dedc28bac8 Mon Sep 17 00:00:00 2001 +From cb2cc2cb59467f4fa92cffdbef1395ad963ab521 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 Subject: [PATCH 07/10] [uaxid] Mark code that's not to be highlighted. @@ -8437,7 +8437,7 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From 56c5cd7c3ef9a04cc8ea8d06b1b05ae93c4e712a Mon Sep 17 00:00:00 2001 +From c640f817cfcec1580cec83b57e171dbb925c8b6e Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. @@ -8461,7 +8461,7 @@ Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. 15 files changed, 490 insertions(+), 498 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index a46b6385..087fbc82 100644 +index 011292f7..3dcc8907 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -9121,7 +9121,7 @@ index df926181..ffcb4e9f 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 92c01d1f..9d80adfb 100644 +index 058038ef..887279b0 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9399,10 +9399,10 @@ index 729bd1dc..2ff6567d 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index 0dd2d462..9ed63972 100644 +index 92ff4466..c59c2b55 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1270,7 +1270,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type +@@ -1273,7 +1273,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type disambiguate constructor and function overloading. Specifically, several types (see \tcode{tuple}~\ref{tuple}) have constructors with \tcode{allocator_arg_t} as the first argument, immediately followed by an argument of a type that meets the @@ -9411,7 +9411,7 @@ index 0dd2d462..9ed63972 100644 \rSec2[allocator.uses]{\tcode{uses_allocator}} -@@ -1285,7 +1285,7 @@ template struct uses_allocator; +@@ -1288,7 +1288,7 @@ template struct uses_allocator; \pnum \remarks Automatically detects whether \tcode{T} has a nested \tcode{allocator_type} that @@ -9420,7 +9420,7 @@ index 0dd2d462..9ed63972 100644 requirements\iref{meta.rqmts}. The implementation shall provide a definition that is derived from \tcode{true_type} if the \grammarterm{qualified-id} \tcode{T::allocator_type} is valid and denotes a type\iref{temp.deduct} and -@@ -2235,8 +2235,8 @@ deleter before such replacement is considered completed. +@@ -2238,8 +2238,8 @@ deleter before such replacement is considered completed. Each object of a type \tcode{U} instantiated from the \tcode{unique_ptr} template specified in \ref{unique.ptr} has the strict ownership semantics, specified above, of a unique pointer. In partial satisfaction of these semantics, each such \tcode{U} @@ -9431,7 +9431,7 @@ index 0dd2d462..9ed63972 100644 The template parameter \tcode{T} of \tcode{unique_ptr} may be an incomplete type. \pnum -@@ -2423,7 +2423,7 @@ pointer as appropriate for that deleter. +@@ -2426,7 +2426,7 @@ pointer as appropriate for that deleter. \pnum If the deleter's type \tcode{D} is not a reference type, \tcode{D} shall meet @@ -9440,7 +9440,7 @@ index 0dd2d462..9ed63972 100644 \pnum If the \grammarterm{qualified-id} \tcode{remove_reference_t::pointer} is valid and denotes a -@@ -2431,7 +2431,7 @@ type\iref{temp.deduct}, then \tcode{unique_ptr::pointer} shall be a synonym for \tcode{remove_reference_t::pointer}. Otherwise \tcode{unique_ptr::pointer} shall be a synonym for \tcode{element_type*}. The type \tcode{unique_ptr::pointer} shall @@ -9449,7 +9449,7 @@ index 0dd2d462..9ed63972 100644 \pnum \begin{example} -@@ -2457,7 +2457,7 @@ constexpr unique_ptr(nullptr_t) noexcept; +@@ -2460,7 +2460,7 @@ constexpr unique_ptr(nullptr_t) noexcept; \pnum \expects @@ -9458,7 +9458,7 @@ index 0dd2d462..9ed63972 100644 and that construction does not throw an exception. \pnum -@@ -2484,7 +2484,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; +@@ -2487,7 +2487,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; \pnum \expects @@ -9467,7 +9467,7 @@ index 0dd2d462..9ed63972 100644 and that construction does not throw an exception. \pnum -@@ -2513,10 +2513,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex +@@ -2516,10 +2516,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex \pnum \expects For the first constructor, if \tcode{D} is not a reference type, @@ -9480,7 +9480,7 @@ index 0dd2d462..9ed63972 100644 such construction does not exit via an exception. \pnum -@@ -2541,8 +2541,8 @@ the second constructor is defined as deleted. +@@ -2544,8 +2544,8 @@ the second constructor is defined as deleted. \begin{example} \begin{codeblock} D d; @@ -9491,7 +9491,7 @@ index 0dd2d462..9ed63972 100644 unique_ptr p3(new int, d); // \tcode{p3} holds a reference to \tcode{d} unique_ptr p4(new int, D()); // error: rvalue deleter object combined // with reference deleter type -@@ -2563,7 +2563,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; +@@ -2566,7 +2566,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, @@ -9500,7 +9500,7 @@ index 0dd2d462..9ed63972 100644 requirements (\tref{cpp17.moveconstructible}). Construction of the deleter from an rvalue of type \tcode{D} does not -@@ -2672,10 +2672,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; +@@ -2675,10 +2675,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, \tcode{D} meets the @@ -9513,7 +9513,7 @@ index 0dd2d462..9ed63972 100644 requirements and assignment of the deleter from an lvalue of type \tcode{D} does not throw an exception. -@@ -3573,8 +3573,8 @@ namespace std { +@@ -3576,8 +3576,8 @@ namespace std { \end{codeblock} \pnum @@ -9524,7 +9524,7 @@ index 0dd2d462..9ed63972 100644 containers. Specializations of \tcode{shared_ptr} shall be contextually convertible to \tcode{bool}, allowing their use in boolean expressions and declarations in conditions. -@@ -3719,7 +3719,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. +@@ -3722,7 +3722,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. The expression \tcode{d(p)} has well-defined behavior and does not throw exceptions. \tcode{A} meets @@ -9533,7 +9533,7 @@ index 0dd2d462..9ed63972 100644 \pnum \effects -@@ -4239,7 +4239,7 @@ template +@@ -4242,7 +4242,7 @@ template \pnum \expects \tcode{A} meets @@ -9542,7 +9542,7 @@ index 0dd2d462..9ed63972 100644 \pnum \effects -@@ -4895,8 +4895,8 @@ namespace std { +@@ -4898,8 +4898,8 @@ namespace std { \end{codeblock} \pnum @@ -9553,7 +9553,7 @@ index 0dd2d462..9ed63972 100644 containers. The template parameter \tcode{T} of \tcode{weak_ptr} may be an incomplete type. -@@ -5475,7 +5475,7 @@ namespace std { +@@ -5478,7 +5478,7 @@ namespace std { \end{codeblock} \pnum @@ -9562,7 +9562,7 @@ index 0dd2d462..9ed63972 100644 If \tcode{Smart} is a specialization of \tcode{shared_ptr} and \tcode{sizeof...(Args) == 0}, the program is ill-formed. -@@ -5715,7 +5715,7 @@ namespace std { +@@ -5718,7 +5718,7 @@ namespace std { \end{codeblock} \pnum @@ -9572,7 +9572,7 @@ index 0dd2d462..9ed63972 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index 5c016e13..fea40b8a 100644 +index 0e7255dd..ee96bf8f 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -95,12 +95,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -11477,7 +11477,7 @@ index b79fc8d3..76b19166 100644 2.43.0 -From 9425687f2e0b2eca9ada0e103a2f3b5827649eaf Mon Sep 17 00:00:00 2001 +From 5abd235667d32d8257596ac8c1c4204c65cde051 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 Subject: [PATCH 09/10] Remove awkward \linebreaks. @@ -11495,7 +11495,7 @@ Subject: [PATCH 09/10] Remove awkward \linebreaks. 9 files changed, 68 insertions(+), 69 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 087fbc82..245e9633 100644 +index 3dcc8907..cf914a0c 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -7070,7 +7070,7 @@ Let: @@ -11744,7 +11744,7 @@ index e49a887b..492a1a7d 100644 \item diff --git a/source/exec.tex b/source/exec.tex -index 9d80adfb..b1663e28 100644 +index 887279b0..aff106e0 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -3239,7 +3239,7 @@ except that \tcode{sch} is evaluated only once. @@ -11802,10 +11802,10 @@ index 9d80adfb..b1663e28 100644 the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: diff --git a/source/memory.tex b/source/memory.tex -index 9ed63972..9e2e335e 100644 +index c59c2b55..e13a598f 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1368,7 +1368,7 @@ A \tcode{tuple} value determined as follows: +@@ -1371,7 +1371,7 @@ A \tcode{tuple} value determined as follows: \begin{itemize} \item If \tcode{uses_allocator_v, Alloc>} is \tcode{false} and @@ -11814,7 +11814,7 @@ index 9ed63972..9e2e335e 100644 return \tcode{forward_as_tuple(std::forward(args)...)}. \item Otherwise, if \tcode{uses_allocator_v, Alloc>} is \tcode{true} and -@@ -4329,7 +4329,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje +@@ -4332,7 +4332,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje the allocator \tcode{a} passed to \tcode{allocate_shared}. \item When a (sub)object of non-array type \tcode{U} is initialized by @@ -11823,7 +11823,7 @@ index 9ed63972..9e2e335e 100644 \tcode{allocate_shared_for_overwrite}, it is initialized via the expression \tcode{::new(pv) U}, where \tcode{pv} has type \tcode{void*} and -@@ -5564,7 +5564,7 @@ if (p) { +@@ -5567,7 +5567,7 @@ if (p) { \end{codeblock} if the expression \tcode{s.reset(static_cast(p), std::forward(args)...)} @@ -11833,7 +11833,7 @@ index 9ed63972..9e2e335e 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index fea40b8a..22cd406d 100644 +index ee96bf8f..c278d972 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -2530,7 +2530,7 @@ present as follows: @@ -12114,7 +12114,7 @@ index 76b19166..a53d2ff0 100644 2.43.0 -From b134c41454c39404f9c82115b172882a9571fc44 Mon Sep 17 00:00:00 2001 +From da283a7465ff0f89f3f02dbcdcfa5a40feebc9d2 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Fri, 1 Aug 2025 02:09:27 -0500 Subject: [PATCH 10/10] Revert "[intro] Special page header before Clause 1 diff --git a/lastbuild.sig b/lastbuild.sig index 8ade7387c1..51c10801b3 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,4 +1,4 @@ htmlgen eee5307c45c04761ef5c27956cbed742e08e5fb4 -draft e4a7f6da57891013ed378672c470970d95ea190e -4ae608c57971a38daeac4182a9463106b4ddfd06 htmlgen.patch +draft c3bd02a2e44c53c8fe7ba5b48a94bacc9186235d +b76cce13dbf7885170532b899c35ef6d11ffb71c htmlgen.patch cc80936cb44795c5712f5b4d193389be54551403 htmlgen_code.patch From 823f74ccb1f2fc68f6fca572b5e7fbc1b9774384 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Mon, 27 Oct 2025 23:57:14 +1100 Subject: [PATCH 16/36] Update --- cxxdraft-htmlgen | 2 +- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 835 +++++++++++++++++++++------------------------ htmlgen_code.patch | 38 --- lastbuild.sig | 7 +- 6 files changed, 398 insertions(+), 488 deletions(-) delete mode 100644 htmlgen_code.patch diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen index eee5307c45..d76984e59a 160000 --- a/cxxdraft-htmlgen +++ b/cxxdraft-htmlgen @@ -1 +1 @@ -Subproject commit eee5307c45c04761ef5c27956cbed742e08e5fb4 +Subproject commit d76984e59af74768c3ce732b5517325f10807a57 diff --git a/draft b/draft index c3bd02a2e4..2f53f313f5 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit c3bd02a2e44c53c8fe7ba5b48a94bacc9186235d +Subproject commit 2f53f313f5b1aac5f9547b39e78863e23ca9c047 diff --git a/gh-pages b/gh-pages index 51fa57f956..5bc71b27ad 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 51fa57f956efbbe41d0384d39e3d798bb4e44441 +Subproject commit 5bc71b27ad733d9329d9985ea717a358c134c86f diff --git a/htmlgen.patch b/htmlgen.patch index 7099c1c272..e34ce89bf5 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,8 +1,8 @@ -From 363f55f01f56681d378bad6f8c32a4a703e40248 Mon Sep 17 00:00:00 2001 +From 564bd58ebe115367edb2444d5051838480453623 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 -Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout - on smaller (e.g. half-screen) window sizes. +Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on + smaller (e.g. half-screen) window sizes. --- source/basic.tex | 26 +++++++++++++------------- @@ -10,10 +10,10 @@ Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index a1b8f00c..326cf97f 100644 +index a85279f1..81d4fabf 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -314,7 +314,7 @@ Given +@@ -317,7 +317,7 @@ Given #include struct C { @@ -22,7 +22,7 @@ index a1b8f00c..326cf97f 100644 }; int main() { -@@ -2616,23 +2616,23 @@ namespace AB { +@@ -2619,23 +2619,23 @@ namespace AB { void h() { @@ -59,7 +59,7 @@ index a1b8f00c..326cf97f 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 1d3c4df1..c6c49338 100644 +index 381250b8..4266aed5 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2924,7 +2924,7 @@ struct s2 { @@ -75,10 +75,10 @@ index 1d3c4df1..c6c49338 100644 2.43.0 -From 26f62ae64ced3a459f7ed769e3163c31e023d882 Mon Sep 17 00:00:00 2001 +From 5d61a22ec14f73f20323c05da461423f6712852c Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 -Subject: [PATCH 02/10] Use new link macros. +Subject: [PATCH 2/9] Use new link macros. --- source/algorithms.tex | 4 +- @@ -111,7 +111,7 @@ Subject: [PATCH 02/10] Use new link macros. 27 files changed, 607 insertions(+), 616 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index c9ab8d9d..afec9113 100644 +index 6ca7e0f1..09938442 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -133,10 +133,10 @@ index c9ab8d9d..afec9113 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index 326cf97f..c83a9d0b 100644 +index 81d4fabf..8411bcae 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -155,7 +155,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. +@@ -158,7 +158,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. \indextext{linkage}% A name used in more than one translation unit can potentially refer to the same entity in these translation units depending on the @@ -145,7 +145,7 @@ index 326cf97f..c83a9d0b 100644 translation unit. \rSec1[basic.def]{Declarations and definitions} -@@ -178,7 +178,7 @@ A declaration may also have effects including: +@@ -181,7 +181,7 @@ A declaration may also have effects including: \item a static assertion\iref{dcl.pre}, \item controlling template instantiation\iref{temp.explicit}, \item guiding template argument deduction for constructors\iref{temp.deduct.guide}, @@ -154,7 +154,7 @@ index 326cf97f..c83a9d0b 100644 \item nothing (in the case of an \grammarterm{empty-declaration}). \end{itemize} -@@ -264,7 +264,7 @@ that defines a function, a class, a variable, or a static data member, +@@ -267,7 +267,7 @@ that defines a function, a class, a variable, or a static data member, \item it is an explicit instantiation declaration\iref{temp.explicit}, or \item it is @@ -163,7 +163,7 @@ index 326cf97f..c83a9d0b 100644 \grammarterm{declaration} is not a definition. \end{itemize} A declaration is said to be a \defn{definition} of each entity that it defines. -@@ -306,7 +306,7 @@ In some circumstances, \Cpp{} implementations implicitly define the +@@ -309,7 +309,7 @@ In some circumstances, \Cpp{} implementations implicitly define the default constructor\iref{class.default.ctor}, copy constructor, move constructor\iref{class.copy.ctor}, copy assignment operator, move assignment operator\iref{class.copy.assign}, @@ -172,7 +172,7 @@ index 326cf97f..c83a9d0b 100644 \end{note} \begin{example} Given -@@ -391,7 +391,7 @@ defined as follows: +@@ -394,7 +394,7 @@ defined as follows: an \grammarterm{id-expression}\iref{expr.prim.id} or a \grammarterm{splice-expression}\iref{expr.prim.splice}, the set contains only $E$. @@ -181,7 +181,7 @@ index 326cf97f..c83a9d0b 100644 an array operand, the set contains the potential results of that operand. \item If $E$ is a class member access expression\iref{expr.ref} of the form -@@ -401,16 +401,15 @@ the set contains the potential results of $E_1$. +@@ -404,16 +404,15 @@ the set contains the potential results of $E_1$. \item If $E$ is a class member access expression naming a static data member, the set contains the \grammarterm{id-expression} designating the data member. @@ -202,7 +202,7 @@ index 326cf97f..c83a9d0b 100644 contains the potential results of the right operand. \item Otherwise, the set is empty. \end{itemize} -@@ -572,8 +571,8 @@ implicitly-defined +@@ -575,8 +574,8 @@ implicitly-defined copy assignment or move assignment function for another class as specified in~\ref{class.copy.assign}. A constructor for a class is odr-used as specified @@ -213,7 +213,7 @@ index 326cf97f..c83a9d0b 100644 \pnum A local entity\iref{basic.pre} -@@ -645,7 +644,7 @@ void h() { +@@ -648,7 +647,7 @@ void h() { \pnum Every program shall contain at least one definition of every function or variable that is odr-used in that program @@ -222,7 +222,7 @@ index 326cf97f..c83a9d0b 100644 The definition can appear explicitly in the program, it can be found in the standard or a user-defined library, or (when appropriate) it is implicitly defined (see~\ref{class.default.ctor}, \ref{class.copy.ctor}, -@@ -693,9 +692,9 @@ The rules for declarations and expressions +@@ -696,9 +695,9 @@ The rules for declarations and expressions describe in which contexts complete class types are required. A class type \tcode{T} must be complete if \begin{itemize} @@ -235,7 +235,7 @@ index 326cf97f..c83a9d0b 100644 \item \tcode{T} is used as the allocated type or array element type in a \grammarterm{new-expression}\iref{expr.new}, or \item an lvalue-to-rvalue conversion is applied to -@@ -715,7 +714,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or +@@ -718,7 +717,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or \keyword{sizeof} operator\iref{expr.sizeof} is applied to an operand of type \tcode{T}, or \item a function with a return type or argument type of type \tcode{T} @@ -244,7 +244,7 @@ index 326cf97f..c83a9d0b 100644 \item a class with a base class of type \tcode{T} is defined\iref{class.derived}, or \item an lvalue of type \tcode{T} is assigned to\iref{expr.assign}, or -@@ -770,7 +769,7 @@ template specializations\iref{temp.spec.partial.match}, except that a name can r +@@ -773,7 +772,7 @@ template specializations\iref{temp.spec.partial.match}, except that a name can r a non-volatile const object with internal or no linkage if the object \begin{itemize} \item has the same literal type in all definitions of \tcode{D}, @@ -253,7 +253,7 @@ index 326cf97f..c83a9d0b 100644 \item is not odr-used in any definition of \tcode{D}, and \item has the same value in all definitions of \tcode{D}, \end{itemize} -@@ -2876,7 +2875,7 @@ consteval int bad_splice(std::meta::info v) { +@@ -2879,7 +2878,7 @@ consteval int bad_splice(std::meta::info v) { \pnum \indextext{program}% \indextext{linking}% @@ -262,7 +262,7 @@ index 326cf97f..c83a9d0b 100644 linked together. A translation unit consists of a sequence of declarations. -@@ -2909,7 +2908,7 @@ are attached to the same module. +@@ -2912,7 +2911,7 @@ are attached to the same module. \indextext{linkage!\idxcode{inline} and}% \indextext{\idxcode{inline}!linkage of}% The name of an entity @@ -271,7 +271,7 @@ index 326cf97f..c83a9d0b 100644 has internal linkage if it is the name of \begin{itemize} \item -@@ -2950,7 +2949,7 @@ typedef declaration in which the class has the typedef name for linkage +@@ -2953,7 +2952,7 @@ typedef declaration in which the class has the typedef name for linkage purposes\iref{dcl.typedef}; or \item \indextext{enumeration!linkage of}% @@ -280,7 +280,7 @@ index 326cf97f..c83a9d0b 100644 in a typedef declaration in which the enumeration has the typedef name for linkage purposes\iref{dcl.typedef}; or \item an unnamed enumeration -@@ -3026,7 +3025,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. +@@ -3029,7 +3028,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. \pnum \indextext{linkage!no}% Names not covered by these rules have no linkage. Moreover, except as @@ -289,7 +289,7 @@ index 326cf97f..c83a9d0b 100644 linkage. \pnum -@@ -3384,8 +3383,8 @@ features of the language, such as references and virtual functions, might +@@ -3387,8 +3386,8 @@ features of the language, such as references and virtual functions, might involve additional memory locations that are not accessible to programs but are managed by the implementation. \end{note} @@ -300,7 +300,7 @@ index 326cf97f..c83a9d0b 100644 locations without interfering with each other. \pnum -@@ -3429,15 +3428,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but +@@ -3432,15 +3431,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but The constructs in a \Cpp{} program create, destroy, refer to, access, and manipulate objects. An \defn{object} is created @@ -319,7 +319,7 @@ index 326cf97f..c83a9d0b 100644 and in its period of destruction\iref{class.cdtor}. \begin{note} -@@ -3567,7 +3566,7 @@ A \defn{potentially-overlapping subobject} is either: +@@ -3570,7 +3569,7 @@ A \defn{potentially-overlapping subobject} is either: \begin{itemize} \item a base class subobject, or \item a non-static data member @@ -328,7 +328,7 @@ index 326cf97f..c83a9d0b 100644 \end{itemize} \pnum -@@ -3588,7 +3587,7 @@ Otherwise, the circumstances under which the object has zero size +@@ -3591,7 +3590,7 @@ Otherwise, the circumstances under which the object has zero size are \impldef{which non-standard-layout objects containing no data are considered empty}. \indextext{most derived object!bit-field}% @@ -337,7 +337,7 @@ index 326cf97f..c83a9d0b 100644 an object with nonzero size shall occupy one or more bytes of storage, including every byte that is occupied in full or in part -@@ -4161,16 +4160,16 @@ the result of the evaluation is the value so produced but is not erroneous: +@@ -4163,16 +4162,16 @@ the result of the evaluation is the value so produced but is not erroneous: is produced by the evaluation of: \begin{itemize} \item @@ -357,7 +357,7 @@ index 326cf97f..c83a9d0b 100644 \end{itemize} then the result of the operation is an indeterminate value or that erroneous value, respectively. -@@ -4361,8 +4360,8 @@ specified in~\ref{class.copy.elision}. +@@ -4363,8 +4362,8 @@ specified in~\ref{class.copy.elision}. \indextext{storage duration!dynamic|(} \pnum @@ -368,7 +368,7 @@ index 326cf97f..c83a9d0b 100644 \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -@@ -4526,9 +4525,9 @@ that would match a handler\iref{except.handle} of type +@@ -4528,9 +4527,9 @@ that would match a handler\iref{except.handle} of type \tcode{std::bad_alloc}\iref{bad.alloc}. \pnum @@ -381,7 +381,7 @@ index 326cf97f..c83a9d0b 100644 a coroutine state\iref{dcl.fct.def.coroutine}, or called indirectly through calls to the functions in the \Cpp{} standard library. -@@ -5034,9 +5033,9 @@ shall be destroyed before +@@ -5036,9 +5035,9 @@ shall be destroyed before impose requirements on implementations regarding the representation of types. There are two kinds of types: fundamental types and compound types. @@ -394,7 +394,7 @@ index 326cf97f..c83a9d0b 100644 \end{note} \pnum -@@ -5210,7 +5209,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, +@@ -5212,7 +5211,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, pointer types, pointer-to-member types\iref{basic.compound}, \tcode{std::meta::\brk{}info}, \tcode{std::nullptr_t}, and @@ -403,7 +403,7 @@ index 326cf97f..c83a9d0b 100644 types are collectively called \defnadjx{scalar}{types}{type}. \label{term.trivially.copyable.type}% -@@ -5243,7 +5242,7 @@ A type is a \defnadj{literal}{type} if it is: +@@ -5246,7 +5245,7 @@ A type is a \defnadj{literal}{type} if it is: \item a scalar type; or \item a reference type; or \item an array of literal type; or @@ -412,7 +412,7 @@ index 326cf97f..c83a9d0b 100644 has all of the following properties: \begin{itemize} \item it has a constexpr destructor\iref{dcl.constexpr}, -@@ -5277,8 +5276,8 @@ will be usable in a constant expression. +@@ -5280,8 +5279,8 @@ will be usable in a constant expression. Two types \cvqual{cv1} \tcode{T1} and \cvqual{cv2} \tcode{T2} are \defnadjx{layout-compatible}{types}{type} if \tcode{T1} and \tcode{T2} are the same type, @@ -423,7 +423,7 @@ index 326cf97f..c83a9d0b 100644 \pnum A type is \defn{consteval-only} if it is either -@@ -5831,7 +5830,7 @@ ordinary pointers to objects or functions. +@@ -5834,7 +5833,7 @@ ordinary pointers to objects or functions. which identify members of a given type within objects of a given class, \ref{dcl.mptr}. Pointers to data members and pointers to member functions are collectively @@ -432,7 +432,7 @@ index 326cf97f..c83a9d0b 100644 \end{itemize} \pnum -@@ -5909,7 +5908,7 @@ layout-compatible types shall +@@ -5912,7 +5911,7 @@ layout-compatible types shall have the same value representation and alignment requirements\iref{basic.align}. \begin{note} @@ -441,7 +441,7 @@ index 326cf97f..c83a9d0b 100644 representation, but their range of valid values is restricted by the extended alignment requirement. \end{note} -@@ -6224,8 +6223,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. +@@ -6227,8 +6226,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. \indextext{program execution|(} \pnum @@ -452,7 +452,7 @@ index 326cf97f..c83a9d0b 100644 block. Such an object exists and retains its last-stored value during the execution of the block and while the block is suspended (by a call of a function, suspension of a coroutine\iref{expr.await}, or receipt of a signal). -@@ -6270,7 +6269,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, +@@ -6273,7 +6272,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, the initialization of the entities captured by copy and the constituent expressions of the \grammarterm{initializer} of the \grammarterm{init-capture}{s}, \item @@ -461,7 +461,7 @@ index 326cf97f..c83a9d0b 100644 the constituent expressions of each default argument\iref{dcl.fct.default} used in the call, or \item -@@ -6301,7 +6300,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope +@@ -6304,7 +6303,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope A \defn{full-expression} is \begin{itemize} \item @@ -471,10 +471,10 @@ index 326cf97f..c83a9d0b 100644 a \grammarterm{constant-expression}\iref{expr.const}, \item diff --git a/source/classes.tex b/source/classes.tex -index a1287851..5fa5e3b8 100644 +index 5f3fc4ea..32338393 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -274,10 +274,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: +@@ -275,10 +275,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: \item has no non-static data members of type non-standard-layout class (or array of such types) or reference, @@ -488,7 +488,7 @@ index a1287851..5fa5e3b8 100644 for all non-static data members, \item has no non-standard-layout base classes, -@@ -660,7 +660,7 @@ if it is +@@ -661,7 +661,7 @@ if it is \end{itemize} For any other \grammarterm{member-declaration}, each declared entity @@ -497,7 +497,7 @@ index a1287851..5fa5e3b8 100644 is a member of the class, and each such \grammarterm{member-declaration} shall either -@@ -675,7 +675,7 @@ Nested types are classes\iref{class.name,class.nest} and +@@ -676,7 +676,7 @@ Nested types are classes\iref{class.name,class.nest} and enumerations\iref{dcl.enum} declared in the class and arbitrary types declared as members by use of a typedef declaration\iref{dcl.typedef} or \grammarterm{alias-declaration}. @@ -506,7 +506,7 @@ index a1287851..5fa5e3b8 100644 are members of the class. \pnum -@@ -821,9 +821,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali +@@ -822,9 +822,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali The \grammarterm{member-declarator-list} can be omitted only after a \grammarterm{class-specifier} or an \grammarterm{enum-specifier} or in a @@ -518,7 +518,7 @@ index a1287851..5fa5e3b8 100644 that is not a friend declaration. \pnum -@@ -926,7 +926,7 @@ unscoped enumeration type; and +@@ -927,7 +927,7 @@ unscoped enumeration type; and \pnum In addition, if class \tcode{T} has a user-declared @@ -527,7 +527,7 @@ index a1287851..5fa5e3b8 100644 \tcode{T} shall have a name different from \tcode{T}. \pnum -@@ -976,7 +976,7 @@ non-static data members (in any order) have layout-compatible +@@ -977,7 +977,7 @@ non-static data members (in any order) have layout-compatible types\iref{term.layout.compatible.type}. \pnum @@ -536,7 +536,7 @@ index a1287851..5fa5e3b8 100644 of struct type \tcode{T1}, it is permitted to read a non-static data member \tcode{m} of another union member of struct type \tcode{T2} provided \tcode{m} is part of the common initial sequence of \tcode{T1} and \tcode{T2}; -@@ -2309,7 +2309,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation +@@ -2310,7 +2310,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation An array of class type contains several subobjects for each of which the destructor is invoked. \end{note} @@ -545,7 +545,7 @@ index a1287851..5fa5e3b8 100644 if it is invoked or as specified in~\ref{expr.new}, \ref{stmt.return}, \ref{dcl.init.aggr}, \ref{class.base.init}, and~\ref{except.throw}. -@@ -6410,7 +6410,7 @@ associated with a \grammarterm{try-block} (if there is one), +@@ -6411,7 +6411,7 @@ associated with a \grammarterm{try-block} (if there is one), the copy-initialization of the exception object can be omitted by constructing $o$ directly into the exception object; @@ -555,7 +555,7 @@ index a1287851..5fa5e3b8 100644 corresponding parameter if the meaning of the program will be unchanged except for the execution of a constructor and destructor for the parameter copy object; diff --git a/source/compatibility.tex b/source/compatibility.tex -index a46c9a71..8c70dc05 100644 +index 60165bf4..41471921 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -2017,8 +2017,8 @@ deallocation functions\iref{expr.new}. @@ -618,7 +618,7 @@ index 4d848e8f..6bd0435e 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index 6a71104d..77036c1f 100644 +index e3b455f6..321f6146 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -6116,14 +6116,14 @@ namespace std { @@ -674,7 +674,7 @@ index 6a71104d..77036c1f 100644 In addition, it supports constant time insert and erase operations at the beginning or the end; insert and erase in the middle take linear time. That is, a deque is especially optimized for pushing and popping elements at the beginning and end. -@@ -7138,7 +7138,7 @@ namespace std { +@@ -7139,7 +7139,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{forward_list} if the allocator meets the @@ -683,7 +683,7 @@ index 6a71104d..77036c1f 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{forward_list} is referenced. -@@ -7722,7 +7722,7 @@ predicate. +@@ -7723,7 +7723,7 @@ predicate. \pnum \remarks @@ -692,7 +692,7 @@ index 6a71104d..77036c1f 100644 \end{itemdescr} \indexlibrarymember{unique}{forward_list}% -@@ -7827,7 +7827,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( +@@ -7828,7 +7828,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( \pnum \remarks @@ -701,7 +701,7 @@ index 6a71104d..77036c1f 100644 \end{itemdescr} \indexlibrarymember{reverse}{forward_list}% -@@ -9027,7 +9027,7 @@ A +@@ -9028,7 +9028,7 @@ A is a sequence container that supports bidirectional iterators and allows constant time insert and erase operations anywhere within the sequence, with storage management handled @@ -710,7 +710,7 @@ index 6a71104d..77036c1f 100644 fast random access to list elements is not supported, but many algorithms only need sequential access anyway. -@@ -9203,7 +9203,7 @@ namespace std { +@@ -9204,7 +9204,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{list} if the allocator meets the @@ -719,7 +719,7 @@ index 6a71104d..77036c1f 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{list} is referenced. -@@ -9616,7 +9616,7 @@ applications of the corresponding predicate. +@@ -9617,7 +9617,7 @@ applications of the corresponding predicate. \pnum \remarks @@ -728,7 +728,7 @@ index 6a71104d..77036c1f 100644 \end{itemdescr} \indexlibrarymember{unique}{list}% -@@ -9739,7 +9739,7 @@ comparisons, where $N$ is \tcode{size()}. +@@ -9740,7 +9740,7 @@ comparisons, where $N$ is \tcode{size()}. \pnum \remarks @@ -737,7 +737,7 @@ index 6a71104d..77036c1f 100644 \end{itemdescr} \rSec3[list.erasure]{Erasure} -@@ -9847,7 +9847,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, +@@ -9848,7 +9848,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, of a sequence container, including most of the optional sequence container requirements\iref{sequence.reqmts}, and, for an element type other than \tcode{bool}, @@ -746,7 +746,7 @@ index 6a71104d..77036c1f 100644 The exceptions are the \tcode{push_front}, \tcode{prepend_range}, \tcode{pop_front}, and \tcode{emplace_front} member functions, which are not provided. Descriptions are provided here only for operations on \tcode{vector} -@@ -9985,7 +9985,7 @@ namespace std { +@@ -9986,7 +9986,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{vector} if the allocator meets the @@ -755,8 +755,8 @@ index 6a71104d..77036c1f 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{vector} is referenced. -@@ -10578,7 +10578,7 @@ Unless described below, all operations have the same requirements and - semantics as the primary \tcode{vector} template, except that operations +@@ -10579,7 +10579,7 @@ Unless described below, all operations have the same requirements and + semantics as the \tcode{vector} primary template, except that operations dealing with the \tcode{bool} value type map to bit values in the container storage and -\tcode{allocator_traits::construct}\iref{allocator.traits.members} @@ -764,7 +764,7 @@ index 6a71104d..77036c1f 100644 is not used to construct these values. \pnum -@@ -15653,9 +15653,9 @@ and +@@ -15655,9 +15655,9 @@ and can be used to instantiate \tcode{queue}. In particular, @@ -776,7 +776,7 @@ index 6a71104d..77036c1f 100644 can be used. \begin{codeblock} -@@ -16010,15 +16010,15 @@ and +@@ -16012,15 +16012,15 @@ and can be used to instantiate \tcode{priority_queue}. In particular, @@ -795,7 +795,7 @@ index 6a71104d..77036c1f 100644 \begin{codeblock} namespace std { -@@ -16563,10 +16563,10 @@ and +@@ -16565,10 +16565,10 @@ and can be used to instantiate \tcode{stack}. In particular, @@ -810,7 +810,7 @@ index 6a71104d..77036c1f 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index 6214e7ef..6960c3e5 100644 +index ee70278b..a8c0ecb3 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -930,7 +930,7 @@ index 6214e7ef..6960c3e5 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7725,7 +7724,7 @@ the initializer is +@@ -7729,7 +7728,7 @@ the initializer is where \tcode{get} undergoes argument-dependent lookup\iref{basic.lookup.argdep}. In either case, \tcode{get} is interpreted as a \grammarterm{template-id}. \begin{note} @@ -939,7 +939,7 @@ index 6214e7ef..6960c3e5 100644 \end{note} In either case, \exposid{e} is an lvalue if the type of the entity \exposid{e} is an lvalue reference and an xvalue otherwise. -@@ -7876,7 +7875,7 @@ is not looked up and is introduced by +@@ -7880,7 +7879,7 @@ is not looked up and is introduced by the \grammarterm{enum-specifier} or \grammarterm{opaque-enum-declaration}. If the \grammarterm{enum-head-name} of an \grammarterm{opaque-enum-declaration} contains a \grammarterm{nested-name-specifier}, @@ -948,7 +948,7 @@ index 6214e7ef..6960c3e5 100644 \pnum \indextext{constant!enumeration}% -@@ -7958,8 +7957,9 @@ If the underlying type is fixed, the type of each enumerator +@@ -7962,8 +7961,9 @@ If the underlying type is fixed, the type of each enumerator prior to the closing brace is the underlying type and the \grammarterm{constant-expression} in the \grammarterm{enumerator-definition} @@ -960,7 +960,7 @@ index 6214e7ef..6960c3e5 100644 If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as -@@ -7968,8 +7968,9 @@ follows: +@@ -7972,8 +7972,9 @@ follows: \begin{itemize} \item If an initializer is specified for an enumerator, the @@ -972,7 +972,7 @@ index 6214e7ef..6960c3e5 100644 unscoped enumeration type, the enumerator has the underlying type of that enumeration type, otherwise it has the same type as the expression. -@@ -8041,7 +8042,7 @@ if they have the same underlying type. +@@ -8045,7 +8046,7 @@ if they have the same underlying type. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -981,7 +981,7 @@ index 6214e7ef..6960c3e5 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8324,7 +8325,7 @@ appertains to the namespace being defined or extended. +@@ -8328,7 +8329,7 @@ appertains to the namespace being defined or extended. Members of an inline namespace can be used in most respects as though they were members of the innermost enclosing namespace. Specifically, the inline namespace and its enclosing namespace are both added to the set of associated namespaces used in @@ -990,7 +990,7 @@ index 6214e7ef..6960c3e5 100644 and a \grammarterm{using-directive}\iref{namespace.udir} that names the inline namespace is implicitly inserted into the enclosing namespace as for an unnamed namespace\iref{namespace.unnamed}. Furthermore, each -@@ -9147,7 +9148,7 @@ different language linkages are distinct types even if they are +@@ -9151,7 +9152,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -999,7 +999,7 @@ index 6214e7ef..6960c3e5 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9477,19 +9478,19 @@ For each individual attribute, the form of the +@@ -9481,19 +9482,19 @@ For each individual attribute, the form of the \pnum In an \grammarterm{attribute-list}, an ellipsis may appear only if that \grammarterm{attribute}'s specification permits it. An \grammarterm{attribute} followed @@ -1024,7 +1024,7 @@ index 6214e7ef..6960c3e5 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9600,7 +9601,7 @@ declaration, the program is ill-formed. +@@ -9604,7 +9605,7 @@ declaration, the program is ill-formed. \pnum An \grammarterm{alignment-specifier} of the form \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same @@ -1033,7 +1033,7 @@ index 6214e7ef..6960c3e5 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9780,7 +9781,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9784,7 +9785,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -1043,7 +1043,7 @@ index 6214e7ef..6960c3e5 100644 such a statement is a fallthrough statement. No \grammarterm{attribute-argument-clause} shall be present. diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index d16f516a..df926181 100644 +index be2b863f..e653b348 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -505,13 +505,13 @@ the current state of \tcode{NDEBUG} each time that @@ -1221,7 +1221,7 @@ index ba2d34d0..cd476d28 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index c6c49338..8e108f2c 100644 +index 4266aed5..d9469cf9 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -2012,7 +2012,7 @@ index c6c49338..8e108f2c 100644 \item diff --git a/source/future.tex b/source/future.tex -index f94b2c33..4c6942b4 100644 +index 5022a94d..fc805a6e 100644 --- a/source/future.tex +++ b/source/future.tex @@ -14,7 +14,7 @@ is defined as: @@ -2049,7 +2049,7 @@ index f94b2c33..4c6942b4 100644 the \oldconcept{TransformationTrait} requirements with a base characteristic of \tcode{integral_constant}. diff --git a/source/intro.tex b/source/intro.tex -index e4014b96..abc66134 100644 +index 880da163..8fb36735 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -105,8 +105,8 @@ Reads of scalar objects are described in \ref{conv.lval} and @@ -2108,7 +2108,7 @@ index e4014b96..abc66134 100644 translation units to form a complete \Cpp{} program\iref{lex.phases}.% \indextext{conformance requirements!library|)} diff --git a/source/iostreams.tex b/source/iostreams.tex -index 7381d9c3..987b4d2d 100644 +index 2de81f0e..af9dce40 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -555,7 +555,7 @@ is initialized, @@ -2428,7 +2428,7 @@ index 7381d9c3..987b4d2d 100644 \pnum \throws diff --git a/source/iterators.tex b/source/iterators.tex -index e0116c79..7acd9d21 100644 +index 6a21fdf1..98944de7 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -729,7 +729,7 @@ is undefined. @@ -2440,7 +2440,7 @@ index e0116c79..7acd9d21 100644 if all operations provided to meet iterator category requirements are constexpr functions. \begin{note} -@@ -6853,7 +6853,7 @@ ostream_iterator& operator++(int); +@@ -6851,7 +6851,7 @@ ostream_iterator& operator++(int); The class template \tcode{istreambuf_iterator} @@ -2449,7 +2449,7 @@ index e0116c79..7acd9d21 100644 reads successive \textit{characters} from the streambuf for which it was constructed. -@@ -6978,7 +6978,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; +@@ -6976,7 +6976,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; Initializes \tcode{sbuf_} with \keyword{nullptr}. \end{itemdescr} @@ -2457,7 +2457,7 @@ index e0116c79..7acd9d21 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(istream_type& s) noexcept; -@@ -6990,7 +6989,6 @@ istreambuf_iterator(istream_type& s) noexcept; +@@ -6988,7 +6987,6 @@ istreambuf_iterator(istream_type& s) noexcept; Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2465,7 +2465,7 @@ index e0116c79..7acd9d21 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(streambuf_type* s) noexcept; -@@ -7002,7 +7000,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; +@@ -7000,7 +6998,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; Initializes \tcode{sbuf_} with \tcode{s}. \end{itemdescr} @@ -2473,7 +2473,7 @@ index e0116c79..7acd9d21 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept; -@@ -7153,7 +7150,6 @@ is not a null pointer. +@@ -7151,7 +7148,6 @@ is not a null pointer. Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2482,7 +2482,7 @@ index e0116c79..7acd9d21 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index 7c818101..372fc8c2 100644 +index 414f0b0d..c14e162a 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2496,7 +2496,7 @@ index 7c818101..372fc8c2 100644 directive \tcode{\#include}, less any source lines skipped by any of the conditional inclusion\iref{cpp.cond} preprocessing directives, as modified by the implementation-defined behavior of any -@@ -2294,7 +2294,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) +@@ -2298,7 +2298,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) \pnum If \placeholder{L} is a \grammarterm{user-defined-character-literal}, let \placeholder{ch} be the literal without its \grammarterm{ud-suffix}. @@ -2506,7 +2506,7 @@ index 7c818101..372fc8c2 100644 literal \placeholder{L} is treated as a call of the form diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index c6339101..c3fcf8d5 100644 +index 4444d26a..4bd46d8f 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2769,7 +2769,7 @@ index bdc1f3de..efd4eb00 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index 7b1f65de..4457140a 100644 +index 24d01efc..e7613b33 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -3424,7 +3424,7 @@ index 34018bd6..785798f7 100644 \grammarterm{declarator} starts with a \tcode{(}. In those cases the \grammarterm{statement} is considered a \grammarterm{declaration}, diff --git a/source/strings.tex b/source/strings.tex -index cc13d13f..e943eef1 100644 +index 5a93b51d..e0a6f1ca 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -5528,13 +5528,13 @@ The contents and meaning of the header \libheaderdef{cstring} @@ -3454,7 +3454,7 @@ index cc13d13f..e943eef1 100644 \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index 19e19d6f..cee9e901 100644 +index ad8cbc54..f3691cd9 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3727,7 +3727,7 @@ index 19e19d6f..cee9e901 100644 calls to the \tcode{setlocale} function or with calls to functions that are affected by the current C locale. The implementation shall behave as if no diff --git a/source/templates.tex b/source/templates.tex -index 9ef3133a..3894c832 100644 +index 2a020516..2133a25e 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -687,7 +687,7 @@ struct A {}; @@ -3899,7 +3899,7 @@ index 9ef3133a..3894c832 100644 apply to member template names. A destructor shall not be a member template. -@@ -3219,7 +3219,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. +@@ -3221,7 +3221,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. \item In a \grammarterm{capture-list}\iref{expr.prim.lambda.capture}; the pattern is the \grammarterm{capture} without the ellipsis. @@ -3908,7 +3908,7 @@ index 9ef3133a..3894c832 100644 \grammarterm{identifier}. \item In a \grammarterm{pack-index-expression}; -@@ -3842,9 +3842,9 @@ primary template. +@@ -3844,9 +3844,9 @@ primary template. \pnum A partial specialization matches a given actual template argument list if the template arguments of the partial specialization can be @@ -3921,7 +3921,7 @@ index 9ef3133a..3894c832 100644 \begin{example} \begin{codeblock} template class A { }; // \#1 -@@ -3906,14 +3906,14 @@ of the primary template. +@@ -3908,14 +3908,14 @@ of the primary template. For two partial specializations, the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more @@ -3939,7 +3939,7 @@ index 9ef3133a..3894c832 100644 as the corresponding partial specialization. \item Each function template -@@ -4119,8 +4119,8 @@ void h(int* p) { +@@ -4121,8 +4121,8 @@ void h(int* p) { \end{example} \pnum @@ -3950,7 +3950,7 @@ index 9ef3133a..3894c832 100644 \pnum The signature of a function template -@@ -4171,7 +4171,7 @@ For example, a template type parameter can be used in the +@@ -4173,7 +4173,7 @@ For example, a template type parameter can be used in the Two expressions involving template parameters are considered \defnx{equivalent}{equivalent!expressions} if two function definitions containing the expressions would satisfy @@ -3959,7 +3959,7 @@ index 9ef3133a..3894c832 100644 to name the template parameters may differ as long as a token used to name a template parameter in one expression is replaced by another token that names the same template parameter in the other expression. -@@ -4341,8 +4341,8 @@ function template +@@ -4343,8 +4343,8 @@ function template specialization is selected to match a placement operator new\iref{basic.stc.dynamic.deallocation,expr.new}; \item @@ -3970,7 +3970,7 @@ index 9ef3133a..3894c832 100644 a function template specialization. \end{itemize} -@@ -4735,7 +4735,7 @@ A \grammarterm{concept-definition} +@@ -4737,7 +4737,7 @@ A \grammarterm{concept-definition} shall inhabit a namespace scope\iref{basic.scope.namespace}. \pnum @@ -3979,7 +3979,7 @@ index 9ef3133a..3894c832 100644 \pnum A concept is not instantiated\iref{temp.spec}. -@@ -5062,7 +5062,7 @@ was a pack expansion and the corresponding pack is empty, or +@@ -5064,7 +5064,7 @@ was a pack expansion and the corresponding pack is empty, or \item an instantiation uses a default argument or default template argument that had not been defined at the point at which the template was defined, or @@ -3988,7 +3988,7 @@ index 9ef3133a..3894c832 100644 instantiation uses \begin{itemize} \item the value of a const object of integral or unscoped enumeration type or -@@ -5315,7 +5315,7 @@ any of the expressions +@@ -5317,7 +5317,7 @@ any of the expressions or \grammarterm{braced-init-list}{s} in the \grammarterm{expression-list} @@ -3997,7 +3997,7 @@ index 9ef3133a..3894c832 100644 \item the \grammarterm{unqualified-id} is a \grammarterm{template-id} in which any of the template arguments depends -@@ -5375,7 +5375,7 @@ if it is +@@ -5377,7 +5377,7 @@ if it is \item in the definition of a class template, a nested class of a class template, a member of a class template, or a member of a nested class of a class template, @@ -4006,7 +4006,7 @@ index 9ef3133a..3894c832 100644 \item in the definition of a primary class template or a member of a primary class template, the name of the -@@ -5654,7 +5654,7 @@ used without a \grammarterm{template-argument-list}. +@@ -5656,7 +5656,7 @@ used without a \grammarterm{template-argument-list}. \end{footnote} \item a \grammarterm{pack-index-specifier}, \item denoted by \tcode{decltype(}\grammarterm{expression}{}\tcode{)}, @@ -4015,7 +4015,7 @@ index 9ef3133a..3894c832 100644 \item denoted by a \grammarterm{splice-type-specifier} in which either the \grammarterm{splice-specifier} or \grammarterm{splice-specialization-specifier} -@@ -5806,7 +5806,7 @@ see~\ref{support.types}. +@@ -5808,7 +5808,7 @@ see~\ref{support.types}. \end{note} \pnum @@ -4024,7 +4024,7 @@ index 9ef3133a..3894c832 100644 type-dependent if the terminal name of its \grammarterm{id-expression}, if any, is dependent or the expression refers to a member of the current instantiation and -@@ -5950,7 +5950,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the +@@ -5952,7 +5952,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the instantiation is value-dependent. An expression of the form \tcode{\&}\grammarterm{cast-expression} is also value-dependent if evaluating \grammarterm{cast-expression} @@ -4033,7 +4033,7 @@ index 9ef3133a..3894c832 100644 the result of the evaluation refers to a templated entity that is an object with static or thread storage duration or a member function. -@@ -6173,7 +6173,7 @@ within a translation unit. +@@ -6175,7 +6175,7 @@ within a translation unit. A specialization for any template may have points of instantiation in multiple translation units. If two different points of instantiation give a template specialization @@ -4042,7 +4042,7 @@ index 9ef3133a..3894c832 100644 the program is ill-formed, no diagnostic required. \pnum -@@ -6486,7 +6486,7 @@ of type +@@ -6488,7 +6488,7 @@ of type \pnum If a function declaration acquired its function type through @@ -4051,7 +4051,7 @@ index 9ef3133a..3894c832 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -6567,7 +6567,7 @@ X ch; // error: incomplete type \tcode{X} +@@ -6569,7 +6569,7 @@ X ch; // error: incomplete type \tcode{X} \end{example} \begin{note} Within a template declaration, @@ -4060,7 +4060,7 @@ index 9ef3133a..3894c832 100644 a local class are never considered to be entities that can be separately instantiated (this includes their default arguments, \grammarterm{noexcept-specifier}{s}, and non-static data member -@@ -6745,7 +6745,7 @@ void x() { +@@ -6747,7 +6747,7 @@ void x() { \end{example} \pnum @@ -4069,7 +4069,7 @@ index 9ef3133a..3894c832 100644 can be determined without instantiating a class template definition, it is unspecified whether that instantiation actually takes place. \begin{example} -@@ -7082,7 +7082,7 @@ If an entity is the subject of both an explicit instantiation declaration +@@ -7084,7 +7084,7 @@ If an entity is the subject of both an explicit instantiation declaration and an explicit instantiation definition in the same translation unit, the definition shall follow the declaration. An entity that is the subject of an explicit instantiation declaration and that is also used @@ -4078,7 +4078,7 @@ index 9ef3133a..3894c832 100644 in the translation unit shall be the subject of an explicit instantiation definition somewhere in the program; otherwise the program is ill-formed, no diagnostic required. -@@ -8147,7 +8147,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. +@@ -8149,7 +8149,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. In the following example, assuming a \tcode{signed char} cannot represent the value 1000, @@ -4087,7 +4087,7 @@ index 9ef3133a..3894c832 100644 would be required to convert the \grammarterm{template-argument} of type \tcode{int} to \tcode{signed char}, -@@ -8256,8 +8256,8 @@ is not a reference type: +@@ -8258,8 +8258,8 @@ is not a reference type: \item If \tcode{A} @@ -4098,7 +4098,7 @@ index 9ef3133a..3894c832 100644 \tcode{A} for type deduction; otherwise, -@@ -8265,7 +8265,7 @@ otherwise, +@@ -8267,7 +8267,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -4107,7 +4107,7 @@ index 9ef3133a..3894c832 100644 of \tcode{A} for type -@@ -8361,8 +8361,8 @@ The transformed \tcode{A} +@@ -8363,8 +8363,8 @@ The transformed \tcode{A} can be another pointer or pointer-to-member type that can be converted to the deduced \tcode{A} @@ -4118,7 +4118,7 @@ index 9ef3133a..3894c832 100644 \item If -@@ -8495,7 +8495,7 @@ void test() { +@@ -8497,7 +8497,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -4127,7 +4127,7 @@ index 9ef3133a..3894c832 100644 If there is a target, the function template's function type and the target type are used as the types of -@@ -8542,7 +8542,7 @@ is not a reference type: +@@ -8544,7 +8544,7 @@ is not a reference type: If \tcode{P} is an array type, the pointer type produced by the @@ -4136,7 +4136,7 @@ index 9ef3133a..3894c832 100644 \tcode{P} for type deduction; otherwise, -@@ -8550,7 +8550,7 @@ deduction; otherwise, +@@ -8552,7 +8552,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -4145,7 +4145,7 @@ index 9ef3133a..3894c832 100644 \tcode{P} for type deduction; otherwise, -@@ -8641,7 +8641,7 @@ after a function has been selected. +@@ -8643,7 +8643,7 @@ after a function has been selected. In the context of a call to a conversion function, the return types of the conversion function templates are used. \item @@ -4154,7 +4154,7 @@ index 9ef3133a..3894c832 100644 type is used. \end{itemize} -@@ -9157,7 +9157,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the +@@ -9159,7 +9159,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the template argument list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by $\texttt{P}_i$. @@ -4163,7 +4163,7 @@ index 9ef3133a..3894c832 100644 originally a pack expansion: \begin{itemize} \item if \tcode{P} does not contain a template argument corresponding to -@@ -9220,7 +9220,7 @@ each remaining parameter type in the parameter-type-list +@@ -9222,7 +9222,7 @@ each remaining parameter type in the parameter-type-list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by the function parameter pack. @@ -4172,7 +4172,7 @@ index 9ef3133a..3894c832 100644 originally a function parameter pack: \begin{itemize} \item if \tcode{P} does not contain a function parameter type corresponding to -@@ -9514,8 +9514,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod +@@ -9516,8 +9516,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod In a declaration whose \grammarterm{declarator-id} refers to a specialization of a function template, template argument deduction is performed to identify the specialization to which the declaration refers. Specifically, this is done @@ -4184,7 +4184,7 @@ index 9ef3133a..3894c832 100644 \tcode{operator new}\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index 6202596d..b2e9462e 100644 +index 68206c12..1b18d89d 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4207,7 +4207,7 @@ index 6202596d..b2e9462e 100644 \begin{itemdecl} m.try_lock_for(rel_time) -@@ -7316,7 +7316,7 @@ namespace std { +@@ -7330,7 +7330,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -4216,7 +4216,7 @@ index 6202596d..b2e9462e 100644 An execution agent \term{owns} a mutex from the time it successfully calls one of the lock functions until it calls unlock. Mutexes can be either recursive or non-recursive, and can grant simultaneous ownership to one or many execution agents. Both -@@ -7360,7 +7360,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on +@@ -7374,7 +7374,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on a single mutex appears to occur in a single total order. \begin{note} This @@ -4225,7 +4225,7 @@ index 6202596d..b2e9462e 100644 mutex. \end{note} \begin{note} -@@ -7440,7 +7440,7 @@ in the absence of contending mutex acquisitions. +@@ -7454,7 +7454,7 @@ in the absence of contending mutex acquisitions. \pnum \sync If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations @@ -4234,7 +4234,7 @@ index 6202596d..b2e9462e 100644 \begin{note} Since \tcode{lock()} does not synchronize with a failed subsequent \tcode{try_lock()}, the visibility rules are weak enough that little would be -@@ -7476,7 +7476,7 @@ Releases the calling thread's ownership of the mutex. +@@ -7490,7 +7490,7 @@ Releases the calling thread's ownership of the mutex. \pnum \sync @@ -4243,7 +4243,7 @@ index 6202596d..b2e9462e 100644 lock operations that obtain ownership on the same object. \pnum -@@ -7605,9 +7605,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, +@@ -7619,9 +7619,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, meet the requirements set out below. In this description, \tcode{m} denotes an object of a mutex type, \tcode{rel_time} denotes an object of an @@ -4255,7 +4255,7 @@ index 6202596d..b2e9462e 100644 \begin{note} The timed mutex types meet the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. -@@ -7897,7 +7897,7 @@ Releases a shared lock on the mutex held by the calling thread. +@@ -7911,7 +7911,7 @@ Releases a shared lock on the mutex held by the calling thread. \pnum \sync @@ -4264,7 +4264,7 @@ index 6202596d..b2e9462e 100644 \tcode{lock()} operations that obtain ownership on the same object. \pnum -@@ -8001,7 +8001,7 @@ meet the requirements set out below. In this description, +@@ -8015,7 +8015,7 @@ meet the requirements set out below. In this description, \tcode{rel_time} denotes an object of an instantiation of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes an object of an instantiation of @@ -4273,7 +4273,7 @@ index 6202596d..b2e9462e 100644 \begin{note} The shared timed mutex types meet the \oldconcept{SharedTimedLockable} requirements\iref{thread.req.lockable.shared.timed}. -@@ -8212,7 +8212,7 @@ namespace std { +@@ -8226,7 +8226,7 @@ namespace std { \pnum An object of type \tcode{lock_guard} controls the ownership of a lockable object within a scope. A \tcode{lock_guard} object maintains ownership of a lockable @@ -4282,7 +4282,7 @@ index 6202596d..b2e9462e 100644 The behavior of a program is undefined if the lockable object referenced by \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} -@@ -8285,7 +8285,7 @@ namespace std { +@@ -8299,7 +8299,7 @@ namespace std { \pnum An object of type \tcode{scoped_lock} controls the ownership of lockable objects within a scope. A \tcode{scoped_lock} object maintains ownership of lockable @@ -4291,7 +4291,7 @@ index 6202596d..b2e9462e 100644 The behavior of a program is undefined if the lockable objects referenced by \tcode{pm} do not exist for the entire lifetime of the \tcode{scoped_lock} object. -@@ -9442,7 +9442,7 @@ earlier returning execution. +@@ -9456,7 +9456,7 @@ earlier returning execution. \pnum \sync For any given \tcode{once_flag}: all active executions occur in a total @@ -4300,7 +4300,7 @@ index 6202596d..b2e9462e 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -11405,22 +11405,21 @@ the state object. +@@ -11419,22 +11419,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4327,7 +4327,7 @@ index 6202596d..b2e9462e 100644 \begin{note} This explicitly specifies that the result of the shared state is visible in the objects that reference this state in the sense of data race -@@ -11739,8 +11738,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -11753,8 +11752,8 @@ The class template \tcode{future} defines a type for asynchronous return objects do not share their shared state with other asynchronous return objects. A default-constructed \tcode{future} object has no shared state. A \tcode{future} object with shared state can be created by @@ -4338,7 +4338,7 @@ index 6202596d..b2e9462e 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -12050,7 +12049,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -12064,7 +12063,7 @@ object has no shared state. A \tcode{shared_future} object with shared state can be created by conversion from a \tcode{future} object and shares its shared state with the @@ -4347,7 +4347,7 @@ index 6202596d..b2e9462e 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -12499,7 +12498,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -12513,7 +12512,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -4406,7 +4406,7 @@ index 2e3e9b55..2939c865 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index 0a26e026..faf5d946 100644 +index db10d7c9..6febc3c3 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -104,15 +104,15 @@ namespace std { @@ -4495,11 +4495,11 @@ index 0a26e026..faf5d946 100644 2.43.0 -From b35c2a39f115c496d62b54a79e8377f38162bd87 Mon Sep 17 00:00:00 2001 +From 857f2971669f68909d9b271c9e98ce2cea8c1537 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 -Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove - range index entry with the same key. +Subject: [PATCH 3/9] Fix dubious \defnx that has see{} in it, and remove range + index entry with the same key. --- source/iostreams.tex | 2 +- @@ -4507,7 +4507,7 @@ Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index 987b4d2d..8a5caca8 100644 +index af9dce40..0f649a76 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -13919,7 +13919,7 @@ without an intervening \grammarterm{root-directory} element. @@ -4520,7 +4520,7 @@ index 987b4d2d..8a5caca8 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index 3894c832..c17177bc 100644 +index 2133a25e..63baaaf8 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -2085,7 +2085,6 @@ so it does match \#2. @@ -4548,11 +4548,11 @@ index 3894c832..c17177bc 100644 2.43.0 -From f0016951bd4aa94a2fe8f54e7c2b726cad6a0623 Mon Sep 17 00:00:00 2001 +From 2384aaae34a7f18462dee0e59147228df6781c36 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 -Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code - and literal fragments. +Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and + literal fragments. --- source/exceptions.tex | 4 +- @@ -4579,7 +4579,7 @@ index cd476d28..df489ab5 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index 372fc8c2..67fc8aaf 100644 +index c14e162a..5e38b875 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -330,43 +330,43 @@ the numerical value has no other meaning in this context. @@ -4663,7 +4663,7 @@ index 372fc8c2..67fc8aaf 100644 \end{floattable} \pnum -@@ -603,7 +603,7 @@ given character: +@@ -606,7 +606,7 @@ given character: \item \indextext{literal!string!raw}% If the next character begins a sequence of characters that could be the prefix @@ -4672,7 +4672,7 @@ index 372fc8c2..67fc8aaf 100644 token shall be a raw string literal. Between the initial and final double quote characters of the raw string, any transformations performed in phase 2 (line splicing) are reverted; this reversion -@@ -611,7 +611,7 @@ shall apply before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting +@@ -614,7 +614,7 @@ shall apply before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting parenthesis is identified. The raw string literal is defined as the shortest sequence of characters that matches the raw-string pattern \begin{ncbnf} @@ -4681,7 +4681,7 @@ index 372fc8c2..67fc8aaf 100644 \end{ncbnf} \item Otherwise, if the next three characters are \tcode{<::} and the subsequent character -@@ -746,15 +746,15 @@ depending on the implementation. +@@ -749,15 +749,15 @@ depending on the implementation. \begin{bnf} \nontermdef{pp-number}\br digit\br @@ -4705,7 +4705,7 @@ index 372fc8c2..67fc8aaf 100644 \end{bnf} \pnum -@@ -1181,19 +1181,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1185,19 +1185,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. \nontermdef{binary-literal}\br \terminal{0b} binary-digit\br \terminal{0B} binary-digit\br @@ -4728,7 +4728,7 @@ index 372fc8c2..67fc8aaf 100644 \end{bnf} \begin{bnf} -@@ -1224,14 +1224,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1228,14 +1228,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{hexadecimal-digit-sequence}\br hexadecimal-digit\br @@ -4747,7 +4747,7 @@ index 372fc8c2..67fc8aaf 100644 \end{bnf} \begin{bnf} -@@ -1246,17 +1246,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1250,17 +1250,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{unsigned-suffix} \textnormal{one of}\br @@ -4768,7 +4768,7 @@ index 372fc8c2..67fc8aaf 100644 \end{bnf} \begin{bnf} -@@ -1295,7 +1295,7 @@ when determining the value. +@@ -1299,7 +1299,7 @@ when determining the value. \pnum The \grammarterm{hexadecimal-digit}s @@ -4777,7 +4777,7 @@ index 372fc8c2..67fc8aaf 100644 have decimal values ten through fifteen. \begin{example} The number twelve can be written \tcode{12}, \tcode{014}, -@@ -1339,7 +1339,7 @@ none & +@@ -1343,7 +1343,7 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4786,7 +4786,7 @@ index 372fc8c2..67fc8aaf 100644 \tcode{unsigned int} & \tcode{unsigned int}\\ & -@@ -1348,7 +1348,7 @@ none & +@@ -1352,7 +1352,7 @@ none & & \tcode{unsigned long long int} & \tcode{unsigned long long int}\\\hline @@ -4795,7 +4795,7 @@ index 372fc8c2..67fc8aaf 100644 \tcode{long int} & \tcode{long int}\\ & -@@ -1360,22 +1360,22 @@ none & +@@ -1364,22 +1364,22 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4823,7 +4823,7 @@ index 372fc8c2..67fc8aaf 100644 & \\\hline \tcode{z} or \tcode{Z} & -@@ -1423,12 +1423,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1427,12 +1427,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \indextext{literal!character}% \begin{bnf} \nontermdef{character-literal}\br @@ -4838,7 +4838,7 @@ index 372fc8c2..67fc8aaf 100644 \end{bnf} \begin{bnf} -@@ -1479,16 +1479,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1483,16 +1483,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{octal-escape-sequence}\br @@ -4861,7 +4861,7 @@ index 372fc8c2..67fc8aaf 100644 \end{bnf} \begin{bnf} -@@ -1676,42 +1676,42 @@ is supported for compatibility with \CppXIV{} and C. +@@ -1680,42 +1680,42 @@ is supported for compatibility with \CppXIV{} and C. \begin{bnf} \nontermdef{fractional-constant}\br @@ -4915,7 +4915,7 @@ index 372fc8c2..67fc8aaf 100644 \end{bnf} \pnum -@@ -1796,8 +1796,8 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1800,8 +1800,8 @@ chosen in an \impldef{choice of larger or smaller value of \indextext{literal!string}% \begin{bnf} \nontermdef{string-literal}\br @@ -4926,7 +4926,7 @@ index 372fc8c2..67fc8aaf 100644 \end{bnf} \begin{bnf} -@@ -1820,7 +1820,7 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1824,7 +1824,7 @@ chosen in an \impldef{choice of larger or smaller value of \begin{bnf} \nontermdef{raw-string}\br @@ -4935,7 +4935,7 @@ index 372fc8c2..67fc8aaf 100644 \end{bnf} \begin{bnf} -@@ -1907,7 +1907,7 @@ UTF-32 & +@@ -1911,7 +1911,7 @@ UTF-32 & \pnum \indextext{literal!string!raw}% @@ -5965,10 +5965,10 @@ index 2939c865..c37f5bba 100644 2.43.0 -From 6b869084fe0b2cec85d080f2babb0c92c9b9adcc Mon Sep 17 00:00:00 2001 +From c789975472923e49702e7ae17f082e17e2da368b Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 -Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. +Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. --- source/algorithms.tex | 4 ---- @@ -6000,7 +6000,7 @@ Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. 26 files changed, 272 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index afec9113..011292f7 100644 +index 09938442..3af19872 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -8698,7 +8698,6 @@ but stronger than those for a partial ordering. @@ -6036,10 +6036,10 @@ index afec9113..011292f7 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index c83a9d0b..e84497ce 100644 +index 8411bcae..0cf54882 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -284,7 +284,6 @@ int X::y = 1; // defines \tcode{X::y} +@@ -287,7 +287,6 @@ int X::y = 1; // defines \tcode{X::y} enum { up, down }; // defines \tcode{up} and \tcode{down} namespace N { int d; } // defines \tcode{N} and \tcode{N::d} X anX; // defines \tcode{anX} @@ -6047,7 +6047,7 @@ index c83a9d0b..e84497ce 100644 \end{codeblock} whereas these are just declarations: \begin{codeblock} -@@ -821,7 +820,6 @@ compute equivalent values\iref{expr.eq}. +@@ -824,7 +823,6 @@ compute equivalent values\iref{expr.eq}. \pnum For the purposes of the preceding requirements: @@ -6055,7 +6055,7 @@ index c83a9d0b..e84497ce 100644 \begin{itemize} \item If \tcode{D} is a class with an implicitly-declared constructor\iref{class.default.ctor,class.copy.ctor}, -@@ -6105,7 +6103,6 @@ has the top-level cv-qualifier \keyword{volatile}. +@@ -6108,7 +6106,6 @@ has the top-level cv-qualifier \keyword{volatile}. \pnum Every integer type has an \term{integer conversion rank} defined as follows: @@ -6064,10 +6064,10 @@ index c83a9d0b..e84497ce 100644 \item No two signed integer types other than \keyword{char} and \tcode{\keyword{signed} \keyword{char}} (if \keyword{char} is signed) have the same rank, even if they have diff --git a/source/classes.tex b/source/classes.tex -index 5fa5e3b8..0b409248 100644 +index 32338393..fcf3f025 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -1716,7 +1716,6 @@ for each non-static data member of +@@ -1717,7 +1717,6 @@ for each non-static data member of that is of class type (or array thereof), the constructor selected to copy/move that member is trivial; \end{itemize} @@ -6075,7 +6075,7 @@ index 5fa5e3b8..0b409248 100644 \indextext{constructor!move!non-trivial}% otherwise the copy/move constructor is \defnx{non-trivial}{constructor!copy!nontrivial}. -@@ -3337,7 +3336,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat +@@ -3338,7 +3337,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat destructor and \tcode{N} has a non-trivial constructor (for instance, if they declare or inherit virtual functions), the active member of \tcode{u} can be safely switched from \tcode{m} to \tcode{n} using the destructor and placement \grammarterm{new-expression} as follows: @@ -6083,7 +6083,7 @@ index 5fa5e3b8..0b409248 100644 \begin{codeblock} u.m.~M(); new (&u.n) N; -@@ -3515,7 +3513,6 @@ A local class cannot have static data members\iref{class.static.data}. +@@ -3516,7 +3514,6 @@ A local class cannot have static data members\iref{class.static.data}. \indextext{multiple inheritance}% A list of base classes can be specified in a class definition using the notation: @@ -6091,7 +6091,7 @@ index 5fa5e3b8..0b409248 100644 \begin{bnf} \nontermdef{base-clause}\br \terminal{:} base-specifier-list -@@ -5490,7 +5487,6 @@ initializers for direct and virtual base class subobjects and +@@ -5491,7 +5488,6 @@ initializers for direct and virtual base class subobjects and non-static data members can be specified by a \grammarterm{ctor-initializer}, which has the form @@ -6099,7 +6099,7 @@ index 5fa5e3b8..0b409248 100644 \begin{bnf} \nontermdef{ctor-initializer}\br \terminal{:} mem-initializer-list -@@ -5961,7 +5957,6 @@ public: +@@ -5962,7 +5958,6 @@ public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; \end{codeblock} @@ -6107,7 +6107,7 @@ index 5fa5e3b8..0b409248 100644 \end{example} \rSec2[class.inhctor.init]{Initialization by inherited constructor}% -@@ -6617,7 +6612,6 @@ any non-static data member of \tcode{C} is of reference type or +@@ -6618,7 +6613,6 @@ any non-static data member of \tcode{C} is of reference type or A binary operator expression \tcode{a @ b} is \defnx{usable}{usable!binary operator expression} if either @@ -6115,7 +6115,7 @@ index 5fa5e3b8..0b409248 100644 \begin{itemize} \item \tcode{a} or \tcode{b} is of class or enumeration type and -@@ -6738,7 +6732,6 @@ The \defnadj{synthesized}{three-way comparison} +@@ -6739,7 +6733,6 @@ The \defnadj{synthesized}{three-way comparison} of type \tcode{R}\iref{cmp.categories} of glvalues \tcode{a} and \tcode{b} of the same type is defined as follows: @@ -6123,7 +6123,7 @@ index 5fa5e3b8..0b409248 100644 \begin{itemize} \item If \tcode{a <=> b} is usable\iref{class.compare.default} and -@@ -6838,7 +6831,6 @@ The \defn{common comparison type} \tcode{U} +@@ -6839,7 +6832,6 @@ The \defn{common comparison type} \tcode{U} of a possibly-empty list of $n$ comparison category types $\tcode{T}_0$, $\tcode{T}_1$, $\dotsc$, $\tcode{T}_{n-1}$ is defined as follows: @@ -6132,7 +6132,7 @@ index 5fa5e3b8..0b409248 100644 \item If at least one $\tcode{T}_i$ is \tcode{std::partial_ordering}, diff --git a/source/compatibility.tex b/source/compatibility.tex -index 8c70dc05..b258ea47 100644 +index 41471921..f67b16a1 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -2619,7 +2619,6 @@ Overspecification. @@ -6151,7 +6151,7 @@ index 8c70dc05..b258ea47 100644 \begin{itemize} \item passing a value to a function that takes an argument of type \tcode{bool}; \item using \tcode{operator==} to compare to \tcode{false} or \tcode{true}; -@@ -3771,7 +3769,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in +@@ -3768,7 +3766,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in \pnum Header \libheaderref{cstring}: The following functions have different declarations: @@ -6159,7 +6159,7 @@ index 8c70dc05..b258ea47 100644 \begin{itemize} \item \tcode{strchr} \item \tcode{strpbrk} -@@ -3785,7 +3782,6 @@ Subclause \ref{cstring.syn} describes the changes. +@@ -3782,7 +3779,6 @@ Subclause \ref{cstring.syn} describes the changes. \pnum Header \libheaderref{cwchar}: The following functions have different declarations: @@ -6167,7 +6167,7 @@ index 8c70dc05..b258ea47 100644 \begin{itemize} \item \tcode{wcschr} \item \tcode{wcspbrk} -@@ -3810,7 +3806,6 @@ in addition to the names declared in +@@ -3807,7 +3803,6 @@ in addition to the names declared in \pnum Header \libheaderref{cstdlib}: The following functions have different behavior: @@ -6305,7 +6305,7 @@ index 6bd0435e..0bfd8612 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 77036c1f..e49a887b 100644 +index 321f6146..1e5a9871 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -685,7 +685,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6355,7 +6355,7 @@ index 77036c1f..e49a887b 100644 \begin{codeblock} template using @\placeholdernc{iter-value-type}@ = typename iterator_traits::value_type; // \expos -@@ -9325,7 +9319,6 @@ If \tcode{size() < sz}, +@@ -9326,7 +9320,6 @@ If \tcode{size() < sz}, appends \tcode{sz - size()} default-inserted elements to the sequence. If \tcode{sz <= size()}, equivalent to: @@ -6363,7 +6363,7 @@ index 77036c1f..e49a887b 100644 \begin{codeblock} list::iterator it = begin(); advance(it, sz); -@@ -10614,13 +10607,11 @@ static constexpr void swap(reference x, reference y) noexcept; +@@ -10615,13 +10608,11 @@ static constexpr void swap(reference x, reference y) noexcept; \pnum \effects Exchanges the contents of \tcode{x} and \tcode{y} as if by: @@ -6377,7 +6377,7 @@ index 77036c1f..e49a887b 100644 \end{itemdescr} \begin{itemdecl} -@@ -20114,7 +20105,6 @@ For each of +@@ -20116,7 +20107,6 @@ For each of \tcode{stack}, the library provides the following formatter specialization where \tcode{\placeholder{adaptor-type}} is the name of the template: @@ -6385,7 +6385,7 @@ index 77036c1f..e49a887b 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -24306,7 +24296,6 @@ typename A::offset_policy +@@ -24308,7 +24298,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6393,7 +6393,7 @@ index 77036c1f..e49a887b 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -25276,7 +25265,6 @@ the \tcode{SliceSpecifier} arguments. +@@ -25278,7 +25267,6 @@ the \tcode{SliceSpecifier} arguments. \pnum For each function defined in \ref{mdspan.sub} that takes a parameter pack named \tcode{slices} as an argument: @@ -6401,7 +6401,7 @@ index 77036c1f..e49a887b 100644 \begin{itemize} \item let \tcode{index_type} be \begin{itemize} -@@ -25540,7 +25528,6 @@ $\le \tcode{src.extent($k$)}$ +@@ -25542,7 +25530,6 @@ $\le \tcode{src.extent($k$)}$ \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: @@ -6409,7 +6409,7 @@ index 77036c1f..e49a887b 100644 \begin{itemize} \item %FIXME: I think we want the count here, "number" is ambiguous. -@@ -25551,7 +25538,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and +@@ -25553,7 +25540,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and for each rank index $k$ of \tcode{Extents} such that \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, \tcode{SubExt\-ents::static_extent(\placeholder{map-rank}[$k$])} equals: @@ -6417,7 +6417,7 @@ index 77036c1f..e49a887b 100644 \begin{itemize} \item \tcode{Extents::static_extent($k$)} -@@ -25591,7 +25577,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that +@@ -25593,7 +25579,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that for each $k$ for which \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, \tcode{ext.extent(\placeholder{map-rank}[$k$])} equals: @@ -6426,7 +6426,7 @@ index 77036c1f..e49a887b 100644 \item \tcode{$s_k$.extent == 0 ? 0 : 1 + (\exposid{de-ice}($s_k$.extent) - 1) / \exposid{de-ice}($s_k$.stride)} diff --git a/source/declarations.tex b/source/declarations.tex -index 6960c3e5..2bd0300a 100644 +index a8c0ecb3..1e8c45d2 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1593,7 +1593,6 @@ a partial specialization\iref{temp.spec.partial}, @@ -6485,7 +6485,7 @@ index 6960c3e5..2bd0300a 100644 \end{itemize} \pnum -@@ -7735,7 +7728,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, +@@ -7739,7 +7732,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, where $\tcode{U}_i$ is an lvalue reference if the initializer is an lvalue and an rvalue reference otherwise, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -6493,7 +6493,7 @@ index 6960c3e5..2bd0300a 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7867,7 +7859,6 @@ struct S { +@@ -7871,7 +7863,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6501,7 +6501,7 @@ index 6960c3e5..2bd0300a 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7964,7 +7955,6 @@ If the underlying +@@ -7968,7 +7959,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6509,7 +6509,7 @@ index 6960c3e5..2bd0300a 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8423,7 +8413,6 @@ void h() { +@@ -8427,7 +8417,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} according to the following grammar: @@ -6517,7 +6517,7 @@ index 6960c3e5..2bd0300a 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8597,7 +8586,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8601,7 +8590,6 @@ not declare functions or function templates, the use of the name is ill-formed\i In particular, the name of a variable, function or enumerator does not hide the name of a class or enumeration declared in a different namespace. For example, @@ -6525,7 +6525,7 @@ index 6960c3e5..2bd0300a 100644 \begin{codeblock} namespace A { class X { }; -@@ -9150,7 +9138,6 @@ otherwise identical. +@@ -9154,7 +9142,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6533,7 +6533,7 @@ index 6960c3e5..2bd0300a 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -10019,7 +10006,6 @@ may be applied to a function or a lambda call operator or +@@ -10023,7 +10010,6 @@ may be applied to a function or a lambda call operator or to the declaration of a class or enumeration. An \grammarterm{attribute-argument-clause} may be present and, if present, shall have the form: @@ -6567,7 +6567,7 @@ index df489ab5..17fe2711 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 8e108f2c..9ae43f93 100644 +index d9469cf9..61abb53e 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -464,7 +464,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -6771,7 +6771,7 @@ index 8e108f2c..9ae43f93 100644 \rSec2[expr.yield]{Yielding a value}% diff --git a/source/future.tex b/source/future.tex -index 4c6942b4..04969113 100644 +index fc805a6e..ab7c724e 100644 --- a/source/future.tex +++ b/source/future.tex @@ -283,7 +283,6 @@ shown in the above synopsis. @@ -6839,7 +6839,7 @@ index 4c6942b4..04969113 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index 8a5caca8..19837154 100644 +index 0f649a76..a34a3f84 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -2102,14 +2102,12 @@ does nothing. @@ -6962,7 +6962,7 @@ index 8a5caca8..19837154 100644 \item If there are no more entries at the current depth, then if \tcode{depth() != 0} iteration over the parent directory resumes; otherwise \tcode{*this = recursive_directory_iterator()}. diff --git a/source/iterators.tex b/source/iterators.tex -index 7acd9d21..85213808 100644 +index 98944de7..315cca9e 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -948,7 +948,6 @@ may be defined as \keyword{void}. @@ -6989,7 +6989,7 @@ index 7acd9d21..85213808 100644 \begin{itemize} \item \tcode{iter_move(E)}, if \tcode{E} has class or enumeration type and -@@ -2793,7 +2790,6 @@ namespace std { +@@ -2791,7 +2788,6 @@ namespace std { A program-defined iterator \tcode{BinaryTreeIterator} can be included into the bidirectional iterator category by specializing the \tcode{iterator_traits} template: @@ -6997,7 +6997,7 @@ index 7acd9d21..85213808 100644 \begin{codeblock} template struct iterator_traits> { using iterator_category = bidirectional_iterator_tag; -@@ -2811,7 +2807,6 @@ If +@@ -2809,7 +2805,6 @@ If \tcode{evolve()} is well-defined for bidirectional iterators, but can be implemented more efficiently for random access iterators, then the implementation is as follows: @@ -7005,7 +7005,7 @@ index 7acd9d21..85213808 100644 \begin{codeblock} template inline void -@@ -3398,7 +3393,6 @@ As if by: +@@ -3396,7 +3391,6 @@ As if by: Iterator tmp = current; return *--tmp; \end{codeblock} @@ -7013,7 +7013,7 @@ index 7acd9d21..85213808 100644 \end{itemdescr} \indexlibrarymember{operator->}{reverse_iterator}% -@@ -4780,7 +4774,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 +@@ -4778,7 +4772,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 vector v2(make_move_iterator(s.begin()), make_move_iterator(s.end())); // moves strings into \tcode{v2} \end{codeblock} @@ -7021,7 +7021,7 @@ index 7acd9d21..85213808 100644 \end{example} \rSec3[move.iterator]{Class template \tcode{move_iterator}} -@@ -6499,7 +6492,6 @@ partial_sum(istream_iterator(cin), +@@ -6497,7 +6490,6 @@ partial_sum(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "@\textbackslash@n")); \end{codeblock} @@ -7030,7 +7030,7 @@ index 7acd9d21..85213808 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index c3fcf8d5..729bd1dc 100644 +index 4bd46d8f..76ea7917 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -196,7 +196,6 @@ save space, items that do not apply to a Clause are omitted. @@ -7178,7 +7178,7 @@ index efd4eb00..12180661 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index 8ad74c93..92ff4466 100644 +index e4a250b1..deb35ac5 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1571,7 +1571,6 @@ when considered as an unevaluated operand. @@ -7198,7 +7198,7 @@ index 8ad74c93..92ff4466 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index 08347e95..0e7255dd 100644 +index 6eda2087..e6dedae6 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -1943,7 +1943,6 @@ is_base_of_v // \tcode{false} @@ -7218,7 +7218,7 @@ index 08347e95..0e7255dd 100644 \item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}. diff --git a/source/numerics.tex b/source/numerics.tex -index 4457140a..52a0e3ec 100644 +index e7613b33..accd8c6d 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); @@ -7461,7 +7461,7 @@ index a6fd4d0f..da2270a0 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 2a606adf..8b0f4e38 100644 +index 49105075..1ce5326c 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7528,7 +7528,7 @@ index 2a606adf..8b0f4e38 100644 \begin{codeblock} template concept @\defexposconceptnc{simple-view}@ = // \expos -@@ -5886,7 +5878,6 @@ If \tcode{decltype((F))} does not model +@@ -5888,7 +5880,6 @@ If \tcode{decltype((F))} does not model \tcode{views::take(E, F)} is ill-formed. Otherwise, the expression \tcode{views::take(E, F)} is expression-equivalent to: @@ -7536,7 +7536,7 @@ index 2a606adf..8b0f4e38 100644 \begin{itemize} \item If \tcode{T} is a specialization -@@ -5907,7 +5898,6 @@ then +@@ -5909,7 +5900,6 @@ then ranges::be\-gin(E) + std::min(ranges::distance(E), F))}, except that \tcode{E} is evaluated only once, where \tcode{U} is a type determined as follows: @@ -7544,7 +7544,7 @@ index 2a606adf..8b0f4e38 100644 \begin{itemize} \item if \tcode{T} is a specialization of \tcode{span}, then \tcode{U} is \tcode{span}; -@@ -6369,7 +6359,6 @@ If \tcode{decltype((F))} does not model +@@ -6371,7 +6361,6 @@ If \tcode{decltype((F))} does not model \tcode{views::drop(E, F)} is ill-formed. Otherwise, the expression \tcode{views::drop(E, F)} is expression-equivalent to: @@ -7552,7 +7552,7 @@ index 2a606adf..8b0f4e38 100644 \begin{itemize} \item If \tcode{T} is a specialization of -@@ -7445,7 +7434,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and +@@ -7447,7 +7436,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and \exposid{Base} and \exposid{InnerBase} each model \libconcept{forward_range}. In that case, \tcode{\exposid{iterator}::iterator_category} is defined as follows: @@ -7560,7 +7560,7 @@ index 2a606adf..8b0f4e38 100644 \begin{itemize} \item Let \placeholder{OUTERC} denote -@@ -9744,7 +9732,6 @@ appears in the immediate context of a template instantiation. +@@ -9746,7 +9734,6 @@ appears in the immediate context of a template instantiation. \end{note} Otherwise, \tcode{views::counted(E, F)} is expression-equivalent to: @@ -7581,7 +7581,7 @@ index 785798f7..fa5898d3 100644 \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are diff --git a/source/support.tex b/source/support.tex -index cee9e901..09e93b10 100644 +index f3691cd9..43f3c9f5 100644 --- a/source/support.tex +++ b/source/support.tex @@ -2459,7 +2459,6 @@ This requirement is binding on any replacement versions of these functions. @@ -7617,7 +7617,7 @@ index cee9e901..09e93b10 100644 using promise_type = typename R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index c17177bc..fc802e62 100644 +index 63baaaf8..91b148f9 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -235,7 +235,6 @@ in some translation unit; no diagnostic is required. @@ -7668,7 +7668,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item In a function parameter pack\iref{dcl.fct}; the pattern is the \grammarterm{parameter-declaration} without the ellipsis. -@@ -3768,7 +3762,6 @@ All other constant template arguments are specialized. +@@ -3770,7 +3764,6 @@ All other constant template arguments are specialized. \pnum Within the argument list of a partial specialization, the following restrictions apply: @@ -7676,7 +7676,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item The type of a template parameter corresponding to a specialized constant template -@@ -3782,7 +3775,6 @@ template< int X, int (*array_ptr)[X] > class A {}; +@@ -3784,7 +3777,6 @@ template< int X, int (*array_ptr)[X] > class A {}; int array[5]; template< int X > class A { }; // error \end{codeblock} @@ -7684,7 +7684,7 @@ index c17177bc..fc802e62 100644 \end{example} \item The partial specialization shall be more specialized than the primary -@@ -3908,7 +3900,6 @@ the first is \defn{more specialized} than the second if, given the following +@@ -3910,7 +3902,6 @@ the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more specialized than the second according to the \link{ordering rules for function templates}{temp.func.order}: @@ -7692,7 +7692,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item Each of the two -@@ -4060,7 +4051,6 @@ A::B abci; // uses \#1 +@@ -4062,7 +4053,6 @@ A::B abci; // uses \#1 A function template defines an unbounded set of related functions. \begin{example} A family of sort functions can be declared like this: @@ -7700,7 +7700,7 @@ index c17177bc..fc802e62 100644 \begin{codeblock} template class Array { }; template void sort(Array&); -@@ -4115,7 +4105,6 @@ void h(int* p) { +@@ -4117,7 +4107,6 @@ void h(int* p) { } \end{codeblock} \end{minipage} @@ -7708,7 +7708,7 @@ index c17177bc..fc802e62 100644 \end{example} \pnum -@@ -4301,7 +4290,6 @@ to guarantee that functionally equivalent declarations will be treated +@@ -4303,7 +4292,6 @@ to guarantee that functionally equivalent declarations will be treated as distinct. For example, the last two declarations are functionally equivalent and would cause a program to be ill-formed: @@ -7716,7 +7716,7 @@ index c17177bc..fc802e62 100644 \begin{codeblock} // guaranteed to be the same template void f(A, A); -@@ -4394,7 +4382,6 @@ then the order of the function parameters in its transformed template +@@ -4396,7 +4384,6 @@ then the order of the function parameters in its transformed template is reversed. For a function template $M$ with cv-qualifiers \cv{} that is a member of a class $A$: @@ -7724,7 +7724,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item The type $X(M)$ is ``rvalue reference to \cv{}~$A$'' -@@ -4650,7 +4637,6 @@ template class TT> +@@ -4652,7 +4639,6 @@ template class TT> void g(TT>); g(v); // OK, \tcode{TT} = \tcode{vector} \end{codeblock} @@ -7732,7 +7732,7 @@ index c17177bc..fc802e62 100644 \end{example} \pnum -@@ -5516,7 +5502,6 @@ of a class that is the current instantiation. +@@ -5518,7 +5504,6 @@ of a class that is the current instantiation. \pnum A qualified name\iref{basic.lookup.qual} is dependent if @@ -7740,7 +7740,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item it is a \grammarterm{conversion-function-id} -@@ -5765,7 +5750,6 @@ specified by the +@@ -5767,7 +5752,6 @@ specified by the or \grammarterm{new-type-id} is dependent, even if any subexpression is type-dependent: @@ -7748,7 +7748,7 @@ index c17177bc..fc802e62 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br simple-type-specifier braced-init-list\br -@@ -5783,7 +5767,6 @@ typename-specifier braced-init-list\br +@@ -5785,7 +5769,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following forms are never type-dependent (because the type of the expression cannot be dependent): @@ -7756,7 +7756,7 @@ index c17177bc..fc802e62 100644 \begin{ncsimplebnf} literal\br \keyword{sizeof} unary-expression\br -@@ -5888,7 +5871,6 @@ Expressions of the following form are value-dependent if the +@@ -5890,7 +5873,6 @@ Expressions of the following form are value-dependent if the is type-dependent or the \grammarterm{type-id} is dependent: @@ -7764,7 +7764,7 @@ index c17177bc..fc802e62 100644 \begin{ncsimplebnf} \keyword{sizeof} unary-expression\br \keyword{sizeof} \terminal{(} type-id \terminal{)}\br -@@ -5916,7 +5898,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} +@@ -5918,7 +5900,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} is value-dependent or any \grammarterm{assignment-expression} in the \grammarterm{braced-init-list} is value-dependent: @@ -7772,7 +7772,7 @@ index c17177bc..fc802e62 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br typename-specifier \terminal{(} \opt{expression-list} \terminal{)}\br -@@ -5931,7 +5912,6 @@ typename-specifier braced-init-list\br +@@ -5933,7 +5914,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following form are value-dependent: @@ -7780,7 +7780,7 @@ index c17177bc..fc802e62 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -6935,7 +6915,6 @@ template. +@@ -6937,7 +6917,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -7788,7 +7788,7 @@ index c17177bc..fc802e62 100644 \begin{bnf} \nontermdef{explicit-instantiation}\br \opt{\keyword{extern}} \keyword{template} declaration -@@ -7410,7 +7389,6 @@ otherwise, it is a declaration. +@@ -7412,7 +7391,6 @@ otherwise, it is a declaration. The definition of a static data member of a template for which default-initialization is desired can use functional cast notation\iref{expr.type.conv}: @@ -7796,7 +7796,7 @@ index c17177bc..fc802e62 100644 \begin{codeblock} template<> X Q::x; // declaration template<> X Q::x (); // error: declares a function -@@ -7669,7 +7647,6 @@ An empty template argument list can be used to indicate that a given +@@ -7671,7 +7649,6 @@ An empty template argument list can be used to indicate that a given use refers to a specialization of a function template even when a non-template function\iref{dcl.fct} is visible that would otherwise be used. For example: @@ -7804,7 +7804,7 @@ index c17177bc..fc802e62 100644 \begin{codeblock} template int f(T); // \#1 int f(int); // \#2 -@@ -8251,7 +8228,6 @@ void h(int x, float& y) { +@@ -8253,7 +8230,6 @@ void h(int x, float& y) { If \tcode{P} is not a reference type: @@ -7812,7 +7812,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item If -@@ -8346,7 +8322,6 @@ the type +@@ -8348,7 +8324,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -7820,7 +7820,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item If the original -@@ -8536,7 +8511,6 @@ of \tcode{P} for type deduction and for any further references to or transformat +@@ -8538,7 +8513,6 @@ of \tcode{P} for type deduction and for any further references to or transformat If \tcode{A} is not a reference type: @@ -7828,7 +7828,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item If -@@ -8582,7 +8556,6 @@ values that will make the deduced +@@ -8584,7 +8558,6 @@ values that will make the deduced identical to \tcode{A}. However, certain attributes of \tcode{A} may be ignored: @@ -7836,7 +7836,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item If the original \tcode{A} is a reference type, -@@ -8627,7 +8600,6 @@ the argument template and template-1 as the parameter template. +@@ -8629,7 +8602,6 @@ the argument template and template-1 as the parameter template. \pnum The types used to determine the ordering depend on the context in which the partial ordering is done: @@ -7844,7 +7844,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item In the context of a function call, the types used are those function parameter types -@@ -8655,7 +8627,6 @@ and +@@ -8657,7 +8629,6 @@ and \pnum Before the partial ordering is done, certain transformations are performed on the types used for partial ordering: @@ -7852,7 +7852,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item If -@@ -8861,7 +8832,6 @@ A given type +@@ -8863,7 +8834,6 @@ A given type \tcode{P} can be composed from a number of other types, templates, and constant template argument values: @@ -7860,7 +7860,7 @@ index c17177bc..fc802e62 100644 \begin{itemize} \item A function type includes the types of each of the function parameters, -@@ -8903,7 +8873,6 @@ need not have the same form. +@@ -8905,7 +8875,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -7868,7 +7868,7 @@ index c17177bc..fc802e62 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -8998,7 +8967,6 @@ is deduced. +@@ -9000,7 +8969,6 @@ is deduced. \begin{example} Here is an example in which different parameter/argument pairs produce inconsistent template argument deductions: @@ -7876,7 +7876,7 @@ index c17177bc..fc802e62 100644 \begin{codeblock} template void f(T x, T y) { @\commentellip@ } struct A { @\commentellip@ }; -@@ -9015,7 +8983,6 @@ Here is an example where two template arguments are deduced from a +@@ -9017,7 +8985,6 @@ Here is an example where two template arguments are deduced from a single function parameter/argument pair. This can lead to conflicts that cause type deduction to fail: @@ -7884,7 +7884,7 @@ index c17177bc..fc802e62 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -9032,7 +8999,6 @@ void r() { +@@ -9034,7 +9001,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -7892,7 +7892,7 @@ index c17177bc..fc802e62 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -9051,7 +9017,6 @@ void h() { +@@ -9053,7 +9019,6 @@ void h() { Here is an example where a qualification conversion applies between the argument type on the function call and the deduced template argument type: @@ -7900,7 +7900,7 @@ index c17177bc..fc802e62 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -9062,7 +9027,6 @@ void s() { +@@ -9064,7 +9029,6 @@ void s() { Here is an example where the template argument is used to instantiate a derived class type of the corresponding function parameter type: @@ -7909,10 +7909,10 @@ index c17177bc..fc802e62 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index b2e9462e..bec330ff 100644 +index 1b18d89d..45b25596 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -7372,7 +7372,6 @@ and visible to other threads. +@@ -7386,7 +7386,6 @@ and visible to other threads. \pnum The expression \tcode{m.lock()} is well-formed and has the following semantics: @@ -7920,7 +7920,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -7415,7 +7414,6 @@ that a deadlock would occur. +@@ -7429,7 +7428,6 @@ that a deadlock would occur. \pnum The expression \tcode{m.try_lock()} is well-formed and has the following semantics: @@ -7928,7 +7928,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -7461,7 +7459,6 @@ Nothing. +@@ -7475,7 +7473,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -7936,7 +7936,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -7616,7 +7613,6 @@ requirements\iref{thread.req.lockable.timed}. +@@ -7630,7 +7627,6 @@ requirements\iref{thread.req.lockable.timed}. \pnum The expression \tcode{m.try_lock_for(rel_time)} is well-formed and has the following semantics: @@ -7944,7 +7944,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -7658,7 +7654,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -7672,7 +7668,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_until(abs_time)} is well-formed and has the following semantics: @@ -7952,7 +7952,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -7845,7 +7840,6 @@ shared lock. +@@ -7859,7 +7854,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -7960,7 +7960,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -7882,7 +7876,6 @@ The calling thread has a shared lock on the mutex. +@@ -7896,7 +7890,6 @@ The calling thread has a shared lock on the mutex. \pnum The expression \tcode{m.unlock_shared()} is well-formed and has the following semantics: @@ -7968,7 +7968,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -7907,7 +7900,6 @@ Nothing. +@@ -7921,7 +7914,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -7976,7 +7976,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -8010,7 +8002,6 @@ requirements\iref{thread.req.lockable.shared.timed}. +@@ -8024,7 +8016,6 @@ requirements\iref{thread.req.lockable.shared.timed}. \pnum The expression \tcode{m.try_lock_shared_for(rel_time)} is well-formed and has the following semantics: @@ -7984,7 +7984,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -8055,7 +8046,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -8069,7 +8060,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_shared_until(abs_time)} is well-formed and has the following semantics: @@ -7992,7 +7992,7 @@ index b2e9462e..bec330ff 100644 \begin{itemdescr} \pnum \expects -@@ -10193,7 +10183,6 @@ template +@@ -10207,7 +10197,6 @@ template \begin{itemdescr} \pnum \effects @@ -8000,7 +8000,7 @@ index b2e9462e..bec330ff 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -11584,7 +11573,6 @@ shared state as \tcode{*this}. +@@ -11598,7 +11587,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -8008,7 +8008,7 @@ index b2e9462e..bec330ff 100644 \begin{itemize} \item \tcode{future_already_retrieved} if \tcode{get_future} has already been called on a \tcode{promise} with the same shared state as \tcode{*this}. -@@ -11647,7 +11635,6 @@ already has a stored value or exception. +@@ -11661,7 +11649,6 @@ already has a stored value or exception. \pnum \errors @@ -8016,7 +8016,7 @@ index b2e9462e..bec330ff 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -11987,7 +11974,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -12001,7 +11988,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -8024,7 +8024,7 @@ index b2e9462e..bec330ff 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12331,7 +12317,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -12345,7 +12331,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8032,7 +8032,7 @@ index b2e9462e..bec330ff 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12366,7 +12351,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -12380,7 +12365,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8040,7 +8040,7 @@ index b2e9462e..bec330ff 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12422,7 +12406,6 @@ The further behavior +@@ -12436,7 +12420,6 @@ The further behavior of the second function depends on the \tcode{policy} argument as follows (if more than one of these conditions applies, the implementation may choose any of the corresponding policies): @@ -8199,7 +8199,7 @@ index c37f5bba..f52ab7f4 100644 \fmtnontermdef{chrono-format-spec}\br \opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs} diff --git a/source/utilities.tex b/source/utilities.tex -index faf5d946..b79fc8d3 100644 +index 6febc3c3..78087710 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -270,7 +270,6 @@ Exchanges values stored in two locations. @@ -8250,7 +8250,7 @@ index faf5d946..b79fc8d3 100644 \begin{codeblock} transform(a.begin(), a.end(), b.begin(), a.begin(), plus()); \end{codeblock} -@@ -14930,7 +14924,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; +@@ -14929,7 +14923,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; The header provides partial specializations of \tcode{function_ref} for each combination of the possible replacements of the placeholders \cv{} and \placeholder{noex} where: @@ -8262,10 +8262,10 @@ index faf5d946..b79fc8d3 100644 2.43.0 -From 713553b603864c1b414be8d05b59173e693ee343 Mon Sep 17 00:00:00 2001 +From c92248534f4ad6851524ecd28625433427575860 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 -Subject: [PATCH 06/10] Use monospace font for code in figures. +Subject: [PATCH 6/9] Use monospace font for code in figures. --- source/assets/figdag.dot | 8 ++++---- @@ -8409,10 +8409,10 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From cb2cc2cb59467f4fa92cffdbef1395ad963ab521 Mon Sep 17 00:00:00 2001 +From 0019625753aa4d51eb92af8b1a67721d088d6d45 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 -Subject: [PATCH 07/10] [uaxid] Mark code that's not to be highlighted. +Subject: [PATCH 7/9] [uaxid] Mark code that's not to be highlighted. --- source/uax31.tex | 4 ++-- @@ -8437,10 +8437,10 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From c640f817cfcec1580cec83b57e171dbb925c8b6e Mon Sep 17 00:00:00 2001 +From cfcee64febebd71b55588c5a211edb800d558450 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 -Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. +Subject: [PATCH 8/9] Use cxxdraft-htmlgen macros more. --- source/algorithms.tex | 180 +++++++++++++------------- @@ -8461,7 +8461,7 @@ Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. 15 files changed, 490 insertions(+), 498 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 011292f7..3dcc8907 100644 +index 3af19872..42bc0626 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -9055,7 +9055,7 @@ index 0bfd8612..b166e3a9 100644 invocation of the destructor does not actually throw. \end{note} diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index df926181..ffcb4e9f 100644 +index e653b348..2adaa033 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -758,9 +758,9 @@ namespace std { @@ -9121,7 +9121,7 @@ index df926181..ffcb4e9f 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 058038ef..887279b0 100644 +index 22eb3485..587fdbf0 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9160,7 +9160,7 @@ index 058038ef..887279b0 100644 \\ \end{floattable} diff --git a/source/future.tex b/source/future.tex -index 04969113..8c17e33e 100644 +index ab7c724e..c69ae9e5 100644 --- a/source/future.tex +++ b/source/future.tex @@ -359,7 +359,7 @@ template struct is_pod; @@ -9209,7 +9209,7 @@ index 04969113..8c17e33e 100644 \begin{itemize} \item for the first specialization, \tcode{add_volatile_t}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index 19837154..ba13c1f7 100644 +index a34a3f84..0ff3588e 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -1681,10 +1681,10 @@ An \tcode{fpos} type specifies file position information. @@ -9290,7 +9290,7 @@ index 19837154..ba13c1f7 100644 \pnum If an iterator of type \tcode{directory_iterator} reports an error or diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 729bd1dc..2ff6567d 100644 +index 76ea7917..7712e342 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -1862,7 +1862,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. @@ -9399,7 +9399,7 @@ index 729bd1dc..2ff6567d 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index 92ff4466..c59c2b55 100644 +index deb35ac5..d574546f 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1273,7 +1273,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type @@ -9572,7 +9572,7 @@ index 92ff4466..c59c2b55 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index 0e7255dd..ee96bf8f 100644 +index e6dedae6..b2188af9 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -95,12 +95,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -10181,7 +10181,7 @@ index 0e7255dd..ee96bf8f 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index 52a0e3ec..0aac59a4 100644 +index accd8c6d..f9579b68 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul @@ -10305,7 +10305,7 @@ index 52a0e3ec..0aac59a4 100644 whose \tcode{value_type} is the template parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. diff --git a/source/strings.tex b/source/strings.tex -index e943eef1..13b33fa6 100644 +index e0a6f1ca..e654c723 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -238,10 +238,10 @@ using state_type = @\seebelow@; @@ -10333,7 +10333,7 @@ index e943eef1..13b33fa6 100644 meets the constexpr iterator requirements\iref{iterator.requirements.general}, whose \tcode{value_type} is the template parameter \tcode{charT}. diff --git a/source/support.tex b/source/support.tex -index 09e93b10..4ee8d4ed 100644 +index 43f3c9f5..047f9904 100644 --- a/source/support.tex +++ b/source/support.tex @@ -3657,11 +3657,11 @@ namespace std { @@ -10372,7 +10372,7 @@ index 09e93b10..4ee8d4ed 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index bec330ff..da485dc5 100644 +index 45b25596..c897fccc 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10435,7 +10435,7 @@ index bec330ff..da485dc5 100644 the following expressions are well-formed, have type \tcode{bool}, and have the specified semantics (\tcode{m} denotes a value of type \tcode{L}, -@@ -4499,7 +4499,7 @@ namespace std { +@@ -4510,7 +4510,7 @@ namespace std { \indexlibraryglobal{atomic}% \pnum The template argument for \tcode{T} shall meet the @@ -10444,7 +10444,7 @@ index bec330ff..da485dc5 100644 The program is ill-formed if any of \begin{itemize} \item \tcode{is_trivially_copyable_v}, -@@ -7333,11 +7333,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, +@@ -7347,11 +7347,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, They meet the requirements set out in \ref{thread.mutex.requirements.mutex}. In this description, \tcode{m} denotes an object of a mutex type. \begin{note} @@ -10458,7 +10458,7 @@ index bec330ff..da485dc5 100644 If initialization of an object of a mutex type fails, an exception of type \tcode{system_error} is thrown. The mutex types are neither copyable nor movable. -@@ -7606,7 +7606,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de +@@ -7620,7 +7620,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de object of an instantiation of \link{\tcode{time_point}}{time.point}. \begin{note} @@ -10467,7 +10467,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -7818,7 +7818,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally +@@ -7832,7 +7832,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally meet the requirements set out below. In this description, \tcode{m} denotes an object of a shared mutex type. \begin{note} @@ -10476,7 +10476,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.shared}. \end{note} -@@ -7995,7 +7995,7 @@ meet the requirements set out below. In this description, +@@ -8009,7 +8009,7 @@ meet the requirements set out below. In this description, \tcode{abs_time} denotes an object of an instantiation of \link{\tcode{time_point}}{time.point}. \begin{note} @@ -10485,7 +10485,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.shared.timed}. \end{note} -@@ -8205,7 +8205,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable +@@ -8219,7 +8219,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable object throughout the \tcode{lock_guard} object's \deflink{lifetime}{basic.life}. The behavior of a program is undefined if the lockable object referenced by \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} @@ -10494,7 +10494,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.basic}. \indexlibraryctor{lock_guard}% -@@ -8284,12 +8284,12 @@ object. +@@ -8298,12 +8298,12 @@ object. If \tcode{sizeof...(MutexTypes)} is one, let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. \tcode{Mutex} @@ -10509,7 +10509,7 @@ index bec330ff..da485dc5 100644 and there is no member \tcode{mutex_type}. \end{itemize} -@@ -8404,17 +8404,17 @@ copyable but are movable. The behavior of a program is undefined if the containe +@@ -8418,17 +8418,17 @@ copyable but are movable. The behavior of a program is undefined if the containe \tcode{pm} is not null and the lockable object pointed to by \tcode{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied @@ -10533,7 +10533,7 @@ index bec330ff..da485dc5 100644 \end{note} \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} -@@ -8464,7 +8464,7 @@ unique_lock(mutex_type& m, try_to_lock_t); +@@ -8478,7 +8478,7 @@ unique_lock(mutex_type& m, try_to_lock_t); \begin{itemdescr} \pnum \expects @@ -10542,7 +10542,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8506,7 +8506,7 @@ template +@@ -8520,7 +8520,7 @@ template \pnum \expects The supplied \tcode{Mutex} type meets the @@ -10551,7 +10551,7 @@ index bec330ff..da485dc5 100644 \pnum \effects -@@ -8528,7 +8528,7 @@ template +@@ -8542,7 +8542,7 @@ template \begin{itemdescr} \pnum \expects @@ -10560,7 +10560,7 @@ index bec330ff..da485dc5 100644 \pnum \effects -@@ -8615,7 +8615,7 @@ bool try_lock(); +@@ -8629,7 +8629,7 @@ bool try_lock(); \begin{itemdescr} \pnum \expects @@ -10569,7 +10569,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8654,7 +8654,7 @@ template +@@ -8668,7 +8668,7 @@ template \begin{itemdescr} \pnum \expects @@ -10578,7 +10578,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.timed}. \pnum -@@ -8693,7 +8693,7 @@ template +@@ -8707,7 +8707,7 @@ template \begin{itemdescr} \pnum \expects @@ -10587,7 +10587,7 @@ index bec330ff..da485dc5 100644 \pnum \effects -@@ -8886,16 +8886,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type +@@ -8900,16 +8900,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type is undefined if the contained pointer \tcode{pm} is not null and the lockable object pointed to by \tcode{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied @@ -10608,7 +10608,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -8980,7 +8980,7 @@ template +@@ -8994,7 +8994,7 @@ template \begin{itemdescr} \pnum \expects @@ -10617,7 +10617,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9004,7 +9004,7 @@ template +@@ -9018,7 +9018,7 @@ template \begin{itemdescr} \pnum \expects @@ -10626,7 +10626,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9129,7 +9129,7 @@ template +@@ -9143,7 +9143,7 @@ template \begin{itemdescr} \pnum \expects @@ -10635,7 +10635,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9169,7 +9169,7 @@ template +@@ -9183,7 +9183,7 @@ template \begin{itemdescr} \pnum \expects @@ -10644,7 +10644,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9308,7 +9308,7 @@ template int try_lock(L1&, L2&, L3&...); +@@ -9322,7 +9322,7 @@ template int try_lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10653,7 +10653,7 @@ index bec330ff..da485dc5 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9337,7 +9337,7 @@ template void lock(L1&, L2&, L3&...); +@@ -9351,7 +9351,7 @@ template void lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10662,7 +10662,7 @@ index bec330ff..da485dc5 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -10003,7 +10003,7 @@ This can happen if the re-locking of the mutex throws an exception. +@@ -10017,7 +10017,7 @@ This can happen if the re-locking of the mutex throws an exception. \pnum In \ref{thread.condition.condvarany}, template arguments for template parameters named \tcode{Lock} @@ -10671,7 +10671,7 @@ index bec330ff..da485dc5 100644 requirements\iref{thread.req.lockable.basic}. \begin{note} All of the standard -@@ -10941,24 +10941,24 @@ execute atomically. +@@ -10955,24 +10955,24 @@ execute atomically. \pnum \tcode{CompletionFunction} shall meet the @@ -10702,7 +10702,7 @@ index bec330ff..da485dc5 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -11453,7 +11453,7 @@ namespace std { +@@ -11467,7 +11467,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10711,7 +10711,7 @@ index bec330ff..da485dc5 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -11785,7 +11785,7 @@ namespace std { +@@ -11799,7 +11799,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10720,7 +10720,7 @@ index bec330ff..da485dc5 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -12091,7 +12091,7 @@ namespace std { +@@ -12105,7 +12105,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10729,7 +10729,7 @@ index bec330ff..da485dc5 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -13029,7 +13029,7 @@ the expression \tcode{d(ptr)} is valid. +@@ -13043,7 +13043,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -10738,7 +10738,7 @@ index bec330ff..da485dc5 100644 \pnum If \tcode{D} is trivially copyable, -@@ -13087,7 +13087,7 @@ namespace std { +@@ -13101,7 +13101,7 @@ namespace std { \pnum This class meets the requirements of @@ -10747,7 +10747,7 @@ index bec330ff..da485dc5 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -13235,8 +13235,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -13249,8 +13249,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -10758,7 +10758,7 @@ index bec330ff..da485dc5 100644 \pnum \effects -@@ -13428,7 +13428,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -13442,7 +13442,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -10981,7 +10981,7 @@ index f52ab7f4..c0a4aaf9 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index b79fc8d3..76b19166 100644 +index 78087710..722b6077 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -258,9 +258,9 @@ template @@ -11321,7 +11321,7 @@ index b79fc8d3..76b19166 100644 but if so, their copy assignment operators are constexpr functions that do not throw exceptions. -@@ -13816,7 +13816,7 @@ Let \tcode{FD} be \tcode{decay_t}. +@@ -13815,7 +13815,7 @@ Let \tcode{FD} be \tcode{decay_t}. \pnum \expects @@ -11330,7 +11330,7 @@ index b79fc8d3..76b19166 100644 \pnum \ensures -@@ -14241,9 +14241,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14240,9 +14240,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11342,7 +11342,7 @@ index b79fc8d3..76b19166 100644 \pnum \ensures -@@ -14293,9 +14293,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14292,9 +14292,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11354,7 +11354,7 @@ index b79fc8d3..76b19166 100644 \pnum \ensures -@@ -14335,9 +14335,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14334,9 +14334,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11366,7 +11366,7 @@ index b79fc8d3..76b19166 100644 \pnum \ensures -@@ -14659,8 +14659,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14658,8 +14658,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11377,7 +11377,7 @@ index b79fc8d3..76b19166 100644 \pnum \ensures -@@ -14715,8 +14715,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14714,8 +14714,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11388,7 +11388,7 @@ index b79fc8d3..76b19166 100644 \pnum \ensures -@@ -14761,8 +14761,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14760,8 +14760,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11399,7 +11399,7 @@ index b79fc8d3..76b19166 100644 \pnum \ensures -@@ -15277,7 +15277,7 @@ provided to the function call operator. +@@ -15276,7 +15276,7 @@ provided to the function call operator. \pnum Each specialization of a class template specified in \ref{func.search} @@ -11408,7 +11408,7 @@ index b79fc8d3..76b19166 100644 Template parameters named \begin{itemize} \item \tcode{ForwardIterator}, -@@ -15291,7 +15291,7 @@ Template parameters named +@@ -15290,7 +15290,7 @@ Template parameters named of templates specified in \ref{func.search} shall meet the same requirements and semantics as specified in \ref{algorithms.general}. @@ -11417,7 +11417,7 @@ index b79fc8d3..76b19166 100644 requirements (\tref{cpp17.hash}). \pnum -@@ -15400,9 +15400,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, +@@ -15399,9 +15399,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, \pnum \expects The value type of \tcode{RandomAccessIterator1} meets @@ -11430,7 +11430,7 @@ index b79fc8d3..76b19166 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15501,8 +15501,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, +@@ -15500,8 +15500,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, \begin{itemdescr} \pnum \expects @@ -11441,7 +11441,7 @@ index b79fc8d3..76b19166 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15575,7 +15575,7 @@ as the default hash function. +@@ -15574,7 +15574,7 @@ as the default hash function. Each specialization of \tcode{hash} is either enabled or disabled, as described below. \begin{note} @@ -11450,7 +11450,7 @@ index b79fc8d3..76b19166 100644 disabled specializations do not. \end{note} Each header that declares the template \tcode{hash} -@@ -15602,17 +15602,17 @@ Disabled specializations of \tcode{hash} +@@ -15601,17 +15601,17 @@ Disabled specializations of \tcode{hash} are not function object types\iref{function.objects}. \begin{note} This means that the specialization of \tcode{hash} exists, but @@ -11477,10 +11477,10 @@ index b79fc8d3..76b19166 100644 2.43.0 -From 5abd235667d32d8257596ac8c1c4204c65cde051 Mon Sep 17 00:00:00 2001 +From fef073bd6ac7704e98c783ea6444c14a160f8cbf Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 -Subject: [PATCH 09/10] Remove awkward \linebreaks. +Subject: [PATCH 9/9] Remove awkward \linebreaks. --- source/algorithms.tex | 4 ++-- @@ -11495,7 +11495,7 @@ Subject: [PATCH 09/10] Remove awkward \linebreaks. 9 files changed, 68 insertions(+), 69 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 3dcc8907..cf914a0c 100644 +index 42bc0626..4fa0e6ac 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -7070,7 +7070,7 @@ Let: @@ -11517,7 +11517,7 @@ index 3dcc8907..cf914a0c 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index e49a887b..492a1a7d 100644 +index 1e5a9871..a1ea4d5c 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1456,7 +1456,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11548,7 +11548,7 @@ index e49a887b..492a1a7d 100644 \item Assigns \keyword{nullptr} to \tcode{nh.ptr_} and assigns \tcode{nullopt} to -@@ -7467,14 +7466,14 @@ template +@@ -7468,14 +7467,14 @@ template \pnum \expects \tcode{T} is \oldconcept{EmplaceConstructible} into \tcode{forward_list} @@ -11565,7 +11565,7 @@ index e49a887b..492a1a7d 100644 \pnum \returns -@@ -10633,7 +10632,7 @@ template +@@ -10634,7 +10633,7 @@ template \pnum The expression \tcode{\exposid{is-vector-bool-reference}} is \tcode{true} @@ -11574,7 +11574,7 @@ index e49a887b..492a1a7d 100644 for some type \tcode{Alloc} and \tcode{vector} is not a program-defined specialization. \end{itemdescr} -@@ -12025,7 +12024,7 @@ there is no effect. +@@ -12026,7 +12025,7 @@ there is no effect. Otherwise, let \tcode{r} be \tcode{equal_range(k)}. Constructs an object \tcode{u} of type \tcode{value_type} with \tcode{piecewise_construct, forward_as_tuple(std::forward(k)), @@ -11583,7 +11583,7 @@ index e49a887b..492a1a7d 100644 If \tcode{equal_range(u.first) == r} is \tcode{false}, the behavior is undefined. Inserts \tcode{u} into \tcode{*this}. -@@ -17511,7 +17510,7 @@ template +@@ -17513,7 +17512,7 @@ template \pnum \effects Equivalent to \tcode{flat_map(sorted_unique, key_cont, mapped_cont)} and @@ -11592,7 +11592,7 @@ index e49a887b..492a1a7d 100644 except that \tcode{\exposid{c}.keys} and \tcode{\exposid{c}.values} are constructed with uses-allocator construction\iref{allocator.uses.construction}. -@@ -17695,7 +17694,7 @@ template constexpr pair emplace(Args&&... args); +@@ -17697,7 +17696,7 @@ template constexpr pair emplace(Args&&... args); \pnum \effects Initializes an object \tcode{t} of type \tcode{pair} @@ -11601,7 +11601,7 @@ index e49a887b..492a1a7d 100644 if the map already contains an element whose key is equivalent to \tcode{t.first}, \tcode{*this} is unchanged. -@@ -17972,7 +17971,7 @@ template +@@ -17974,7 +17973,7 @@ template \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11610,7 +11610,7 @@ index e49a887b..492a1a7d 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18027,7 +18026,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. +@@ -18029,7 +18028,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11619,7 +11619,7 @@ index e49a887b..492a1a7d 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18641,14 +18640,14 @@ template +@@ -18643,14 +18642,14 @@ template \pnum \effects Equivalent to \tcode{flat_multimap(key_cont, mapped_cont)} and @@ -11636,7 +11636,7 @@ index e49a887b..492a1a7d 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -23209,7 +23208,7 @@ is representable as a value of type \tcode{index_type.} +@@ -23211,7 +23210,7 @@ is representable as a value of type \tcode{index_type.} \item If \exposid{rank_} is greater than one, then the product of @@ -11645,7 +11645,7 @@ index e49a887b..492a1a7d 100644 all values \tcode{ext.extent($k$)} with $k$ in the range of \range{1}{\exposid{rank_}} is representable as a value of type \tcode{index_type}. -@@ -23288,7 +23287,7 @@ template +@@ -23290,7 +23289,7 @@ template \item If \exposid{rank_} is greater than \tcode{1} and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11654,7 +11654,7 @@ index e49a887b..492a1a7d 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(0))) -@@ -23356,7 +23355,7 @@ is \tcode{true}. +@@ -23358,7 +23357,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11663,7 +11663,7 @@ index e49a887b..492a1a7d 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(0))) -@@ -23754,7 +23753,7 @@ Implementations should not store this value +@@ -23756,7 +23755,7 @@ Implementations should not store this value if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. \begin{note} Using \tcode{extents} @@ -11672,7 +11672,7 @@ index e49a887b..492a1a7d 100644 would achieve this. \end{note} \end{itemdescr} -@@ -23837,13 +23836,13 @@ is representable as a value of type \tcode{index_type}. +@@ -23839,13 +23838,13 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -11688,7 +11688,7 @@ index e49a887b..492a1a7d 100644 \end{itemize} \pnum -@@ -23916,7 +23915,7 @@ template +@@ -23918,7 +23917,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11697,7 +11697,7 @@ index e49a887b..492a1a7d 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -23984,7 +23983,7 @@ is \tcode{true}. +@@ -23986,7 +23985,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11706,7 +11706,7 @@ index e49a887b..492a1a7d 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) -@@ -25644,7 +25643,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, +@@ -25646,7 +25645,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, \item \tcode{stride(k) * \exposid{de-ice}($s_k$.stride)} if $S_k$ is a specialization of \tcode{strided_slice} and @@ -11715,7 +11715,7 @@ index e49a887b..492a1a7d 100644 \item otherwise, \tcode{stride($k$)}. \end{itemize} -@@ -26042,11 +26041,11 @@ is well-formed when treated as an unevaluated operand. +@@ -26044,11 +26043,11 @@ is well-formed when treated as an unevaluated operand. \begin{itemize} \item \tcode{decltype(submdspan_mapping(src.mapping(), slices...))} @@ -11729,7 +11729,7 @@ index e49a887b..492a1a7d 100644 is \tcode{true}. \item -@@ -26076,11 +26075,11 @@ all of the following are \tcode{true}: +@@ -26078,11 +26077,11 @@ all of the following are \tcode{true}: \item $0 \le \tcode{\exposid{first_}(slices...)}$ $\le \tcode{\exposid{last_}<$k$>(src.extents(), slices...)}$ @@ -11744,10 +11744,10 @@ index e49a887b..492a1a7d 100644 \item diff --git a/source/exec.tex b/source/exec.tex -index 887279b0..aff106e0 100644 +index 587fdbf0..f6852a32 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -3239,7 +3239,7 @@ except that \tcode{sch} is evaluated only once. +@@ -3247,7 +3247,7 @@ except that \tcode{sch} is evaluated only once. Let \tcode{out_sndr} and \tcode{env} be subexpressions such that \tcode{OutSndr} is \tcode{decltype((out_sndr))}. If \tcode{\exposconcept{sender-for}} is \tcode{false}, @@ -11756,7 +11756,7 @@ index 887279b0..aff106e0 100644 \tcode{starts_on.transform_sender(out_sndr, env)} are ill-formed; otherwise \begin{itemize} \item -@@ -3619,7 +3619,7 @@ except that \tcode{sndr} is evaluated only once. +@@ -3627,7 +3627,7 @@ except that \tcode{sndr} is evaluated only once. \pnum Let \tcode{out_sndr} and \tcode{env} be subexpressions, let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and @@ -11765,7 +11765,7 @@ index 887279b0..aff106e0 100644 If \tcode{\exposconcept{sender-for}} is \tcode{false}, then the expressions \tcode{on.transform_env(out_sndr, env)} and \tcode{on.transform_sender(out_sndr, env)} are ill-formed. -@@ -3761,7 +3761,7 @@ Let the expression \exposid{then-cpo} be one of +@@ -3769,7 +3769,7 @@ Let the expression \exposid{then-cpo} be one of For subexpressions \tcode{sndr} and \tcode{f}, if \tcode{decltype((sndr))} does not satisfy \libconcept{sender}, or \tcode{decltype((f))} does not satisfy \exposconcept{movable-value}, @@ -11774,7 +11774,7 @@ index 887279b0..aff106e0 100644 \pnum Otherwise, -@@ -4066,7 +4066,7 @@ is initialized with a callable object equivalent to the following: +@@ -4074,7 +4074,7 @@ is initialized with a callable object equivalent to the following: Let \tcode{sndr} and \tcode{env} be subexpressions, and let \tcode{Sndr} be \tcode{decltype((sndr))}. If @@ -11783,7 +11783,7 @@ index 887279b0..aff106e0 100644 is \tcode{false}, then the expression \tcode{\exposid{let-cpo}.transform_env(sndr, env)} is ill-formed. -@@ -4681,7 +4681,7 @@ try { +@@ -4689,7 +4689,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -11792,7 +11792,7 @@ index 887279b0..aff106e0 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -5724,7 +5724,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. +@@ -5732,7 +5732,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. \pnum For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. @@ -11802,7 +11802,7 @@ index 887279b0..aff106e0 100644 the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: diff --git a/source/memory.tex b/source/memory.tex -index c59c2b55..e13a598f 100644 +index d574546f..f254eca5 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1371,7 +1371,7 @@ A \tcode{tuple} value determined as follows: @@ -11833,7 +11833,7 @@ index c59c2b55..e13a598f 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index ee96bf8f..c278d972 100644 +index b2188af9..7d111969 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -2530,7 +2530,7 @@ present as follows: @@ -11846,10 +11846,10 @@ index ee96bf8f..c278d972 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index 0aac59a4..7ae9bd01 100644 +index f9579b68..55338c7e 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -13802,7 +13802,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. +@@ -13803,7 +13803,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -11858,7 +11858,7 @@ index 0aac59a4..7ae9bd01 100644 \pnum \returns -@@ -14008,7 +14008,7 @@ template +@@ -14009,7 +14009,7 @@ template \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -11868,7 +11868,7 @@ index 0aac59a4..7ae9bd01 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 8b0f4e38..fccb59d1 100644 +index 1ce5326c..1f3504a8 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -11880,7 +11880,7 @@ index 8b0f4e38..fccb59d1 100644 For example, it is possible for \tcode{ranges::reserve_hint(t)} to be well-defined for an \libconceptx{approximate\-ly_sized_range}{approximately_sized_range} whose -@@ -3671,7 +3671,7 @@ constexpr explicit repeat_view(piecewise_construct_t, +@@ -3673,7 +3673,7 @@ constexpr explicit repeat_view(piecewise_construct_t, Initializes \exposid{value_} with \tcode{make_from_tuple(std::move(value_args))} and @@ -11889,7 +11889,7 @@ index 8b0f4e38..fccb59d1 100644 \tcode{make_from_tuple(std::move(bound_args))}. The behavior is undefined if \tcode{Bound} is not \tcode{unreachable_sentinel_t} and -@@ -5913,7 +5913,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} +@@ -5915,7 +5915,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} that models \libconcept{random_access_range} and \libconcept{sized_range}, then \tcode{iota_view(*ranges::begin(E), @@ -11898,7 +11898,7 @@ index 8b0f4e38..fccb59d1 100644 except that \tcode{E} is evaluated only once. \item -@@ -6389,7 +6389,7 @@ if \tcode{T} is +@@ -6391,7 +6391,7 @@ if \tcode{T} is a specialization of \tcode{subrange} that models \libconcept{random_access_range} and \libconcept{sized_range}, then @@ -11907,7 +11907,7 @@ index 8b0f4e38..fccb59d1 100644 \exposid{to-unsigned-like}(ranges::distance(E) - std::min(ranges::distance(E), F)))}, except that \tcode{E} and \tcode{F} are each evaluated only once. -@@ -7441,7 +7441,7 @@ Let \placeholder{OUTERC} denote +@@ -7443,7 +7443,7 @@ Let \placeholder{OUTERC} denote let \placeholder{INNERC} denote \tcode{iterator_traits<\exposid{InnerIter}>::iterator_category}, and let \placeholder{PATTERNC} denote @@ -11916,7 +11916,7 @@ index 8b0f4e38..fccb59d1 100644 \item If \begin{codeblock} -@@ -7950,7 +7950,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); +@@ -7952,7 +7952,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -11925,7 +11925,7 @@ index 8b0f4e38..fccb59d1 100644 \end{itemdescr} \rSec3[range.lazy.split.outer]{Class template \tcode{lazy_split_view::\exposid{outer-iterator}}} -@@ -8261,7 +8261,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: +@@ -8263,7 +8263,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: \begin{itemize} \item \tcode{forward_iterator_tag} if @@ -11934,7 +11934,7 @@ index 8b0f4e38..fccb59d1 100644 \tcode{\libconcept{derived_from}}; \item otherwise, \tcode{iterator_traits>::iterator_category}. \end{itemize} -@@ -8481,7 +8481,7 @@ constexpr explicit split_view(R&& r, range_value_t e); +@@ -8483,7 +8483,7 @@ constexpr explicit split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -11943,7 +11943,7 @@ index 8b0f4e38..fccb59d1 100644 \end{itemdescr} \indexlibrarymember{begin}{split_view} -@@ -9046,7 +9046,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. +@@ -9048,7 +9048,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. \item Otherwise, if \tcode{\exposconcept{all-forward}} is modeled, @@ -11952,7 +11952,7 @@ index 8b0f4e38..fccb59d1 100644 \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} -@@ -9072,14 +9072,14 @@ let \tcode{Cs} denote the pack of types +@@ -9074,14 +9074,14 @@ let \tcode{Cs} denote the pack of types \begin{itemize} \item If @@ -11970,7 +11970,7 @@ index 8b0f4e38..fccb59d1 100644 \item Otherwise, if \tcode{(\libconcept{derived_from} \&\& ...)} -@@ -9531,11 +9531,11 @@ Let +@@ -9533,11 +9533,11 @@ Let %FIXME This is hard to parse. If \tcode{$i_\tcode{x}$ > $i_\tcode{y}$}, let \tcode{$d_\tcode{y}$} be @@ -11985,7 +11985,7 @@ index 8b0f4e38..fccb59d1 100644 for every integer \tcode{$i$} in the range \range{$i_\tcode{y}$ + 1}{$i_\tcode{x}$} if there is any, and -@@ -9578,7 +9578,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul +@@ -9580,7 +9580,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul Let \tcode{$i_\tcode{x}$} denote \tcode{x.\exposid{it_}.index()}, \tcode{$d_\tcode{x}$} be @@ -11994,7 +11994,7 @@ index 8b0f4e38..fccb59d1 100644 Let \tcode{$s$} denote the sum of the sizes of all the ranges \tcode{std::get<$i$>(x.\exposid{parent_}->\exposid{views_})} for every integer \tcode{$i$} in the range -@@ -9735,7 +9735,7 @@ is expression-equivalent to: +@@ -9737,7 +9737,7 @@ is expression-equivalent to: \begin{itemize} \item If \tcode{T} models \libconcept{contiguous_iterator}, @@ -12003,7 +12003,7 @@ index 8b0f4e38..fccb59d1 100644 \item Otherwise, if \tcode{T} models \libconcept{random_access_iterator}, -@@ -13431,7 +13431,7 @@ is defined as follows: +@@ -13433,7 +13433,7 @@ is defined as follows: \item If \tcode{invoke_result_t<\exposid{maybe-const}\&, \exposid{REPEAT}(range_reference_t<\exposid{Base}>, N)...>} @@ -12012,7 +12012,7 @@ index 8b0f4e38..fccb59d1 100644 \tcode{iterator_category} denotes \tcode{input_iterator_tag}. \item Otherwise, let \tcode{C} denote the type -@@ -14542,7 +14542,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ +@@ -14544,7 +14544,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ \effects Initializes \exposid{current_} with \tcode{current}, \exposid{end_} with \tcode{ranges::end(parent->\exposid{base_})}, @@ -12022,10 +12022,10 @@ index 8b0f4e38..fccb59d1 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index da485dc5..fe9533b5 100644 +index c897fccc..e2d183ce 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -3517,7 +3517,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, +@@ -3528,7 +3528,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12034,7 +12034,7 @@ index da485dc5..fe9533b5 100644 \pnum \effects -@@ -4792,7 +4792,7 @@ For the \tcode{volatile} overload of this function, +@@ -4803,7 +4803,7 @@ For the \tcode{volatile} overload of this function, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12043,7 +12043,7 @@ index da485dc5..fe9533b5 100644 \pnum \effects -@@ -6313,7 +6313,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de +@@ -6327,7 +6327,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12052,7 +12052,7 @@ index da485dc5..fe9533b5 100644 \pnum \effects -@@ -6629,7 +6629,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire +@@ -6643,7 +6643,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12062,7 +12062,7 @@ index da485dc5..fe9533b5 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index 76b19166..a53d2ff0 100644 +index 722b6077..45444ce6 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -2062,7 +2062,7 @@ equals \tcode{tuple_size_v>}, @@ -12101,7 +12101,7 @@ index 76b19166..a53d2ff0 100644 \pnum \returns -@@ -14989,7 +14989,7 @@ that models \libconcept{copyable}. +@@ -14988,7 +14988,7 @@ that models \libconcept{copyable}. \pnum Within \ref{func.wrap.ref}, \tcode{\placeholder{call-args}} is an argument pack with elements such that @@ -12113,54 +12113,3 @@ index 76b19166..a53d2ff0 100644 -- 2.43.0 - -From da283a7465ff0f89f3f02dbcdcfa5a40feebc9d2 Mon Sep 17 00:00:00 2001 -From: timsong-cpp -Date: Fri, 1 Aug 2025 02:09:27 -0500 -Subject: [PATCH 10/10] Revert "[intro] Special page header before Clause 1 - (#6070)" - -This reverts commit 0b41c12760d8079ee4c460df6ddecaf220f2dfb6. ---- - source/intro.tex | 11 ----------- - source/layout.tex | 2 +- - 2 files changed, 1 insertion(+), 12 deletions(-) - -diff --git a/source/intro.tex b/source/intro.tex -index abc66134..4d40f89b 100644 ---- a/source/intro.tex -+++ b/source/intro.tex -@@ -1,17 +1,6 @@ - %!TEX root = std.tex - --\clearpage --\bigskip\noindent\textlarger{\textbf{Programming languages --- \Cpp{}}} --\bigskip\bigskip -- --\begingroup --\let\clearpage\relax - \rSec0[intro.scope]{Scope} --\endgroup --\copypagestyle{cpppageone}{cpppage} --\makeoddhead{cpppageone}{\textbf{WORKING DRAFT}}{}{\leaders\hrule height 2pt\hfill\kern0pt\\\textbf{\docno}} --\makeheadrule{cpppageone}{\textwidth}{2pt} --\thispagestyle{cpppageone} - - \pnum - \indextext{scope|(}% -diff --git a/source/layout.tex b/source/layout.tex -index 98564d8b..1f82bd20 100644 ---- a/source/layout.tex -+++ b/source/layout.tex -@@ -10,7 +10,7 @@ - %%-------------------------------------------------- - %% set header and footer positions and sizes - --\setheadfoot{3\onelineskip}{4\onelineskip} -+\setheadfoot{\onelineskip}{4\onelineskip} - \setheaderspaces{*}{2\onelineskip}{*} - - %%-------------------------------------------------- --- -2.43.0 - diff --git a/htmlgen_code.patch b/htmlgen_code.patch deleted file mode 100644 index a500da21f6..0000000000 --- a/htmlgen_code.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 6c9496d048c4c3534524ea3212c780776844f025 Mon Sep 17 00:00:00 2001 -From: timsong-cpp -Date: Fri, 25 Jul 2025 09:03:35 -0500 -Subject: [PATCH] Handle \bot - ---- - RawDocument.hs | 2 +- - Render.hs | 1 + - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/RawDocument.hs b/RawDocument.hs -index c1f82bc..935878c 100644 ---- a/RawDocument.hs -+++ b/RawDocument.hs -@@ -195,7 +195,7 @@ storeCmds = - "phi int theta zeta FlushAndPrintGrammar break backslash centering " ++ - "normalbaselineskip land lor mapsto normalfont textmu tablerefname figurerefname newline " ++ - "obeyspaces bnfindent vdots tabcolsep columnbreak emergencystretch commentellip " ++ -- "gamma widowpenalties sffamily parskip left right `") -+ "gamma widowpenalties sffamily parskip left right bot `") - , (1, "hspace footnote textit textrm textnormal texttt textbf ensuremath ref ref* mbox bibitem mathop " ++ - "terminal literalterminal noncxxterminal textsl textsc textsf text term overline " ++ - "tcode noncxxtcode literaltcode footnotetext microtypesetup cline mathtt mathit mathrm mathsf " ++ -diff --git a/Render.hs b/Render.hs -index 4b34cb6..2df6e74 100644 ---- a/Render.hs -+++ b/Render.hs -@@ -128,6 +128,7 @@ simpleMacros = - , (">" , " ") - , ("bnfindent" , "   ") - , ("\n" , "\n") -+ , ("bot" , "⊥") - ] - ++ [(n, Text.pack [c]) | (n, c) <- greekAlphabet] - --- -2.43.0 - diff --git a/lastbuild.sig b/lastbuild.sig index 51c10801b3..a17bd2b562 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,4 +1,3 @@ -htmlgen eee5307c45c04761ef5c27956cbed742e08e5fb4 -draft c3bd02a2e44c53c8fe7ba5b48a94bacc9186235d -b76cce13dbf7885170532b899c35ef6d11ffb71c htmlgen.patch -cc80936cb44795c5712f5b4d193389be54551403 htmlgen_code.patch +htmlgen d76984e59af74768c3ce732b5517325f10807a57 +draft 2f53f313f5b1aac5f9547b39e78863e23ca9c047 +fbaf0fe6216effbdbbcc47732adc950955af5a05 htmlgen.patch From c4d611391ab003f6986096b362a70b9f6128acb2 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Tue, 4 Nov 2025 10:23:33 -1000 Subject: [PATCH 17/36] Update --- cxxdraft-htmlgen | 2 +- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 938 ++++++++++++++++++++++++----------------------- lastbuild.sig | 6 +- 5 files changed, 483 insertions(+), 467 deletions(-) diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen index d76984e59a..42983f240e 160000 --- a/cxxdraft-htmlgen +++ b/cxxdraft-htmlgen @@ -1 +1 @@ -Subproject commit d76984e59af74768c3ce732b5517325f10807a57 +Subproject commit 42983f240e7a7623a03d34a83eca3c064c920c8b diff --git a/draft b/draft index 2f53f313f5..acab9e5532 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 2f53f313f5b1aac5f9547b39e78863e23ca9c047 +Subproject commit acab9e553267137d6ac25e5568bafce734b70257 diff --git a/gh-pages b/gh-pages index 5bc71b27ad..bc0adeaf28 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 5bc71b27ad733d9329d9985ea717a358c134c86f +Subproject commit bc0adeaf28bf5ace30c36e065ba975678e2ed9f2 diff --git a/htmlgen.patch b/htmlgen.patch index e34ce89bf5..3615a9b5c1 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From 564bd58ebe115367edb2444d5051838480453623 Mon Sep 17 00:00:00 2001 +From 5b77e7e5ad095dd8f07a9dd76c7ba863950bfffe Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on @@ -10,10 +10,10 @@ Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index a85279f1..81d4fabf 100644 +index b9727f49..e98c0f3b 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -317,7 +317,7 @@ Given +@@ -324,7 +324,7 @@ Given #include struct C { @@ -22,7 +22,7 @@ index a85279f1..81d4fabf 100644 }; int main() { -@@ -2619,23 +2619,23 @@ namespace AB { +@@ -2626,23 +2626,23 @@ namespace AB { void h() { @@ -59,7 +59,7 @@ index a85279f1..81d4fabf 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 381250b8..4266aed5 100644 +index 180fbbac..3fda23c5 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2924,7 +2924,7 @@ struct s2 { @@ -75,7 +75,7 @@ index 381250b8..4266aed5 100644 2.43.0 -From 5d61a22ec14f73f20323c05da461423f6712852c Mon Sep 17 00:00:00 2001 +From f62b2287d8cddae5e607c5497dea59fc6d4b5db6 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 Subject: [PATCH 2/9] Use new link macros. @@ -111,7 +111,7 @@ Subject: [PATCH 2/9] Use new link macros. 27 files changed, 607 insertions(+), 616 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 6ca7e0f1..09938442 100644 +index a30ec424..959658fe 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -133,10 +133,10 @@ index 6ca7e0f1..09938442 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index 81d4fabf..8411bcae 100644 +index e98c0f3b..1c0a6cfc 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -158,7 +158,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. +@@ -162,7 +162,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. \indextext{linkage}% A name used in more than one translation unit can potentially refer to the same entity in these translation units depending on the @@ -145,7 +145,7 @@ index 81d4fabf..8411bcae 100644 translation unit. \rSec1[basic.def]{Declarations and definitions} -@@ -181,7 +181,7 @@ A declaration may also have effects including: +@@ -187,7 +187,7 @@ A declaration can also have effects including: \item a static assertion\iref{dcl.pre}, \item controlling template instantiation\iref{temp.explicit}, \item guiding template argument deduction for constructors\iref{temp.deduct.guide}, @@ -153,8 +153,8 @@ index 81d4fabf..8411bcae 100644 +\item use of \link{attributes}{dcl.attr}, and \item nothing (in the case of an \grammarterm{empty-declaration}). \end{itemize} - -@@ -267,7 +267,7 @@ that defines a function, a class, a variable, or a static data member, + \end{note} +@@ -274,7 +274,7 @@ that defines a function, a class, a variable, or a static data member, \item it is an explicit instantiation declaration\iref{temp.explicit}, or \item it is @@ -163,7 +163,7 @@ index 81d4fabf..8411bcae 100644 \grammarterm{declaration} is not a definition. \end{itemize} A declaration is said to be a \defn{definition} of each entity that it defines. -@@ -309,7 +309,7 @@ In some circumstances, \Cpp{} implementations implicitly define the +@@ -316,7 +316,7 @@ In some circumstances, \Cpp{} implementations implicitly define the default constructor\iref{class.default.ctor}, copy constructor, move constructor\iref{class.copy.ctor}, copy assignment operator, move assignment operator\iref{class.copy.assign}, @@ -172,7 +172,7 @@ index 81d4fabf..8411bcae 100644 \end{note} \begin{example} Given -@@ -394,7 +394,7 @@ defined as follows: +@@ -401,7 +401,7 @@ defined as follows: an \grammarterm{id-expression}\iref{expr.prim.id} or a \grammarterm{splice-expression}\iref{expr.prim.splice}, the set contains only $E$. @@ -181,7 +181,7 @@ index 81d4fabf..8411bcae 100644 an array operand, the set contains the potential results of that operand. \item If $E$ is a class member access expression\iref{expr.ref} of the form -@@ -404,16 +404,15 @@ the set contains the potential results of $E_1$. +@@ -411,16 +411,15 @@ the set contains the potential results of $E_1$. \item If $E$ is a class member access expression naming a static data member, the set contains the \grammarterm{id-expression} designating the data member. @@ -202,7 +202,7 @@ index 81d4fabf..8411bcae 100644 contains the potential results of the right operand. \item Otherwise, the set is empty. \end{itemize} -@@ -575,8 +574,8 @@ implicitly-defined +@@ -582,8 +581,8 @@ implicitly-defined copy assignment or move assignment function for another class as specified in~\ref{class.copy.assign}. A constructor for a class is odr-used as specified @@ -213,7 +213,7 @@ index 81d4fabf..8411bcae 100644 \pnum A local entity\iref{basic.pre} -@@ -648,7 +647,7 @@ void h() { +@@ -655,7 +654,7 @@ void h() { \pnum Every program shall contain at least one definition of every function or variable that is odr-used in that program @@ -222,7 +222,7 @@ index 81d4fabf..8411bcae 100644 The definition can appear explicitly in the program, it can be found in the standard or a user-defined library, or (when appropriate) it is implicitly defined (see~\ref{class.default.ctor}, \ref{class.copy.ctor}, -@@ -696,9 +695,9 @@ The rules for declarations and expressions +@@ -703,9 +702,9 @@ The rules for declarations and expressions describe in which contexts complete class types are required. A class type \tcode{T} must be complete if \begin{itemize} @@ -235,7 +235,7 @@ index 81d4fabf..8411bcae 100644 \item \tcode{T} is used as the allocated type or array element type in a \grammarterm{new-expression}\iref{expr.new}, or \item an lvalue-to-rvalue conversion is applied to -@@ -718,7 +717,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or +@@ -725,7 +724,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or \keyword{sizeof} operator\iref{expr.sizeof} is applied to an operand of type \tcode{T}, or \item a function with a return type or argument type of type \tcode{T} @@ -244,7 +244,7 @@ index 81d4fabf..8411bcae 100644 \item a class with a base class of type \tcode{T} is defined\iref{class.derived}, or \item an lvalue of type \tcode{T} is assigned to\iref{expr.assign}, or -@@ -773,7 +772,7 @@ template specializations\iref{temp.spec.partial.match}, except that a name can r +@@ -780,7 +779,7 @@ template specializations\iref{temp.spec.partial.match}, except that a name can r a non-volatile const object with internal or no linkage if the object \begin{itemize} \item has the same literal type in all definitions of \tcode{D}, @@ -253,7 +253,7 @@ index 81d4fabf..8411bcae 100644 \item is not odr-used in any definition of \tcode{D}, and \item has the same value in all definitions of \tcode{D}, \end{itemize} -@@ -2879,7 +2878,7 @@ consteval int bad_splice(std::meta::info v) { +@@ -2886,7 +2885,7 @@ consteval int bad_splice(std::meta::info v) { \pnum \indextext{program}% \indextext{linking}% @@ -262,7 +262,7 @@ index 81d4fabf..8411bcae 100644 linked together. A translation unit consists of a sequence of declarations. -@@ -2912,7 +2911,7 @@ are attached to the same module. +@@ -2919,7 +2918,7 @@ are attached to the same module. \indextext{linkage!\idxcode{inline} and}% \indextext{\idxcode{inline}!linkage of}% The name of an entity @@ -271,7 +271,7 @@ index 81d4fabf..8411bcae 100644 has internal linkage if it is the name of \begin{itemize} \item -@@ -2953,7 +2952,7 @@ typedef declaration in which the class has the typedef name for linkage +@@ -2960,7 +2959,7 @@ typedef declaration in which the class has the typedef name for linkage purposes\iref{dcl.typedef}; or \item \indextext{enumeration!linkage of}% @@ -280,7 +280,7 @@ index 81d4fabf..8411bcae 100644 in a typedef declaration in which the enumeration has the typedef name for linkage purposes\iref{dcl.typedef}; or \item an unnamed enumeration -@@ -3029,7 +3028,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. +@@ -3036,7 +3035,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. \pnum \indextext{linkage!no}% Names not covered by these rules have no linkage. Moreover, except as @@ -289,7 +289,7 @@ index 81d4fabf..8411bcae 100644 linkage. \pnum -@@ -3387,8 +3386,8 @@ features of the language, such as references and virtual functions, might +@@ -3394,8 +3393,8 @@ features of the language, such as references and virtual functions, might involve additional memory locations that are not accessible to programs but are managed by the implementation. \end{note} @@ -300,7 +300,7 @@ index 81d4fabf..8411bcae 100644 locations without interfering with each other. \pnum -@@ -3432,15 +3431,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but +@@ -3439,15 +3438,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but The constructs in a \Cpp{} program create, destroy, refer to, access, and manipulate objects. An \defn{object} is created @@ -319,7 +319,7 @@ index 81d4fabf..8411bcae 100644 and in its period of destruction\iref{class.cdtor}. \begin{note} -@@ -3570,7 +3569,7 @@ A \defn{potentially-overlapping subobject} is either: +@@ -3577,7 +3576,7 @@ A \defn{potentially-overlapping subobject} is either: \begin{itemize} \item a base class subobject, or \item a non-static data member @@ -328,7 +328,7 @@ index 81d4fabf..8411bcae 100644 \end{itemize} \pnum -@@ -3591,7 +3590,7 @@ Otherwise, the circumstances under which the object has zero size +@@ -3598,7 +3597,7 @@ Otherwise, the circumstances under which the object has zero size are \impldef{which non-standard-layout objects containing no data are considered empty}. \indextext{most derived object!bit-field}% @@ -337,7 +337,7 @@ index 81d4fabf..8411bcae 100644 an object with nonzero size shall occupy one or more bytes of storage, including every byte that is occupied in full or in part -@@ -4163,16 +4162,16 @@ the result of the evaluation is the value so produced but is not erroneous: +@@ -4174,16 +4173,16 @@ the result of the evaluation is the value so produced but is not erroneous: is produced by the evaluation of: \begin{itemize} \item @@ -357,7 +357,7 @@ index 81d4fabf..8411bcae 100644 \end{itemize} then the result of the operation is an indeterminate value or that erroneous value, respectively. -@@ -4363,8 +4362,8 @@ specified in~\ref{class.copy.elision}. +@@ -4374,8 +4373,8 @@ specified in~\ref{class.copy.elision}. \indextext{storage duration!dynamic|(} \pnum @@ -368,7 +368,7 @@ index 81d4fabf..8411bcae 100644 \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -@@ -4528,9 +4527,9 @@ that would match a handler\iref{except.handle} of type +@@ -4539,9 +4538,9 @@ that would match a handler\iref{except.handle} of type \tcode{std::bad_alloc}\iref{bad.alloc}. \pnum @@ -381,7 +381,7 @@ index 81d4fabf..8411bcae 100644 a coroutine state\iref{dcl.fct.def.coroutine}, or called indirectly through calls to the functions in the \Cpp{} standard library. -@@ -5036,9 +5035,9 @@ shall be destroyed before +@@ -5047,9 +5046,9 @@ shall be destroyed before impose requirements on implementations regarding the representation of types. There are two kinds of types: fundamental types and compound types. @@ -394,7 +394,7 @@ index 81d4fabf..8411bcae 100644 \end{note} \pnum -@@ -5212,7 +5211,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, +@@ -5223,7 +5222,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, pointer types, pointer-to-member types\iref{basic.compound}, \tcode{std::meta::\brk{}info}, \tcode{std::nullptr_t}, and @@ -403,7 +403,7 @@ index 81d4fabf..8411bcae 100644 types are collectively called \defnadjx{scalar}{types}{type}. \label{term.trivially.copyable.type}% -@@ -5246,7 +5245,7 @@ A type is a \defnadj{literal}{type} if it is: +@@ -5257,7 +5256,7 @@ A type is a \defnadj{literal}{type} if it is: \item a scalar type; or \item a reference type; or \item an array of literal type; or @@ -412,7 +412,7 @@ index 81d4fabf..8411bcae 100644 has all of the following properties: \begin{itemize} \item it has a constexpr destructor\iref{dcl.constexpr}, -@@ -5280,8 +5279,8 @@ will be usable in a constant expression. +@@ -5291,8 +5290,8 @@ will be usable in a constant expression. Two types \cvqual{cv1} \tcode{T1} and \cvqual{cv2} \tcode{T2} are \defnadjx{layout-compatible}{types}{type} if \tcode{T1} and \tcode{T2} are the same type, @@ -423,7 +423,7 @@ index 81d4fabf..8411bcae 100644 \pnum A type is \defn{consteval-only} if it is either -@@ -5834,7 +5833,7 @@ ordinary pointers to objects or functions. +@@ -5849,7 +5848,7 @@ ordinary pointers to objects or functions. which identify members of a given type within objects of a given class, \ref{dcl.mptr}. Pointers to data members and pointers to member functions are collectively @@ -432,7 +432,7 @@ index 81d4fabf..8411bcae 100644 \end{itemize} \pnum -@@ -5912,7 +5911,7 @@ layout-compatible types shall +@@ -5927,7 +5926,7 @@ layout-compatible types shall have the same value representation and alignment requirements\iref{basic.align}. \begin{note} @@ -441,7 +441,7 @@ index 81d4fabf..8411bcae 100644 representation, but their range of valid values is restricted by the extended alignment requirement. \end{note} -@@ -6227,8 +6226,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. +@@ -6242,8 +6241,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. \indextext{program execution|(} \pnum @@ -452,7 +452,7 @@ index 81d4fabf..8411bcae 100644 block. Such an object exists and retains its last-stored value during the execution of the block and while the block is suspended (by a call of a function, suspension of a coroutine\iref{expr.await}, or receipt of a signal). -@@ -6273,7 +6272,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, +@@ -6288,7 +6287,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, the initialization of the entities captured by copy and the constituent expressions of the \grammarterm{initializer} of the \grammarterm{init-capture}{s}, \item @@ -461,7 +461,7 @@ index 81d4fabf..8411bcae 100644 the constituent expressions of each default argument\iref{dcl.fct.default} used in the call, or \item -@@ -6304,7 +6303,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope +@@ -6319,7 +6318,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope A \defn{full-expression} is \begin{itemize} \item @@ -471,7 +471,7 @@ index 81d4fabf..8411bcae 100644 a \grammarterm{constant-expression}\iref{expr.const}, \item diff --git a/source/classes.tex b/source/classes.tex -index 5f3fc4ea..32338393 100644 +index b3ff3a98..7b286507 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -275,10 +275,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: @@ -536,7 +536,7 @@ index 5f3fc4ea..32338393 100644 of struct type \tcode{T1}, it is permitted to read a non-static data member \tcode{m} of another union member of struct type \tcode{T2} provided \tcode{m} is part of the common initial sequence of \tcode{T1} and \tcode{T2}; -@@ -2310,7 +2310,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation +@@ -2306,7 +2306,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation An array of class type contains several subobjects for each of which the destructor is invoked. \end{note} @@ -545,7 +545,7 @@ index 5f3fc4ea..32338393 100644 if it is invoked or as specified in~\ref{expr.new}, \ref{stmt.return}, \ref{dcl.init.aggr}, \ref{class.base.init}, and~\ref{except.throw}. -@@ -6411,7 +6411,7 @@ associated with a \grammarterm{try-block} (if there is one), +@@ -6407,7 +6407,7 @@ associated with a \grammarterm{try-block} (if there is one), the copy-initialization of the exception object can be omitted by constructing $o$ directly into the exception object; @@ -555,7 +555,7 @@ index 5f3fc4ea..32338393 100644 corresponding parameter if the meaning of the program will be unchanged except for the execution of a constructor and destructor for the parameter copy object; diff --git a/source/compatibility.tex b/source/compatibility.tex -index 60165bf4..41471921 100644 +index d0b6bcec..17355dea 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -2017,8 +2017,8 @@ deallocation functions\iref{expr.new}. @@ -570,7 +570,7 @@ index 60165bf4..41471921 100644 lvalue-to-rvalue conversion, were considered gratuitous and surprising. \effect diff --git a/source/concepts.tex b/source/concepts.tex -index 4d848e8f..6bd0435e 100644 +index 3cbd110a..1722b95c 100644 --- a/source/concepts.tex +++ b/source/concepts.tex @@ -300,7 +300,7 @@ classifications, and fundamental type properties. @@ -618,7 +618,7 @@ index 4d848e8f..6bd0435e 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index e3b455f6..321f6146 100644 +index e197ec6e..ed136ec9 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -6116,14 +6116,14 @@ namespace std { @@ -764,7 +764,7 @@ index e3b455f6..321f6146 100644 is not used to construct these values. \pnum -@@ -15655,9 +15655,9 @@ and +@@ -15653,9 +15653,9 @@ and can be used to instantiate \tcode{queue}. In particular, @@ -776,7 +776,7 @@ index e3b455f6..321f6146 100644 can be used. \begin{codeblock} -@@ -16012,15 +16012,15 @@ and +@@ -16010,15 +16010,15 @@ and can be used to instantiate \tcode{priority_queue}. In particular, @@ -795,7 +795,7 @@ index e3b455f6..321f6146 100644 \begin{codeblock} namespace std { -@@ -16565,10 +16565,10 @@ and +@@ -16563,10 +16563,10 @@ and can be used to instantiate \tcode{stack}. In particular, @@ -810,7 +810,7 @@ index e3b455f6..321f6146 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index ee70278b..a8c0ecb3 100644 +index b958e5a3..f41fea44 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -901,7 +901,7 @@ index ee70278b..a8c0ecb3 100644 or as the \grammarterm{type-specifier} in the \grammarterm{parameter-declaration} of a \grammarterm{template-parameter}\iref{temp.param}. -@@ -4494,7 +4493,7 @@ int a; +@@ -4492,7 +4491,7 @@ int a; int f(int a, int b = a); // error: parameter \tcode{a} used as default argument typedef int I; int g(float I, int b = I(2)); // error: parameter \tcode{I} found @@ -910,7 +910,7 @@ index ee70278b..a8c0ecb3 100644 \end{codeblock} \end{example} A non-static member shall not be designated in a default argument unless -@@ -6207,15 +6206,15 @@ This requires a conversion +@@ -6205,15 +6204,15 @@ This requires a conversion function\iref{class.conv.fct} returning a reference type. \end{footnote} (this conversion is selected by enumerating the applicable conversion @@ -930,7 +930,7 @@ index ee70278b..a8c0ecb3 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7729,7 +7728,7 @@ the initializer is +@@ -7727,7 +7726,7 @@ the initializer is where \tcode{get} undergoes argument-dependent lookup\iref{basic.lookup.argdep}. In either case, \tcode{get} is interpreted as a \grammarterm{template-id}. \begin{note} @@ -939,7 +939,7 @@ index ee70278b..a8c0ecb3 100644 \end{note} In either case, \exposid{e} is an lvalue if the type of the entity \exposid{e} is an lvalue reference and an xvalue otherwise. -@@ -7880,7 +7879,7 @@ is not looked up and is introduced by +@@ -7878,7 +7877,7 @@ is not looked up and is introduced by the \grammarterm{enum-specifier} or \grammarterm{opaque-enum-declaration}. If the \grammarterm{enum-head-name} of an \grammarterm{opaque-enum-declaration} contains a \grammarterm{nested-name-specifier}, @@ -948,7 +948,7 @@ index ee70278b..a8c0ecb3 100644 \pnum \indextext{constant!enumeration}% -@@ -7962,8 +7961,9 @@ If the underlying type is fixed, the type of each enumerator +@@ -7960,8 +7959,9 @@ If the underlying type is fixed, the type of each enumerator prior to the closing brace is the underlying type and the \grammarterm{constant-expression} in the \grammarterm{enumerator-definition} @@ -960,7 +960,7 @@ index ee70278b..a8c0ecb3 100644 If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as -@@ -7972,8 +7972,9 @@ follows: +@@ -7970,8 +7970,9 @@ follows: \begin{itemize} \item If an initializer is specified for an enumerator, the @@ -972,7 +972,7 @@ index ee70278b..a8c0ecb3 100644 unscoped enumeration type, the enumerator has the underlying type of that enumeration type, otherwise it has the same type as the expression. -@@ -8045,7 +8046,7 @@ if they have the same underlying type. +@@ -8043,7 +8044,7 @@ if they have the same underlying type. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -981,7 +981,7 @@ index ee70278b..a8c0ecb3 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8328,7 +8329,7 @@ appertains to the namespace being defined or extended. +@@ -8326,7 +8327,7 @@ appertains to the namespace being defined or extended. Members of an inline namespace can be used in most respects as though they were members of the innermost enclosing namespace. Specifically, the inline namespace and its enclosing namespace are both added to the set of associated namespaces used in @@ -990,7 +990,7 @@ index ee70278b..a8c0ecb3 100644 and a \grammarterm{using-directive}\iref{namespace.udir} that names the inline namespace is implicitly inserted into the enclosing namespace as for an unnamed namespace\iref{namespace.unnamed}. Furthermore, each -@@ -9151,7 +9152,7 @@ different language linkages are distinct types even if they are +@@ -9149,7 +9150,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -999,7 +999,7 @@ index ee70278b..a8c0ecb3 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9481,19 +9482,19 @@ For each individual attribute, the form of the +@@ -9479,18 +9480,18 @@ For each individual attribute, the form of the \pnum In an \grammarterm{attribute-list}, an ellipsis may appear only if that \grammarterm{attribute}'s specification permits it. An \grammarterm{attribute} followed @@ -1007,7 +1007,6 @@ index ee70278b..a8c0ecb3 100644 +by an ellipsis is a \deflink{pack expansion}{temp.variadic}. An \grammarterm{attribute-specifier} that contains an \grammarterm{attribute-list} with no \grammarterm{attribute}s - and no \grammarterm{alignment-specifier} has no effect. The order in which the \grammarterm{attribute-token}{s} appear in an \grammarterm{attribute-list} is not significant. If a @@ -1024,7 +1023,7 @@ index ee70278b..a8c0ecb3 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9604,7 +9605,7 @@ declaration, the program is ill-formed. +@@ -9601,7 +9602,7 @@ declaration, the program is ill-formed. \pnum An \grammarterm{alignment-specifier} of the form \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same @@ -1033,7 +1032,7 @@ index ee70278b..a8c0ecb3 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9784,7 +9785,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9781,7 +9782,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -1221,7 +1220,7 @@ index ba2d34d0..cd476d28 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index 4266aed5..d9469cf9 100644 +index 3fda23c5..f6fdd1c7 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1459,9 +1458,9 @@ index 4266aed5..d9469cf9 100644 \pnum \begin{note} --If a function or member function name is used, and name +-If a function name is used, and name -lookup\iref{basic.lookup} does not find a declaration of that name, -+If a function or member function name is used, and \link{name ++If a function name is used, and \link{name +lookup}{basic.lookup} does not find a declaration of that name, the program is ill-formed. No function is implicitly declared by such a call. @@ -1751,7 +1750,7 @@ index 4266aed5..d9469cf9 100644 allocation call of the \grammarterm{new-expression} shall be passed as the first argument to the deallocation function. -@@ -7065,8 +7066,8 @@ The result of a \tcode{.*} expression +@@ -7063,8 +7064,8 @@ The result of a \tcode{.*} expression whose second operand is a pointer to a data member is an lvalue if the first operand is an lvalue and an xvalue otherwise. The result of a \tcode{.*} expression whose second operand is a pointer to a member function is a prvalue. @@ -1762,7 +1761,7 @@ index 4266aed5..d9469cf9 100644 \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -7095,7 +7096,7 @@ left-to-right. +@@ -7093,7 +7094,7 @@ left-to-right. \pnum The operands of \tcode{*} and \tcode{/} shall have arithmetic or unscoped enumeration type; the operands of \tcode{\%} shall have integral or unscoped @@ -1771,7 +1770,7 @@ index 4266aed5..d9469cf9 100644 operands and determine the type of the result. \pnum -@@ -7231,7 +7232,7 @@ the behavior is undefined\iref{expr.pre}. +@@ -7229,7 +7230,7 @@ the behavior is undefined\iref{expr.pre}. \pnum For addition or subtraction, if the expressions \tcode{P} or \tcode{Q} have type ``pointer to \cv{}~\tcode{T}'', where \tcode{T} and the array element type @@ -1780,7 +1779,7 @@ index 4266aed5..d9469cf9 100644 \begin{example} \begin{codeblock} int arr[5] = {1, 2, 3, 4, 5}; -@@ -7322,12 +7323,12 @@ and the other is not, the program is ill-formed. +@@ -7320,12 +7321,12 @@ and the other is not, the program is ill-formed. If both operands have arithmetic types, or one operand has integral type and the other operand has unscoped enumeration type, @@ -1795,7 +1794,7 @@ index 4266aed5..d9469cf9 100644 other than from an integral type to a floating-point type, the program is ill-formed. -@@ -7369,13 +7370,13 @@ the other operand is of object pointer or array type, +@@ -7367,13 +7368,13 @@ the other operand is of object pointer or array type, array-to-pointer conversions\iref{conv.array}, pointer conversions\iref{conv.ptr}, and @@ -1811,7 +1810,7 @@ index 4266aed5..d9469cf9 100644 \end{note} In this case, \tcode{p <=> q} is of type \tcode{std::strong_ordering} and -@@ -7464,7 +7465,7 @@ pointer conversions\iref{conv.ptr}, +@@ -7462,7 +7463,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring @@ -1820,7 +1819,7 @@ index 4266aed5..d9469cf9 100644 After conversions, the operands shall have the same type. \pnum -@@ -7549,10 +7550,10 @@ same type after the specified conversions have been applied. +@@ -7547,10 +7548,10 @@ same type after the specified conversions have been applied. \indextext{comparison!pointer}% \indextext{comparison!pointer to function}% If at least one of the converted operands is a pointer, @@ -1835,7 +1834,7 @@ index 4266aed5..d9469cf9 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -7569,7 +7570,8 @@ the result of the comparison is unspecified. +@@ -7567,7 +7568,8 @@ the result of the comparison is unspecified. \item Otherwise, if the pointers are both null, both point to the same \indextext{address}% @@ -1845,7 +1844,7 @@ index 4266aed5..d9469cf9 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -7614,12 +7616,12 @@ bool b1 = (bx == cx); // unspecified +@@ -7612,12 +7614,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -1860,7 +1859,7 @@ index 4266aed5..d9469cf9 100644 indirection with a hypothetical object of the associated class type were performed, otherwise they compare unequal. \begin{example} -@@ -7859,7 +7861,7 @@ Otherwise, if the second and third operand have different types and +@@ -7857,7 +7859,7 @@ Otherwise, if the second and third operand have different types and either has (possibly cv-qualified) class type, or if both are glvalues of the same value category and the same type except for cv-qualification, an attempt is made to @@ -1869,7 +1868,7 @@ index 4266aed5..d9469cf9 100644 each of those operands to the type of the other. \begin{note} Properties such as access, whether an operand is a bit-field, or whether -@@ -7901,9 +7903,9 @@ denotes the cv-qualifiers of \tcode{T1}; +@@ -7899,9 +7901,9 @@ denotes the cv-qualifiers of \tcode{T1}; \item otherwise, the target type is the type that \tcode{E2} would have after applying the @@ -1882,7 +1881,7 @@ index 4266aed5..d9469cf9 100644 standard conversions. \end{itemize} \end{itemize} -@@ -7944,8 +7946,8 @@ are used in place of the original operands for the remainder of this +@@ -7942,8 +7944,8 @@ are used in place of the original operands for the remainder of this subclause. \pnum @@ -1893,7 +1892,7 @@ index 4266aed5..d9469cf9 100644 performed on the second and third operands. After those conversions, one of the following shall hold: -@@ -7954,16 +7956,16 @@ of the following shall hold: +@@ -7952,16 +7954,16 @@ of the following shall hold: that type and the result is copy-initialized using the selected operand. \item The second and third operands have arithmetic or enumeration type; @@ -1916,7 +1915,7 @@ index 4266aed5..d9469cf9 100644 pointer type. \item One or both of the second and third operands have pointer-to-member type; -@@ -8147,7 +8149,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. +@@ -8145,7 +8147,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. \pnum \indextext{assignment!conversion by}% If the right operand is an expression, it is implicitly @@ -1925,7 +1924,7 @@ index 4266aed5..d9469cf9 100644 operand. \pnum -@@ -8161,7 +8163,7 @@ resulting value of the bit-field is +@@ -8159,7 +8161,7 @@ resulting value of the bit-field is An assignment whose left operand is of a volatile-qualified type is deprecated\iref{depr.volatile.type} unless the (possibly parenthesized) assignment is a discarded-value expression or @@ -1934,7 +1933,7 @@ index 4266aed5..d9469cf9 100644 \pnum The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} -@@ -8233,7 +8235,7 @@ The comma operator groups left-to-right. +@@ -8231,7 +8233,7 @@ The comma operator groups left-to-right. A pair of expressions separated by a comma is evaluated left-to-right; the left expression is @@ -1943,7 +1942,7 @@ index 4266aed5..d9469cf9 100644 The left expression is sequenced before the right expression\iref{intro.execution}. \indextext{operator!side effects and comma}% -@@ -8267,7 +8269,7 @@ Certain contexts require expressions that satisfy additional +@@ -8265,7 +8267,7 @@ Certain contexts require expressions that satisfy additional requirements as detailed in this subclause; other contexts have different semantics depending on whether or not an expression satisfies these requirements. Expressions that satisfy these requirements, @@ -1952,7 +1951,7 @@ index 4266aed5..d9469cf9 100644 are called \indexdefn{expression!constant}% \defnx{constant expressions}{constant expression}. -@@ -8450,9 +8452,9 @@ a temporary object of non-volatile const-qualified literal type +@@ -8448,9 +8450,9 @@ a temporary object of non-volatile const-qualified literal type whose lifetime is extended\iref{class.temporary} to that of a variable that is usable in constant expressions at $P$, \item @@ -1964,7 +1963,7 @@ index 4266aed5..d9469cf9 100644 \item a non-mutable subobject of any of the above, or \item -@@ -8543,7 +8545,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. +@@ -8541,7 +8543,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -1973,7 +1972,7 @@ index 4266aed5..d9469cf9 100644 it is applied to \begin{itemize} \item -@@ -8565,7 +8567,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -8563,7 +8565,7 @@ that refers to a non-active member of a union or a subobject thereof; \item an lvalue-to-rvalue conversion that is applied to @@ -1982,7 +1981,7 @@ index 4266aed5..d9469cf9 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -8938,7 +8940,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -8936,7 +8938,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte Such expressions can be used as bit-field lengths\iref{class.bit}, as enumerator initializers if the underlying type is not fixed\iref{dcl.enum}, @@ -1991,7 +1990,7 @@ index 4266aed5..d9469cf9 100644 \end{note} \pnum -@@ -9439,7 +9441,7 @@ if it is: +@@ -9437,7 +9439,7 @@ if it is: a manifestly constant-evaluated expression, \item @@ -2000,7 +1999,7 @@ index 4266aed5..d9469cf9 100644 \item an immediate subexpression of a \grammarterm{braced-init-list}, -@@ -9466,7 +9468,9 @@ A function or variable is +@@ -9464,7 +9466,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -2012,7 +2011,7 @@ index 4266aed5..d9469cf9 100644 \item diff --git a/source/future.tex b/source/future.tex -index 5022a94d..fc805a6e 100644 +index bba0b7f7..41979b62 100644 --- a/source/future.tex +++ b/source/future.tex @@ -14,7 +14,7 @@ is defined as: @@ -2049,7 +2048,7 @@ index 5022a94d..fc805a6e 100644 the \oldconcept{TransformationTrait} requirements with a base characteristic of \tcode{integral_constant}. diff --git a/source/intro.tex b/source/intro.tex -index 880da163..8fb36735 100644 +index 1b4ace6b..aa368350 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -105,8 +105,8 @@ Reads of scalar objects are described in \ref{conv.lval} and @@ -2108,7 +2107,7 @@ index 880da163..8fb36735 100644 translation units to form a complete \Cpp{} program\iref{lex.phases}.% \indextext{conformance requirements!library|)} diff --git a/source/iostreams.tex b/source/iostreams.tex -index 2de81f0e..af9dce40 100644 +index d5d867ad..f0d3b942 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -555,7 +555,7 @@ is initialized, @@ -2198,8 +2197,8 @@ index 2de81f0e..af9dce40 100644 - // types (inherited from \tcode{basic_ios}\iref{ios}) + // types (inherited from \link{\tcode{basic_ios}}{ios}) using char_type = charT; - using int_type = typename traits::int_type; - using pos_type = typename traits::pos_type; + using int_type = traits::int_type; + using pos_type = traits::pos_type; @@ -4715,7 +4715,7 @@ basic_istream& operator>>(void*& val); \pnum As in the case of the inserters, these extractors depend on the @@ -2267,8 +2266,8 @@ index 2de81f0e..af9dce40 100644 - // types (inherited from \tcode{basic_ios}\iref{ios}) + // types (inherited from \link{\tcode{basic_ios}}{ios}) using char_type = charT; - using int_type = typename traits::int_type; - using pos_type = typename traits::pos_type; + using int_type = traits::int_type; + using pos_type = traits::pos_type; @@ -6702,7 +6702,7 @@ return *this << s; \end{codeblock} where \tcode{s} is an @@ -2428,7 +2427,7 @@ index 2de81f0e..af9dce40 100644 \pnum \throws diff --git a/source/iterators.tex b/source/iterators.tex -index 6a21fdf1..98944de7 100644 +index 9914bd24..ffa39eaf 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -729,7 +729,7 @@ is undefined. @@ -2440,7 +2439,7 @@ index 6a21fdf1..98944de7 100644 if all operations provided to meet iterator category requirements are constexpr functions. \begin{note} -@@ -6851,7 +6851,7 @@ ostream_iterator& operator++(int); +@@ -6852,7 +6852,7 @@ ostream_iterator& operator++(int); The class template \tcode{istreambuf_iterator} @@ -2449,7 +2448,7 @@ index 6a21fdf1..98944de7 100644 reads successive \textit{characters} from the streambuf for which it was constructed. -@@ -6976,7 +6976,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; +@@ -6977,7 +6977,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; Initializes \tcode{sbuf_} with \keyword{nullptr}. \end{itemdescr} @@ -2457,7 +2456,7 @@ index 6a21fdf1..98944de7 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(istream_type& s) noexcept; -@@ -6988,7 +6987,6 @@ istreambuf_iterator(istream_type& s) noexcept; +@@ -6989,7 +6988,6 @@ istreambuf_iterator(istream_type& s) noexcept; Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2465,7 +2464,7 @@ index 6a21fdf1..98944de7 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(streambuf_type* s) noexcept; -@@ -7000,7 +6998,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; +@@ -7001,7 +6999,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; Initializes \tcode{sbuf_} with \tcode{s}. \end{itemdescr} @@ -2473,7 +2472,7 @@ index 6a21fdf1..98944de7 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept; -@@ -7151,7 +7148,6 @@ is not a null pointer. +@@ -7152,7 +7149,6 @@ is not a null pointer. Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2482,7 +2481,7 @@ index 6a21fdf1..98944de7 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index 414f0b0d..c14e162a 100644 +index 0e93f84e..8a72eaf5 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2506,7 +2505,7 @@ index 414f0b0d..c14e162a 100644 literal \placeholder{L} is treated as a call of the form diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 4444d26a..4bd46d8f 100644 +index c8731821..03b19a61 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2647,7 +2646,7 @@ index 4444d26a..4bd46d8f 100644 allocators. \pnum -@@ -2978,7 +2979,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, +@@ -2980,7 +2981,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, whether or not \tcode{T} is a complete type: \begin{itemize} \item \tcode{X} is a complete type, and @@ -2656,7 +2655,7 @@ index 4444d26a..4bd46d8f 100644 other than \tcode{value_type} are complete types. \end{itemize} -@@ -2989,11 +2990,11 @@ whether or not \tcode{T} is a complete type: +@@ -2991,11 +2992,11 @@ whether or not \tcode{T} is a complete type: \pnum Subclause \ref{constraints} describes restrictions on \Cpp{} programs that use the facilities of the \Cpp{} standard library. The following subclauses specify constraints on the @@ -2672,7 +2671,7 @@ index 4444d26a..4bd46d8f 100644 \rSec3[namespace.constraints]{Namespace use} -@@ -3396,7 +3397,7 @@ are reserved for use by \Cpp{} implementations. +@@ -3398,7 +3399,7 @@ are reserved for use by \Cpp{} implementations. If a file with a name equivalent to the derived file name for one of the \Cpp{} standard library headers is not provided as part of the implementation, and a file with that name @@ -2681,7 +2680,7 @@ index 4444d26a..4bd46d8f 100644 the behavior is undefined.% \indextext{source file}% \indextext{undefined} -@@ -3567,7 +3568,7 @@ specified as being shareable without data races or the user supplies a locking m +@@ -3569,7 +3570,7 @@ specified as being shareable without data races or the user supplies a locking m \pnum If an object of a standard library type is accessed, and @@ -2690,7 +2689,7 @@ index 4444d26a..4bd46d8f 100644 does not happen before the access, or the access does not happen before the end of the object's lifetime, the behavior is undefined unless otherwise specified. -@@ -3633,7 +3634,7 @@ Every such entity shall be defined such that any header that defines it may be +@@ -3635,7 +3636,7 @@ Every such entity shall be defined such that any header that defines it may be included after any other header that also defines it\iref{basic.def.odr}. \pnum @@ -2699,7 +2698,7 @@ index 4444d26a..4bd46d8f 100644 shall include only their corresponding \Cpp{} standard library header, as described in~\ref{headers}. -@@ -3661,7 +3662,7 @@ explicitly stated otherwise. +@@ -3663,7 +3664,7 @@ explicitly stated otherwise. It is unspecified whether any non-member functions in the \Cpp{} standard library are defined as @@ -2708,7 +2707,7 @@ index 4444d26a..4bd46d8f 100644 \pnum A call to a non-member function signature -@@ -3689,7 +3690,7 @@ The phrase ``unless otherwise specified'' applies to cases such as +@@ -3691,7 +3692,7 @@ The phrase ``unless otherwise specified'' applies to cases such as the swappable with requirements\iref{swappable.requirements}. The exception for overloaded operators allows argument-dependent lookup in cases like that of @@ -2717,7 +2716,7 @@ index 4444d26a..4bd46d8f 100644 \effects \begin{codeblock} -@@ -3704,7 +3705,7 @@ return *this; +@@ -3706,7 +3707,7 @@ return *this; \pnum It is unspecified whether any member functions in the \Cpp{} standard library are defined as @@ -2726,7 +2725,7 @@ index 4444d26a..4bd46d8f 100644 \pnum For a non-virtual member function described in the \Cpp{} standard library, -@@ -3783,8 +3784,8 @@ library may be recursively reentered. +@@ -3785,8 +3786,8 @@ library may be recursively reentered. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -2737,7 +2736,7 @@ index 4444d26a..4bd46d8f 100644 Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. -@@ -3827,7 +3828,7 @@ not visible to users and are protected against data races. +@@ -3829,7 +3830,7 @@ not visible to users and are protected against data races. \pnum Unless otherwise specified, \Cpp{} standard library functions shall perform all operations solely within the current thread if those operations have effects that are @@ -2746,7 +2745,7 @@ index 4444d26a..4bd46d8f 100644 \pnum \begin{note} -@@ -3956,7 +3957,7 @@ potentially-throwing exception specification} exceptions. +@@ -3958,7 +3959,7 @@ potentially-throwing exception specification} exceptions. \begin{footnote} In particular, they can report a failure to allocate storage by throwing an exception of type @@ -2769,7 +2768,7 @@ index bdc1f3de..efd4eb00 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index 24d01efc..e7613b33 100644 +index 681efff4..7ccd12be 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -3011,7 +3010,7 @@ index 24d01efc..e7613b33 100644 array or until the lifetime of that array ends, whichever happens first. -@@ -9809,12 +9805,12 @@ The contents and meaning of the header \libheader{cmath} +@@ -9813,12 +9809,12 @@ The contents and meaning of the header \libheader{cmath} are a subset of the C standard library header \libheader{math.h} and only the declarations shown in the synopsis above are present, with the addition of @@ -3027,7 +3026,7 @@ index 24d01efc..e7613b33 100644 \end{note} \pnum -@@ -9878,7 +9874,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. +@@ -9882,7 +9878,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. If \tcode{abs} is called with an argument of type \tcode{X} for which \tcode{is_unsigned_v} is \tcode{true} and if \tcode{X} cannot be converted to \tcode{int} @@ -3266,7 +3265,7 @@ index 7b882855..8e2bc352 100644 and \tcode{long} diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 38c59533..a6fd4d0f 100644 +index bbcf9a66..7d85b2e3 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -508,7 +508,7 @@ shall not appear in any context not mentioned in this subclause. @@ -3424,7 +3423,7 @@ index 34018bd6..785798f7 100644 \grammarterm{declarator} starts with a \tcode{(}. In those cases the \grammarterm{statement} is considered a \grammarterm{declaration}, diff --git a/source/strings.tex b/source/strings.tex -index 5a93b51d..e0a6f1ca 100644 +index 9e1e9481..099fd5f3 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -5528,13 +5528,13 @@ The contents and meaning of the header \libheaderdef{cstring} @@ -3454,7 +3453,7 @@ index 5a93b51d..e0a6f1ca 100644 \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index ad8cbc54..f3691cd9 100644 +index b6f6be77..d55d8d15 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3727,7 +3726,7 @@ index ad8cbc54..f3691cd9 100644 calls to the \tcode{setlocale} function or with calls to functions that are affected by the current C locale. The implementation shall behave as if no diff --git a/source/templates.tex b/source/templates.tex -index 2a020516..2133a25e 100644 +index 627a70ec..40dcf126 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -687,7 +687,7 @@ struct A {}; @@ -4042,7 +4041,7 @@ index 2a020516..2133a25e 100644 the program is ill-formed, no diagnostic required. \pnum -@@ -6488,7 +6488,7 @@ of type +@@ -6486,7 +6486,7 @@ of type \pnum If a function declaration acquired its function type through @@ -4051,7 +4050,7 @@ index 2a020516..2133a25e 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -6569,7 +6569,7 @@ X ch; // error: incomplete type \tcode{X} +@@ -6567,7 +6567,7 @@ X ch; // error: incomplete type \tcode{X} \end{example} \begin{note} Within a template declaration, @@ -4060,7 +4059,7 @@ index 2a020516..2133a25e 100644 a local class are never considered to be entities that can be separately instantiated (this includes their default arguments, \grammarterm{noexcept-specifier}{s}, and non-static data member -@@ -6747,7 +6747,7 @@ void x() { +@@ -6745,7 +6745,7 @@ void x() { \end{example} \pnum @@ -4069,7 +4068,7 @@ index 2a020516..2133a25e 100644 can be determined without instantiating a class template definition, it is unspecified whether that instantiation actually takes place. \begin{example} -@@ -7084,7 +7084,7 @@ If an entity is the subject of both an explicit instantiation declaration +@@ -7082,7 +7082,7 @@ If an entity is the subject of both an explicit instantiation declaration and an explicit instantiation definition in the same translation unit, the definition shall follow the declaration. An entity that is the subject of an explicit instantiation declaration and that is also used @@ -4078,7 +4077,7 @@ index 2a020516..2133a25e 100644 in the translation unit shall be the subject of an explicit instantiation definition somewhere in the program; otherwise the program is ill-formed, no diagnostic required. -@@ -8149,7 +8149,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. +@@ -8147,7 +8147,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. In the following example, assuming a \tcode{signed char} cannot represent the value 1000, @@ -4087,7 +4086,7 @@ index 2a020516..2133a25e 100644 would be required to convert the \grammarterm{template-argument} of type \tcode{int} to \tcode{signed char}, -@@ -8258,8 +8258,8 @@ is not a reference type: +@@ -8256,8 +8256,8 @@ is not a reference type: \item If \tcode{A} @@ -4098,7 +4097,7 @@ index 2a020516..2133a25e 100644 \tcode{A} for type deduction; otherwise, -@@ -8267,7 +8267,7 @@ otherwise, +@@ -8265,7 +8265,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -4107,7 +4106,7 @@ index 2a020516..2133a25e 100644 of \tcode{A} for type -@@ -8363,8 +8363,8 @@ The transformed \tcode{A} +@@ -8361,8 +8361,8 @@ The transformed \tcode{A} can be another pointer or pointer-to-member type that can be converted to the deduced \tcode{A} @@ -4118,7 +4117,7 @@ index 2a020516..2133a25e 100644 \item If -@@ -8497,7 +8497,7 @@ void test() { +@@ -8495,7 +8495,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -4127,7 +4126,7 @@ index 2a020516..2133a25e 100644 If there is a target, the function template's function type and the target type are used as the types of -@@ -8544,7 +8544,7 @@ is not a reference type: +@@ -8542,7 +8542,7 @@ is not a reference type: If \tcode{P} is an array type, the pointer type produced by the @@ -4136,7 +4135,7 @@ index 2a020516..2133a25e 100644 \tcode{P} for type deduction; otherwise, -@@ -8552,7 +8552,7 @@ deduction; otherwise, +@@ -8550,7 +8550,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -4145,7 +4144,7 @@ index 2a020516..2133a25e 100644 \tcode{P} for type deduction; otherwise, -@@ -8643,7 +8643,7 @@ after a function has been selected. +@@ -8641,7 +8641,7 @@ after a function has been selected. In the context of a call to a conversion function, the return types of the conversion function templates are used. \item @@ -4154,7 +4153,7 @@ index 2a020516..2133a25e 100644 type is used. \end{itemize} -@@ -9159,7 +9159,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the +@@ -9157,7 +9157,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the template argument list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by $\texttt{P}_i$. @@ -4163,7 +4162,7 @@ index 2a020516..2133a25e 100644 originally a pack expansion: \begin{itemize} \item if \tcode{P} does not contain a template argument corresponding to -@@ -9222,7 +9222,7 @@ each remaining parameter type in the parameter-type-list +@@ -9220,7 +9220,7 @@ each remaining parameter type in the parameter-type-list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by the function parameter pack. @@ -4172,7 +4171,7 @@ index 2a020516..2133a25e 100644 originally a function parameter pack: \begin{itemize} \item if \tcode{P} does not contain a function parameter type corresponding to -@@ -9516,8 +9516,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod +@@ -9514,8 +9514,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod In a declaration whose \grammarterm{declarator-id} refers to a specialization of a function template, template argument deduction is performed to identify the specialization to which the declaration refers. Specifically, this is done @@ -4184,7 +4183,7 @@ index 2a020516..2133a25e 100644 \tcode{operator new}\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index 68206c12..1b18d89d 100644 +index 166a8a24..bb641003 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4357,7 +4356,7 @@ index 68206c12..1b18d89d 100644 the first function that successfully detects the ready status of the shared state or diff --git a/source/time.tex b/source/time.tex -index 2e3e9b55..2939c865 100644 +index d82346f7..5f5fdcfb 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1222,7 +1222,7 @@ unless it meets all of the following conditions: @@ -4406,7 +4405,7 @@ index 2e3e9b55..2939c865 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index db10d7c9..6febc3c3 100644 +index a35b63a5..dcf80d40 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -104,15 +104,15 @@ namespace std { @@ -4473,7 +4472,7 @@ index db10d7c9..6febc3c3 100644 each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts} with a base characteristic of \begin{codeblock} -@@ -6909,6 +6909,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); +@@ -6911,6 +6911,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); \rSec2[variant.monostate]{Class \tcode{monostate}}% \indexlibraryglobal{monostate}% @@ -4481,7 +4480,7 @@ index db10d7c9..6febc3c3 100644 \begin{itemdecl} struct monostate{}; \end{itemdecl} -@@ -7077,7 +7078,8 @@ namespace std { +@@ -7079,7 +7080,8 @@ namespace std { \end{codeblock} \pnum @@ -4495,7 +4494,7 @@ index db10d7c9..6febc3c3 100644 2.43.0 -From 857f2971669f68909d9b271c9e98ce2cea8c1537 Mon Sep 17 00:00:00 2001 +From 89b64002fa2ceb25d44b6203ca455415eea52afa Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 Subject: [PATCH 3/9] Fix dubious \defnx that has see{} in it, and remove range @@ -4507,7 +4506,7 @@ Subject: [PATCH 3/9] Fix dubious \defnx that has see{} in it, and remove range 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index af9dce40..0f649a76 100644 +index f0d3b942..90000ab2 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -13919,7 +13919,7 @@ without an intervening \grammarterm{root-directory} element. @@ -4520,7 +4519,7 @@ index af9dce40..0f649a76 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index 2133a25e..63baaaf8 100644 +index 40dcf126..656d82ed 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -2085,7 +2085,6 @@ so it does match \#2. @@ -4548,7 +4547,7 @@ index 2133a25e..63baaaf8 100644 2.43.0 -From 2384aaae34a7f18462dee0e59147228df6781c36 Mon Sep 17 00:00:00 2001 +From 8fe580026edc338785a923c6eba6f90840b3ed01 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and @@ -4556,9 +4555,9 @@ Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and --- source/exceptions.tex | 4 +- - source/lex.tex | 176 +++++++------- + source/lex.tex | 182 +++++++-------- source/time.tex | 518 +++++++++++++++++++++--------------------- - 3 files changed, 349 insertions(+), 349 deletions(-) + 3 files changed, 352 insertions(+), 352 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex index cd476d28..df489ab5 100644 @@ -4579,7 +4578,7 @@ index cd476d28..df489ab5 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index c14e162a..5e38b875 100644 +index 8a72eaf5..c1386c6a 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -330,43 +330,43 @@ the numerical value has no other meaning in this context. @@ -4838,7 +4837,22 @@ index c14e162a..5e38b875 100644 \end{bnf} \begin{bnf} -@@ -1483,16 +1483,16 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1462,12 +1462,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. + + \begin{bnf} + \nontermdef{simple-escape-sequence}\br +- \terminal{\textbackslash} simple-escape-sequence-char ++ \literalterminal{\textbackslash} simple-escape-sequence-char + \end{bnf} + + \begin{bnf} + \nontermdef{simple-escape-sequence-char} \textnormal{one of}\br +- \terminal{' " ? \textbackslash{} a b f n r t v} ++ \literalterminal{' " ? \textbackslash{} a b f n r t v} + \end{bnf} + + \begin{bnf} +@@ -1483,21 +1483,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{octal-escape-sequence}\br @@ -4860,6 +4874,12 @@ index c14e162a..5e38b875 100644 + \literalterminal{\textbackslash x\{} simple-hexadecimal-digit-sequence \literalterminal{\}} \end{bnf} + \begin{bnf} + \nontermdef{conditional-escape-sequence}\br +- \terminal{\textbackslash} conditional-escape-sequence-char ++ \literalterminal{\textbackslash} conditional-escape-sequence-char + \end{bnf} + \begin{bnf} @@ -1680,42 +1680,42 @@ is supported for compatibility with \CppXIV{} and C. @@ -4945,7 +4965,7 @@ index c14e162a..5e38b875 100644 in the prefix is a \defn{raw string literal}. The \grammarterm{d-char-sequence} serves as a delimiter. The terminating diff --git a/source/time.tex b/source/time.tex -index 2939c865..c37f5bba 100644 +index 5f5fdcfb..fd854a49 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2200,7 +2200,7 @@ If the parse fails to decode a valid duration, @@ -5965,7 +5985,7 @@ index 2939c865..c37f5bba 100644 2.43.0 -From c789975472923e49702e7ae17f082e17e2da368b Mon Sep 17 00:00:00 2001 +From 5b43052734eacc81eba5f244cb9f3b3ba4d9ed71 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. @@ -6000,7 +6020,7 @@ Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. 26 files changed, 272 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 09938442..3af19872 100644 +index 959658fe..efe3f977 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -8698,7 +8698,6 @@ but stronger than those for a partial ordering. @@ -6036,10 +6056,10 @@ index 09938442..3af19872 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index 8411bcae..0cf54882 100644 +index 1c0a6cfc..baadca8b 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -287,7 +287,6 @@ int X::y = 1; // defines \tcode{X::y} +@@ -294,7 +294,6 @@ int X::y = 1; // defines \tcode{X::y} enum { up, down }; // defines \tcode{up} and \tcode{down} namespace N { int d; } // defines \tcode{N} and \tcode{N::d} X anX; // defines \tcode{anX} @@ -6047,7 +6067,7 @@ index 8411bcae..0cf54882 100644 \end{codeblock} whereas these are just declarations: \begin{codeblock} -@@ -824,7 +823,6 @@ compute equivalent values\iref{expr.eq}. +@@ -831,7 +830,6 @@ compute equivalent values\iref{expr.eq}. \pnum For the purposes of the preceding requirements: @@ -6055,7 +6075,7 @@ index 8411bcae..0cf54882 100644 \begin{itemize} \item If \tcode{D} is a class with an implicitly-declared constructor\iref{class.default.ctor,class.copy.ctor}, -@@ -6108,7 +6106,6 @@ has the top-level cv-qualifier \keyword{volatile}. +@@ -6123,7 +6121,6 @@ has the top-level cv-qualifier \keyword{volatile}. \pnum Every integer type has an \term{integer conversion rank} defined as follows: @@ -6064,10 +6084,10 @@ index 8411bcae..0cf54882 100644 \item No two signed integer types other than \keyword{char} and \tcode{\keyword{signed} \keyword{char}} (if \keyword{char} is signed) have the same rank, even if they have diff --git a/source/classes.tex b/source/classes.tex -index 32338393..fcf3f025 100644 +index 7b286507..e2b6a5eb 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -1717,7 +1717,6 @@ for each non-static data member of +@@ -1713,7 +1713,6 @@ for each non-static data member of that is of class type (or array thereof), the constructor selected to copy/move that member is trivial; \end{itemize} @@ -6075,7 +6095,7 @@ index 32338393..fcf3f025 100644 \indextext{constructor!move!non-trivial}% otherwise the copy/move constructor is \defnx{non-trivial}{constructor!copy!nontrivial}. -@@ -3338,7 +3337,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat +@@ -3334,7 +3333,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat destructor and \tcode{N} has a non-trivial constructor (for instance, if they declare or inherit virtual functions), the active member of \tcode{u} can be safely switched from \tcode{m} to \tcode{n} using the destructor and placement \grammarterm{new-expression} as follows: @@ -6083,7 +6103,7 @@ index 32338393..fcf3f025 100644 \begin{codeblock} u.m.~M(); new (&u.n) N; -@@ -3516,7 +3514,6 @@ A local class cannot have static data members\iref{class.static.data}. +@@ -3512,7 +3510,6 @@ A local class cannot have static data members\iref{class.static.data}. \indextext{multiple inheritance}% A list of base classes can be specified in a class definition using the notation: @@ -6091,7 +6111,7 @@ index 32338393..fcf3f025 100644 \begin{bnf} \nontermdef{base-clause}\br \terminal{:} base-specifier-list -@@ -5491,7 +5488,6 @@ initializers for direct and virtual base class subobjects and +@@ -5487,7 +5484,6 @@ initializers for direct and virtual base class subobjects and non-static data members can be specified by a \grammarterm{ctor-initializer}, which has the form @@ -6099,7 +6119,7 @@ index 32338393..fcf3f025 100644 \begin{bnf} \nontermdef{ctor-initializer}\br \terminal{:} mem-initializer-list -@@ -5962,7 +5958,6 @@ public: +@@ -5958,7 +5954,6 @@ public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; \end{codeblock} @@ -6107,7 +6127,7 @@ index 32338393..fcf3f025 100644 \end{example} \rSec2[class.inhctor.init]{Initialization by inherited constructor}% -@@ -6618,7 +6613,6 @@ any non-static data member of \tcode{C} is of reference type or +@@ -6614,7 +6609,6 @@ any non-static data member of \tcode{C} is of reference type or A binary operator expression \tcode{a @ b} is \defnx{usable}{usable!binary operator expression} if either @@ -6115,7 +6135,7 @@ index 32338393..fcf3f025 100644 \begin{itemize} \item \tcode{a} or \tcode{b} is of class or enumeration type and -@@ -6739,7 +6733,6 @@ The \defnadj{synthesized}{three-way comparison} +@@ -6735,7 +6729,6 @@ The \defnadj{synthesized}{three-way comparison} of type \tcode{R}\iref{cmp.categories} of glvalues \tcode{a} and \tcode{b} of the same type is defined as follows: @@ -6123,7 +6143,7 @@ index 32338393..fcf3f025 100644 \begin{itemize} \item If \tcode{a <=> b} is usable\iref{class.compare.default} and -@@ -6839,7 +6832,6 @@ The \defn{common comparison type} \tcode{U} +@@ -6835,7 +6828,6 @@ The \defn{common comparison type} \tcode{U} of a possibly-empty list of $n$ comparison category types $\tcode{T}_0$, $\tcode{T}_1$, $\dotsc$, $\tcode{T}_{n-1}$ is defined as follows: @@ -6132,7 +6152,7 @@ index 32338393..fcf3f025 100644 \item If at least one $\tcode{T}_i$ is \tcode{std::partial_ordering}, diff --git a/source/compatibility.tex b/source/compatibility.tex -index 41471921..f67b16a1 100644 +index 17355dea..8186b85c 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -2619,7 +2619,6 @@ Overspecification. @@ -6151,7 +6171,7 @@ index 41471921..f67b16a1 100644 \begin{itemize} \item passing a value to a function that takes an argument of type \tcode{bool}; \item using \tcode{operator==} to compare to \tcode{false} or \tcode{true}; -@@ -3768,7 +3766,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in +@@ -3769,7 +3767,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in \pnum Header \libheaderref{cstring}: The following functions have different declarations: @@ -6159,7 +6179,7 @@ index 41471921..f67b16a1 100644 \begin{itemize} \item \tcode{strchr} \item \tcode{strpbrk} -@@ -3782,7 +3779,6 @@ Subclause \ref{cstring.syn} describes the changes. +@@ -3783,7 +3780,6 @@ Subclause \ref{cstring.syn} describes the changes. \pnum Header \libheaderref{cwchar}: The following functions have different declarations: @@ -6167,7 +6187,7 @@ index 41471921..f67b16a1 100644 \begin{itemize} \item \tcode{wcschr} \item \tcode{wcspbrk} -@@ -3807,7 +3803,6 @@ in addition to the names declared in +@@ -3808,7 +3804,6 @@ in addition to the names declared in \pnum Header \libheaderref{cstdlib}: The following functions have different behavior: @@ -6176,7 +6196,7 @@ index 41471921..f67b16a1 100644 \item \tcode{atexit} \item \tcode{exit} diff --git a/source/concepts.tex b/source/concepts.tex -index 6bd0435e..0bfd8612 100644 +index 1722b95c..6663d0e0 100644 --- a/source/concepts.tex +++ b/source/concepts.tex @@ -150,7 +150,6 @@ already specifies exactly such an expression explicitly. @@ -6305,7 +6325,7 @@ index 6bd0435e..0bfd8612 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 321f6146..1e5a9871 100644 +index ed136ec9..2f5de6f4 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -685,7 +685,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6354,7 +6374,7 @@ index 321f6146..1e5a9871 100644 - \begin{codeblock} template - using @\placeholdernc{iter-value-type}@ = typename iterator_traits::value_type; // \expos + using @\placeholdernc{iter-value-type}@ = iterator_traits::value_type; // \expos @@ -9326,7 +9320,6 @@ If \tcode{size() < sz}, appends \tcode{sz - size()} default-inserted elements to the sequence. @@ -6377,7 +6397,7 @@ index 321f6146..1e5a9871 100644 \end{itemdescr} \begin{itemdecl} -@@ -20116,7 +20107,6 @@ For each of +@@ -20093,7 +20084,6 @@ For each of \tcode{stack}, the library provides the following formatter specialization where \tcode{\placeholder{adaptor-type}} is the name of the template: @@ -6385,7 +6405,7 @@ index 321f6146..1e5a9871 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -24308,7 +24298,6 @@ typename A::offset_policy +@@ -24285,7 +24275,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6393,7 +6413,7 @@ index 321f6146..1e5a9871 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -25278,7 +25267,6 @@ the \tcode{SliceSpecifier} arguments. +@@ -25254,7 +25243,6 @@ the \tcode{SliceSpecifier} arguments. \pnum For each function defined in \ref{mdspan.sub} that takes a parameter pack named \tcode{slices} as an argument: @@ -6401,7 +6421,7 @@ index 321f6146..1e5a9871 100644 \begin{itemize} \item let \tcode{index_type} be \begin{itemize} -@@ -25542,7 +25530,6 @@ $\le \tcode{src.extent($k$)}$ +@@ -25518,7 +25506,6 @@ $\le \tcode{src.extent($k$)}$ \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: @@ -6409,7 +6429,7 @@ index 321f6146..1e5a9871 100644 \begin{itemize} \item %FIXME: I think we want the count here, "number" is ambiguous. -@@ -25553,7 +25540,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and +@@ -25529,7 +25516,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and for each rank index $k$ of \tcode{Extents} such that \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, \tcode{SubExt\-ents::static_extent(\placeholder{map-rank}[$k$])} equals: @@ -6417,7 +6437,7 @@ index 321f6146..1e5a9871 100644 \begin{itemize} \item \tcode{Extents::static_extent($k$)} -@@ -25593,7 +25579,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that +@@ -25569,7 +25555,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that for each $k$ for which \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, \tcode{ext.extent(\placeholder{map-rank}[$k$])} equals: @@ -6426,7 +6446,7 @@ index 321f6146..1e5a9871 100644 \item \tcode{$s_k$.extent == 0 ? 0 : 1 + (\exposid{de-ice}($s_k$.extent) - 1) / \exposid{de-ice}($s_k$.stride)} diff --git a/source/declarations.tex b/source/declarations.tex -index a8c0ecb3..1e8c45d2 100644 +index f41fea44..4fa9b627 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1593,7 +1593,6 @@ a partial specialization\iref{temp.spec.partial}, @@ -6445,7 +6465,7 @@ index a8c0ecb3..1e8c45d2 100644 \begin{bnf} \nontermdef{declarator}\br ptr-declarator\br -@@ -4398,7 +4396,6 @@ In the following code, +@@ -4396,7 +4394,6 @@ In the following code, \tcode{g} will be called with the value \tcode{f(2)}: @@ -6453,7 +6473,7 @@ index a8c0ecb3..1e8c45d2 100644 \begin{codeblock} int a = 1; int f(int); -@@ -5068,7 +5065,6 @@ To +@@ -5066,7 +5063,6 @@ To an object of type \tcode{T} means: @@ -6461,7 +6481,7 @@ index a8c0ecb3..1e8c45d2 100644 \begin{itemize} \item If -@@ -5272,7 +5268,6 @@ is sequenced before those associated with +@@ -5270,7 +5266,6 @@ is sequenced before those associated with the initialization of the $j^\text{th}$ element. \item Otherwise, if the destination type is a class type: @@ -6469,7 +6489,7 @@ index a8c0ecb3..1e8c45d2 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -6184,7 +6179,6 @@ a program that necessitates such a binding is ill-formed. +@@ -6182,7 +6177,6 @@ a program that necessitates such a binding is ill-formed. A reference to type ``\cvqual{cv1} \tcode{T1}'' is initialized by an expression of type ``\cvqual{cv2} \tcode{T2}'' as follows:% \indextext{binding!reference} @@ -6477,7 +6497,7 @@ index a8c0ecb3..1e8c45d2 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6652,7 +6646,6 @@ int j { 1 }; // initialize to 1 +@@ -6650,7 +6644,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -6485,7 +6505,7 @@ index a8c0ecb3..1e8c45d2 100644 \end{itemize} \pnum -@@ -7739,7 +7732,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, +@@ -7737,7 +7730,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, where $\tcode{U}_i$ is an lvalue reference if the initializer is an lvalue and an rvalue reference otherwise, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -6493,7 +6513,7 @@ index a8c0ecb3..1e8c45d2 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7871,7 +7863,6 @@ struct S { +@@ -7869,7 +7861,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6501,7 +6521,7 @@ index a8c0ecb3..1e8c45d2 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7968,7 +7959,6 @@ If the underlying +@@ -7966,7 +7957,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6509,7 +6529,7 @@ index a8c0ecb3..1e8c45d2 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8427,7 +8417,6 @@ void h() { +@@ -8425,7 +8415,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} according to the following grammar: @@ -6517,7 +6537,7 @@ index a8c0ecb3..1e8c45d2 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8601,7 +8590,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8599,7 +8588,6 @@ not declare functions or function templates, the use of the name is ill-formed\i In particular, the name of a variable, function or enumerator does not hide the name of a class or enumeration declared in a different namespace. For example, @@ -6525,7 +6545,7 @@ index a8c0ecb3..1e8c45d2 100644 \begin{codeblock} namespace A { class X { }; -@@ -9154,7 +9142,6 @@ otherwise identical. +@@ -9152,7 +9140,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6533,7 +6553,7 @@ index a8c0ecb3..1e8c45d2 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -10023,7 +10010,6 @@ may be applied to a function or a lambda call operator or +@@ -10020,7 +10007,6 @@ may be applied to a function or a lambda call operator or to the declaration of a class or enumeration. An \grammarterm{attribute-argument-clause} may be present and, if present, shall have the form: @@ -6567,7 +6587,7 @@ index df489ab5..17fe2711 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index d9469cf9..61abb53e 100644 +index f6fdd1c7..37b62ab4 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -464,7 +464,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -6706,7 +6726,7 @@ index d9469cf9..61abb53e 100644 \begin{itemize} \item If the allocation call for the \grammarterm{new-expression} for the object to -@@ -7325,7 +7308,6 @@ or one operand has integral type and +@@ -7323,7 +7306,6 @@ or one operand has integral type and the other operand has unscoped enumeration type, the \link{usual arithmetic conversions}{expr.arith.conv} are applied to the operands. Then: @@ -6714,7 +6734,7 @@ index d9469cf9..61abb53e 100644 \begin{itemize} \item If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, -@@ -7480,7 +7462,6 @@ is considered to be equivalent to a pointer to a hypothetical array element +@@ -7478,7 +7460,6 @@ is considered to be equivalent to a pointer to a hypothetical array element $n$ for this purpose. \end{footnote} is defined in terms of a partial order consistent with the following rules: @@ -6722,7 +6742,7 @@ index d9469cf9..61abb53e 100644 \begin{itemize} \item If two pointers point to different elements of the same array, or to subobjects thereof, the pointer to the element with the higher subscript -@@ -7493,7 +7474,6 @@ neither member is a subobject of zero size +@@ -7491,7 +7472,6 @@ neither member is a subobject of zero size and their class is not a union. \item Otherwise, neither pointer is required to compare greater than the other. @@ -6730,7 +6750,7 @@ index d9469cf9..61abb53e 100644 \end{itemize} \pnum -@@ -7555,7 +7535,6 @@ If at least one of the converted operands is a pointer, +@@ -7553,7 +7533,6 @@ If at least one of the converted operands is a pointer, \link{qualification conversions}{conv.qual} are performed on both operands to bring them to their \deflink{composite pointer type}{expr.type}. Comparing pointers is defined as follows: @@ -6738,7 +6758,7 @@ index d9469cf9..61abb53e 100644 \begin{itemize} \item If one pointer represents the address of a complete object, and another -@@ -7585,7 +7564,6 @@ qualification conversions\iref{conv.qual} +@@ -7583,7 +7562,6 @@ qualification conversions\iref{conv.qual} are performed on both operands to bring them to their composite pointer type\iref{expr.type}. Comparing pointers to members is defined as follows: @@ -6746,7 +6766,7 @@ index d9469cf9..61abb53e 100644 \begin{itemize} \item If two pointers to members are both the null member pointer value, they compare -@@ -7871,7 +7849,6 @@ Attempts are made to form an implicit conversion sequence +@@ -7869,7 +7847,6 @@ Attempts are made to form an implicit conversion sequence from an operand expression \tcode{E1} of type \tcode{T1} to a target type related to the type \tcode{T2} of the operand expression \tcode{E2} as follows: @@ -6754,7 +6774,7 @@ index d9469cf9..61abb53e 100644 \begin{itemize} \item If \tcode{E2} is an lvalue, the target type is ``lvalue reference to \tcode{T2}'', -@@ -7950,7 +7927,6 @@ subclause. +@@ -7948,7 +7925,6 @@ subclause. and \link{function-to-pointer}{conv.func} standard conversions are performed on the second and third operands. After those conversions, one of the following shall hold: @@ -6762,7 +6782,7 @@ index d9469cf9..61abb53e 100644 \begin{itemize} \item The second and third operands have the same type; the result is of that type and the result is copy-initialized using the selected operand. -@@ -7980,7 +7956,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. +@@ -7978,7 +7954,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. Both the second and third operands have type \tcode{std::nullptr_t} or one has that type and the other is a null pointer constant. The result is of type \tcode{std::nullptr_t}. @@ -6771,7 +6791,7 @@ index d9469cf9..61abb53e 100644 \rSec2[expr.yield]{Yielding a value}% diff --git a/source/future.tex b/source/future.tex -index fc805a6e..ab7c724e 100644 +index 41979b62..4957e2c3 100644 --- a/source/future.tex +++ b/source/future.tex @@ -283,7 +283,6 @@ shown in the above synopsis. @@ -6839,7 +6859,7 @@ index fc805a6e..ab7c724e 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index 0f649a76..a34a3f84 100644 +index 90000ab2..6058ccab 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -2102,14 +2102,12 @@ does nothing. @@ -6943,8 +6963,8 @@ index 0f649a76..a34a3f84 100644 and then as if by doing: - \begin{codeblock} - char extern_buf[XSIZE]; - char* extern_end; + char extern_buf[XSIZE]; + const char* extern_end; @@ -13920,7 +13907,6 @@ without an intervening \grammarterm{root-directory} element. \pnum \indextext{path!normalization|(}% @@ -6962,7 +6982,7 @@ index 0f649a76..a34a3f84 100644 \item If there are no more entries at the current depth, then if \tcode{depth() != 0} iteration over the parent directory resumes; otherwise \tcode{*this = recursive_directory_iterator()}. diff --git a/source/iterators.tex b/source/iterators.tex -index 98944de7..315cca9e 100644 +index ffa39eaf..ed2a7332 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -948,7 +948,6 @@ may be defined as \keyword{void}. @@ -6989,7 +7009,7 @@ index 98944de7..315cca9e 100644 \begin{itemize} \item \tcode{iter_move(E)}, if \tcode{E} has class or enumeration type and -@@ -2791,7 +2788,6 @@ namespace std { +@@ -2792,7 +2789,6 @@ namespace std { A program-defined iterator \tcode{BinaryTreeIterator} can be included into the bidirectional iterator category by specializing the \tcode{iterator_traits} template: @@ -6997,7 +7017,7 @@ index 98944de7..315cca9e 100644 \begin{codeblock} template struct iterator_traits> { using iterator_category = bidirectional_iterator_tag; -@@ -2809,7 +2805,6 @@ If +@@ -2810,7 +2806,6 @@ If \tcode{evolve()} is well-defined for bidirectional iterators, but can be implemented more efficiently for random access iterators, then the implementation is as follows: @@ -7005,7 +7025,7 @@ index 98944de7..315cca9e 100644 \begin{codeblock} template inline void -@@ -3396,7 +3391,6 @@ As if by: +@@ -3397,7 +3392,6 @@ As if by: Iterator tmp = current; return *--tmp; \end{codeblock} @@ -7013,7 +7033,7 @@ index 98944de7..315cca9e 100644 \end{itemdescr} \indexlibrarymember{operator->}{reverse_iterator}% -@@ -4778,7 +4772,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 +@@ -4779,7 +4773,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 vector v2(make_move_iterator(s.begin()), make_move_iterator(s.end())); // moves strings into \tcode{v2} \end{codeblock} @@ -7021,7 +7041,7 @@ index 98944de7..315cca9e 100644 \end{example} \rSec3[move.iterator]{Class template \tcode{move_iterator}} -@@ -6497,7 +6490,6 @@ partial_sum(istream_iterator(cin), +@@ -6498,7 +6491,6 @@ partial_sum(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "@\textbackslash@n")); \end{codeblock} @@ -7030,7 +7050,7 @@ index 98944de7..315cca9e 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 4bd46d8f..76ea7917 100644 +index 03b19a61..b668fdac 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -196,7 +196,6 @@ save space, items that do not apply to a Clause are omitted. @@ -7129,7 +7149,7 @@ index 4bd46d8f..76ea7917 100644 \begin{codeblock} template struct SimpleAllocator { -@@ -3422,13 +3410,11 @@ the description of function semantics apply +@@ -3424,13 +3412,11 @@ the description of function semantics apply to both the default version defined by the \Cpp{} standard library and the replacement function defined by the program. @@ -7143,7 +7163,7 @@ index 4bd46d8f..76ea7917 100644 \begin{itemize} \item \tcode{terminate_handler} -@@ -3449,7 +3435,6 @@ Exception handling. +@@ -3451,7 +3437,6 @@ Exception handling. \pnum A \Cpp{} program can get a pointer to the current handler function by calling the following functions: @@ -7151,7 +7171,7 @@ index 4bd46d8f..76ea7917 100644 \begin{itemize} \item \indexlibraryglobal{get_new_handler}% -@@ -3475,7 +3460,6 @@ on the implementation. +@@ -3477,7 +3462,6 @@ on the implementation. \pnum In particular, the behavior is undefined in the following cases: @@ -7159,7 +7179,7 @@ index 4bd46d8f..76ea7917 100644 \begin{itemize} \item For replacement functions\iref{replacement.functions}, if the installed replacement function does not -@@ -3760,7 +3744,6 @@ functions or constructors an implementation shall provide corresponding definiti +@@ -3762,7 +3746,6 @@ functions an implementation shall provide corresponding definitions. \indextext{stable algorithm}% When the requirements for an algorithm state that it is ``stable'' without further elaboration, it means: @@ -7178,7 +7198,7 @@ index efd4eb00..12180661 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index e4a250b1..deb35ac5 100644 +index 1b455e86..f2964f90 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1571,7 +1571,6 @@ when considered as an unevaluated operand. @@ -7198,10 +7218,10 @@ index e4a250b1..deb35ac5 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index 6eda2087..e6dedae6 100644 +index 16365a12..7541a534 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -1943,7 +1943,6 @@ is_base_of_v // \tcode{false} +@@ -1947,7 +1947,6 @@ is_base_of_v // \tcode{false} The predicate condition for a template specialization \tcode{is_convertible} shall be satisfied if and only if the return expression in the following code would be well-formed, including any implicit conversions to the return type of the function: @@ -7209,7 +7229,7 @@ index 6eda2087..e6dedae6 100644 \begin{codeblock} To test() { return declval(); -@@ -2451,7 +2450,6 @@ If any of the types computed above is ill-formed, then +@@ -2455,7 +2454,6 @@ If any of the types computed above is ill-formed, then \pnum For the \tcode{common_type} trait applied to a template parameter pack \tcode{T} of types, the member \tcode{type} shall be either defined or not present as follows: @@ -7218,7 +7238,7 @@ index 6eda2087..e6dedae6 100644 \item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}. diff --git a/source/numerics.tex b/source/numerics.tex -index e7613b33..accd8c6d 100644 +index 7ccd12be..56017d80 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); @@ -7378,10 +7398,10 @@ index 8e2bc352..f94e7c05 100644 const char* unsigned long long int diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index a6fd4d0f..da2270a0 100644 +index 7d85b2e3..a147d15a 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex -@@ -183,7 +183,6 @@ begins with the first character in the source file +@@ -194,7 +194,6 @@ begins with the first character in the source file (optionally after whitespace containing no new-line characters) or follows whitespace containing at least one new-line character, and is @@ -7461,7 +7481,7 @@ index a6fd4d0f..da2270a0 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 49105075..1ce5326c 100644 +index 1f4f807d..cd516a76 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7528,7 +7548,7 @@ index 49105075..1ce5326c 100644 \begin{codeblock} template concept @\defexposconceptnc{simple-view}@ = // \expos -@@ -5888,7 +5880,6 @@ If \tcode{decltype((F))} does not model +@@ -5889,7 +5881,6 @@ If \tcode{decltype((F))} does not model \tcode{views::take(E, F)} is ill-formed. Otherwise, the expression \tcode{views::take(E, F)} is expression-equivalent to: @@ -7536,7 +7556,7 @@ index 49105075..1ce5326c 100644 \begin{itemize} \item If \tcode{T} is a specialization -@@ -5909,7 +5900,6 @@ then +@@ -5910,7 +5901,6 @@ then ranges::be\-gin(E) + std::min(ranges::distance(E), F))}, except that \tcode{E} is evaluated only once, where \tcode{U} is a type determined as follows: @@ -7544,7 +7564,7 @@ index 49105075..1ce5326c 100644 \begin{itemize} \item if \tcode{T} is a specialization of \tcode{span}, then \tcode{U} is \tcode{span}; -@@ -6371,7 +6361,6 @@ If \tcode{decltype((F))} does not model +@@ -6372,7 +6362,6 @@ If \tcode{decltype((F))} does not model \tcode{views::drop(E, F)} is ill-formed. Otherwise, the expression \tcode{views::drop(E, F)} is expression-equivalent to: @@ -7552,7 +7572,7 @@ index 49105075..1ce5326c 100644 \begin{itemize} \item If \tcode{T} is a specialization of -@@ -7447,7 +7436,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and +@@ -7448,7 +7437,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and \exposid{Base} and \exposid{InnerBase} each model \libconcept{forward_range}. In that case, \tcode{\exposid{iterator}::iterator_category} is defined as follows: @@ -7560,7 +7580,7 @@ index 49105075..1ce5326c 100644 \begin{itemize} \item Let \placeholder{OUTERC} denote -@@ -9746,7 +9734,6 @@ appears in the immediate context of a template instantiation. +@@ -9747,7 +9735,6 @@ appears in the immediate context of a template instantiation. \end{note} Otherwise, \tcode{views::counted(E, F)} is expression-equivalent to: @@ -7581,7 +7601,7 @@ index 785798f7..fa5898d3 100644 \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are diff --git a/source/support.tex b/source/support.tex -index f3691cd9..43f3c9f5 100644 +index d55d8d15..54ed6da8 100644 --- a/source/support.tex +++ b/source/support.tex @@ -2459,7 +2459,6 @@ This requirement is binding on any replacement versions of these functions. @@ -7614,10 +7634,10 @@ index f3691cd9..43f3c9f5 100644 accessible member: - \begin{codeblock} - using promise_type = typename R::promise_type; + using promise_type = R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index 63baaaf8..91b148f9 100644 +index 656d82ed..e31f88b7 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -235,7 +235,6 @@ in some translation unit; no diagnostic is required. @@ -7780,7 +7800,7 @@ index 63baaaf8..91b148f9 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -6937,7 +6917,6 @@ template. +@@ -6935,7 +6915,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -7788,7 +7808,7 @@ index 63baaaf8..91b148f9 100644 \begin{bnf} \nontermdef{explicit-instantiation}\br \opt{\keyword{extern}} \keyword{template} declaration -@@ -7412,7 +7391,6 @@ otherwise, it is a declaration. +@@ -7410,7 +7389,6 @@ otherwise, it is a declaration. The definition of a static data member of a template for which default-initialization is desired can use functional cast notation\iref{expr.type.conv}: @@ -7796,7 +7816,7 @@ index 63baaaf8..91b148f9 100644 \begin{codeblock} template<> X Q::x; // declaration template<> X Q::x (); // error: declares a function -@@ -7671,7 +7649,6 @@ An empty template argument list can be used to indicate that a given +@@ -7669,7 +7647,6 @@ An empty template argument list can be used to indicate that a given use refers to a specialization of a function template even when a non-template function\iref{dcl.fct} is visible that would otherwise be used. For example: @@ -7804,7 +7824,7 @@ index 63baaaf8..91b148f9 100644 \begin{codeblock} template int f(T); // \#1 int f(int); // \#2 -@@ -8253,7 +8230,6 @@ void h(int x, float& y) { +@@ -8251,7 +8228,6 @@ void h(int x, float& y) { If \tcode{P} is not a reference type: @@ -7812,7 +7832,7 @@ index 63baaaf8..91b148f9 100644 \begin{itemize} \item If -@@ -8348,7 +8324,6 @@ the type +@@ -8346,7 +8322,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -7820,7 +7840,7 @@ index 63baaaf8..91b148f9 100644 \begin{itemize} \item If the original -@@ -8538,7 +8513,6 @@ of \tcode{P} for type deduction and for any further references to or transformat +@@ -8536,7 +8511,6 @@ of \tcode{P} for type deduction and for any further references to or transformat If \tcode{A} is not a reference type: @@ -7828,7 +7848,7 @@ index 63baaaf8..91b148f9 100644 \begin{itemize} \item If -@@ -8584,7 +8558,6 @@ values that will make the deduced +@@ -8582,7 +8556,6 @@ values that will make the deduced identical to \tcode{A}. However, certain attributes of \tcode{A} may be ignored: @@ -7836,7 +7856,7 @@ index 63baaaf8..91b148f9 100644 \begin{itemize} \item If the original \tcode{A} is a reference type, -@@ -8629,7 +8602,6 @@ the argument template and template-1 as the parameter template. +@@ -8627,7 +8600,6 @@ the argument template and template-1 as the parameter template. \pnum The types used to determine the ordering depend on the context in which the partial ordering is done: @@ -7844,7 +7864,7 @@ index 63baaaf8..91b148f9 100644 \begin{itemize} \item In the context of a function call, the types used are those function parameter types -@@ -8657,7 +8629,6 @@ and +@@ -8655,7 +8627,6 @@ and \pnum Before the partial ordering is done, certain transformations are performed on the types used for partial ordering: @@ -7852,7 +7872,7 @@ index 63baaaf8..91b148f9 100644 \begin{itemize} \item If -@@ -8863,7 +8834,6 @@ A given type +@@ -8861,7 +8832,6 @@ A given type \tcode{P} can be composed from a number of other types, templates, and constant template argument values: @@ -7860,7 +7880,7 @@ index 63baaaf8..91b148f9 100644 \begin{itemize} \item A function type includes the types of each of the function parameters, -@@ -8905,7 +8875,6 @@ need not have the same form. +@@ -8903,7 +8873,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -7868,7 +7888,7 @@ index 63baaaf8..91b148f9 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -9000,7 +8969,6 @@ is deduced. +@@ -8998,7 +8967,6 @@ is deduced. \begin{example} Here is an example in which different parameter/argument pairs produce inconsistent template argument deductions: @@ -7876,7 +7896,7 @@ index 63baaaf8..91b148f9 100644 \begin{codeblock} template void f(T x, T y) { @\commentellip@ } struct A { @\commentellip@ }; -@@ -9017,7 +8985,6 @@ Here is an example where two template arguments are deduced from a +@@ -9015,7 +8983,6 @@ Here is an example where two template arguments are deduced from a single function parameter/argument pair. This can lead to conflicts that cause type deduction to fail: @@ -7884,7 +7904,7 @@ index 63baaaf8..91b148f9 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -9034,7 +9001,6 @@ void r() { +@@ -9032,7 +8999,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -7892,7 +7912,7 @@ index 63baaaf8..91b148f9 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -9053,7 +9019,6 @@ void h() { +@@ -9051,7 +9017,6 @@ void h() { Here is an example where a qualification conversion applies between the argument type on the function call and the deduced template argument type: @@ -7900,7 +7920,7 @@ index 63baaaf8..91b148f9 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -9064,7 +9029,6 @@ void s() { +@@ -9062,7 +9027,6 @@ void s() { Here is an example where the template argument is used to instantiate a derived class type of the corresponding function parameter type: @@ -7909,7 +7929,7 @@ index 63baaaf8..91b148f9 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 1b18d89d..45b25596 100644 +index bb641003..dd7d639f 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -7386,7 +7386,6 @@ and visible to other threads. @@ -8049,7 +8069,7 @@ index 1b18d89d..45b25596 100644 \item If \tcode{launch::async} is set in \tcode{policy}, calls diff --git a/source/time.tex b/source/time.tex -index c37f5bba..f52ab7f4 100644 +index fd854a49..175e3ab5 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2074,7 +2074,6 @@ return os << s.str(); @@ -8199,7 +8219,7 @@ index c37f5bba..f52ab7f4 100644 \fmtnontermdef{chrono-format-spec}\br \opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs} diff --git a/source/utilities.tex b/source/utilities.tex -index 6febc3c3..78087710 100644 +index dcf80d40..58252722 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -270,7 +270,6 @@ Exchanges values stored in two locations. @@ -8226,7 +8246,7 @@ index 6febc3c3..78087710 100644 \begin{codeblock} noexcept(x.swap(y)) \end{codeblock} -@@ -10699,7 +10696,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; +@@ -10701,7 +10698,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8234,7 +8254,7 @@ index 6febc3c3..78087710 100644 \begin{itemize} \item If \tcode{I < pos}, the new value is zero; -@@ -10724,7 +10720,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; +@@ -10726,7 +10722,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8242,7 +8262,7 @@ index 6febc3c3..78087710 100644 \begin{itemize} \item If \tcode{pos >= N - I}, the new value is zero; -@@ -11450,7 +11445,6 @@ namespace std { +@@ -11452,7 +11447,6 @@ namespace std { If a \Cpp{} program wants to have a by-element addition of two vectors \tcode{a} and \tcode{b} containing \tcode{double} and put the result into \tcode{a}, it can do: @@ -8250,7 +8270,7 @@ index 6febc3c3..78087710 100644 \begin{codeblock} transform(a.begin(), a.end(), b.begin(), a.begin(), plus()); \end{codeblock} -@@ -14929,7 +14923,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; +@@ -14931,7 +14925,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; The header provides partial specializations of \tcode{function_ref} for each combination of the possible replacements of the placeholders \cv{} and \placeholder{noex} where: @@ -8262,7 +8282,7 @@ index 6febc3c3..78087710 100644 2.43.0 -From c92248534f4ad6851524ecd28625433427575860 Mon Sep 17 00:00:00 2001 +From 434cbc5df3741cf4f767d724f6e4dee48be4fd36 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 Subject: [PATCH 6/9] Use monospace font for code in figures. @@ -8409,7 +8429,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From 0019625753aa4d51eb92af8b1a67721d088d6d45 Mon Sep 17 00:00:00 2001 +From d1c1e42329a61c4367c89657eb0aed985a0aecee Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 Subject: [PATCH 7/9] [uaxid] Mark code that's not to be highlighted. @@ -8437,31 +8457,31 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From cfcee64febebd71b55588c5a211edb800d558450 Mon Sep 17 00:00:00 2001 +From 80f1e2bfcf9b2f760c29cddfdd4d1875bac2e82a Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 Subject: [PATCH 8/9] Use cxxdraft-htmlgen macros more. --- - source/algorithms.tex | 180 +++++++++++++------------- + source/algorithms.tex | 180 +++++++++++++-------------- source/concepts.tex | 4 +- source/diagnostics.tex | 18 ++- source/exec.tex | 18 +-- source/future.tex | 10 +- - source/iostreams.tex | 28 ++-- - source/lib-intro.tex | 28 ++-- + source/iostreams.tex | 28 ++--- + source/lib-intro.tex | 28 ++--- source/memory.tex | 46 +++---- - source/meta.tex | 282 ++++++++++++++++++++--------------------- + source/meta.tex | 274 ++++++++++++++++++++--------------------- source/numerics.tex | 38 +++--- source/strings.tex | 10 +- - source/support.tex | 14 +- - source/threads.tex | 110 ++++++++-------- + source/support.tex | 14 +-- + source/threads.tex | 110 ++++++++--------- source/time.tex | 66 +++++----- source/utilities.tex | 136 ++++++++++---------- - 15 files changed, 490 insertions(+), 498 deletions(-) + 15 files changed, 486 insertions(+), 494 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 3af19872..42bc0626 100644 +index efe3f977..c196ba1b 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -9033,7 +9053,7 @@ index 3af19872..42bc0626 100644 \item For all overloads, in the ranges \crange{first}{last} diff --git a/source/concepts.tex b/source/concepts.tex -index 0bfd8612..b166e3a9 100644 +index 6663d0e0..53d43b5d 100644 --- a/source/concepts.tex +++ b/source/concepts.tex @@ -495,7 +495,7 @@ template @@ -9121,7 +9141,7 @@ index e653b348..2adaa033 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 22eb3485..587fdbf0 100644 +index ed0a8d5c..f4136f9b 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9160,7 +9180,7 @@ index 22eb3485..587fdbf0 100644 \\ \end{floattable} diff --git a/source/future.tex b/source/future.tex -index ab7c724e..c69ae9e5 100644 +index 4957e2c3..6d5a4e97 100644 --- a/source/future.tex +++ b/source/future.tex @@ -359,7 +359,7 @@ template struct is_pod; @@ -9209,7 +9229,7 @@ index ab7c724e..c69ae9e5 100644 \begin{itemize} \item for the first specialization, \tcode{add_volatile_t}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index a34a3f84..0ff3588e 100644 +index 6058ccab..7586f5cb 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -1681,10 +1681,10 @@ An \tcode{fpos} type specifies file position information. @@ -9290,7 +9310,7 @@ index a34a3f84..0ff3588e 100644 \pnum If an iterator of type \tcode{directory_iterator} reports an error or diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 76ea7917..7712e342 100644 +index b668fdac..d01e3aa2 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -1862,7 +1862,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. @@ -9399,7 +9419,7 @@ index 76ea7917..7712e342 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index deb35ac5..d574546f 100644 +index f2964f90..eddd5794 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1273,7 +1273,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type @@ -9572,7 +9592,7 @@ index deb35ac5..d574546f 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index e6dedae6..b2188af9 100644 +index 7541a534..e7f1ce51 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -95,12 +95,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -9606,121 +9626,121 @@ index e6dedae6..b2188af9 100644 the arguments to the template \tcode{integral_constant} determined by the requirements for the particular relationship being described. The member names of the base characteristic shall not be hidden and shall be -@@ -307,17 +307,17 @@ namespace std { +@@ -306,17 +306,17 @@ namespace std { template struct add_cv; template -- using @\libglobal{remove_const_t}@ = typename remove_const::type; -+ using @\libglobal{remove_const_t}@ = typename @\libglobalref{remove_const}@::type; +- using @\libglobal{remove_const_t}@ = remove_const::type; ++ using @\libglobal{remove_const_t}@ = @\libglobalref{remove_const}@::type; template -- using @\libglobal{remove_volatile_t}@ = typename remove_volatile::type; -+ using @\libglobal{remove_volatile_t}@ = typename @\libglobalref{remove_volatile}@::type; +- using @\libglobal{remove_volatile_t}@ = remove_volatile::type; ++ using @\libglobal{remove_volatile_t}@ = @\libglobalref{remove_volatile}@::type; template -- using @\libglobal{remove_cv_t}@ = typename remove_cv::type; -+ using @\libglobal{remove_cv_t}@ = typename @\libglobalref{remove_cv}@::type; +- using @\libglobal{remove_cv_t}@ = remove_cv::type; ++ using @\libglobal{remove_cv_t}@ = @\libglobalref{remove_cv}@::type; template -- using @\libglobal{add_const_t}@ = typename add_const::type; -+ using @\libglobal{add_const_t}@ = typename @\libglobalref{add_const}@::type; +- using @\libglobal{add_const_t}@ = add_const::type; ++ using @\libglobal{add_const_t}@ = @\libglobalref{add_const}@::type; template -- using @\libglobal{add_volatile_t}@ = typename add_volatile::type; -+ using @\libglobal{add_volatile_t}@ = typename @\libglobalref{add_volatile}@::type; +- using @\libglobal{add_volatile_t}@ = add_volatile::type; ++ using @\libglobal{add_volatile_t}@ = @\libglobalref{add_volatile}@::type; template -- using @\libglobal{add_cv_t}@ = typename add_cv::type; -+ using @\libglobal{add_cv_t}@ = typename @\libglobalref{add_cv}@::type; +- using @\libglobal{add_cv_t}@ = add_cv::type; ++ using @\libglobal{add_cv_t}@ = @\libglobalref{add_cv}@::type; // \ref{meta.trans.ref}, reference modifications template struct remove_reference; -@@ -325,38 +325,38 @@ namespace std { +@@ -324,38 +324,38 @@ namespace std { template struct add_rvalue_reference; template -- using @\libglobal{remove_reference_t}@ = typename remove_reference::type; -+ using @\libglobal{remove_reference_t}@ = typename @\libglobalref{remove_reference}@::type; +- using @\libglobal{remove_reference_t}@ = remove_reference::type; ++ using @\libglobal{remove_reference_t}@ = @\libglobalref{remove_reference}@::type; template -- using @\libglobal{add_lvalue_reference_t}@ = typename add_lvalue_reference::type; -+ using @\libglobal{add_lvalue_reference_t}@ = typename @\libglobalref{add_lvalue_reference}@::type; +- using @\libglobal{add_lvalue_reference_t}@ = add_lvalue_reference::type; ++ using @\libglobal{add_lvalue_reference_t}@ = @\libglobalref{add_lvalue_reference}@::type; template -- using @\libglobal{add_rvalue_reference_t}@ = typename add_rvalue_reference::type; -+ using @\libglobal{add_rvalue_reference_t}@ = typename @\libglobalref{add_rvalue_reference}@::type; +- using @\libglobal{add_rvalue_reference_t}@ = add_rvalue_reference::type; ++ using @\libglobal{add_rvalue_reference_t}@ = @\libglobalref{add_rvalue_reference}@::type; // \ref{meta.trans.sign}, sign modifications template struct make_signed; template struct make_unsigned; template -- using @\libglobal{make_signed_t}@ = typename make_signed::type; -+ using @\libglobal{make_signed_t}@ = typename @\libglobalref{make_signed}@::type; +- using @\libglobal{make_signed_t}@ = make_signed::type; ++ using @\libglobal{make_signed_t}@ = @\libglobalref{make_signed}@::type; template -- using @\libglobal{make_unsigned_t}@ = typename make_unsigned::type; -+ using @\libglobal{make_unsigned_t}@ = typename @\libglobalref{make_unsigned}@::type; +- using @\libglobal{make_unsigned_t}@ = make_unsigned::type; ++ using @\libglobal{make_unsigned_t}@ = @\libglobalref{make_unsigned}@::type; // \ref{meta.trans.arr}, array modifications template struct remove_extent; template struct remove_all_extents; template -- using @\libglobal{remove_extent_t}@ = typename remove_extent::type; -+ using @\libglobal{remove_extent_t}@ = typename @\libglobalref{remove_extent}@::type; +- using @\libglobal{remove_extent_t}@ = remove_extent::type; ++ using @\libglobal{remove_extent_t}@ = @\libglobalref{remove_extent}@::type; template -- using @\libglobal{remove_all_extents_t}@ = typename remove_all_extents::type; -+ using @\libglobal{remove_all_extents_t}@ = typename @\libglobalref{remove_all_extents}@::type; +- using @\libglobal{remove_all_extents_t}@ = remove_all_extents::type; ++ using @\libglobal{remove_all_extents_t}@ = @\libglobalref{remove_all_extents}@::type; // \ref{meta.trans.ptr}, pointer modifications template struct remove_pointer; template struct add_pointer; template -- using @\libglobal{remove_pointer_t}@ = typename remove_pointer::type; -+ using @\libglobal{remove_pointer_t}@ = typename @\libglobalref{remove_pointer}@::type; +- using @\libglobal{remove_pointer_t}@ = remove_pointer::type; ++ using @\libglobal{remove_pointer_t}@ = @\libglobalref{remove_pointer}@::type; template -- using @\libglobal{add_pointer_t}@ = typename add_pointer::type; -+ using @\libglobal{add_pointer_t}@ = typename @\libglobalref{add_pointer}@::type; +- using @\libglobal{add_pointer_t}@ = add_pointer::type; ++ using @\libglobal{add_pointer_t}@ = @\libglobalref{add_pointer}@::type; // \ref{meta.trans.other}, other transformations template struct type_identity; -@@ -375,29 +375,29 @@ namespace std { +@@ -374,29 +374,29 @@ namespace std { template struct unwrap_ref_decay; template -- using @\libglobal{type_identity_t}@ = typename type_identity::type; -+ using @\libglobal{type_identity_t}@ = typename @\libglobalref{type_identity}@::type; +- using @\libglobal{type_identity_t}@ = type_identity::type; ++ using @\libglobal{type_identity_t}@ = @\libglobalref{type_identity}@::type; template -- using @\libglobal{remove_cvref_t}@ = typename remove_cvref::type; -+ using @\libglobal{remove_cvref_t}@ = typename @\libglobalref{remove_cvref}@::type; +- using @\libglobal{remove_cvref_t}@ = remove_cvref::type; ++ using @\libglobal{remove_cvref_t}@ = @\libglobalref{remove_cvref}@::type; template -- using @\libglobal{decay_t}@ = typename decay::type; -+ using @\libglobal{decay_t}@ = typename @\libglobalref{decay}@::type; +- using @\libglobal{decay_t}@ = decay::type; ++ using @\libglobal{decay_t}@ = @\libglobalref{decay}@::type; template -- using @\libglobal{enable_if_t}@ = typename enable_if::type; -+ using @\libglobal{enable_if_t}@ = typename @\libglobalref{enable_if}@::type; +- using @\libglobal{enable_if_t}@ = enable_if::type; ++ using @\libglobal{enable_if_t}@ = @\libglobalref{enable_if}@::type; template -- using @\libglobal{conditional_t}@ = typename conditional::type; -+ using @\libglobal{conditional_t}@ = typename @\libglobalref{conditional}@::type; +- using @\libglobal{conditional_t}@ = conditional::type; ++ using @\libglobal{conditional_t}@ = @\libglobalref{conditional}@::type; template -- using @\libglobal{common_type_t}@ = typename common_type::type; -+ using @\libglobal{common_type_t}@ = typename @\libglobalref{common_type}@::type; +- using @\libglobal{common_type_t}@ = common_type::type; ++ using @\libglobal{common_type_t}@ = @\libglobalref{common_type}@::type; template -- using @\libglobal{common_reference_t}@ = typename common_reference::type; -+ using @\libglobal{common_reference_t}@ = typename @\libglobalref{common_reference}@::type; +- using @\libglobal{common_reference_t}@ = common_reference::type; ++ using @\libglobal{common_reference_t}@ = @\libglobalref{common_reference}@::type; template -- using @\libglobal{underlying_type_t}@ = typename underlying_type::type; -+ using @\libglobal{underlying_type_t}@ = typename @\libglobalref{underlying_type}@::type; +- using @\libglobal{underlying_type_t}@ = underlying_type::type; ++ using @\libglobal{underlying_type_t}@ = @\libglobalref{underlying_type}@::type; template -- using @\libglobal{invoke_result_t}@ = typename invoke_result::type; -+ using @\libglobal{invoke_result_t}@ = typename @\libglobalref{invoke_result}@::type; +- using @\libglobal{invoke_result_t}@ = invoke_result::type; ++ using @\libglobal{invoke_result_t}@ = @\libglobalref{invoke_result}@::type; template -- using @\libglobal{apply_result_t}@ = typename apply_result::type; -+ using @\libglobal{apply_result_t}@ = typename @\libglobalref{apply_result}@::type; +- using @\libglobal{apply_result_t}@ = apply_result::type; ++ using @\libglobal{apply_result_t}@ = @\libglobalref{apply_result}@::type; template -- using unwrap_reference_t = typename unwrap_reference::type; -+ using @\libglobal{unwrap_reference_t}@ = typename @\libglobalref{unwrap_reference}@::type; +- using @\libglobal{unwrap_reference_t}@ = unwrap_reference::type; ++ using @\libglobal{unwrap_reference_t}@ = @\libglobalref{unwrap_reference}@::type; template -- using unwrap_ref_decay_t = typename unwrap_ref_decay::type; -+ using @\libglobal{unwrap_ref_decay_t}@ = typename @\libglobalref{unwrap_ref_decay}@::type; +- using @\libglobal{unwrap_ref_decay_t}@ = unwrap_ref_decay::type; ++ using @\libglobal{unwrap_ref_decay_t}@ = @\libglobalref{unwrap_ref_decay}@::type; template using @\libglobal{void_t}@ = void; -@@ -408,191 +408,191 @@ namespace std { +@@ -407,191 +407,191 @@ namespace std { // \ref{meta.unary.cat}, primary type categories template @@ -9870,37 +9890,35 @@ index e6dedae6..b2188af9 100644 - constexpr bool @\libglobal{is_destructible_v}@ = is_destructible::value; + constexpr bool @\libglobal{is_destructible_v}@ = @\libglobalref{is_destructible}@::value; template - constexpr bool is_trivially_constructible_v = is_trivially_constructible::value; + constexpr bool @\libglobal{is_trivially_constructible_v}@ = is_trivially_constructible::value; template -- constexpr bool is_trivially_default_constructible_v + constexpr bool @\libglobal{is_trivially_default_constructible_v}@ - = is_trivially_default_constructible::value; -+ constexpr bool @\libglobal{is_trivially_default_constructible_v}@ + = @\libglobalref{is_trivially_default_constructible}@::value; template - constexpr bool is_trivially_copy_constructible_v = is_trivially_copy_constructible::value; + constexpr bool @\libglobal{is_trivially_copy_constructible_v}@ = is_trivially_copy_constructible::value; template - constexpr bool is_trivially_move_constructible_v = is_trivially_move_constructible::value; + constexpr bool @\libglobal{is_trivially_move_constructible_v}@ = is_trivially_move_constructible::value; template - constexpr bool @\libglobal{is_trivially_assignable_v}@ = is_trivially_assignable::value; + constexpr bool @\libglobal{is_trivially_assignable_v}@ = @\libglobalref{is_trivially_assignable}@::value; template - constexpr bool is_trivially_copy_assignable_v = is_trivially_copy_assignable::value; + constexpr bool @\libglobal{is_trivially_copy_assignable_v}@ = is_trivially_copy_assignable::value; template - constexpr bool is_trivially_move_assignable_v = is_trivially_move_assignable::value; + constexpr bool @\libglobal{is_trivially_move_assignable_v}@ = is_trivially_move_assignable::value; template - constexpr bool @\libglobal{is_trivially_destructible_v}@ = is_trivially_destructible::value; + constexpr bool @\libglobal{is_trivially_destructible_v}@ = @\libglobalref{is_trivially_destructible}@::value; template - constexpr bool is_nothrow_constructible_v = is_nothrow_constructible::value; + constexpr bool @\libglobal{is_nothrow_constructible_v}@ = is_nothrow_constructible::value; template -- constexpr bool is_nothrow_default_constructible_v + constexpr bool @\libglobal{is_nothrow_default_constructible_v}@ - = is_nothrow_default_constructible::value; -+ constexpr bool @\libglobal{is_nothrow_default_constructible_v}@ + = @\libglobalref{is_nothrow_default_constructible}@::value; template constexpr bool is_nothrow_copy_constructible_v = is_nothrow_copy_constructible::value; template - constexpr bool is_nothrow_move_constructible_v = is_nothrow_move_constructible::value; + constexpr bool @\libglobal{is_nothrow_move_constructible_v}@ = is_nothrow_move_constructible::value; template - constexpr bool @\libglobal{is_nothrow_assignable_v}@ = is_nothrow_assignable::value; + constexpr bool @\libglobal{is_nothrow_assignable_v}@ = @\libglobalref{is_nothrow_assignable}@::value; @@ -9932,9 +9950,8 @@ index e6dedae6..b2188af9 100644 - constexpr bool @\libglobal{has_virtual_destructor_v}@ = has_virtual_destructor::value; + constexpr bool @\libglobal{has_virtual_destructor_v}@ = @\libglobalref{has_virtual_destructor}@::value; template -- constexpr bool has_unique_object_representations_v + constexpr bool @\libglobal{has_unique_object_representations_v}@ - = has_unique_object_representations::value; -+ constexpr bool @\libglobal{has_unique_object_representations_v}@ + = @\libglobalref{has_unique_object_representations}@::value; template constexpr bool @\libglobal{reference_constructs_from_temporary_v}@ @@ -9976,9 +9993,8 @@ index e6dedae6..b2188af9 100644 - constexpr bool @\libglobal{is_layout_compatible_v}@ = is_layout_compatible::value; + constexpr bool @\libglobal{is_layout_compatible_v}@ = @\libglobalref{is_layout_compatible}@::value; template -- constexpr bool is_pointer_interconvertible_base_of_v + constexpr bool @\libglobal{is_pointer_interconvertible_base_of_v}@ - = is_pointer_interconvertible_base_of::value; -+ constexpr bool @\libglobal{is_pointer_interconvertible_base_of_v}@ + = @\libglobalref{is_pointer_interconvertible_base_of}@::value; template - constexpr bool @\libglobal{is_invocable_v}@ = is_invocable::value; @@ -9990,9 +10006,9 @@ index e6dedae6..b2188af9 100644 - constexpr bool @\libglobal{is_nothrow_invocable_v}@ = is_nothrow_invocable::value; + constexpr bool @\libglobal{is_nothrow_invocable_v}@ = @\libglobalref{is_nothrow_invocable}@::value; template - constexpr bool is_nothrow_invocable_r_v = is_nothrow_invocable_r::value; + constexpr bool @\libglobal{is_nothrow_invocable_r_v}@ = is_nothrow_invocable_r::value; template -@@ -602,11 +602,11 @@ namespace std { +@@ -601,11 +601,11 @@ namespace std { // \ref{meta.logical}, logical operator traits template @@ -10007,7 +10023,7 @@ index e6dedae6..b2188af9 100644 // \ref{meta.member}, member relationships template -@@ -916,7 +916,7 @@ properties of a type at compile time. +@@ -920,7 +920,7 @@ properties of a type at compile time. \pnum Each of these templates shall be a @@ -10016,7 +10032,7 @@ index e6dedae6..b2188af9 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is \tcode{true}, otherwise \tcode{false_type}. -@@ -946,17 +946,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. +@@ -950,17 +950,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. \topline \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead @@ -10037,7 +10053,7 @@ index e6dedae6..b2188af9 100644 \tcode{T} is an integral type\iref{basic.fundamental} & \\ \rowsep \indexlibraryglobal{is_floating_point}% \tcode{template}\br -@@ -1185,9 +1182,8 @@ A union is a class type that +@@ -1189,9 +1186,8 @@ A union is a class type that & If \tcode{T} is a class type, \tcode{T} shall be a complete type. \\ \rowsep @@ -10048,7 +10064,7 @@ index e6dedae6..b2188af9 100644 \tcode{T} is an aggregate type\iref{dcl.init.aggr} & \tcode{T} shall be an array type, a complete type, or \cv~\keyword{void}. \\ \rowsep -@@ -1204,16 +1200,14 @@ A union is a class type that +@@ -1208,16 +1204,14 @@ A union is a class type that \tcode{T(-1) < T(0)}; otherwise, \tcode{false} & \\ \rowsep @@ -10067,7 +10083,7 @@ index e6dedae6..b2188af9 100644 \tcode{T} is an array type of known bound\iref{dcl.array} & \\ \rowsep -@@ -1717,7 +1711,7 @@ may be used to query properties of types at compile time. +@@ -1721,7 +1715,7 @@ may be used to query properties of types at compile time. \end{libreqtab2a} \pnum @@ -10076,7 +10092,7 @@ index e6dedae6..b2188af9 100644 base characteristic of \tcode{integral_constant}. \pnum -@@ -1753,7 +1747,7 @@ may be used to query relationships between types at compile time. +@@ -1757,7 +1751,7 @@ may be used to query relationships between types at compile time. \pnum Each of these templates shall be a @@ -10085,7 +10101,7 @@ index e6dedae6..b2188af9 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is true, otherwise \tcode{false_type}. -@@ -1774,7 +1768,7 @@ Let \tcode{\placeholdernc{ELEMS-OF}(T)} be the parameter pack +@@ -1778,7 +1772,7 @@ Let \tcode{\placeholdernc{ELEMS-OF}(T)} be the parameter pack \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead \tcode{template}\br @@ -10094,7 +10110,7 @@ index e6dedae6..b2188af9 100644 \tcode{T} and \tcode{U} name the same type with the same cv-qualifications & \\ \rowsep \indexlibraryglobal{is_base_of}% -@@ -1975,7 +1969,7 @@ type to another following some predefined rule. +@@ -1979,7 +1973,7 @@ type to another following some predefined rule. \pnum Each of the templates in \ref{meta.trans} shall be a @@ -10103,7 +10119,7 @@ index e6dedae6..b2188af9 100644 \rSec3[meta.trans.cv]{Const-volatile modifications} -@@ -2262,16 +2256,16 @@ perform other modifications of a type. +@@ -2266,16 +2260,16 @@ perform other modifications of a type. \tcode{template\br struct \libglobal{remove_cvref};} & The member typedef \tcode{type} denotes @@ -10125,7 +10141,7 @@ index e6dedae6..b2188af9 100644 \begin{tailnote} This behavior is similar to the lvalue-to-rvalue\iref{conv.lval}, array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} -@@ -2377,7 +2371,7 @@ argument passing. +@@ -2381,7 +2375,7 @@ argument passing. \tcode{template} \tcode{struct \libglobal{unwrap_reference};} & If \tcode{T} is @@ -10134,7 +10150,7 @@ index e6dedae6..b2188af9 100644 the member typedef \tcode{type} of \tcode{unwrap_reference} denotes \tcode{X\&}, otherwise \tcode{type} denotes \tcode{T}. \\ \rowsep -@@ -2385,7 +2379,7 @@ argument passing. +@@ -2389,7 +2383,7 @@ argument passing. \tcode{template} \tcode{\libglobal{unwrap_ref_decay};} & The member typedef \tcode{type} of \tcode{unwrap_ref_decay} @@ -10143,7 +10159,7 @@ index e6dedae6..b2188af9 100644 \end{libreqtab2a} \pnum -@@ -2403,7 +2397,7 @@ when the header \tcode{}\iref{functional.syn} is included. +@@ -2407,7 +2401,7 @@ when the header \tcode{}\iref{functional.syn} is included. Let: \begin{itemize} \item \tcode{\placeholdernc{CREF}(A)} be @@ -10152,7 +10168,7 @@ index e6dedae6..b2188af9 100644 \item \tcode{\placeholdernc{XREF}(A)} denote a unary alias template \tcode{T} such that \tcode{T} denotes the same type as \tcode{U} with the addition of \tcode{A}'s cv and reference qualifiers, for a non-reference cv-unqualified -@@ -2428,15 +2422,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: +@@ -2432,15 +2426,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: \placeholdernc{COPYCV}(\brk{}Y, X) \&)} if that type exists and is a reference type. \item Otherwise, let \tcode{C} be @@ -10171,7 +10187,7 @@ index e6dedae6..b2188af9 100644 \tcode{true}, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is \tcode{D}. \item Otherwise, if \tcode{A} is an lvalue reference and \tcode{B} is an rvalue reference, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is -@@ -2735,7 +2729,7 @@ template struct negation : @\seebelow@ { }; +@@ -2739,7 +2733,7 @@ template struct negation : @\seebelow@ { }; The class template \tcode{negation} forms the logical negation of its template type argument. The type \tcode{negation} @@ -10181,7 +10197,7 @@ index e6dedae6..b2188af9 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index accd8c6d..f9579b68 100644 +index 56017d80..7d576b59 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul @@ -10305,7 +10321,7 @@ index accd8c6d..f9579b68 100644 whose \tcode{value_type} is the template parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. diff --git a/source/strings.tex b/source/strings.tex -index e0a6f1ca..e654c723 100644 +index 099fd5f3..d906a754 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -238,10 +238,10 @@ using state_type = @\seebelow@; @@ -10333,7 +10349,7 @@ index e0a6f1ca..e654c723 100644 meets the constexpr iterator requirements\iref{iterator.requirements.general}, whose \tcode{value_type} is the template parameter \tcode{charT}. diff --git a/source/support.tex b/source/support.tex -index 43f3c9f5..047f9904 100644 +index 54ed6da8..9158f6fb 100644 --- a/source/support.tex +++ b/source/support.tex @@ -3657,11 +3657,11 @@ namespace std { @@ -10372,7 +10388,7 @@ index 43f3c9f5..047f9904 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index 45b25596..c897fccc 100644 +index dd7d639f..277d15be 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10768,7 +10784,7 @@ index 45b25596..c897fccc 100644 \pnum \tcode{T} may be an incomplete type. diff --git a/source/time.tex b/source/time.tex -index f52ab7f4..c0a4aaf9 100644 +index 175e3ab5..dec0fb9f 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1039,13 +1039,13 @@ SI definition is a measure of the quality of implementation. @@ -10981,7 +10997,7 @@ index f52ab7f4..c0a4aaf9 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index 78087710..722b6077 100644 +index 58252722..e9676caf 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -258,9 +258,9 @@ template @@ -11041,7 +11057,7 @@ index 78087710..722b6077 100644 \pnum \begin{note} -@@ -4002,7 +4002,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); +@@ -4004,7 +4004,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11050,7 +11066,7 @@ index 78087710..722b6077 100644 \pnum \effects -@@ -4059,7 +4059,7 @@ using const_iterator = @\impdef@; +@@ -4061,7 +4061,7 @@ using const_iterator = @\impdef@; \pnum These types model \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, @@ -11059,7 +11075,7 @@ index 78087710..722b6077 100644 meet the requirements for constexpr iterators\iref{iterator.requirements.general}, with value type \tcode{remove_cv_t}. The reference type is \tcode{T\&} for \tcode{iterator} and -@@ -5044,7 +5044,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5046,7 +5046,7 @@ template constexpr bool operator==(const optional& x, const The expression \tcode{*x == *y} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11068,7 +11084,7 @@ index 78087710..722b6077 100644 \end{note} \pnum -@@ -5235,7 +5235,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5237,7 +5237,7 @@ template constexpr bool operator==(const optional& x, const The expression \tcode{*x == v} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11077,7 +11093,7 @@ index 78087710..722b6077 100644 \end{note} \pnum -@@ -5730,7 +5730,7 @@ is nested within\iref{intro.object} the +@@ -5732,7 +5732,7 @@ is nested within\iref{intro.object} the \pnum All types in \tcode{Types} shall meet @@ -11086,7 +11102,7 @@ index 78087710..722b6077 100644 \pnum A program that instantiates the definition of \tcode{variant} with -@@ -6410,7 +6410,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); +@@ -6412,7 +6412,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11095,7 +11111,7 @@ index 78087710..722b6077 100644 \pnum \effects -@@ -6455,7 +6455,7 @@ template struct variant_size; +@@ -6457,7 +6457,7 @@ template struct variant_size; \begin{itemdescr} \pnum All specializations of \tcode{variant_size} meet the @@ -11104,7 +11120,7 @@ index 78087710..722b6077 100644 with a base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -6468,7 +6468,7 @@ template struct variant_size; +@@ -6470,7 +6470,7 @@ template struct variant_size; \pnum Let \tcode{VS} denote \tcode{variant_size} of the cv-unqualified type \tcode{T}. Then each specialization of the template meets the @@ -11113,7 +11129,7 @@ index 78087710..722b6077 100644 base characteristic of \tcode{integral_constant}. \end{itemdescr} -@@ -6488,7 +6488,7 @@ template struct variant_alternative; +@@ -6490,7 +6490,7 @@ template struct variant_alternative; \pnum Let \tcode{VA} denote \tcode{variant_alternative} of the cv-unqualified type \tcode{T}. Then each specialization of the template @@ -11122,7 +11138,7 @@ index 78087710..722b6077 100644 member typedef \tcode{type} that names the type \tcode{add_const_t}. \end{itemdescr} -@@ -7216,7 +7216,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. +@@ -7218,7 +7218,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. \pnum \expects @@ -11131,7 +11147,7 @@ index 78087710..722b6077 100644 \pnum \effects -@@ -7244,7 +7244,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7246,7 +7246,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11140,7 +11156,7 @@ index 78087710..722b6077 100644 \pnum \effects -@@ -7277,7 +7277,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7279,7 +7279,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11149,7 +11165,7 @@ index 78087710..722b6077 100644 \pnum \effects -@@ -7362,7 +7362,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7364,7 +7364,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11158,7 +11174,7 @@ index 78087710..722b6077 100644 \pnum \effects -@@ -7397,7 +7397,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7399,7 +7399,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11167,7 +11183,7 @@ index 78087710..722b6077 100644 \pnum \effects -@@ -7441,7 +7441,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7443,7 +7443,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11176,7 +11192,7 @@ index 78087710..722b6077 100644 \pnum \effects -@@ -8147,9 +8147,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -8149,9 +8149,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum When \tcode{T} is not \cv{} \tcode{void}, it shall meet @@ -11188,7 +11204,7 @@ index 78087710..722b6077 100644 \rSec3[expected.object.cons]{Constructors} -@@ -9389,7 +9389,7 @@ template friend constexpr bool operator==(const expected& x, const T2& +@@ -9391,7 +9391,7 @@ template friend constexpr bool operator==(const expected& x, const T2& The expression \tcode{*x == v} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11197,7 +11213,7 @@ index 78087710..722b6077 100644 \end{note} \pnum -@@ -9526,7 +9526,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -9528,7 +9528,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum \tcode{E} shall meet the requirements of @@ -11206,7 +11222,7 @@ index 78087710..722b6077 100644 \rSec3[expected.void.cons]{Constructors} -@@ -11551,8 +11551,8 @@ is ill-formed. +@@ -11553,8 +11553,8 @@ is ill-formed. \indextext{call wrapper}% \indextext{call wrapper!simple}% \indextext{call wrapper!forwarding}% @@ -11217,7 +11233,7 @@ index 78087710..722b6077 100644 An \defn{argument forwarding call wrapper} is a call wrapper that can be called with an arbitrary argument list and delivers the arguments to the target object as references. -@@ -11592,7 +11592,7 @@ with references as described in the corresponding forwarding steps. +@@ -11594,7 +11594,7 @@ with references as described in the corresponding forwarding steps. \pnum \label{term.simple.call.wrapper}% A \defn{simple call wrapper} is a perfect forwarding call wrapper that meets @@ -11226,7 +11242,7 @@ index 78087710..722b6077 100644 and whose copy constructor, move constructor, and assignment operators are constexpr functions that do not throw exceptions. -@@ -11695,7 +11695,7 @@ namespace std { +@@ -11697,7 +11697,7 @@ namespace std { \end{codeblock} \pnum @@ -11235,7 +11251,7 @@ index 78087710..722b6077 100644 around a reference to an object or function of type \tcode{T}. \pnum -@@ -13149,7 +13149,7 @@ is \tcode{true}. +@@ -13151,7 +13151,7 @@ is \tcode{true}. \pnum \expects @@ -11244,7 +11260,7 @@ index 78087710..722b6077 100644 \pnum \returns -@@ -13235,10 +13235,10 @@ is \tcode{true}. +@@ -13237,10 +13237,10 @@ is \tcode{true}. \pnum \expects @@ -11257,7 +11273,7 @@ index 78087710..722b6077 100644 \pnum \returns -@@ -13304,7 +13304,7 @@ then \tcode{f != nullptr} is \tcode{true}. +@@ -13306,7 +13306,7 @@ then \tcode{f != nullptr} is \tcode{true}. \pnum \expects For each $\tcode{T}_i$ in \tcode{BoundArgs}, @@ -11266,7 +11282,7 @@ index 78087710..722b6077 100644 \pnum \returns -@@ -13349,7 +13349,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. +@@ -13351,7 +13351,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. \pnum Specializations of the \tcode{is_bind_expression} template shall meet @@ -11275,7 +11291,7 @@ index 78087710..722b6077 100644 provides a definition that has a base characteristic of \tcode{true_type} if \tcode{T} is a type returned from \tcode{bind}, otherwise it has a base characteristic of \tcode{false_type}. -@@ -13385,7 +13385,7 @@ The function template \tcode{bind} uses +@@ -13387,7 +13387,7 @@ The function template \tcode{bind} uses \pnum Specializations of the \tcode{is_placeholder} template shall meet @@ -11284,7 +11300,7 @@ index 78087710..722b6077 100644 provides a definition that has the base characteristic of \tcode{integral_constant} if \tcode{T} is the type of \tcode{std::placeholders::_\placeholder{J}}, otherwise it has a -@@ -13435,7 +13435,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> +@@ -13437,7 +13437,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> \pnum \expects \tcode{FD} and each $\tcode{TD}_i$ meet @@ -11293,7 +11309,7 @@ index 78087710..722b6077 100644 \tcode{\placeholdernc{INVOKE}(fd, $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc$, $\tcode{w}_N$)}\iref{func.require} is a valid expression for some values $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc{}$, $\tcode{w}_N$, where -@@ -13471,8 +13471,8 @@ the state entities of \tcode{g}. +@@ -13473,8 +13473,8 @@ the state entities of \tcode{g}. \pnum \begin{note} If all of \tcode{FD} and $\tcode{TD}_i$ meet @@ -11304,7 +11320,7 @@ index 78087710..722b6077 100644 \end{note} \end{itemdescr} -@@ -13541,13 +13541,13 @@ The number \tcode{\placeholder{M}} of placeholders is +@@ -13543,13 +13543,13 @@ The number \tcode{\placeholder{M}} of placeholders is \impldef{number of placeholders for bind expressions}. \pnum @@ -11321,7 +11337,7 @@ index 78087710..722b6077 100644 but if so, their copy assignment operators are constexpr functions that do not throw exceptions. -@@ -13815,7 +13815,7 @@ Let \tcode{FD} be \tcode{decay_t}. +@@ -13817,7 +13817,7 @@ Let \tcode{FD} be \tcode{decay_t}. \pnum \expects @@ -11330,7 +11346,7 @@ index 78087710..722b6077 100644 \pnum \ensures -@@ -14240,9 +14240,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14242,9 +14242,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11342,7 +11358,7 @@ index 78087710..722b6077 100644 \pnum \ensures -@@ -14292,9 +14292,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14294,9 +14294,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11354,7 +11370,7 @@ index 78087710..722b6077 100644 \pnum \ensures -@@ -14334,9 +14334,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14336,9 +14336,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11366,7 +11382,7 @@ index 78087710..722b6077 100644 \pnum \ensures -@@ -14658,8 +14658,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14660,8 +14660,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11377,7 +11393,7 @@ index 78087710..722b6077 100644 \pnum \ensures -@@ -14714,8 +14714,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14716,8 +14716,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11388,7 +11404,7 @@ index 78087710..722b6077 100644 \pnum \ensures -@@ -14760,8 +14760,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14762,8 +14762,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11399,7 +11415,7 @@ index 78087710..722b6077 100644 \pnum \ensures -@@ -15276,7 +15276,7 @@ provided to the function call operator. +@@ -15278,7 +15278,7 @@ provided to the function call operator. \pnum Each specialization of a class template specified in \ref{func.search} @@ -11408,7 +11424,7 @@ index 78087710..722b6077 100644 Template parameters named \begin{itemize} \item \tcode{ForwardIterator}, -@@ -15290,7 +15290,7 @@ Template parameters named +@@ -15292,7 +15292,7 @@ Template parameters named of templates specified in \ref{func.search} shall meet the same requirements and semantics as specified in \ref{algorithms.general}. @@ -11417,7 +11433,7 @@ index 78087710..722b6077 100644 requirements (\tref{cpp17.hash}). \pnum -@@ -15399,9 +15399,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, +@@ -15401,9 +15401,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, \pnum \expects The value type of \tcode{RandomAccessIterator1} meets @@ -11430,7 +11446,7 @@ index 78087710..722b6077 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15500,8 +15500,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, +@@ -15502,8 +15502,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, \begin{itemdescr} \pnum \expects @@ -11441,7 +11457,7 @@ index 78087710..722b6077 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15574,7 +15574,7 @@ as the default hash function. +@@ -15576,7 +15576,7 @@ as the default hash function. Each specialization of \tcode{hash} is either enabled or disabled, as described below. \begin{note} @@ -11450,7 +11466,7 @@ index 78087710..722b6077 100644 disabled specializations do not. \end{note} Each header that declares the template \tcode{hash} -@@ -15601,17 +15601,17 @@ Disabled specializations of \tcode{hash} +@@ -15603,17 +15603,17 @@ Disabled specializations of \tcode{hash} are not function object types\iref{function.objects}. \begin{note} This means that the specialization of \tcode{hash} exists, but @@ -11477,7 +11493,7 @@ index 78087710..722b6077 100644 2.43.0 -From fef073bd6ac7704e98c783ea6444c14a160f8cbf Mon Sep 17 00:00:00 2001 +From 3b3c19914f00afbebee29eddb016865e6d6ddbfa Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 Subject: [PATCH 9/9] Remove awkward \linebreaks. @@ -11495,7 +11511,7 @@ Subject: [PATCH 9/9] Remove awkward \linebreaks. 9 files changed, 68 insertions(+), 69 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 42bc0626..4fa0e6ac 100644 +index c196ba1b..4de0042f 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -7070,7 +7070,7 @@ Let: @@ -11517,7 +11533,7 @@ index 42bc0626..4fa0e6ac 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index 1e5a9871..a1ea4d5c 100644 +index 2f5de6f4..b8a1871a 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1456,7 +1456,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11574,7 +11590,7 @@ index 1e5a9871..a1ea4d5c 100644 for some type \tcode{Alloc} and \tcode{vector} is not a program-defined specialization. \end{itemdescr} -@@ -12026,7 +12025,7 @@ there is no effect. +@@ -12025,7 +12024,7 @@ there is no effect. Otherwise, let \tcode{r} be \tcode{equal_range(k)}. Constructs an object \tcode{u} of type \tcode{value_type} with \tcode{piecewise_construct, forward_as_tuple(std::forward(k)), @@ -11583,7 +11599,7 @@ index 1e5a9871..a1ea4d5c 100644 If \tcode{equal_range(u.first) == r} is \tcode{false}, the behavior is undefined. Inserts \tcode{u} into \tcode{*this}. -@@ -17513,7 +17512,7 @@ template +@@ -17511,7 +17510,7 @@ template \pnum \effects Equivalent to \tcode{flat_map(sorted_unique, key_cont, mapped_cont)} and @@ -11592,7 +11608,7 @@ index 1e5a9871..a1ea4d5c 100644 except that \tcode{\exposid{c}.keys} and \tcode{\exposid{c}.values} are constructed with uses-allocator construction\iref{allocator.uses.construction}. -@@ -17697,7 +17696,7 @@ template constexpr pair emplace(Args&&... args); +@@ -17695,7 +17694,7 @@ template constexpr pair emplace(Args&&... args); \pnum \effects Initializes an object \tcode{t} of type \tcode{pair} @@ -11601,7 +11617,7 @@ index 1e5a9871..a1ea4d5c 100644 if the map already contains an element whose key is equivalent to \tcode{t.first}, \tcode{*this} is unchanged. -@@ -17974,7 +17973,7 @@ template +@@ -17951,7 +17950,7 @@ template \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11610,7 +11626,7 @@ index 1e5a9871..a1ea4d5c 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18029,7 +18028,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. +@@ -18006,7 +18005,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11619,7 +11635,7 @@ index 1e5a9871..a1ea4d5c 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18643,14 +18642,14 @@ template +@@ -18620,14 +18619,14 @@ template \pnum \effects Equivalent to \tcode{flat_multimap(key_cont, mapped_cont)} and @@ -11636,7 +11652,7 @@ index 1e5a9871..a1ea4d5c 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -23211,7 +23210,7 @@ is representable as a value of type \tcode{index_type.} +@@ -23188,7 +23187,7 @@ is representable as a value of type \tcode{index_type.} \item If \exposid{rank_} is greater than one, then the product of @@ -11645,7 +11661,7 @@ index 1e5a9871..a1ea4d5c 100644 all values \tcode{ext.extent($k$)} with $k$ in the range of \range{1}{\exposid{rank_}} is representable as a value of type \tcode{index_type}. -@@ -23290,7 +23289,7 @@ template +@@ -23267,7 +23266,7 @@ template \item If \exposid{rank_} is greater than \tcode{1} and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11654,7 +11670,7 @@ index 1e5a9871..a1ea4d5c 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(0))) -@@ -23358,7 +23357,7 @@ is \tcode{true}. +@@ -23335,7 +23334,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11663,7 +11679,7 @@ index 1e5a9871..a1ea4d5c 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(0))) -@@ -23756,7 +23755,7 @@ Implementations should not store this value +@@ -23733,7 +23732,7 @@ Implementations should not store this value if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. \begin{note} Using \tcode{extents} @@ -11672,7 +11688,7 @@ index 1e5a9871..a1ea4d5c 100644 would achieve this. \end{note} \end{itemdescr} -@@ -23839,13 +23838,13 @@ is representable as a value of type \tcode{index_type}. +@@ -23816,13 +23815,13 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -11688,7 +11704,7 @@ index 1e5a9871..a1ea4d5c 100644 \end{itemize} \pnum -@@ -23918,7 +23917,7 @@ template +@@ -23895,7 +23894,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11697,7 +11713,7 @@ index 1e5a9871..a1ea4d5c 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -23986,7 +23985,7 @@ is \tcode{true}. +@@ -23963,7 +23962,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11706,7 +11722,7 @@ index 1e5a9871..a1ea4d5c 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) -@@ -25646,7 +25645,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, +@@ -25622,7 +25621,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, \item \tcode{stride(k) * \exposid{de-ice}($s_k$.stride)} if $S_k$ is a specialization of \tcode{strided_slice} and @@ -11715,7 +11731,7 @@ index 1e5a9871..a1ea4d5c 100644 \item otherwise, \tcode{stride($k$)}. \end{itemize} -@@ -26044,11 +26043,11 @@ is well-formed when treated as an unevaluated operand. +@@ -26020,11 +26019,11 @@ is well-formed when treated as an unevaluated operand. \begin{itemize} \item \tcode{decltype(submdspan_mapping(src.mapping(), slices...))} @@ -11729,7 +11745,7 @@ index 1e5a9871..a1ea4d5c 100644 is \tcode{true}. \item -@@ -26078,11 +26077,11 @@ all of the following are \tcode{true}: +@@ -26054,11 +26053,11 @@ all of the following are \tcode{true}: \item $0 \le \tcode{\exposid{first_}(slices...)}$ $\le \tcode{\exposid{last_}<$k$>(src.extents(), slices...)}$ @@ -11744,10 +11760,10 @@ index 1e5a9871..a1ea4d5c 100644 \item diff --git a/source/exec.tex b/source/exec.tex -index 587fdbf0..f6852a32 100644 +index f4136f9b..dc1f2a5e 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -3247,7 +3247,7 @@ except that \tcode{sch} is evaluated only once. +@@ -3244,7 +3244,7 @@ except that \tcode{sch} is evaluated only once. Let \tcode{out_sndr} and \tcode{env} be subexpressions such that \tcode{OutSndr} is \tcode{decltype((out_sndr))}. If \tcode{\exposconcept{sender-for}} is \tcode{false}, @@ -11756,7 +11772,7 @@ index 587fdbf0..f6852a32 100644 \tcode{starts_on.transform_sender(out_sndr, env)} are ill-formed; otherwise \begin{itemize} \item -@@ -3627,7 +3627,7 @@ except that \tcode{sndr} is evaluated only once. +@@ -3624,7 +3624,7 @@ except that \tcode{sndr} is evaluated only once. \pnum Let \tcode{out_sndr} and \tcode{env} be subexpressions, let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and @@ -11765,7 +11781,7 @@ index 587fdbf0..f6852a32 100644 If \tcode{\exposconcept{sender-for}} is \tcode{false}, then the expressions \tcode{on.transform_env(out_sndr, env)} and \tcode{on.transform_sender(out_sndr, env)} are ill-formed. -@@ -3769,7 +3769,7 @@ Let the expression \exposid{then-cpo} be one of +@@ -3766,7 +3766,7 @@ Let the expression \exposid{then-cpo} be one of For subexpressions \tcode{sndr} and \tcode{f}, if \tcode{decltype((sndr))} does not satisfy \libconcept{sender}, or \tcode{decltype((f))} does not satisfy \exposconcept{movable-value}, @@ -11774,7 +11790,7 @@ index 587fdbf0..f6852a32 100644 \pnum Otherwise, -@@ -4074,7 +4074,7 @@ is initialized with a callable object equivalent to the following: +@@ -4071,7 +4071,7 @@ is initialized with a callable object equivalent to the following: Let \tcode{sndr} and \tcode{env} be subexpressions, and let \tcode{Sndr} be \tcode{decltype((sndr))}. If @@ -11783,7 +11799,7 @@ index 587fdbf0..f6852a32 100644 is \tcode{false}, then the expression \tcode{\exposid{let-cpo}.transform_env(sndr, env)} is ill-formed. -@@ -4689,7 +4689,7 @@ try { +@@ -4686,7 +4686,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -11792,7 +11808,7 @@ index 587fdbf0..f6852a32 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -5732,7 +5732,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. +@@ -5729,7 +5729,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. \pnum For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. @@ -11802,7 +11818,7 @@ index 587fdbf0..f6852a32 100644 the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: diff --git a/source/memory.tex b/source/memory.tex -index d574546f..f254eca5 100644 +index eddd5794..ceadf294 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1371,7 +1371,7 @@ A \tcode{tuple} value determined as follows: @@ -11833,10 +11849,10 @@ index d574546f..f254eca5 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index b2188af9..7d111969 100644 +index e7f1ce51..2f732db9 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -2530,7 +2530,7 @@ present as follows: +@@ -2534,7 +2534,7 @@ present as follows: \item Let \tcode{R} be \tcode{\placeholdernc{COMMON-REF}(T1, T2)}. If \tcode{T1} and \tcode{T2} are reference types, \tcode{R} is well-formed, and @@ -11846,10 +11862,10 @@ index b2188af9..7d111969 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index f9579b68..55338c7e 100644 +index 7d576b59..90da4b4c 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -13803,7 +13803,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. +@@ -13807,7 +13807,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -11858,7 +11874,7 @@ index f9579b68..55338c7e 100644 \pnum \returns -@@ -14009,7 +14009,7 @@ template +@@ -14013,7 +14013,7 @@ template \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -11868,7 +11884,7 @@ index f9579b68..55338c7e 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 1ce5326c..1f3504a8 100644 +index cd516a76..74722f48 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -11889,7 +11905,7 @@ index 1ce5326c..1f3504a8 100644 \tcode{make_from_tuple(std::move(bound_args))}. The behavior is undefined if \tcode{Bound} is not \tcode{unreachable_sentinel_t} and -@@ -5915,7 +5915,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} +@@ -5916,7 +5916,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} that models \libconcept{random_access_range} and \libconcept{sized_range}, then \tcode{iota_view(*ranges::begin(E), @@ -11898,7 +11914,7 @@ index 1ce5326c..1f3504a8 100644 except that \tcode{E} is evaluated only once. \item -@@ -6391,7 +6391,7 @@ if \tcode{T} is +@@ -6392,7 +6392,7 @@ if \tcode{T} is a specialization of \tcode{subrange} that models \libconcept{random_access_range} and \libconcept{sized_range}, then @@ -11907,7 +11923,7 @@ index 1ce5326c..1f3504a8 100644 \exposid{to-unsigned-like}(ranges::distance(E) - std::min(ranges::distance(E), F)))}, except that \tcode{E} and \tcode{F} are each evaluated only once. -@@ -7443,7 +7443,7 @@ Let \placeholder{OUTERC} denote +@@ -7444,7 +7444,7 @@ Let \placeholder{OUTERC} denote let \placeholder{INNERC} denote \tcode{iterator_traits<\exposid{InnerIter}>::iterator_category}, and let \placeholder{PATTERNC} denote @@ -11916,7 +11932,7 @@ index 1ce5326c..1f3504a8 100644 \item If \begin{codeblock} -@@ -7952,7 +7952,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); +@@ -7953,7 +7953,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -11925,7 +11941,7 @@ index 1ce5326c..1f3504a8 100644 \end{itemdescr} \rSec3[range.lazy.split.outer]{Class template \tcode{lazy_split_view::\exposid{outer-iterator}}} -@@ -8263,7 +8263,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: +@@ -8264,7 +8264,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: \begin{itemize} \item \tcode{forward_iterator_tag} if @@ -11934,7 +11950,7 @@ index 1ce5326c..1f3504a8 100644 \tcode{\libconcept{derived_from}}; \item otherwise, \tcode{iterator_traits>::iterator_category}. \end{itemize} -@@ -8483,7 +8483,7 @@ constexpr explicit split_view(R&& r, range_value_t e); +@@ -8484,7 +8484,7 @@ constexpr explicit split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -11943,7 +11959,7 @@ index 1ce5326c..1f3504a8 100644 \end{itemdescr} \indexlibrarymember{begin}{split_view} -@@ -9048,7 +9048,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. +@@ -9049,7 +9049,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. \item Otherwise, if \tcode{\exposconcept{all-forward}} is modeled, @@ -11952,7 +11968,7 @@ index 1ce5326c..1f3504a8 100644 \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} -@@ -9074,14 +9074,14 @@ let \tcode{Cs} denote the pack of types +@@ -9075,14 +9075,14 @@ let \tcode{Cs} denote the pack of types \begin{itemize} \item If @@ -11970,7 +11986,7 @@ index 1ce5326c..1f3504a8 100644 \item Otherwise, if \tcode{(\libconcept{derived_from} \&\& ...)} -@@ -9533,11 +9533,11 @@ Let +@@ -9534,11 +9534,11 @@ Let %FIXME This is hard to parse. If \tcode{$i_\tcode{x}$ > $i_\tcode{y}$}, let \tcode{$d_\tcode{y}$} be @@ -11985,7 +12001,7 @@ index 1ce5326c..1f3504a8 100644 for every integer \tcode{$i$} in the range \range{$i_\tcode{y}$ + 1}{$i_\tcode{x}$} if there is any, and -@@ -9580,7 +9580,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul +@@ -9581,7 +9581,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul Let \tcode{$i_\tcode{x}$} denote \tcode{x.\exposid{it_}.index()}, \tcode{$d_\tcode{x}$} be @@ -11994,7 +12010,7 @@ index 1ce5326c..1f3504a8 100644 Let \tcode{$s$} denote the sum of the sizes of all the ranges \tcode{std::get<$i$>(x.\exposid{parent_}->\exposid{views_})} for every integer \tcode{$i$} in the range -@@ -9737,7 +9737,7 @@ is expression-equivalent to: +@@ -9738,7 +9738,7 @@ is expression-equivalent to: \begin{itemize} \item If \tcode{T} models \libconcept{contiguous_iterator}, @@ -12003,7 +12019,7 @@ index 1ce5326c..1f3504a8 100644 \item Otherwise, if \tcode{T} models \libconcept{random_access_iterator}, -@@ -13433,7 +13433,7 @@ is defined as follows: +@@ -13434,7 +13434,7 @@ is defined as follows: \item If \tcode{invoke_result_t<\exposid{maybe-const}\&, \exposid{REPEAT}(range_reference_t<\exposid{Base}>, N)...>} @@ -12012,7 +12028,7 @@ index 1ce5326c..1f3504a8 100644 \tcode{iterator_category} denotes \tcode{input_iterator_tag}. \item Otherwise, let \tcode{C} denote the type -@@ -14544,7 +14544,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ +@@ -14545,7 +14545,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ \effects Initializes \exposid{current_} with \tcode{current}, \exposid{end_} with \tcode{ranges::end(parent->\exposid{base_})}, @@ -12022,7 +12038,7 @@ index 1ce5326c..1f3504a8 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index c897fccc..e2d183ce 100644 +index 277d15be..63ce5eb2 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -3528,7 +3528,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, @@ -12062,7 +12078,7 @@ index c897fccc..e2d183ce 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index 722b6077..45444ce6 100644 +index e9676caf..a9cda918 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -2062,7 +2062,7 @@ equals \tcode{tuple_size_v>}, @@ -12083,7 +12099,7 @@ index 722b6077..45444ce6 100644 \end{itemdescr} \indexlibrarymember{common_type}{tuple}% -@@ -4067,7 +4067,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and +@@ -4069,7 +4069,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and \pnum All requirements on container iterators\iref{container.reqmts} apply to @@ -12092,7 +12108,7 @@ index 722b6077..45444ce6 100644 \pnum Any operation that initializes or destroys the contained value of an optional object invalidates all iterators into that object. -@@ -8975,7 +8975,7 @@ constexpr const T&& value() const &&; +@@ -8977,7 +8977,7 @@ constexpr const T&& value() const &&; \pnum \mandates \tcode{is_copy_constructible_v} is \tcode{true} and @@ -12101,7 +12117,7 @@ index 722b6077..45444ce6 100644 \pnum \returns -@@ -14988,7 +14988,7 @@ that models \libconcept{copyable}. +@@ -14990,7 +14990,7 @@ that models \libconcept{copyable}. \pnum Within \ref{func.wrap.ref}, \tcode{\placeholder{call-args}} is an argument pack with elements such that diff --git a/lastbuild.sig b/lastbuild.sig index a17bd2b562..888855fe2a 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ -htmlgen d76984e59af74768c3ce732b5517325f10807a57 -draft 2f53f313f5b1aac5f9547b39e78863e23ca9c047 -fbaf0fe6216effbdbbcc47732adc950955af5a05 htmlgen.patch +htmlgen 42983f240e7a7623a03d34a83eca3c064c920c8b +draft acab9e553267137d6ac25e5568bafce734b70257 +d8a803d15bc7d0de5e7f258de00e278cf6d12d98 htmlgen.patch From 8c093a71cc5ff4e31687839750994d3790d9be46 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Tue, 4 Nov 2025 10:47:20 -1000 Subject: [PATCH 18/36] Update --- draft | 2 +- gh-pages | 2 +- lastbuild.sig | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/draft b/draft index acab9e5532..ad99d5224a 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit acab9e553267137d6ac25e5568bafce734b70257 +Subproject commit ad99d5224a03821bcff46081195fed20f0afee31 diff --git a/gh-pages b/gh-pages index bc0adeaf28..6cf1202a52 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit bc0adeaf28bf5ace30c36e065ba975678e2ed9f2 +Subproject commit 6cf1202a5210b4d50f9916182af42c17a4511a15 diff --git a/lastbuild.sig b/lastbuild.sig index 888855fe2a..05dd9fbad2 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ htmlgen 42983f240e7a7623a03d34a83eca3c064c920c8b -draft acab9e553267137d6ac25e5568bafce734b70257 +draft ad99d5224a03821bcff46081195fed20f0afee31 d8a803d15bc7d0de5e7f258de00e278cf6d12d98 htmlgen.patch From b9c80ec75bdcd8bec7dbcff1155bdc5c4a5724f5 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Sun, 16 Nov 2025 02:30:44 -0600 Subject: [PATCH 19/36] Update --- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 1170 ++++++++++++++++++++++++------------------------- lastbuild.sig | 6 +- 4 files changed, 581 insertions(+), 599 deletions(-) diff --git a/draft b/draft index ad99d5224a..98ce5ac6fb 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit ad99d5224a03821bcff46081195fed20f0afee31 +Subproject commit 98ce5ac6fbce2338787adb9b1c842fcf8ebab37c diff --git a/gh-pages b/gh-pages index 6cf1202a52..6e7f49b523 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 6cf1202a5210b4d50f9916182af42c17a4511a15 +Subproject commit 6e7f49b52300f5cb2d5712e54af118633853b4c0 diff --git a/htmlgen.patch b/htmlgen.patch index 3615a9b5c1..d62ff3bb21 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From 5b77e7e5ad095dd8f07a9dd76c7ba863950bfffe Mon Sep 17 00:00:00 2001 +From 2568c2db9e76e19217920d94caf563bc141db727 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on @@ -10,7 +10,7 @@ Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index b9727f49..e98c0f3b 100644 +index 78a03978..7a83b32c 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -324,7 +324,7 @@ Given @@ -59,7 +59,7 @@ index b9727f49..e98c0f3b 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 180fbbac..3fda23c5 100644 +index 2bfc4057..dcaa4be0 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2924,7 +2924,7 @@ struct s2 { @@ -75,14 +75,14 @@ index 180fbbac..3fda23c5 100644 2.43.0 -From f62b2287d8cddae5e607c5497dea59fc6d4b5db6 Mon Sep 17 00:00:00 2001 +From d57679daa449937dee27051e53c6221259bb8162 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 Subject: [PATCH 2/9] Use new link macros. --- source/algorithms.tex | 4 +- - source/basic.tex | 99 ++++++++------- + source/basic.tex | 97 +++++++------- source/classes.tex | 22 ++-- source/compatibility.tex | 4 +- source/concepts.tex | 12 +- @@ -108,10 +108,10 @@ Subject: [PATCH 2/9] Use new link macros. source/threads.tex | 45 ++++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 607 insertions(+), 616 deletions(-) + 27 files changed, 606 insertions(+), 615 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index a30ec424..959658fe 100644 +index c6ea2cd6..9b4a8075 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -123,7 +123,7 @@ index a30ec424..959658fe 100644 \pnum The following subclauses describe components for -@@ -10222,7 +10222,7 @@ In either case, twice as many projections as comparisons. +@@ -10224,7 +10224,7 @@ In either case, twice as many projections as comparisons. \pnum \remarks @@ -133,7 +133,7 @@ index a30ec424..959658fe 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index e98c0f3b..1c0a6cfc 100644 +index 7a83b32c..4d017537 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -162,7 +162,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -253,15 +253,6 @@ index e98c0f3b..1c0a6cfc 100644 \item is not odr-used in any definition of \tcode{D}, and \item has the same value in all definitions of \tcode{D}, \end{itemize} -@@ -2886,7 +2885,7 @@ consteval int bad_splice(std::meta::info v) { - \pnum - \indextext{program}% - \indextext{linking}% --A \defn{program} consists of one or more translation units\iref{lex.separate} -+A \defn{program} consists of one or more \deflinkx{translation units}{translation unit}{lex.separate} - linked together. A translation unit consists - of a sequence of declarations. - @@ -2919,7 +2918,7 @@ are attached to the same module. \indextext{linkage!\idxcode{inline} and}% \indextext{\idxcode{inline}!linkage of}% @@ -471,7 +462,7 @@ index e98c0f3b..1c0a6cfc 100644 a \grammarterm{constant-expression}\iref{expr.const}, \item diff --git a/source/classes.tex b/source/classes.tex -index b3ff3a98..7b286507 100644 +index 6f1e64c9..259175cd 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -275,10 +275,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: @@ -536,7 +527,7 @@ index b3ff3a98..7b286507 100644 of struct type \tcode{T1}, it is permitted to read a non-static data member \tcode{m} of another union member of struct type \tcode{T2} provided \tcode{m} is part of the common initial sequence of \tcode{T1} and \tcode{T2}; -@@ -2306,7 +2306,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation +@@ -2303,7 +2303,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation An array of class type contains several subobjects for each of which the destructor is invoked. \end{note} @@ -545,7 +536,7 @@ index b3ff3a98..7b286507 100644 if it is invoked or as specified in~\ref{expr.new}, \ref{stmt.return}, \ref{dcl.init.aggr}, \ref{class.base.init}, and~\ref{except.throw}. -@@ -6407,7 +6407,7 @@ associated with a \grammarterm{try-block} (if there is one), +@@ -6404,7 +6404,7 @@ associated with a \grammarterm{try-block} (if there is one), the copy-initialization of the exception object can be omitted by constructing $o$ directly into the exception object; @@ -618,10 +609,10 @@ index 3cbd110a..1722b95c 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index e197ec6e..ed136ec9 100644 +index d2db2ed3..71b577a1 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -6116,14 +6116,14 @@ namespace std { +@@ -6121,14 +6121,14 @@ namespace std { \indextext{\idxcode{array}!contiguous storage}% The header \libheader{array} defines a class template for storing fixed-size sequences of objects. @@ -638,7 +629,7 @@ index e197ec6e..ed136ec9 100644 list-initialized with up to \tcode{N} elements whose types are convertible to \tcode{T}. -@@ -6134,8 +6134,8 @@ of a container\iref{container.reqmts} and +@@ -6139,8 +6139,8 @@ of a container\iref{container.reqmts} and of a reversible container\iref{container.rev.reqmts}, except that a default constructed \tcode{array} object is not empty if $\tcode{N} > 0$. @@ -649,7 +640,7 @@ index e197ec6e..ed136ec9 100644 Descriptions are provided here only for operations on \tcode{array} that are not described in one of these tables and -@@ -6145,13 +6145,13 @@ for operations where there is additional semantic information. +@@ -6150,13 +6150,13 @@ for operations where there is additional semantic information. \tcode{array} is a structural type\iref{term.structural.type} if \tcode{T} is a structural type. Two values \tcode{a1} and \tcode{a2} of type \tcode{array} @@ -665,7 +656,7 @@ index e197ec6e..ed136ec9 100644 \indexlibraryglobal{array}% \indexlibrarymember{array}{begin}% -@@ -6474,7 +6474,7 @@ namespace std { +@@ -6479,7 +6479,7 @@ namespace std { A \indexlibraryglobal{deque}% \tcode{deque} @@ -674,7 +665,7 @@ index e197ec6e..ed136ec9 100644 In addition, it supports constant time insert and erase operations at the beginning or the end; insert and erase in the middle take linear time. That is, a deque is especially optimized for pushing and popping elements at the beginning and end. -@@ -7139,7 +7139,7 @@ namespace std { +@@ -7144,7 +7144,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{forward_list} if the allocator meets the @@ -683,7 +674,7 @@ index e197ec6e..ed136ec9 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{forward_list} is referenced. -@@ -7723,7 +7723,7 @@ predicate. +@@ -7728,7 +7728,7 @@ predicate. \pnum \remarks @@ -692,7 +683,7 @@ index e197ec6e..ed136ec9 100644 \end{itemdescr} \indexlibrarymember{unique}{forward_list}% -@@ -7828,7 +7828,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( +@@ -7833,7 +7833,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( \pnum \remarks @@ -701,7 +692,7 @@ index e197ec6e..ed136ec9 100644 \end{itemdescr} \indexlibrarymember{reverse}{forward_list}% -@@ -9028,7 +9028,7 @@ A +@@ -9033,7 +9033,7 @@ A is a sequence container that supports bidirectional iterators and allows constant time insert and erase operations anywhere within the sequence, with storage management handled @@ -710,7 +701,7 @@ index e197ec6e..ed136ec9 100644 fast random access to list elements is not supported, but many algorithms only need sequential access anyway. -@@ -9204,7 +9204,7 @@ namespace std { +@@ -9209,7 +9209,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{list} if the allocator meets the @@ -719,7 +710,7 @@ index e197ec6e..ed136ec9 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{list} is referenced. -@@ -9617,7 +9617,7 @@ applications of the corresponding predicate. +@@ -9622,7 +9622,7 @@ applications of the corresponding predicate. \pnum \remarks @@ -728,7 +719,7 @@ index e197ec6e..ed136ec9 100644 \end{itemdescr} \indexlibrarymember{unique}{list}% -@@ -9740,7 +9740,7 @@ comparisons, where $N$ is \tcode{size()}. +@@ -9745,7 +9745,7 @@ comparisons, where $N$ is \tcode{size()}. \pnum \remarks @@ -737,7 +728,7 @@ index e197ec6e..ed136ec9 100644 \end{itemdescr} \rSec3[list.erasure]{Erasure} -@@ -9848,7 +9848,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, +@@ -9853,7 +9853,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, of a sequence container, including most of the optional sequence container requirements\iref{sequence.reqmts}, and, for an element type other than \tcode{bool}, @@ -746,7 +737,7 @@ index e197ec6e..ed136ec9 100644 The exceptions are the \tcode{push_front}, \tcode{prepend_range}, \tcode{pop_front}, and \tcode{emplace_front} member functions, which are not provided. Descriptions are provided here only for operations on \tcode{vector} -@@ -9986,7 +9986,7 @@ namespace std { +@@ -9991,7 +9991,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{vector} if the allocator meets the @@ -755,7 +746,7 @@ index e197ec6e..ed136ec9 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{vector} is referenced. -@@ -10579,7 +10579,7 @@ Unless described below, all operations have the same requirements and +@@ -10584,7 +10584,7 @@ Unless described below, all operations have the same requirements and semantics as the \tcode{vector} primary template, except that operations dealing with the \tcode{bool} value type map to bit values in the container storage and @@ -764,7 +755,7 @@ index e197ec6e..ed136ec9 100644 is not used to construct these values. \pnum -@@ -15653,9 +15653,9 @@ and +@@ -15659,9 +15659,9 @@ and can be used to instantiate \tcode{queue}. In particular, @@ -776,7 +767,7 @@ index e197ec6e..ed136ec9 100644 can be used. \begin{codeblock} -@@ -16010,15 +16010,15 @@ and +@@ -16016,15 +16016,15 @@ and can be used to instantiate \tcode{priority_queue}. In particular, @@ -795,7 +786,7 @@ index e197ec6e..ed136ec9 100644 \begin{codeblock} namespace std { -@@ -16563,10 +16563,10 @@ and +@@ -16569,10 +16569,10 @@ and can be used to instantiate \tcode{stack}. In particular, @@ -810,7 +801,7 @@ index e197ec6e..ed136ec9 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index b958e5a3..f41fea44 100644 +index d82e4bcb..74100ed5 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -837,7 +828,7 @@ index b958e5a3..f41fea44 100644 \end{note} \begin{example} \begin{codeblock} -@@ -1152,7 +1152,7 @@ If an inline function or variable that is attached to a named module +@@ -1150,7 +1150,7 @@ If an inline function or variable that is attached to a named module is declared in a definition domain, it shall be defined in that domain. \begin{note} @@ -846,7 +837,7 @@ index b958e5a3..f41fea44 100644 In the global module, a function defined within a class definition is implicitly inline\iref{class.mfct,class.friend}. \end{note} -@@ -1297,7 +1297,7 @@ the object referenced is a non-const object and can be modified through +@@ -1295,7 +1295,7 @@ the object referenced is a non-const object and can be modified through some other access path. \begin{note} Cv-qualifiers are supported by the type system so that they cannot be @@ -855,7 +846,7 @@ index b958e5a3..f41fea44 100644 \end{note} \pnum -@@ -1733,8 +1733,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; +@@ -1731,8 +1731,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; \item otherwise, \tcode{decltype($E$)} is the type of $E$. \end{itemize} @@ -865,7 +856,7 @@ index b958e5a3..f41fea44 100644 \begin{example} \begin{codeblock} -@@ -1932,7 +1931,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. +@@ -1930,7 +1929,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. If the \grammarterm{init-declarator-list} contains more than one \grammarterm{init-declarator}, they shall all form declarations of variables. The type of each declared variable is determined @@ -874,7 +865,7 @@ index b958e5a3..f41fea44 100644 and if the type that replaces the placeholder type is not the same in each deduction, the program is ill-formed. -@@ -2074,7 +2073,7 @@ A function declared with a return type that uses a placeholder type shall not +@@ -2072,7 +2071,7 @@ A function declared with a return type that uses a placeholder type shall not be a coroutine\iref{dcl.fct.def.coroutine}. \pnum @@ -883,7 +874,7 @@ index b958e5a3..f41fea44 100644 instantiation of an entity declared using a placeholder type, but it also does not prevent that entity from being instantiated as needed to determine its type. -@@ -2186,7 +2185,7 @@ Obtain \tcode{P} from +@@ -2184,7 +2183,7 @@ Obtain \tcode{P} from a new invented type template parameter \tcode{U} or, if the initialization is copy-list-initialization, with \tcode{std::initializer_list}. Deduce a value for \tcode{U} using the rules @@ -892,7 +883,7 @@ index b958e5a3..f41fea44 100644 where \tcode{P} is a function template parameter type and the corresponding argument is $E$. -@@ -2285,7 +2284,7 @@ in the \grammarterm{type-specifier-seq} +@@ -2283,7 +2282,7 @@ in the \grammarterm{type-specifier-seq} in the \grammarterm{new-type-id} or \grammarterm{type-id} of a \grammarterm{new-expression}\iref{expr.new}, as the \grammarterm{simple-type-specifier} @@ -901,7 +892,7 @@ index b958e5a3..f41fea44 100644 or as the \grammarterm{type-specifier} in the \grammarterm{parameter-declaration} of a \grammarterm{template-parameter}\iref{temp.param}. -@@ -4492,7 +4491,7 @@ int a; +@@ -4490,7 +4489,7 @@ int a; int f(int a, int b = a); // error: parameter \tcode{a} used as default argument typedef int I; int g(float I, int b = I(2)); // error: parameter \tcode{I} found @@ -910,7 +901,7 @@ index b958e5a3..f41fea44 100644 \end{codeblock} \end{example} A non-static member shall not be designated in a default argument unless -@@ -6205,15 +6204,15 @@ This requires a conversion +@@ -6203,15 +6202,15 @@ This requires a conversion function\iref{class.conv.fct} returning a reference type. \end{footnote} (this conversion is selected by enumerating the applicable conversion @@ -930,7 +921,7 @@ index b958e5a3..f41fea44 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7727,7 +7726,7 @@ the initializer is +@@ -7725,7 +7724,7 @@ the initializer is where \tcode{get} undergoes argument-dependent lookup\iref{basic.lookup.argdep}. In either case, \tcode{get} is interpreted as a \grammarterm{template-id}. \begin{note} @@ -939,7 +930,7 @@ index b958e5a3..f41fea44 100644 \end{note} In either case, \exposid{e} is an lvalue if the type of the entity \exposid{e} is an lvalue reference and an xvalue otherwise. -@@ -7878,7 +7877,7 @@ is not looked up and is introduced by +@@ -7876,7 +7875,7 @@ is not looked up and is introduced by the \grammarterm{enum-specifier} or \grammarterm{opaque-enum-declaration}. If the \grammarterm{enum-head-name} of an \grammarterm{opaque-enum-declaration} contains a \grammarterm{nested-name-specifier}, @@ -948,7 +939,7 @@ index b958e5a3..f41fea44 100644 \pnum \indextext{constant!enumeration}% -@@ -7960,8 +7959,9 @@ If the underlying type is fixed, the type of each enumerator +@@ -7958,8 +7957,9 @@ If the underlying type is fixed, the type of each enumerator prior to the closing brace is the underlying type and the \grammarterm{constant-expression} in the \grammarterm{enumerator-definition} @@ -960,7 +951,7 @@ index b958e5a3..f41fea44 100644 If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as -@@ -7970,8 +7970,9 @@ follows: +@@ -7968,8 +7968,9 @@ follows: \begin{itemize} \item If an initializer is specified for an enumerator, the @@ -972,7 +963,7 @@ index b958e5a3..f41fea44 100644 unscoped enumeration type, the enumerator has the underlying type of that enumeration type, otherwise it has the same type as the expression. -@@ -8043,7 +8044,7 @@ if they have the same underlying type. +@@ -8041,7 +8042,7 @@ if they have the same underlying type. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -981,7 +972,7 @@ index b958e5a3..f41fea44 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8326,7 +8327,7 @@ appertains to the namespace being defined or extended. +@@ -8324,7 +8325,7 @@ appertains to the namespace being defined or extended. Members of an inline namespace can be used in most respects as though they were members of the innermost enclosing namespace. Specifically, the inline namespace and its enclosing namespace are both added to the set of associated namespaces used in @@ -990,7 +981,7 @@ index b958e5a3..f41fea44 100644 and a \grammarterm{using-directive}\iref{namespace.udir} that names the inline namespace is implicitly inserted into the enclosing namespace as for an unnamed namespace\iref{namespace.unnamed}. Furthermore, each -@@ -9149,7 +9150,7 @@ different language linkages are distinct types even if they are +@@ -9147,7 +9148,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -999,7 +990,7 @@ index b958e5a3..f41fea44 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9479,18 +9480,18 @@ For each individual attribute, the form of the +@@ -9477,18 +9478,18 @@ For each individual attribute, the form of the \pnum In an \grammarterm{attribute-list}, an ellipsis may appear only if that \grammarterm{attribute}'s specification permits it. An \grammarterm{attribute} followed @@ -1023,7 +1014,7 @@ index b958e5a3..f41fea44 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9601,7 +9602,7 @@ declaration, the program is ill-formed. +@@ -9599,7 +9600,7 @@ declaration, the program is ill-formed. \pnum An \grammarterm{alignment-specifier} of the form \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same @@ -1032,15 +1023,15 @@ index b958e5a3..f41fea44 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9781,7 +9782,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9779,7 +9780,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} -may be applied to a null statement\iref{stmt.expr}; +may be applied to a \deflinkx{null statement}{statement!null}{stmt.expr}; - \indextext{statement!fallthrough} - such a statement is a fallthrough statement. + such a statement is a \defnadj{fallthrough}{statement}. No \grammarterm{attribute-argument-clause} shall be present. + A fallthrough statement may only appear within diff --git a/source/diagnostics.tex b/source/diagnostics.tex index be2b863f..e653b348 100644 --- a/source/diagnostics.tex @@ -1071,7 +1062,7 @@ index be2b863f..e653b348 100644 \end{note} \indexlibraryglobal{system_error}% diff --git a/source/exceptions.tex b/source/exceptions.tex -index ba2d34d0..cd476d28 100644 +index 2a4d6d7b..0072f5d6 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -184,7 +184,7 @@ try : i(f(ii)), d(id) { @@ -1153,7 +1144,7 @@ index ba2d34d0..cd476d28 100644 Exceptions thrown in destructors of objects with thread storage duration or in constructors of objects associated with non-block variables with thread storage duration are not caught by a \grammarterm{function-try-block} on the initial function of the thread. -@@ -766,7 +766,7 @@ otherwise it has a +@@ -769,7 +769,7 @@ otherwise it has a The exception specification is either defined implicitly, or defined explicitly by using a \grammarterm{noexcept-specifier} @@ -1162,7 +1153,7 @@ index ba2d34d0..cd476d28 100644 \begin{bnf} \nontermdef{noexcept-specifier}\br -@@ -806,7 +806,7 @@ in which cases the exception specification +@@ -809,7 +809,7 @@ in which cases the exception specification is as specified below and no other declaration for that function shall have a \grammarterm{noexcept-specifier}. @@ -1171,7 +1162,7 @@ index ba2d34d0..cd476d28 100644 a \grammarterm{noexcept-specifier} may be specified, but is not required. If a \grammarterm{noexcept-specifier} is specified -@@ -855,7 +855,7 @@ An expression $E$ is +@@ -858,7 +858,7 @@ An expression $E$ is \defnx{potentially-throwing}{potentially-throwing!expression} if \begin{itemize} \item @@ -1180,7 +1171,7 @@ index ba2d34d0..cd476d28 100644 whose \grammarterm{postfix-expression} has a function type, or a pointer-to-function type, -@@ -883,7 +883,7 @@ applied to a pointer to a +@@ -886,7 +886,7 @@ applied to a pointer to a polymorphic class type\iref{expr.typeid}, or \item @@ -1189,7 +1180,7 @@ index ba2d34d0..cd476d28 100644 of $E$ is potentially-throwing. \end{itemize} -@@ -936,7 +936,7 @@ the invocation of any assignment operator +@@ -939,7 +939,7 @@ the invocation of any assignment operator in the implicit definition is potentially-throwing. \pnum @@ -1198,7 +1189,7 @@ index ba2d34d0..cd476d28 100644 with no explicit \grammarterm{noexcept-specifier} has a non-throwing exception specification. -@@ -1051,9 +1051,9 @@ via an exception, or +@@ -1054,9 +1054,9 @@ via an exception, or \item% when the exception handling mechanism cannot find a handler for a thrown exception\iref{except.handle}, or @@ -1210,7 +1201,7 @@ index ba2d34d0..cd476d28 100644 including when a contract-violation handler invoked from an evaluation of a function contract assertion\iref{basic.contract.eval} associated with the function -@@ -1061,7 +1061,7 @@ exits via an exception, +@@ -1064,7 +1064,7 @@ exits via an exception, or \item% @@ -1220,7 +1211,7 @@ index ba2d34d0..cd476d28 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index 3fda23c5..f6fdd1c7 100644 +index dcaa4be0..9f91843e 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1948,10 +1939,10 @@ index 3fda23c5..f6fdd1c7 100644 Expressions that satisfy these requirements, -assuming that copy elision\iref{class.copy.elision} is not performed, +assuming that \link{copy elision}{class.copy.elision} is not performed, - are called - \indexdefn{expression!constant}% - \defnx{constant expressions}{constant expression}. -@@ -8448,9 +8450,9 @@ a temporary object of non-volatile const-qualified literal type + are called constant expressions. + \begin{note} + Constant expressions can be evaluated +@@ -8446,9 +8448,9 @@ a temporary object of non-volatile const-qualified literal type whose lifetime is extended\iref{class.temporary} to that of a variable that is usable in constant expressions at $P$, \item @@ -1963,7 +1954,7 @@ index 3fda23c5..f6fdd1c7 100644 \item a non-mutable subobject of any of the above, or \item -@@ -8541,7 +8543,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. +@@ -8539,7 +8541,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -1972,7 +1963,7 @@ index 3fda23c5..f6fdd1c7 100644 it is applied to \begin{itemize} \item -@@ -8563,7 +8565,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -8561,7 +8563,7 @@ that refers to a non-active member of a union or a subobject thereof; \item an lvalue-to-rvalue conversion that is applied to @@ -1981,7 +1972,7 @@ index 3fda23c5..f6fdd1c7 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -8936,7 +8938,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -8934,7 +8936,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte Such expressions can be used as bit-field lengths\iref{class.bit}, as enumerator initializers if the underlying type is not fixed\iref{dcl.enum}, @@ -1990,7 +1981,7 @@ index 3fda23c5..f6fdd1c7 100644 \end{note} \pnum -@@ -9437,7 +9439,7 @@ if it is: +@@ -9436,7 +9438,7 @@ if it is: a manifestly constant-evaluated expression, \item @@ -1999,7 +1990,7 @@ index 3fda23c5..f6fdd1c7 100644 \item an immediate subexpression of a \grammarterm{braced-init-list}, -@@ -9464,7 +9466,9 @@ A function or variable is +@@ -9463,7 +9465,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -2048,10 +2039,10 @@ index bba0b7f7..41979b62 100644 the \oldconcept{TransformationTrait} requirements with a base characteristic of \tcode{integral_constant}. diff --git a/source/intro.tex b/source/intro.tex -index 1b4ace6b..aa368350 100644 +index 22114ac3..0a8f75a6 100644 --- a/source/intro.tex +++ b/source/intro.tex -@@ -105,8 +105,8 @@ Reads of scalar objects are described in \ref{conv.lval} and +@@ -97,8 +97,8 @@ Reads of scalar objects are described in \ref{conv.lval} and modifications of scalar objects are described in \ref{expr.assign}, \ref{expr.post.incr}, and \ref{expr.pre.incr}. Attempts to read or modify an object of class type @@ -2062,7 +2053,7 @@ index 1b4ace6b..aa368350 100644 such invocations do not themselves constitute accesses, although they may involve accesses of scalar subobjects. \end{defnote} -@@ -254,11 +254,12 @@ implementation's output messages +@@ -246,11 +246,12 @@ implementation's output messages glvalue refers \begin{example} @@ -2079,7 +2070,7 @@ index 1b4ace6b..aa368350 100644 treated similarly. \end{example} -@@ -326,7 +327,7 @@ handler functions (see \ref{support}). +@@ -318,7 +319,7 @@ handler functions (see \ref{support}). \indexdefn{program!ill-formed}% \definition{ill-formed program}{defns.ill.formed} @@ -2088,7 +2079,7 @@ index 1b4ace6b..aa368350 100644 \indexdefn{behavior!implementation-defined}% \definition{implementation-defined behavior}{defns.impl.defined} -@@ -822,7 +823,7 @@ resulting in a contract violation. +@@ -814,7 +815,7 @@ resulting in a contract violation. \indextext{conformance requirements!classes}% \indextext{conformance requirements!class templates}% For classes and class templates, the library Clauses specify partial @@ -2097,7 +2088,7 @@ index 1b4ace6b..aa368350 100644 specified, but each implementation shall supply them to complete the definitions according to the description in the library Clauses. -@@ -839,7 +840,7 @@ the appropriate standard library named header unit\iref{using.headers}. +@@ -831,7 +832,7 @@ the appropriate standard library named header unit\iref{using.headers}. \pnum The templates, classes, functions, and objects in the library have @@ -2481,7 +2472,7 @@ index 9914bd24..ffa39eaf 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index 0e93f84e..8a72eaf5 100644 +index 8005b333..4ea5904d 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2495,7 +2486,7 @@ index 0e93f84e..8a72eaf5 100644 directive \tcode{\#include}, less any source lines skipped by any of the conditional inclusion\iref{cpp.cond} preprocessing directives, as modified by the implementation-defined behavior of any -@@ -2298,7 +2298,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) +@@ -2297,7 +2297,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) \pnum If \placeholder{L} is a \grammarterm{user-defined-character-literal}, let \placeholder{ch} be the literal without its \grammarterm{ud-suffix}. @@ -2505,7 +2496,7 @@ index 0e93f84e..8a72eaf5 100644 literal \placeholder{L} is treated as a call of the form diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index c8731821..03b19a61 100644 +index 2958545e..1c229c08 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2546,7 +2537,7 @@ index c8731821..03b19a61 100644 can be declared as \tcode{\placeholdernc{T\;A}[\placeholder{N}]}, where \tcode{\placeholder{T}} is any of the types -@@ -954,7 +954,7 @@ signatures, or for virtual destructors that can be generated by default. +@@ -959,7 +959,7 @@ signatures, or for virtual destructors that can be generated by default. \pnum \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr} do not specify the representation of classes, and intentionally @@ -2555,7 +2546,7 @@ index c8731821..03b19a61 100644 define static or non-static class members, or both, as needed to implement the semantics of the member functions specified in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr}. -@@ -1367,10 +1367,10 @@ std::vector vi; // OK +@@ -1371,10 +1371,10 @@ std::vector vi; // OK Except as noted in \ref{library} through \ref{\lastlibchapter} and \ref{depr}, the contents of each header \tcode{c\placeholder{name}} is the same as that of the corresponding header \tcode{\placeholder{name}.h} as @@ -2568,7 +2559,7 @@ index c8731821..03b19a61 100644 It is unspecified whether these names (including any overloads added in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr}) are first declared within the global namespace scope -@@ -1688,8 +1688,8 @@ a hosted implementation. +@@ -1692,8 +1692,8 @@ a hosted implementation. \pnum Subclause \ref{using} describes how a \Cpp{} program gains access to the facilities of the \Cpp{} standard library. \ref{using.headers} describes effects during translation @@ -2579,7 +2570,7 @@ index c8731821..03b19a61 100644 \rSec3[using.headers]{Headers} -@@ -1732,7 +1732,7 @@ declared in that header. No diagnostic is required. +@@ -1736,7 +1736,7 @@ declared in that header. No diagnostic is required. \rSec3[using.linkage]{Linkage} \pnum @@ -2588,7 +2579,7 @@ index c8731821..03b19a61 100644 Unless otherwise specified, objects and functions have the default \tcode{extern "C++"} linkage\iref{dcl.link}. -@@ -1766,8 +1766,8 @@ the program prior to program startup. +@@ -1770,8 +1770,8 @@ the program prior to program startup. \indextext{startup!program}% \pnum See also @@ -2599,7 +2590,7 @@ index c8731821..03b19a61 100644 \rSec2[utility.requirements]{Requirements on types and expressions} -@@ -1815,7 +1815,7 @@ rvalue of type \tcode{const T}. +@@ -1819,7 +1819,7 @@ rvalue of type \tcode{const T}. In general, a default constructor is not required. Certain container class member function signatures specify \tcode{T()} as a default argument. \tcode{T()} shall be a well-defined expression\iref{dcl.init} if one of those @@ -2608,7 +2599,7 @@ index c8731821..03b19a61 100644 \begin{oldconcepttable}{EqualityComparable}{}{cpp17.equalitycomparable} {x{1in}x{1in}p{3in}} -@@ -1941,13 +1941,13 @@ evaluated in the context described below, and +@@ -1945,13 +1945,13 @@ evaluated in the context described below, and \pnum The context in which \tcode{swap(t, u)} and \tcode{swap(u, t)} are evaluated shall @@ -2625,7 +2616,7 @@ index c8731821..03b19a61 100644 \end{itemize} \begin{note} If \tcode{T} and \tcode{U} are both fundamental types or arrays of -@@ -2050,8 +2050,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in +@@ -2054,8 +2054,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in \end{note} \pnum @@ -2637,7 +2628,7 @@ index c8731821..03b19a61 100644 had been evaluated in place of \tcode{p}. \pnum -@@ -2154,7 +2155,7 @@ as the memory allocation and deallocation primitives for it. All of the +@@ -2158,7 +2159,7 @@ as the memory allocation and deallocation primitives for it. All of the string types\iref{strings}, containers\iref{containers} (except \tcode{array} and \tcode{inplace_vector}), string buffers and string streams\iref{input.output}, and @@ -2646,7 +2637,7 @@ index c8731821..03b19a61 100644 allocators. \pnum -@@ -2980,7 +2981,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, +@@ -2984,7 +2985,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, whether or not \tcode{T} is a complete type: \begin{itemize} \item \tcode{X} is a complete type, and @@ -2655,7 +2646,7 @@ index c8731821..03b19a61 100644 other than \tcode{value_type} are complete types. \end{itemize} -@@ -2991,11 +2992,11 @@ whether or not \tcode{T} is a complete type: +@@ -2995,11 +2996,11 @@ whether or not \tcode{T} is a complete type: \pnum Subclause \ref{constraints} describes restrictions on \Cpp{} programs that use the facilities of the \Cpp{} standard library. The following subclauses specify constraints on the @@ -2671,7 +2662,7 @@ index c8731821..03b19a61 100644 \rSec3[namespace.constraints]{Namespace use} -@@ -3398,7 +3399,7 @@ are reserved for use by \Cpp{} implementations. +@@ -3402,7 +3403,7 @@ are reserved for use by \Cpp{} implementations. If a file with a name equivalent to the derived file name for one of the \Cpp{} standard library headers is not provided as part of the implementation, and a file with that name @@ -2680,7 +2671,7 @@ index c8731821..03b19a61 100644 the behavior is undefined.% \indextext{source file}% \indextext{undefined} -@@ -3569,7 +3570,7 @@ specified as being shareable without data races or the user supplies a locking m +@@ -3573,7 +3574,7 @@ specified as being shareable without data races or the user supplies a locking m \pnum If an object of a standard library type is accessed, and @@ -2689,7 +2680,7 @@ index c8731821..03b19a61 100644 does not happen before the access, or the access does not happen before the end of the object's lifetime, the behavior is undefined unless otherwise specified. -@@ -3635,7 +3636,7 @@ Every such entity shall be defined such that any header that defines it may be +@@ -3639,7 +3640,7 @@ Every such entity shall be defined such that any header that defines it may be included after any other header that also defines it\iref{basic.def.odr}. \pnum @@ -2698,7 +2689,7 @@ index c8731821..03b19a61 100644 shall include only their corresponding \Cpp{} standard library header, as described in~\ref{headers}. -@@ -3663,7 +3664,7 @@ explicitly stated otherwise. +@@ -3667,7 +3668,7 @@ explicitly stated otherwise. It is unspecified whether any non-member functions in the \Cpp{} standard library are defined as @@ -2707,7 +2698,7 @@ index c8731821..03b19a61 100644 \pnum A call to a non-member function signature -@@ -3691,7 +3692,7 @@ The phrase ``unless otherwise specified'' applies to cases such as +@@ -3695,7 +3696,7 @@ The phrase ``unless otherwise specified'' applies to cases such as the swappable with requirements\iref{swappable.requirements}. The exception for overloaded operators allows argument-dependent lookup in cases like that of @@ -2716,7 +2707,7 @@ index c8731821..03b19a61 100644 \effects \begin{codeblock} -@@ -3706,7 +3707,7 @@ return *this; +@@ -3710,7 +3711,7 @@ return *this; \pnum It is unspecified whether any member functions in the \Cpp{} standard library are defined as @@ -2725,7 +2716,7 @@ index c8731821..03b19a61 100644 \pnum For a non-virtual member function described in the \Cpp{} standard library, -@@ -3785,8 +3786,8 @@ library may be recursively reentered. +@@ -3789,8 +3790,8 @@ library may be recursively reentered. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -2736,7 +2727,7 @@ index c8731821..03b19a61 100644 Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. -@@ -3829,7 +3830,7 @@ not visible to users and are protected against data races. +@@ -3833,7 +3834,7 @@ not visible to users and are protected against data races. \pnum Unless otherwise specified, \Cpp{} standard library functions shall perform all operations solely within the current thread if those operations have effects that are @@ -2745,7 +2736,7 @@ index c8731821..03b19a61 100644 \pnum \begin{note} -@@ -3958,7 +3959,7 @@ potentially-throwing exception specification} exceptions. +@@ -3962,7 +3963,7 @@ potentially-throwing exception specification} exceptions. \begin{footnote} In particular, they can report a failure to allocate storage by throwing an exception of type @@ -2768,7 +2759,7 @@ index bdc1f3de..efd4eb00 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index 681efff4..7ccd12be 100644 +index 9d6bf6e6..65e08e2c 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -3036,7 +3027,7 @@ index 681efff4..7ccd12be 100644 Allowing arguments that can be promoted to \tcode{int} provides compatibility with C. diff --git a/source/overloading.tex b/source/overloading.tex -index 7b882855..8e2bc352 100644 +index 2340f356..6fa6a1b1 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -74,7 +74,7 @@ Overload resolution selects the function to call in seven distinct @@ -3265,7 +3256,7 @@ index 7b882855..8e2bc352 100644 and \tcode{long} diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index bbcf9a66..7d85b2e3 100644 +index bab9b3be..14e251f7 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -508,7 +508,7 @@ shall not appear in any context not mentioned in this subclause. @@ -3453,7 +3444,7 @@ index 9e1e9481..099fd5f3 100644 \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index b6f6be77..d55d8d15 100644 +index c6929d58..aac6e41e 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3726,7 +3717,7 @@ index b6f6be77..d55d8d15 100644 calls to the \tcode{setlocale} function or with calls to functions that are affected by the current C locale. The implementation shall behave as if no diff --git a/source/templates.tex b/source/templates.tex -index 627a70ec..40dcf126 100644 +index 1cc78289..e9f69fd7 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -687,7 +687,7 @@ struct A {}; @@ -3738,7 +3729,7 @@ index 627a70ec..40dcf126 100644 \grammarterm{template-id}: \begin{bnf} -@@ -1015,8 +1015,8 @@ in a \grammarterm{splice-specialization-specifier} +@@ -1016,8 +1016,8 @@ in a \grammarterm{splice-specialization-specifier} shall match the type and form specified for the corresponding parameter declared by the template in its \grammarterm{template-parameter-list}. @@ -3749,7 +3740,7 @@ index 627a70ec..40dcf126 100644 \grammarterm{template-argument}{s}. \begin{example} \begin{codeblock} -@@ -1181,7 +1181,7 @@ When a \grammarterm{simple-template-id} or +@@ -1182,7 +1182,7 @@ When a \grammarterm{simple-template-id} or \grammarterm{splice-specialization-specifier} does not designate a function, a default \grammarterm{template-argument} is @@ -3758,7 +3749,7 @@ index 627a70ec..40dcf126 100644 when the value of that default argument is needed. \begin{example} \begin{codeblock} -@@ -1193,7 +1193,7 @@ The default argument for \tcode{U} is instantiated to form the type \tcode{S 1} is not satisfied; the second operand is not checked for satisfaction. \end{example} -@@ -1747,9 +1747,9 @@ in the declaration of a constrained entity (and, therefore, can involve the +@@ -1748,9 +1748,9 @@ in the declaration of a constrained entity (and, therefore, can involve the unsubstituted template parameters of the constrained entity), called the \defn{parameter mapping}\iref{temp.constr.decl}. \begin{note} @@ -3818,7 +3809,7 @@ index 627a70ec..40dcf126 100644 \end{note} \pnum -@@ -1826,7 +1826,7 @@ first substituted into its expression. +@@ -1827,7 +1827,7 @@ first substituted into its expression. If substitution results in an invalid type or expression in the immediate context of the atomic constraint\iref{temp.deduct.general}, the constraint is not satisfied. @@ -3827,7 +3818,7 @@ index 627a70ec..40dcf126 100644 is performed if necessary, and \tcode{E} shall be a constant expression of type \tcode{bool}. The constraint is satisfied if and only if evaluation of \tcode{E} -@@ -1988,11 +1988,11 @@ A declaration's \defn{associated constraints} are defined as follows: +@@ -1989,11 +1989,11 @@ A declaration's \defn{associated constraints} are defined as follows: the declaration has no associated constraints. \item Otherwise, if there is a single introduced \grammarterm{constraint-expression}, @@ -3842,7 +3833,7 @@ index 627a70ec..40dcf126 100644 following order: \begin{itemize} \item -@@ -2089,7 +2089,7 @@ so it does match \#2. +@@ -2090,7 +2090,7 @@ so it does match \#2. \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is @@ -3851,7 +3842,7 @@ index 627a70ec..40dcf126 100644 % \begin{itemize} \item -@@ -2098,7 +2098,7 @@ the normal form of \tcode{E}. +@@ -2099,7 +2099,7 @@ the normal form of \tcode{E}. \item The normal form of an expression \tcode{E1 || E2} is @@ -3860,7 +3851,7 @@ index 627a70ec..40dcf126 100644 the normal forms of \tcode{E1} and \tcode{E2}. \item -@@ -2346,7 +2346,7 @@ the constraint of $A$ subsumes that of $B$. +@@ -2347,7 +2347,7 @@ the constraint of $A$ subsumes that of $B$. \end{itemize} % \begin{example} @@ -3869,7 +3860,7 @@ index 627a70ec..40dcf126 100644 % The constraint $A \land B$ subsumes $A$, but $A$ does not subsume $A \land B$. % -@@ -2566,7 +2566,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. +@@ -2567,7 +2567,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. \end{example} \pnum @@ -3878,7 +3869,7 @@ index 627a70ec..40dcf126 100644 \tcode{decltype($e$)} denotes a unique dependent type. Two such \grammarterm{decltype-specifier}{s} refer to the same type only if their \grammarterm{expression}{s} are -@@ -2636,8 +2636,8 @@ default arguments, +@@ -2637,8 +2637,8 @@ default arguments, \grammarterm{requires-clause}{s}, or \grammarterm{noexcept-specifier}{s}. @@ -3889,7 +3880,7 @@ index 627a70ec..40dcf126 100644 For the purpose of name lookup and instantiation, the \grammarterm{compound-statement} of an \grammarterm{expansion-statement} is considered a template definition. -@@ -2994,7 +2994,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} +@@ -2995,7 +2995,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} \pnum A local class of non-closure type shall not have member templates. @@ -3898,7 +3889,7 @@ index 627a70ec..40dcf126 100644 apply to member template names. A destructor shall not be a member template. -@@ -3221,7 +3221,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. +@@ -3222,7 +3222,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. \item In a \grammarterm{capture-list}\iref{expr.prim.lambda.capture}; the pattern is the \grammarterm{capture} without the ellipsis. @@ -3907,7 +3898,7 @@ index 627a70ec..40dcf126 100644 \grammarterm{identifier}. \item In a \grammarterm{pack-index-expression}; -@@ -3844,9 +3844,9 @@ primary template. +@@ -3845,9 +3845,9 @@ primary template. \pnum A partial specialization matches a given actual template argument list if the template arguments of the partial specialization can be @@ -3920,7 +3911,7 @@ index 627a70ec..40dcf126 100644 \begin{example} \begin{codeblock} template class A { }; // \#1 -@@ -3908,14 +3908,14 @@ of the primary template. +@@ -3909,14 +3909,14 @@ of the primary template. For two partial specializations, the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more @@ -3938,7 +3929,7 @@ index 627a70ec..40dcf126 100644 as the corresponding partial specialization. \item Each function template -@@ -4121,8 +4121,8 @@ void h(int* p) { +@@ -4122,8 +4122,8 @@ void h(int* p) { \end{example} \pnum @@ -3949,7 +3940,7 @@ index 627a70ec..40dcf126 100644 \pnum The signature of a function template -@@ -4173,7 +4173,7 @@ For example, a template type parameter can be used in the +@@ -4174,7 +4174,7 @@ For example, a template type parameter can be used in the Two expressions involving template parameters are considered \defnx{equivalent}{equivalent!expressions} if two function definitions containing the expressions would satisfy @@ -3958,7 +3949,7 @@ index 627a70ec..40dcf126 100644 to name the template parameters may differ as long as a token used to name a template parameter in one expression is replaced by another token that names the same template parameter in the other expression. -@@ -4343,8 +4343,8 @@ function template +@@ -4344,8 +4344,8 @@ function template specialization is selected to match a placement operator new\iref{basic.stc.dynamic.deallocation,expr.new}; \item @@ -3969,7 +3960,7 @@ index 627a70ec..40dcf126 100644 a function template specialization. \end{itemize} -@@ -4737,7 +4737,7 @@ A \grammarterm{concept-definition} +@@ -4738,7 +4738,7 @@ A \grammarterm{concept-definition} shall inhabit a namespace scope\iref{basic.scope.namespace}. \pnum @@ -3978,7 +3969,7 @@ index 627a70ec..40dcf126 100644 \pnum A concept is not instantiated\iref{temp.spec}. -@@ -5064,7 +5064,7 @@ was a pack expansion and the corresponding pack is empty, or +@@ -5065,7 +5065,7 @@ was a pack expansion and the corresponding pack is empty, or \item an instantiation uses a default argument or default template argument that had not been defined at the point at which the template was defined, or @@ -3987,7 +3978,7 @@ index 627a70ec..40dcf126 100644 instantiation uses \begin{itemize} \item the value of a const object of integral or unscoped enumeration type or -@@ -5317,7 +5317,7 @@ any of the expressions +@@ -5318,7 +5318,7 @@ any of the expressions or \grammarterm{braced-init-list}{s} in the \grammarterm{expression-list} @@ -3996,7 +3987,7 @@ index 627a70ec..40dcf126 100644 \item the \grammarterm{unqualified-id} is a \grammarterm{template-id} in which any of the template arguments depends -@@ -5377,7 +5377,7 @@ if it is +@@ -5378,7 +5378,7 @@ if it is \item in the definition of a class template, a nested class of a class template, a member of a class template, or a member of a nested class of a class template, @@ -4005,7 +3996,7 @@ index 627a70ec..40dcf126 100644 \item in the definition of a primary class template or a member of a primary class template, the name of the -@@ -5656,7 +5656,7 @@ used without a \grammarterm{template-argument-list}. +@@ -5657,7 +5657,7 @@ used without a \grammarterm{template-argument-list}. \end{footnote} \item a \grammarterm{pack-index-specifier}, \item denoted by \tcode{decltype(}\grammarterm{expression}{}\tcode{)}, @@ -4014,7 +4005,7 @@ index 627a70ec..40dcf126 100644 \item denoted by a \grammarterm{splice-type-specifier} in which either the \grammarterm{splice-specifier} or \grammarterm{splice-specialization-specifier} -@@ -5808,7 +5808,7 @@ see~\ref{support.types}. +@@ -5809,7 +5809,7 @@ see~\ref{support.types}. \end{note} \pnum @@ -4023,7 +4014,7 @@ index 627a70ec..40dcf126 100644 type-dependent if the terminal name of its \grammarterm{id-expression}, if any, is dependent or the expression refers to a member of the current instantiation and -@@ -5952,7 +5952,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the +@@ -5953,7 +5953,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the instantiation is value-dependent. An expression of the form \tcode{\&}\grammarterm{cast-expression} is also value-dependent if evaluating \grammarterm{cast-expression} @@ -4032,7 +4023,7 @@ index 627a70ec..40dcf126 100644 the result of the evaluation refers to a templated entity that is an object with static or thread storage duration or a member function. -@@ -6175,7 +6175,7 @@ within a translation unit. +@@ -6176,7 +6176,7 @@ within a translation unit. A specialization for any template may have points of instantiation in multiple translation units. If two different points of instantiation give a template specialization @@ -4041,7 +4032,7 @@ index 627a70ec..40dcf126 100644 the program is ill-formed, no diagnostic required. \pnum -@@ -6486,7 +6486,7 @@ of type +@@ -6487,7 +6487,7 @@ of type \pnum If a function declaration acquired its function type through @@ -4050,7 +4041,7 @@ index 627a70ec..40dcf126 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -6567,7 +6567,7 @@ X ch; // error: incomplete type \tcode{X} +@@ -6568,7 +6568,7 @@ X ch; // error: incomplete type \tcode{X} \end{example} \begin{note} Within a template declaration, @@ -4059,7 +4050,7 @@ index 627a70ec..40dcf126 100644 a local class are never considered to be entities that can be separately instantiated (this includes their default arguments, \grammarterm{noexcept-specifier}{s}, and non-static data member -@@ -6745,7 +6745,7 @@ void x() { +@@ -6746,7 +6746,7 @@ void x() { \end{example} \pnum @@ -4068,7 +4059,7 @@ index 627a70ec..40dcf126 100644 can be determined without instantiating a class template definition, it is unspecified whether that instantiation actually takes place. \begin{example} -@@ -7082,7 +7082,7 @@ If an entity is the subject of both an explicit instantiation declaration +@@ -7083,7 +7083,7 @@ If an entity is the subject of both an explicit instantiation declaration and an explicit instantiation definition in the same translation unit, the definition shall follow the declaration. An entity that is the subject of an explicit instantiation declaration and that is also used @@ -4077,7 +4068,7 @@ index 627a70ec..40dcf126 100644 in the translation unit shall be the subject of an explicit instantiation definition somewhere in the program; otherwise the program is ill-formed, no diagnostic required. -@@ -8147,7 +8147,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. +@@ -8148,7 +8148,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. In the following example, assuming a \tcode{signed char} cannot represent the value 1000, @@ -4086,7 +4077,7 @@ index 627a70ec..40dcf126 100644 would be required to convert the \grammarterm{template-argument} of type \tcode{int} to \tcode{signed char}, -@@ -8256,8 +8256,8 @@ is not a reference type: +@@ -8257,8 +8257,8 @@ is not a reference type: \item If \tcode{A} @@ -4097,7 +4088,7 @@ index 627a70ec..40dcf126 100644 \tcode{A} for type deduction; otherwise, -@@ -8265,7 +8265,7 @@ otherwise, +@@ -8266,7 +8266,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -4106,7 +4097,7 @@ index 627a70ec..40dcf126 100644 of \tcode{A} for type -@@ -8361,8 +8361,8 @@ The transformed \tcode{A} +@@ -8362,8 +8362,8 @@ The transformed \tcode{A} can be another pointer or pointer-to-member type that can be converted to the deduced \tcode{A} @@ -4117,7 +4108,7 @@ index 627a70ec..40dcf126 100644 \item If -@@ -8495,7 +8495,7 @@ void test() { +@@ -8496,7 +8496,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -4126,7 +4117,7 @@ index 627a70ec..40dcf126 100644 If there is a target, the function template's function type and the target type are used as the types of -@@ -8542,7 +8542,7 @@ is not a reference type: +@@ -8543,7 +8543,7 @@ is not a reference type: If \tcode{P} is an array type, the pointer type produced by the @@ -4135,7 +4126,7 @@ index 627a70ec..40dcf126 100644 \tcode{P} for type deduction; otherwise, -@@ -8550,7 +8550,7 @@ deduction; otherwise, +@@ -8551,7 +8551,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -4144,7 +4135,7 @@ index 627a70ec..40dcf126 100644 \tcode{P} for type deduction; otherwise, -@@ -8641,7 +8641,7 @@ after a function has been selected. +@@ -8642,7 +8642,7 @@ after a function has been selected. In the context of a call to a conversion function, the return types of the conversion function templates are used. \item @@ -4153,7 +4144,7 @@ index 627a70ec..40dcf126 100644 type is used. \end{itemize} -@@ -9157,7 +9157,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the +@@ -9158,7 +9158,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the template argument list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by $\texttt{P}_i$. @@ -4162,7 +4153,7 @@ index 627a70ec..40dcf126 100644 originally a pack expansion: \begin{itemize} \item if \tcode{P} does not contain a template argument corresponding to -@@ -9220,7 +9220,7 @@ each remaining parameter type in the parameter-type-list +@@ -9221,7 +9221,7 @@ each remaining parameter type in the parameter-type-list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by the function parameter pack. @@ -4171,7 +4162,7 @@ index 627a70ec..40dcf126 100644 originally a function parameter pack: \begin{itemize} \item if \tcode{P} does not contain a function parameter type corresponding to -@@ -9514,8 +9514,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod +@@ -9515,8 +9515,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod In a declaration whose \grammarterm{declarator-id} refers to a specialization of a function template, template argument deduction is performed to identify the specialization to which the declaration refers. Specifically, this is done @@ -4183,7 +4174,7 @@ index 627a70ec..40dcf126 100644 \tcode{operator new}\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index 166a8a24..bb641003 100644 +index db30cf64..0962d340 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4206,7 +4197,7 @@ index 166a8a24..bb641003 100644 \begin{itemdecl} m.try_lock_for(rel_time) -@@ -7330,7 +7330,7 @@ namespace std { +@@ -7267,7 +7267,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -4215,7 +4206,7 @@ index 166a8a24..bb641003 100644 An execution agent \term{owns} a mutex from the time it successfully calls one of the lock functions until it calls unlock. Mutexes can be either recursive or non-recursive, and can grant simultaneous ownership to one or many execution agents. Both -@@ -7374,7 +7374,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on +@@ -7311,7 +7311,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on a single mutex appears to occur in a single total order. \begin{note} This @@ -4224,7 +4215,7 @@ index 166a8a24..bb641003 100644 mutex. \end{note} \begin{note} -@@ -7454,7 +7454,7 @@ in the absence of contending mutex acquisitions. +@@ -7391,7 +7391,7 @@ in the absence of contending mutex acquisitions. \pnum \sync If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations @@ -4233,7 +4224,7 @@ index 166a8a24..bb641003 100644 \begin{note} Since \tcode{lock()} does not synchronize with a failed subsequent \tcode{try_lock()}, the visibility rules are weak enough that little would be -@@ -7490,7 +7490,7 @@ Releases the calling thread's ownership of the mutex. +@@ -7427,7 +7427,7 @@ Releases the calling thread's ownership of the mutex. \pnum \sync @@ -4242,7 +4233,7 @@ index 166a8a24..bb641003 100644 lock operations that obtain ownership on the same object. \pnum -@@ -7619,9 +7619,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, +@@ -7556,9 +7556,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, meet the requirements set out below. In this description, \tcode{m} denotes an object of a mutex type, \tcode{rel_time} denotes an object of an @@ -4254,7 +4245,7 @@ index 166a8a24..bb641003 100644 \begin{note} The timed mutex types meet the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. -@@ -7911,7 +7911,7 @@ Releases a shared lock on the mutex held by the calling thread. +@@ -7848,7 +7848,7 @@ Releases a shared lock on the mutex held by the calling thread. \pnum \sync @@ -4263,7 +4254,7 @@ index 166a8a24..bb641003 100644 \tcode{lock()} operations that obtain ownership on the same object. \pnum -@@ -8015,7 +8015,7 @@ meet the requirements set out below. In this description, +@@ -7952,7 +7952,7 @@ meet the requirements set out below. In this description, \tcode{rel_time} denotes an object of an instantiation of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes an object of an instantiation of @@ -4272,7 +4263,7 @@ index 166a8a24..bb641003 100644 \begin{note} The shared timed mutex types meet the \oldconcept{SharedTimedLockable} requirements\iref{thread.req.lockable.shared.timed}. -@@ -8226,7 +8226,7 @@ namespace std { +@@ -8163,7 +8163,7 @@ namespace std { \pnum An object of type \tcode{lock_guard} controls the ownership of a lockable object within a scope. A \tcode{lock_guard} object maintains ownership of a lockable @@ -4281,7 +4272,7 @@ index 166a8a24..bb641003 100644 The behavior of a program is undefined if the lockable object referenced by \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} -@@ -8299,7 +8299,7 @@ namespace std { +@@ -8236,7 +8236,7 @@ namespace std { \pnum An object of type \tcode{scoped_lock} controls the ownership of lockable objects within a scope. A \tcode{scoped_lock} object maintains ownership of lockable @@ -4290,7 +4281,7 @@ index 166a8a24..bb641003 100644 The behavior of a program is undefined if the lockable objects referenced by \tcode{pm} do not exist for the entire lifetime of the \tcode{scoped_lock} object. -@@ -9456,7 +9456,7 @@ earlier returning execution. +@@ -9393,7 +9393,7 @@ earlier returning execution. \pnum \sync For any given \tcode{once_flag}: all active executions occur in a total @@ -4299,7 +4290,7 @@ index 166a8a24..bb641003 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -11419,22 +11419,21 @@ the state object. +@@ -11356,22 +11356,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4326,7 +4317,7 @@ index 166a8a24..bb641003 100644 \begin{note} This explicitly specifies that the result of the shared state is visible in the objects that reference this state in the sense of data race -@@ -11753,8 +11752,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -11690,8 +11689,8 @@ The class template \tcode{future} defines a type for asynchronous return objects do not share their shared state with other asynchronous return objects. A default-constructed \tcode{future} object has no shared state. A \tcode{future} object with shared state can be created by @@ -4337,7 +4328,7 @@ index 166a8a24..bb641003 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -12064,7 +12063,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -12001,7 +12000,7 @@ object has no shared state. A \tcode{shared_future} object with shared state can be created by conversion from a \tcode{future} object and shares its shared state with the @@ -4346,7 +4337,7 @@ index 166a8a24..bb641003 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -12513,7 +12512,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -12450,7 +12449,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -4356,10 +4347,10 @@ index 166a8a24..bb641003 100644 the first function that successfully detects the ready status of the shared state or diff --git a/source/time.tex b/source/time.tex -index d82346f7..5f5fdcfb 100644 +index 67b1b06b..86cb2905 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -1222,7 +1222,7 @@ unless it meets all of the following conditions: +@@ -1216,7 +1216,7 @@ unless it meets all of the following conditions: are valid and each denotes a type\iref{temp.deduct}, \item the expression \tcode{T::is_steady} @@ -4368,7 +4359,7 @@ index d82346f7..5f5fdcfb 100644 \item the expression \tcode{T::now()} is well-formed when treated as an unevaluated operand. -@@ -11084,7 +11084,7 @@ The expression +@@ -11078,7 +11078,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp) \end{codeblock} @@ -4377,7 +4368,7 @@ index d82346f7..5f5fdcfb 100644 \pnum \returns -@@ -11117,7 +11117,7 @@ The expression +@@ -11111,7 +11111,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp, addressof(abbrev)) \end{codeblock} @@ -4386,7 +4377,7 @@ index d82346f7..5f5fdcfb 100644 \pnum \returns -@@ -11154,7 +11154,7 @@ from_stream(declval&>(), +@@ -11148,7 +11148,7 @@ from_stream(declval&>(), declval*>(), &offset) \end{codeblock} @@ -4395,7 +4386,7 @@ index d82346f7..5f5fdcfb 100644 \pnum \returns -@@ -11194,7 +11194,7 @@ The expression +@@ -11188,7 +11188,7 @@ The expression from_stream(declval&>(), @$F$@, tp, addressof(abbrev), &offset) \end{codeblock} @@ -4405,7 +4396,7 @@ index d82346f7..5f5fdcfb 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index a35b63a5..dcf80d40 100644 +index 5e93b63c..edaa136a 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -104,15 +104,15 @@ namespace std { @@ -4472,7 +4463,7 @@ index a35b63a5..dcf80d40 100644 each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts} with a base characteristic of \begin{codeblock} -@@ -6911,6 +6911,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); +@@ -6921,6 +6921,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); \rSec2[variant.monostate]{Class \tcode{monostate}}% \indexlibraryglobal{monostate}% @@ -4480,7 +4471,7 @@ index a35b63a5..dcf80d40 100644 \begin{itemdecl} struct monostate{}; \end{itemdecl} -@@ -7079,7 +7080,8 @@ namespace std { +@@ -7089,7 +7090,8 @@ namespace std { \end{codeblock} \pnum @@ -4494,7 +4485,7 @@ index a35b63a5..dcf80d40 100644 2.43.0 -From 89b64002fa2ceb25d44b6203ca455415eea52afa Mon Sep 17 00:00:00 2001 +From 94b6f4ff78cf2a489238876c7b142361e08397ba Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 Subject: [PATCH 3/9] Fix dubious \defnx that has see{} in it, and remove range @@ -4519,10 +4510,10 @@ index f0d3b942..90000ab2 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index 40dcf126..656d82ed 100644 +index e9f69fd7..fbeb36af 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -2085,7 +2085,6 @@ so it does match \#2. +@@ -2086,7 +2086,6 @@ so it does match \#2. \end{example} \rSec2[temp.constr.normal]{Constraint normalization} @@ -4530,7 +4521,7 @@ index 40dcf126..656d82ed 100644 \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is -@@ -2204,10 +2203,11 @@ whose parameter mapping is the identity mapping. +@@ -2205,10 +2204,11 @@ whose parameter mapping is the identity mapping. \end{itemize} \pnum @@ -4547,7 +4538,7 @@ index 40dcf126..656d82ed 100644 2.43.0 -From 8fe580026edc338785a923c6eba6f90840b3ed01 Mon Sep 17 00:00:00 2001 +From af715b9daabd5ae5d1af950bfeae669f45d25bd6 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and @@ -4560,7 +4551,7 @@ Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and 3 files changed, 352 insertions(+), 352 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex -index cd476d28..df489ab5 100644 +index 0072f5d6..88e1a340 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -135,11 +135,11 @@ does not declare a variable. @@ -4578,7 +4569,7 @@ index cd476d28..df489ab5 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index 8a72eaf5..c1386c6a 100644 +index 4ea5904d..7be0ad42 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -330,43 +330,43 @@ the numerical value has no other meaning in this context. @@ -4662,7 +4653,7 @@ index 8a72eaf5..c1386c6a 100644 \end{floattable} \pnum -@@ -606,7 +606,7 @@ given character: +@@ -605,7 +605,7 @@ given character: \item \indextext{literal!string!raw}% If the next character begins a sequence of characters that could be the prefix @@ -4671,7 +4662,7 @@ index 8a72eaf5..c1386c6a 100644 token shall be a raw string literal. Between the initial and final double quote characters of the raw string, any transformations performed in phase 2 (line splicing) are reverted; this reversion -@@ -614,7 +614,7 @@ shall apply before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting +@@ -613,7 +613,7 @@ shall apply before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting parenthesis is identified. The raw string literal is defined as the shortest sequence of characters that matches the raw-string pattern \begin{ncbnf} @@ -4680,7 +4671,7 @@ index 8a72eaf5..c1386c6a 100644 \end{ncbnf} \item Otherwise, if the next three characters are \tcode{<::} and the subsequent character -@@ -749,15 +749,15 @@ depending on the implementation. +@@ -748,15 +748,15 @@ depending on the implementation. \begin{bnf} \nontermdef{pp-number}\br digit\br @@ -4704,7 +4695,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \pnum -@@ -1185,19 +1185,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1184,19 +1184,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. \nontermdef{binary-literal}\br \terminal{0b} binary-digit\br \terminal{0B} binary-digit\br @@ -4727,7 +4718,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \begin{bnf} -@@ -1228,14 +1228,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1227,14 +1227,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{hexadecimal-digit-sequence}\br hexadecimal-digit\br @@ -4746,7 +4737,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \begin{bnf} -@@ -1250,17 +1250,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1249,17 +1249,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{unsigned-suffix} \textnormal{one of}\br @@ -4767,7 +4758,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \begin{bnf} -@@ -1299,7 +1299,7 @@ when determining the value. +@@ -1298,7 +1298,7 @@ when determining the value. \pnum The \grammarterm{hexadecimal-digit}s @@ -4776,7 +4767,7 @@ index 8a72eaf5..c1386c6a 100644 have decimal values ten through fifteen. \begin{example} The number twelve can be written \tcode{12}, \tcode{014}, -@@ -1343,7 +1343,7 @@ none & +@@ -1342,7 +1342,7 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4785,7 +4776,7 @@ index 8a72eaf5..c1386c6a 100644 \tcode{unsigned int} & \tcode{unsigned int}\\ & -@@ -1352,7 +1352,7 @@ none & +@@ -1351,7 +1351,7 @@ none & & \tcode{unsigned long long int} & \tcode{unsigned long long int}\\\hline @@ -4794,7 +4785,7 @@ index 8a72eaf5..c1386c6a 100644 \tcode{long int} & \tcode{long int}\\ & -@@ -1364,22 +1364,22 @@ none & +@@ -1363,22 +1363,22 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4822,7 +4813,7 @@ index 8a72eaf5..c1386c6a 100644 & \\\hline \tcode{z} or \tcode{Z} & -@@ -1427,12 +1427,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1426,12 +1426,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \indextext{literal!character}% \begin{bnf} \nontermdef{character-literal}\br @@ -4837,7 +4828,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \begin{bnf} -@@ -1462,12 +1462,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1461,12 +1461,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{simple-escape-sequence}\br @@ -4852,7 +4843,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \begin{bnf} -@@ -1483,21 +1483,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1482,21 +1482,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{octal-escape-sequence}\br @@ -4881,7 +4872,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \begin{bnf} -@@ -1680,42 +1680,42 @@ is supported for compatibility with \CppXIV{} and C. +@@ -1679,42 +1679,42 @@ is supported for compatibility with \CppXIV{} and C. \begin{bnf} \nontermdef{fractional-constant}\br @@ -4935,7 +4926,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \pnum -@@ -1800,8 +1800,8 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1799,8 +1799,8 @@ chosen in an \impldef{choice of larger or smaller value of \indextext{literal!string}% \begin{bnf} \nontermdef{string-literal}\br @@ -4946,7 +4937,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \begin{bnf} -@@ -1824,7 +1824,7 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1823,7 +1823,7 @@ chosen in an \impldef{choice of larger or smaller value of \begin{bnf} \nontermdef{raw-string}\br @@ -4955,7 +4946,7 @@ index 8a72eaf5..c1386c6a 100644 \end{bnf} \begin{bnf} -@@ -1911,7 +1911,7 @@ UTF-32 & +@@ -1910,7 +1910,7 @@ UTF-32 & \pnum \indextext{literal!string!raw}% @@ -4965,10 +4956,10 @@ index 8a72eaf5..c1386c6a 100644 in the prefix is a \defn{raw string literal}. The \grammarterm{d-char-sequence} serves as a delimiter. The terminating diff --git a/source/time.tex b/source/time.tex -index 5f5fdcfb..fd854a49 100644 +index 86cb2905..f1f22e40 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -2200,7 +2200,7 @@ If the parse fails to decode a valid duration, +@@ -2194,7 +2194,7 @@ If the parse fails to decode a valid duration, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{d} is not modified. If \tcode{\%Z} is used and successfully parsed, that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. @@ -4977,7 +4968,7 @@ index 5f5fdcfb..fd854a49 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -2792,9 +2792,9 @@ as specified in \ref{time.parse}. +@@ -2786,9 +2786,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -4989,7 +4980,7 @@ index 5f5fdcfb..fd854a49 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp -@@ -2985,9 +2985,9 @@ as specified in \ref{time.parse}. +@@ -2979,9 +2979,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -5001,7 +4992,7 @@ index 5f5fdcfb..fd854a49 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp -@@ -3184,9 +3184,9 @@ as specified in \ref{time.parse}. +@@ -3178,9 +3178,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -5013,7 +5004,7 @@ index 5f5fdcfb..fd854a49 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp prior to assigning that difference to \tcode{tp}. -@@ -3347,9 +3347,9 @@ as specified in \ref{time.parse}. +@@ -3341,9 +3341,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -5025,7 +5016,7 @@ index 5f5fdcfb..fd854a49 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp prior to assigning that difference to \tcode{tp}. -@@ -3454,9 +3454,9 @@ as specified in \ref{time.parse}. +@@ -3448,9 +3448,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -5037,7 +5028,7 @@ index 5f5fdcfb..fd854a49 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp prior to assigning that difference to \tcode{tp}. -@@ -3565,9 +3565,9 @@ as specified in \ref{time.parse}. +@@ -3559,9 +3559,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -5049,7 +5040,7 @@ index 5f5fdcfb..fd854a49 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4218,9 +4218,9 @@ as specified in \ref{time.parse}. +@@ -4212,9 +4212,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid day, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{d} is not modified. @@ -5061,7 +5052,7 @@ index 5f5fdcfb..fd854a49 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4532,9 +4532,9 @@ as specified in \ref{time.parse}. +@@ -4526,9 +4526,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid month, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{m} is not modified. @@ -5073,7 +5064,7 @@ index 5f5fdcfb..fd854a49 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4876,9 +4876,9 @@ as specified in \ref{time.parse}. +@@ -4870,9 +4870,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid year, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{y} is not modified. @@ -5085,7 +5076,7 @@ index 5f5fdcfb..fd854a49 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -5259,9 +5259,9 @@ as specified in \ref{time.parse}. +@@ -5253,9 +5253,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid weekday, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{wd} is not modified. @@ -5097,7 +5088,7 @@ index 5f5fdcfb..fd854a49 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -5642,9 +5642,9 @@ as specified in \ref{time.parse}. +@@ -5636,9 +5636,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid \tcode{month_day}, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{md} is not modified. @@ -5109,7 +5100,7 @@ index 5f5fdcfb..fd854a49 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -6322,9 +6322,9 @@ as specified in \ref{time.parse}. +@@ -6316,9 +6316,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid \tcode{year_month}, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{ym} is not modified. @@ -5121,7 +5112,7 @@ index 5f5fdcfb..fd854a49 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -6786,9 +6786,9 @@ as specified in \ref{time.parse}. +@@ -6780,9 +6780,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid \tcode{year_month_day}, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{ymd} is not modified. @@ -5133,7 +5124,7 @@ index 5f5fdcfb..fd854a49 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -10478,23 +10478,23 @@ according to the following syntax: +@@ -10472,23 +10472,23 @@ according to the following syntax: \begin{ncbnf} \fmtnontermdef{literal-char}\br @@ -5162,7 +5153,7 @@ index 5f5fdcfb..fd854a49 100644 \end{ncbnf} The productions -@@ -10567,11 +10567,11 @@ the result of formatting a chrono type +@@ -10561,11 +10561,11 @@ the result of formatting a chrono type does not contain time zone abbreviation and time zone offset information. If the information is available, @@ -5176,7 +5167,7 @@ index 5f5fdcfb..fd854a49 100644 conversion specifier appears in the \fmtgrammarterm{chrono-format-spec}, an exception of type \tcode{format_error} is thrown, -@@ -10587,7 +10587,7 @@ A \tcode{duration} does not contain enough information +@@ -10581,7 +10581,7 @@ A \tcode{duration} does not contain enough information to format as a \tcode{weekday}. \end{example} However, if a flag refers to a ``time of day'' @@ -5185,7 +5176,7 @@ index 5f5fdcfb..fd854a49 100644 then a specialization of \tcode{duration} is interpreted as the time of day elapsed since midnight. -@@ -10599,57 +10599,57 @@ the time of day elapsed since midnight. +@@ -10593,57 +10593,57 @@ the time of day elapsed since midnight. \hline \lhdr{Specifier} & \rhdr{Replacement} \\ \capsep \endhead @@ -5261,7 +5252,7 @@ index 5f5fdcfb..fd854a49 100644 \\ \rowsep \tcode{\%g} & The last two decimal digits of the calendar year -@@ -10660,158 +10660,158 @@ If the result is a single digit it is prefixed by \tcode{0}. +@@ -10654,158 +10654,158 @@ If the result is a single digit it is prefixed by \tcode{0}. The calendar year as a decimal number, as specified in ISO 8601-1:2019 for the week calendar. If the result is less than four digits @@ -5491,7 +5482,7 @@ index 5f5fdcfb..fd854a49 100644 \\ \end{LongTable} -@@ -10859,9 +10859,9 @@ template +@@ -10853,9 +10853,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5503,7 +5494,7 @@ index 5f5fdcfb..fd854a49 100644 an offset of \tcode{0min} is formatted. \end{itemdescr} -@@ -10874,9 +10874,9 @@ template +@@ -10868,9 +10868,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5515,7 +5506,7 @@ index 5f5fdcfb..fd854a49 100644 an offset of \tcode{0min} is formatted. If the argument represents a time during a positive leap second insertion, and if a seconds field is formatted, -@@ -10893,9 +10893,9 @@ template +@@ -10887,9 +10887,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5527,7 +5518,7 @@ index 5f5fdcfb..fd854a49 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted by a \tcode{sys_time} initialized with -@@ -10914,9 +10914,9 @@ template +@@ -10908,9 +10908,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5539,7 +5530,7 @@ index 5f5fdcfb..fd854a49 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted by a \tcode{sys_time} initialized with -@@ -10935,9 +10935,9 @@ template +@@ -10929,9 +10929,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5551,7 +5542,7 @@ index 5f5fdcfb..fd854a49 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted -@@ -10955,7 +10955,7 @@ template +@@ -10949,7 +10949,7 @@ template \begin{itemdescr} \pnum \remarks @@ -5560,7 +5551,7 @@ index 5f5fdcfb..fd854a49 100644 an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -10996,18 +10996,18 @@ passed to \tcode{formatter::format}. +@@ -10990,18 +10990,18 @@ passed to \tcode{formatter::format}. \pnum \remarks If the \fmtgrammarterm{chrono-specs} is omitted, @@ -5584,7 +5575,7 @@ index 5f5fdcfb..fd854a49 100644 and \tcode{f.offset_sec} is a null pointer value, then an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -11211,8 +11211,8 @@ except that they have an unspecified effect +@@ -11205,8 +11205,8 @@ except that they have an unspecified effect on the value returned by subsequent calls to \tcode{basic_istream<>::gcount()}. Each overload takes a format string containing ordinary characters and flags which have special meaning. @@ -5595,7 +5586,7 @@ index 5f5fdcfb..fd854a49 100644 During parsing each flag interprets characters as parts of date and time types according to~\tref{time.parse.spec}. Some flags can be modified by a width parameter -@@ -11230,7 +11230,7 @@ the information that the format flag refers to, +@@ -11224,7 +11224,7 @@ the information that the format flag refers to, A \tcode{duration} cannot represent a \tcode{weekday}. \end{example} However, if a flag refers to a ``time of day'' @@ -5604,7 +5595,7 @@ index 5f5fdcfb..fd854a49 100644 then a specialization of \tcode{duration} is parsed as the time of day elapsed since midnight. -@@ -11250,251 +11250,251 @@ is called on the \tcode{basic_istream}. +@@ -11244,251 +11244,251 @@ is called on the \tcode{basic_istream}. \hline \lhdr{Flag} & \rhdr{Parsed value} \\ \capsep \endhead @@ -5970,7 +5961,7 @@ index 5f5fdcfb..fd854a49 100644 The time zone abbreviation or name. A single word is parsed. This word can only contain characters -@@ -11502,8 +11502,8 @@ from the basic character set\iref{lex.charset} +@@ -11496,8 +11496,8 @@ from the basic character set\iref{lex.charset} that are alphanumeric, or one of \tcode{'_'}, \tcode{'/'}, \tcode{'-'}, or \tcode{'+'}. \\ \rowsep @@ -5985,7 +5976,7 @@ index 5f5fdcfb..fd854a49 100644 2.43.0 -From 5b43052734eacc81eba5f244cb9f3b3ba4d9ed71 Mon Sep 17 00:00:00 2001 +From b11f64c3108ae7406e372eea611dc0498267a392 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. @@ -6020,10 +6011,10 @@ Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. 26 files changed, 272 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 959658fe..efe3f977 100644 +index 9b4a8075..aa433c38 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -8698,7 +8698,6 @@ but stronger than those for a partial ordering. +@@ -8700,7 +8700,6 @@ but stronger than those for a partial ordering. If we define \tcode{equiv(a, b)} as \tcode{!comp(a, b) \&\& !comp(b, a)}, then the requirements are that \tcode{comp} and \tcode{equiv} both be transitive relations: @@ -6031,7 +6022,7 @@ index 959658fe..efe3f977 100644 \begin{itemize} \item \tcode{comp(a, b) \&\& comp(b, c)} implies \tcode{comp(a, c)} \item \tcode{equiv(a, b) \&\& equiv(b, c)} implies \tcode{equiv(a, c)} -@@ -9747,7 +9746,6 @@ Let $N = \tcode{last - first}$: +@@ -9749,7 +9748,6 @@ Let $N = \tcode{last - first}$: For the parallel algorithm overloads, \bigoh{N \log N} swaps and \bigoh{N} applications of the predicate. \end{itemize} @@ -6039,7 +6030,7 @@ index 959658fe..efe3f977 100644 \end{itemdescr} \indexlibraryglobal{stable_partition}% -@@ -10882,7 +10880,6 @@ A random access range \range{a}{b} is a +@@ -10884,7 +10882,6 @@ A random access range \range{a}{b} is a {heap with respect to comp and proj@heap with respect to \tcode{comp} and \tcode{proj}} for a comparator and projection \tcode{comp} and \tcode{proj} if its elements are organized such that: @@ -6047,7 +6038,7 @@ index 959658fe..efe3f977 100644 \begin{itemize} \item With \tcode{$N$ = b - a}, for all $i$, $0 < i < N$, -@@ -13546,7 +13543,6 @@ template +@@ -13548,7 +13545,6 @@ template \pnum Some algorithms in this subclause are constrained with the following exposition-only concepts: @@ -6056,7 +6047,7 @@ index 959658fe..efe3f977 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index 1c0a6cfc..baadca8b 100644 +index 4d017537..b0b15874 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -294,7 +294,6 @@ int X::y = 1; // defines \tcode{X::y} @@ -6084,10 +6075,10 @@ index 1c0a6cfc..baadca8b 100644 \item No two signed integer types other than \keyword{char} and \tcode{\keyword{signed} \keyword{char}} (if \keyword{char} is signed) have the same rank, even if they have diff --git a/source/classes.tex b/source/classes.tex -index 7b286507..e2b6a5eb 100644 +index 259175cd..d0d36a78 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -1713,7 +1713,6 @@ for each non-static data member of +@@ -1712,7 +1712,6 @@ for each non-static data member of that is of class type (or array thereof), the constructor selected to copy/move that member is trivial; \end{itemize} @@ -6095,7 +6086,7 @@ index 7b286507..e2b6a5eb 100644 \indextext{constructor!move!non-trivial}% otherwise the copy/move constructor is \defnx{non-trivial}{constructor!copy!nontrivial}. -@@ -3334,7 +3333,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat +@@ -3331,7 +3330,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat destructor and \tcode{N} has a non-trivial constructor (for instance, if they declare or inherit virtual functions), the active member of \tcode{u} can be safely switched from \tcode{m} to \tcode{n} using the destructor and placement \grammarterm{new-expression} as follows: @@ -6103,7 +6094,7 @@ index 7b286507..e2b6a5eb 100644 \begin{codeblock} u.m.~M(); new (&u.n) N; -@@ -3512,7 +3510,6 @@ A local class cannot have static data members\iref{class.static.data}. +@@ -3509,7 +3507,6 @@ A local class cannot have static data members\iref{class.static.data}. \indextext{multiple inheritance}% A list of base classes can be specified in a class definition using the notation: @@ -6111,7 +6102,7 @@ index 7b286507..e2b6a5eb 100644 \begin{bnf} \nontermdef{base-clause}\br \terminal{:} base-specifier-list -@@ -5487,7 +5484,6 @@ initializers for direct and virtual base class subobjects and +@@ -5484,7 +5481,6 @@ initializers for direct and virtual base class subobjects and non-static data members can be specified by a \grammarterm{ctor-initializer}, which has the form @@ -6119,7 +6110,7 @@ index 7b286507..e2b6a5eb 100644 \begin{bnf} \nontermdef{ctor-initializer}\br \terminal{:} mem-initializer-list -@@ -5958,7 +5954,6 @@ public: +@@ -5955,7 +5951,6 @@ public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; \end{codeblock} @@ -6127,7 +6118,7 @@ index 7b286507..e2b6a5eb 100644 \end{example} \rSec2[class.inhctor.init]{Initialization by inherited constructor}% -@@ -6614,7 +6609,6 @@ any non-static data member of \tcode{C} is of reference type or +@@ -6611,7 +6606,6 @@ any non-static data member of \tcode{C} is of reference type or A binary operator expression \tcode{a @ b} is \defnx{usable}{usable!binary operator expression} if either @@ -6135,7 +6126,7 @@ index 7b286507..e2b6a5eb 100644 \begin{itemize} \item \tcode{a} or \tcode{b} is of class or enumeration type and -@@ -6735,7 +6729,6 @@ The \defnadj{synthesized}{three-way comparison} +@@ -6732,7 +6726,6 @@ The \defnadj{synthesized}{three-way comparison} of type \tcode{R}\iref{cmp.categories} of glvalues \tcode{a} and \tcode{b} of the same type is defined as follows: @@ -6143,7 +6134,7 @@ index 7b286507..e2b6a5eb 100644 \begin{itemize} \item If \tcode{a <=> b} is usable\iref{class.compare.default} and -@@ -6835,7 +6828,6 @@ The \defn{common comparison type} \tcode{U} +@@ -6832,7 +6825,6 @@ The \defn{common comparison type} \tcode{U} of a possibly-empty list of $n$ comparison category types $\tcode{T}_0$, $\tcode{T}_1$, $\dotsc$, $\tcode{T}_{n-1}$ is defined as follows: @@ -6325,10 +6316,10 @@ index 1722b95c..6663d0e0 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index ed136ec9..2f5de6f4 100644 +index 71b577a1..7053f174 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -685,7 +685,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. +@@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. \ref{vector.modifiers}) all container types defined in this Clause meet the following additional requirements: @@ -6336,7 +6327,7 @@ index ed136ec9..2f5de6f4 100644 \begin{itemize} \item If an exception is thrown by an -@@ -748,7 +747,6 @@ as input iterators. +@@ -751,7 +750,6 @@ as input iterators. Likewise, the extent to which an implementation determines that a type cannot be an allocator is unspecified, except that as a minimum a type \tcode{A} shall not qualify as an allocator unless it meets both of the following conditions: @@ -6344,7 +6335,7 @@ index ed136ec9..2f5de6f4 100644 \begin{itemize} \item The \grammarterm{qualified-id} \tcode{A::value_type} is valid and denotes a type\iref{temp.deduct}. -@@ -978,7 +976,6 @@ is not allocator-aware or is a specialization of \tcode{basic_string}, +@@ -982,7 +980,6 @@ is not allocator-aware or is a specialization of \tcode{basic_string}, the terms below are defined as if \tcode{A} were \tcode{allocator} --- no allocator object needs to be created and user specializations of \tcode{allocator} are not instantiated: @@ -6352,7 +6343,7 @@ index ed136ec9..2f5de6f4 100644 \begin{itemize} \item \tcode{T} is \defnx{\oldconcept{DefaultInsertable} into \tcode{X}} -@@ -4036,14 +4033,12 @@ such that distance from +@@ -4041,14 +4038,12 @@ such that distance from to \tcode{j} is positive, the following condition holds: @@ -6367,7 +6358,7 @@ index ed136ec9..2f5de6f4 100644 \begin{codeblock} value_comp(*i, *j) != false \end{codeblock} -@@ -6055,7 +6050,6 @@ define class templates that meet the requirements for sequence containers. +@@ -6060,7 +6055,6 @@ define class templates that meet the requirements for sequence containers. \pnum The following exposition-only alias template may appear in deduction guides for sequence containers: @@ -6375,7 +6366,7 @@ index ed136ec9..2f5de6f4 100644 \begin{codeblock} template using @\placeholdernc{iter-value-type}@ = iterator_traits::value_type; // \expos -@@ -9326,7 +9320,6 @@ If \tcode{size() < sz}, +@@ -9331,7 +9325,6 @@ If \tcode{size() < sz}, appends \tcode{sz - size()} default-inserted elements to the sequence. If \tcode{sz <= size()}, equivalent to: @@ -6383,7 +6374,7 @@ index ed136ec9..2f5de6f4 100644 \begin{codeblock} list::iterator it = begin(); advance(it, sz); -@@ -10615,13 +10608,11 @@ static constexpr void swap(reference x, reference y) noexcept; +@@ -10620,13 +10613,11 @@ static constexpr void swap(reference x, reference y) noexcept; \pnum \effects Exchanges the contents of \tcode{x} and \tcode{y} as if by: @@ -6397,7 +6388,7 @@ index ed136ec9..2f5de6f4 100644 \end{itemdescr} \begin{itemdecl} -@@ -20093,7 +20084,6 @@ For each of +@@ -20099,7 +20090,6 @@ For each of \tcode{stack}, the library provides the following formatter specialization where \tcode{\placeholder{adaptor-type}} is the name of the template: @@ -6405,7 +6396,7 @@ index ed136ec9..2f5de6f4 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -24285,7 +24275,6 @@ typename A::offset_policy +@@ -24291,7 +24281,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6413,7 +6404,7 @@ index ed136ec9..2f5de6f4 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -25254,7 +25243,6 @@ the \tcode{SliceSpecifier} arguments. +@@ -25260,7 +25249,6 @@ the \tcode{SliceSpecifier} arguments. \pnum For each function defined in \ref{mdspan.sub} that takes a parameter pack named \tcode{slices} as an argument: @@ -6421,7 +6412,7 @@ index ed136ec9..2f5de6f4 100644 \begin{itemize} \item let \tcode{index_type} be \begin{itemize} -@@ -25518,7 +25506,6 @@ $\le \tcode{src.extent($k$)}$ +@@ -25524,7 +25512,6 @@ $\le \tcode{src.extent($k$)}$ \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: @@ -6429,7 +6420,7 @@ index ed136ec9..2f5de6f4 100644 \begin{itemize} \item %FIXME: I think we want the count here, "number" is ambiguous. -@@ -25529,7 +25516,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and +@@ -25535,7 +25522,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and for each rank index $k$ of \tcode{Extents} such that \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, \tcode{SubExt\-ents::static_extent(\placeholder{map-rank}[$k$])} equals: @@ -6437,7 +6428,7 @@ index ed136ec9..2f5de6f4 100644 \begin{itemize} \item \tcode{Extents::static_extent($k$)} -@@ -25569,7 +25555,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that +@@ -25575,7 +25561,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that for each $k$ for which \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, \tcode{ext.extent(\placeholder{map-rank}[$k$])} equals: @@ -6446,10 +6437,10 @@ index ed136ec9..2f5de6f4 100644 \item \tcode{$s_k$.extent == 0 ? 0 : 1 + (\exposid{de-ice}($s_k$.extent) - 1) / \exposid{de-ice}($s_k$.stride)} diff --git a/source/declarations.tex b/source/declarations.tex -index f41fea44..4fa9b627 100644 +index 74100ed5..da75b28c 100644 --- a/source/declarations.tex +++ b/source/declarations.tex -@@ -1593,7 +1593,6 @@ a partial specialization\iref{temp.spec.partial}, +@@ -1591,7 +1591,6 @@ a partial specialization\iref{temp.spec.partial}, an explicit instantiation\iref{temp.explicit}, or it has one of the following forms: @@ -6457,7 +6448,7 @@ index f41fea44..4fa9b627 100644 \begin{ncsimplebnf} class-key \opt{attribute-specifier-seq} identifier \terminal{;}\br class-key \opt{attribute-specifier-seq} simple-template-id \terminal{;} -@@ -2491,7 +2490,6 @@ the \grammarterm{declarator} declares a function. +@@ -2489,7 +2488,6 @@ the \grammarterm{declarator} declares a function. \pnum Declarators have the syntax @@ -6465,7 +6456,7 @@ index f41fea44..4fa9b627 100644 \begin{bnf} \nontermdef{declarator}\br ptr-declarator\br -@@ -4396,7 +4394,6 @@ In the following code, +@@ -4394,7 +4392,6 @@ In the following code, \tcode{g} will be called with the value \tcode{f(2)}: @@ -6473,7 +6464,7 @@ index f41fea44..4fa9b627 100644 \begin{codeblock} int a = 1; int f(int); -@@ -5066,7 +5063,6 @@ To +@@ -5064,7 +5061,6 @@ To an object of type \tcode{T} means: @@ -6481,7 +6472,7 @@ index f41fea44..4fa9b627 100644 \begin{itemize} \item If -@@ -5270,7 +5266,6 @@ is sequenced before those associated with +@@ -5268,7 +5264,6 @@ is sequenced before those associated with the initialization of the $j^\text{th}$ element. \item Otherwise, if the destination type is a class type: @@ -6489,7 +6480,7 @@ index f41fea44..4fa9b627 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -6182,7 +6177,6 @@ a program that necessitates such a binding is ill-formed. +@@ -6180,7 +6175,6 @@ a program that necessitates such a binding is ill-formed. A reference to type ``\cvqual{cv1} \tcode{T1}'' is initialized by an expression of type ``\cvqual{cv2} \tcode{T2}'' as follows:% \indextext{binding!reference} @@ -6497,7 +6488,7 @@ index f41fea44..4fa9b627 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6650,7 +6644,6 @@ int j { 1 }; // initialize to 1 +@@ -6648,7 +6642,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -6505,7 +6496,7 @@ index f41fea44..4fa9b627 100644 \end{itemize} \pnum -@@ -7737,7 +7730,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, +@@ -7735,7 +7728,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, where $\tcode{U}_i$ is an lvalue reference if the initializer is an lvalue and an rvalue reference otherwise, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -6513,7 +6504,7 @@ index f41fea44..4fa9b627 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7869,7 +7861,6 @@ struct S { +@@ -7867,7 +7859,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6521,7 +6512,7 @@ index f41fea44..4fa9b627 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7966,7 +7957,6 @@ If the underlying +@@ -7964,7 +7955,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6529,7 +6520,7 @@ index f41fea44..4fa9b627 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8425,7 +8415,6 @@ void h() { +@@ -8423,7 +8413,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} according to the following grammar: @@ -6537,7 +6528,7 @@ index f41fea44..4fa9b627 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8599,7 +8588,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8597,7 +8586,6 @@ not declare functions or function templates, the use of the name is ill-formed\i In particular, the name of a variable, function or enumerator does not hide the name of a class or enumeration declared in a different namespace. For example, @@ -6545,7 +6536,7 @@ index f41fea44..4fa9b627 100644 \begin{codeblock} namespace A { class X { }; -@@ -9152,7 +9140,6 @@ otherwise identical. +@@ -9150,7 +9138,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6553,7 +6544,7 @@ index f41fea44..4fa9b627 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -10020,7 +10007,6 @@ may be applied to a function or a lambda call operator or +@@ -10017,7 +10004,6 @@ may be applied to a function or a lambda call operator or to the declaration of a class or enumeration. An \grammarterm{attribute-argument-clause} may be present and, if present, shall have the form: @@ -6562,7 +6553,7 @@ index f41fea44..4fa9b627 100644 \terminal{(} unevaluated-string \terminal{)} \end{ncbnf} diff --git a/source/exceptions.tex b/source/exceptions.tex -index df489ab5..17fe2711 100644 +index 88e1a340..ed441278 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -89,7 +89,6 @@ void f() { @@ -6587,7 +6578,7 @@ index df489ab5..17fe2711 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index f6fdd1c7..37b62ab4 100644 +index 9f91843e..746166d0 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -464,7 +464,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -7050,7 +7041,7 @@ index ffa39eaf..ed2a7332 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 03b19a61..b668fdac 100644 +index 1c229c08..cc034328 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -196,7 +196,6 @@ save space, items that do not apply to a Clause are omitted. @@ -7125,7 +7116,7 @@ index 03b19a61..b668fdac 100644 \begin{itemize} \item Properties specified as \defn{locale-specific} -@@ -965,7 +956,6 @@ some subclauses provide representative declarations, and semantic requirements, +@@ -970,7 +961,6 @@ some subclauses provide representative declarations, and semantic requirements, private members of classes that meet the external specifications of the classes. The declarations for such members are followed by a comment that ends with \expos, as in: @@ -7133,7 +7124,7 @@ index 03b19a61..b668fdac 100644 \begin{codeblock} streambuf* sb; // \expos \end{codeblock} -@@ -1932,7 +1922,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if +@@ -1936,7 +1926,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if evaluated in the context described below, and \item these expressions have the following effects: @@ -7141,7 +7132,7 @@ index 03b19a61..b668fdac 100644 \begin{itemize} \item the object referred to by \tcode{t} has the value originally held by \tcode{u} and \item the object referred to by \tcode{u} has the value originally held by \tcode{t}. -@@ -2938,7 +2927,6 @@ for that type can fail by throwing an object of type +@@ -2942,7 +2931,6 @@ for that type can fail by throwing an object of type \begin{example} The following is an allocator class template supporting the minimal interface that meets the requirements of \ref{allocator.requirements.general}: @@ -7149,7 +7140,7 @@ index 03b19a61..b668fdac 100644 \begin{codeblock} template struct SimpleAllocator { -@@ -3424,13 +3412,11 @@ the description of function semantics apply +@@ -3428,13 +3416,11 @@ the description of function semantics apply to both the default version defined by the \Cpp{} standard library and the replacement function defined by the program. @@ -7163,7 +7154,7 @@ index 03b19a61..b668fdac 100644 \begin{itemize} \item \tcode{terminate_handler} -@@ -3451,7 +3437,6 @@ Exception handling. +@@ -3455,7 +3441,6 @@ Exception handling. \pnum A \Cpp{} program can get a pointer to the current handler function by calling the following functions: @@ -7171,7 +7162,7 @@ index 03b19a61..b668fdac 100644 \begin{itemize} \item \indexlibraryglobal{get_new_handler}% -@@ -3477,7 +3462,6 @@ on the implementation. +@@ -3481,7 +3466,6 @@ on the implementation. \pnum In particular, the behavior is undefined in the following cases: @@ -7179,7 +7170,7 @@ index 03b19a61..b668fdac 100644 \begin{itemize} \item For replacement functions\iref{replacement.functions}, if the installed replacement function does not -@@ -3762,7 +3746,6 @@ functions an implementation shall provide corresponding definitions. +@@ -3766,7 +3750,6 @@ functions an implementation shall provide corresponding definitions. \indextext{stable algorithm}% When the requirements for an algorithm state that it is ``stable'' without further elaboration, it means: @@ -7218,7 +7209,7 @@ index 1b455e86..f2964f90 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index 16365a12..7541a534 100644 +index f0bd37f5..36a2a88e 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -1947,7 +1947,6 @@ is_base_of_v // \tcode{false} @@ -7238,7 +7229,7 @@ index 16365a12..7541a534 100644 \item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}. diff --git a/source/numerics.tex b/source/numerics.tex -index 7ccd12be..56017d80 100644 +index 65e08e2c..82e20d65 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); @@ -7306,7 +7297,7 @@ index 7ccd12be..56017d80 100644 \begin{itemdecl} indirect_array valarray::operator[](const valarray&); diff --git a/source/overloading.tex b/source/overloading.tex -index 8e2bc352..f94e7c05 100644 +index 6fa6a1b1..e2f944d5 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -103,7 +103,6 @@ the list of arguments in its own unique way. @@ -7398,7 +7389,7 @@ index 8e2bc352..f94e7c05 100644 const char* unsigned long long int diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 7d85b2e3..a147d15a 100644 +index 14e251f7..97e9ac52 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -194,7 +194,6 @@ begins with the first character in the source file @@ -7481,7 +7472,7 @@ index 7d85b2e3..a147d15a 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 1f4f807d..cd516a76 100644 +index c93b855e..095b3aca 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7601,7 +7592,7 @@ index 785798f7..fa5898d3 100644 \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are diff --git a/source/support.tex b/source/support.tex -index d55d8d15..54ed6da8 100644 +index aac6e41e..cb42f682 100644 --- a/source/support.tex +++ b/source/support.tex @@ -2459,7 +2459,6 @@ This requirement is binding on any replacement versions of these functions. @@ -7637,7 +7628,7 @@ index d55d8d15..54ed6da8 100644 using promise_type = R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index 656d82ed..e31f88b7 100644 +index fbeb36af..684e7c85 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -235,7 +235,6 @@ in some translation unit; no diagnostic is required. @@ -7648,7 +7639,7 @@ index 656d82ed..e31f88b7 100644 \begin{bnf} \nontermdef{template-parameter}\br type-parameter\br -@@ -1569,7 +1568,6 @@ for function templates}{temp.func.order}. +@@ -1570,7 +1569,6 @@ for function templates}{temp.func.order}. Given an invented class template \tcode{X} with the \grammarterm{template-head} of \tcode{A} (including default arguments and \grammarterm{requires-clause}, if any): @@ -7656,7 +7647,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item Each of the two function templates has the same template parameters -@@ -1966,7 +1964,6 @@ or templated function declaration\iref{dcl.fct} +@@ -1967,7 +1965,6 @@ or templated function declaration\iref{dcl.fct} can be constrained by the use of a \grammarterm{requires-clause}. This allows the specification of constraints for that declaration as an expression: @@ -7664,7 +7655,7 @@ index 656d82ed..e31f88b7 100644 \begin{bnf} \nontermdef{constraint-expression}\br logical-or-expression -@@ -1982,7 +1979,6 @@ that are used to constrain the declaration. +@@ -1983,7 +1980,6 @@ that are used to constrain the declaration. \pnum \indextext{constraint!associated|see{associated constraints}}% A declaration's \defn{associated constraints} are defined as follows: @@ -7672,7 +7663,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item If there are no introduced \grammarterm{constraint-expression}{s}, the declaration has no associated constraints. -@@ -2772,7 +2768,6 @@ public: +@@ -2773,7 +2769,6 @@ public: declares three member functions of a class template. The subscript function can be defined like this: @@ -7680,7 +7671,7 @@ index 656d82ed..e31f88b7 100644 \begin{codeblock} template T& Array::operator[](int i) { if (i<0 || sz<=i) error("Array: range error"); -@@ -3164,7 +3159,6 @@ produces zero or more instantiations of the pattern in a list (described below). +@@ -3165,7 +3160,6 @@ produces zero or more instantiations of the pattern in a list (described below). The form of the pattern depends on the context in which the expansion occurs. Pack expansions can occur in the following contexts: @@ -7688,7 +7679,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item In a function parameter pack\iref{dcl.fct}; the pattern is the \grammarterm{parameter-declaration} without the ellipsis. -@@ -3770,7 +3764,6 @@ All other constant template arguments are specialized. +@@ -3771,7 +3765,6 @@ All other constant template arguments are specialized. \pnum Within the argument list of a partial specialization, the following restrictions apply: @@ -7696,7 +7687,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item The type of a template parameter corresponding to a specialized constant template -@@ -3784,7 +3777,6 @@ template< int X, int (*array_ptr)[X] > class A {}; +@@ -3785,7 +3778,6 @@ template< int X, int (*array_ptr)[X] > class A {}; int array[5]; template< int X > class A { }; // error \end{codeblock} @@ -7704,7 +7695,7 @@ index 656d82ed..e31f88b7 100644 \end{example} \item The partial specialization shall be more specialized than the primary -@@ -3910,7 +3902,6 @@ the first is \defn{more specialized} than the second if, given the following +@@ -3911,7 +3903,6 @@ the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more specialized than the second according to the \link{ordering rules for function templates}{temp.func.order}: @@ -7712,7 +7703,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item Each of the two -@@ -4062,7 +4053,6 @@ A::B abci; // uses \#1 +@@ -4063,7 +4054,6 @@ A::B abci; // uses \#1 A function template defines an unbounded set of related functions. \begin{example} A family of sort functions can be declared like this: @@ -7720,7 +7711,7 @@ index 656d82ed..e31f88b7 100644 \begin{codeblock} template class Array { }; template void sort(Array&); -@@ -4117,7 +4107,6 @@ void h(int* p) { +@@ -4118,7 +4108,6 @@ void h(int* p) { } \end{codeblock} \end{minipage} @@ -7728,7 +7719,7 @@ index 656d82ed..e31f88b7 100644 \end{example} \pnum -@@ -4303,7 +4292,6 @@ to guarantee that functionally equivalent declarations will be treated +@@ -4304,7 +4293,6 @@ to guarantee that functionally equivalent declarations will be treated as distinct. For example, the last two declarations are functionally equivalent and would cause a program to be ill-formed: @@ -7736,7 +7727,7 @@ index 656d82ed..e31f88b7 100644 \begin{codeblock} // guaranteed to be the same template void f(A, A); -@@ -4396,7 +4384,6 @@ then the order of the function parameters in its transformed template +@@ -4397,7 +4385,6 @@ then the order of the function parameters in its transformed template is reversed. For a function template $M$ with cv-qualifiers \cv{} that is a member of a class $A$: @@ -7744,7 +7735,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item The type $X(M)$ is ``rvalue reference to \cv{}~$A$'' -@@ -4652,7 +4639,6 @@ template class TT> +@@ -4653,7 +4640,6 @@ template class TT> void g(TT>); g(v); // OK, \tcode{TT} = \tcode{vector} \end{codeblock} @@ -7752,7 +7743,7 @@ index 656d82ed..e31f88b7 100644 \end{example} \pnum -@@ -5518,7 +5504,6 @@ of a class that is the current instantiation. +@@ -5519,7 +5505,6 @@ of a class that is the current instantiation. \pnum A qualified name\iref{basic.lookup.qual} is dependent if @@ -7760,7 +7751,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item it is a \grammarterm{conversion-function-id} -@@ -5767,7 +5752,6 @@ specified by the +@@ -5768,7 +5753,6 @@ specified by the or \grammarterm{new-type-id} is dependent, even if any subexpression is type-dependent: @@ -7768,7 +7759,7 @@ index 656d82ed..e31f88b7 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br simple-type-specifier braced-init-list\br -@@ -5785,7 +5769,6 @@ typename-specifier braced-init-list\br +@@ -5786,7 +5770,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following forms are never type-dependent (because the type of the expression cannot be dependent): @@ -7776,7 +7767,7 @@ index 656d82ed..e31f88b7 100644 \begin{ncsimplebnf} literal\br \keyword{sizeof} unary-expression\br -@@ -5890,7 +5873,6 @@ Expressions of the following form are value-dependent if the +@@ -5891,7 +5874,6 @@ Expressions of the following form are value-dependent if the is type-dependent or the \grammarterm{type-id} is dependent: @@ -7784,7 +7775,7 @@ index 656d82ed..e31f88b7 100644 \begin{ncsimplebnf} \keyword{sizeof} unary-expression\br \keyword{sizeof} \terminal{(} type-id \terminal{)}\br -@@ -5918,7 +5900,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} +@@ -5919,7 +5901,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} is value-dependent or any \grammarterm{assignment-expression} in the \grammarterm{braced-init-list} is value-dependent: @@ -7792,7 +7783,7 @@ index 656d82ed..e31f88b7 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br typename-specifier \terminal{(} \opt{expression-list} \terminal{)}\br -@@ -5933,7 +5914,6 @@ typename-specifier braced-init-list\br +@@ -5934,7 +5915,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following form are value-dependent: @@ -7800,7 +7791,7 @@ index 656d82ed..e31f88b7 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -6935,7 +6915,6 @@ template. +@@ -6936,7 +6916,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -7808,7 +7799,7 @@ index 656d82ed..e31f88b7 100644 \begin{bnf} \nontermdef{explicit-instantiation}\br \opt{\keyword{extern}} \keyword{template} declaration -@@ -7410,7 +7389,6 @@ otherwise, it is a declaration. +@@ -7411,7 +7390,6 @@ otherwise, it is a declaration. The definition of a static data member of a template for which default-initialization is desired can use functional cast notation\iref{expr.type.conv}: @@ -7816,7 +7807,7 @@ index 656d82ed..e31f88b7 100644 \begin{codeblock} template<> X Q::x; // declaration template<> X Q::x (); // error: declares a function -@@ -7669,7 +7647,6 @@ An empty template argument list can be used to indicate that a given +@@ -7670,7 +7648,6 @@ An empty template argument list can be used to indicate that a given use refers to a specialization of a function template even when a non-template function\iref{dcl.fct} is visible that would otherwise be used. For example: @@ -7824,7 +7815,7 @@ index 656d82ed..e31f88b7 100644 \begin{codeblock} template int f(T); // \#1 int f(int); // \#2 -@@ -8251,7 +8228,6 @@ void h(int x, float& y) { +@@ -8252,7 +8229,6 @@ void h(int x, float& y) { If \tcode{P} is not a reference type: @@ -7832,7 +7823,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item If -@@ -8346,7 +8322,6 @@ the type +@@ -8347,7 +8323,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -7840,7 +7831,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item If the original -@@ -8536,7 +8511,6 @@ of \tcode{P} for type deduction and for any further references to or transformat +@@ -8537,7 +8512,6 @@ of \tcode{P} for type deduction and for any further references to or transformat If \tcode{A} is not a reference type: @@ -7848,7 +7839,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item If -@@ -8582,7 +8556,6 @@ values that will make the deduced +@@ -8583,7 +8557,6 @@ values that will make the deduced identical to \tcode{A}. However, certain attributes of \tcode{A} may be ignored: @@ -7856,7 +7847,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item If the original \tcode{A} is a reference type, -@@ -8627,7 +8600,6 @@ the argument template and template-1 as the parameter template. +@@ -8628,7 +8601,6 @@ the argument template and template-1 as the parameter template. \pnum The types used to determine the ordering depend on the context in which the partial ordering is done: @@ -7864,7 +7855,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item In the context of a function call, the types used are those function parameter types -@@ -8655,7 +8627,6 @@ and +@@ -8656,7 +8628,6 @@ and \pnum Before the partial ordering is done, certain transformations are performed on the types used for partial ordering: @@ -7872,7 +7863,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item If -@@ -8861,7 +8832,6 @@ A given type +@@ -8862,7 +8833,6 @@ A given type \tcode{P} can be composed from a number of other types, templates, and constant template argument values: @@ -7880,7 +7871,7 @@ index 656d82ed..e31f88b7 100644 \begin{itemize} \item A function type includes the types of each of the function parameters, -@@ -8903,7 +8873,6 @@ need not have the same form. +@@ -8904,7 +8874,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -7888,7 +7879,7 @@ index 656d82ed..e31f88b7 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -8998,7 +8967,6 @@ is deduced. +@@ -8999,7 +8968,6 @@ is deduced. \begin{example} Here is an example in which different parameter/argument pairs produce inconsistent template argument deductions: @@ -7896,7 +7887,7 @@ index 656d82ed..e31f88b7 100644 \begin{codeblock} template void f(T x, T y) { @\commentellip@ } struct A { @\commentellip@ }; -@@ -9015,7 +8983,6 @@ Here is an example where two template arguments are deduced from a +@@ -9016,7 +8984,6 @@ Here is an example where two template arguments are deduced from a single function parameter/argument pair. This can lead to conflicts that cause type deduction to fail: @@ -7904,7 +7895,7 @@ index 656d82ed..e31f88b7 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -9032,7 +8999,6 @@ void r() { +@@ -9033,7 +9000,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -7912,7 +7903,7 @@ index 656d82ed..e31f88b7 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -9051,7 +9017,6 @@ void h() { +@@ -9052,7 +9018,6 @@ void h() { Here is an example where a qualification conversion applies between the argument type on the function call and the deduced template argument type: @@ -7920,7 +7911,7 @@ index 656d82ed..e31f88b7 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -9062,7 +9027,6 @@ void s() { +@@ -9063,7 +9028,6 @@ void s() { Here is an example where the template argument is used to instantiate a derived class type of the corresponding function parameter type: @@ -7929,10 +7920,10 @@ index 656d82ed..e31f88b7 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index bb641003..dd7d639f 100644 +index 0962d340..7fbc2b5b 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -7386,7 +7386,6 @@ and visible to other threads. +@@ -7323,7 +7323,6 @@ and visible to other threads. \pnum The expression \tcode{m.lock()} is well-formed and has the following semantics: @@ -7940,7 +7931,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -7429,7 +7428,6 @@ that a deadlock would occur. +@@ -7366,7 +7365,6 @@ that a deadlock would occur. \pnum The expression \tcode{m.try_lock()} is well-formed and has the following semantics: @@ -7948,7 +7939,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -7475,7 +7473,6 @@ Nothing. +@@ -7412,7 +7410,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -7956,7 +7947,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -7630,7 +7627,6 @@ requirements\iref{thread.req.lockable.timed}. +@@ -7567,7 +7564,6 @@ requirements\iref{thread.req.lockable.timed}. \pnum The expression \tcode{m.try_lock_for(rel_time)} is well-formed and has the following semantics: @@ -7964,7 +7955,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -7672,7 +7668,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -7609,7 +7605,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_until(abs_time)} is well-formed and has the following semantics: @@ -7972,7 +7963,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -7859,7 +7854,6 @@ shared lock. +@@ -7796,7 +7791,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -7980,7 +7971,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -7896,7 +7890,6 @@ The calling thread has a shared lock on the mutex. +@@ -7833,7 +7827,6 @@ The calling thread has a shared lock on the mutex. \pnum The expression \tcode{m.unlock_shared()} is well-formed and has the following semantics: @@ -7988,7 +7979,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -7921,7 +7914,6 @@ Nothing. +@@ -7858,7 +7851,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -7996,7 +7987,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -8024,7 +8016,6 @@ requirements\iref{thread.req.lockable.shared.timed}. +@@ -7961,7 +7953,6 @@ requirements\iref{thread.req.lockable.shared.timed}. \pnum The expression \tcode{m.try_lock_shared_for(rel_time)} is well-formed and has the following semantics: @@ -8004,7 +7995,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -8069,7 +8060,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -8006,7 +7997,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_shared_until(abs_time)} is well-formed and has the following semantics: @@ -8012,7 +8003,7 @@ index bb641003..dd7d639f 100644 \begin{itemdescr} \pnum \expects -@@ -10207,7 +10197,6 @@ template +@@ -10144,7 +10134,6 @@ template \begin{itemdescr} \pnum \effects @@ -8020,7 +8011,7 @@ index bb641003..dd7d639f 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -11598,7 +11587,6 @@ shared state as \tcode{*this}. +@@ -11535,7 +11524,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -8028,7 +8019,7 @@ index bb641003..dd7d639f 100644 \begin{itemize} \item \tcode{future_already_retrieved} if \tcode{get_future} has already been called on a \tcode{promise} with the same shared state as \tcode{*this}. -@@ -11661,7 +11649,6 @@ already has a stored value or exception. +@@ -11598,7 +11586,6 @@ already has a stored value or exception. \pnum \errors @@ -8036,7 +8027,7 @@ index bb641003..dd7d639f 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -12001,7 +11988,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -11938,7 +11925,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -8044,7 +8035,7 @@ index bb641003..dd7d639f 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12345,7 +12331,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -12282,7 +12268,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8052,7 +8043,7 @@ index bb641003..dd7d639f 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12380,7 +12365,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -12317,7 +12302,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8060,7 +8051,7 @@ index bb641003..dd7d639f 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12436,7 +12420,6 @@ The further behavior +@@ -12373,7 +12357,6 @@ The further behavior of the second function depends on the \tcode{policy} argument as follows (if more than one of these conditions applies, the implementation may choose any of the corresponding policies): @@ -8069,10 +8060,10 @@ index bb641003..dd7d639f 100644 \item If \tcode{launch::async} is set in \tcode{policy}, calls diff --git a/source/time.tex b/source/time.tex -index fd854a49..175e3ab5 100644 +index f1f22e40..2ff12f44 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -2074,7 +2074,6 @@ return os << s.str(); +@@ -2068,7 +2068,6 @@ return os << s.str(); \end{codeblock} where \tcode{\placeholder{units-suffix}} depends on the type \tcode{Period::type} as follows: @@ -8080,7 +8071,7 @@ index fd854a49..175e3ab5 100644 \begin{itemize} \item If \tcode{Period::type} is \tcode{atto}, -@@ -2952,7 +2951,6 @@ for (auto i = 0; i < 8; ++i, u += 250ms) +@@ -2946,7 +2945,6 @@ for (auto i = 0; i < 8; ++i, u += 250ms) \end{codeblock} Produces this output: @@ -8088,7 +8079,7 @@ index fd854a49..175e3ab5 100644 \begin{outputblock} 2015-06-30 23:59:59.500 UTC 2015-06-30 23:59:59.750 UTC -@@ -3158,7 +3156,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, tt); +@@ -3152,7 +3150,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, tt); \end{codeblock} Produces this output: @@ -8096,7 +8087,7 @@ index fd854a49..175e3ab5 100644 \begin{outputblock} 2000-01-01 00:00:00 UTC == 2000-01-01 00:00:32 TAI \end{outputblock} -@@ -3321,7 +3318,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, gt); +@@ -3315,7 +3312,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, gt); \end{codeblock} Produces this output: @@ -8104,7 +8095,7 @@ index fd854a49..175e3ab5 100644 \begin{outputblock} 2000-01-01 00:00:00 UTC == 2000-01-01 00:00:13 GPS \end{outputblock} -@@ -3390,7 +3386,6 @@ such as \tcode{std::file\-sys\-tem}. +@@ -3384,7 +3380,6 @@ such as \tcode{std::file\-sys\-tem}. \pnum The type denoted by \tcode{file_clock} provides precisely one of the following two sets of static member functions: @@ -8112,7 +8103,7 @@ index fd854a49..175e3ab5 100644 \begin{codeblock} template static sys_time<@\seebelow@> -@@ -3399,9 +3394,7 @@ template +@@ -3393,9 +3388,7 @@ template static file_time<@\seebelow@> from_sys(const sys_time&); \end{codeblock} @@ -8122,7 +8113,7 @@ index fd854a49..175e3ab5 100644 \begin{codeblock} template static utc_time<@\seebelow@> -@@ -3870,7 +3863,6 @@ template +@@ -3864,7 +3857,6 @@ template \constraints At least one of the following clock time conversion expressions is well-formed: @@ -8130,7 +8121,7 @@ index fd854a49..175e3ab5 100644 \begin{itemize} \item \begin{codeblock} -@@ -7916,7 +7908,6 @@ a conventional syntax for the creation of civil calendar dates. +@@ -7910,7 +7902,6 @@ a conventional syntax for the creation of civil calendar dates. \pnum \begin{note} The year, month, and day are accepted in any of the following 3 orders: @@ -8138,7 +8129,7 @@ index fd854a49..175e3ab5 100644 \begin{codeblock} @\tcode{\placeholder{year}}@/@\tcode{\placeholder{month}}@/@\tcode{\placeholder{day}}@ @\tcode{\placeholder{month}}@/@\tcode{\placeholder{day}}@/@\tcode{\placeholder{year}}@ -@@ -7924,7 +7915,6 @@ The year, month, and day are accepted in any of the following 3 orders: +@@ -7918,7 +7909,6 @@ The year, month, and day are accepted in any of the following 3 orders: \end{codeblock} Anywhere a \tcode{\placeholder{day}} is needed, any of the following can also be specified: @@ -8146,7 +8137,7 @@ index fd854a49..175e3ab5 100644 \begin{codeblock} last @\tcode{\placeholder{weekday}}@[@\tcode{\placeholder{i}}@] -@@ -7937,7 +7927,6 @@ last +@@ -7931,7 +7921,6 @@ last Partial-date types such as \tcode{year_month} and \tcode{month_day} can be created by not applying the second division operator for any of the three orders. For example: @@ -8154,7 +8145,7 @@ index fd854a49..175e3ab5 100644 \begin{codeblock} year_month ym = 2015y/April; month_day md1 = April/4; -@@ -9126,7 +9115,6 @@ template +@@ -9120,7 +9109,6 @@ template Initializes the base class with a sequence of \tcode{char} equivalent to that produced by \tcode{os.str()} initialized as shown below: @@ -8162,7 +8153,7 @@ index fd854a49..175e3ab5 100644 \begin{codeblock} ostringstream os; os << tp << " is in a gap between\n" -@@ -9156,7 +9144,6 @@ int main() { +@@ -9150,7 +9138,6 @@ int main() { \end{codeblock} Produces the output: @@ -8170,7 +8161,7 @@ index fd854a49..175e3ab5 100644 \begin{outputblock} 2016-03-13 02:30:00 is in a gap between 2016-03-13 02:00:00 EST and -@@ -9201,7 +9188,6 @@ template +@@ -9195,7 +9182,6 @@ template Initializes the base class with a sequence of \tcode{char} equivalent to that produced by \tcode{os.str()} initialized as shown below: @@ -8178,7 +8169,7 @@ index fd854a49..175e3ab5 100644 \begin{codeblock} ostringstream os; os << tp << " is ambiguous. It could be\n" -@@ -9229,7 +9215,6 @@ int main() { +@@ -9223,7 +9209,6 @@ int main() { \end{codeblock} Produces the output: @@ -8186,7 +8177,7 @@ index fd854a49..175e3ab5 100644 \begin{outputblock} 2016-11-06 01:30:00 is ambiguous. It could be 2016-11-06 01:30:00 EDT == 2016-11-06 05:30:00 UTC or -@@ -9283,7 +9268,6 @@ The \tcode{offset} data member indicates +@@ -9277,7 +9262,6 @@ The \tcode{offset} data member indicates the UTC offset in effect for the associated \tcode{time_zone} and \tcode{time_point}. The relationship between \tcode{local_time} and \tcode{sys_time} is: @@ -8194,7 +8185,7 @@ index fd854a49..175e3ab5 100644 \begin{codeblock} offset = local_time - sys_time \end{codeblock} -@@ -9588,7 +9572,6 @@ the behavior of \tcode{zoned_time} +@@ -9582,7 +9566,6 @@ the behavior of \tcode{zoned_time} for the \tcode{zoned_time} default constructor, and constructors taking \tcode{string_view}. A specialization for \tcode{const time_zone*} is provided by the implementation: @@ -8202,7 +8193,7 @@ index fd854a49..175e3ab5 100644 \begin{codeblock} namespace std::chrono { template<> struct zoned_traits { -@@ -10164,7 +10147,6 @@ for (auto& l : get_tzdb().leap_seconds) +@@ -10158,7 +10141,6 @@ for (auto& l : get_tzdb().leap_seconds) \end{codeblock} Produces the output: @@ -8210,7 +8201,7 @@ index fd854a49..175e3ab5 100644 \begin{outputblock} 1972-07-01 00:00:00: 1s 1973-01-01 00:00:00: 1s -@@ -10463,7 +10445,6 @@ The \tcode{parse} member functions of these formatters +@@ -10457,7 +10439,6 @@ The \tcode{parse} member functions of these formatters interpret the format specification as a \fmtgrammarterm{chrono-format-spec} according to the following syntax: @@ -8219,7 +8210,7 @@ index fd854a49..175e3ab5 100644 \fmtnontermdef{chrono-format-spec}\br \opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs} diff --git a/source/utilities.tex b/source/utilities.tex -index dcf80d40..58252722 100644 +index edaa136a..abe9bd67 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -270,7 +270,6 @@ Exchanges values stored in two locations. @@ -8238,7 +8229,7 @@ index dcf80d40..58252722 100644 \begin{codeblock} is_nothrow_move_assignable_v<@$\mathtt{T}_i$@> \end{codeblock} -@@ -3159,7 +3157,6 @@ As if by \tcode{x.swap(y)}. +@@ -3165,7 +3163,6 @@ As if by \tcode{x.swap(y)}. \pnum \remarks The exception specification is equivalent to: @@ -8246,7 +8237,7 @@ index dcf80d40..58252722 100644 \begin{codeblock} noexcept(x.swap(y)) \end{codeblock} -@@ -10701,7 +10698,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; +@@ -10711,7 +10708,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8254,7 +8245,7 @@ index dcf80d40..58252722 100644 \begin{itemize} \item If \tcode{I < pos}, the new value is zero; -@@ -10726,7 +10722,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; +@@ -10736,7 +10732,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8262,7 +8253,7 @@ index dcf80d40..58252722 100644 \begin{itemize} \item If \tcode{pos >= N - I}, the new value is zero; -@@ -11452,7 +11447,6 @@ namespace std { +@@ -11462,7 +11457,6 @@ namespace std { If a \Cpp{} program wants to have a by-element addition of two vectors \tcode{a} and \tcode{b} containing \tcode{double} and put the result into \tcode{a}, it can do: @@ -8270,7 +8261,7 @@ index dcf80d40..58252722 100644 \begin{codeblock} transform(a.begin(), a.end(), b.begin(), a.begin(), plus()); \end{codeblock} -@@ -14931,7 +14925,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; +@@ -14941,7 +14935,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; The header provides partial specializations of \tcode{function_ref} for each combination of the possible replacements of the placeholders \cv{} and \placeholder{noex} where: @@ -8282,7 +8273,7 @@ index dcf80d40..58252722 100644 2.43.0 -From 434cbc5df3741cf4f767d724f6e4dee48be4fd36 Mon Sep 17 00:00:00 2001 +From 3063c650e90f877f880f947b68530381b8b91a68 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 Subject: [PATCH 6/9] Use monospace font for code in figures. @@ -8429,7 +8420,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From d1c1e42329a61c4367c89657eb0aed985a0aecee Mon Sep 17 00:00:00 2001 +From dfe9a2ed833db8fa7310b40f53163829841d1767 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 Subject: [PATCH 7/9] [uaxid] Mark code that's not to be highlighted. @@ -8457,7 +8448,7 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From 80f1e2bfcf9b2f760c29cddfdd4d1875bac2e82a Mon Sep 17 00:00:00 2001 +From 3b4d83e454194730fa79d68a6bfd4c92bf99c5ab Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 Subject: [PATCH 8/9] Use cxxdraft-htmlgen macros more. @@ -8481,7 +8472,7 @@ Subject: [PATCH 8/9] Use cxxdraft-htmlgen macros more. 15 files changed, 486 insertions(+), 494 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index efe3f977..c196ba1b 100644 +index aa433c38..23502107 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -8528,7 +8519,7 @@ index efe3f977..c196ba1b 100644 if it is required to be a mutable iterator, or model \libconcept{random_access_iterator}\iref{iterator.concept.random.access} otherwise. \end{itemize} -@@ -4616,10 +4616,10 @@ template +@@ -4618,10 +4618,10 @@ template \pnum \expects \tcode{Function} meets @@ -8541,7 +8532,7 @@ index efe3f977..c196ba1b 100644 \end{note} \pnum -@@ -4656,7 +4656,7 @@ template +@@ -4658,7 +4658,7 @@ template \begin{itemdescr} \pnum \expects @@ -8550,7 +8541,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -4790,10 +4790,10 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4792,10 +4792,10 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8563,7 +8554,7 @@ index efe3f977..c196ba1b 100644 \end{note} \pnum -@@ -4830,7 +4830,7 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4832,7 +4832,7 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8572,7 +8563,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -5678,7 +5678,7 @@ If +@@ -5680,7 +5680,7 @@ If \item the types of \tcode{first1}, \tcode{last1}, \tcode{first2}, and \tcode{last2} meet the @@ -8581,7 +8572,7 @@ index efe3f977..c196ba1b 100644 and \tcode{last1 - first1 != last2 - first2} for the overloads in namespace \tcode{std}; \item -@@ -6022,7 +6022,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} +@@ -6024,7 +6024,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} \pnum \remarks @@ -8590,7 +8581,7 @@ index efe3f977..c196ba1b 100644 \end{itemdescr} \rSec2[alg.starts.with]{Starts with} -@@ -7604,7 +7604,7 @@ Let $E$ be +@@ -7606,7 +7606,7 @@ Let $E$ be \expects For the algorithms in namespace \tcode{std}, the type of \tcode{*first} @@ -8599,7 +8590,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -7853,7 +7853,7 @@ let $E$ be +@@ -7855,7 +7855,7 @@ let $E$ be For the overloads in namespace \tcode{std}, \tcode{pred} is an equivalence relation and the type of \tcode{*first} meets @@ -8608,7 +8599,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -7983,10 +7983,10 @@ Let: +@@ -7985,10 +7985,10 @@ Let: \libconcept{forward_iterator}\iref{iterator.concept.forward}, then there are no additional requirements for \tcode{T}. Otherwise, if \tcode{OutputIterator} meets @@ -8621,7 +8612,7 @@ index efe3f977..c196ba1b 100644 Otherwise, \tcode{T} meets both the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and \oldconcept{CopyAssignable} requirements. -@@ -8065,7 +8065,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8067,7 +8067,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8630,7 +8621,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -8200,10 +8200,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterat +@@ -8202,10 +8202,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterat \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -8644,7 +8635,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -8420,13 +8420,13 @@ For the overload in namespace \tcode{std}: +@@ -8422,13 +8422,13 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{PopulationIterator} meets @@ -8661,7 +8652,7 @@ index efe3f977..c196ba1b 100644 unless \tcode{Pop\-ulat\-ion\-Iter\-ator} models \libconcept{forward_iterator}\iref{iterator.concept.forward}. \item -@@ -8494,7 +8494,7 @@ For the overload in namespace \tcode{std}: +@@ -8496,7 +8496,7 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{RandomAccessIterator} meets @@ -8670,7 +8661,7 @@ index efe3f977..c196ba1b 100644 \item The type \tcode{remove_reference_t} meets the uniform random bit generator\iref{rand.req.urng} requirements. -@@ -8555,7 +8555,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8557,7 +8557,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8679,7 +8670,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -8619,10 +8619,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8621,10 +8621,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8693,7 +8684,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -8801,10 +8801,10 @@ for the overloads with no parameters by those names. +@@ -8803,10 +8803,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8707,7 +8698,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -8869,10 +8869,10 @@ for the overloads with no parameters by those names. +@@ -8871,10 +8871,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8721,7 +8712,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -8943,10 +8943,10 @@ for the overloads with no parameters by those names. +@@ -8945,10 +8945,10 @@ for the overloads with no parameters by those names. \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8735,7 +8726,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -9089,10 +9089,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. +@@ -9091,10 +9091,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8749,7 +8740,7 @@ index efe3f977..c196ba1b 100644 \pnum For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and -@@ -9327,10 +9327,10 @@ for the overloads with no parameters by those names. +@@ -9329,10 +9329,10 @@ for the overloads with no parameters by those names. \range{first}{nth} and \range{nth}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8763,7 +8754,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -9710,7 +9710,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9712,7 +9712,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -8772,7 +8763,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -9737,7 +9737,7 @@ Let $N = \tcode{last - first}$: +@@ -9739,7 +9739,7 @@ Let $N = \tcode{last - first}$: For the non-parallel algorithm overloads, exactly $N$ applications of the predicate and projection. At most $N / 2$ swaps if the type of \tcode{first} meets @@ -8781,7 +8772,7 @@ index efe3f977..c196ba1b 100644 for the overloads in namespace \tcode{std} or models \libconcept{bidirectional_iterator} for the overloads in namespace \tcode{ranges}, -@@ -9790,10 +9790,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9792,10 +9792,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8795,7 +8786,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -10190,10 +10190,10 @@ for the overloads with no parameters by those names. +@@ -10192,10 +10192,10 @@ for the overloads with no parameters by those names. sorted with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8809,7 +8800,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -10932,10 +10932,10 @@ The range \range{first}{last - 1} +@@ -10934,10 +10934,10 @@ The range \range{first}{last - 1} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8823,7 +8814,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -10985,10 +10985,10 @@ The range \range{first}{last} +@@ -10987,10 +10987,10 @@ The range \range{first}{last} is a valid non-empty heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8837,7 +8828,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -11041,10 +11041,10 @@ for the overloads with no parameters by those names. +@@ -11043,10 +11043,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8851,7 +8842,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -11094,10 +11094,10 @@ The range \range{first}{last} is +@@ -11096,10 +11096,10 @@ The range \range{first}{last} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8865,7 +8856,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -11284,7 +11284,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8885,7 +8876,7 @@ index efe3f977..c196ba1b 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11367,7 +11367,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8905,7 +8896,7 @@ index efe3f977..c196ba1b 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11452,7 +11452,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8925,7 +8916,7 @@ index efe3f977..c196ba1b 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11721,7 +11721,7 @@ for the overloads with no parameter \tcode{proj}. +@@ -11723,7 +11723,7 @@ for the overloads with no parameter \tcode{proj}. \expects \tcode{bool(invoke(comp, invoke(proj, hi), invoke(proj, lo)))} is \tcode{false}. For the first form, type \tcode{T} @@ -8934,7 +8925,7 @@ index efe3f977..c196ba1b 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11924,7 +11924,7 @@ for overloads with no parameters by those names. +@@ -11926,7 +11926,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8943,7 +8934,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -11983,7 +11983,7 @@ for overloads with no parameters by those names. +@@ -11985,7 +11985,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8952,7 +8943,7 @@ index efe3f977..c196ba1b 100644 \pnum \effects -@@ -12302,8 +12302,8 @@ template +@@ -12304,8 +12304,8 @@ template \pnum \expects \tcode{T} meets @@ -8963,7 +8954,7 @@ index efe3f977..c196ba1b 100644 In the range \crange{first}{last}, \tcode{binary_op} neither modifies elements nor invalidates iterators or subranges. -@@ -12425,7 +12425,7 @@ are convertible to \tcode{T}. +@@ -12427,7 +12427,7 @@ are convertible to \tcode{T}. \expects \begin{itemize} \item @@ -8972,7 +8963,7 @@ index efe3f977..c196ba1b 100644 \item \tcode{binary_op} neither invalidates iterators or subranges, nor modifies elements in the range \crange{first}{last}. -@@ -12469,8 +12469,8 @@ template}. +@@ -13166,7 +13166,7 @@ that denotes an object of type \tcode{minus<>}. \begin{itemize} \item For the overloads with no \tcode{ExecutionPolicy}, @@ -9141,7 +9132,7 @@ index e653b348..2adaa033 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index ed0a8d5c..f4136f9b 100644 +index 6e99784a..a8d4d24a 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9310,10 +9301,10 @@ index 6058ccab..7586f5cb 100644 \pnum If an iterator of type \tcode{directory_iterator} reports an error or diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index b668fdac..d01e3aa2 100644 +index cc034328..9b6bf373 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex -@@ -1862,7 +1862,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1866,7 +1866,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9322,7 +9313,7 @@ index b668fdac..d01e3aa2 100644 {p{1in}p{4.15in}} \topline \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep -@@ -1889,7 +1889,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1893,7 +1893,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9331,8 +9322,8 @@ index b668fdac..d01e3aa2 100644 {p{1in}p{1in}p{1in}p{1.9in}} \topline \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Return value} & \hdstyle{Post-condition} \\ \capsep -@@ -1903,7 +1903,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. - \tcode{u.\~T()} & All resources owned by \tcode{u} are reclaimed, no exception is propagated. \\ \rowsep +@@ -1907,7 +1907,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. + \tcode{a.\~T()} & All resources owned by \tcode{a} are reclaimed, no exception is propagated. \\ \rowsep \multicolumn{2}{|l|}{ \begin{tailnote} - Array types and non-object types are not \oldconcept{Destructible}. @@ -9340,7 +9331,7 @@ index b668fdac..d01e3aa2 100644 \end{tailnote} } \\ \end{oldconcepttable} -@@ -1982,7 +1982,7 @@ void value_swap(T&& t, U&& u) { +@@ -1986,7 +1986,7 @@ void value_swap(T&& t, U&& u) { // for rvalues and lvalues } @@ -9349,7 +9340,7 @@ index b668fdac..d01e3aa2 100644 template void lv_swap(T& t1, T& t2) { using std::swap; -@@ -2019,9 +2019,9 @@ int main() { +@@ -2023,9 +2023,9 @@ int main() { A \oldconcept{NullablePointer} type is a pointer-like type that supports null values. A type \tcode{P} meets the \oldconcept{\-Nullable\-Pointer} requirements if \begin{itemize} @@ -9362,7 +9353,7 @@ index b668fdac..d01e3aa2 100644 \item the expressions shown in \tref{cpp17.nullablepointer} are valid and have the indicated semantics, and -@@ -2097,8 +2097,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. +@@ -2101,8 +2101,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. A type \tcode{H} meets the \defnoldconcept{Hash} requirements if \begin{itemize} \item it is a function object type\iref{function.objects}, @@ -9373,7 +9364,7 @@ index b668fdac..d01e3aa2 100644 \item the expressions shown in \tref{cpp17.hash} are valid and have the indicated semantics. \end{itemize} -@@ -2782,7 +2782,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2786,7 +2786,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be copied when the client container is copy-assigned; if so, \tcode{X} shall meet @@ -9382,7 +9373,7 @@ index b668fdac..d01e3aa2 100644 the copy operation shall not throw exceptions. \pnum -@@ -2804,7 +2804,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2808,7 +2808,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be moved when the client container is move-assigned; if so, \tcode{X} shall meet @@ -9391,7 +9382,7 @@ index b668fdac..d01e3aa2 100644 the move operation shall not throw exceptions. \pnum -@@ -2826,7 +2826,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2830,7 +2830,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be swapped when the client container is swapped; if so, @@ -9400,7 +9391,7 @@ index b668fdac..d01e3aa2 100644 the \tcode{swap} operation shall not throw exceptions. \pnum -@@ -2856,7 +2856,7 @@ Default: \tcode{is_empty::type} +@@ -2860,7 +2860,7 @@ Default: \tcode{is_empty::type} \pnum An allocator type \tcode{X} shall meet the @@ -9409,7 +9400,7 @@ index b668fdac..d01e3aa2 100644 The \tcode{XX::pointer}, \tcode{XX::const_pointer}, \tcode{XX::void_pointer}, and \tcode{XX::const_void_pointer} types shall meet the \oldconcept{Nullable\-Pointer} requirements (\tref{cpp17.nullablepointer}). -@@ -2864,7 +2864,7 @@ No constructor, +@@ -2868,7 +2868,7 @@ No constructor, comparison operator function, copy operation, move operation, or swap operation on these pointer types shall exit via an exception. \tcode{XX::pointer} and \tcode{XX::const_pointer} shall also meet the requirements for @@ -9592,7 +9583,7 @@ index f2964f90..eddd5794 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index 7541a534..e7f1ce51 100644 +index 36a2a88e..1a731050 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -95,12 +95,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -10197,7 +10188,7 @@ index 7541a534..e7f1ce51 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index 56017d80..7d576b59 100644 +index 82e20d65..6651e2d3 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul @@ -10349,7 +10340,7 @@ index 099fd5f3..d906a754 100644 meets the constexpr iterator requirements\iref{iterator.requirements.general}, whose \tcode{value_type} is the template parameter \tcode{charT}. diff --git a/source/support.tex b/source/support.tex -index 54ed6da8..9158f6fb 100644 +index cb42f682..0c8f2758 100644 --- a/source/support.tex +++ b/source/support.tex @@ -3657,11 +3657,11 @@ namespace std { @@ -10388,7 +10379,7 @@ index 54ed6da8..9158f6fb 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index dd7d639f..277d15be 100644 +index 7fbc2b5b..7b9503eb 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10451,7 +10442,7 @@ index dd7d639f..277d15be 100644 the following expressions are well-formed, have type \tcode{bool}, and have the specified semantics (\tcode{m} denotes a value of type \tcode{L}, -@@ -4510,7 +4510,7 @@ namespace std { +@@ -4447,7 +4447,7 @@ namespace std { \indexlibraryglobal{atomic}% \pnum The template argument for \tcode{T} shall meet the @@ -10460,7 +10451,7 @@ index dd7d639f..277d15be 100644 The program is ill-formed if any of \begin{itemize} \item \tcode{is_trivially_copyable_v}, -@@ -7347,11 +7347,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, +@@ -7284,11 +7284,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, They meet the requirements set out in \ref{thread.mutex.requirements.mutex}. In this description, \tcode{m} denotes an object of a mutex type. \begin{note} @@ -10474,7 +10465,7 @@ index dd7d639f..277d15be 100644 If initialization of an object of a mutex type fails, an exception of type \tcode{system_error} is thrown. The mutex types are neither copyable nor movable. -@@ -7620,7 +7620,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de +@@ -7557,7 +7557,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de object of an instantiation of \link{\tcode{time_point}}{time.point}. \begin{note} @@ -10483,7 +10474,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -7832,7 +7832,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally +@@ -7769,7 +7769,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally meet the requirements set out below. In this description, \tcode{m} denotes an object of a shared mutex type. \begin{note} @@ -10492,7 +10483,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.shared}. \end{note} -@@ -8009,7 +8009,7 @@ meet the requirements set out below. In this description, +@@ -7946,7 +7946,7 @@ meet the requirements set out below. In this description, \tcode{abs_time} denotes an object of an instantiation of \link{\tcode{time_point}}{time.point}. \begin{note} @@ -10501,7 +10492,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.shared.timed}. \end{note} -@@ -8219,7 +8219,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable +@@ -8156,7 +8156,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable object throughout the \tcode{lock_guard} object's \deflink{lifetime}{basic.life}. The behavior of a program is undefined if the lockable object referenced by \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} @@ -10510,7 +10501,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.basic}. \indexlibraryctor{lock_guard}% -@@ -8298,12 +8298,12 @@ object. +@@ -8235,12 +8235,12 @@ object. If \tcode{sizeof...(MutexTypes)} is one, let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. \tcode{Mutex} @@ -10525,7 +10516,7 @@ index dd7d639f..277d15be 100644 and there is no member \tcode{mutex_type}. \end{itemize} -@@ -8418,17 +8418,17 @@ copyable but are movable. The behavior of a program is undefined if the containe +@@ -8355,17 +8355,17 @@ copyable but are movable. The behavior of a program is undefined if the containe \tcode{pm} is not null and the lockable object pointed to by \tcode{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied @@ -10549,7 +10540,7 @@ index dd7d639f..277d15be 100644 \end{note} \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} -@@ -8478,7 +8478,7 @@ unique_lock(mutex_type& m, try_to_lock_t); +@@ -8415,7 +8415,7 @@ unique_lock(mutex_type& m, try_to_lock_t); \begin{itemdescr} \pnum \expects @@ -10558,7 +10549,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8520,7 +8520,7 @@ template +@@ -8457,7 +8457,7 @@ template \pnum \expects The supplied \tcode{Mutex} type meets the @@ -10567,7 +10558,7 @@ index dd7d639f..277d15be 100644 \pnum \effects -@@ -8542,7 +8542,7 @@ template +@@ -8479,7 +8479,7 @@ template \begin{itemdescr} \pnum \expects @@ -10576,7 +10567,7 @@ index dd7d639f..277d15be 100644 \pnum \effects -@@ -8629,7 +8629,7 @@ bool try_lock(); +@@ -8566,7 +8566,7 @@ bool try_lock(); \begin{itemdescr} \pnum \expects @@ -10585,7 +10576,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8668,7 +8668,7 @@ template +@@ -8605,7 +8605,7 @@ template \begin{itemdescr} \pnum \expects @@ -10594,7 +10585,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.timed}. \pnum -@@ -8707,7 +8707,7 @@ template +@@ -8644,7 +8644,7 @@ template \begin{itemdescr} \pnum \expects @@ -10603,7 +10594,7 @@ index dd7d639f..277d15be 100644 \pnum \effects -@@ -8900,16 +8900,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type +@@ -8837,16 +8837,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type is undefined if the contained pointer \tcode{pm} is not null and the lockable object pointed to by \tcode{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied @@ -10624,7 +10615,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -8994,7 +8994,7 @@ template +@@ -8931,7 +8931,7 @@ template \begin{itemdescr} \pnum \expects @@ -10633,7 +10624,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9018,7 +9018,7 @@ template +@@ -8955,7 +8955,7 @@ template \begin{itemdescr} \pnum \expects @@ -10642,7 +10633,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9143,7 +9143,7 @@ template +@@ -9080,7 +9080,7 @@ template \begin{itemdescr} \pnum \expects @@ -10651,7 +10642,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9183,7 +9183,7 @@ template +@@ -9120,7 +9120,7 @@ template \begin{itemdescr} \pnum \expects @@ -10660,7 +10651,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9322,7 +9322,7 @@ template int try_lock(L1&, L2&, L3&...); +@@ -9259,7 +9259,7 @@ template int try_lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10669,7 +10660,7 @@ index dd7d639f..277d15be 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9351,7 +9351,7 @@ template void lock(L1&, L2&, L3&...); +@@ -9288,7 +9288,7 @@ template void lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10678,7 +10669,7 @@ index dd7d639f..277d15be 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -10017,7 +10017,7 @@ This can happen if the re-locking of the mutex throws an exception. +@@ -9954,7 +9954,7 @@ This can happen if the re-locking of the mutex throws an exception. \pnum In \ref{thread.condition.condvarany}, template arguments for template parameters named \tcode{Lock} @@ -10687,7 +10678,7 @@ index dd7d639f..277d15be 100644 requirements\iref{thread.req.lockable.basic}. \begin{note} All of the standard -@@ -10955,24 +10955,24 @@ execute atomically. +@@ -10892,24 +10892,24 @@ execute atomically. \pnum \tcode{CompletionFunction} shall meet the @@ -10718,7 +10709,7 @@ index dd7d639f..277d15be 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -11467,7 +11467,7 @@ namespace std { +@@ -11404,7 +11404,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10727,7 +10718,7 @@ index dd7d639f..277d15be 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -11799,7 +11799,7 @@ namespace std { +@@ -11736,7 +11736,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10736,7 +10727,7 @@ index dd7d639f..277d15be 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -12105,7 +12105,7 @@ namespace std { +@@ -12042,7 +12042,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10745,7 +10736,7 @@ index dd7d639f..277d15be 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -13043,7 +13043,7 @@ the expression \tcode{d(ptr)} is valid. +@@ -12980,7 +12980,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -10754,7 +10745,7 @@ index dd7d639f..277d15be 100644 \pnum If \tcode{D} is trivially copyable, -@@ -13101,7 +13101,7 @@ namespace std { +@@ -13038,7 +13038,7 @@ namespace std { \pnum This class meets the requirements of @@ -10763,7 +10754,7 @@ index dd7d639f..277d15be 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -13249,8 +13249,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -13186,8 +13186,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -10774,7 +10765,7 @@ index dd7d639f..277d15be 100644 \pnum \effects -@@ -13442,7 +13442,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -13379,7 +13379,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -10784,10 +10775,10 @@ index dd7d639f..277d15be 100644 \pnum \tcode{T} may be an incomplete type. diff --git a/source/time.tex b/source/time.tex -index 175e3ab5..dec0fb9f 100644 +index 2ff12f44..f2524afb 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -1039,13 +1039,13 @@ SI definition is a measure of the quality of implementation. +@@ -1033,13 +1033,13 @@ SI definition is a measure of the quality of implementation. A type \tcode{TC} meets the \defnoldconcept{TrivialClock} requirements if \begin{itemize} \item @@ -10805,7 +10796,7 @@ index 175e3ab5..dec0fb9f 100644 requirements and the requirements of numeric types\iref{numeric.requirements}, \begin{note} -@@ -1203,15 +1203,15 @@ template struct is_clock; +@@ -1197,15 +1197,15 @@ template struct is_clock; \end{itemdecl} \pnum @@ -10825,7 +10816,7 @@ index 175e3ab5..dec0fb9f 100644 unless it meets all of the following conditions: \begin{itemize} \item the \grammarterm{qualified-id}s -@@ -2632,7 +2632,7 @@ template +@@ -2626,7 +2626,7 @@ template \pnum The types defined in \ref{time.clock} meet the @@ -10834,7 +10825,7 @@ index 175e3ab5..dec0fb9f 100644 requirements\iref{time.clock.req} unless otherwise specified. -@@ -2850,7 +2850,7 @@ which is \tcode{10'957 * 86'400s + 22s}. \\ +@@ -2844,7 +2844,7 @@ which is \tcode{10'957 * 86'400s + 22s}. \\ \end{example} \pnum @@ -10843,7 +10834,7 @@ index 175e3ab5..dec0fb9f 100644 unless the implementation can guarantee that \tcode{utc_clock::now()} does not propagate an exception. \begin{note} -@@ -3069,7 +3069,7 @@ so 2000-01-01 00:00:00 UTC is equivalent to 2000-01-01 00:00:32 TAI +@@ -3063,7 +3063,7 @@ so 2000-01-01 00:00:00 UTC is equivalent to 2000-01-01 00:00:32 TAI (22s plus the initial 10s offset). \pnum @@ -10852,7 +10843,7 @@ index 175e3ab5..dec0fb9f 100644 unless the implementation can guarantee that \tcode{tai_clock::now()} does not propagate an exception. \begin{note} -@@ -3231,7 +3231,7 @@ GPS is behind TAI by 19s due to the 10s offset between 1958 and 1970 +@@ -3225,7 +3225,7 @@ GPS is behind TAI by 19s due to the 10s offset between 1958 and 1970 and the additional 9 leap seconds inserted between 1970 and 1980. \pnum @@ -10861,7 +10852,7 @@ index 175e3ab5..dec0fb9f 100644 unless the implementation can guarantee that \tcode{gps_clock::now()} does not propagate an exception. \begin{note} -@@ -3368,7 +3368,7 @@ namespace std::chrono { +@@ -3362,7 +3362,7 @@ namespace std::chrono { \pnum \tcode{file_clock} is an alias for a type @@ -10870,7 +10861,7 @@ index 175e3ab5..dec0fb9f 100644 using a signed arithmetic type for \tcode{file_clock::rep}. \tcode{file_clock} is used to create the \tcode{time_point} system used for \tcode{file_time_type}\iref{filesystems}. -@@ -3971,8 +3971,8 @@ It normally holds values in the range 1 to 31, +@@ -3965,8 +3965,8 @@ It normally holds values in the range 1 to 31, but may hold non-negative values outside this range. It can be constructed with any \tcode{unsigned} value, which will be subsequently truncated to fit into \tcode{day}'s unspecified internal storage. @@ -10881,7 +10872,7 @@ index 175e3ab5..dec0fb9f 100644 and participates in basic arithmetic with \tcode{days} objects, which represent a difference between two \tcode{day} objects. -@@ -4264,8 +4264,8 @@ It normally holds values in the range 1 to 12, +@@ -4258,8 +4258,8 @@ It normally holds values in the range 1 to 12, but may hold non-negative values outside this range. It can be constructed with any \tcode{unsigned} value, which will be subsequently truncated to fit into \tcode{month}'s unspecified internal storage. @@ -10892,7 +10883,7 @@ index 175e3ab5..dec0fb9f 100644 and participates in basic arithmetic with \tcode{months} objects, which represent a difference between two \tcode{month} objects. -@@ -4574,8 +4574,8 @@ namespace std::chrono { +@@ -4568,8 +4568,8 @@ namespace std::chrono { It can represent values in the range \crange{min()}{max()}. It can be constructed with any \tcode{int} value, which will be subsequently truncated to fit into \tcode{year}'s unspecified internal storage. @@ -10903,7 +10894,7 @@ index 175e3ab5..dec0fb9f 100644 and participates in basic arithmetic with \tcode{years} objects, which represent a difference between two \tcode{year} objects. -@@ -4929,10 +4929,10 @@ corresponding to Sunday through Saturday, but +@@ -4923,10 +4923,10 @@ corresponding to Sunday through Saturday, but it may hold non-negative values outside this range. It can be constructed with any \tcode{unsigned} value, which will be subsequently truncated to fit into \tcode{weekday}'s unspecified internal storage. @@ -10916,7 +10907,7 @@ index 175e3ab5..dec0fb9f 100644 because there is no universal consensus on which day is the first day of the week. \tcode{weekday}'s arithmetic operations treat the days of the week as a circular range, with no beginning and no end. -@@ -5512,8 +5512,8 @@ namespace std::chrono { +@@ -5506,8 +5506,8 @@ namespace std::chrono { \pnum \tcode{month_day} represents a specific day of a specific month, but with an unspecified year. @@ -10927,7 +10918,7 @@ index 175e3ab5..dec0fb9f 100644 \pnum \tcode{month_day} is a trivially copyable and standard-layout class type. -@@ -6013,8 +6013,8 @@ namespace std::chrono { +@@ -6007,8 +6007,8 @@ namespace std::chrono { \tcode{year_month} represents a specific month of a specific year, but with an unspecified day. \tcode{year_month} is a field-based time point with a resolution of \tcode{months}. @@ -10938,7 +10929,7 @@ index 175e3ab5..dec0fb9f 100644 \pnum \tcode{year_month} is a trivially copyable and standard-layout class type. -@@ -6369,8 +6369,8 @@ but not \tcode{days}-oriented arithmetic. +@@ -6363,8 +6363,8 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -10949,7 +10940,7 @@ index 175e3ab5..dec0fb9f 100644 \pnum \tcode{year_month_day} is a trivially copyable and standard-layout class type. -@@ -6830,8 +6830,8 @@ but not \tcode{days}-oriented arithmetic. +@@ -6824,8 +6824,8 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -10960,7 +10951,7 @@ index 175e3ab5..dec0fb9f 100644 \pnum \tcode{year_month_day_last} is a trivially copyable and standard-layout class type. -@@ -7201,7 +7201,7 @@ but not \tcode{days}-oriented arithmetic. +@@ -7195,7 +7195,7 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -10969,7 +10960,7 @@ index 175e3ab5..dec0fb9f 100644 \pnum \tcode{year_month_weekday} is a trivially copyable and standard-layout class type. -@@ -7594,7 +7594,7 @@ but not \tcode{days}-oriented arithmetic. +@@ -7588,7 +7588,7 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -10978,7 +10969,7 @@ index 175e3ab5..dec0fb9f 100644 \pnum \tcode{year_month_weekday_last} is a trivially copyable and standard-layout class type. -@@ -8844,7 +8844,7 @@ The \tcode{tzdb_list} object contains a list of \tcode{tzdb} objects. +@@ -8838,7 +8838,7 @@ The \tcode{tzdb_list} object contains a list of \tcode{tzdb} objects. \pnum \tcode{tzdb_list::const_iterator} is a constant iterator @@ -10987,7 +10978,7 @@ index 175e3ab5..dec0fb9f 100644 and has a value type of \tcode{tzdb}. \indexlibrarymember{front}{tzdb_list}% -@@ -11555,7 +11555,7 @@ template<> struct hash; +@@ -11549,7 +11549,7 @@ template<> struct hash; The specializations are enabled\iref{unord.hash}. \begin{note} All the \tcode{hash} specializations listed above meet the @@ -10997,7 +10988,7 @@ index 175e3ab5..dec0fb9f 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index 58252722..e9676caf 100644 +index abe9bd67..bcfb38a3 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -258,9 +258,9 @@ template @@ -11048,7 +11039,7 @@ index 58252722..e9676caf 100644 with a member typedef \tcode{type} that names the type \tcode{add_const_t}. \pnum -@@ -3118,7 +3118,7 @@ template +@@ -3124,7 +3124,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -11057,7 +11048,7 @@ index 58252722..e9676caf 100644 \pnum \begin{note} -@@ -4004,7 +4004,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); +@@ -4010,7 +4010,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11066,7 +11057,7 @@ index 58252722..e9676caf 100644 \pnum \effects -@@ -4061,7 +4061,7 @@ using const_iterator = @\impdef@; +@@ -4067,7 +4067,7 @@ using const_iterator = @\impdef@; \pnum These types model \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, @@ -11075,7 +11066,7 @@ index 58252722..e9676caf 100644 meet the requirements for constexpr iterators\iref{iterator.requirements.general}, with value type \tcode{remove_cv_t}. The reference type is \tcode{T\&} for \tcode{iterator} and -@@ -5046,7 +5046,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5056,7 +5056,7 @@ template constexpr bool operator==(const optional& x, const The expression \tcode{*x == *y} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11084,7 +11075,7 @@ index 58252722..e9676caf 100644 \end{note} \pnum -@@ -5237,7 +5237,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5247,7 +5247,7 @@ template constexpr bool operator==(const optional& x, const The expression \tcode{*x == v} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11093,7 +11084,7 @@ index 58252722..e9676caf 100644 \end{note} \pnum -@@ -5732,7 +5732,7 @@ is nested within\iref{intro.object} the +@@ -5742,7 +5742,7 @@ is nested within\iref{intro.object} the \pnum All types in \tcode{Types} shall meet @@ -11102,7 +11093,7 @@ index 58252722..e9676caf 100644 \pnum A program that instantiates the definition of \tcode{variant} with -@@ -6412,7 +6412,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); +@@ -6422,7 +6422,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11111,7 +11102,7 @@ index 58252722..e9676caf 100644 \pnum \effects -@@ -6457,7 +6457,7 @@ template struct variant_size; +@@ -6467,7 +6467,7 @@ template struct variant_size; \begin{itemdescr} \pnum All specializations of \tcode{variant_size} meet the @@ -11120,7 +11111,7 @@ index 58252722..e9676caf 100644 with a base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -6470,7 +6470,7 @@ template struct variant_size; +@@ -6480,7 +6480,7 @@ template struct variant_size; \pnum Let \tcode{VS} denote \tcode{variant_size} of the cv-unqualified type \tcode{T}. Then each specialization of the template meets the @@ -11129,7 +11120,7 @@ index 58252722..e9676caf 100644 base characteristic of \tcode{integral_constant}. \end{itemdescr} -@@ -6490,7 +6490,7 @@ template struct variant_alternative; +@@ -6500,7 +6500,7 @@ template struct variant_alternative; \pnum Let \tcode{VA} denote \tcode{variant_alternative} of the cv-unqualified type \tcode{T}. Then each specialization of the template @@ -11138,7 +11129,7 @@ index 58252722..e9676caf 100644 member typedef \tcode{type} that names the type \tcode{add_const_t}. \end{itemdescr} -@@ -7218,7 +7218,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. +@@ -7228,7 +7228,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. \pnum \expects @@ -11147,7 +11138,7 @@ index 58252722..e9676caf 100644 \pnum \effects -@@ -7246,7 +7246,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7256,7 +7256,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11156,7 +11147,7 @@ index 58252722..e9676caf 100644 \pnum \effects -@@ -7279,7 +7279,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7289,7 +7289,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11165,7 +11156,7 @@ index 58252722..e9676caf 100644 \pnum \effects -@@ -7364,7 +7364,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7374,7 +7374,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11174,7 +11165,7 @@ index 58252722..e9676caf 100644 \pnum \effects -@@ -7399,7 +7399,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7409,7 +7409,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11183,7 +11174,7 @@ index 58252722..e9676caf 100644 \pnum \effects -@@ -7443,7 +7443,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7453,7 +7453,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11192,7 +11183,7 @@ index 58252722..e9676caf 100644 \pnum \effects -@@ -8149,9 +8149,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -8159,9 +8159,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum When \tcode{T} is not \cv{} \tcode{void}, it shall meet @@ -11204,7 +11195,7 @@ index 58252722..e9676caf 100644 \rSec3[expected.object.cons]{Constructors} -@@ -9391,7 +9391,7 @@ template friend constexpr bool operator==(const expected& x, const T2& +@@ -9401,7 +9401,7 @@ template friend constexpr bool operator==(const expected& x, const T2& The expression \tcode{*x == v} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11213,7 +11204,7 @@ index 58252722..e9676caf 100644 \end{note} \pnum -@@ -9528,7 +9528,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -9538,7 +9538,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum \tcode{E} shall meet the requirements of @@ -11222,7 +11213,7 @@ index 58252722..e9676caf 100644 \rSec3[expected.void.cons]{Constructors} -@@ -11553,8 +11553,8 @@ is ill-formed. +@@ -11563,8 +11563,8 @@ is ill-formed. \indextext{call wrapper}% \indextext{call wrapper!simple}% \indextext{call wrapper!forwarding}% @@ -11233,7 +11224,7 @@ index 58252722..e9676caf 100644 An \defn{argument forwarding call wrapper} is a call wrapper that can be called with an arbitrary argument list and delivers the arguments to the target object as references. -@@ -11594,7 +11594,7 @@ with references as described in the corresponding forwarding steps. +@@ -11604,7 +11604,7 @@ with references as described in the corresponding forwarding steps. \pnum \label{term.simple.call.wrapper}% A \defn{simple call wrapper} is a perfect forwarding call wrapper that meets @@ -11242,7 +11233,7 @@ index 58252722..e9676caf 100644 and whose copy constructor, move constructor, and assignment operators are constexpr functions that do not throw exceptions. -@@ -11697,7 +11697,7 @@ namespace std { +@@ -11707,7 +11707,7 @@ namespace std { \end{codeblock} \pnum @@ -11251,7 +11242,7 @@ index 58252722..e9676caf 100644 around a reference to an object or function of type \tcode{T}. \pnum -@@ -13151,7 +13151,7 @@ is \tcode{true}. +@@ -13161,7 +13161,7 @@ is \tcode{true}. \pnum \expects @@ -11260,7 +11251,7 @@ index 58252722..e9676caf 100644 \pnum \returns -@@ -13237,10 +13237,10 @@ is \tcode{true}. +@@ -13247,10 +13247,10 @@ is \tcode{true}. \pnum \expects @@ -11273,7 +11264,7 @@ index 58252722..e9676caf 100644 \pnum \returns -@@ -13306,7 +13306,7 @@ then \tcode{f != nullptr} is \tcode{true}. +@@ -13316,7 +13316,7 @@ then \tcode{f != nullptr} is \tcode{true}. \pnum \expects For each $\tcode{T}_i$ in \tcode{BoundArgs}, @@ -11282,7 +11273,7 @@ index 58252722..e9676caf 100644 \pnum \returns -@@ -13351,7 +13351,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. +@@ -13361,7 +13361,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. \pnum Specializations of the \tcode{is_bind_expression} template shall meet @@ -11291,7 +11282,7 @@ index 58252722..e9676caf 100644 provides a definition that has a base characteristic of \tcode{true_type} if \tcode{T} is a type returned from \tcode{bind}, otherwise it has a base characteristic of \tcode{false_type}. -@@ -13387,7 +13387,7 @@ The function template \tcode{bind} uses +@@ -13397,7 +13397,7 @@ The function template \tcode{bind} uses \pnum Specializations of the \tcode{is_placeholder} template shall meet @@ -11300,7 +11291,7 @@ index 58252722..e9676caf 100644 provides a definition that has the base characteristic of \tcode{integral_constant} if \tcode{T} is the type of \tcode{std::placeholders::_\placeholder{J}}, otherwise it has a -@@ -13437,7 +13437,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> +@@ -13447,7 +13447,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> \pnum \expects \tcode{FD} and each $\tcode{TD}_i$ meet @@ -11309,7 +11300,7 @@ index 58252722..e9676caf 100644 \tcode{\placeholdernc{INVOKE}(fd, $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc$, $\tcode{w}_N$)}\iref{func.require} is a valid expression for some values $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc{}$, $\tcode{w}_N$, where -@@ -13473,8 +13473,8 @@ the state entities of \tcode{g}. +@@ -13483,8 +13483,8 @@ the state entities of \tcode{g}. \pnum \begin{note} If all of \tcode{FD} and $\tcode{TD}_i$ meet @@ -11320,7 +11311,7 @@ index 58252722..e9676caf 100644 \end{note} \end{itemdescr} -@@ -13543,13 +13543,13 @@ The number \tcode{\placeholder{M}} of placeholders is +@@ -13553,13 +13553,13 @@ The number \tcode{\placeholder{M}} of placeholders is \impldef{number of placeholders for bind expressions}. \pnum @@ -11337,7 +11328,7 @@ index 58252722..e9676caf 100644 but if so, their copy assignment operators are constexpr functions that do not throw exceptions. -@@ -13817,7 +13817,7 @@ Let \tcode{FD} be \tcode{decay_t}. +@@ -13827,7 +13827,7 @@ Let \tcode{FD} be \tcode{decay_t}. \pnum \expects @@ -11346,7 +11337,7 @@ index 58252722..e9676caf 100644 \pnum \ensures -@@ -14242,9 +14242,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14252,9 +14252,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11358,7 +11349,7 @@ index 58252722..e9676caf 100644 \pnum \ensures -@@ -14294,9 +14294,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14304,9 +14304,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11370,7 +11361,7 @@ index 58252722..e9676caf 100644 \pnum \ensures -@@ -14336,9 +14336,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14346,9 +14346,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11382,7 +11373,7 @@ index 58252722..e9676caf 100644 \pnum \ensures -@@ -14660,8 +14660,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14670,8 +14670,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11393,7 +11384,7 @@ index 58252722..e9676caf 100644 \pnum \ensures -@@ -14716,8 +14716,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14726,8 +14726,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11404,7 +11395,7 @@ index 58252722..e9676caf 100644 \pnum \ensures -@@ -14762,8 +14762,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14772,8 +14772,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11415,7 +11406,7 @@ index 58252722..e9676caf 100644 \pnum \ensures -@@ -15278,7 +15278,7 @@ provided to the function call operator. +@@ -15290,7 +15290,7 @@ provided to the function call operator. \pnum Each specialization of a class template specified in \ref{func.search} @@ -11424,7 +11415,7 @@ index 58252722..e9676caf 100644 Template parameters named \begin{itemize} \item \tcode{ForwardIterator}, -@@ -15292,7 +15292,7 @@ Template parameters named +@@ -15304,7 +15304,7 @@ Template parameters named of templates specified in \ref{func.search} shall meet the same requirements and semantics as specified in \ref{algorithms.general}. @@ -11433,7 +11424,7 @@ index 58252722..e9676caf 100644 requirements (\tref{cpp17.hash}). \pnum -@@ -15401,9 +15401,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, +@@ -15413,9 +15413,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, \pnum \expects The value type of \tcode{RandomAccessIterator1} meets @@ -11446,7 +11437,7 @@ index 58252722..e9676caf 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15502,8 +15502,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, +@@ -15514,8 +15514,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, \begin{itemdescr} \pnum \expects @@ -11457,7 +11448,7 @@ index 58252722..e9676caf 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15576,7 +15576,7 @@ as the default hash function. +@@ -15588,7 +15588,7 @@ as the default hash function. Each specialization of \tcode{hash} is either enabled or disabled, as described below. \begin{note} @@ -11466,7 +11457,7 @@ index 58252722..e9676caf 100644 disabled specializations do not. \end{note} Each header that declares the template \tcode{hash} -@@ -15603,17 +15603,17 @@ Disabled specializations of \tcode{hash} +@@ -15615,17 +15615,17 @@ Disabled specializations of \tcode{hash} are not function object types\iref{function.objects}. \begin{note} This means that the specialization of \tcode{hash} exists, but @@ -11493,7 +11484,7 @@ index 58252722..e9676caf 100644 2.43.0 -From 3b3c19914f00afbebee29eddb016865e6d6ddbfa Mon Sep 17 00:00:00 2001 +From 6d3783559d80dcb25e603125353d93fa05567811 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 Subject: [PATCH 9/9] Remove awkward \linebreaks. @@ -11507,14 +11498,14 @@ Subject: [PATCH 9/9] Remove awkward \linebreaks. source/numerics.tex | 4 ++-- source/ranges.tex | 38 +++++++++++++++---------------- source/threads.tex | 8 +++---- - source/utilities.tex | 10 ++++---- - 9 files changed, 68 insertions(+), 69 deletions(-) + source/utilities.tex | 8 +++---- + 9 files changed, 67 insertions(+), 68 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index c196ba1b..4de0042f 100644 +index 23502107..15374649 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -7070,7 +7070,7 @@ Let: +@@ -7072,7 +7072,7 @@ Let: \tcode{invoke(op, invoke(proj, *(first1 + (i - result))))} for unary transforms defined in namespace \tcode{ranges}; \item @@ -11523,7 +11514,7 @@ index c196ba1b..4de0042f 100644 for binary transforms defined in namespace \tcode{ranges}. \end{itemize} \end{itemize} -@@ -14191,7 +14191,7 @@ namespace ranges { +@@ -14185,7 +14185,7 @@ namespace ranges { \pnum \constraints \tcode{is_unbounded_array_v} is \tcode{false}. @@ -11533,10 +11524,10 @@ index c196ba1b..4de0042f 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index 2f5de6f4..b8a1871a 100644 +index 7053f174..0e9a3e38 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -1456,7 +1456,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. +@@ -1461,7 +1461,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. \pnum \recommended If \tcode{R} models \tcode{ranges::\libconcept{approximately_sized_range}} and @@ -11545,7 +11536,7 @@ index 2f5de6f4..b8a1871a 100644 an implementation should not perform more than a single reallocation. \pnum -@@ -1828,7 +1828,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. +@@ -1833,7 +1833,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. \pnum \recommended If \tcode{R} models \tcode{ranges::\libconcept{approximately_sized_range}} and @@ -11554,7 +11545,7 @@ index 2f5de6f4..b8a1871a 100644 an implementation should not perform any reallocation. \end{itemdescr} -@@ -2444,8 +2444,7 @@ calling \tcode{ator_traits::template rebind_traits::dealloc +@@ -2449,8 +2449,7 @@ calling \tcode{ator_traits::template rebind_traits::dealloc Assigns \tcode{nh.ptr_} to \tcode{ptr_}. \item If \tcode{!alloc\textunderscore} or \tcode{ator_traits::propagate_on_container_move_assignment::value} @@ -11564,7 +11555,7 @@ index 2f5de6f4..b8a1871a 100644 \item Assigns \keyword{nullptr} to \tcode{nh.ptr_} and assigns \tcode{nullopt} to -@@ -7468,14 +7467,14 @@ template +@@ -7473,14 +7472,14 @@ template \pnum \expects \tcode{T} is \oldconcept{EmplaceConstructible} into \tcode{forward_list} @@ -11581,7 +11572,7 @@ index 2f5de6f4..b8a1871a 100644 \pnum \returns -@@ -10634,7 +10633,7 @@ template +@@ -10639,7 +10638,7 @@ template \pnum The expression \tcode{\exposid{is-vector-bool-reference}} is \tcode{true} @@ -11590,7 +11581,7 @@ index 2f5de6f4..b8a1871a 100644 for some type \tcode{Alloc} and \tcode{vector} is not a program-defined specialization. \end{itemdescr} -@@ -12025,7 +12024,7 @@ there is no effect. +@@ -12031,7 +12030,7 @@ there is no effect. Otherwise, let \tcode{r} be \tcode{equal_range(k)}. Constructs an object \tcode{u} of type \tcode{value_type} with \tcode{piecewise_construct, forward_as_tuple(std::forward(k)), @@ -11599,7 +11590,7 @@ index 2f5de6f4..b8a1871a 100644 If \tcode{equal_range(u.first) == r} is \tcode{false}, the behavior is undefined. Inserts \tcode{u} into \tcode{*this}. -@@ -17511,7 +17510,7 @@ template +@@ -17517,7 +17516,7 @@ template \pnum \effects Equivalent to \tcode{flat_map(sorted_unique, key_cont, mapped_cont)} and @@ -11608,7 +11599,7 @@ index 2f5de6f4..b8a1871a 100644 except that \tcode{\exposid{c}.keys} and \tcode{\exposid{c}.values} are constructed with uses-allocator construction\iref{allocator.uses.construction}. -@@ -17695,7 +17694,7 @@ template constexpr pair emplace(Args&&... args); +@@ -17701,7 +17700,7 @@ template constexpr pair emplace(Args&&... args); \pnum \effects Initializes an object \tcode{t} of type \tcode{pair} @@ -11617,7 +11608,7 @@ index 2f5de6f4..b8a1871a 100644 if the map already contains an element whose key is equivalent to \tcode{t.first}, \tcode{*this} is unchanged. -@@ -17951,7 +17950,7 @@ template +@@ -17957,7 +17956,7 @@ template \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11626,7 +11617,7 @@ index 2f5de6f4..b8a1871a 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18006,7 +18005,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. +@@ -18012,7 +18011,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11635,7 +11626,7 @@ index 2f5de6f4..b8a1871a 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18620,14 +18619,14 @@ template +@@ -18626,14 +18625,14 @@ template \pnum \effects Equivalent to \tcode{flat_multimap(key_cont, mapped_cont)} and @@ -11652,7 +11643,7 @@ index 2f5de6f4..b8a1871a 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -23188,7 +23187,7 @@ is representable as a value of type \tcode{index_type.} +@@ -23194,7 +23193,7 @@ is representable as a value of type \tcode{index_type.} \item If \exposid{rank_} is greater than one, then the product of @@ -11661,7 +11652,7 @@ index 2f5de6f4..b8a1871a 100644 all values \tcode{ext.extent($k$)} with $k$ in the range of \range{1}{\exposid{rank_}} is representable as a value of type \tcode{index_type}. -@@ -23267,7 +23266,7 @@ template +@@ -23273,7 +23272,7 @@ template \item If \exposid{rank_} is greater than \tcode{1} and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11670,7 +11661,7 @@ index 2f5de6f4..b8a1871a 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(0))) -@@ -23335,7 +23334,7 @@ is \tcode{true}. +@@ -23341,7 +23340,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11679,7 +11670,7 @@ index 2f5de6f4..b8a1871a 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(0))) -@@ -23733,7 +23732,7 @@ Implementations should not store this value +@@ -23739,7 +23738,7 @@ Implementations should not store this value if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. \begin{note} Using \tcode{extents} @@ -11688,7 +11679,7 @@ index 2f5de6f4..b8a1871a 100644 would achieve this. \end{note} \end{itemdescr} -@@ -23816,13 +23815,13 @@ is representable as a value of type \tcode{index_type}. +@@ -23822,13 +23821,13 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -11704,7 +11695,7 @@ index 2f5de6f4..b8a1871a 100644 \end{itemize} \pnum -@@ -23895,7 +23894,7 @@ template +@@ -23901,7 +23900,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11713,7 +11704,7 @@ index 2f5de6f4..b8a1871a 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -23963,7 +23962,7 @@ is \tcode{true}. +@@ -23969,7 +23968,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11722,7 +11713,7 @@ index 2f5de6f4..b8a1871a 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) -@@ -25622,7 +25621,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, +@@ -25628,7 +25627,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, \item \tcode{stride(k) * \exposid{de-ice}($s_k$.stride)} if $S_k$ is a specialization of \tcode{strided_slice} and @@ -11731,7 +11722,7 @@ index 2f5de6f4..b8a1871a 100644 \item otherwise, \tcode{stride($k$)}. \end{itemize} -@@ -26020,11 +26019,11 @@ is well-formed when treated as an unevaluated operand. +@@ -26026,11 +26025,11 @@ is well-formed when treated as an unevaluated operand. \begin{itemize} \item \tcode{decltype(submdspan_mapping(src.mapping(), slices...))} @@ -11745,7 +11736,7 @@ index 2f5de6f4..b8a1871a 100644 is \tcode{true}. \item -@@ -26054,11 +26053,11 @@ all of the following are \tcode{true}: +@@ -26060,11 +26059,11 @@ all of the following are \tcode{true}: \item $0 \le \tcode{\exposid{first_}(slices...)}$ $\le \tcode{\exposid{last_}<$k$>(src.extents(), slices...)}$ @@ -11760,7 +11751,7 @@ index 2f5de6f4..b8a1871a 100644 \item diff --git a/source/exec.tex b/source/exec.tex -index f4136f9b..dc1f2a5e 100644 +index a8d4d24a..23646135 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -3244,7 +3244,7 @@ except that \tcode{sch} is evaluated only once. @@ -11849,7 +11840,7 @@ index eddd5794..ceadf294 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index e7f1ce51..2f732db9 100644 +index 1a731050..b727a291 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -2534,7 +2534,7 @@ present as follows: @@ -11862,10 +11853,10 @@ index e7f1ce51..2f732db9 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index 7d576b59..90da4b4c 100644 +index 6651e2d3..8d3ac385 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -13807,7 +13807,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. +@@ -13793,7 +13793,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -11874,7 +11865,7 @@ index 7d576b59..90da4b4c 100644 \pnum \returns -@@ -14013,7 +14013,7 @@ template +@@ -13999,7 +13999,7 @@ template \mandates Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. @@ -11884,7 +11875,7 @@ index 7d576b59..90da4b4c 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index cd516a76..74722f48 100644 +index 095b3aca..380a7035 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -12038,10 +12029,10 @@ index cd516a76..74722f48 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index 277d15be..63ce5eb2 100644 +index 7b9503eb..e28c8648 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -3528,7 +3528,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, +@@ -3465,7 +3465,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12050,7 +12041,7 @@ index 277d15be..63ce5eb2 100644 \pnum \effects -@@ -4803,7 +4803,7 @@ For the \tcode{volatile} overload of this function, +@@ -4740,7 +4740,7 @@ For the \tcode{volatile} overload of this function, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12059,7 +12050,7 @@ index 277d15be..63ce5eb2 100644 \pnum \effects -@@ -6327,7 +6327,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de +@@ -6264,7 +6264,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12068,7 +12059,7 @@ index 277d15be..63ce5eb2 100644 \pnum \effects -@@ -6643,7 +6643,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire +@@ -6580,7 +6580,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12078,7 +12069,7 @@ index 277d15be..63ce5eb2 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index e9676caf..a9cda918 100644 +index bcfb38a3..895df40f 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -2062,7 +2062,7 @@ equals \tcode{tuple_size_v>}, @@ -12090,16 +12081,16 @@ index e9676caf..a9cda918 100644 \tcode{true}, and \item -@@ -3075,7 +3075,7 @@ struct basic_common_reference { - denotes a type. - \end{itemize} +@@ -3078,7 +3078,7 @@ denotes a type. + \pnum + \result The member \grammarterm{typedef-name} \tcode{type} denotes the type -\tcode{tuple, \linebreak{}UQual>...>}. +\tcode{tuple, UQual>...>}. \end{itemdescr} \indexlibrarymember{common_type}{tuple}% -@@ -4069,7 +4069,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and +@@ -4075,7 +4075,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and \pnum All requirements on container iterators\iref{container.reqmts} apply to @@ -12108,7 +12099,7 @@ index e9676caf..a9cda918 100644 \pnum Any operation that initializes or destroys the contained value of an optional object invalidates all iterators into that object. -@@ -8977,7 +8977,7 @@ constexpr const T&& value() const &&; +@@ -8987,7 +8987,7 @@ constexpr const T&& value() const &&; \pnum \mandates \tcode{is_copy_constructible_v} is \tcode{true} and @@ -12117,15 +12108,6 @@ index e9676caf..a9cda918 100644 \pnum \returns -@@ -14990,7 +14990,7 @@ that models \libconcept{copyable}. - \pnum - Within \ref{func.wrap.ref}, - \tcode{\placeholder{call-args}} is an argument pack with elements such that --\tcode{decltype((\placeholder{call-args}\linebreak{}))...} denote -+\tcode{decltype((\placeholder{call-args}))...} denote - \tcode{Args\&\&...} respectively. - - \rSec4[func.wrap.ref.ctor]{Constructors and assignment operators} -- 2.43.0 diff --git a/lastbuild.sig b/lastbuild.sig index 05dd9fbad2..640e9ffbd0 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ -htmlgen 42983f240e7a7623a03d34a83eca3c064c920c8b -draft ad99d5224a03821bcff46081195fed20f0afee31 -d8a803d15bc7d0de5e7f258de00e278cf6d12d98 htmlgen.patch +htmlgen eee5307c45c04761ef5c27956cbed742e08e5fb4 +draft 98ce5ac6fbce2338787adb9b1c842fcf8ebab37c +c312e8aec5bdafb199f3b0f435fd63c3599f2f4a htmlgen.patch From a56d897df82063c9cdf737a11442d0892a7d9c5f Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Mon, 15 Dec 2025 13:14:02 -0600 Subject: [PATCH 20/36] Update --- cxxdraft-htmlgen | 2 +- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 1929 ++++++++++++++++++++++------------------------ lastbuild.sig | 6 +- 5 files changed, 913 insertions(+), 1028 deletions(-) diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen index 42983f240e..28b6c103f5 160000 --- a/cxxdraft-htmlgen +++ b/cxxdraft-htmlgen @@ -1 +1 @@ -Subproject commit 42983f240e7a7623a03d34a83eca3c064c920c8b +Subproject commit 28b6c103f58b9b4305a7d15b224212f1727b7b05 diff --git a/draft b/draft index 98ce5ac6fb..1d9fdb066e 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 98ce5ac6fbce2338787adb9b1c842fcf8ebab37c +Subproject commit 1d9fdb066e95b7be58881f24977a20a51359097c diff --git a/gh-pages b/gh-pages index 6e7f49b523..551bd11729 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 6e7f49b52300f5cb2d5712e54af118633853b4c0 +Subproject commit 551bd117291a90dabe2194bbb6f3967c9ec73a22 diff --git a/htmlgen.patch b/htmlgen.patch index d62ff3bb21..650be36ffc 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From 2568c2db9e76e19217920d94caf563bc141db727 Mon Sep 17 00:00:00 2001 +From 25fa7a16a3a954e36753a09d8ad05ef0916ce6e3 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on @@ -10,7 +10,7 @@ Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index 78a03978..7a83b32c 100644 +index c427e154..f34638ff 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -324,7 +324,7 @@ Given @@ -22,7 +22,7 @@ index 78a03978..7a83b32c 100644 }; int main() { -@@ -2626,23 +2626,23 @@ namespace AB { +@@ -2628,23 +2628,23 @@ namespace AB { void h() { @@ -59,10 +59,10 @@ index 78a03978..7a83b32c 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 2bfc4057..dcaa4be0 100644 +index ca57b322..ce24309d 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -2924,7 +2924,7 @@ struct s2 { +@@ -2937,7 +2937,7 @@ struct s2 { } auto g() { return [] { @@ -75,7 +75,7 @@ index 2bfc4057..dcaa4be0 100644 2.43.0 -From d57679daa449937dee27051e53c6221259bb8162 Mon Sep 17 00:00:00 2001 +From 73205525edfade93e41de3375de335f395e6e18d Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 Subject: [PATCH 2/9] Use new link macros. @@ -87,7 +87,7 @@ Subject: [PATCH 2/9] Use new link macros. source/compatibility.tex | 4 +- source/concepts.tex | 12 +- source/containers.tex | 50 ++++---- - source/declarations.tex | 69 +++++----- + source/declarations.tex | 67 +++++----- source/diagnostics.tex | 6 +- source/exceptions.tex | 36 +++--- source/expressions.tex | 266 ++++++++++++++++++++------------------- @@ -98,7 +98,7 @@ Subject: [PATCH 2/9] Use new link macros. source/lex.tex | 6 +- source/lib-intro.tex | 71 +++++------ source/limits.tex | 2 +- - source/numerics.tex | 60 +++++---- + source/numerics.tex | 55 ++++---- source/overloading.tex | 64 +++++----- source/preprocessor.tex | 14 +-- source/statements.tex | 30 ++--- @@ -108,10 +108,10 @@ Subject: [PATCH 2/9] Use new link macros. source/threads.tex | 45 ++++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 606 insertions(+), 615 deletions(-) + 27 files changed, 602 insertions(+), 612 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index c6ea2cd6..9b4a8075 100644 +index 74ac223b..5bf27eb7 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -123,7 +123,7 @@ index c6ea2cd6..9b4a8075 100644 \pnum The following subclauses describe components for -@@ -10224,7 +10224,7 @@ In either case, twice as many projections as comparisons. +@@ -10243,7 +10243,7 @@ In either case, twice as many projections as comparisons. \pnum \remarks @@ -133,7 +133,7 @@ index c6ea2cd6..9b4a8075 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index 7a83b32c..4d017537 100644 +index f34638ff..ac68557f 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -162,7 +162,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -181,7 +181,7 @@ index 7a83b32c..4d017537 100644 an array operand, the set contains the potential results of that operand. \item If $E$ is a class member access expression\iref{expr.ref} of the form -@@ -411,16 +411,15 @@ the set contains the potential results of $E_1$. +@@ -412,16 +412,15 @@ the set contains the potential results of $E_1$. \item If $E$ is a class member access expression naming a static data member, the set contains the \grammarterm{id-expression} designating the data member. @@ -202,7 +202,7 @@ index 7a83b32c..4d017537 100644 contains the potential results of the right operand. \item Otherwise, the set is empty. \end{itemize} -@@ -582,8 +581,8 @@ implicitly-defined +@@ -583,8 +582,8 @@ implicitly-defined copy assignment or move assignment function for another class as specified in~\ref{class.copy.assign}. A constructor for a class is odr-used as specified @@ -213,7 +213,7 @@ index 7a83b32c..4d017537 100644 \pnum A local entity\iref{basic.pre} -@@ -655,7 +654,7 @@ void h() { +@@ -656,7 +655,7 @@ void h() { \pnum Every program shall contain at least one definition of every function or variable that is odr-used in that program @@ -222,7 +222,7 @@ index 7a83b32c..4d017537 100644 The definition can appear explicitly in the program, it can be found in the standard or a user-defined library, or (when appropriate) it is implicitly defined (see~\ref{class.default.ctor}, \ref{class.copy.ctor}, -@@ -703,9 +702,9 @@ The rules for declarations and expressions +@@ -704,9 +703,9 @@ The rules for declarations and expressions describe in which contexts complete class types are required. A class type \tcode{T} must be complete if \begin{itemize} @@ -235,7 +235,7 @@ index 7a83b32c..4d017537 100644 \item \tcode{T} is used as the allocated type or array element type in a \grammarterm{new-expression}\iref{expr.new}, or \item an lvalue-to-rvalue conversion is applied to -@@ -725,7 +724,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or +@@ -726,7 +725,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or \keyword{sizeof} operator\iref{expr.sizeof} is applied to an operand of type \tcode{T}, or \item a function with a return type or argument type of type \tcode{T} @@ -244,7 +244,7 @@ index 7a83b32c..4d017537 100644 \item a class with a base class of type \tcode{T} is defined\iref{class.derived}, or \item an lvalue of type \tcode{T} is assigned to\iref{expr.assign}, or -@@ -780,7 +779,7 @@ template specializations\iref{temp.spec.partial.match}, except that a name can r +@@ -781,7 +780,7 @@ template specializations\iref{temp.spec.partial.match}, except that a name can r a non-volatile const object with internal or no linkage if the object \begin{itemize} \item has the same literal type in all definitions of \tcode{D}, @@ -253,7 +253,7 @@ index 7a83b32c..4d017537 100644 \item is not odr-used in any definition of \tcode{D}, and \item has the same value in all definitions of \tcode{D}, \end{itemize} -@@ -2919,7 +2918,7 @@ are attached to the same module. +@@ -2921,7 +2920,7 @@ are attached to the same module. \indextext{linkage!\idxcode{inline} and}% \indextext{\idxcode{inline}!linkage of}% The name of an entity @@ -262,7 +262,7 @@ index 7a83b32c..4d017537 100644 has internal linkage if it is the name of \begin{itemize} \item -@@ -2960,7 +2959,7 @@ typedef declaration in which the class has the typedef name for linkage +@@ -2962,7 +2961,7 @@ typedef declaration in which the class has the typedef name for linkage purposes\iref{dcl.typedef}; or \item \indextext{enumeration!linkage of}% @@ -271,7 +271,7 @@ index 7a83b32c..4d017537 100644 in a typedef declaration in which the enumeration has the typedef name for linkage purposes\iref{dcl.typedef}; or \item an unnamed enumeration -@@ -3036,7 +3035,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. +@@ -3038,7 +3037,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. \pnum \indextext{linkage!no}% Names not covered by these rules have no linkage. Moreover, except as @@ -280,7 +280,7 @@ index 7a83b32c..4d017537 100644 linkage. \pnum -@@ -3394,8 +3393,8 @@ features of the language, such as references and virtual functions, might +@@ -3397,8 +3396,8 @@ features of the language, such as references and virtual functions, might involve additional memory locations that are not accessible to programs but are managed by the implementation. \end{note} @@ -291,7 +291,7 @@ index 7a83b32c..4d017537 100644 locations without interfering with each other. \pnum -@@ -3439,15 +3438,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but +@@ -3442,15 +3441,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but The constructs in a \Cpp{} program create, destroy, refer to, access, and manipulate objects. An \defn{object} is created @@ -310,7 +310,7 @@ index 7a83b32c..4d017537 100644 and in its period of destruction\iref{class.cdtor}. \begin{note} -@@ -3577,7 +3576,7 @@ A \defn{potentially-overlapping subobject} is either: +@@ -3584,7 +3583,7 @@ A \defn{potentially-overlapping subobject} is either: \begin{itemize} \item a base class subobject, or \item a non-static data member @@ -319,7 +319,7 @@ index 7a83b32c..4d017537 100644 \end{itemize} \pnum -@@ -3598,7 +3597,7 @@ Otherwise, the circumstances under which the object has zero size +@@ -3605,7 +3604,7 @@ Otherwise, the circumstances under which the object has zero size are \impldef{which non-standard-layout objects containing no data are considered empty}. \indextext{most derived object!bit-field}% @@ -328,7 +328,7 @@ index 7a83b32c..4d017537 100644 an object with nonzero size shall occupy one or more bytes of storage, including every byte that is occupied in full or in part -@@ -4174,16 +4173,16 @@ the result of the evaluation is the value so produced but is not erroneous: +@@ -4198,16 +4197,16 @@ the result of the evaluation is that erroneous value: is produced by the evaluation of: \begin{itemize} \item @@ -348,7 +348,7 @@ index 7a83b32c..4d017537 100644 \end{itemize} then the result of the operation is an indeterminate value or that erroneous value, respectively. -@@ -4374,8 +4373,8 @@ specified in~\ref{class.copy.elision}. +@@ -4398,8 +4397,8 @@ specified in~\ref{class.copy.elision}. \indextext{storage duration!dynamic|(} \pnum @@ -359,7 +359,7 @@ index 7a83b32c..4d017537 100644 \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -@@ -4539,9 +4538,9 @@ that would match a handler\iref{except.handle} of type +@@ -4563,9 +4562,9 @@ that would match a handler\iref{except.handle} of type \tcode{std::bad_alloc}\iref{bad.alloc}. \pnum @@ -372,7 +372,7 @@ index 7a83b32c..4d017537 100644 a coroutine state\iref{dcl.fct.def.coroutine}, or called indirectly through calls to the functions in the \Cpp{} standard library. -@@ -5047,9 +5046,9 @@ shall be destroyed before +@@ -5090,9 +5089,9 @@ shall be destroyed before impose requirements on implementations regarding the representation of types. There are two kinds of types: fundamental types and compound types. @@ -385,7 +385,7 @@ index 7a83b32c..4d017537 100644 \end{note} \pnum -@@ -5223,7 +5222,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, +@@ -5266,7 +5265,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, pointer types, pointer-to-member types\iref{basic.compound}, \tcode{std::meta::\brk{}info}, \tcode{std::nullptr_t}, and @@ -394,7 +394,7 @@ index 7a83b32c..4d017537 100644 types are collectively called \defnadjx{scalar}{types}{type}. \label{term.trivially.copyable.type}% -@@ -5257,7 +5256,7 @@ A type is a \defnadj{literal}{type} if it is: +@@ -5291,7 +5290,7 @@ A type is a \defnadj{literal}{type} if it is: \item a scalar type; or \item a reference type; or \item an array of literal type; or @@ -403,7 +403,7 @@ index 7a83b32c..4d017537 100644 has all of the following properties: \begin{itemize} \item it has a constexpr destructor\iref{dcl.constexpr}, -@@ -5291,8 +5290,8 @@ will be usable in a constant expression. +@@ -5325,8 +5324,8 @@ will be usable in a constant expression. Two types \cvqual{cv1} \tcode{T1} and \cvqual{cv2} \tcode{T2} are \defnadjx{layout-compatible}{types}{type} if \tcode{T1} and \tcode{T2} are the same type, @@ -413,8 +413,8 @@ index 7a83b32c..4d017537 100644 +\deflinkx{layout-compatible standard-layout class types}{layout-compatible!class}{class.mem}. \pnum - A type is \defn{consteval-only} if it is either -@@ -5849,7 +5848,7 @@ ordinary pointers to objects or functions. + A type is \defn{consteval-only} if it is +@@ -5896,7 +5895,7 @@ ordinary pointers to objects or functions. which identify members of a given type within objects of a given class, \ref{dcl.mptr}. Pointers to data members and pointers to member functions are collectively @@ -423,7 +423,7 @@ index 7a83b32c..4d017537 100644 \end{itemize} \pnum -@@ -5927,7 +5926,7 @@ layout-compatible types shall +@@ -5974,7 +5973,7 @@ layout-compatible types shall have the same value representation and alignment requirements\iref{basic.align}. \begin{note} @@ -432,7 +432,7 @@ index 7a83b32c..4d017537 100644 representation, but their range of valid values is restricted by the extended alignment requirement. \end{note} -@@ -6242,8 +6241,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. +@@ -6289,8 +6288,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. \indextext{program execution|(} \pnum @@ -443,7 +443,7 @@ index 7a83b32c..4d017537 100644 block. Such an object exists and retains its last-stored value during the execution of the block and while the block is suspended (by a call of a function, suspension of a coroutine\iref{expr.await}, or receipt of a signal). -@@ -6288,7 +6287,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, +@@ -6335,7 +6334,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, the initialization of the entities captured by copy and the constituent expressions of the \grammarterm{initializer} of the \grammarterm{init-capture}{s}, \item @@ -452,7 +452,7 @@ index 7a83b32c..4d017537 100644 the constituent expressions of each default argument\iref{dcl.fct.default} used in the call, or \item -@@ -6319,7 +6318,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope +@@ -6366,7 +6365,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope A \defn{full-expression} is \begin{itemize} \item @@ -462,10 +462,10 @@ index 7a83b32c..4d017537 100644 a \grammarterm{constant-expression}\iref{expr.const}, \item diff --git a/source/classes.tex b/source/classes.tex -index 6f1e64c9..259175cd 100644 +index ed746ce9..eaf6e4da 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -275,10 +275,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: +@@ -188,10 +188,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: \item has no non-static data members of type non-standard-layout class (or array of such types) or reference, @@ -479,7 +479,7 @@ index 6f1e64c9..259175cd 100644 for all non-static data members, \item has no non-standard-layout base classes, -@@ -661,7 +661,7 @@ if it is +@@ -574,7 +574,7 @@ if it is \end{itemize} For any other \grammarterm{member-declaration}, each declared entity @@ -488,7 +488,7 @@ index 6f1e64c9..259175cd 100644 is a member of the class, and each such \grammarterm{member-declaration} shall either -@@ -676,7 +676,7 @@ Nested types are classes\iref{class.name,class.nest} and +@@ -589,7 +589,7 @@ Nested types are classes\iref{class.name,class.nest} and enumerations\iref{dcl.enum} declared in the class and arbitrary types declared as members by use of a typedef declaration\iref{dcl.typedef} or \grammarterm{alias-declaration}. @@ -497,7 +497,7 @@ index 6f1e64c9..259175cd 100644 are members of the class. \pnum -@@ -822,9 +822,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali +@@ -735,9 +735,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali The \grammarterm{member-declarator-list} can be omitted only after a \grammarterm{class-specifier} or an \grammarterm{enum-specifier} or in a @@ -509,7 +509,7 @@ index 6f1e64c9..259175cd 100644 that is not a friend declaration. \pnum -@@ -927,7 +927,7 @@ unscoped enumeration type; and +@@ -840,7 +840,7 @@ unscoped enumeration type; and \pnum In addition, if class \tcode{T} has a user-declared @@ -518,7 +518,7 @@ index 6f1e64c9..259175cd 100644 \tcode{T} shall have a name different from \tcode{T}. \pnum -@@ -977,7 +977,7 @@ non-static data members (in any order) have layout-compatible +@@ -890,7 +890,7 @@ non-static data members (in any order) have layout-compatible types\iref{term.layout.compatible.type}. \pnum @@ -527,7 +527,7 @@ index 6f1e64c9..259175cd 100644 of struct type \tcode{T1}, it is permitted to read a non-static data member \tcode{m} of another union member of struct type \tcode{T2} provided \tcode{m} is part of the common initial sequence of \tcode{T1} and \tcode{T2}; -@@ -2303,7 +2303,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation +@@ -2217,7 +2217,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation An array of class type contains several subobjects for each of which the destructor is invoked. \end{note} @@ -536,7 +536,7 @@ index 6f1e64c9..259175cd 100644 if it is invoked or as specified in~\ref{expr.new}, \ref{stmt.return}, \ref{dcl.init.aggr}, \ref{class.base.init}, and~\ref{except.throw}. -@@ -6404,7 +6404,7 @@ associated with a \grammarterm{try-block} (if there is one), +@@ -6322,7 +6322,7 @@ associated with a \grammarterm{try-block} (if there is one), the copy-initialization of the exception object can be omitted by constructing $o$ directly into the exception object; @@ -546,10 +546,10 @@ index 6f1e64c9..259175cd 100644 corresponding parameter if the meaning of the program will be unchanged except for the execution of a constructor and destructor for the parameter copy object; diff --git a/source/compatibility.tex b/source/compatibility.tex -index d0b6bcec..17355dea 100644 +index a0ae25da..3aa1637b 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -2017,8 +2017,8 @@ deallocation functions\iref{expr.new}. +@@ -1990,8 +1990,8 @@ deallocation functions\iref{expr.new}. A conditional expression with a throw expression as its second or third operand keeps the type and value category of the other operand. \rationale @@ -609,10 +609,10 @@ index 3cbd110a..1722b95c 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index d2db2ed3..71b577a1 100644 +index 2a04fa0e..f3aded8c 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -6121,14 +6121,14 @@ namespace std { +@@ -6125,14 +6125,14 @@ namespace std { \indextext{\idxcode{array}!contiguous storage}% The header \libheader{array} defines a class template for storing fixed-size sequences of objects. @@ -629,7 +629,7 @@ index d2db2ed3..71b577a1 100644 list-initialized with up to \tcode{N} elements whose types are convertible to \tcode{T}. -@@ -6139,8 +6139,8 @@ of a container\iref{container.reqmts} and +@@ -6143,8 +6143,8 @@ of a container\iref{container.reqmts} and of a reversible container\iref{container.rev.reqmts}, except that a default constructed \tcode{array} object is not empty if $\tcode{N} > 0$. @@ -640,7 +640,7 @@ index d2db2ed3..71b577a1 100644 Descriptions are provided here only for operations on \tcode{array} that are not described in one of these tables and -@@ -6150,13 +6150,13 @@ for operations where there is additional semantic information. +@@ -6154,13 +6154,13 @@ for operations where there is additional semantic information. \tcode{array} is a structural type\iref{term.structural.type} if \tcode{T} is a structural type. Two values \tcode{a1} and \tcode{a2} of type \tcode{array} @@ -692,7 +692,7 @@ index d2db2ed3..71b577a1 100644 \end{itemdescr} \indexlibrarymember{reverse}{forward_list}% -@@ -9033,7 +9033,7 @@ A +@@ -9045,7 +9045,7 @@ A is a sequence container that supports bidirectional iterators and allows constant time insert and erase operations anywhere within the sequence, with storage management handled @@ -701,7 +701,7 @@ index d2db2ed3..71b577a1 100644 fast random access to list elements is not supported, but many algorithms only need sequential access anyway. -@@ -9209,7 +9209,7 @@ namespace std { +@@ -9221,7 +9221,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{list} if the allocator meets the @@ -710,7 +710,7 @@ index d2db2ed3..71b577a1 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{list} is referenced. -@@ -9622,7 +9622,7 @@ applications of the corresponding predicate. +@@ -9634,7 +9634,7 @@ applications of the corresponding predicate. \pnum \remarks @@ -719,7 +719,7 @@ index d2db2ed3..71b577a1 100644 \end{itemdescr} \indexlibrarymember{unique}{list}% -@@ -9745,7 +9745,7 @@ comparisons, where $N$ is \tcode{size()}. +@@ -9757,7 +9757,7 @@ comparisons, where $N$ is \tcode{size()}. \pnum \remarks @@ -728,7 +728,7 @@ index d2db2ed3..71b577a1 100644 \end{itemdescr} \rSec3[list.erasure]{Erasure} -@@ -9853,7 +9853,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, +@@ -9865,7 +9865,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, of a sequence container, including most of the optional sequence container requirements\iref{sequence.reqmts}, and, for an element type other than \tcode{bool}, @@ -737,7 +737,7 @@ index d2db2ed3..71b577a1 100644 The exceptions are the \tcode{push_front}, \tcode{prepend_range}, \tcode{pop_front}, and \tcode{emplace_front} member functions, which are not provided. Descriptions are provided here only for operations on \tcode{vector} -@@ -9991,7 +9991,7 @@ namespace std { +@@ -10003,7 +10003,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{vector} if the allocator meets the @@ -746,7 +746,7 @@ index d2db2ed3..71b577a1 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{vector} is referenced. -@@ -10584,7 +10584,7 @@ Unless described below, all operations have the same requirements and +@@ -10599,7 +10599,7 @@ Unless described below, all operations have the same requirements and semantics as the \tcode{vector} primary template, except that operations dealing with the \tcode{bool} value type map to bit values in the container storage and @@ -755,7 +755,7 @@ index d2db2ed3..71b577a1 100644 is not used to construct these values. \pnum -@@ -15659,9 +15659,9 @@ and +@@ -15740,9 +15740,9 @@ and can be used to instantiate \tcode{queue}. In particular, @@ -767,7 +767,7 @@ index d2db2ed3..71b577a1 100644 can be used. \begin{codeblock} -@@ -16016,15 +16016,15 @@ and +@@ -16097,15 +16097,15 @@ and can be used to instantiate \tcode{priority_queue}. In particular, @@ -786,7 +786,7 @@ index d2db2ed3..71b577a1 100644 \begin{codeblock} namespace std { -@@ -16569,10 +16569,10 @@ and +@@ -16653,10 +16653,10 @@ and can be used to instantiate \tcode{stack}. In particular, @@ -801,7 +801,7 @@ index d2db2ed3..71b577a1 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index d82e4bcb..74100ed5 100644 +index 510def3e..45030de5 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -837,7 +837,7 @@ index d82e4bcb..74100ed5 100644 In the global module, a function defined within a class definition is implicitly inline\iref{class.mfct,class.friend}. \end{note} -@@ -1295,7 +1295,7 @@ the object referenced is a non-const object and can be modified through +@@ -1288,7 +1288,7 @@ the object referenced is a non-const object and can be modified through some other access path. \begin{note} Cv-qualifiers are supported by the type system so that they cannot be @@ -846,7 +846,7 @@ index d82e4bcb..74100ed5 100644 \end{note} \pnum -@@ -1731,8 +1731,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; +@@ -1724,8 +1724,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; \item otherwise, \tcode{decltype($E$)} is the type of $E$. \end{itemize} @@ -856,7 +856,7 @@ index d82e4bcb..74100ed5 100644 \begin{example} \begin{codeblock} -@@ -1930,7 +1929,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. +@@ -1924,7 +1923,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. If the \grammarterm{init-declarator-list} contains more than one \grammarterm{init-declarator}, they shall all form declarations of variables. The type of each declared variable is determined @@ -865,7 +865,7 @@ index d82e4bcb..74100ed5 100644 and if the type that replaces the placeholder type is not the same in each deduction, the program is ill-formed. -@@ -2072,7 +2071,7 @@ A function declared with a return type that uses a placeholder type shall not +@@ -2066,7 +2065,7 @@ A function declared with a return type that uses a placeholder type shall not be a coroutine\iref{dcl.fct.def.coroutine}. \pnum @@ -874,16 +874,7 @@ index d82e4bcb..74100ed5 100644 instantiation of an entity declared using a placeholder type, but it also does not prevent that entity from being instantiated as needed to determine its type. -@@ -2184,7 +2183,7 @@ Obtain \tcode{P} from - a new invented type template parameter \tcode{U} or, - if the initialization is copy-list-initialization, with - \tcode{std::initializer_list}. Deduce a value for \tcode{U} using the rules --of template argument deduction from a function call\iref{temp.deduct.call}, -+of \link{template argument deduction from a function call}{temp.deduct.call}, - where \tcode{P} is a - function template parameter type and - the corresponding argument is $E$. -@@ -2283,7 +2282,7 @@ in the \grammarterm{type-specifier-seq} +@@ -2281,7 +2280,7 @@ in the \grammarterm{type-specifier-seq} in the \grammarterm{new-type-id} or \grammarterm{type-id} of a \grammarterm{new-expression}\iref{expr.new}, as the \grammarterm{simple-type-specifier} @@ -892,7 +883,7 @@ index d82e4bcb..74100ed5 100644 or as the \grammarterm{type-specifier} in the \grammarterm{parameter-declaration} of a \grammarterm{template-parameter}\iref{temp.param}. -@@ -4490,7 +4489,7 @@ int a; +@@ -4489,7 +4488,7 @@ int a; int f(int a, int b = a); // error: parameter \tcode{a} used as default argument typedef int I; int g(float I, int b = I(2)); // error: parameter \tcode{I} found @@ -901,7 +892,7 @@ index d82e4bcb..74100ed5 100644 \end{codeblock} \end{example} A non-static member shall not be designated in a default argument unless -@@ -6203,15 +6202,15 @@ This requires a conversion +@@ -6214,15 +6213,15 @@ This requires a conversion function\iref{class.conv.fct} returning a reference type. \end{footnote} (this conversion is selected by enumerating the applicable conversion @@ -921,7 +912,7 @@ index d82e4bcb..74100ed5 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7725,7 +7724,7 @@ the initializer is +@@ -7735,7 +7734,7 @@ the initializer is where \tcode{get} undergoes argument-dependent lookup\iref{basic.lookup.argdep}. In either case, \tcode{get} is interpreted as a \grammarterm{template-id}. \begin{note} @@ -930,7 +921,7 @@ index d82e4bcb..74100ed5 100644 \end{note} In either case, \exposid{e} is an lvalue if the type of the entity \exposid{e} is an lvalue reference and an xvalue otherwise. -@@ -7876,7 +7875,7 @@ is not looked up and is introduced by +@@ -7886,7 +7885,7 @@ is not looked up and is introduced by the \grammarterm{enum-specifier} or \grammarterm{opaque-enum-declaration}. If the \grammarterm{enum-head-name} of an \grammarterm{opaque-enum-declaration} contains a \grammarterm{nested-name-specifier}, @@ -939,7 +930,7 @@ index d82e4bcb..74100ed5 100644 \pnum \indextext{constant!enumeration}% -@@ -7958,8 +7957,9 @@ If the underlying type is fixed, the type of each enumerator +@@ -7968,8 +7967,9 @@ If the underlying type is fixed, the type of each enumerator prior to the closing brace is the underlying type and the \grammarterm{constant-expression} in the \grammarterm{enumerator-definition} @@ -951,7 +942,7 @@ index d82e4bcb..74100ed5 100644 If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as -@@ -7968,8 +7968,9 @@ follows: +@@ -7978,8 +7978,9 @@ follows: \begin{itemize} \item If an initializer is specified for an enumerator, the @@ -963,7 +954,7 @@ index d82e4bcb..74100ed5 100644 unscoped enumeration type, the enumerator has the underlying type of that enumeration type, otherwise it has the same type as the expression. -@@ -8041,7 +8042,7 @@ if they have the same underlying type. +@@ -8051,7 +8052,7 @@ if they have the same underlying type. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -972,7 +963,7 @@ index d82e4bcb..74100ed5 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8324,7 +8325,7 @@ appertains to the namespace being defined or extended. +@@ -8334,7 +8335,7 @@ appertains to the namespace being defined or extended. Members of an inline namespace can be used in most respects as though they were members of the innermost enclosing namespace. Specifically, the inline namespace and its enclosing namespace are both added to the set of associated namespaces used in @@ -981,7 +972,7 @@ index d82e4bcb..74100ed5 100644 and a \grammarterm{using-directive}\iref{namespace.udir} that names the inline namespace is implicitly inserted into the enclosing namespace as for an unnamed namespace\iref{namespace.unnamed}. Furthermore, each -@@ -9147,7 +9148,7 @@ different language linkages are distinct types even if they are +@@ -9167,7 +9168,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -990,7 +981,7 @@ index d82e4bcb..74100ed5 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9477,18 +9478,18 @@ For each individual attribute, the form of the +@@ -9497,18 +9498,18 @@ For each individual attribute, the form of the \pnum In an \grammarterm{attribute-list}, an ellipsis may appear only if that \grammarterm{attribute}'s specification permits it. An \grammarterm{attribute} followed @@ -1014,7 +1005,7 @@ index d82e4bcb..74100ed5 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9599,7 +9600,7 @@ declaration, the program is ill-formed. +@@ -9619,7 +9620,7 @@ declaration, the program is ill-formed. \pnum An \grammarterm{alignment-specifier} of the form \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same @@ -1023,7 +1014,7 @@ index d82e4bcb..74100ed5 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9779,7 +9780,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9799,7 +9800,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -1211,7 +1202,7 @@ index 2a4d6d7b..0072f5d6 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index dcaa4be0..9f91843e 100644 +index ce24309d..0d2c5348 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1233,7 +1224,7 @@ index dcaa4be0..9f91843e 100644 \end{note} \pnum -@@ -213,7 +213,7 @@ xvalues; rvalue references to functions are treated as lvalues whether named or +@@ -216,7 +216,7 @@ xvalues; rvalue references to functions are treated as lvalues whether named or \begin{example} \begin{codeblock} struct A { @@ -1242,7 +1233,7 @@ index dcaa4be0..9f91843e 100644 }; A&& operator+(A, A); A&& f(); -@@ -269,7 +269,7 @@ Unless otherwise specified\iref{expr.reinterpret.cast, expr.const.cast}, +@@ -272,7 +272,7 @@ Unless otherwise specified\iref{expr.reinterpret.cast, expr.const.cast}, whenever a prvalue that is not the result of the lvalue-to-rvalue conversion\iref{conv.lval} appears as an operand of an operator, @@ -1251,7 +1242,7 @@ index dcaa4be0..9f91843e 100644 applied to convert the expression to an xvalue. \pnum -@@ -452,31 +452,31 @@ An unevaluated operand is not evaluated. +@@ -455,31 +455,31 @@ An unevaluated operand is not evaluated. In an unevaluated operand, a non-static class member can be named\iref{expr.prim.id} and naming of objects or functions does not, by itself, require that a definition be provided\iref{basic.def.odr}. @@ -1294,7 +1285,7 @@ index dcaa4be0..9f91843e 100644 these expressions. \end{itemize} -@@ -615,7 +615,7 @@ descriptions of those operators and contexts. +@@ -618,7 +618,7 @@ descriptions of those operators and contexts. \pnum \indextext{conversion!lvalue-to-rvalue}% \indextext{type!incomplete}% @@ -1303,7 +1294,7 @@ index dcaa4be0..9f91843e 100644 can be converted to a prvalue. \begin{footnote} -@@ -640,18 +640,18 @@ is applied to an expression $E$, and either +@@ -643,18 +643,18 @@ is applied to an expression $E$, and either \begin{itemize} \item $E$ is not potentially evaluated, or \item the evaluation of $E$ results in the evaluation of a member @@ -1328,7 +1319,7 @@ index dcaa4be0..9f91843e 100644 } auto g = f(); int m = g(false); // undefined behavior: access of \tcode{x.n} outside its lifetime -@@ -819,11 +819,11 @@ allowed), a program could inadvertently modify a const object +@@ -826,11 +826,11 @@ allowed), a program could inadvertently modify a const object (as it is done on line \#2). For example, \begin{codeblock} int main() { @@ -1345,7 +1336,7 @@ index dcaa4be0..9f91843e 100644 } \end{codeblock} \end{note} -@@ -1080,7 +1080,7 @@ the derived class object. +@@ -1088,7 +1088,7 @@ the derived class object. \indextext{conversion!pointer-to-member}% \indextext{null member pointer conversion|see{conversion, null member pointer}}% \indextext{constant!null pointer}% @@ -1354,7 +1345,7 @@ index dcaa4be0..9f91843e 100644 pointer-to-member type; the result is the \defnx{null member pointer value}{value!null member pointer} of that type and is distinguishable from any pointer to member not -@@ -1309,7 +1309,7 @@ occur until the complete declarator is known. +@@ -1317,7 +1317,7 @@ occur until the complete declarator is known. \begin{note} In a \grammarterm{trailing-return-type}, the class being defined is not required to be complete @@ -1363,7 +1354,7 @@ index dcaa4be0..9f91843e 100644 Class members declared later are not visible. \begin{example} \begin{codeblock} -@@ -1377,8 +1377,8 @@ meaning, except as otherwise indicated. +@@ -1385,8 +1385,8 @@ meaning, except as otherwise indicated. An \grammarterm{id-expression} is a restricted form of a \grammarterm{primary-expression}. \begin{note} @@ -1374,7 +1365,7 @@ index dcaa4be0..9f91843e 100644 \end{note} \pnum -@@ -1507,7 +1507,7 @@ In each case, the constraints of \tcode{f} are not satisfied. +@@ -1519,7 +1519,7 @@ In each case, the constraints of \tcode{f} are not satisfied. In the declaration of \tcode{p2}, those constraints need to be satisfied even though @@ -1383,7 +1374,7 @@ index dcaa4be0..9f91843e 100644 \end{example} \end{note} -@@ -2126,8 +2126,8 @@ void abssort(float* x, unsigned N) { +@@ -2141,8 +2141,8 @@ void abssort(float* x, unsigned N) { A \grammarterm{lambda-expression} is a prvalue whose result object is called the \defn{closure object}. \begin{note} @@ -1394,7 +1385,7 @@ index dcaa4be0..9f91843e 100644 \end{note} \pnum -@@ -2462,7 +2462,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no +@@ -2475,7 +2475,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no and no explicit object parameter\iref{dcl.fct} whose constraints (if any) are satisfied has a conversion function to pointer to @@ -1403,7 +1394,7 @@ index dcaa4be0..9f91843e 100644 the same parameter and return types as the closure type's function call operator. The conversion is to ``pointer to \keyword{noexcept} function'' if the function call operator -@@ -2571,8 +2571,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} +@@ -2584,8 +2584,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} \pnum The conversion function or conversion function template is public, @@ -1414,7 +1405,7 @@ index dcaa4be0..9f91843e 100644 \begin{example} \begin{codeblock} auto Fwd = [](int (*fp)(int), auto a) { return fp(a); }; -@@ -2630,9 +2630,9 @@ implicitly-declared destructor\iref{class.dtor}. +@@ -2643,9 +2643,9 @@ implicitly-declared destructor\iref{class.dtor}. \pnum A member of a closure type shall not be @@ -1427,7 +1418,7 @@ index dcaa4be0..9f91843e 100644 \rSec3[expr.prim.lambda.capture]{Captures}% -@@ -3200,7 +3200,7 @@ A fold expression is a pack expansion. +@@ -3213,7 +3213,7 @@ A fold expression is a pack expansion. \pnum A \grammarterm{requires-expression} provides a concise way to express requirements on template arguments @@ -1436,7 +1427,7 @@ index dcaa4be0..9f91843e 100644 or by checking properties of types and expressions. \begin{bnf} -@@ -3780,7 +3780,7 @@ or a prvalue of function pointer type. +@@ -3797,7 +3797,7 @@ or a prvalue of function pointer type. If the selected function is non-virtual, or if the \grammarterm{id-expression} in the class member access expression is a \grammarterm{qualified-id}, that function is @@ -1445,7 +1436,7 @@ index dcaa4be0..9f91843e 100644 of the object expression is called; such a call is referred to as a \defnx{virtual function call}{function!virtual function call}. \begin{note} -@@ -3793,8 +3793,8 @@ an object under construction or destruction. +@@ -3810,8 +3810,8 @@ an object under construction or destruction. \pnum \begin{note} @@ -1456,7 +1447,7 @@ index dcaa4be0..9f91843e 100644 the program is ill-formed. No function is implicitly declared by such a call. \end{note} -@@ -3861,7 +3861,7 @@ function, +@@ -3878,7 +3878,7 @@ function, the object expression of the class member access shall be a glvalue and the implicit object parameter of the function\iref{over.match.funcs} is initialized with that glvalue, @@ -1465,7 +1456,7 @@ index dcaa4be0..9f91843e 100644 \begin{note} There is no access or ambiguity checking on this conversion; the access checking and disambiguation are done as part of the (possibly implicit) -@@ -3998,10 +3998,10 @@ pointer parameters. +@@ -4015,10 +4015,10 @@ pointer parameters. \pnum \indextext{declaration!ellipsis in function}% \indextext{parameter list!variable}% @@ -1479,7 +1470,7 @@ index dcaa4be0..9f91843e 100644 \begin{note} This implies that, except where the ellipsis (\tcode{...}) or a function parameter pack is used, a parameter is available for each argument. -@@ -4019,8 +4019,8 @@ thus each such argument has a corresponding parameter when a function template +@@ -4036,8 +4036,8 @@ thus each such argument has a corresponding parameter when a function template specialization is actually called. \end{note} The @@ -1490,7 +1481,7 @@ index dcaa4be0..9f91843e 100644 performed on the argument expression. An argument that has type \cv{}~\tcode{std::nullptr_t} is converted to type \tcode{\keyword{void}*}\iref{conv.ptr}. -@@ -4035,16 +4035,16 @@ an eligible non-trivial move constructor, or +@@ -4052,16 +4052,16 @@ an eligible non-trivial move constructor, or a non-trivial destructor\iref{class.dtor}, with no corresponding parameter, is conditionally-supported with \impldef{passing argument of class type through ellipsis} semantics. If the argument has @@ -1512,7 +1503,7 @@ index dcaa4be0..9f91843e 100644 \pnum A function call is an lvalue -@@ -4063,8 +4063,8 @@ except as specified in \ref{dcl.type.decltype}. +@@ -4080,8 +4080,8 @@ except as specified in \ref{dcl.type.decltype}. \indextext{type conversion, explicit|see{casting}}% \indextext{conversion explicit type|see{casting}}% \indextext{casting}% @@ -1523,7 +1514,7 @@ index dcaa4be0..9f91843e 100644 by a parenthesized optional \grammarterm{expression-list} or by a \grammarterm{braced-init-list} (the initializer) -@@ -4075,7 +4075,7 @@ If the type is a placeholder +@@ -4092,7 +4092,7 @@ If the type is a placeholder for a deduced class type, it is replaced by the return type of the function selected by overload resolution @@ -1532,7 +1523,7 @@ index dcaa4be0..9f91843e 100644 for the remainder of this subclause. Otherwise, if the type contains a placeholder type, it is replaced by the type -@@ -4470,8 +4470,8 @@ void foo(D* dp) { +@@ -4491,8 +4491,8 @@ void foo(D* dp) { \end{example} \pnum @@ -1543,7 +1534,7 @@ index dcaa4be0..9f91843e 100644 \pnum If \tcode{v} is a null pointer value, the result is a null pointer value. -@@ -4522,9 +4522,9 @@ runtime check \term{fails}. +@@ -4543,9 +4543,9 @@ runtime check \term{fails}. \pnum The value of a failed cast to pointer type is the null pointer value of @@ -1556,7 +1547,7 @@ index dcaa4be0..9f91843e 100644 \indextext{\idxcode{bad_cast}}% \indexlibraryglobal{bad_cast}% -@@ -4613,13 +4613,13 @@ glvalue refers. +@@ -4634,13 +4634,13 @@ glvalue refers. When \keyword{typeid} is applied to an expression other than a glvalue of a polymorphic class type, the result refers to a \tcode{std::type_info} object representing the static type of the expression. @@ -1574,7 +1565,7 @@ index dcaa4be0..9f91843e 100644 \pnum When \keyword{typeid} is applied to a \grammarterm{type-id}, the result -@@ -4713,7 +4713,7 @@ of type \tcode{T1} can be cast to type ``rvalue +@@ -4734,7 +4734,7 @@ of type \tcode{T1} can be cast to type ``rvalue reference to \tcode{T2}'' if \tcode{T2} is reference-compatible with \tcode{T1}\iref{dcl.init.ref}. If the value is not a bit-field, the result refers to the object or the specified base class subobject @@ -1583,7 +1574,7 @@ index dcaa4be0..9f91843e 100644 is applied to the bit-field and the resulting prvalue is used as the operand of the \keyword{static_cast} for the remainder of this subclause. If \tcode{T2} is an inaccessible\iref{class.access} or -@@ -4818,7 +4818,8 @@ Otherwise, the behavior is undefined. +@@ -4839,7 +4839,8 @@ Otherwise, the behavior is undefined. A prvalue of type ``pointer to \cvqual{cv1} \tcode{B}'', where \tcode{B} is a class type, can be converted to a prvalue of type ``pointer to \cvqual{cv2} \tcode{D}'', @@ -1593,7 +1584,7 @@ index dcaa4be0..9f91843e 100644 from \tcode{B}, if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. -@@ -4839,7 +4840,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} +@@ -4860,7 +4861,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} \tcode{T}'' can be converted to a prvalue of type ``pointer to member of \tcode{B} of type \cvqual{cv2} \tcode{T}'', where \tcode{D} is a complete class type and @@ -1602,7 +1593,7 @@ index dcaa4be0..9f91843e 100644 if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. \begin{note} -@@ -4850,7 +4851,7 @@ If no valid standard conversion +@@ -4871,7 +4872,7 @@ If no valid standard conversion from ``pointer to member of \tcode{B} of type \tcode{T}'' to ``pointer to member of \tcode{D} of type \tcode{T}'' exists\iref{conv.mem}, the program is ill-formed. @@ -1611,7 +1602,7 @@ index dcaa4be0..9f91843e 100644 member pointer value of the destination type. If class \tcode{B} contains the original member, or is a base class of the class containing the original member, the resulting pointer to member points -@@ -4873,7 +4874,7 @@ If the original pointer value represents the address +@@ -4894,7 +4895,7 @@ If the original pointer value represents the address then the resulting pointer value\iref{basic.compound} is unspecified. Otherwise, if the original pointer value points to an object \placeholder{a}, and there is an object \placeholder{b} of type similar to \tcode{T} @@ -1620,7 +1611,7 @@ index dcaa4be0..9f91843e 100644 the result is a pointer to \placeholder{b}. Otherwise, the pointer value is unchanged by the conversion. \begin{example} -@@ -4896,8 +4897,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. +@@ -4917,8 +4918,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. If \tcode{T} is an lvalue reference type or an rvalue reference to function type, the result is an lvalue; if \tcode{T} is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the @@ -1631,7 +1622,7 @@ index dcaa4be0..9f91843e 100644 performed on the expression \tcode{v}. Conversions that can be performed explicitly using \keyword{reinterpret_cast} are listed below. No other conversion can be performed explicitly using \keyword{reinterpret_cast}. -@@ -5066,10 +5067,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type +@@ -5083,10 +5084,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type lvalue; if \tcode{T} is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the @@ -1645,7 +1636,7 @@ index dcaa4be0..9f91843e 100644 performed on \tcode{v}, other than as specified below. Conversions that can be performed explicitly using \keyword{const_cast} are listed below. No other conversion shall be -@@ -5622,7 +5623,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside +@@ -5639,7 +5640,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside The \keyword{sizeof} operator yields the number of bytes occupied by a non-potentially-overlapping object of the type of its operand. The operand is either an expression, @@ -1654,7 +1645,7 @@ index dcaa4be0..9f91843e 100644 \grammarterm{type-id}. \indextext{type!incomplete}% The \keyword{sizeof} operator shall not be applied to an expression that -@@ -5677,7 +5678,7 @@ array-to-pointer\iref{conv.array}, and +@@ -5694,7 +5695,7 @@ array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} standard conversions are not applied to the operand of \keyword{sizeof}. If the operand is a prvalue, @@ -1663,7 +1654,7 @@ index dcaa4be0..9f91843e 100644 is applied. \pnum -@@ -5822,7 +5823,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. +@@ -5839,7 +5840,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. \end{bnf} \pnum @@ -1672,7 +1663,7 @@ index dcaa4be0..9f91843e 100644 a placeholder for a deduced class type\iref{dcl.type.class.deduct} appears in the \grammarterm{type-specifier-seq} of a \grammarterm{new-type-id} or -@@ -5950,7 +5951,7 @@ is less than zero; +@@ -5967,7 +5968,7 @@ is less than zero; \item its value is such that the size of the allocated object would exceed the @@ -1680,8 +1671,8 @@ index dcaa4be0..9f91843e 100644 +\impldef{maximum size of an allocated object} \link{limit}{implimits}; or \item - the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} and the -@@ -5975,7 +5976,7 @@ is the null pointer value of the required result type; + the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} +@@ -5993,7 +5994,7 @@ is the null pointer value of the required result type; \item otherwise, the \grammarterm{new-expression} terminates by throwing an exception of a type that would match a handler\iref{except.handle} of type @@ -1690,7 +1681,7 @@ index dcaa4be0..9f91843e 100644 \end{itemize} \end{itemize} When the value of the \grammarterm{expression} is zero, the allocation -@@ -6026,8 +6027,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( +@@ -6051,8 +6052,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( A \grammarterm{new-expression} may obtain storage for the object by calling an allocation function\iref{basic.stc.dynamic.allocation}. If the \grammarterm{new-expression} terminates by throwing an exception, it @@ -1701,7 +1692,7 @@ index dcaa4be0..9f91843e 100644 is a non-array type, the allocation function's name is \indextext{\idxcode{operator new}}% \indextext{\idxcode{operator delete}}% -@@ -6138,7 +6139,7 @@ the difference between the +@@ -6163,7 +6164,7 @@ the difference between the result of the \grammarterm{new-expression} and the address returned by the allocation function shall be an integral multiple of the strictest fundamental @@ -1710,7 +1701,7 @@ index dcaa4be0..9f91843e 100644 is no greater than the size of the array being created. \begin{note} \indextext{allocation!alignment storage}% -@@ -6229,7 +6230,7 @@ invocation of \keyword{new} to another. +@@ -6254,7 +6255,7 @@ invocation of \keyword{new} to another. \pnum \begin{note} Unless an allocation function has a non-throwing @@ -1719,7 +1710,7 @@ index dcaa4be0..9f91843e 100644 it indicates failure to allocate storage by throwing a \indextext{\idxcode{bad_alloc}}% \indexlibraryglobal{bad_alloc}% -@@ -6375,8 +6376,8 @@ to both the allocation and deallocation functions. +@@ -6400,8 +6401,8 @@ to both the allocation and deallocation functions. \pnum \indextext{expression!\idxcode{delete}}% \indextext{\idxcode{delete}}% @@ -1730,7 +1721,7 @@ index dcaa4be0..9f91843e 100644 \grammarterm{new-expression}. \begin{bnf} -@@ -6479,8 +6480,8 @@ null pointer value, then: +@@ -6504,8 +6505,8 @@ null pointer value, then: \item If the allocation call for the \grammarterm{new-expression} for the object to be deleted was not omitted and the allocation was not extended\iref{expr.new}, the @@ -1741,7 +1732,7 @@ index dcaa4be0..9f91843e 100644 allocation call of the \grammarterm{new-expression} shall be passed as the first argument to the deallocation function. -@@ -7063,8 +7064,8 @@ The result of a \tcode{.*} expression +@@ -7090,8 +7091,8 @@ The result of a \tcode{.*} expression whose second operand is a pointer to a data member is an lvalue if the first operand is an lvalue and an xvalue otherwise. The result of a \tcode{.*} expression whose second operand is a pointer to a member function is a prvalue. @@ -1752,7 +1743,7 @@ index dcaa4be0..9f91843e 100644 \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -7093,7 +7094,7 @@ left-to-right. +@@ -7120,7 +7121,7 @@ left-to-right. \pnum The operands of \tcode{*} and \tcode{/} shall have arithmetic or unscoped enumeration type; the operands of \tcode{\%} shall have integral or unscoped @@ -1761,7 +1752,7 @@ index dcaa4be0..9f91843e 100644 operands and determine the type of the result. \pnum -@@ -7229,7 +7230,7 @@ the behavior is undefined\iref{expr.pre}. +@@ -7251,7 +7252,7 @@ the behavior is undefined\iref{expr.pre}. \pnum For addition or subtraction, if the expressions \tcode{P} or \tcode{Q} have type ``pointer to \cv{}~\tcode{T}'', where \tcode{T} and the array element type @@ -1770,7 +1761,7 @@ index dcaa4be0..9f91843e 100644 \begin{example} \begin{codeblock} int arr[5] = {1, 2, 3, 4, 5}; -@@ -7320,12 +7321,12 @@ and the other is not, the program is ill-formed. +@@ -7342,12 +7343,12 @@ and the other is not, the program is ill-formed. If both operands have arithmetic types, or one operand has integral type and the other operand has unscoped enumeration type, @@ -1785,7 +1776,7 @@ index dcaa4be0..9f91843e 100644 other than from an integral type to a floating-point type, the program is ill-formed. -@@ -7367,13 +7368,13 @@ the other operand is of object pointer or array type, +@@ -7389,13 +7390,13 @@ the other operand is of object pointer or array type, array-to-pointer conversions\iref{conv.array}, pointer conversions\iref{conv.ptr}, and @@ -1801,7 +1792,7 @@ index dcaa4be0..9f91843e 100644 \end{note} In this case, \tcode{p <=> q} is of type \tcode{std::strong_ordering} and -@@ -7462,7 +7463,7 @@ pointer conversions\iref{conv.ptr}, +@@ -7484,7 +7485,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring @@ -1810,7 +1801,7 @@ index dcaa4be0..9f91843e 100644 After conversions, the operands shall have the same type. \pnum -@@ -7547,10 +7548,10 @@ same type after the specified conversions have been applied. +@@ -7569,10 +7570,10 @@ same type after the specified conversions have been applied. \indextext{comparison!pointer}% \indextext{comparison!pointer to function}% If at least one of the converted operands is a pointer, @@ -1825,7 +1816,7 @@ index dcaa4be0..9f91843e 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -7567,7 +7568,8 @@ the result of the comparison is unspecified. +@@ -7589,7 +7590,8 @@ the result of the comparison is unspecified. \item Otherwise, if the pointers are both null, both point to the same \indextext{address}% @@ -1835,7 +1826,7 @@ index dcaa4be0..9f91843e 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -7612,12 +7614,12 @@ bool b1 = (bx == cx); // unspecified +@@ -7634,12 +7636,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -1850,7 +1841,7 @@ index dcaa4be0..9f91843e 100644 indirection with a hypothetical object of the associated class type were performed, otherwise they compare unequal. \begin{example} -@@ -7857,7 +7859,7 @@ Otherwise, if the second and third operand have different types and +@@ -7879,7 +7881,7 @@ Otherwise, if the second and third operand have different types and either has (possibly cv-qualified) class type, or if both are glvalues of the same value category and the same type except for cv-qualification, an attempt is made to @@ -1859,7 +1850,7 @@ index dcaa4be0..9f91843e 100644 each of those operands to the type of the other. \begin{note} Properties such as access, whether an operand is a bit-field, or whether -@@ -7899,9 +7901,9 @@ denotes the cv-qualifiers of \tcode{T1}; +@@ -7921,9 +7923,9 @@ denotes the cv-qualifiers of \tcode{T1}; \item otherwise, the target type is the type that \tcode{E2} would have after applying the @@ -1872,7 +1863,7 @@ index dcaa4be0..9f91843e 100644 standard conversions. \end{itemize} \end{itemize} -@@ -7942,8 +7944,8 @@ are used in place of the original operands for the remainder of this +@@ -7964,8 +7966,8 @@ are used in place of the original operands for the remainder of this subclause. \pnum @@ -1883,7 +1874,7 @@ index dcaa4be0..9f91843e 100644 performed on the second and third operands. After those conversions, one of the following shall hold: -@@ -7952,16 +7954,16 @@ of the following shall hold: +@@ -7974,16 +7976,16 @@ of the following shall hold: that type and the result is copy-initialized using the selected operand. \item The second and third operands have arithmetic or enumeration type; @@ -1906,7 +1897,7 @@ index dcaa4be0..9f91843e 100644 pointer type. \item One or both of the second and third operands have pointer-to-member type; -@@ -8145,7 +8147,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. +@@ -8167,7 +8169,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. \pnum \indextext{assignment!conversion by}% If the right operand is an expression, it is implicitly @@ -1915,7 +1906,7 @@ index dcaa4be0..9f91843e 100644 operand. \pnum -@@ -8159,7 +8161,7 @@ resulting value of the bit-field is +@@ -8181,7 +8183,7 @@ resulting value of the bit-field is An assignment whose left operand is of a volatile-qualified type is deprecated\iref{depr.volatile.type} unless the (possibly parenthesized) assignment is a discarded-value expression or @@ -1924,7 +1915,7 @@ index dcaa4be0..9f91843e 100644 \pnum The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} -@@ -8231,7 +8233,7 @@ The comma operator groups left-to-right. +@@ -8253,7 +8255,7 @@ The comma operator groups left-to-right. A pair of expressions separated by a comma is evaluated left-to-right; the left expression is @@ -1933,7 +1924,7 @@ index dcaa4be0..9f91843e 100644 The left expression is sequenced before the right expression\iref{intro.execution}. \indextext{operator!side effects and comma}% -@@ -8265,7 +8267,7 @@ Certain contexts require expressions that satisfy additional +@@ -8287,7 +8289,7 @@ Certain contexts require expressions that satisfy additional requirements as detailed in this subclause; other contexts have different semantics depending on whether or not an expression satisfies these requirements. Expressions that satisfy these requirements, @@ -1942,7 +1933,7 @@ index dcaa4be0..9f91843e 100644 are called constant expressions. \begin{note} Constant expressions can be evaluated -@@ -8446,9 +8448,9 @@ a temporary object of non-volatile const-qualified literal type +@@ -8450,9 +8452,9 @@ a temporary object of non-volatile const-qualified literal type whose lifetime is extended\iref{class.temporary} to that of a variable that is usable in constant expressions at $P$, \item @@ -1954,7 +1945,7 @@ index dcaa4be0..9f91843e 100644 \item a non-mutable subobject of any of the above, or \item -@@ -8539,7 +8541,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. +@@ -8543,7 +8545,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -1963,7 +1954,7 @@ index dcaa4be0..9f91843e 100644 it is applied to \begin{itemize} \item -@@ -8561,7 +8563,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -8565,7 +8567,7 @@ that refers to a non-active member of a union or a subobject thereof; \item an lvalue-to-rvalue conversion that is applied to @@ -1972,7 +1963,7 @@ index dcaa4be0..9f91843e 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -8934,7 +8936,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -8949,7 +8951,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte Such expressions can be used as bit-field lengths\iref{class.bit}, as enumerator initializers if the underlying type is not fixed\iref{dcl.enum}, @@ -1981,7 +1972,7 @@ index dcaa4be0..9f91843e 100644 \end{note} \pnum -@@ -9436,7 +9438,7 @@ if it is: +@@ -9455,7 +9457,7 @@ if it is: a manifestly constant-evaluated expression, \item @@ -1990,7 +1981,7 @@ index dcaa4be0..9f91843e 100644 \item an immediate subexpression of a \grammarterm{braced-init-list}, -@@ -9463,7 +9465,9 @@ A function or variable is +@@ -9482,7 +9484,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -2002,7 +1993,7 @@ index dcaa4be0..9f91843e 100644 \item diff --git a/source/future.tex b/source/future.tex -index bba0b7f7..41979b62 100644 +index 14b1e41e..c72d59ea 100644 --- a/source/future.tex +++ b/source/future.tex @@ -14,7 +14,7 @@ is defined as: @@ -2039,7 +2030,7 @@ index bba0b7f7..41979b62 100644 the \oldconcept{TransformationTrait} requirements with a base characteristic of \tcode{integral_constant}. diff --git a/source/intro.tex b/source/intro.tex -index 22114ac3..0a8f75a6 100644 +index 5cb98d21..a81314b2 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -97,8 +97,8 @@ Reads of scalar objects are described in \ref{conv.lval} and @@ -2418,10 +2409,10 @@ index d5d867ad..f0d3b942 100644 \pnum \throws diff --git a/source/iterators.tex b/source/iterators.tex -index 9914bd24..ffa39eaf 100644 +index cbfa0c2a..3deb3e2b 100644 --- a/source/iterators.tex +++ b/source/iterators.tex -@@ -729,7 +729,7 @@ is undefined. +@@ -741,7 +741,7 @@ is undefined. \pnum \indextext{iterator!constexpr}% @@ -2430,7 +2421,7 @@ index 9914bd24..ffa39eaf 100644 if all operations provided to meet iterator category requirements are constexpr functions. \begin{note} -@@ -6852,7 +6852,7 @@ ostream_iterator& operator++(int); +@@ -6865,7 +6865,7 @@ ostream_iterator& operator++(int); The class template \tcode{istreambuf_iterator} @@ -2439,7 +2430,7 @@ index 9914bd24..ffa39eaf 100644 reads successive \textit{characters} from the streambuf for which it was constructed. -@@ -6977,7 +6977,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; +@@ -6990,7 +6990,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; Initializes \tcode{sbuf_} with \keyword{nullptr}. \end{itemdescr} @@ -2447,7 +2438,7 @@ index 9914bd24..ffa39eaf 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(istream_type& s) noexcept; -@@ -6989,7 +6988,6 @@ istreambuf_iterator(istream_type& s) noexcept; +@@ -7002,7 +7001,6 @@ istreambuf_iterator(istream_type& s) noexcept; Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2455,7 +2446,7 @@ index 9914bd24..ffa39eaf 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(streambuf_type* s) noexcept; -@@ -7001,7 +6999,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; +@@ -7014,7 +7012,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; Initializes \tcode{sbuf_} with \tcode{s}. \end{itemdescr} @@ -2463,7 +2454,7 @@ index 9914bd24..ffa39eaf 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept; -@@ -7152,7 +7149,6 @@ is not a null pointer. +@@ -7165,7 +7162,6 @@ is not a null pointer. Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2472,7 +2463,7 @@ index 9914bd24..ffa39eaf 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index 8005b333..4ea5904d 100644 +index ed45edd6..ba052c96 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2486,7 +2477,7 @@ index 8005b333..4ea5904d 100644 directive \tcode{\#include}, less any source lines skipped by any of the conditional inclusion\iref{cpp.cond} preprocessing directives, as modified by the implementation-defined behavior of any -@@ -2297,7 +2297,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) +@@ -2289,7 +2289,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) \pnum If \placeholder{L} is a \grammarterm{user-defined-character-literal}, let \placeholder{ch} be the literal without its \grammarterm{ud-suffix}. @@ -2496,7 +2487,7 @@ index 8005b333..4ea5904d 100644 literal \placeholder{L} is treated as a call of the form diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 2958545e..1c229c08 100644 +index 185d42dd..4e6c7fa2 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2508,7 +2499,7 @@ index 2958545e..1c229c08 100644 numeric algorithms and complex number components that extend support for numeric processing. The \tcode{valarray} -@@ -524,8 +524,8 @@ of other standards\iref{intro.refs}. +@@ -521,8 +521,8 @@ of other standards\iref{intro.refs}. Subclause \ref{conventions} describes several editorial conventions used to describe the contents of the \Cpp{} standard library. These conventions are for describing @@ -2519,7 +2510,7 @@ index 2958545e..1c229c08 100644 \rSec3[expos.only.entity]{Exposition-only entities, etc.} -@@ -647,7 +647,7 @@ and \ref{depr} are +@@ -644,7 +644,7 @@ and \ref{depr} are Each bitmask type can be implemented as an enumerated type that overloads certain operators, as an integer type, or as a @@ -2528,7 +2519,7 @@ index 2958545e..1c229c08 100644 \indextext{type!enumerated}% \pnum -@@ -773,7 +773,7 @@ locale. +@@ -770,7 +770,7 @@ locale. \item A \defn{character sequence} @@ -2537,7 +2528,7 @@ index 2958545e..1c229c08 100644 can be declared as \tcode{\placeholdernc{T\;A}[\placeholder{N}]}, where \tcode{\placeholder{T}} is any of the types -@@ -959,7 +959,7 @@ signatures, or for virtual destructors that can be generated by default. +@@ -961,7 +961,7 @@ signatures, or for virtual destructors that can be generated by default. \pnum \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr} do not specify the representation of classes, and intentionally @@ -2546,7 +2537,7 @@ index 2958545e..1c229c08 100644 define static or non-static class members, or both, as needed to implement the semantics of the member functions specified in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr}. -@@ -1371,10 +1371,10 @@ std::vector vi; // OK +@@ -1373,10 +1373,10 @@ std::vector vi; // OK Except as noted in \ref{library} through \ref{\lastlibchapter} and \ref{depr}, the contents of each header \tcode{c\placeholder{name}} is the same as that of the corresponding header \tcode{\placeholder{name}.h} as @@ -2559,7 +2550,7 @@ index 2958545e..1c229c08 100644 It is unspecified whether these names (including any overloads added in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr}) are first declared within the global namespace scope -@@ -1692,8 +1692,8 @@ a hosted implementation. +@@ -1694,8 +1694,8 @@ a hosted implementation. \pnum Subclause \ref{using} describes how a \Cpp{} program gains access to the facilities of the \Cpp{} standard library. \ref{using.headers} describes effects during translation @@ -2570,7 +2561,7 @@ index 2958545e..1c229c08 100644 \rSec3[using.headers]{Headers} -@@ -1736,7 +1736,7 @@ declared in that header. No diagnostic is required. +@@ -1738,7 +1738,7 @@ declared in that header. No diagnostic is required. \rSec3[using.linkage]{Linkage} \pnum @@ -2579,7 +2570,7 @@ index 2958545e..1c229c08 100644 Unless otherwise specified, objects and functions have the default \tcode{extern "C++"} linkage\iref{dcl.link}. -@@ -1770,8 +1770,8 @@ the program prior to program startup. +@@ -1772,8 +1772,8 @@ the program prior to program startup. \indextext{startup!program}% \pnum See also @@ -2590,7 +2581,7 @@ index 2958545e..1c229c08 100644 \rSec2[utility.requirements]{Requirements on types and expressions} -@@ -1819,7 +1819,7 @@ rvalue of type \tcode{const T}. +@@ -1821,7 +1821,7 @@ rvalue of type \tcode{const T}. In general, a default constructor is not required. Certain container class member function signatures specify \tcode{T()} as a default argument. \tcode{T()} shall be a well-defined expression\iref{dcl.init} if one of those @@ -2599,7 +2590,7 @@ index 2958545e..1c229c08 100644 \begin{oldconcepttable}{EqualityComparable}{}{cpp17.equalitycomparable} {x{1in}x{1in}p{3in}} -@@ -1945,13 +1945,13 @@ evaluated in the context described below, and +@@ -1947,13 +1947,13 @@ evaluated in the context described below, and \pnum The context in which \tcode{swap(t, u)} and \tcode{swap(u, t)} are evaluated shall @@ -2616,7 +2607,7 @@ index 2958545e..1c229c08 100644 \end{itemize} \begin{note} If \tcode{T} and \tcode{U} are both fundamental types or arrays of -@@ -2054,8 +2054,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in +@@ -2056,8 +2056,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in \end{note} \pnum @@ -2628,7 +2619,7 @@ index 2958545e..1c229c08 100644 had been evaluated in place of \tcode{p}. \pnum -@@ -2158,7 +2159,7 @@ as the memory allocation and deallocation primitives for it. All of the +@@ -2160,7 +2161,7 @@ as the memory allocation and deallocation primitives for it. All of the string types\iref{strings}, containers\iref{containers} (except \tcode{array} and \tcode{inplace_vector}), string buffers and string streams\iref{input.output}, and @@ -2637,7 +2628,7 @@ index 2958545e..1c229c08 100644 allocators. \pnum -@@ -2984,7 +2985,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, +@@ -2986,7 +2987,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, whether or not \tcode{T} is a complete type: \begin{itemize} \item \tcode{X} is a complete type, and @@ -2646,7 +2637,7 @@ index 2958545e..1c229c08 100644 other than \tcode{value_type} are complete types. \end{itemize} -@@ -2995,11 +2996,11 @@ whether or not \tcode{T} is a complete type: +@@ -2997,11 +2998,11 @@ whether or not \tcode{T} is a complete type: \pnum Subclause \ref{constraints} describes restrictions on \Cpp{} programs that use the facilities of the \Cpp{} standard library. The following subclauses specify constraints on the @@ -2662,7 +2653,7 @@ index 2958545e..1c229c08 100644 \rSec3[namespace.constraints]{Namespace use} -@@ -3402,7 +3403,7 @@ are reserved for use by \Cpp{} implementations. +@@ -3404,7 +3405,7 @@ are reserved for use by \Cpp{} implementations. If a file with a name equivalent to the derived file name for one of the \Cpp{} standard library headers is not provided as part of the implementation, and a file with that name @@ -2671,7 +2662,7 @@ index 2958545e..1c229c08 100644 the behavior is undefined.% \indextext{source file}% \indextext{undefined} -@@ -3573,7 +3574,7 @@ specified as being shareable without data races or the user supplies a locking m +@@ -3575,7 +3576,7 @@ specified as being shareable without data races or the user supplies a locking m \pnum If an object of a standard library type is accessed, and @@ -2680,7 +2671,7 @@ index 2958545e..1c229c08 100644 does not happen before the access, or the access does not happen before the end of the object's lifetime, the behavior is undefined unless otherwise specified. -@@ -3639,7 +3640,7 @@ Every such entity shall be defined such that any header that defines it may be +@@ -3641,7 +3642,7 @@ Every such entity shall be defined such that any header that defines it may be included after any other header that also defines it\iref{basic.def.odr}. \pnum @@ -2689,7 +2680,7 @@ index 2958545e..1c229c08 100644 shall include only their corresponding \Cpp{} standard library header, as described in~\ref{headers}. -@@ -3667,7 +3668,7 @@ explicitly stated otherwise. +@@ -3669,7 +3670,7 @@ explicitly stated otherwise. It is unspecified whether any non-member functions in the \Cpp{} standard library are defined as @@ -2698,7 +2689,7 @@ index 2958545e..1c229c08 100644 \pnum A call to a non-member function signature -@@ -3695,7 +3696,7 @@ The phrase ``unless otherwise specified'' applies to cases such as +@@ -3697,7 +3698,7 @@ The phrase ``unless otherwise specified'' applies to cases such as the swappable with requirements\iref{swappable.requirements}. The exception for overloaded operators allows argument-dependent lookup in cases like that of @@ -2707,7 +2698,7 @@ index 2958545e..1c229c08 100644 \effects \begin{codeblock} -@@ -3710,7 +3711,7 @@ return *this; +@@ -3712,7 +3713,7 @@ return *this; \pnum It is unspecified whether any member functions in the \Cpp{} standard library are defined as @@ -2716,7 +2707,7 @@ index 2958545e..1c229c08 100644 \pnum For a non-virtual member function described in the \Cpp{} standard library, -@@ -3789,8 +3790,8 @@ library may be recursively reentered. +@@ -3791,8 +3792,8 @@ library may be recursively reentered. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -2727,7 +2718,7 @@ index 2958545e..1c229c08 100644 Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. -@@ -3833,7 +3834,7 @@ not visible to users and are protected against data races. +@@ -3835,7 +3836,7 @@ not visible to users and are protected against data races. \pnum Unless otherwise specified, \Cpp{} standard library functions shall perform all operations solely within the current thread if those operations have effects that are @@ -2736,7 +2727,7 @@ index 2958545e..1c229c08 100644 \pnum \begin{note} -@@ -3962,7 +3963,7 @@ potentially-throwing exception specification} exceptions. +@@ -3950,7 +3951,7 @@ potentially-throwing exception specification} exceptions. \begin{footnote} In particular, they can report a failure to allocate storage by throwing an exception of type @@ -2759,7 +2750,7 @@ index bdc1f3de..efd4eb00 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index 9d6bf6e6..65e08e2c 100644 +index fbc3cea8..bbf484e7 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -2944,19 +2935,7 @@ index 9d6bf6e6..65e08e2c 100644 \begin{itemdecl} discrete_distribution(); \end{itemdecl} -@@ -7175,8 +7170,9 @@ additional functions and operators as follows: - \begin{itemize} - \item - for every function taking a --\tcode{const valarray\&} other than \tcode{begin} and --\tcode{end}\iref{valarray.range}, -+\tcode{const valarray\&} other than -+\libmemberrefx{begin}{begin}{valarray} and -+\libmemberrefx{end}{end}{valarray}, - identical functions taking the replacement types shall be added; - \item - for every function taking two -@@ -7201,7 +7197,7 @@ objects. +@@ -7196,7 +7191,7 @@ objects. \pnum These library functions are permitted to throw a @@ -2965,7 +2944,7 @@ index 9d6bf6e6..65e08e2c 100644 to carry out the operation. Note that the exception is not mandated. -@@ -7361,7 +7357,7 @@ explicit valarray(size_t n); +@@ -7364,7 +7359,7 @@ explicit valarray(size_t n); \pnum \effects Constructs a \tcode{valarray} that has length \tcode{n}. @@ -2974,7 +2953,7 @@ index 9d6bf6e6..65e08e2c 100644 \end{itemdescr} \indexlibraryctor{valarray}% -@@ -7621,7 +7617,7 @@ and other techniques to generate efficient +@@ -7624,7 +7619,7 @@ and other techniques to generate efficient \pnum The reference returned by the subscript operator for an array shall be valid until the member function @@ -2983,7 +2962,7 @@ index 9d6bf6e6..65e08e2c 100644 that array ends, whichever happens first. \end{itemdescr} -@@ -8047,7 +8043,7 @@ places, with zero fill. +@@ -8050,7 +8045,7 @@ places, with zero fill. \pnum \begin{example} If the argument has the value $-2$, @@ -2992,7 +2971,7 @@ index 9d6bf6e6..65e08e2c 100644 of the first element of \tcode{*this}; etc. \end{example} \end{itemdescr} -@@ -9172,7 +9168,7 @@ parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. +@@ -9175,7 +9170,7 @@ parameter \tcode{T} and its \tcode{reference} type is \tcode{const T\&}. \pnum The iterators returned by \tcode{begin} and \tcode{end} for an array are guaranteed to be valid until the member function @@ -3001,7 +2980,7 @@ index 9d6bf6e6..65e08e2c 100644 array or until the lifetime of that array ends, whichever happens first. -@@ -9813,12 +9809,12 @@ The contents and meaning of the header \libheader{cmath} +@@ -9816,12 +9811,12 @@ The contents and meaning of the header \libheader{cmath} are a subset of the C standard library header \libheader{math.h} and only the declarations shown in the synopsis above are present, with the addition of @@ -3017,7 +2996,7 @@ index 9d6bf6e6..65e08e2c 100644 \end{note} \pnum -@@ -9882,7 +9878,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. +@@ -9885,7 +9880,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. If \tcode{abs} is called with an argument of type \tcode{X} for which \tcode{is_unsigned_v} is \tcode{true} and if \tcode{X} cannot be converted to \tcode{int} @@ -3027,7 +3006,7 @@ index 9d6bf6e6..65e08e2c 100644 Allowing arguments that can be promoted to \tcode{int} provides compatibility with C. diff --git a/source/overloading.tex b/source/overloading.tex -index 2340f356..6fa6a1b1 100644 +index fe6c4d08..9533e291 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -74,7 +74,7 @@ Overload resolution selects the function to call in seven distinct @@ -3092,7 +3071,7 @@ index 2340f356..6fa6a1b1 100644 \begin{ncsimplebnf} postfix-expression \terminal{(} \opt{expression-list} \terminal{)} \end{ncsimplebnf} -@@ -954,7 +954,7 @@ in each case using the selected rewritten \tcode{\keyword{operator}==} candidate +@@ -958,7 +958,7 @@ in each case using the selected rewritten \tcode{\keyword{operator}==} candidate If a built-in candidate is selected by overload resolution, the operands of class type are converted to the types of the corresponding parameters of the selected operation function, except that the second standard conversion @@ -3101,7 +3080,7 @@ index 2340f356..6fa6a1b1 100644 Then the operator is treated as the corresponding built-in operator and interpreted according to \ref{expr.compound}. \begin{example} -@@ -1037,10 +1037,10 @@ void B::f() { +@@ -1041,10 +1041,10 @@ void B::f() { \indextext{overloading!resolution!initialization} \pnum @@ -3114,7 +3093,7 @@ index 2340f356..6fa6a1b1 100644 overload resolution selects the constructor. For direct-initialization or default-initialization (including default-initialization in the context of copy-list-initialization), -@@ -1797,7 +1797,7 @@ Third, for +@@ -1801,7 +1801,7 @@ Third, for \tcode{F} to be a viable function, there shall exist for each argument an @@ -3123,7 +3102,7 @@ index 2340f356..6fa6a1b1 100644 converts that argument to the corresponding parameter of \tcode{F}. If the parameter has reference type, the implicit conversion sequence -@@ -1861,8 +1861,8 @@ float x = a; // ambiguous: both possibilities require conversions, +@@ -1865,8 +1865,8 @@ float x = a; // ambiguous: both possibilities require conversions, \end{example} or, if not that, @@ -3134,7 +3113,7 @@ index 2340f356..6fa6a1b1 100644 return type of $\tcode{F}_1$ is the same kind of reference (lvalue or rvalue) as the reference being initialized, and the return type of $\tcode{F}_2$ is not \begin{example} -@@ -1992,7 +1992,7 @@ $\tcode{F}_1$ is generated from a +@@ -1996,7 +1996,7 @@ $\tcode{F}_1$ is generated from a and $\tcode{F}_2$ is not, or, if not that, \item @@ -3143,7 +3122,7 @@ index 2340f356..6fa6a1b1 100644 and $\tcode{F}_2$ is not, or, if not that, \item -@@ -2118,7 +2118,7 @@ parameter. +@@ -2122,7 +2122,7 @@ parameter. \begin{note} Other properties, such as the lifetime, storage duration, linkage, alignment, accessibility of the argument, whether the argument is a bit-field, @@ -3152,7 +3131,7 @@ index 2340f356..6fa6a1b1 100644 So, although an implicit conversion sequence can be defined for a given argument-parameter pair, the conversion from the argument to the parameter might still -@@ -2131,11 +2131,11 @@ well-formed implicit conversion +@@ -2135,11 +2135,11 @@ well-formed implicit conversion sequence is one of the following forms: \begin{itemize} \item @@ -3167,7 +3146,7 @@ index 2340f356..6fa6a1b1 100644 \end{itemize} \pnum -@@ -2313,10 +2313,10 @@ Each conversion in \tref{over.ics.scs} +@@ -2317,10 +2317,10 @@ Each conversion in \tref{over.ics.scs} also has an associated rank (Exact Match, Promotion, or Conversion). These are used @@ -3181,7 +3160,7 @@ index 2340f356..6fa6a1b1 100644 If any of those has Conversion rank, the sequence has Conversion rank; otherwise, if any of those has Promotion rank, the sequence has Promotion rank; otherwise, the sequence has Exact -@@ -2353,7 +2353,7 @@ by a constructor\iref{class.conv.ctor}, the initial standard +@@ -2357,7 +2357,7 @@ by a constructor\iref{class.conv.ctor}, the initial standard conversion sequence converts the source type to the type of the first parameter of that constructor. If the user-defined @@ -3190,7 +3169,7 @@ index 2340f356..6fa6a1b1 100644 initial standard conversion sequence converts the source type to the type of the object parameter of that conversion function. -@@ -2489,7 +2489,7 @@ the prohibition on binding a non-\keyword{const} lvalue reference to a bit-field +@@ -2493,7 +2493,7 @@ the prohibition on binding a non-\keyword{const} lvalue reference to a bit-field \rSec4[over.ics.list]{List-initialization sequence} \pnum @@ -3199,7 +3178,7 @@ index 2340f356..6fa6a1b1 100644 expression and special rules apply for converting it to a parameter type. \pnum -@@ -2731,13 +2731,13 @@ When comparing the basic forms of implicit conversion sequences +@@ -2735,13 +2735,13 @@ When comparing the basic forms of implicit conversion sequences (as defined in~\ref{over.best.ics}) \begin{itemize} \item @@ -3217,7 +3196,7 @@ index 2340f356..6fa6a1b1 100644 \end{itemize} \pnum -@@ -3183,7 +3183,7 @@ the left side of an assignment\iref{expr.assign}, +@@ -3168,7 +3168,7 @@ the left side of an assignment\iref{expr.assign}, \item a parameter of a function\iref{expr.call}, \item @@ -3226,7 +3205,7 @@ index 2340f356..6fa6a1b1 100644 \item the return value of a function, operator function, or conversion\iref{stmt.return}, \item -@@ -3383,8 +3383,8 @@ The operators +@@ -3368,8 +3368,8 @@ The operators and \tcode{[]} are formed from more than one token. @@ -3237,7 +3216,7 @@ index 2340f356..6fa6a1b1 100644 \end{note} \indextext{operator!subscripting}% \indextext{operator!function call}% -@@ -3480,7 +3480,7 @@ this is not required by operator functions. +@@ -3465,7 +3465,7 @@ this is not required by operator functions. \pnum \indextext{argument!overloaded operator and default}% @@ -3246,7 +3225,7 @@ index 2340f356..6fa6a1b1 100644 except where explicitly stated below. Operator functions cannot have more or fewer parameters than the -@@ -3816,7 +3816,7 @@ to not be included in the set of candidate functions. +@@ -3810,7 +3810,7 @@ to not be included in the set of candidate functions. In this subclause, the term \defn{promoted integral type} is used to refer to those cv-unqualified integral types which are preserved by @@ -3256,10 +3235,10 @@ index 2340f356..6fa6a1b1 100644 and \tcode{long} diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index bab9b3be..14e251f7 100644 +index b9809ae6..9747c367 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex -@@ -508,7 +508,7 @@ shall not appear in any context not mentioned in this subclause. +@@ -512,7 +512,7 @@ shall not appear in any context not mentioned in this subclause. Each preprocessing token that remains (in the list of preprocessing tokens that will become the controlling expression) after all macro replacements have occurred @@ -3268,7 +3247,7 @@ index bab9b3be..14e251f7 100644 \pnum Preprocessing directives of the forms -@@ -562,8 +562,8 @@ are replaced with the \grammarterm{pp-number} +@@ -566,8 +566,8 @@ are replaced with the \grammarterm{pp-number} \tcode{0}, and then each preprocessing token is converted into a token. \begin{note} @@ -3279,7 +3258,7 @@ index bab9b3be..14e251f7 100644 even when its spelling consists entirely of letters and underscores. Therefore it is not subject to this replacement. \end{note} -@@ -581,8 +581,8 @@ Thus on an +@@ -585,8 +585,8 @@ Thus on an implementation where \tcode{std::numeric_limits::max()} is \tcode{0x7FFF} and \tcode{std::numeric_limits::max()} is \tcode{0xFFFF}, the integer literal \tcode{0x8000} is signed and positive within a \tcode{\#if} @@ -3290,7 +3269,7 @@ index bab9b3be..14e251f7 100644 \end{note} This includes interpreting \grammarterm{character-literal}s according to the rules in \ref{lex.ccon}. -@@ -2083,7 +2083,7 @@ of the current source line is +@@ -2085,7 +2085,7 @@ of the current source line is the line number of the current physical source line, i.e., it is one greater than the number of new-line characters read or introduced @@ -3299,7 +3278,7 @@ index bab9b3be..14e251f7 100644 while processing the source file to the current preprocessing token. \pnum -@@ -2446,7 +2446,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. +@@ -2447,7 +2447,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. \indextext{__stdcpp_threads__@\mname{STDCPP_THREADS}}% \mname{STDCPP_THREADS}\\ Defined, and has the value integer literal 1, if and only if a program @@ -3309,10 +3288,10 @@ index bab9b3be..14e251f7 100644 \end{description} diff --git a/source/statements.tex b/source/statements.tex -index 34018bd6..785798f7 100644 +index 8b9e733d..247b8bce 100644 --- a/source/statements.tex +++ b/source/statements.tex -@@ -222,7 +222,7 @@ Expression statements have the form +@@ -219,7 +219,7 @@ Expression statements have the form \end{bnf} The expression is @@ -3321,7 +3300,7 @@ index 34018bd6..785798f7 100644 All \indextext{side effects}% side effects from an expression statement -@@ -451,10 +451,10 @@ the value of the condition is the value of the \grammarterm{expression}; +@@ -448,10 +448,10 @@ the value of the condition is the value of the \grammarterm{expression}; otherwise, it is the value of the decision variable. The value of the condition shall be of integral type, enumeration type, or class type. If of class type, the @@ -3335,7 +3314,7 @@ index 34018bd6..785798f7 100644 to the promoted type. Any statement within the \keyword{switch} statement can be labeled with one or -@@ -464,7 +464,7 @@ more case labels as follows: +@@ -461,7 +461,7 @@ more case labels as follows: \keyword{case} constant-expression \terminal{:} \end{ncbnf} where the \grammarterm{constant-expression} shall be @@ -3344,7 +3323,7 @@ index 34018bd6..785798f7 100644 adjusted type of the switch condition. No two of the case constants in the same switch shall have the same value after conversion. -@@ -550,7 +550,7 @@ An \grammarterm{init-statement} ends with a semicolon. +@@ -547,7 +547,7 @@ An \grammarterm{init-statement} ends with a semicolon. \pnum \indextext{scope!\idxgram{iteration-statement}}% The substatement in an \grammarterm{iteration-statement} implicitly defines @@ -3353,7 +3332,7 @@ index 34018bd6..785798f7 100644 through the loop. If the substatement in an \grammarterm{iteration-statement} is a single statement and not a \grammarterm{compound-statement}, -@@ -649,7 +649,7 @@ fails. +@@ -646,7 +646,7 @@ fails. \indextext{statement!\idxcode{do}} \pnum @@ -3362,7 +3341,7 @@ index 34018bd6..785798f7 100644 if that conversion is ill-formed, the program is ill-formed. \pnum -@@ -1009,8 +1009,8 @@ Jump statements unconditionally transfer control. +@@ -1019,8 +1019,8 @@ Jump statements unconditionally transfer control. \indextext{local variable!destruction of}% \indextext{scope!destructor and exit from}% \begin{note} @@ -3373,7 +3352,7 @@ index 34018bd6..785798f7 100644 in the reverse order of their construction\iref{stmt.dcl}. For temporaries, see~\ref{class.temporary}. However, the program can be terminated (by calling -@@ -1080,7 +1080,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; +@@ -1089,7 +1089,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; the \tcode{return} statement initializes the returned reference or prvalue result object of the (explicit or implicit) function call @@ -3382,7 +3361,7 @@ index 34018bd6..785798f7 100644 \begin{note} A constructor or destructor does not have a return type. \end{note} -@@ -1213,7 +1213,7 @@ results in undefined behavior. +@@ -1226,7 +1226,7 @@ results in undefined behavior. The \tcode{goto} statement unconditionally transfers control to the statement labeled by the identifier. The identifier shall be a \indextext{label}% @@ -3391,7 +3370,7 @@ index 34018bd6..785798f7 100644 \rSec1[stmt.contract.assert]{Assertion statement} -@@ -1324,8 +1324,8 @@ lx: +@@ -1337,8 +1337,8 @@ lx: \indextext{initialization!local \tcode{static}}% \indextext{initialization!local \tcode{thread_local}}% Dynamic initialization of a block variable with @@ -3402,7 +3381,7 @@ index 34018bd6..785798f7 100644 the first time control passes through its declaration; such a variable is considered initialized upon the completion of its initialization. If the initialization exits by throwing an exception, the initialization is not -@@ -1368,8 +1368,8 @@ will be destroyed if and only if it was constructed. +@@ -1381,8 +1381,8 @@ will be destroyed if and only if it was constructed. \pnum There is an ambiguity in the grammar involving \grammarterm{expression-statement}{s} and \grammarterm{declaration}{s}: An @@ -3414,10 +3393,10 @@ index 34018bd6..785798f7 100644 \grammarterm{declarator} starts with a \tcode{(}. In those cases the \grammarterm{statement} is considered a \grammarterm{declaration}, diff --git a/source/strings.tex b/source/strings.tex -index 9e1e9481..099fd5f3 100644 +index 3bc1e026..749c23d9 100644 --- a/source/strings.tex +++ b/source/strings.tex -@@ -5528,13 +5528,13 @@ The contents and meaning of the header \libheaderdef{cstring} +@@ -5533,13 +5533,13 @@ The contents and meaning of the header \libheaderdef{cstring} are the same as the C standard library header \libheader{string.h}. \pnum @@ -3434,7 +3413,7 @@ index 9e1e9481..099fd5f3 100644 Each of these functions implicitly creates objects\iref{intro.object} in the destination region of storage immediately prior to copying the sequence of characters to the destination. -@@ -5546,7 +5546,7 @@ otherwise the value of the first parameter. +@@ -5551,7 +5551,7 @@ otherwise the value of the first parameter. The functions \tcode{strchr}, \tcode{strpbrk}, \tcode{strrchr}, \tcode{strstr}, and \tcode{memchr}, have different signatures in this document, @@ -3444,7 +3423,7 @@ index 9e1e9481..099fd5f3 100644 \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index c6929d58..aac6e41e 100644 +index f5a5ed3a..98842079 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3552,7 +3531,7 @@ index c6929d58..aac6e41e 100644 dependent. The result of applying the \tcode{offsetof} macro to a static data member or a function member is undefined. No operation invoked by the \tcode{offsetof} macro shall throw an exception and -@@ -1099,7 +1086,7 @@ the specialization on the unqualified type \tcode{T}. +@@ -1102,7 +1089,7 @@ the specialization on the unqualified type \tcode{T}. \pnum Non-arithmetic standard types, such as @@ -3561,7 +3540,7 @@ index c6929d58..aac6e41e 100644 \rSec3[numeric.limits.members]{\tcode{numeric_limits} members} -@@ -2141,7 +2128,7 @@ The program is terminated without executing destructors for objects with automat +@@ -2144,7 +2131,7 @@ The program is terminated without executing destructors for objects with automat thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{_Exit}}% @@ -3570,7 +3549,7 @@ index c6929d58..aac6e41e 100644 \end{itemdescr} \indexlibraryglobal{abort}% -@@ -2161,7 +2148,7 @@ automatic, thread, or static storage +@@ -2164,7 +2151,7 @@ automatic, thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{abort}}% @@ -3579,7 +3558,7 @@ index c6929d58..aac6e41e 100644 \end{itemdescr} \indexlibraryglobal{atexit}% -@@ -2178,7 +2165,8 @@ The +@@ -2181,7 +2168,8 @@ The functions register the function pointed to by \tcode{f} to be called without arguments at normal program termination. It is unspecified whether a call to \tcode{atexit()} that does not @@ -3589,7 +3568,7 @@ index c6929d58..aac6e41e 100644 \begin{note} The \tcode{atexit()} functions do not introduce a data race\iref{res.on.data.races}. -@@ -2272,7 +2260,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; +@@ -2275,7 +2263,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; The \tcode{at_quick_exit()} functions register the function pointed to by \tcode{f} to be called without arguments when \tcode{quick_exit} is called. It is unspecified whether a call to \tcode{at_quick_exit()} that does not @@ -3599,7 +3578,7 @@ index c6929d58..aac6e41e 100644 \begin{note} The \tcode{at_quick_exit()} functions do not introduce a -@@ -2324,7 +2313,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s +@@ -2327,7 +2316,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s \pnum \remarks \indextext{signal-safe!\idxcode{quick_exit}}% @@ -3608,7 +3587,7 @@ index c6929d58..aac6e41e 100644 when the functions registered with \tcode{at_quick_exit} are. \end{itemdescr} -@@ -2451,7 +2440,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); +@@ -2454,7 +2443,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3617,7 +3596,7 @@ index c6929d58..aac6e41e 100644 called by a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -2487,7 +2476,7 @@ a null pointer value, throws +@@ -2490,7 +2479,7 @@ a null pointer value, throws \tcode{bad_alloc}. \item Otherwise, the function calls the current @@ -3626,7 +3605,7 @@ index c6929d58..aac6e41e 100644 If the called function returns, the loop repeats. \item The loop terminates when an attempt to allocate the requested storage is -@@ -2709,7 +2698,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); +@@ -2712,7 +2701,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3635,7 +3614,7 @@ index c6929d58..aac6e41e 100644 called by the array form of a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -3022,8 +3011,8 @@ versions of \tcode{operator delete}, the C standard library function +@@ -3025,8 +3014,8 @@ versions of \tcode{operator delete}, the C standard library function introduce a data race\iref{res.on.data.races}. Calls to these functions that allocate or deallocate a particular unit of storage shall occur in a single total order, and each such deallocation call @@ -3646,7 +3625,7 @@ index c6929d58..aac6e41e 100644 \rSec2[alloc.errors]{Storage allocation errors} -@@ -3177,8 +3166,8 @@ template constexpr T* launder(T* p) noexcept; +@@ -3180,8 +3169,8 @@ template constexpr T* launder(T* p) noexcept; \pnum \expects \tcode{p} represents the address \placeholder{A} of a byte in memory. @@ -3657,7 +3636,7 @@ index c6929d58..aac6e41e 100644 is located at the address \placeholder{A}. All bytes of storage that would be reachable through\iref{basic.compound} the result -@@ -3391,7 +3380,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. +@@ -3394,7 +3383,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. \pnum \remarks @@ -3667,7 +3646,7 @@ index c6929d58..aac6e41e 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. \end{itemdescr} -@@ -3967,7 +3957,8 @@ the ordinary literal encoding\iref{lex.ccon}. +@@ -3971,7 +3961,8 @@ the ordinary literal encoding\iref{lex.ccon}. \pnum \remarks @@ -3677,7 +3656,7 @@ index c6929d58..aac6e41e 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. The return value remains valid until the exception object from which -@@ -4118,7 +4109,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread. +@@ -4122,7 +4113,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread. \remarks When \tcode{uncaught_exceptions() > 0}, throwing an exception can result in a call of the function @@ -3686,7 +3665,7 @@ index c6929d58..aac6e41e 100644 \end{itemdescr} \rSec2[propagation]{Exception propagation} -@@ -4181,8 +4172,9 @@ constexpr exception_ptr current_exception() noexcept; +@@ -4185,8 +4176,9 @@ constexpr exception_ptr current_exception() noexcept; \begin{itemdescr} \pnum \returns @@ -3698,7 +3677,7 @@ index c6929d58..aac6e41e 100644 handled exception, or a null \tcode{exception_ptr} object if no exception is being handled. The referenced object shall remain valid at least as long as there is an \tcode{exception_ptr} object that refers to it. -@@ -4793,7 +4785,7 @@ template constexpr const E* end(initializer_list il) noexcept; +@@ -4776,7 +4768,7 @@ constexpr bool empty() const noexcept; \pnum The header \libheaderdef{compare} specifies types, objects, and functions for use primarily in connection with @@ -3707,7 +3686,7 @@ index c6929d58..aac6e41e 100644 \indexlibraryglobal{is_eq}% \indexlibraryglobal{is_neq}% -@@ -6381,7 +6373,7 @@ environment. +@@ -6369,7 +6361,7 @@ environment. \end{note} \pnum @@ -3717,10 +3696,10 @@ index c6929d58..aac6e41e 100644 calls to the \tcode{setlocale} function or with calls to functions that are affected by the current C locale. The implementation shall behave as if no diff --git a/source/templates.tex b/source/templates.tex -index 1cc78289..e9f69fd7 100644 +index 6cf798ea..d7f6a4d9 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -687,7 +687,7 @@ struct A {}; +@@ -713,7 +713,7 @@ struct A {}; \rSec1[temp.names]{Names of template specializations} \pnum @@ -3729,7 +3708,7 @@ index 1cc78289..e9f69fd7 100644 \grammarterm{template-id}: \begin{bnf} -@@ -1016,8 +1016,8 @@ in a \grammarterm{splice-specialization-specifier} +@@ -1052,8 +1052,8 @@ in a \grammarterm{splice-specialization-specifier} shall match the type and form specified for the corresponding parameter declared by the template in its \grammarterm{template-parameter-list}. @@ -3740,7 +3719,7 @@ index 1cc78289..e9f69fd7 100644 \grammarterm{template-argument}{s}. \begin{example} \begin{codeblock} -@@ -1182,7 +1182,7 @@ When a \grammarterm{simple-template-id} or +@@ -1244,7 +1244,7 @@ When a \grammarterm{simple-template-id} or \grammarterm{splice-specialization-specifier} does not designate a function, a default \grammarterm{template-argument} is @@ -3749,7 +3728,7 @@ index 1cc78289..e9f69fd7 100644 when the value of that default argument is needed. \begin{example} \begin{codeblock} -@@ -1194,7 +1194,7 @@ The default argument for \tcode{U} is instantiated to form the type \tcode{S 1} is not satisfied; the second operand is not checked for satisfaction. \end{example} -@@ -1748,9 +1748,9 @@ in the declaration of a constrained entity (and, therefore, can involve the +@@ -1813,9 +1813,9 @@ in the declaration of a constrained entity (and, therefore, can involve the unsubstituted template parameters of the constrained entity), called the \defn{parameter mapping}\iref{temp.constr.decl}. \begin{note} @@ -3809,7 +3788,7 @@ index 1cc78289..e9f69fd7 100644 \end{note} \pnum -@@ -1827,7 +1827,7 @@ first substituted into its expression. +@@ -1892,7 +1892,7 @@ first substituted into its expression. If substitution results in an invalid type or expression in the immediate context of the atomic constraint\iref{temp.deduct.general}, the constraint is not satisfied. @@ -3818,7 +3797,7 @@ index 1cc78289..e9f69fd7 100644 is performed if necessary, and \tcode{E} shall be a constant expression of type \tcode{bool}. The constraint is satisfied if and only if evaluation of \tcode{E} -@@ -1989,11 +1989,11 @@ A declaration's \defn{associated constraints} are defined as follows: +@@ -2054,11 +2054,11 @@ A declaration's \defn{associated constraints} are defined as follows: the declaration has no associated constraints. \item Otherwise, if there is a single introduced \grammarterm{constraint-expression}, @@ -3833,7 +3812,7 @@ index 1cc78289..e9f69fd7 100644 following order: \begin{itemize} \item -@@ -2090,7 +2090,7 @@ so it does match \#2. +@@ -2155,7 +2155,7 @@ so it does match \#2. \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is @@ -3842,7 +3821,7 @@ index 1cc78289..e9f69fd7 100644 % \begin{itemize} \item -@@ -2099,7 +2099,7 @@ the normal form of \tcode{E}. +@@ -2164,7 +2164,7 @@ the normal form of \tcode{E}. \item The normal form of an expression \tcode{E1 || E2} is @@ -3851,7 +3830,7 @@ index 1cc78289..e9f69fd7 100644 the normal forms of \tcode{E1} and \tcode{E2}. \item -@@ -2347,7 +2347,7 @@ the constraint of $A$ subsumes that of $B$. +@@ -2412,7 +2412,7 @@ the constraint of $A$ subsumes that of $B$. \end{itemize} % \begin{example} @@ -3860,7 +3839,7 @@ index 1cc78289..e9f69fd7 100644 % The constraint $A \land B$ subsumes $A$, but $A$ does not subsume $A \land B$. % -@@ -2567,7 +2567,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. +@@ -2632,7 +2632,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. \end{example} \pnum @@ -3869,7 +3848,7 @@ index 1cc78289..e9f69fd7 100644 \tcode{decltype($e$)} denotes a unique dependent type. Two such \grammarterm{decltype-specifier}{s} refer to the same type only if their \grammarterm{expression}{s} are -@@ -2637,8 +2637,8 @@ default arguments, +@@ -2702,8 +2702,8 @@ default arguments, \grammarterm{requires-clause}{s}, or \grammarterm{noexcept-specifier}{s}. @@ -3880,7 +3859,7 @@ index 1cc78289..e9f69fd7 100644 For the purpose of name lookup and instantiation, the \grammarterm{compound-statement} of an \grammarterm{expansion-statement} is considered a template definition. -@@ -2995,7 +2995,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} +@@ -3060,7 +3060,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} \pnum A local class of non-closure type shall not have member templates. @@ -3889,7 +3868,7 @@ index 1cc78289..e9f69fd7 100644 apply to member template names. A destructor shall not be a member template. -@@ -3222,7 +3222,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. +@@ -3287,7 +3287,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. \item In a \grammarterm{capture-list}\iref{expr.prim.lambda.capture}; the pattern is the \grammarterm{capture} without the ellipsis. @@ -3898,7 +3877,7 @@ index 1cc78289..e9f69fd7 100644 \grammarterm{identifier}. \item In a \grammarterm{pack-index-expression}; -@@ -3845,9 +3845,9 @@ primary template. +@@ -3910,9 +3910,9 @@ primary template. \pnum A partial specialization matches a given actual template argument list if the template arguments of the partial specialization can be @@ -3911,7 +3890,7 @@ index 1cc78289..e9f69fd7 100644 \begin{example} \begin{codeblock} template class A { }; // \#1 -@@ -3909,14 +3909,14 @@ of the primary template. +@@ -3974,14 +3974,14 @@ of the primary template. For two partial specializations, the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more @@ -3929,7 +3908,7 @@ index 1cc78289..e9f69fd7 100644 as the corresponding partial specialization. \item Each function template -@@ -4122,8 +4122,8 @@ void h(int* p) { +@@ -4187,8 +4187,8 @@ void h(int* p) { \end{example} \pnum @@ -3940,7 +3919,7 @@ index 1cc78289..e9f69fd7 100644 \pnum The signature of a function template -@@ -4174,7 +4174,7 @@ For example, a template type parameter can be used in the +@@ -4239,7 +4239,7 @@ For example, a template type parameter can be used in the Two expressions involving template parameters are considered \defnx{equivalent}{equivalent!expressions} if two function definitions containing the expressions would satisfy @@ -3949,7 +3928,7 @@ index 1cc78289..e9f69fd7 100644 to name the template parameters may differ as long as a token used to name a template parameter in one expression is replaced by another token that names the same template parameter in the other expression. -@@ -4344,8 +4344,8 @@ function template +@@ -4409,8 +4409,8 @@ function template specialization is selected to match a placement operator new\iref{basic.stc.dynamic.deallocation,expr.new}; \item @@ -3960,7 +3939,7 @@ index 1cc78289..e9f69fd7 100644 a function template specialization. \end{itemize} -@@ -4738,7 +4738,7 @@ A \grammarterm{concept-definition} +@@ -4803,7 +4803,7 @@ A \grammarterm{concept-definition} shall inhabit a namespace scope\iref{basic.scope.namespace}. \pnum @@ -3969,7 +3948,7 @@ index 1cc78289..e9f69fd7 100644 \pnum A concept is not instantiated\iref{temp.spec}. -@@ -5065,7 +5065,7 @@ was a pack expansion and the corresponding pack is empty, or +@@ -5130,7 +5130,7 @@ was a pack expansion and the corresponding pack is empty, or \item an instantiation uses a default argument or default template argument that had not been defined at the point at which the template was defined, or @@ -3978,7 +3957,7 @@ index 1cc78289..e9f69fd7 100644 instantiation uses \begin{itemize} \item the value of a const object of integral or unscoped enumeration type or -@@ -5318,7 +5318,7 @@ any of the expressions +@@ -5383,7 +5383,7 @@ any of the expressions or \grammarterm{braced-init-list}{s} in the \grammarterm{expression-list} @@ -3987,7 +3966,7 @@ index 1cc78289..e9f69fd7 100644 \item the \grammarterm{unqualified-id} is a \grammarterm{template-id} in which any of the template arguments depends -@@ -5378,7 +5378,7 @@ if it is +@@ -5443,7 +5443,7 @@ if it is \item in the definition of a class template, a nested class of a class template, a member of a class template, or a member of a nested class of a class template, @@ -3996,7 +3975,7 @@ index 1cc78289..e9f69fd7 100644 \item in the definition of a primary class template or a member of a primary class template, the name of the -@@ -5657,7 +5657,7 @@ used without a \grammarterm{template-argument-list}. +@@ -5722,7 +5722,7 @@ used without a \grammarterm{template-argument-list}. \end{footnote} \item a \grammarterm{pack-index-specifier}, \item denoted by \tcode{decltype(}\grammarterm{expression}{}\tcode{)}, @@ -4005,16 +3984,16 @@ index 1cc78289..e9f69fd7 100644 \item denoted by a \grammarterm{splice-type-specifier} in which either the \grammarterm{splice-specifier} or \grammarterm{splice-specialization-specifier} -@@ -5809,7 +5809,7 @@ see~\ref{support.types}. +@@ -5874,7 +5874,7 @@ see~\ref{support.types}. \end{note} \pnum -A class member access expression\iref{expr.ref} is +A \link{class member access expression}{expr.ref} is type-dependent if - the terminal name of its \grammarterm{id-expression}, if any, is dependent or - the expression refers to a member of the current instantiation and -@@ -5953,7 +5953,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the + \begin{itemize} + \item +@@ -6022,7 +6022,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the instantiation is value-dependent. An expression of the form \tcode{\&}\grammarterm{cast-expression} is also value-dependent if evaluating \grammarterm{cast-expression} @@ -4023,7 +4002,7 @@ index 1cc78289..e9f69fd7 100644 the result of the evaluation refers to a templated entity that is an object with static or thread storage duration or a member function. -@@ -6176,7 +6176,7 @@ within a translation unit. +@@ -6245,7 +6245,7 @@ within a translation unit. A specialization for any template may have points of instantiation in multiple translation units. If two different points of instantiation give a template specialization @@ -4032,7 +4011,7 @@ index 1cc78289..e9f69fd7 100644 the program is ill-formed, no diagnostic required. \pnum -@@ -6487,7 +6487,7 @@ of type +@@ -6556,7 +6556,7 @@ of type \pnum If a function declaration acquired its function type through @@ -4041,7 +4020,7 @@ index 1cc78289..e9f69fd7 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -6568,7 +6568,7 @@ X ch; // error: incomplete type \tcode{X} +@@ -6637,7 +6637,7 @@ X ch; // error: incomplete type \tcode{X} \end{example} \begin{note} Within a template declaration, @@ -4050,7 +4029,7 @@ index 1cc78289..e9f69fd7 100644 a local class are never considered to be entities that can be separately instantiated (this includes their default arguments, \grammarterm{noexcept-specifier}{s}, and non-static data member -@@ -6746,7 +6746,7 @@ void x() { +@@ -6815,7 +6815,7 @@ void x() { \end{example} \pnum @@ -4059,7 +4038,7 @@ index 1cc78289..e9f69fd7 100644 can be determined without instantiating a class template definition, it is unspecified whether that instantiation actually takes place. \begin{example} -@@ -7083,7 +7083,7 @@ If an entity is the subject of both an explicit instantiation declaration +@@ -7152,7 +7152,7 @@ If an entity is the subject of both an explicit instantiation declaration and an explicit instantiation definition in the same translation unit, the definition shall follow the declaration. An entity that is the subject of an explicit instantiation declaration and that is also used @@ -4068,7 +4047,7 @@ index 1cc78289..e9f69fd7 100644 in the translation unit shall be the subject of an explicit instantiation definition somewhere in the program; otherwise the program is ill-formed, no diagnostic required. -@@ -8148,7 +8148,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. +@@ -8217,7 +8217,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. In the following example, assuming a \tcode{signed char} cannot represent the value 1000, @@ -4077,7 +4056,7 @@ index 1cc78289..e9f69fd7 100644 would be required to convert the \grammarterm{template-argument} of type \tcode{int} to \tcode{signed char}, -@@ -8257,8 +8257,8 @@ is not a reference type: +@@ -8326,8 +8326,8 @@ is not a reference type: \item If \tcode{A} @@ -4088,7 +4067,7 @@ index 1cc78289..e9f69fd7 100644 \tcode{A} for type deduction; otherwise, -@@ -8266,7 +8266,7 @@ otherwise, +@@ -8335,7 +8335,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -4097,7 +4076,7 @@ index 1cc78289..e9f69fd7 100644 of \tcode{A} for type -@@ -8362,8 +8362,8 @@ The transformed \tcode{A} +@@ -8431,8 +8431,8 @@ The transformed \tcode{A} can be another pointer or pointer-to-member type that can be converted to the deduced \tcode{A} @@ -4108,7 +4087,7 @@ index 1cc78289..e9f69fd7 100644 \item If -@@ -8496,7 +8496,7 @@ void test() { +@@ -8565,7 +8565,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -4117,7 +4096,7 @@ index 1cc78289..e9f69fd7 100644 If there is a target, the function template's function type and the target type are used as the types of -@@ -8543,7 +8543,7 @@ is not a reference type: +@@ -8612,7 +8612,7 @@ is not a reference type: If \tcode{P} is an array type, the pointer type produced by the @@ -4126,7 +4105,7 @@ index 1cc78289..e9f69fd7 100644 \tcode{P} for type deduction; otherwise, -@@ -8551,7 +8551,7 @@ deduction; otherwise, +@@ -8620,7 +8620,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -4135,7 +4114,7 @@ index 1cc78289..e9f69fd7 100644 \tcode{P} for type deduction; otherwise, -@@ -8642,7 +8642,7 @@ after a function has been selected. +@@ -8711,7 +8711,7 @@ after a function has been selected. In the context of a call to a conversion function, the return types of the conversion function templates are used. \item @@ -4144,7 +4123,7 @@ index 1cc78289..e9f69fd7 100644 type is used. \end{itemize} -@@ -9158,7 +9158,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the +@@ -9227,7 +9227,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the template argument list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by $\texttt{P}_i$. @@ -4153,7 +4132,7 @@ index 1cc78289..e9f69fd7 100644 originally a pack expansion: \begin{itemize} \item if \tcode{P} does not contain a template argument corresponding to -@@ -9221,7 +9221,7 @@ each remaining parameter type in the parameter-type-list +@@ -9290,7 +9290,7 @@ each remaining parameter type in the parameter-type-list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by the function parameter pack. @@ -4162,7 +4141,7 @@ index 1cc78289..e9f69fd7 100644 originally a function parameter pack: \begin{itemize} \item if \tcode{P} does not contain a function parameter type corresponding to -@@ -9515,8 +9515,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod +@@ -9628,8 +9628,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod In a declaration whose \grammarterm{declarator-id} refers to a specialization of a function template, template argument deduction is performed to identify the specialization to which the declaration refers. Specifically, this is done @@ -4174,7 +4153,7 @@ index 1cc78289..e9f69fd7 100644 \tcode{operator new}\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index db30cf64..0962d340 100644 +index 7480badf..0d7a40ef 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4197,7 +4176,7 @@ index db30cf64..0962d340 100644 \begin{itemdecl} m.try_lock_for(rel_time) -@@ -7267,7 +7267,7 @@ namespace std { +@@ -7288,7 +7288,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -4206,7 +4185,7 @@ index db30cf64..0962d340 100644 An execution agent \term{owns} a mutex from the time it successfully calls one of the lock functions until it calls unlock. Mutexes can be either recursive or non-recursive, and can grant simultaneous ownership to one or many execution agents. Both -@@ -7311,7 +7311,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on +@@ -7332,7 +7332,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on a single mutex appears to occur in a single total order. \begin{note} This @@ -4215,7 +4194,7 @@ index db30cf64..0962d340 100644 mutex. \end{note} \begin{note} -@@ -7391,7 +7391,7 @@ in the absence of contending mutex acquisitions. +@@ -7412,7 +7412,7 @@ in the absence of contending mutex acquisitions. \pnum \sync If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations @@ -4224,7 +4203,7 @@ index db30cf64..0962d340 100644 \begin{note} Since \tcode{lock()} does not synchronize with a failed subsequent \tcode{try_lock()}, the visibility rules are weak enough that little would be -@@ -7427,7 +7427,7 @@ Releases the calling thread's ownership of the mutex. +@@ -7448,7 +7448,7 @@ Releases the calling thread's ownership of the mutex. \pnum \sync @@ -4233,7 +4212,7 @@ index db30cf64..0962d340 100644 lock operations that obtain ownership on the same object. \pnum -@@ -7556,9 +7556,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, +@@ -7577,9 +7577,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, meet the requirements set out below. In this description, \tcode{m} denotes an object of a mutex type, \tcode{rel_time} denotes an object of an @@ -4245,7 +4224,7 @@ index db30cf64..0962d340 100644 \begin{note} The timed mutex types meet the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. -@@ -7848,7 +7848,7 @@ Releases a shared lock on the mutex held by the calling thread. +@@ -7869,7 +7869,7 @@ Releases a shared lock on the mutex held by the calling thread. \pnum \sync @@ -4254,7 +4233,7 @@ index db30cf64..0962d340 100644 \tcode{lock()} operations that obtain ownership on the same object. \pnum -@@ -7952,7 +7952,7 @@ meet the requirements set out below. In this description, +@@ -7973,7 +7973,7 @@ meet the requirements set out below. In this description, \tcode{rel_time} denotes an object of an instantiation of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes an object of an instantiation of @@ -4263,7 +4242,7 @@ index db30cf64..0962d340 100644 \begin{note} The shared timed mutex types meet the \oldconcept{SharedTimedLockable} requirements\iref{thread.req.lockable.shared.timed}. -@@ -8163,7 +8163,7 @@ namespace std { +@@ -8184,7 +8184,7 @@ namespace std { \pnum An object of type \tcode{lock_guard} controls the ownership of a lockable object within a scope. A \tcode{lock_guard} object maintains ownership of a lockable @@ -4272,7 +4251,7 @@ index db30cf64..0962d340 100644 The behavior of a program is undefined if the lockable object referenced by \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} -@@ -8236,7 +8236,7 @@ namespace std { +@@ -8257,7 +8257,7 @@ namespace std { \pnum An object of type \tcode{scoped_lock} controls the ownership of lockable objects within a scope. A \tcode{scoped_lock} object maintains ownership of lockable @@ -4281,7 +4260,7 @@ index db30cf64..0962d340 100644 The behavior of a program is undefined if the lockable objects referenced by \tcode{pm} do not exist for the entire lifetime of the \tcode{scoped_lock} object. -@@ -9393,7 +9393,7 @@ earlier returning execution. +@@ -9414,7 +9414,7 @@ earlier returning execution. \pnum \sync For any given \tcode{once_flag}: all active executions occur in a total @@ -4290,7 +4269,7 @@ index db30cf64..0962d340 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -11356,22 +11356,21 @@ the state object. +@@ -11380,22 +11380,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4317,7 +4296,7 @@ index db30cf64..0962d340 100644 \begin{note} This explicitly specifies that the result of the shared state is visible in the objects that reference this state in the sense of data race -@@ -11690,8 +11689,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -11714,8 +11713,8 @@ The class template \tcode{future} defines a type for asynchronous return objects do not share their shared state with other asynchronous return objects. A default-constructed \tcode{future} object has no shared state. A \tcode{future} object with shared state can be created by @@ -4328,7 +4307,7 @@ index db30cf64..0962d340 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -12001,7 +12000,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -12025,7 +12024,7 @@ object has no shared state. A \tcode{shared_future} object with shared state can be created by conversion from a \tcode{future} object and shares its shared state with the @@ -4337,7 +4316,7 @@ index db30cf64..0962d340 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -12450,7 +12449,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -12474,7 +12473,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -4347,7 +4326,7 @@ index db30cf64..0962d340 100644 the first function that successfully detects the ready status of the shared state or diff --git a/source/time.tex b/source/time.tex -index 67b1b06b..86cb2905 100644 +index 7fa1323a..85f3877e 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1216,7 +1216,7 @@ unless it meets all of the following conditions: @@ -4359,7 +4338,7 @@ index 67b1b06b..86cb2905 100644 \item the expression \tcode{T::now()} is well-formed when treated as an unevaluated operand. -@@ -11078,7 +11078,7 @@ The expression +@@ -11089,7 +11089,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp) \end{codeblock} @@ -4368,7 +4347,7 @@ index 67b1b06b..86cb2905 100644 \pnum \returns -@@ -11111,7 +11111,7 @@ The expression +@@ -11122,7 +11122,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp, addressof(abbrev)) \end{codeblock} @@ -4377,7 +4356,7 @@ index 67b1b06b..86cb2905 100644 \pnum \returns -@@ -11148,7 +11148,7 @@ from_stream(declval&>(), +@@ -11159,7 +11159,7 @@ from_stream(declval&>(), declval*>(), &offset) \end{codeblock} @@ -4386,7 +4365,7 @@ index 67b1b06b..86cb2905 100644 \pnum \returns -@@ -11188,7 +11188,7 @@ The expression +@@ -11199,7 +11199,7 @@ The expression from_stream(declval&>(), @$F$@, tp, addressof(abbrev), &offset) \end{codeblock} @@ -4396,7 +4375,7 @@ index 67b1b06b..86cb2905 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index 5e93b63c..edaa136a 100644 +index d714c1f2..9da223d9 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -104,15 +104,15 @@ namespace std { @@ -4416,9 +4395,9 @@ index 5e93b63c..edaa136a 100644 - using index_sequence_for = make_index_sequence; + using @\libglobal{index_sequence_for}@ = make_index_sequence; - // \ref{pairs}, class template \tcode{pair} - template -@@ -333,7 +333,7 @@ of forwarding functions. + // \ref{intseq.binding}, structured binding support + template struct tuple_size; +@@ -345,7 +345,7 @@ of forwarding functions. \indextext{signal-safe!\idxcode{forward}}% \indextext{signal-safe!\idxcode{move}}% \indextext{signal-safe!\idxcode{move_if_noexcept}}% @@ -4427,7 +4406,7 @@ index 5e93b63c..edaa136a 100644 \indexlibraryglobal{forward}% \indextext{\idxcode{forward}}% -@@ -508,7 +508,7 @@ template constexpr add_const_t& as_const(T& t) noexcept; +@@ -520,7 +520,7 @@ template constexpr add_const_t& as_const(T& t) noexcept; \pnum The library provides the function template \tcode{declval} to simplify the definition of @@ -4436,7 +4415,7 @@ index 5e93b63c..edaa136a 100644 \indexlibraryglobal{declval}% \begin{itemdecl} -@@ -1499,7 +1499,7 @@ inline constexpr piecewise_construct_t piecewise_construct{}; +@@ -1511,7 +1511,7 @@ inline constexpr piecewise_construct_t piecewise_construct{}; The \keyword{struct} \tcode{piecewise_construct_t} is an empty class type used as a unique type to disambiguate constructor and function overloading. Specifically, \tcode{pair} has a constructor with \tcode{piecewise_construct_t} as the @@ -4445,7 +4424,7 @@ index 5e93b63c..edaa136a 100644 for piecewise construction of the elements of the \tcode{pair} object. \rSec1[tuple]{Tuples} -@@ -2145,7 +2145,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. +@@ -2161,7 +2161,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. \pnum \effects Equivalent to the preceding constructors except that each element is constructed with @@ -4454,7 +4433,7 @@ index 5e93b63c..edaa136a 100644 \end{itemdescr} \rSec3[tuple.assign]{Assignment} -@@ -2803,7 +2803,7 @@ template struct tuple_size; +@@ -2819,7 +2819,7 @@ template struct tuple_size; \pnum Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. If the expression \tcode{TS::value} is well-formed @@ -4463,7 +4442,7 @@ index 5e93b63c..edaa136a 100644 each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts} with a base characteristic of \begin{codeblock} -@@ -6921,6 +6921,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); +@@ -7038,6 +7038,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); \rSec2[variant.monostate]{Class \tcode{monostate}}% \indexlibraryglobal{monostate}% @@ -4471,7 +4450,7 @@ index 5e93b63c..edaa136a 100644 \begin{itemdecl} struct monostate{}; \end{itemdecl} -@@ -7089,7 +7090,8 @@ namespace std { +@@ -7209,7 +7210,8 @@ namespace std { \end{codeblock} \pnum @@ -4485,7 +4464,7 @@ index 5e93b63c..edaa136a 100644 2.43.0 -From 94b6f4ff78cf2a489238876c7b142361e08397ba Mon Sep 17 00:00:00 2001 +From 35d8595c799e8847754007c2f001a9ea312645ae Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 Subject: [PATCH 3/9] Fix dubious \defnx that has see{} in it, and remove range @@ -4510,10 +4489,10 @@ index f0d3b942..90000ab2 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index e9f69fd7..fbeb36af 100644 +index d7f6a4d9..45edbccb 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -2086,7 +2086,6 @@ so it does match \#2. +@@ -2151,7 +2151,6 @@ so it does match \#2. \end{example} \rSec2[temp.constr.normal]{Constraint normalization} @@ -4521,7 +4500,7 @@ index e9f69fd7..fbeb36af 100644 \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is -@@ -2205,10 +2204,11 @@ whose parameter mapping is the identity mapping. +@@ -2270,10 +2269,11 @@ whose parameter mapping is the identity mapping. \end{itemize} \pnum @@ -4538,7 +4517,7 @@ index e9f69fd7..fbeb36af 100644 2.43.0 -From af715b9daabd5ae5d1af950bfeae669f45d25bd6 Mon Sep 17 00:00:00 2001 +From 70b4bcca531629529edcbc9ee4e7d554e9e84b4a Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and @@ -4546,9 +4525,9 @@ Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and --- source/exceptions.tex | 4 +- - source/lex.tex | 182 +++++++-------- + source/lex.tex | 180 +++++++-------- source/time.tex | 518 +++++++++++++++++++++--------------------- - 3 files changed, 352 insertions(+), 352 deletions(-) + 3 files changed, 351 insertions(+), 351 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex index 0072f5d6..88e1a340 100644 @@ -4569,10 +4548,10 @@ index 0072f5d6..88e1a340 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index 4ea5904d..7be0ad42 100644 +index ba052c96..53864cf8 100644 --- a/source/lex.tex +++ b/source/lex.tex -@@ -330,43 +330,43 @@ the numerical value has no other meaning in this context. +@@ -333,43 +333,43 @@ the numerical value has no other meaning in this context. \ucode{000c} & \uname{form feed} & \\ \ucode{0020} & \uname{space} & \\ \ucode{000a} & \uname{line feed} & new-line \\ @@ -4653,7 +4632,7 @@ index 4ea5904d..7be0ad42 100644 \end{floattable} \pnum -@@ -605,7 +605,7 @@ given character: +@@ -608,7 +608,7 @@ given character: \item \indextext{literal!string!raw}% If the next character begins a sequence of characters that could be the prefix @@ -4662,7 +4641,7 @@ index 4ea5904d..7be0ad42 100644 token shall be a raw string literal. Between the initial and final double quote characters of the raw string, any transformations performed in phase 2 (line splicing) are reverted; this reversion -@@ -613,7 +613,7 @@ shall apply before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting +@@ -616,7 +616,7 @@ is applied before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting parenthesis is identified. The raw string literal is defined as the shortest sequence of characters that matches the raw-string pattern \begin{ncbnf} @@ -4671,7 +4650,7 @@ index 4ea5904d..7be0ad42 100644 \end{ncbnf} \item Otherwise, if the next three characters are \tcode{<::} and the subsequent character -@@ -748,15 +748,15 @@ depending on the implementation. +@@ -751,15 +751,15 @@ depending on the implementation. \begin{bnf} \nontermdef{pp-number}\br digit\br @@ -4695,7 +4674,7 @@ index 4ea5904d..7be0ad42 100644 \end{bnf} \pnum -@@ -1184,19 +1184,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1172,19 +1172,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. \nontermdef{binary-literal}\br \terminal{0b} binary-digit\br \terminal{0B} binary-digit\br @@ -4718,7 +4697,7 @@ index 4ea5904d..7be0ad42 100644 \end{bnf} \begin{bnf} -@@ -1227,14 +1227,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1215,14 +1215,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{hexadecimal-digit-sequence}\br hexadecimal-digit\br @@ -4737,7 +4716,7 @@ index 4ea5904d..7be0ad42 100644 \end{bnf} \begin{bnf} -@@ -1249,17 +1249,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1237,17 +1237,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{unsigned-suffix} \textnormal{one of}\br @@ -4758,7 +4737,7 @@ index 4ea5904d..7be0ad42 100644 \end{bnf} \begin{bnf} -@@ -1298,7 +1298,7 @@ when determining the value. +@@ -1286,7 +1286,7 @@ when determining the value. \pnum The \grammarterm{hexadecimal-digit}s @@ -4767,7 +4746,7 @@ index 4ea5904d..7be0ad42 100644 have decimal values ten through fifteen. \begin{example} The number twelve can be written \tcode{12}, \tcode{014}, -@@ -1342,7 +1342,7 @@ none & +@@ -1330,7 +1330,7 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4776,7 +4755,7 @@ index 4ea5904d..7be0ad42 100644 \tcode{unsigned int} & \tcode{unsigned int}\\ & -@@ -1351,7 +1351,7 @@ none & +@@ -1339,7 +1339,7 @@ none & & \tcode{unsigned long long int} & \tcode{unsigned long long int}\\\hline @@ -4785,7 +4764,7 @@ index 4ea5904d..7be0ad42 100644 \tcode{long int} & \tcode{long int}\\ & -@@ -1363,22 +1363,22 @@ none & +@@ -1351,22 +1351,22 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4813,7 +4792,7 @@ index 4ea5904d..7be0ad42 100644 & \\\hline \tcode{z} or \tcode{Z} & -@@ -1426,12 +1426,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1414,12 +1414,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \indextext{literal!character}% \begin{bnf} \nontermdef{character-literal}\br @@ -4828,7 +4807,7 @@ index 4ea5904d..7be0ad42 100644 \end{bnf} \begin{bnf} -@@ -1461,12 +1461,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1449,12 +1449,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{simple-escape-sequence}\br @@ -4843,7 +4822,7 @@ index 4ea5904d..7be0ad42 100644 \end{bnf} \begin{bnf} -@@ -1482,21 +1482,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1470,21 +1470,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{octal-escape-sequence}\br @@ -4872,7 +4851,7 @@ index 4ea5904d..7be0ad42 100644 \end{bnf} \begin{bnf} -@@ -1679,42 +1679,42 @@ is supported for compatibility with \CppXIV{} and C. +@@ -1667,42 +1667,42 @@ is supported for compatibility with \CppXIV{} and C. \begin{bnf} \nontermdef{fractional-constant}\br @@ -4926,18 +4905,16 @@ index 4ea5904d..7be0ad42 100644 \end{bnf} \pnum -@@ -1799,8 +1799,8 @@ chosen in an \impldef{choice of larger or smaller value of - \indextext{literal!string}% +@@ -1788,7 +1788,7 @@ chosen in an \impldef{choice of larger or smaller value of \begin{bnf} \nontermdef{string-literal}\br -- \opt{encoding-prefix} \terminal{"} \opt{s-char-sequence} \terminal{"}\br + \opt{encoding-prefix} plain-string-literal\br - \opt{encoding-prefix} \terminal{R} raw-string -+ \opt{encoding-prefix} \literalterminal{"} \opt{s-char-sequence} \literalterminal{"}\br + \opt{encoding-prefix} \literalterminal{R} raw-string \end{bnf} \begin{bnf} -@@ -1823,7 +1823,7 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1816,7 +1816,7 @@ chosen in an \impldef{choice of larger or smaller value of \begin{bnf} \nontermdef{raw-string}\br @@ -4946,7 +4923,7 @@ index 4ea5904d..7be0ad42 100644 \end{bnf} \begin{bnf} -@@ -1910,7 +1910,7 @@ UTF-32 & +@@ -1902,7 +1902,7 @@ UTF-32 & \pnum \indextext{literal!string!raw}% @@ -4956,10 +4933,10 @@ index 4ea5904d..7be0ad42 100644 in the prefix is a \defn{raw string literal}. The \grammarterm{d-char-sequence} serves as a delimiter. The terminating diff --git a/source/time.tex b/source/time.tex -index 86cb2905..f1f22e40 100644 +index 85f3877e..6cb712e2 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -2194,7 +2194,7 @@ If the parse fails to decode a valid duration, +@@ -2198,7 +2198,7 @@ If the parse fails to decode a valid duration, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{d} is not modified. If \tcode{\%Z} is used and successfully parsed, that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. @@ -4968,7 +4945,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -2786,9 +2786,9 @@ as specified in \ref{time.parse}. +@@ -2790,9 +2790,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -4980,7 +4957,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp -@@ -2979,9 +2979,9 @@ as specified in \ref{time.parse}. +@@ -2983,9 +2983,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -4992,7 +4969,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp -@@ -3178,9 +3178,9 @@ as specified in \ref{time.parse}. +@@ -3182,9 +3182,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -5004,7 +4981,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp prior to assigning that difference to \tcode{tp}. -@@ -3341,9 +3341,9 @@ as specified in \ref{time.parse}. +@@ -3345,9 +3345,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -5016,7 +4993,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp prior to assigning that difference to \tcode{tp}. -@@ -3448,9 +3448,9 @@ as specified in \ref{time.parse}. +@@ -3452,9 +3452,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -5028,7 +5005,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp prior to assigning that difference to \tcode{tp}. -@@ -3559,9 +3559,9 @@ as specified in \ref{time.parse}. +@@ -3567,9 +3567,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -5040,7 +5017,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4212,9 +4212,9 @@ as specified in \ref{time.parse}. +@@ -4220,9 +4220,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid day, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{d} is not modified. @@ -5052,7 +5029,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4526,9 +4526,9 @@ as specified in \ref{time.parse}. +@@ -4534,9 +4534,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid month, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{m} is not modified. @@ -5064,7 +5041,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4870,9 +4870,9 @@ as specified in \ref{time.parse}. +@@ -4878,9 +4878,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid year, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{y} is not modified. @@ -5076,7 +5053,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -5253,9 +5253,9 @@ as specified in \ref{time.parse}. +@@ -5261,9 +5261,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid weekday, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{wd} is not modified. @@ -5088,7 +5065,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -5636,9 +5636,9 @@ as specified in \ref{time.parse}. +@@ -5644,9 +5644,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid \tcode{month_day}, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{md} is not modified. @@ -5100,7 +5077,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -6316,9 +6316,9 @@ as specified in \ref{time.parse}. +@@ -6324,9 +6324,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid \tcode{year_month}, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{ym} is not modified. @@ -5112,7 +5089,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -6780,9 +6780,9 @@ as specified in \ref{time.parse}. +@@ -6788,9 +6788,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid \tcode{year_month_day}, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{ymd} is not modified. @@ -5124,7 +5101,7 @@ index 86cb2905..f1f22e40 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -10472,23 +10472,23 @@ according to the following syntax: +@@ -10483,23 +10483,23 @@ according to the following syntax: \begin{ncbnf} \fmtnontermdef{literal-char}\br @@ -5153,7 +5130,7 @@ index 86cb2905..f1f22e40 100644 \end{ncbnf} The productions -@@ -10561,11 +10561,11 @@ the result of formatting a chrono type +@@ -10572,11 +10572,11 @@ the result of formatting a chrono type does not contain time zone abbreviation and time zone offset information. If the information is available, @@ -5167,7 +5144,7 @@ index 86cb2905..f1f22e40 100644 conversion specifier appears in the \fmtgrammarterm{chrono-format-spec}, an exception of type \tcode{format_error} is thrown, -@@ -10581,7 +10581,7 @@ A \tcode{duration} does not contain enough information +@@ -10592,7 +10592,7 @@ A \tcode{duration} does not contain enough information to format as a \tcode{weekday}. \end{example} However, if a flag refers to a ``time of day'' @@ -5176,7 +5153,7 @@ index 86cb2905..f1f22e40 100644 then a specialization of \tcode{duration} is interpreted as the time of day elapsed since midnight. -@@ -10593,57 +10593,57 @@ the time of day elapsed since midnight. +@@ -10604,57 +10604,57 @@ the time of day elapsed since midnight. \hline \lhdr{Specifier} & \rhdr{Replacement} \\ \capsep \endhead @@ -5252,7 +5229,7 @@ index 86cb2905..f1f22e40 100644 \\ \rowsep \tcode{\%g} & The last two decimal digits of the calendar year -@@ -10654,158 +10654,158 @@ If the result is a single digit it is prefixed by \tcode{0}. +@@ -10665,158 +10665,158 @@ If the result is a single digit it is prefixed by \tcode{0}. The calendar year as a decimal number, as specified in ISO 8601-1:2019 for the week calendar. If the result is less than four digits @@ -5482,7 +5459,7 @@ index 86cb2905..f1f22e40 100644 \\ \end{LongTable} -@@ -10853,9 +10853,9 @@ template +@@ -10864,9 +10864,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5494,7 +5471,7 @@ index 86cb2905..f1f22e40 100644 an offset of \tcode{0min} is formatted. \end{itemdescr} -@@ -10868,9 +10868,9 @@ template +@@ -10879,9 +10879,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5506,7 +5483,7 @@ index 86cb2905..f1f22e40 100644 an offset of \tcode{0min} is formatted. If the argument represents a time during a positive leap second insertion, and if a seconds field is formatted, -@@ -10887,9 +10887,9 @@ template +@@ -10898,9 +10898,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5518,7 +5495,7 @@ index 86cb2905..f1f22e40 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted by a \tcode{sys_time} initialized with -@@ -10908,9 +10908,9 @@ template +@@ -10919,9 +10919,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5530,7 +5507,7 @@ index 86cb2905..f1f22e40 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted by a \tcode{sys_time} initialized with -@@ -10929,9 +10929,9 @@ template +@@ -10940,9 +10940,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5542,7 +5519,7 @@ index 86cb2905..f1f22e40 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted -@@ -10949,7 +10949,7 @@ template +@@ -10960,7 +10960,7 @@ template \begin{itemdescr} \pnum \remarks @@ -5551,7 +5528,7 @@ index 86cb2905..f1f22e40 100644 an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -10990,18 +10990,18 @@ passed to \tcode{formatter::format}. +@@ -11001,18 +11001,18 @@ passed to \tcode{formatter::format}. \pnum \remarks If the \fmtgrammarterm{chrono-specs} is omitted, @@ -5575,7 +5552,7 @@ index 86cb2905..f1f22e40 100644 and \tcode{f.offset_sec} is a null pointer value, then an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -11205,8 +11205,8 @@ except that they have an unspecified effect +@@ -11216,8 +11216,8 @@ except that they have an unspecified effect on the value returned by subsequent calls to \tcode{basic_istream<>::gcount()}. Each overload takes a format string containing ordinary characters and flags which have special meaning. @@ -5586,7 +5563,7 @@ index 86cb2905..f1f22e40 100644 During parsing each flag interprets characters as parts of date and time types according to~\tref{time.parse.spec}. Some flags can be modified by a width parameter -@@ -11224,7 +11224,7 @@ the information that the format flag refers to, +@@ -11235,7 +11235,7 @@ the information that the format flag refers to, A \tcode{duration} cannot represent a \tcode{weekday}. \end{example} However, if a flag refers to a ``time of day'' @@ -5595,7 +5572,7 @@ index 86cb2905..f1f22e40 100644 then a specialization of \tcode{duration} is parsed as the time of day elapsed since midnight. -@@ -11244,251 +11244,251 @@ is called on the \tcode{basic_istream}. +@@ -11255,251 +11255,251 @@ is called on the \tcode{basic_istream}. \hline \lhdr{Flag} & \rhdr{Parsed value} \\ \capsep \endhead @@ -5961,7 +5938,7 @@ index 86cb2905..f1f22e40 100644 The time zone abbreviation or name. A single word is parsed. This word can only contain characters -@@ -11496,8 +11496,8 @@ from the basic character set\iref{lex.charset} +@@ -11507,8 +11507,8 @@ from the basic character set\iref{lex.charset} that are alphanumeric, or one of \tcode{'_'}, \tcode{'/'}, \tcode{'-'}, or \tcode{'+'}. \\ \rowsep @@ -5976,7 +5953,7 @@ index 86cb2905..f1f22e40 100644 2.43.0 -From b11f64c3108ae7406e372eea611dc0498267a392 Mon Sep 17 00:00:00 2001 +From 377a9bc321369a97e2838c6a11283f6e12f275c6 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. @@ -5987,7 +5964,7 @@ Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. source/classes.tex | 8 -------- source/compatibility.tex | 5 ----- source/concepts.tex | 16 ---------------- - source/containers.tex | 15 --------------- + source/containers.tex | 11 ----------- source/declarations.tex | 14 -------------- source/exceptions.tex | 3 --- source/expressions.tex | 25 ------------------------- @@ -6008,13 +5985,13 @@ Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. source/threads.tex | 17 ----------------- source/time.tex | 19 ------------------- source/utilities.tex | 7 ------- - 26 files changed, 272 deletions(-) + 26 files changed, 268 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 9b4a8075..aa433c38 100644 +index 5bf27eb7..49ef7fdb 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -8700,7 +8700,6 @@ but stronger than those for a partial ordering. +@@ -8716,7 +8716,6 @@ but stronger than those for a partial ordering. If we define \tcode{equiv(a, b)} as \tcode{!comp(a, b) \&\& !comp(b, a)}, then the requirements are that \tcode{comp} and \tcode{equiv} both be transitive relations: @@ -6022,7 +5999,7 @@ index 9b4a8075..aa433c38 100644 \begin{itemize} \item \tcode{comp(a, b) \&\& comp(b, c)} implies \tcode{comp(a, c)} \item \tcode{equiv(a, b) \&\& equiv(b, c)} implies \tcode{equiv(a, c)} -@@ -9749,7 +9748,6 @@ Let $N = \tcode{last - first}$: +@@ -9768,7 +9767,6 @@ Let $N = \tcode{last - first}$: For the parallel algorithm overloads, \bigoh{N \log N} swaps and \bigoh{N} applications of the predicate. \end{itemize} @@ -6030,7 +6007,7 @@ index 9b4a8075..aa433c38 100644 \end{itemdescr} \indexlibraryglobal{stable_partition}% -@@ -10884,7 +10882,6 @@ A random access range \range{a}{b} is a +@@ -10916,7 +10914,6 @@ A random access range \range{a}{b} is a {heap with respect to comp and proj@heap with respect to \tcode{comp} and \tcode{proj}} for a comparator and projection \tcode{comp} and \tcode{proj} if its elements are organized such that: @@ -6038,7 +6015,7 @@ index 9b4a8075..aa433c38 100644 \begin{itemize} \item With \tcode{$N$ = b - a}, for all $i$, $0 < i < N$, -@@ -13548,7 +13545,6 @@ template +@@ -13580,7 +13577,6 @@ template \pnum Some algorithms in this subclause are constrained with the following exposition-only concepts: @@ -6047,7 +6024,7 @@ index 9b4a8075..aa433c38 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index 4d017537..b0b15874 100644 +index ac68557f..63b582ea 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -294,7 +294,6 @@ int X::y = 1; // defines \tcode{X::y} @@ -6058,7 +6035,7 @@ index 4d017537..b0b15874 100644 \end{codeblock} whereas these are just declarations: \begin{codeblock} -@@ -831,7 +830,6 @@ compute equivalent values\iref{expr.eq}. +@@ -832,7 +831,6 @@ compute equivalent values\iref{expr.eq}. \pnum For the purposes of the preceding requirements: @@ -6066,7 +6043,7 @@ index 4d017537..b0b15874 100644 \begin{itemize} \item If \tcode{D} is a class with an implicitly-declared constructor\iref{class.default.ctor,class.copy.ctor}, -@@ -6123,7 +6121,6 @@ has the top-level cv-qualifier \keyword{volatile}. +@@ -6170,7 +6168,6 @@ has the top-level cv-qualifier \keyword{volatile}. \pnum Every integer type has an \term{integer conversion rank} defined as follows: @@ -6075,10 +6052,10 @@ index 4d017537..b0b15874 100644 \item No two signed integer types other than \keyword{char} and \tcode{\keyword{signed} \keyword{char}} (if \keyword{char} is signed) have the same rank, even if they have diff --git a/source/classes.tex b/source/classes.tex -index 259175cd..d0d36a78 100644 +index eaf6e4da..e433d03d 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -1712,7 +1712,6 @@ for each non-static data member of +@@ -1626,7 +1626,6 @@ for each non-static data member of that is of class type (or array thereof), the constructor selected to copy/move that member is trivial; \end{itemize} @@ -6086,7 +6063,7 @@ index 259175cd..d0d36a78 100644 \indextext{constructor!move!non-trivial}% otherwise the copy/move constructor is \defnx{non-trivial}{constructor!copy!nontrivial}. -@@ -3331,7 +3330,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat +@@ -3244,7 +3243,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat destructor and \tcode{N} has a non-trivial constructor (for instance, if they declare or inherit virtual functions), the active member of \tcode{u} can be safely switched from \tcode{m} to \tcode{n} using the destructor and placement \grammarterm{new-expression} as follows: @@ -6094,7 +6071,7 @@ index 259175cd..d0d36a78 100644 \begin{codeblock} u.m.~M(); new (&u.n) N; -@@ -3509,7 +3507,6 @@ A local class cannot have static data members\iref{class.static.data}. +@@ -3423,7 +3421,6 @@ A local class cannot have static data members\iref{class.static.data}. \indextext{multiple inheritance}% A list of base classes can be specified in a class definition using the notation: @@ -6102,7 +6079,7 @@ index 259175cd..d0d36a78 100644 \begin{bnf} \nontermdef{base-clause}\br \terminal{:} base-specifier-list -@@ -5484,7 +5481,6 @@ initializers for direct and virtual base class subobjects and +@@ -5402,7 +5399,6 @@ initializers for direct and virtual base class subobjects and non-static data members can be specified by a \grammarterm{ctor-initializer}, which has the form @@ -6110,7 +6087,7 @@ index 259175cd..d0d36a78 100644 \begin{bnf} \nontermdef{ctor-initializer}\br \terminal{:} mem-initializer-list -@@ -5955,7 +5951,6 @@ public: +@@ -5873,7 +5869,6 @@ public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; \end{codeblock} @@ -6118,7 +6095,7 @@ index 259175cd..d0d36a78 100644 \end{example} \rSec2[class.inhctor.init]{Initialization by inherited constructor}% -@@ -6611,7 +6606,6 @@ any non-static data member of \tcode{C} is of reference type or +@@ -6529,7 +6524,6 @@ any non-static data member of \tcode{C} is of reference type or A binary operator expression \tcode{a @ b} is \defnx{usable}{usable!binary operator expression} if either @@ -6126,7 +6103,7 @@ index 259175cd..d0d36a78 100644 \begin{itemize} \item \tcode{a} or \tcode{b} is of class or enumeration type and -@@ -6732,7 +6726,6 @@ The \defnadj{synthesized}{three-way comparison} +@@ -6650,7 +6644,6 @@ The \defnadj{synthesized}{three-way comparison} of type \tcode{R}\iref{cmp.categories} of glvalues \tcode{a} and \tcode{b} of the same type is defined as follows: @@ -6134,7 +6111,7 @@ index 259175cd..d0d36a78 100644 \begin{itemize} \item If \tcode{a <=> b} is usable\iref{class.compare.default} and -@@ -6832,7 +6825,6 @@ The \defn{common comparison type} \tcode{U} +@@ -6750,7 +6743,6 @@ The \defn{common comparison type} \tcode{U} of a possibly-empty list of $n$ comparison category types $\tcode{T}_0$, $\tcode{T}_1$, $\dotsc$, $\tcode{T}_{n-1}$ is defined as follows: @@ -6143,10 +6120,10 @@ index 259175cd..d0d36a78 100644 \item If at least one $\tcode{T}_i$ is \tcode{std::partial_ordering}, diff --git a/source/compatibility.tex b/source/compatibility.tex -index 17355dea..8186b85c 100644 +index 3aa1637b..d1e593f3 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -2619,7 +2619,6 @@ Overspecification. +@@ -2592,7 +2592,6 @@ Overspecification. \effect The signatures of the following member functions changed from taking an \tcode{iterator} to taking a \tcode{const_iterator}: @@ -6154,7 +6131,7 @@ index 17355dea..8186b85c 100644 \begin{itemize} \item \tcode{insert(iter, val)} for \tcode{vector}, \tcode{deque}, \tcode{list}, \tcode{set}, \tcode{multiset}, \tcode{map}, \tcode{multimap} -@@ -2691,7 +2690,6 @@ Clarify intentions, avoid workarounds. +@@ -2664,7 +2663,6 @@ Clarify intentions, avoid workarounds. Valid \CppIII{} code that relies on implicit boolean conversions will fail to compile with this revision of \Cpp{}. Such conversions occur in the following conditions: @@ -6162,7 +6139,7 @@ index 17355dea..8186b85c 100644 \begin{itemize} \item passing a value to a function that takes an argument of type \tcode{bool}; \item using \tcode{operator==} to compare to \tcode{false} or \tcode{true}; -@@ -3769,7 +3767,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in +@@ -3787,7 +3785,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in \pnum Header \libheaderref{cstring}: The following functions have different declarations: @@ -6170,7 +6147,7 @@ index 17355dea..8186b85c 100644 \begin{itemize} \item \tcode{strchr} \item \tcode{strpbrk} -@@ -3783,7 +3780,6 @@ Subclause \ref{cstring.syn} describes the changes. +@@ -3801,7 +3798,6 @@ Subclause \ref{cstring.syn} describes the changes. \pnum Header \libheaderref{cwchar}: The following functions have different declarations: @@ -6178,7 +6155,7 @@ index 17355dea..8186b85c 100644 \begin{itemize} \item \tcode{wcschr} \item \tcode{wcspbrk} -@@ -3808,7 +3804,6 @@ in addition to the names declared in +@@ -3826,7 +3822,6 @@ in addition to the names declared in \pnum Header \libheaderref{cstdlib}: The following functions have different behavior: @@ -6316,7 +6293,7 @@ index 1722b95c..6663d0e0 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 71b577a1..7053f174 100644 +index f3aded8c..0731405d 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6343,7 +6320,7 @@ index 71b577a1..7053f174 100644 \begin{itemize} \item \tcode{T} is \defnx{\oldconcept{DefaultInsertable} into \tcode{X}} -@@ -4041,14 +4038,12 @@ such that distance from +@@ -4045,14 +4042,12 @@ such that distance from to \tcode{j} is positive, the following condition holds: @@ -6358,7 +6335,7 @@ index 71b577a1..7053f174 100644 \begin{codeblock} value_comp(*i, *j) != false \end{codeblock} -@@ -6060,7 +6055,6 @@ define class templates that meet the requirements for sequence containers. +@@ -6064,7 +6059,6 @@ define class templates that meet the requirements for sequence containers. \pnum The following exposition-only alias template may appear in deduction guides for sequence containers: @@ -6366,7 +6343,7 @@ index 71b577a1..7053f174 100644 \begin{codeblock} template using @\placeholdernc{iter-value-type}@ = iterator_traits::value_type; // \expos -@@ -9331,7 +9325,6 @@ If \tcode{size() < sz}, +@@ -9343,7 +9337,6 @@ If \tcode{size() < sz}, appends \tcode{sz - size()} default-inserted elements to the sequence. If \tcode{sz <= size()}, equivalent to: @@ -6374,21 +6351,7 @@ index 71b577a1..7053f174 100644 \begin{codeblock} list::iterator it = begin(); advance(it, sz); -@@ -10620,13 +10613,11 @@ static constexpr void swap(reference x, reference y) noexcept; - \pnum - \effects - Exchanges the contents of \tcode{x} and \tcode{y} as if by: -- - \begin{codeblock} - bool b = x; - x = y; - y = b; - \end{codeblock} -- - \end{itemdescr} - - \begin{itemdecl} -@@ -20099,7 +20090,6 @@ For each of +@@ -20310,7 +20303,6 @@ For each of \tcode{stack}, the library provides the following formatter specialization where \tcode{\placeholder{adaptor-type}} is the name of the template: @@ -6396,7 +6359,7 @@ index 71b577a1..7053f174 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -24291,7 +24281,6 @@ typename A::offset_policy +@@ -24566,7 +24558,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6404,43 +6367,27 @@ index 71b577a1..7053f174 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -25260,7 +25249,6 @@ the \tcode{SliceSpecifier} arguments. - \pnum - For each function defined in \ref{mdspan.sub} that - takes a parameter pack named \tcode{slices} as an argument: -- - \begin{itemize} - \item let \tcode{index_type} be - \begin{itemize} -@@ -25524,7 +25512,6 @@ $\le \tcode{src.extent($k$)}$ +@@ -25922,7 +25913,6 @@ for the $k^\text{th}$ extent of \tcode{src}. \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: - \begin{itemize} \item - %FIXME: I think we want the count here, "number" is ambiguous. -@@ -25535,7 +25522,6 @@ $S_k$ does not model \tcode{\libconcept{convertible_to}}; and - for each rank index $k$ of \tcode{Extents} such that - \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, - \tcode{SubExt\-ents::static_extent(\placeholder{map-rank}[$k$])} equals: + \tcode{SubExtents::rank()} equals +@@ -25934,7 +25924,6 @@ the type of \tcode{slices...[$k$]} is not a collapsing slice type, + \tcode{SubExt\-ents::static_extent(\placeholder{MAP_RANK}(slices, $k$))} + equals the following, where $\Sigma_k$ + denotes the type of \tcode{slices...[$k$]}: - \begin{itemize} \item \tcode{Extents::static_extent($k$)} -@@ -25575,7 +25561,6 @@ A value \tcode{ext} of type \tcode{SubExtents} such that - for each $k$ - for which \tcode{\placeholder{map-rank}[$k$] != dynamic_extent} is \tcode{true}, - \tcode{ext.extent(\placeholder{map-rank}[$k$])} equals: -- - \begin{itemize} - \item - \tcode{$s_k$.extent == 0 ? 0 : 1 + (\exposid{de-ice}($s_k$.extent) - 1) / \exposid{de-ice}($s_k$.stride)} diff --git a/source/declarations.tex b/source/declarations.tex -index 74100ed5..da75b28c 100644 +index 45030de5..94c821c5 100644 --- a/source/declarations.tex +++ b/source/declarations.tex -@@ -1591,7 +1591,6 @@ a partial specialization\iref{temp.spec.partial}, +@@ -1584,7 +1584,6 @@ a partial specialization\iref{temp.spec.partial}, an explicit instantiation\iref{temp.explicit}, or it has one of the following forms: @@ -6448,7 +6395,7 @@ index 74100ed5..da75b28c 100644 \begin{ncsimplebnf} class-key \opt{attribute-specifier-seq} identifier \terminal{;}\br class-key \opt{attribute-specifier-seq} simple-template-id \terminal{;} -@@ -2489,7 +2488,6 @@ the \grammarterm{declarator} declares a function. +@@ -2487,7 +2486,6 @@ the \grammarterm{declarator} declares a function. \pnum Declarators have the syntax @@ -6456,7 +6403,7 @@ index 74100ed5..da75b28c 100644 \begin{bnf} \nontermdef{declarator}\br ptr-declarator\br -@@ -4394,7 +4392,6 @@ In the following code, +@@ -4393,7 +4391,6 @@ In the following code, \tcode{g} will be called with the value \tcode{f(2)}: @@ -6464,7 +6411,7 @@ index 74100ed5..da75b28c 100644 \begin{codeblock} int a = 1; int f(int); -@@ -5064,7 +5061,6 @@ To +@@ -5063,7 +5060,6 @@ To an object of type \tcode{T} means: @@ -6472,7 +6419,7 @@ index 74100ed5..da75b28c 100644 \begin{itemize} \item If -@@ -5268,7 +5264,6 @@ is sequenced before those associated with +@@ -5273,7 +5269,6 @@ is sequenced before those associated with the initialization of the $j^\text{th}$ element. \item Otherwise, if the destination type is a class type: @@ -6480,7 +6427,7 @@ index 74100ed5..da75b28c 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -6180,7 +6175,6 @@ a program that necessitates such a binding is ill-formed. +@@ -6191,7 +6186,6 @@ a program that necessitates such a binding is ill-formed. A reference to type ``\cvqual{cv1} \tcode{T1}'' is initialized by an expression of type ``\cvqual{cv2} \tcode{T2}'' as follows:% \indextext{binding!reference} @@ -6488,7 +6435,7 @@ index 74100ed5..da75b28c 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6648,7 +6642,6 @@ int j { 1 }; // initialize to 1 +@@ -6659,7 +6653,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -6496,7 +6443,7 @@ index 74100ed5..da75b28c 100644 \end{itemize} \pnum -@@ -7735,7 +7728,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, +@@ -7745,7 +7738,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, where $\tcode{U}_i$ is an lvalue reference if the initializer is an lvalue and an rvalue reference otherwise, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -6504,7 +6451,7 @@ index 74100ed5..da75b28c 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7867,7 +7859,6 @@ struct S { +@@ -7877,7 +7869,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6512,7 +6459,7 @@ index 74100ed5..da75b28c 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7964,7 +7955,6 @@ If the underlying +@@ -7974,7 +7965,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6520,7 +6467,7 @@ index 74100ed5..da75b28c 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8423,7 +8413,6 @@ void h() { +@@ -8433,7 +8423,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} according to the following grammar: @@ -6528,7 +6475,7 @@ index 74100ed5..da75b28c 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8597,7 +8586,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8607,7 +8596,6 @@ not declare functions or function templates, the use of the name is ill-formed\i In particular, the name of a variable, function or enumerator does not hide the name of a class or enumeration declared in a different namespace. For example, @@ -6536,7 +6483,7 @@ index 74100ed5..da75b28c 100644 \begin{codeblock} namespace A { class X { }; -@@ -9150,7 +9138,6 @@ otherwise identical. +@@ -9170,7 +9158,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6544,7 +6491,7 @@ index 74100ed5..da75b28c 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -10017,7 +10004,6 @@ may be applied to a function or a lambda call operator or +@@ -10040,7 +10027,6 @@ may be applied to a function or a lambda call operator or to the declaration of a class or enumeration. An \grammarterm{attribute-argument-clause} may be present and, if present, shall have the form: @@ -6578,10 +6525,10 @@ index 88e1a340..ed441278 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 9f91843e..746166d0 100644 +index 0d2c5348..5d594143 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -464,7 +464,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied +@@ -467,7 +467,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied if and only if the expression is a glvalue of volatile-qualified type and it is one of the following: @@ -6589,7 +6536,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item \tcode{(} \grammarterm{expression} \tcode{)}, where \grammarterm{expression} is one of these expressions, -@@ -508,7 +507,6 @@ Standard conversions are implicit conversions with built-in meaning. +@@ -511,7 +510,6 @@ Standard conversions are implicit conversions with built-in meaning. \ref{conv} enumerates the full set of such conversions. A \defnx{standard conversion sequence}{conversion sequence!standard} is a sequence of standard conversions in the following order: @@ -6597,7 +6544,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item Zero or one conversion from the following set: lvalue-to-rvalue conversion, array-to-pointer conversion, and function-to-pointer -@@ -536,7 +534,6 @@ a required destination type and value category. +@@ -539,7 +537,6 @@ a required destination type and value category. \begin{note} Expressions with a given type will be implicitly converted to other types in several contexts: @@ -6605,7 +6552,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item When used as operands of operators. The operator's requirements for its operands dictate the destination type\iref{expr.compound}. -@@ -662,7 +659,6 @@ int n = g(true); // OK, does not access \tcode{y.n} +@@ -665,7 +662,6 @@ int n = g(true); // OK, does not access \tcode{y.n} \pnum The result of the conversion is determined according to the following rules: @@ -6613,7 +6560,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item If \tcode{T} is \cv{}~\tcode{std::nullptr_t}, the result is a -@@ -1168,7 +1164,6 @@ type cause conversions and yield result types in a similar way. The +@@ -1176,7 +1172,6 @@ type cause conversions and yield result types in a similar way. The purpose is to yield a common type, which is also the type of the result. This pattern is called the \defnx{usual arithmetic conversions}{conversion!usual arithmetic}, which are defined as follows: @@ -6621,7 +6568,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item The lvalue-to-rvalue conversion\iref{conv.lval} is applied to each operand and -@@ -1211,7 +1206,6 @@ As a consequence, operands of type \keyword{bool}, \keyword{char8_t}, \keyword{c +@@ -1219,7 +1214,6 @@ As a consequence, operands of type \keyword{bool}, \keyword{char8_t}, \keyword{c to some integral type. \end{footnote} Then the following rules are applied to determine \tcode{C}: @@ -6629,7 +6576,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item If \tcode{T1} and \tcode{T2} are the same type, \tcode{C} is that type. -@@ -2797,7 +2791,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} +@@ -2810,7 +2804,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} \pnum For the purposes of lambda capture, an expression potentially references local entities as follows: @@ -6637,7 +6584,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item An \grammarterm{id-expression} that names a local entity -@@ -3407,7 +3400,6 @@ The \grammarterm{expression} is an unevaluated operand. +@@ -3420,7 +3413,6 @@ The \grammarterm{expression} is an unevaluated operand. Substitution of template arguments (if any) and verification of semantic properties proceed in the following order: @@ -6645,7 +6592,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -3419,7 +3411,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. +@@ -3432,7 +3424,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. \item If the \grammarterm{return-type-requirement} is present, then: @@ -6653,7 +6600,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -4502,7 +4493,6 @@ referred to by \tcode{T}. +@@ -4523,7 +4514,6 @@ referred to by \tcode{T}. \pnum Let \tcode{C} be the class type to which \tcode{T} points or refers. The runtime check logically executes as follows: @@ -6661,7 +6608,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item If, in the most derived object pointed (referred) to by \tcode{v}, \tcode{v} points (refers) to a public base class subobject of a -@@ -5020,7 +5010,6 @@ constness. +@@ -5037,7 +5027,6 @@ constness. The null member pointer value\iref{conv.mem} is converted to the null member pointer value of the destination type. The result of this conversion is unspecified, except in the following cases: @@ -6669,7 +6616,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item Converting a prvalue of type ``pointer to member function'' to a different pointer-to-member-function type and back to its original type -@@ -5455,7 +5444,6 @@ is called a \term{suspension context} of the function. +@@ -5472,7 +5461,6 @@ is called a \term{suspension context} of the function. \pnum Evaluation of an \grammarterm{await-expression} involves the following auxiliary types, expressions, and objects: @@ -6677,7 +6624,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item \placeholder{p} is an lvalue naming the promise -@@ -5836,7 +5824,6 @@ and +@@ -5853,7 +5841,6 @@ and the \grammarterm{new-expression}, then the allocated type is the type deduced for the variable \tcode{x} in the invented declaration\iref{dcl.spec.auto}: @@ -6685,7 +6632,7 @@ index 9f91843e..746166d0 100644 \begin{codeblock} T x @\textrm{\placeholder{init}}@ ; \end{codeblock} -@@ -6188,7 +6175,6 @@ the alignment argument is removed from the argument list; +@@ -6213,7 +6200,6 @@ the alignment argument is removed from the argument list; otherwise, an argument that is the type's alignment and has type \tcode{std::align_val_t} is added into the argument list immediately after the first argument; @@ -6693,7 +6640,7 @@ index 9f91843e..746166d0 100644 \end{itemize} and then overload resolution is performed again. -@@ -6266,7 +6252,6 @@ necessarily be the same as that of the block if the object is an array. +@@ -6291,7 +6277,6 @@ necessarily be the same as that of the block if the object is an array. \indextext{\idxcode{new}!default constructor and}% A \grammarterm{new-expression} that creates an object of type \tcode{T} initializes that object as follows: @@ -6701,7 +6648,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item If the \grammarterm{new-initializer} is omitted, the object is default-initialized\iref{dcl.init}. -@@ -6355,7 +6340,6 @@ struct S { +@@ -6380,7 +6365,6 @@ struct S { S* p = new (0) S; // error: non-placement deallocation function matches // placement allocation function \end{codeblock} @@ -6709,7 +6656,7 @@ index 9f91843e..746166d0 100644 \end{example} \pnum -@@ -6475,7 +6459,6 @@ of their constructor; see~\ref{class.base.init}). +@@ -6500,7 +6484,6 @@ of their constructor; see~\ref{class.base.init}). \pnum If the value of the operand of the \grammarterm{delete-expression} is not a null pointer value, then: @@ -6717,7 +6664,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item If the allocation call for the \grammarterm{new-expression} for the object to -@@ -7323,7 +7306,6 @@ or one operand has integral type and +@@ -7345,7 +7328,6 @@ or one operand has integral type and the other operand has unscoped enumeration type, the \link{usual arithmetic conversions}{expr.arith.conv} are applied to the operands. Then: @@ -6725,7 +6672,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, -@@ -7478,7 +7460,6 @@ is considered to be equivalent to a pointer to a hypothetical array element +@@ -7500,7 +7482,6 @@ is considered to be equivalent to a pointer to a hypothetical array element $n$ for this purpose. \end{footnote} is defined in terms of a partial order consistent with the following rules: @@ -6733,7 +6680,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item If two pointers point to different elements of the same array, or to subobjects thereof, the pointer to the element with the higher subscript -@@ -7491,7 +7472,6 @@ neither member is a subobject of zero size +@@ -7513,7 +7494,6 @@ neither member is a subobject of zero size and their class is not a union. \item Otherwise, neither pointer is required to compare greater than the other. @@ -6741,7 +6688,7 @@ index 9f91843e..746166d0 100644 \end{itemize} \pnum -@@ -7553,7 +7533,6 @@ If at least one of the converted operands is a pointer, +@@ -7575,7 +7555,6 @@ If at least one of the converted operands is a pointer, \link{qualification conversions}{conv.qual} are performed on both operands to bring them to their \deflink{composite pointer type}{expr.type}. Comparing pointers is defined as follows: @@ -6749,7 +6696,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item If one pointer represents the address of a complete object, and another -@@ -7583,7 +7562,6 @@ qualification conversions\iref{conv.qual} +@@ -7605,7 +7584,6 @@ qualification conversions\iref{conv.qual} are performed on both operands to bring them to their composite pointer type\iref{expr.type}. Comparing pointers to members is defined as follows: @@ -6757,7 +6704,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item If two pointers to members are both the null member pointer value, they compare -@@ -7869,7 +7847,6 @@ Attempts are made to form an implicit conversion sequence +@@ -7891,7 +7869,6 @@ Attempts are made to form an implicit conversion sequence from an operand expression \tcode{E1} of type \tcode{T1} to a target type related to the type \tcode{T2} of the operand expression \tcode{E2} as follows: @@ -6765,7 +6712,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item If \tcode{E2} is an lvalue, the target type is ``lvalue reference to \tcode{T2}'', -@@ -7948,7 +7925,6 @@ subclause. +@@ -7970,7 +7947,6 @@ subclause. and \link{function-to-pointer}{conv.func} standard conversions are performed on the second and third operands. After those conversions, one of the following shall hold: @@ -6773,7 +6720,7 @@ index 9f91843e..746166d0 100644 \begin{itemize} \item The second and third operands have the same type; the result is of that type and the result is copy-initialized using the selected operand. -@@ -7978,7 +7954,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. +@@ -8000,7 +7976,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. Both the second and third operands have type \tcode{std::nullptr_t} or one has that type and the other is a null pointer constant. The result is of type \tcode{std::nullptr_t}. @@ -6782,7 +6729,7 @@ index 9f91843e..746166d0 100644 \rSec2[expr.yield]{Yielding a value}% diff --git a/source/future.tex b/source/future.tex -index 41979b62..4957e2c3 100644 +index c72d59ea..a740fd47 100644 --- a/source/future.tex +++ b/source/future.tex @@ -283,7 +283,6 @@ shown in the above synopsis. @@ -6809,7 +6756,7 @@ index 41979b62..4957e2c3 100644 \begin{codeblock} namespace std { template struct variant_size; -@@ -640,7 +637,6 @@ with a member typedef \tcode{type} that names the following type: +@@ -671,7 +668,6 @@ y = b; \pnum The header \libheaderrefx{iterator}{iterator.synopsis} has the following addition: @@ -6817,7 +6764,7 @@ index 41979b62..4957e2c3 100644 \indexlibraryglobal{iterator}% \begin{codeblock} namespace std { -@@ -674,7 +670,6 @@ only to callers of that class. +@@ -705,7 +701,6 @@ only to callers of that class. If a \Cpp{} program wants to define a bidirectional iterator for some data structure containing \tcode{double} and such that it works on a large memory model of the implementation, it can do so with: @@ -6825,7 +6772,7 @@ index 41979b62..4957e2c3 100644 \begin{codeblock} class MyIterator : public iterator { -@@ -688,7 +683,6 @@ class MyIterator : +@@ -719,7 +714,6 @@ class MyIterator : \pnum The following member is declared in addition to those members specified in \ref{move.iter.elem}: @@ -6833,7 +6780,7 @@ index 41979b62..4957e2c3 100644 \begin{codeblock} namespace std { template -@@ -798,7 +792,6 @@ are not required to avoid data races\iref{res.on.data.races}. +@@ -829,7 +823,6 @@ are not required to avoid data races\iref{res.on.data.races}. \pnum The header \libheaderrefx{filesystem}{fs.filesystem.syn} has the following additions: @@ -6841,7 +6788,7 @@ index 41979b62..4957e2c3 100644 \indexlibraryglobal{u8path}% \begin{itemdecl} template -@@ -918,7 +911,6 @@ std::string generic_string() const; +@@ -949,7 +942,6 @@ std::string generic_string() const; \pnum The header \libheaderrefx{atomic}{atomics.syn} has the following additions. @@ -6973,10 +6920,10 @@ index 90000ab2..6058ccab 100644 \item If there are no more entries at the current depth, then if \tcode{depth() != 0} iteration over the parent directory resumes; otherwise \tcode{*this = recursive_directory_iterator()}. diff --git a/source/iterators.tex b/source/iterators.tex -index ffa39eaf..ed2a7332 100644 +index 3deb3e2b..fcbb42cd 100644 --- a/source/iterators.tex +++ b/source/iterators.tex -@@ -948,7 +948,6 @@ may be defined as \keyword{void}. +@@ -960,7 +960,6 @@ may be defined as \keyword{void}. \pnum The definitions in this subclause make use of the following exposition-only concepts: @@ -6984,7 +6931,7 @@ index ffa39eaf..ed2a7332 100644 \begin{codeblock} template concept @\defexposconcept{cpp17-iterator}@ = -@@ -1006,7 +1005,6 @@ concept @\defexposconcept{cpp17-random-access-iterator}@ = +@@ -1018,7 +1017,6 @@ concept @\defexposconcept{cpp17-random-access-iterator}@ = \pnum The members of a specialization \tcode{iterator_traits} generated from the \tcode{iterator_traits} primary template are computed as follows: @@ -6992,7 +6939,7 @@ index ffa39eaf..ed2a7332 100644 \begin{itemize} \item If \tcode{I} has valid\iref{temp.deduct} member -@@ -1153,7 +1151,6 @@ The name \tcode{ranges::iter_move} denotes +@@ -1165,7 +1163,6 @@ The name \tcode{ranges::iter_move} denotes a customization point object\iref{customization.point.object}. The expression \tcode{ranges::\-iter_move(E)} for a subexpression \tcode{E} is expression-equivalent to: @@ -7000,7 +6947,7 @@ index ffa39eaf..ed2a7332 100644 \begin{itemize} \item \tcode{iter_move(E)}, if \tcode{E} has class or enumeration type and -@@ -2792,7 +2789,6 @@ namespace std { +@@ -2804,7 +2801,6 @@ namespace std { A program-defined iterator \tcode{BinaryTreeIterator} can be included into the bidirectional iterator category by specializing the \tcode{iterator_traits} template: @@ -7008,7 +6955,7 @@ index ffa39eaf..ed2a7332 100644 \begin{codeblock} template struct iterator_traits> { using iterator_category = bidirectional_iterator_tag; -@@ -2810,7 +2806,6 @@ If +@@ -2822,7 +2818,6 @@ If \tcode{evolve()} is well-defined for bidirectional iterators, but can be implemented more efficiently for random access iterators, then the implementation is as follows: @@ -7016,7 +6963,7 @@ index ffa39eaf..ed2a7332 100644 \begin{codeblock} template inline void -@@ -3397,7 +3392,6 @@ As if by: +@@ -3409,7 +3404,6 @@ As if by: Iterator tmp = current; return *--tmp; \end{codeblock} @@ -7024,7 +6971,7 @@ index ffa39eaf..ed2a7332 100644 \end{itemdescr} \indexlibrarymember{operator->}{reverse_iterator}% -@@ -4779,7 +4773,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 +@@ -4792,7 +4786,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 vector v2(make_move_iterator(s.begin()), make_move_iterator(s.end())); // moves strings into \tcode{v2} \end{codeblock} @@ -7032,7 +6979,7 @@ index ffa39eaf..ed2a7332 100644 \end{example} \rSec3[move.iterator]{Class template \tcode{move_iterator}} -@@ -6498,7 +6491,6 @@ partial_sum(istream_iterator(cin), +@@ -6511,7 +6504,6 @@ partial_sum(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "@\textbackslash@n")); \end{codeblock} @@ -7041,7 +6988,7 @@ index ffa39eaf..ed2a7332 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 1c229c08..cc034328 100644 +index 4e6c7fa2..dda79b54 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -196,7 +196,6 @@ save space, items that do not apply to a Clause are omitted. @@ -7092,7 +7039,7 @@ index 1c229c08..cc034328 100644 \begin{itemize} \item \constraints -@@ -619,7 +613,6 @@ values\iref{basic.fundamental}. +@@ -616,7 +610,6 @@ values\iref{basic.fundamental}. \pnum The enumerated type \tcode{\placeholder{enumerated}} can be written: @@ -7100,7 +7047,7 @@ index 1c229c08..cc034328 100644 \begin{codeblock} enum @\placeholder{enumerated}@ { @$\tcode{\placeholder{V}}_{0}$@, @$\tcode{\placeholder{V}}_{1}$@, @$\tcode{\placeholder{V}}_{2}$@, @$\tcode{\placeholder{V}}_{3}$@, @$\ldots$@ }; -@@ -652,7 +645,6 @@ or as a +@@ -649,7 +642,6 @@ or as a \pnum The bitmask type \tcode{\placeholder{bitmask}} can be written: @@ -7108,7 +7055,7 @@ index 1c229c08..cc034328 100644 \begin{codeblock} // For exposition only. // \tcode{int_type} is an integral type capable of representing all values of the bitmask type. -@@ -729,7 +721,6 @@ The value \textit{Y} \defnx{is set}{bitmask!value!is set} in the object +@@ -726,7 +718,6 @@ The value \textit{Y} \defnx{is set}{bitmask!value!is set} in the object The C standard library makes widespread use \indextext{library!C standard}% of characters and character sequences that follow a few uniform conventions: @@ -7116,7 +7063,7 @@ index 1c229c08..cc034328 100644 \begin{itemize} \item Properties specified as \defn{locale-specific} -@@ -970,7 +961,6 @@ some subclauses provide representative declarations, and semantic requirements, +@@ -972,7 +963,6 @@ some subclauses provide representative declarations, and semantic requirements, private members of classes that meet the external specifications of the classes. The declarations for such members are followed by a comment that ends with \expos, as in: @@ -7124,7 +7071,7 @@ index 1c229c08..cc034328 100644 \begin{codeblock} streambuf* sb; // \expos \end{codeblock} -@@ -1936,7 +1926,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if +@@ -1938,7 +1928,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if evaluated in the context described below, and \item these expressions have the following effects: @@ -7132,7 +7079,7 @@ index 1c229c08..cc034328 100644 \begin{itemize} \item the object referred to by \tcode{t} has the value originally held by \tcode{u} and \item the object referred to by \tcode{u} has the value originally held by \tcode{t}. -@@ -2942,7 +2931,6 @@ for that type can fail by throwing an object of type +@@ -2944,7 +2933,6 @@ for that type can fail by throwing an object of type \begin{example} The following is an allocator class template supporting the minimal interface that meets the requirements of \ref{allocator.requirements.general}: @@ -7140,7 +7087,7 @@ index 1c229c08..cc034328 100644 \begin{codeblock} template struct SimpleAllocator { -@@ -3428,13 +3416,11 @@ the description of function semantics apply +@@ -3430,13 +3418,11 @@ the description of function semantics apply to both the default version defined by the \Cpp{} standard library and the replacement function defined by the program. @@ -7154,7 +7101,7 @@ index 1c229c08..cc034328 100644 \begin{itemize} \item \tcode{terminate_handler} -@@ -3455,7 +3441,6 @@ Exception handling. +@@ -3457,7 +3443,6 @@ Exception handling. \pnum A \Cpp{} program can get a pointer to the current handler function by calling the following functions: @@ -7162,7 +7109,7 @@ index 1c229c08..cc034328 100644 \begin{itemize} \item \indexlibraryglobal{get_new_handler}% -@@ -3481,7 +3466,6 @@ on the implementation. +@@ -3483,7 +3468,6 @@ on the implementation. \pnum In particular, the behavior is undefined in the following cases: @@ -7170,7 +7117,7 @@ index 1c229c08..cc034328 100644 \begin{itemize} \item For replacement functions\iref{replacement.functions}, if the installed replacement function does not -@@ -3766,7 +3750,6 @@ functions an implementation shall provide corresponding definitions. +@@ -3768,7 +3752,6 @@ functions an implementation shall provide corresponding definitions. \indextext{stable algorithm}% When the requirements for an algorithm state that it is ``stable'' without further elaboration, it means: @@ -7189,10 +7136,10 @@ index efd4eb00..12180661 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index 1b455e86..f2964f90 100644 +index efbf7fee..12c714b4 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1571,7 +1571,6 @@ when considered as an unevaluated operand. +@@ -1445,7 +1445,6 @@ when considered as an unevaluated operand. \pnum Let \exposid{pair-constructor} be an exposition-only class defined as follows: @@ -7200,7 +7147,7 @@ index 1b455e86..f2964f90 100644 \begin{codeblock} class @\exposid{pair-constructor}@ { using @\exposid{pair-type}@ = remove_cv_t; // \expos -@@ -3706,7 +3705,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a); +@@ -3580,7 +3579,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a); \tcode{is_move_constructible_v} is \tcode{true}, and \tcode{d(p)} is a well-formed expression. For the first two overloads: @@ -7209,10 +7156,10 @@ index 1b455e86..f2964f90 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index f0bd37f5..36a2a88e 100644 +index 82675162..b1abb2de 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -1947,7 +1947,6 @@ is_base_of_v // \tcode{false} +@@ -1939,7 +1939,6 @@ is_base_of_v // \tcode{false} The predicate condition for a template specialization \tcode{is_convertible} shall be satisfied if and only if the return expression in the following code would be well-formed, including any implicit conversions to the return type of the function: @@ -7220,7 +7167,7 @@ index f0bd37f5..36a2a88e 100644 \begin{codeblock} To test() { return declval(); -@@ -2455,7 +2454,6 @@ If any of the types computed above is ill-formed, then +@@ -2447,7 +2446,6 @@ If any of the types computed above is ill-formed, then \pnum For the \tcode{common_type} trait applied to a template parameter pack \tcode{T} of types, the member \tcode{type} shall be either defined or not present as follows: @@ -7229,7 +7176,7 @@ index f0bd37f5..36a2a88e 100644 \item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}. diff --git a/source/numerics.tex b/source/numerics.tex -index 65e08e2c..82e20d65 100644 +index bbf484e7..4342da1a 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); @@ -7256,7 +7203,7 @@ index 65e08e2c..82e20d65 100644 \begin{itemize} \item By way of initialization, -@@ -8356,7 +8353,6 @@ A unique function with the indicated name can be applied (unqualified) +@@ -8358,7 +8355,6 @@ A unique function with the indicated name can be applied (unqualified) to an operand of type \tcode{T}. This function returns a value of type \tcode{T} or which can be unambiguously implicitly converted to type \tcode{T}. @@ -7264,7 +7211,7 @@ index 65e08e2c..82e20d65 100644 \end{itemdescr} \rSec3[valarray.special]{Specialized algorithms} -@@ -8372,7 +8368,6 @@ template void swap(valarray& x, valarray& y) noexcept; +@@ -8374,7 +8370,6 @@ template void swap(valarray& x, valarray& y) noexcept; Equivalent to \tcode{x.swap(y)}. \end{itemdescr} @@ -7272,7 +7219,7 @@ index 65e08e2c..82e20d65 100644 \rSec2[class.slice]{Class \tcode{slice}} \rSec3[class.slice.overview]{Overview} -@@ -8792,7 +8787,6 @@ namespace std { +@@ -8794,7 +8789,6 @@ namespace std { This template is a helper template used by the \tcode{gslice} subscript operator @@ -7280,7 +7227,7 @@ index 65e08e2c..82e20d65 100644 \indexlibraryglobal{gslice_array}% \indexlibraryglobal{valarray}% \begin{itemdecl} -@@ -8918,7 +8912,6 @@ namespace std { +@@ -8920,7 +8914,6 @@ namespace std { \pnum This template is a helper template used by the mask subscript operator: @@ -7288,7 +7235,7 @@ index 65e08e2c..82e20d65 100644 \indexlibrarymember{operator[]}{mask_array}% \begin{itemdecl} mask_array valarray::operator[](const valarray&); -@@ -9035,7 +9028,6 @@ namespace std { +@@ -9037,7 +9030,6 @@ namespace std { \pnum This template is a helper template used by the indirect subscript operator @@ -7297,7 +7244,7 @@ index 65e08e2c..82e20d65 100644 \begin{itemdecl} indirect_array valarray::operator[](const valarray&); diff --git a/source/overloading.tex b/source/overloading.tex -index 6fa6a1b1..e2f944d5 100644 +index 9533e291..9eadc766 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -103,7 +103,6 @@ the list of arguments in its own unique way. @@ -7316,7 +7263,7 @@ index 6fa6a1b1..e2f944d5 100644 \begin{ncbnf} postfix-expression:\br postfix-expression \terminal{.} id-expression\br -@@ -1014,7 +1012,6 @@ The lookup rules for operators in expressions are different than +@@ -1018,7 +1016,6 @@ The lookup rules for operators in expressions are different than the lookup rules for operator function names in a function call, as shown in the following example: @@ -7324,7 +7271,7 @@ index 6fa6a1b1..e2f944d5 100644 \begin{codeblock} struct A { }; void operator + (A, A); -@@ -1076,7 +1073,6 @@ Assuming that +@@ -1080,7 +1077,6 @@ Assuming that \tcode{T} a class type, the candidate functions are selected as follows: @@ -7332,7 +7279,7 @@ index 6fa6a1b1..e2f944d5 100644 \begin{itemize} \item The non-explicit constructors\iref{class.conv.ctor} of -@@ -1122,7 +1118,6 @@ conversion function to be invoked. +@@ -1126,7 +1122,6 @@ conversion function to be invoked. Assuming that ``\cv{} \tcode{T}'' is the type of the object being initialized, the candidate functions are selected as follows: @@ -7340,7 +7287,7 @@ index 6fa6a1b1..e2f944d5 100644 \begin{itemize} \item The permissible types for non-explicit conversion functions are -@@ -1194,7 +1189,6 @@ list-initialized such that \ref{dcl.init.list} specifies that overload resolutio +@@ -1198,7 +1193,6 @@ list-initialized such that \ref{dcl.init.list} specifies that overload resolutio is performed according to the rules in this subclause or when forming a list-initialization sequence according to \ref{over.ics.list}, overload resolution selects the constructor in two phases: @@ -7348,7 +7295,7 @@ index 6fa6a1b1..e2f944d5 100644 \begin{itemize} \item If the initializer list is not empty or \tcode{T} has no default constructor, -@@ -1276,7 +1270,6 @@ called the \defn{copy deduction candidate}. +@@ -1280,7 +1274,6 @@ called the \defn{copy deduction candidate}. For each \grammarterm{deduction-guide}, a function or function template with the following properties: @@ -7356,7 +7303,7 @@ index 6fa6a1b1..e2f944d5 100644 \begin{itemize} \item The \grammarterm{template-head}, if any, -@@ -2744,7 +2737,6 @@ sequence}{over.ics.ellipsis}. +@@ -2748,7 +2741,6 @@ sequence}{over.ics.ellipsis}. Two implicit conversion sequences of the same form are indistinguishable conversion sequences unless one of the following rules applies: @@ -7364,7 +7311,7 @@ index 6fa6a1b1..e2f944d5 100644 \begin{itemize} \item List-initialization sequence \tcode{L1} is a better conversion sequence than -@@ -2976,7 +2968,6 @@ int i = f(a); // calls \tcode{f(int)}, because \tcode{short} $ +@@ -2980,7 +2972,6 @@ int i = f(a); // calls \tcode{f(int)}, because \tcode{short} $ // better than \tcode{short} $\to$ \tcode{float}. \end{codeblock} \end{example} @@ -7372,7 +7319,7 @@ index 6fa6a1b1..e2f944d5 100644 \end{itemize} \pnum -@@ -2985,7 +2976,6 @@ better conversion than a Promotion, which is a better conversion than +@@ -2989,7 +2980,6 @@ better conversion than a Promotion, which is a better conversion than a Conversion. Two conversion sequences with the same rank are indistinguishable unless one of the following rules applies: @@ -7380,7 +7327,7 @@ index 6fa6a1b1..e2f944d5 100644 \begin{itemize} \item A conversion that does not convert a pointer or a pointer to member -@@ -4152,7 +4142,6 @@ is a \defnx{literal operator template}{literal!operator!template}. +@@ -4146,7 +4136,6 @@ is a \defnx{literal operator template}{literal!operator!template}. \pnum The declaration of a literal operator shall have a \grammarterm{parameter-declaration-clause} equivalent to one of the following: @@ -7389,10 +7336,10 @@ index 6fa6a1b1..e2f944d5 100644 const char* unsigned long long int diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 14e251f7..97e9ac52 100644 +index 9747c367..01223d42 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex -@@ -194,7 +194,6 @@ begins with the first character in the source file +@@ -199,7 +199,6 @@ begins with the first character in the source file (optionally after whitespace containing no new-line characters) or follows whitespace containing at least one new-line character, and is @@ -7400,7 +7347,7 @@ index 14e251f7..97e9ac52 100644 \begin{itemize} \item a \tcode{\#} preprocessing token, or -@@ -656,7 +655,6 @@ including within a preprocessing directive. +@@ -660,7 +659,6 @@ including within a preprocessing directive. \begin{example} This demonstrates a way to include a library \tcode{optional} facility only if it is available: @@ -7408,7 +7355,7 @@ index 14e251f7..97e9ac52 100644 \begin{codeblock} #if __has_include() # include -@@ -813,14 +811,12 @@ However, using the \tcode{< >} form for headers provided +@@ -821,14 +819,12 @@ However, using the \tcode{< >} form for headers provided with the implementation and the \tcode{" "} form for sources outside the control of the implementation achieves wider portability. For instance: @@ -7423,7 +7370,7 @@ index 14e251f7..97e9ac52 100644 \end{note} \pnum -@@ -828,7 +824,6 @@ achieves wider portability. For instance: +@@ -836,7 +832,6 @@ achieves wider portability. For instance: This illustrates macro-replaced \tcode{\#include} directives: @@ -7431,7 +7378,7 @@ index 14e251f7..97e9ac52 100644 \begin{codeblock} #if VERSION == 1 #define INCFILE "vers1.h" -@@ -1937,7 +1932,6 @@ is optional. +@@ -1934,7 +1929,6 @@ is optional. \pnum \begin{example} In the following fragment: @@ -7439,7 +7386,7 @@ index 14e251f7..97e9ac52 100644 \begin{codeblock} #define hash_hash # ## # #define mkstr(a) # a -@@ -1947,7 +1941,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";} +@@ -1944,7 +1938,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";} \end{codeblock} The expansion produces, at various stages: @@ -7447,7 +7394,7 @@ index 14e251f7..97e9ac52 100644 \begin{codeblock} join(x, y) in_between(x hash_hash y) -@@ -2179,7 +2172,6 @@ has no effect. +@@ -2181,7 +2174,6 @@ has no effect. \pnum The following macro names shall be defined by the implementation: @@ -7455,7 +7402,7 @@ index 14e251f7..97e9ac52 100644 \begin{description} \item -@@ -2412,7 +2404,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali +@@ -2413,7 +2405,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali \pnum The following macro names are conditionally defined by the implementation: @@ -7463,7 +7410,7 @@ index 14e251f7..97e9ac52 100644 \begin{description} \item \indextext{__stdc__@\mname{STDC}}% -@@ -2447,7 +2438,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. +@@ -2448,7 +2439,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. \mname{STDCPP_THREADS}\\ Defined, and has the value integer literal 1, if and only if a program can have more than one \link{thread of execution}{intro.multithread}. @@ -7472,7 +7419,7 @@ index 14e251f7..97e9ac52 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index c93b855e..095b3aca 100644 +index 708004ea..e12de083 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7547,7 +7494,7 @@ index c93b855e..095b3aca 100644 \begin{itemize} \item If \tcode{T} is a specialization -@@ -5910,7 +5901,6 @@ then +@@ -5915,7 +5906,6 @@ then ranges::be\-gin(E) + std::min(ranges::distance(E), F))}, except that \tcode{E} is evaluated only once, where \tcode{U} is a type determined as follows: @@ -7555,7 +7502,7 @@ index c93b855e..095b3aca 100644 \begin{itemize} \item if \tcode{T} is a specialization of \tcode{span}, then \tcode{U} is \tcode{span}; -@@ -6372,7 +6362,6 @@ If \tcode{decltype((F))} does not model +@@ -6377,7 +6367,6 @@ If \tcode{decltype((F))} does not model \tcode{views::drop(E, F)} is ill-formed. Otherwise, the expression \tcode{views::drop(E, F)} is expression-equivalent to: @@ -7563,7 +7510,7 @@ index c93b855e..095b3aca 100644 \begin{itemize} \item If \tcode{T} is a specialization of -@@ -7448,7 +7437,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and +@@ -7458,7 +7447,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and \exposid{Base} and \exposid{InnerBase} each model \libconcept{forward_range}. In that case, \tcode{\exposid{iterator}::iterator_category} is defined as follows: @@ -7571,7 +7518,7 @@ index c93b855e..095b3aca 100644 \begin{itemize} \item Let \placeholder{OUTERC} denote -@@ -9747,7 +9735,6 @@ appears in the immediate context of a template instantiation. +@@ -9758,7 +9746,6 @@ appears in the immediate context of a template instantiation. \end{note} Otherwise, \tcode{views::counted(E, F)} is expression-equivalent to: @@ -7580,10 +7527,10 @@ index c93b855e..095b3aca 100644 \item If \tcode{T} models \libconcept{contiguous_iterator}, diff --git a/source/statements.tex b/source/statements.tex -index 785798f7..fa5898d3 100644 +index 247b8bce..76449634 100644 --- a/source/statements.tex +++ b/source/statements.tex -@@ -730,7 +730,6 @@ exposition only; and +@@ -727,7 +727,6 @@ exposition only; and \item \exposid{begin-expr} and \exposid{end-expr} are determined as follows: @@ -7592,10 +7539,10 @@ index 785798f7..fa5898d3 100644 \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are diff --git a/source/support.tex b/source/support.tex -index aac6e41e..cb42f682 100644 +index 98842079..1a45ee0e 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -2459,7 +2459,6 @@ This requirement is binding on any replacement versions of these functions. +@@ -2462,7 +2462,6 @@ This requirement is binding on any replacement versions of these functions. \pnum \default @@ -7603,7 +7550,7 @@ index aac6e41e..cb42f682 100644 \begin{itemize} \item Executes a loop: -@@ -2938,7 +2937,6 @@ Intentionally performs no other action. +@@ -2941,7 +2940,6 @@ Intentionally performs no other action. \pnum \begin{example} This can be useful for constructing an object at a known address: @@ -7611,7 +7558,7 @@ index aac6e41e..cb42f682 100644 \begin{codeblock} void* place = operator new(sizeof(Something)); Something* p = new (place) Something(); -@@ -4867,7 +4865,6 @@ are collectively termed the \defn{comparison category types}. +@@ -4850,7 +4848,6 @@ are collectively termed the \defn{comparison category types}. Each is specified in terms of an exposition-only data member named \tcode{value} whose value typically corresponds to that of an enumerator from one of the following exposition-only enumerations: @@ -7619,7 +7566,7 @@ index aac6e41e..cb42f682 100644 \begin{codeblock} enum class @\placeholdernc{ord}@ { @\placeholdernc{equal}@ = 0, @\placeholdernc{equivalent}@ = @\placeholdernc{equal}@, @\placeholdernc{less}@ = -1, @\placeholdernc{greater}@ = 1 }; // \expos enum class @\placeholdernc{ncmp}@ { @\placeholdernc{unordered}@ = -127 }; // \expos -@@ -5816,7 +5813,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and +@@ -5804,7 +5801,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and denotes a type\iref{temp.deduct}, then \tcode{coroutine_traits} has the following publicly accessible member: @@ -7628,10 +7575,10 @@ index aac6e41e..cb42f682 100644 using promise_type = R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index fbeb36af..684e7c85 100644 +index 45edbccb..2a51aefc 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -235,7 +235,6 @@ in some translation unit; no diagnostic is required. +@@ -256,7 +256,6 @@ in some translation unit; no diagnostic is required. The syntax for \grammarterm{template-parameter}{s} is: @@ -7639,7 +7586,7 @@ index fbeb36af..684e7c85 100644 \begin{bnf} \nontermdef{template-parameter}\br type-parameter\br -@@ -1570,7 +1569,6 @@ for function templates}{temp.func.order}. +@@ -1635,7 +1634,6 @@ for function templates}{temp.func.order}. Given an invented class template \tcode{X} with the \grammarterm{template-head} of \tcode{A} (including default arguments and \grammarterm{requires-clause}, if any): @@ -7647,7 +7594,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item Each of the two function templates has the same template parameters -@@ -1967,7 +1965,6 @@ or templated function declaration\iref{dcl.fct} +@@ -2032,7 +2030,6 @@ or templated function declaration\iref{dcl.fct} can be constrained by the use of a \grammarterm{requires-clause}. This allows the specification of constraints for that declaration as an expression: @@ -7655,7 +7602,7 @@ index fbeb36af..684e7c85 100644 \begin{bnf} \nontermdef{constraint-expression}\br logical-or-expression -@@ -1983,7 +1980,6 @@ that are used to constrain the declaration. +@@ -2048,7 +2045,6 @@ that are used to constrain the declaration. \pnum \indextext{constraint!associated|see{associated constraints}}% A declaration's \defn{associated constraints} are defined as follows: @@ -7663,7 +7610,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item If there are no introduced \grammarterm{constraint-expression}{s}, the declaration has no associated constraints. -@@ -2773,7 +2769,6 @@ public: +@@ -2838,7 +2834,6 @@ public: declares three member functions of a class template. The subscript function can be defined like this: @@ -7671,7 +7618,7 @@ index fbeb36af..684e7c85 100644 \begin{codeblock} template T& Array::operator[](int i) { if (i<0 || sz<=i) error("Array: range error"); -@@ -3165,7 +3160,6 @@ produces zero or more instantiations of the pattern in a list (described below). +@@ -3230,7 +3225,6 @@ produces zero or more instantiations of the pattern in a list (described below). The form of the pattern depends on the context in which the expansion occurs. Pack expansions can occur in the following contexts: @@ -7679,7 +7626,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item In a function parameter pack\iref{dcl.fct}; the pattern is the \grammarterm{parameter-declaration} without the ellipsis. -@@ -3771,7 +3765,6 @@ All other constant template arguments are specialized. +@@ -3836,7 +3830,6 @@ All other constant template arguments are specialized. \pnum Within the argument list of a partial specialization, the following restrictions apply: @@ -7687,7 +7634,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item The type of a template parameter corresponding to a specialized constant template -@@ -3785,7 +3778,6 @@ template< int X, int (*array_ptr)[X] > class A {}; +@@ -3850,7 +3843,6 @@ template< int X, int (*array_ptr)[X] > class A {}; int array[5]; template< int X > class A { }; // error \end{codeblock} @@ -7695,7 +7642,7 @@ index fbeb36af..684e7c85 100644 \end{example} \item The partial specialization shall be more specialized than the primary -@@ -3911,7 +3903,6 @@ the first is \defn{more specialized} than the second if, given the following +@@ -3976,7 +3968,6 @@ the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more specialized than the second according to the \link{ordering rules for function templates}{temp.func.order}: @@ -7703,7 +7650,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item Each of the two -@@ -4063,7 +4054,6 @@ A::B abci; // uses \#1 +@@ -4128,7 +4119,6 @@ A::B abci; // uses \#1 A function template defines an unbounded set of related functions. \begin{example} A family of sort functions can be declared like this: @@ -7711,7 +7658,7 @@ index fbeb36af..684e7c85 100644 \begin{codeblock} template class Array { }; template void sort(Array&); -@@ -4118,7 +4108,6 @@ void h(int* p) { +@@ -4183,7 +4173,6 @@ void h(int* p) { } \end{codeblock} \end{minipage} @@ -7719,7 +7666,7 @@ index fbeb36af..684e7c85 100644 \end{example} \pnum -@@ -4304,7 +4293,6 @@ to guarantee that functionally equivalent declarations will be treated +@@ -4369,7 +4358,6 @@ to guarantee that functionally equivalent declarations will be treated as distinct. For example, the last two declarations are functionally equivalent and would cause a program to be ill-formed: @@ -7727,7 +7674,7 @@ index fbeb36af..684e7c85 100644 \begin{codeblock} // guaranteed to be the same template void f(A, A); -@@ -4397,7 +4385,6 @@ then the order of the function parameters in its transformed template +@@ -4460,7 +4448,6 @@ then the order of the function parameters in its transformed template is reversed. For a function template $M$ with cv-qualifiers \cv{} that is a member of a class $A$: @@ -7735,7 +7682,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item The type $X(M)$ is ``rvalue reference to \cv{}~$A$'' -@@ -4653,7 +4640,6 @@ template class TT> +@@ -4718,7 +4705,6 @@ template class TT> void g(TT>); g(v); // OK, \tcode{TT} = \tcode{vector} \end{codeblock} @@ -7743,7 +7690,7 @@ index fbeb36af..684e7c85 100644 \end{example} \pnum -@@ -5519,7 +5505,6 @@ of a class that is the current instantiation. +@@ -5584,7 +5570,6 @@ of a class that is the current instantiation. \pnum A qualified name\iref{basic.lookup.qual} is dependent if @@ -7751,7 +7698,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item it is a \grammarterm{conversion-function-id} -@@ -5768,7 +5753,6 @@ specified by the +@@ -5833,7 +5818,6 @@ specified by the or \grammarterm{new-type-id} is dependent, even if any subexpression is type-dependent: @@ -7759,7 +7706,7 @@ index fbeb36af..684e7c85 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br simple-type-specifier braced-init-list\br -@@ -5786,7 +5770,6 @@ typename-specifier braced-init-list\br +@@ -5851,7 +5835,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following forms are never type-dependent (because the type of the expression cannot be dependent): @@ -7767,7 +7714,7 @@ index fbeb36af..684e7c85 100644 \begin{ncsimplebnf} literal\br \keyword{sizeof} unary-expression\br -@@ -5891,7 +5874,6 @@ Expressions of the following form are value-dependent if the +@@ -5962,7 +5945,6 @@ Expressions of the following form are value-dependent if the is type-dependent or the \grammarterm{type-id} is dependent: @@ -7775,7 +7722,7 @@ index fbeb36af..684e7c85 100644 \begin{ncsimplebnf} \keyword{sizeof} unary-expression\br \keyword{sizeof} \terminal{(} type-id \terminal{)}\br -@@ -5919,7 +5901,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} +@@ -5990,7 +5972,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} is value-dependent or any \grammarterm{assignment-expression} in the \grammarterm{braced-init-list} is value-dependent: @@ -7783,7 +7730,7 @@ index fbeb36af..684e7c85 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br typename-specifier \terminal{(} \opt{expression-list} \terminal{)}\br -@@ -5934,7 +5915,6 @@ typename-specifier braced-init-list\br +@@ -6005,7 +5986,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following form are value-dependent: @@ -7791,7 +7738,7 @@ index fbeb36af..684e7c85 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -6936,7 +6916,6 @@ template. +@@ -7005,7 +6985,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -7799,7 +7746,7 @@ index fbeb36af..684e7c85 100644 \begin{bnf} \nontermdef{explicit-instantiation}\br \opt{\keyword{extern}} \keyword{template} declaration -@@ -7411,7 +7390,6 @@ otherwise, it is a declaration. +@@ -7480,7 +7459,6 @@ otherwise, it is a declaration. The definition of a static data member of a template for which default-initialization is desired can use functional cast notation\iref{expr.type.conv}: @@ -7807,7 +7754,7 @@ index fbeb36af..684e7c85 100644 \begin{codeblock} template<> X Q::x; // declaration template<> X Q::x (); // error: declares a function -@@ -7670,7 +7648,6 @@ An empty template argument list can be used to indicate that a given +@@ -7739,7 +7717,6 @@ An empty template argument list can be used to indicate that a given use refers to a specialization of a function template even when a non-template function\iref{dcl.fct} is visible that would otherwise be used. For example: @@ -7815,7 +7762,7 @@ index fbeb36af..684e7c85 100644 \begin{codeblock} template int f(T); // \#1 int f(int); // \#2 -@@ -8252,7 +8229,6 @@ void h(int x, float& y) { +@@ -8321,7 +8298,6 @@ void h(int x, float& y) { If \tcode{P} is not a reference type: @@ -7823,7 +7770,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item If -@@ -8347,7 +8323,6 @@ the type +@@ -8416,7 +8392,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -7831,7 +7778,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item If the original -@@ -8537,7 +8512,6 @@ of \tcode{P} for type deduction and for any further references to or transformat +@@ -8606,7 +8581,6 @@ of \tcode{P} for type deduction and for any further references to or transformat If \tcode{A} is not a reference type: @@ -7839,7 +7786,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item If -@@ -8583,7 +8557,6 @@ values that will make the deduced +@@ -8652,7 +8626,6 @@ values that will make the deduced identical to \tcode{A}. However, certain attributes of \tcode{A} may be ignored: @@ -7847,7 +7794,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item If the original \tcode{A} is a reference type, -@@ -8628,7 +8601,6 @@ the argument template and template-1 as the parameter template. +@@ -8697,7 +8670,6 @@ the argument template and template-1 as the parameter template. \pnum The types used to determine the ordering depend on the context in which the partial ordering is done: @@ -7855,7 +7802,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item In the context of a function call, the types used are those function parameter types -@@ -8656,7 +8628,6 @@ and +@@ -8725,7 +8697,6 @@ and \pnum Before the partial ordering is done, certain transformations are performed on the types used for partial ordering: @@ -7863,7 +7810,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item If -@@ -8862,7 +8833,6 @@ A given type +@@ -8931,7 +8902,6 @@ A given type \tcode{P} can be composed from a number of other types, templates, and constant template argument values: @@ -7871,7 +7818,7 @@ index fbeb36af..684e7c85 100644 \begin{itemize} \item A function type includes the types of each of the function parameters, -@@ -8904,7 +8874,6 @@ need not have the same form. +@@ -8973,7 +8943,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -7879,7 +7826,7 @@ index fbeb36af..684e7c85 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -8999,7 +8968,6 @@ is deduced. +@@ -9068,7 +9037,6 @@ is deduced. \begin{example} Here is an example in which different parameter/argument pairs produce inconsistent template argument deductions: @@ -7887,7 +7834,7 @@ index fbeb36af..684e7c85 100644 \begin{codeblock} template void f(T x, T y) { @\commentellip@ } struct A { @\commentellip@ }; -@@ -9016,7 +8984,6 @@ Here is an example where two template arguments are deduced from a +@@ -9085,7 +9053,6 @@ Here is an example where two template arguments are deduced from a single function parameter/argument pair. This can lead to conflicts that cause type deduction to fail: @@ -7895,7 +7842,7 @@ index fbeb36af..684e7c85 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -9033,7 +9000,6 @@ void r() { +@@ -9102,7 +9069,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -7903,7 +7850,7 @@ index fbeb36af..684e7c85 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -9052,7 +9018,6 @@ void h() { +@@ -9121,7 +9087,6 @@ void h() { Here is an example where a qualification conversion applies between the argument type on the function call and the deduced template argument type: @@ -7911,7 +7858,7 @@ index fbeb36af..684e7c85 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -9063,7 +9028,6 @@ void s() { +@@ -9132,7 +9097,6 @@ void s() { Here is an example where the template argument is used to instantiate a derived class type of the corresponding function parameter type: @@ -7920,10 +7867,10 @@ index fbeb36af..684e7c85 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 0962d340..7fbc2b5b 100644 +index 0d7a40ef..b2503433 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -7323,7 +7323,6 @@ and visible to other threads. +@@ -7344,7 +7344,6 @@ and visible to other threads. \pnum The expression \tcode{m.lock()} is well-formed and has the following semantics: @@ -7931,7 +7878,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -7366,7 +7365,6 @@ that a deadlock would occur. +@@ -7387,7 +7386,6 @@ that a deadlock would occur. \pnum The expression \tcode{m.try_lock()} is well-formed and has the following semantics: @@ -7939,7 +7886,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -7412,7 +7410,6 @@ Nothing. +@@ -7433,7 +7431,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -7947,7 +7894,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -7567,7 +7564,6 @@ requirements\iref{thread.req.lockable.timed}. +@@ -7588,7 +7585,6 @@ requirements\iref{thread.req.lockable.timed}. \pnum The expression \tcode{m.try_lock_for(rel_time)} is well-formed and has the following semantics: @@ -7955,7 +7902,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -7609,7 +7605,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -7630,7 +7626,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_until(abs_time)} is well-formed and has the following semantics: @@ -7963,7 +7910,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -7796,7 +7791,6 @@ shared lock. +@@ -7817,7 +7812,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -7971,7 +7918,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -7833,7 +7827,6 @@ The calling thread has a shared lock on the mutex. +@@ -7854,7 +7848,6 @@ The calling thread has a shared lock on the mutex. \pnum The expression \tcode{m.unlock_shared()} is well-formed and has the following semantics: @@ -7979,7 +7926,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -7858,7 +7851,6 @@ Nothing. +@@ -7879,7 +7872,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -7987,7 +7934,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -7961,7 +7953,6 @@ requirements\iref{thread.req.lockable.shared.timed}. +@@ -7982,7 +7974,6 @@ requirements\iref{thread.req.lockable.shared.timed}. \pnum The expression \tcode{m.try_lock_shared_for(rel_time)} is well-formed and has the following semantics: @@ -7995,7 +7942,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -8006,7 +7997,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -8027,7 +8018,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_shared_until(abs_time)} is well-formed and has the following semantics: @@ -8003,7 +7950,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemdescr} \pnum \expects -@@ -10144,7 +10134,6 @@ template +@@ -10168,7 +10158,6 @@ template \begin{itemdescr} \pnum \effects @@ -8011,7 +7958,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -11535,7 +11524,6 @@ shared state as \tcode{*this}. +@@ -11559,7 +11548,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -8019,7 +7966,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemize} \item \tcode{future_already_retrieved} if \tcode{get_future} has already been called on a \tcode{promise} with the same shared state as \tcode{*this}. -@@ -11598,7 +11586,6 @@ already has a stored value or exception. +@@ -11622,7 +11610,6 @@ already has a stored value or exception. \pnum \errors @@ -8027,7 +7974,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -11938,7 +11925,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -11962,7 +11949,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -8035,7 +7982,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12282,7 +12268,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -12306,7 +12292,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8043,7 +7990,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12317,7 +12302,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -12341,7 +12326,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -8051,7 +7998,7 @@ index 0962d340..7fbc2b5b 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12373,7 +12357,6 @@ The further behavior +@@ -12397,7 +12381,6 @@ The further behavior of the second function depends on the \tcode{policy} argument as follows (if more than one of these conditions applies, the implementation may choose any of the corresponding policies): @@ -8060,10 +8007,10 @@ index 0962d340..7fbc2b5b 100644 \item If \tcode{launch::async} is set in \tcode{policy}, calls diff --git a/source/time.tex b/source/time.tex -index f1f22e40..2ff12f44 100644 +index 6cb712e2..f3cefea4 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -2068,7 +2068,6 @@ return os << s.str(); +@@ -2072,7 +2072,6 @@ return os << s.str(); \end{codeblock} where \tcode{\placeholder{units-suffix}} depends on the type \tcode{Period::type} as follows: @@ -8071,7 +8018,7 @@ index f1f22e40..2ff12f44 100644 \begin{itemize} \item If \tcode{Period::type} is \tcode{atto}, -@@ -2946,7 +2945,6 @@ for (auto i = 0; i < 8; ++i, u += 250ms) +@@ -2950,7 +2949,6 @@ for (auto i = 0; i < 8; ++i, u += 250ms) \end{codeblock} Produces this output: @@ -8079,7 +8026,7 @@ index f1f22e40..2ff12f44 100644 \begin{outputblock} 2015-06-30 23:59:59.500 UTC 2015-06-30 23:59:59.750 UTC -@@ -3152,7 +3150,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, tt); +@@ -3156,7 +3154,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, tt); \end{codeblock} Produces this output: @@ -8087,7 +8034,7 @@ index f1f22e40..2ff12f44 100644 \begin{outputblock} 2000-01-01 00:00:00 UTC == 2000-01-01 00:00:32 TAI \end{outputblock} -@@ -3315,7 +3312,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, gt); +@@ -3319,7 +3316,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, gt); \end{codeblock} Produces this output: @@ -8095,7 +8042,7 @@ index f1f22e40..2ff12f44 100644 \begin{outputblock} 2000-01-01 00:00:00 UTC == 2000-01-01 00:00:13 GPS \end{outputblock} -@@ -3384,7 +3380,6 @@ such as \tcode{std::file\-sys\-tem}. +@@ -3388,7 +3384,6 @@ such as \tcode{std::file\-sys\-tem}. \pnum The type denoted by \tcode{file_clock} provides precisely one of the following two sets of static member functions: @@ -8103,7 +8050,7 @@ index f1f22e40..2ff12f44 100644 \begin{codeblock} template static sys_time<@\seebelow@> -@@ -3393,9 +3388,7 @@ template +@@ -3397,9 +3392,7 @@ template static file_time<@\seebelow@> from_sys(const sys_time&); \end{codeblock} @@ -8113,7 +8060,7 @@ index f1f22e40..2ff12f44 100644 \begin{codeblock} template static utc_time<@\seebelow@> -@@ -3864,7 +3857,6 @@ template +@@ -3872,7 +3865,6 @@ template \constraints At least one of the following clock time conversion expressions is well-formed: @@ -8121,7 +8068,7 @@ index f1f22e40..2ff12f44 100644 \begin{itemize} \item \begin{codeblock} -@@ -7910,7 +7902,6 @@ a conventional syntax for the creation of civil calendar dates. +@@ -7918,7 +7910,6 @@ a conventional syntax for the creation of civil calendar dates. \pnum \begin{note} The year, month, and day are accepted in any of the following 3 orders: @@ -8129,7 +8076,7 @@ index f1f22e40..2ff12f44 100644 \begin{codeblock} @\tcode{\placeholder{year}}@/@\tcode{\placeholder{month}}@/@\tcode{\placeholder{day}}@ @\tcode{\placeholder{month}}@/@\tcode{\placeholder{day}}@/@\tcode{\placeholder{year}}@ -@@ -7918,7 +7909,6 @@ The year, month, and day are accepted in any of the following 3 orders: +@@ -7926,7 +7917,6 @@ The year, month, and day are accepted in any of the following 3 orders: \end{codeblock} Anywhere a \tcode{\placeholder{day}} is needed, any of the following can also be specified: @@ -8137,7 +8084,7 @@ index f1f22e40..2ff12f44 100644 \begin{codeblock} last @\tcode{\placeholder{weekday}}@[@\tcode{\placeholder{i}}@] -@@ -7931,7 +7921,6 @@ last +@@ -7939,7 +7929,6 @@ last Partial-date types such as \tcode{year_month} and \tcode{month_day} can be created by not applying the second division operator for any of the three orders. For example: @@ -8145,7 +8092,7 @@ index f1f22e40..2ff12f44 100644 \begin{codeblock} year_month ym = 2015y/April; month_day md1 = April/4; -@@ -9120,7 +9109,6 @@ template +@@ -9131,7 +9120,6 @@ template Initializes the base class with a sequence of \tcode{char} equivalent to that produced by \tcode{os.str()} initialized as shown below: @@ -8153,7 +8100,7 @@ index f1f22e40..2ff12f44 100644 \begin{codeblock} ostringstream os; os << tp << " is in a gap between\n" -@@ -9150,7 +9138,6 @@ int main() { +@@ -9161,7 +9149,6 @@ int main() { \end{codeblock} Produces the output: @@ -8161,7 +8108,7 @@ index f1f22e40..2ff12f44 100644 \begin{outputblock} 2016-03-13 02:30:00 is in a gap between 2016-03-13 02:00:00 EST and -@@ -9195,7 +9182,6 @@ template +@@ -9206,7 +9193,6 @@ template Initializes the base class with a sequence of \tcode{char} equivalent to that produced by \tcode{os.str()} initialized as shown below: @@ -8169,7 +8116,7 @@ index f1f22e40..2ff12f44 100644 \begin{codeblock} ostringstream os; os << tp << " is ambiguous. It could be\n" -@@ -9223,7 +9209,6 @@ int main() { +@@ -9234,7 +9220,6 @@ int main() { \end{codeblock} Produces the output: @@ -8177,7 +8124,7 @@ index f1f22e40..2ff12f44 100644 \begin{outputblock} 2016-11-06 01:30:00 is ambiguous. It could be 2016-11-06 01:30:00 EDT == 2016-11-06 05:30:00 UTC or -@@ -9277,7 +9262,6 @@ The \tcode{offset} data member indicates +@@ -9288,7 +9273,6 @@ The \tcode{offset} data member indicates the UTC offset in effect for the associated \tcode{time_zone} and \tcode{time_point}. The relationship between \tcode{local_time} and \tcode{sys_time} is: @@ -8185,7 +8132,7 @@ index f1f22e40..2ff12f44 100644 \begin{codeblock} offset = local_time - sys_time \end{codeblock} -@@ -9582,7 +9566,6 @@ the behavior of \tcode{zoned_time} +@@ -9593,7 +9577,6 @@ the behavior of \tcode{zoned_time} for the \tcode{zoned_time} default constructor, and constructors taking \tcode{string_view}. A specialization for \tcode{const time_zone*} is provided by the implementation: @@ -8193,7 +8140,7 @@ index f1f22e40..2ff12f44 100644 \begin{codeblock} namespace std::chrono { template<> struct zoned_traits { -@@ -10158,7 +10141,6 @@ for (auto& l : get_tzdb().leap_seconds) +@@ -10169,7 +10152,6 @@ for (auto& l : get_tzdb().leap_seconds) \end{codeblock} Produces the output: @@ -8201,7 +8148,7 @@ index f1f22e40..2ff12f44 100644 \begin{outputblock} 1972-07-01 00:00:00: 1s 1973-01-01 00:00:00: 1s -@@ -10457,7 +10439,6 @@ The \tcode{parse} member functions of these formatters +@@ -10468,7 +10450,6 @@ The \tcode{parse} member functions of these formatters interpret the format specification as a \fmtgrammarterm{chrono-format-spec} according to the following syntax: @@ -8210,10 +8157,10 @@ index f1f22e40..2ff12f44 100644 \fmtnontermdef{chrono-format-spec}\br \opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs} diff --git a/source/utilities.tex b/source/utilities.tex -index edaa136a..abe9bd67 100644 +index 9da223d9..25cadb3c 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -270,7 +270,6 @@ Exchanges values stored in two locations. +@@ -282,7 +282,6 @@ Exchanges values stored in two locations. \pnum \remarks The exception specification is equivalent to: @@ -8221,7 +8168,7 @@ index edaa136a..abe9bd67 100644 \begin{codeblock} is_nothrow_move_constructible_v && is_nothrow_move_assignable_v \end{codeblock} -@@ -2221,7 +2220,6 @@ For all $i$, assigns \tcode{std::forward<$\tcode{T}_i$>(get<$i$>(u))} to +@@ -2237,7 +2236,6 @@ For all $i$, assigns \tcode{std::forward<$\tcode{T}_i$>(get<$i$>(u))} to \remarks The exception specification is equivalent to the logical \logop{and} of the following expressions: @@ -8229,7 +8176,7 @@ index edaa136a..abe9bd67 100644 \begin{codeblock} is_nothrow_move_assignable_v<@$\mathtt{T}_i$@> \end{codeblock} -@@ -3165,7 +3163,6 @@ As if by \tcode{x.swap(y)}. +@@ -3183,7 +3181,6 @@ As if by \tcode{x.swap(y)}. \pnum \remarks The exception specification is equivalent to: @@ -8237,7 +8184,7 @@ index edaa136a..abe9bd67 100644 \begin{codeblock} noexcept(x.swap(y)) \end{codeblock} -@@ -10711,7 +10708,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; +@@ -10930,7 +10927,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8245,7 +8192,7 @@ index edaa136a..abe9bd67 100644 \begin{itemize} \item If \tcode{I < pos}, the new value is zero; -@@ -10736,7 +10732,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; +@@ -10955,7 +10951,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8253,7 +8200,7 @@ index edaa136a..abe9bd67 100644 \begin{itemize} \item If \tcode{pos >= N - I}, the new value is zero; -@@ -11462,7 +11457,6 @@ namespace std { +@@ -11684,7 +11679,6 @@ namespace std { If a \Cpp{} program wants to have a by-element addition of two vectors \tcode{a} and \tcode{b} containing \tcode{double} and put the result into \tcode{a}, it can do: @@ -8261,7 +8208,7 @@ index edaa136a..abe9bd67 100644 \begin{codeblock} transform(a.begin(), a.end(), b.begin(), a.begin(), plus()); \end{codeblock} -@@ -14941,7 +14935,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; +@@ -15163,7 +15157,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; The header provides partial specializations of \tcode{function_ref} for each combination of the possible replacements of the placeholders \cv{} and \placeholder{noex} where: @@ -8273,7 +8220,7 @@ index edaa136a..abe9bd67 100644 2.43.0 -From 3063c650e90f877f880f947b68530381b8b91a68 Mon Sep 17 00:00:00 2001 +From b73e0476180b083ce8819f4126eaec31baa3e0d6 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 Subject: [PATCH 6/9] Use monospace font for code in figures. @@ -8420,7 +8367,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From dfe9a2ed833db8fa7310b40f53163829841d1767 Mon Sep 17 00:00:00 2001 +From 08c95e984a106506ed47405bd0920f7d71527fe2 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 Subject: [PATCH 7/9] [uaxid] Mark code that's not to be highlighted. @@ -8448,7 +8395,7 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From 3b4d83e454194730fa79d68a6bfd4c92bf99c5ab Mon Sep 17 00:00:00 2001 +From 030ef2d0324d13694333b0c59a58e5f8612c3bd0 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 Subject: [PATCH 8/9] Use cxxdraft-htmlgen macros more. @@ -8462,17 +8409,17 @@ Subject: [PATCH 8/9] Use cxxdraft-htmlgen macros more. source/iostreams.tex | 28 ++--- source/lib-intro.tex | 28 ++--- source/memory.tex | 46 +++---- - source/meta.tex | 274 ++++++++++++++++++++--------------------- - source/numerics.tex | 38 +++--- + source/meta.tex | 268 ++++++++++++++++++++--------------------- + source/numerics.tex | 34 +++--- source/strings.tex | 10 +- source/support.tex | 14 +-- source/threads.tex | 110 ++++++++--------- source/time.tex | 66 +++++----- - source/utilities.tex | 136 ++++++++++---------- - 15 files changed, 486 insertions(+), 494 deletions(-) + source/utilities.tex | 136 ++++++++++----------- + 15 files changed, 481 insertions(+), 489 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index aa433c38..23502107 100644 +index 49ef7fdb..4813bec6 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -8519,7 +8466,7 @@ index aa433c38..23502107 100644 if it is required to be a mutable iterator, or model \libconcept{random_access_iterator}\iref{iterator.concept.random.access} otherwise. \end{itemize} -@@ -4618,10 +4618,10 @@ template +@@ -4626,10 +4626,10 @@ template \pnum \expects \tcode{Function} meets @@ -8532,7 +8479,7 @@ index aa433c38..23502107 100644 \end{note} \pnum -@@ -4658,7 +4658,7 @@ template +@@ -4666,7 +4666,7 @@ template \begin{itemdescr} \pnum \expects @@ -8541,7 +8488,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -4792,10 +4792,10 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4800,10 +4800,10 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8554,7 +8501,7 @@ index aa433c38..23502107 100644 \end{note} \pnum -@@ -4832,7 +4832,7 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4840,7 +4840,7 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8563,7 +8510,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -5680,7 +5680,7 @@ If +@@ -5688,7 +5688,7 @@ If \item the types of \tcode{first1}, \tcode{last1}, \tcode{first2}, and \tcode{last2} meet the @@ -8572,7 +8519,7 @@ index aa433c38..23502107 100644 and \tcode{last1 - first1 != last2 - first2} for the overloads in namespace \tcode{std}; \item -@@ -6024,7 +6024,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} +@@ -6032,7 +6032,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} \pnum \remarks @@ -8581,7 +8528,7 @@ index aa433c38..23502107 100644 \end{itemdescr} \rSec2[alg.starts.with]{Starts with} -@@ -7606,7 +7606,7 @@ Let $E$ be +@@ -7616,7 +7616,7 @@ Let $E$ be \expects For the algorithms in namespace \tcode{std}, the type of \tcode{*first} @@ -8590,7 +8537,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -7855,7 +7855,7 @@ let $E$ be +@@ -7867,7 +7867,7 @@ let $E(\tcode{i})$ be For the overloads in namespace \tcode{std}, \tcode{pred} is an equivalence relation and the type of \tcode{*first} meets @@ -8599,7 +8546,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -7985,10 +7985,10 @@ Let: +@@ -7998,10 +7998,10 @@ Let: \libconcept{forward_iterator}\iref{iterator.concept.forward}, then there are no additional requirements for \tcode{T}. Otherwise, if \tcode{OutputIterator} meets @@ -8612,7 +8559,7 @@ index aa433c38..23502107 100644 Otherwise, \tcode{T} meets both the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and \oldconcept{CopyAssignable} requirements. -@@ -8067,7 +8067,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8080,7 +8080,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8621,7 +8568,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -8202,10 +8202,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterat +@@ -8215,10 +8215,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterat \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -8635,7 +8582,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -8422,13 +8422,13 @@ For the overload in namespace \tcode{std}: +@@ -8438,13 +8438,13 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{PopulationIterator} meets @@ -8652,7 +8599,7 @@ index aa433c38..23502107 100644 unless \tcode{Pop\-ulat\-ion\-Iter\-ator} models \libconcept{forward_iterator}\iref{iterator.concept.forward}. \item -@@ -8496,7 +8496,7 @@ For the overload in namespace \tcode{std}: +@@ -8512,7 +8512,7 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{RandomAccessIterator} meets @@ -8661,7 +8608,7 @@ index aa433c38..23502107 100644 \item The type \tcode{remove_reference_t} meets the uniform random bit generator\iref{rand.req.urng} requirements. -@@ -8557,7 +8557,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8573,7 +8573,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8670,7 +8617,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -8621,10 +8621,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8637,10 +8637,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8684,7 +8631,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -8803,10 +8803,10 @@ for the overloads with no parameters by those names. +@@ -8819,10 +8819,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8698,7 +8645,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -8871,10 +8871,10 @@ for the overloads with no parameters by those names. +@@ -8887,10 +8887,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8712,7 +8659,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -8945,10 +8945,10 @@ for the overloads with no parameters by those names. +@@ -8961,10 +8961,10 @@ for the overloads with no parameters by those names. \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8726,7 +8673,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -9091,10 +9091,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. +@@ -9108,10 +9108,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8740,7 +8687,7 @@ index aa433c38..23502107 100644 \pnum For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and -@@ -9329,10 +9329,10 @@ for the overloads with no parameters by those names. +@@ -9346,10 +9346,10 @@ for the overloads with no parameters by those names. \range{first}{nth} and \range{nth}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8754,7 +8701,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -9712,7 +9712,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9731,7 +9731,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -8763,7 +8710,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -9739,7 +9739,7 @@ Let $N = \tcode{last - first}$: +@@ -9758,7 +9758,7 @@ Let $N = \tcode{last - first}$: For the non-parallel algorithm overloads, exactly $N$ applications of the predicate and projection. At most $N / 2$ swaps if the type of \tcode{first} meets @@ -8772,7 +8719,7 @@ index aa433c38..23502107 100644 for the overloads in namespace \tcode{std} or models \libconcept{bidirectional_iterator} for the overloads in namespace \tcode{ranges}, -@@ -9792,10 +9792,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9811,10 +9811,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8786,7 +8733,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -10192,10 +10192,10 @@ for the overloads with no parameters by those names. +@@ -10211,10 +10211,10 @@ for the overloads with no parameters by those names. sorted with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8800,7 +8747,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -10934,10 +10934,10 @@ The range \range{first}{last - 1} +@@ -10966,10 +10966,10 @@ The range \range{first}{last - 1} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8814,7 +8761,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -10987,10 +10987,10 @@ The range \range{first}{last} +@@ -11019,10 +11019,10 @@ The range \range{first}{last} is a valid non-empty heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8828,7 +8775,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -11043,10 +11043,10 @@ for the overloads with no parameters by those names. +@@ -11075,10 +11075,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8842,7 +8789,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -11096,10 +11096,10 @@ The range \range{first}{last} is +@@ -11128,10 +11128,10 @@ The range \range{first}{last} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8856,7 +8803,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -11286,7 +11286,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8876,7 +8823,7 @@ index aa433c38..23502107 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11369,7 +11369,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8896,7 +8843,7 @@ index aa433c38..23502107 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11454,7 +11454,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8916,7 +8863,7 @@ index aa433c38..23502107 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11723,7 +11723,7 @@ for the overloads with no parameter \tcode{proj}. +@@ -11755,7 +11755,7 @@ for the overloads with no parameter \tcode{proj}. \expects \tcode{bool(invoke(comp, invoke(proj, hi), invoke(proj, lo)))} is \tcode{false}. For the first form, type \tcode{T} @@ -8925,7 +8872,7 @@ index aa433c38..23502107 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11926,7 +11926,7 @@ for overloads with no parameters by those names. +@@ -11958,7 +11958,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8934,7 +8881,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -11985,7 +11985,7 @@ for overloads with no parameters by those names. +@@ -12017,7 +12017,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8943,7 +8890,7 @@ index aa433c38..23502107 100644 \pnum \effects -@@ -12304,8 +12304,8 @@ template +@@ -12336,8 +12336,8 @@ template \pnum \expects \tcode{T} meets @@ -8954,7 +8901,7 @@ index aa433c38..23502107 100644 In the range \crange{first}{last}, \tcode{binary_op} neither modifies elements nor invalidates iterators or subranges. -@@ -12427,7 +12427,7 @@ are convertible to \tcode{T}. +@@ -12459,7 +12459,7 @@ are convertible to \tcode{T}. \expects \begin{itemize} \item @@ -8963,7 +8910,7 @@ index aa433c38..23502107 100644 \item \tcode{binary_op} neither invalidates iterators or subranges, nor modifies elements in the range \crange{first}{last}. -@@ -12471,8 +12471,8 @@ template}. +@@ -13198,7 +13198,7 @@ that denotes an object of type \tcode{minus<>}. \begin{itemize} \item For the overloads with no \tcode{ExecutionPolicy}, @@ -9132,7 +9079,7 @@ index e653b348..2adaa033 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 6e99784a..a8d4d24a 100644 +index c969a57b..16de2113 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9171,7 +9118,7 @@ index 6e99784a..a8d4d24a 100644 \\ \end{floattable} diff --git a/source/future.tex b/source/future.tex -index 4957e2c3..6d5a4e97 100644 +index a740fd47..2f15e38b 100644 --- a/source/future.tex +++ b/source/future.tex @@ -359,7 +359,7 @@ template struct is_pod; @@ -9200,7 +9147,7 @@ index 4957e2c3..6d5a4e97 100644 +the \oldconceptref{TransformationTrait} requirements with a member typedef \tcode{type} that names the following type: \begin{itemize} - \item for the first specialization, \tcode{add_volatile_t}, and + \item for the first specialization, \tcode{volatile TE}, and @@ -611,7 +611,7 @@ template struct variant_size; Let \tcode{VS} denote \tcode{variant_size} of the cv-unqualified type \tcode{T}. @@ -9218,7 +9165,7 @@ index 4957e2c3..6d5a4e97 100644 +the \oldconceptref{TransformationTrait} requirements with a member typedef \tcode{type} that names the following type: \begin{itemize} - \item for the first specialization, \tcode{add_volatile_t}, and + \item for the first specialization, \tcode{volatile VA::type}, and diff --git a/source/iostreams.tex b/source/iostreams.tex index 6058ccab..7586f5cb 100644 --- a/source/iostreams.tex @@ -9301,10 +9248,10 @@ index 6058ccab..7586f5cb 100644 \pnum If an iterator of type \tcode{directory_iterator} reports an error or diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index cc034328..9b6bf373 100644 +index dda79b54..9a959af0 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex -@@ -1866,7 +1866,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1868,7 +1868,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9313,7 +9260,7 @@ index cc034328..9b6bf373 100644 {p{1in}p{4.15in}} \topline \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep -@@ -1893,7 +1893,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1895,7 +1895,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9322,8 +9269,8 @@ index cc034328..9b6bf373 100644 {p{1in}p{1in}p{1in}p{1.9in}} \topline \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Return value} & \hdstyle{Post-condition} \\ \capsep -@@ -1907,7 +1907,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. - \tcode{a.\~T()} & All resources owned by \tcode{a} are reclaimed, no exception is propagated. \\ \rowsep +@@ -1909,7 +1909,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. + \tcode{a.\~T()} & No exception is propagated. \\ \rowsep \multicolumn{2}{|l|}{ \begin{tailnote} - Array types and non-object types are not \oldconcept{Destructible}. @@ -9331,7 +9278,7 @@ index cc034328..9b6bf373 100644 \end{tailnote} } \\ \end{oldconcepttable} -@@ -1986,7 +1986,7 @@ void value_swap(T&& t, U&& u) { +@@ -1988,7 +1988,7 @@ void value_swap(T&& t, U&& u) { // for rvalues and lvalues } @@ -9340,7 +9287,7 @@ index cc034328..9b6bf373 100644 template void lv_swap(T& t1, T& t2) { using std::swap; -@@ -2023,9 +2023,9 @@ int main() { +@@ -2025,9 +2025,9 @@ int main() { A \oldconcept{NullablePointer} type is a pointer-like type that supports null values. A type \tcode{P} meets the \oldconcept{\-Nullable\-Pointer} requirements if \begin{itemize} @@ -9353,7 +9300,7 @@ index cc034328..9b6bf373 100644 \item the expressions shown in \tref{cpp17.nullablepointer} are valid and have the indicated semantics, and -@@ -2101,8 +2101,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. +@@ -2103,8 +2103,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. A type \tcode{H} meets the \defnoldconcept{Hash} requirements if \begin{itemize} \item it is a function object type\iref{function.objects}, @@ -9364,7 +9311,7 @@ index cc034328..9b6bf373 100644 \item the expressions shown in \tref{cpp17.hash} are valid and have the indicated semantics. \end{itemize} -@@ -2786,7 +2786,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2788,7 +2788,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be copied when the client container is copy-assigned; if so, \tcode{X} shall meet @@ -9373,7 +9320,7 @@ index cc034328..9b6bf373 100644 the copy operation shall not throw exceptions. \pnum -@@ -2808,7 +2808,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2810,7 +2810,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be moved when the client container is move-assigned; if so, \tcode{X} shall meet @@ -9382,7 +9329,7 @@ index cc034328..9b6bf373 100644 the move operation shall not throw exceptions. \pnum -@@ -2830,7 +2830,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2832,7 +2832,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be swapped when the client container is swapped; if so, @@ -9391,7 +9338,7 @@ index cc034328..9b6bf373 100644 the \tcode{swap} operation shall not throw exceptions. \pnum -@@ -2860,7 +2860,7 @@ Default: \tcode{is_empty::type} +@@ -2862,7 +2862,7 @@ Default: \tcode{is_empty::type} \pnum An allocator type \tcode{X} shall meet the @@ -9400,7 +9347,7 @@ index cc034328..9b6bf373 100644 The \tcode{XX::pointer}, \tcode{XX::const_pointer}, \tcode{XX::void_pointer}, and \tcode{XX::const_void_pointer} types shall meet the \oldconcept{Nullable\-Pointer} requirements (\tref{cpp17.nullablepointer}). -@@ -2868,7 +2868,7 @@ No constructor, +@@ -2870,7 +2870,7 @@ No constructor, comparison operator function, copy operation, move operation, or swap operation on these pointer types shall exit via an exception. \tcode{XX::pointer} and \tcode{XX::const_pointer} shall also meet the requirements for @@ -9410,10 +9357,10 @@ index cc034328..9b6bf373 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index f2964f90..eddd5794 100644 +index 12c714b4..0b20e5ce 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1273,7 +1273,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type +@@ -1147,7 +1147,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type disambiguate constructor and function overloading. Specifically, several types (see \tcode{tuple}~\ref{tuple}) have constructors with \tcode{allocator_arg_t} as the first argument, immediately followed by an argument of a type that meets the @@ -9422,7 +9369,7 @@ index f2964f90..eddd5794 100644 \rSec2[allocator.uses]{\tcode{uses_allocator}} -@@ -1288,7 +1288,7 @@ template struct uses_allocator; +@@ -1162,7 +1162,7 @@ template struct uses_allocator; \pnum \remarks Automatically detects whether \tcode{T} has a nested \tcode{allocator_type} that @@ -9431,7 +9378,7 @@ index f2964f90..eddd5794 100644 requirements\iref{meta.rqmts}. The implementation shall provide a definition that is derived from \tcode{true_type} if the \grammarterm{qualified-id} \tcode{T::allocator_type} is valid and denotes a type\iref{temp.deduct} and -@@ -2238,8 +2238,8 @@ deleter before such replacement is considered completed. +@@ -2112,8 +2112,8 @@ deleter before such replacement is considered completed. Each object of a type \tcode{U} instantiated from the \tcode{unique_ptr} template specified in \ref{unique.ptr} has the strict ownership semantics, specified above, of a unique pointer. In partial satisfaction of these semantics, each such \tcode{U} @@ -9442,7 +9389,7 @@ index f2964f90..eddd5794 100644 The template parameter \tcode{T} of \tcode{unique_ptr} may be an incomplete type. \pnum -@@ -2426,7 +2426,7 @@ pointer as appropriate for that deleter. +@@ -2300,7 +2300,7 @@ pointer as appropriate for that deleter. \pnum If the deleter's type \tcode{D} is not a reference type, \tcode{D} shall meet @@ -9451,7 +9398,7 @@ index f2964f90..eddd5794 100644 \pnum If the \grammarterm{qualified-id} \tcode{remove_reference_t::pointer} is valid and denotes a -@@ -2434,7 +2434,7 @@ type\iref{temp.deduct}, then \tcode{unique_ptr::pointer} shall be a synonym for \tcode{remove_reference_t::pointer}. Otherwise \tcode{unique_ptr::pointer} shall be a synonym for \tcode{element_type*}. The type \tcode{unique_ptr::pointer} shall @@ -9460,7 +9407,7 @@ index f2964f90..eddd5794 100644 \pnum \begin{example} -@@ -2460,7 +2460,7 @@ constexpr unique_ptr(nullptr_t) noexcept; +@@ -2334,7 +2334,7 @@ constexpr unique_ptr(nullptr_t) noexcept; \pnum \expects @@ -9469,7 +9416,7 @@ index f2964f90..eddd5794 100644 and that construction does not throw an exception. \pnum -@@ -2487,7 +2487,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; +@@ -2361,7 +2361,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; \pnum \expects @@ -9478,7 +9425,7 @@ index f2964f90..eddd5794 100644 and that construction does not throw an exception. \pnum -@@ -2516,10 +2516,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex +@@ -2390,10 +2390,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex \pnum \expects For the first constructor, if \tcode{D} is not a reference type, @@ -9491,7 +9438,7 @@ index f2964f90..eddd5794 100644 such construction does not exit via an exception. \pnum -@@ -2544,8 +2544,8 @@ the second constructor is defined as deleted. +@@ -2418,8 +2418,8 @@ the second constructor is defined as deleted. \begin{example} \begin{codeblock} D d; @@ -9502,7 +9449,7 @@ index f2964f90..eddd5794 100644 unique_ptr p3(new int, d); // \tcode{p3} holds a reference to \tcode{d} unique_ptr p4(new int, D()); // error: rvalue deleter object combined // with reference deleter type -@@ -2566,7 +2566,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; +@@ -2440,7 +2440,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, @@ -9511,7 +9458,7 @@ index f2964f90..eddd5794 100644 requirements (\tref{cpp17.moveconstructible}). Construction of the deleter from an rvalue of type \tcode{D} does not -@@ -2675,10 +2675,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; +@@ -2549,10 +2549,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, \tcode{D} meets the @@ -9524,7 +9471,7 @@ index f2964f90..eddd5794 100644 requirements and assignment of the deleter from an lvalue of type \tcode{D} does not throw an exception. -@@ -3576,8 +3576,8 @@ namespace std { +@@ -3450,8 +3450,8 @@ namespace std { \end{codeblock} \pnum @@ -9535,7 +9482,7 @@ index f2964f90..eddd5794 100644 containers. Specializations of \tcode{shared_ptr} shall be contextually convertible to \tcode{bool}, allowing their use in boolean expressions and declarations in conditions. -@@ -3722,7 +3722,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. +@@ -3596,7 +3596,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. The expression \tcode{d(p)} has well-defined behavior and does not throw exceptions. \tcode{A} meets @@ -9544,7 +9491,7 @@ index f2964f90..eddd5794 100644 \pnum \effects -@@ -4242,7 +4242,7 @@ template +@@ -4116,7 +4116,7 @@ template \pnum \expects \tcode{A} meets @@ -9553,7 +9500,7 @@ index f2964f90..eddd5794 100644 \pnum \effects -@@ -4898,8 +4898,8 @@ namespace std { +@@ -4772,8 +4772,8 @@ namespace std { \end{codeblock} \pnum @@ -9564,7 +9511,7 @@ index f2964f90..eddd5794 100644 containers. The template parameter \tcode{T} of \tcode{weak_ptr} may be an incomplete type. -@@ -5478,7 +5478,7 @@ namespace std { +@@ -5352,7 +5352,7 @@ namespace std { \end{codeblock} \pnum @@ -9573,7 +9520,7 @@ index f2964f90..eddd5794 100644 If \tcode{Smart} is a specialization of \tcode{shared_ptr} and \tcode{sizeof...(Args) == 0}, the program is ill-formed. -@@ -5718,7 +5718,7 @@ namespace std { +@@ -5592,7 +5592,7 @@ namespace std { \end{codeblock} \pnum @@ -9583,10 +9530,10 @@ index f2964f90..eddd5794 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index 36a2a88e..1a731050 100644 +index b1abb2de..02a1d8f4 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -95,12 +95,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal +@@ -136,12 +136,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal A \defnoldconcept{UnaryTypeTrait} describes a property of a type. It shall be a class template that takes one template type argument and, optionally, additional arguments that help define the @@ -9602,7 +9549,7 @@ index 36a2a88e..1a731050 100644 the arguments to the template \tcode{integral_constant} determined by the requirements for the particular property being described. The member names of the base characteristic shall not be hidden and shall be -@@ -111,12 +111,12 @@ A \defnoldconcept{BinaryTypeTrait} describes a +@@ -152,12 +152,12 @@ A \defnoldconcept{BinaryTypeTrait} describes a relationship between two types. It shall be a class template that takes two template type arguments and, optionally, additional arguments that help define the relationship being described. It shall @@ -9617,7 +9564,7 @@ index 36a2a88e..1a731050 100644 the arguments to the template \tcode{integral_constant} determined by the requirements for the particular relationship being described. The member names of the base characteristic shall not be hidden and shall be -@@ -306,17 +306,17 @@ namespace std { +@@ -344,17 +344,17 @@ namespace std { template struct add_cv; template @@ -9641,7 +9588,7 @@ index 36a2a88e..1a731050 100644 // \ref{meta.trans.ref}, reference modifications template struct remove_reference; -@@ -324,38 +324,38 @@ namespace std { +@@ -362,38 +362,38 @@ namespace std { template struct add_rvalue_reference; template @@ -9689,7 +9636,7 @@ index 36a2a88e..1a731050 100644 // \ref{meta.trans.other}, other transformations template struct type_identity; -@@ -374,29 +374,29 @@ namespace std { +@@ -412,29 +412,29 @@ namespace std { template struct unwrap_ref_decay; template @@ -9731,7 +9678,7 @@ index 36a2a88e..1a731050 100644 template using @\libglobal{void_t}@ = void; -@@ -407,191 +407,191 @@ namespace std { +@@ -445,185 +445,185 @@ namespace std { // \ref{meta.unary.cat}, primary type categories template @@ -9814,9 +9761,6 @@ index 36a2a88e..1a731050 100644 - constexpr bool @\libglobal{is_trivially_copyable_v}@ = is_trivially_copyable::value; + constexpr bool @\libglobal{is_trivially_copyable_v}@ = @\libglobalref{is_trivially_copyable}@::value; template -- constexpr bool @\libglobal{is_trivially_relocatable_v}@ = is_trivially_relocatable::value; -+ constexpr bool @\libglobal{is_trivially_relocatable_v}@ = @\libglobalref{is_trivially_relocatable}@::value; - template - constexpr bool @\libglobal{is_standard_layout_v}@ = is_standard_layout::value; + constexpr bool @\libglobal{is_standard_layout_v}@ = @\libglobalref{is_standard_layout}@::value; template @@ -9929,15 +9873,9 @@ index 36a2a88e..1a731050 100644 - constexpr bool @\libglobal{is_nothrow_destructible_v}@ = is_nothrow_destructible::value; + constexpr bool @\libglobal{is_nothrow_destructible_v}@ = @\libglobalref{is_nothrow_destructible}@::value; template -- constexpr bool @\libglobal{is_nothrow_relocatable_v}@ = is_nothrow_relocatable::value; -+ constexpr bool @\libglobal{is_nothrow_relocatable_v}@ = @\libglobalref{is_nothrow_relocatable}@::value; - template - constexpr bool @\libglobal{is_implicit_lifetime_v}@ = is_implicit_lifetime::value; + constexpr bool @\libglobal{is_implicit_lifetime_v}@ = @\libglobalref{is_implicit_lifetime}@::value; template -- constexpr bool @\libglobal{is_replaceable_v}@ = is_replaceable::value; -+ constexpr bool @\libglobal{is_replaceable_v}@ = @\libglobalref{is_replaceable}@::value; - template - constexpr bool @\libglobal{has_virtual_destructor_v}@ = has_virtual_destructor::value; + constexpr bool @\libglobal{has_virtual_destructor_v}@ = @\libglobalref{has_virtual_destructor}@::value; template @@ -9999,7 +9937,7 @@ index 36a2a88e..1a731050 100644 template constexpr bool @\libglobal{is_nothrow_invocable_r_v}@ = is_nothrow_invocable_r::value; template -@@ -601,11 +601,11 @@ namespace std { +@@ -633,11 +633,11 @@ namespace std { // \ref{meta.logical}, logical operator traits template @@ -10014,7 +9952,7 @@ index 36a2a88e..1a731050 100644 // \ref{meta.member}, member relationships template -@@ -920,7 +920,7 @@ properties of a type at compile time. +@@ -936,7 +936,7 @@ properties of a type at compile time. \pnum Each of these templates shall be a @@ -10023,7 +9961,7 @@ index 36a2a88e..1a731050 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is \tcode{true}, otherwise \tcode{false_type}. -@@ -950,17 +950,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. +@@ -966,17 +966,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. \topline \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead @@ -10044,7 +9982,7 @@ index 36a2a88e..1a731050 100644 \tcode{T} is an integral type\iref{basic.fundamental} & \\ \rowsep \indexlibraryglobal{is_floating_point}% \tcode{template}\br -@@ -1189,9 +1186,8 @@ A union is a class type that +@@ -1191,9 +1188,8 @@ A union is a class type that & If \tcode{T} is a class type, \tcode{T} shall be a complete type. \\ \rowsep @@ -10055,7 +9993,7 @@ index 36a2a88e..1a731050 100644 \tcode{T} is an aggregate type\iref{dcl.init.aggr} & \tcode{T} shall be an array type, a complete type, or \cv~\keyword{void}. \\ \rowsep -@@ -1208,16 +1204,14 @@ A union is a class type that +@@ -1210,16 +1206,14 @@ A union is a class type that \tcode{T(-1) < T(0)}; otherwise, \tcode{false} & \\ \rowsep @@ -10074,7 +10012,7 @@ index 36a2a88e..1a731050 100644 \tcode{T} is an array type of known bound\iref{dcl.array} & \\ \rowsep -@@ -1721,7 +1715,7 @@ may be used to query properties of types at compile time. +@@ -1713,7 +1707,7 @@ may be used to query properties of types at compile time. \end{libreqtab2a} \pnum @@ -10083,7 +10021,7 @@ index 36a2a88e..1a731050 100644 base characteristic of \tcode{integral_constant}. \pnum -@@ -1757,7 +1751,7 @@ may be used to query relationships between types at compile time. +@@ -1749,7 +1743,7 @@ may be used to query relationships between types at compile time. \pnum Each of these templates shall be a @@ -10092,7 +10030,7 @@ index 36a2a88e..1a731050 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is true, otherwise \tcode{false_type}. -@@ -1778,7 +1772,7 @@ Let \tcode{\placeholdernc{ELEMS-OF}(T)} be the parameter pack +@@ -1770,7 +1764,7 @@ Let \tcode{\placeholdernc{ELEMS-OF}(T)} be the parameter pack \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead \tcode{template}\br @@ -10101,7 +10039,7 @@ index 36a2a88e..1a731050 100644 \tcode{T} and \tcode{U} name the same type with the same cv-qualifications & \\ \rowsep \indexlibraryglobal{is_base_of}% -@@ -1979,7 +1973,7 @@ type to another following some predefined rule. +@@ -1971,7 +1965,7 @@ type to another following some predefined rule. \pnum Each of the templates in \ref{meta.trans} shall be a @@ -10110,7 +10048,7 @@ index 36a2a88e..1a731050 100644 \rSec3[meta.trans.cv]{Const-volatile modifications} -@@ -2266,16 +2260,16 @@ perform other modifications of a type. +@@ -2258,16 +2252,16 @@ perform other modifications of a type. \tcode{template\br struct \libglobal{remove_cvref};} & The member typedef \tcode{type} denotes @@ -10132,7 +10070,7 @@ index 36a2a88e..1a731050 100644 \begin{tailnote} This behavior is similar to the lvalue-to-rvalue\iref{conv.lval}, array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} -@@ -2381,7 +2375,7 @@ argument passing. +@@ -2373,7 +2367,7 @@ argument passing. \tcode{template} \tcode{struct \libglobal{unwrap_reference};} & If \tcode{T} is @@ -10141,7 +10079,7 @@ index 36a2a88e..1a731050 100644 the member typedef \tcode{type} of \tcode{unwrap_reference} denotes \tcode{X\&}, otherwise \tcode{type} denotes \tcode{T}. \\ \rowsep -@@ -2389,7 +2383,7 @@ argument passing. +@@ -2381,7 +2375,7 @@ argument passing. \tcode{template} \tcode{\libglobal{unwrap_ref_decay};} & The member typedef \tcode{type} of \tcode{unwrap_ref_decay} @@ -10150,7 +10088,7 @@ index 36a2a88e..1a731050 100644 \end{libreqtab2a} \pnum -@@ -2407,7 +2401,7 @@ when the header \tcode{}\iref{functional.syn} is included. +@@ -2399,7 +2393,7 @@ when the header \tcode{}\iref{functional.syn} is included. Let: \begin{itemize} \item \tcode{\placeholdernc{CREF}(A)} be @@ -10159,7 +10097,7 @@ index 36a2a88e..1a731050 100644 \item \tcode{\placeholdernc{XREF}(A)} denote a unary alias template \tcode{T} such that \tcode{T} denotes the same type as \tcode{U} with the addition of \tcode{A}'s cv and reference qualifiers, for a non-reference cv-unqualified -@@ -2432,15 +2426,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: +@@ -2424,15 +2418,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: \placeholdernc{COPYCV}(\brk{}Y, X) \&)} if that type exists and is a reference type. \item Otherwise, let \tcode{C} be @@ -10178,7 +10116,7 @@ index 36a2a88e..1a731050 100644 \tcode{true}, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is \tcode{D}. \item Otherwise, if \tcode{A} is an lvalue reference and \tcode{B} is an rvalue reference, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is -@@ -2739,7 +2733,7 @@ template struct negation : @\seebelow@ { }; +@@ -2731,7 +2725,7 @@ template struct negation : @\seebelow@ { }; The class template \tcode{negation} forms the logical negation of its template type argument. The type \tcode{negation} @@ -10188,7 +10126,7 @@ index 36a2a88e..1a731050 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index 82e20d65..6651e2d3 100644 +index 4342da1a..084414fa 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul @@ -10296,23 +10234,8 @@ index 82e20d65..6651e2d3 100644 If \tcode{firstB == lastB} or \tcode{++firstB == lastB}, let $n = 1$, -@@ -9147,12 +9147,12 @@ object refers. - \pnum - In the \tcode{begin} and \tcode{end} function templates that follow, \unspec{1} - is a type that meets the requirements of a mutable --\oldconcept{RandomAccessIterator}\iref{random.access.iterators} -+\oldconceptref{RandomAccessIterator}\iref{random.access.iterators} - and models \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, - whose \tcode{value_type} is the template - parameter \tcode{T} and whose \tcode{reference} type is \tcode{T\&}. \unspec{2} is a - type that meets the requirements of a constant --\oldconcept{RandomAccessIterator} -+\oldconceptref{RandomAccessIterator} - and models \libconcept{contiguous_iterator}, - whose \tcode{value_type} is the template - parameter \tcode{T} and whose \tcode{reference} type is \tcode{const T\&}. diff --git a/source/strings.tex b/source/strings.tex -index 099fd5f3..d906a754 100644 +index 749c23d9..8aeb51c9 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -238,10 +238,10 @@ using state_type = @\seebelow@; @@ -10340,10 +10263,10 @@ index 099fd5f3..d906a754 100644 meets the constexpr iterator requirements\iref{iterator.requirements.general}, whose \tcode{value_type} is the template parameter \tcode{charT}. diff --git a/source/support.tex b/source/support.tex -index cb42f682..0c8f2758 100644 +index 1a45ee0e..b77edfed 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -3657,11 +3657,11 @@ namespace std { +@@ -3661,11 +3661,11 @@ namespace std { \pnum The type \tcode{source_location} meets the @@ -10360,7 +10283,7 @@ index cb42f682..0c8f2758 100644 requirements\iref{utility.arg.requirements,swappable.requirements}. All of the following conditions are \tcode{true}: \begin{itemize} -@@ -4123,7 +4123,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. +@@ -4127,7 +4127,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. \pnum \tcode{exception_ptr} meets the requirements of @@ -10369,7 +10292,7 @@ index cb42f682..0c8f2758 100644 \pnum Two non-null values of type \tcode{exception_ptr} are equivalent and compare equal if and -@@ -4350,7 +4350,7 @@ Let \tcode{U} be \tcode{decay_t}. +@@ -4354,7 +4354,7 @@ Let \tcode{U} be \tcode{decay_t}. \pnum \expects @@ -10379,7 +10302,7 @@ index cb42f682..0c8f2758 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index 7fbc2b5b..7b9503eb 100644 +index b2503433..9d5fcfed 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10442,7 +10365,7 @@ index 7fbc2b5b..7b9503eb 100644 the following expressions are well-formed, have type \tcode{bool}, and have the specified semantics (\tcode{m} denotes a value of type \tcode{L}, -@@ -4447,7 +4447,7 @@ namespace std { +@@ -4481,7 +4481,7 @@ namespace std { \indexlibraryglobal{atomic}% \pnum The template argument for \tcode{T} shall meet the @@ -10451,7 +10374,7 @@ index 7fbc2b5b..7b9503eb 100644 The program is ill-formed if any of \begin{itemize} \item \tcode{is_trivially_copyable_v}, -@@ -7284,11 +7284,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, +@@ -7305,11 +7305,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, They meet the requirements set out in \ref{thread.mutex.requirements.mutex}. In this description, \tcode{m} denotes an object of a mutex type. \begin{note} @@ -10465,7 +10388,7 @@ index 7fbc2b5b..7b9503eb 100644 If initialization of an object of a mutex type fails, an exception of type \tcode{system_error} is thrown. The mutex types are neither copyable nor movable. -@@ -7557,7 +7557,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de +@@ -7578,7 +7578,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de object of an instantiation of \link{\tcode{time_point}}{time.point}. \begin{note} @@ -10474,7 +10397,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -7769,7 +7769,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally +@@ -7790,7 +7790,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally meet the requirements set out below. In this description, \tcode{m} denotes an object of a shared mutex type. \begin{note} @@ -10483,7 +10406,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.shared}. \end{note} -@@ -7946,7 +7946,7 @@ meet the requirements set out below. In this description, +@@ -7967,7 +7967,7 @@ meet the requirements set out below. In this description, \tcode{abs_time} denotes an object of an instantiation of \link{\tcode{time_point}}{time.point}. \begin{note} @@ -10492,7 +10415,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.shared.timed}. \end{note} -@@ -8156,7 +8156,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable +@@ -8177,7 +8177,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable object throughout the \tcode{lock_guard} object's \deflink{lifetime}{basic.life}. The behavior of a program is undefined if the lockable object referenced by \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} @@ -10501,7 +10424,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.basic}. \indexlibraryctor{lock_guard}% -@@ -8235,12 +8235,12 @@ object. +@@ -8256,12 +8256,12 @@ object. If \tcode{sizeof...(MutexTypes)} is one, let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. \tcode{Mutex} @@ -10516,7 +10439,7 @@ index 7fbc2b5b..7b9503eb 100644 and there is no member \tcode{mutex_type}. \end{itemize} -@@ -8355,17 +8355,17 @@ copyable but are movable. The behavior of a program is undefined if the containe +@@ -8376,17 +8376,17 @@ copyable but are movable. The behavior of a program is undefined if the containe \tcode{pm} is not null and the lockable object pointed to by \tcode{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied @@ -10540,7 +10463,7 @@ index 7fbc2b5b..7b9503eb 100644 \end{note} \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} -@@ -8415,7 +8415,7 @@ unique_lock(mutex_type& m, try_to_lock_t); +@@ -8436,7 +8436,7 @@ unique_lock(mutex_type& m, try_to_lock_t); \begin{itemdescr} \pnum \expects @@ -10549,7 +10472,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8457,7 +8457,7 @@ template +@@ -8478,7 +8478,7 @@ template \pnum \expects The supplied \tcode{Mutex} type meets the @@ -10558,7 +10481,7 @@ index 7fbc2b5b..7b9503eb 100644 \pnum \effects -@@ -8479,7 +8479,7 @@ template +@@ -8500,7 +8500,7 @@ template \begin{itemdescr} \pnum \expects @@ -10567,7 +10490,7 @@ index 7fbc2b5b..7b9503eb 100644 \pnum \effects -@@ -8566,7 +8566,7 @@ bool try_lock(); +@@ -8587,7 +8587,7 @@ bool try_lock(); \begin{itemdescr} \pnum \expects @@ -10576,7 +10499,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8605,7 +8605,7 @@ template +@@ -8626,7 +8626,7 @@ template \begin{itemdescr} \pnum \expects @@ -10585,7 +10508,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.timed}. \pnum -@@ -8644,7 +8644,7 @@ template +@@ -8665,7 +8665,7 @@ template \begin{itemdescr} \pnum \expects @@ -10594,7 +10517,7 @@ index 7fbc2b5b..7b9503eb 100644 \pnum \effects -@@ -8837,16 +8837,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type +@@ -8858,16 +8858,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type is undefined if the contained pointer \tcode{pm} is not null and the lockable object pointed to by \tcode{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied @@ -10615,7 +10538,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -8931,7 +8931,7 @@ template +@@ -8952,7 +8952,7 @@ template \begin{itemdescr} \pnum \expects @@ -10624,7 +10547,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8955,7 +8955,7 @@ template +@@ -8976,7 +8976,7 @@ template \begin{itemdescr} \pnum \expects @@ -10633,7 +10556,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9080,7 +9080,7 @@ template +@@ -9101,7 +9101,7 @@ template \begin{itemdescr} \pnum \expects @@ -10642,7 +10565,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9120,7 +9120,7 @@ template +@@ -9141,7 +9141,7 @@ template \begin{itemdescr} \pnum \expects @@ -10651,7 +10574,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9259,7 +9259,7 @@ template int try_lock(L1&, L2&, L3&...); +@@ -9280,7 +9280,7 @@ template int try_lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10660,7 +10583,7 @@ index 7fbc2b5b..7b9503eb 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9288,7 +9288,7 @@ template void lock(L1&, L2&, L3&...); +@@ -9309,7 +9309,7 @@ template void lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10669,7 +10592,7 @@ index 7fbc2b5b..7b9503eb 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9954,7 +9954,7 @@ This can happen if the re-locking of the mutex throws an exception. +@@ -9978,7 +9978,7 @@ This can happen if the re-locking of the mutex throws an exception. \pnum In \ref{thread.condition.condvarany}, template arguments for template parameters named \tcode{Lock} @@ -10678,7 +10601,7 @@ index 7fbc2b5b..7b9503eb 100644 requirements\iref{thread.req.lockable.basic}. \begin{note} All of the standard -@@ -10892,24 +10892,24 @@ execute atomically. +@@ -10916,24 +10916,24 @@ execute atomically. \pnum \tcode{CompletionFunction} shall meet the @@ -10709,7 +10632,7 @@ index 7fbc2b5b..7b9503eb 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -11404,7 +11404,7 @@ namespace std { +@@ -11428,7 +11428,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10718,7 +10641,7 @@ index 7fbc2b5b..7b9503eb 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -11736,7 +11736,7 @@ namespace std { +@@ -11760,7 +11760,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10727,7 +10650,7 @@ index 7fbc2b5b..7b9503eb 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -12042,7 +12042,7 @@ namespace std { +@@ -12066,7 +12066,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10736,7 +10659,7 @@ index 7fbc2b5b..7b9503eb 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -12980,7 +12980,7 @@ the expression \tcode{d(ptr)} is valid. +@@ -13004,7 +13004,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -10745,7 +10668,7 @@ index 7fbc2b5b..7b9503eb 100644 \pnum If \tcode{D} is trivially copyable, -@@ -13038,7 +13038,7 @@ namespace std { +@@ -13062,7 +13062,7 @@ namespace std { \pnum This class meets the requirements of @@ -10754,7 +10677,7 @@ index 7fbc2b5b..7b9503eb 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -13186,8 +13186,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -13210,8 +13210,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -10765,7 +10688,7 @@ index 7fbc2b5b..7b9503eb 100644 \pnum \effects -@@ -13379,7 +13379,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -13403,7 +13403,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -10775,7 +10698,7 @@ index 7fbc2b5b..7b9503eb 100644 \pnum \tcode{T} may be an incomplete type. diff --git a/source/time.tex b/source/time.tex -index 2ff12f44..f2524afb 100644 +index f3cefea4..05dd9136 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1033,13 +1033,13 @@ SI definition is a measure of the quality of implementation. @@ -10816,7 +10739,7 @@ index 2ff12f44..f2524afb 100644 unless it meets all of the following conditions: \begin{itemize} \item the \grammarterm{qualified-id}s -@@ -2626,7 +2626,7 @@ template +@@ -2630,7 +2630,7 @@ template \pnum The types defined in \ref{time.clock} meet the @@ -10825,7 +10748,7 @@ index 2ff12f44..f2524afb 100644 requirements\iref{time.clock.req} unless otherwise specified. -@@ -2844,7 +2844,7 @@ which is \tcode{10'957 * 86'400s + 22s}. \\ +@@ -2848,7 +2848,7 @@ which is \tcode{10'957 * 86'400s + 22s}. \\ \end{example} \pnum @@ -10834,7 +10757,7 @@ index 2ff12f44..f2524afb 100644 unless the implementation can guarantee that \tcode{utc_clock::now()} does not propagate an exception. \begin{note} -@@ -3063,7 +3063,7 @@ so 2000-01-01 00:00:00 UTC is equivalent to 2000-01-01 00:00:32 TAI +@@ -3067,7 +3067,7 @@ so 2000-01-01 00:00:00 UTC is equivalent to 2000-01-01 00:00:32 TAI (22s plus the initial 10s offset). \pnum @@ -10843,7 +10766,7 @@ index 2ff12f44..f2524afb 100644 unless the implementation can guarantee that \tcode{tai_clock::now()} does not propagate an exception. \begin{note} -@@ -3225,7 +3225,7 @@ GPS is behind TAI by 19s due to the 10s offset between 1958 and 1970 +@@ -3229,7 +3229,7 @@ GPS is behind TAI by 19s due to the 10s offset between 1958 and 1970 and the additional 9 leap seconds inserted between 1970 and 1980. \pnum @@ -10852,7 +10775,7 @@ index 2ff12f44..f2524afb 100644 unless the implementation can guarantee that \tcode{gps_clock::now()} does not propagate an exception. \begin{note} -@@ -3362,7 +3362,7 @@ namespace std::chrono { +@@ -3366,7 +3366,7 @@ namespace std::chrono { \pnum \tcode{file_clock} is an alias for a type @@ -10861,7 +10784,7 @@ index 2ff12f44..f2524afb 100644 using a signed arithmetic type for \tcode{file_clock::rep}. \tcode{file_clock} is used to create the \tcode{time_point} system used for \tcode{file_time_type}\iref{filesystems}. -@@ -3965,8 +3965,8 @@ It normally holds values in the range 1 to 31, +@@ -3973,8 +3973,8 @@ It normally holds values in the range 1 to 31, but may hold non-negative values outside this range. It can be constructed with any \tcode{unsigned} value, which will be subsequently truncated to fit into \tcode{day}'s unspecified internal storage. @@ -10872,7 +10795,7 @@ index 2ff12f44..f2524afb 100644 and participates in basic arithmetic with \tcode{days} objects, which represent a difference between two \tcode{day} objects. -@@ -4258,8 +4258,8 @@ It normally holds values in the range 1 to 12, +@@ -4266,8 +4266,8 @@ It normally holds values in the range 1 to 12, but may hold non-negative values outside this range. It can be constructed with any \tcode{unsigned} value, which will be subsequently truncated to fit into \tcode{month}'s unspecified internal storage. @@ -10883,7 +10806,7 @@ index 2ff12f44..f2524afb 100644 and participates in basic arithmetic with \tcode{months} objects, which represent a difference between two \tcode{month} objects. -@@ -4568,8 +4568,8 @@ namespace std::chrono { +@@ -4576,8 +4576,8 @@ namespace std::chrono { It can represent values in the range \crange{min()}{max()}. It can be constructed with any \tcode{int} value, which will be subsequently truncated to fit into \tcode{year}'s unspecified internal storage. @@ -10894,7 +10817,7 @@ index 2ff12f44..f2524afb 100644 and participates in basic arithmetic with \tcode{years} objects, which represent a difference between two \tcode{year} objects. -@@ -4923,10 +4923,10 @@ corresponding to Sunday through Saturday, but +@@ -4931,10 +4931,10 @@ corresponding to Sunday through Saturday, but it may hold non-negative values outside this range. It can be constructed with any \tcode{unsigned} value, which will be subsequently truncated to fit into \tcode{weekday}'s unspecified internal storage. @@ -10907,7 +10830,7 @@ index 2ff12f44..f2524afb 100644 because there is no universal consensus on which day is the first day of the week. \tcode{weekday}'s arithmetic operations treat the days of the week as a circular range, with no beginning and no end. -@@ -5506,8 +5506,8 @@ namespace std::chrono { +@@ -5514,8 +5514,8 @@ namespace std::chrono { \pnum \tcode{month_day} represents a specific day of a specific month, but with an unspecified year. @@ -10918,7 +10841,7 @@ index 2ff12f44..f2524afb 100644 \pnum \tcode{month_day} is a trivially copyable and standard-layout class type. -@@ -6007,8 +6007,8 @@ namespace std::chrono { +@@ -6015,8 +6015,8 @@ namespace std::chrono { \tcode{year_month} represents a specific month of a specific year, but with an unspecified day. \tcode{year_month} is a field-based time point with a resolution of \tcode{months}. @@ -10929,7 +10852,7 @@ index 2ff12f44..f2524afb 100644 \pnum \tcode{year_month} is a trivially copyable and standard-layout class type. -@@ -6363,8 +6363,8 @@ but not \tcode{days}-oriented arithmetic. +@@ -6371,8 +6371,8 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -10940,7 +10863,7 @@ index 2ff12f44..f2524afb 100644 \pnum \tcode{year_month_day} is a trivially copyable and standard-layout class type. -@@ -6824,8 +6824,8 @@ but not \tcode{days}-oriented arithmetic. +@@ -6832,8 +6832,8 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -10951,7 +10874,7 @@ index 2ff12f44..f2524afb 100644 \pnum \tcode{year_month_day_last} is a trivially copyable and standard-layout class type. -@@ -7195,7 +7195,7 @@ but not \tcode{days}-oriented arithmetic. +@@ -7203,7 +7203,7 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -10960,7 +10883,7 @@ index 2ff12f44..f2524afb 100644 \pnum \tcode{year_month_weekday} is a trivially copyable and standard-layout class type. -@@ -7588,7 +7588,7 @@ but not \tcode{days}-oriented arithmetic. +@@ -7596,7 +7596,7 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -10969,7 +10892,7 @@ index 2ff12f44..f2524afb 100644 \pnum \tcode{year_month_weekday_last} is a trivially copyable and standard-layout class type. -@@ -8838,7 +8838,7 @@ The \tcode{tzdb_list} object contains a list of \tcode{tzdb} objects. +@@ -8849,7 +8849,7 @@ The \tcode{tzdb_list} object contains a list of \tcode{tzdb} objects. \pnum \tcode{tzdb_list::const_iterator} is a constant iterator @@ -10978,7 +10901,7 @@ index 2ff12f44..f2524afb 100644 and has a value type of \tcode{tzdb}. \indexlibrarymember{front}{tzdb_list}% -@@ -11549,7 +11549,7 @@ template<> struct hash; +@@ -11560,7 +11560,7 @@ template<> struct hash; The specializations are enabled\iref{unord.hash}. \begin{note} All the \tcode{hash} specializations listed above meet the @@ -10988,10 +10911,10 @@ index 2ff12f44..f2524afb 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index abe9bd67..bcfb38a3 100644 +index 25cadb3c..639cc237 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -258,9 +258,9 @@ template +@@ -270,9 +270,9 @@ template Type \tcode{T} meets the @@ -11003,7 +10926,7 @@ index abe9bd67..bcfb38a3 100644 requirements. \pnum -@@ -2139,7 +2139,7 @@ template +@@ -2155,7 +2155,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -11012,7 +10935,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \effects -@@ -2761,7 +2761,7 @@ template struct tuple_size; +@@ -2777,7 +2777,7 @@ template struct tuple_size; \pnum Except where specified otherwise, all specializations of \tcode{tuple_size} meet the @@ -11021,7 +10944,7 @@ index abe9bd67..bcfb38a3 100644 base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -2802,7 +2802,7 @@ template struct tuple_size; +@@ -2818,7 +2818,7 @@ template struct tuple_size; Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. If the expression \tcode{TS::value} is well-formed when treated as an \deflink{unevaluated operand}{expr.context}, then @@ -11030,16 +10953,16 @@ index abe9bd67..bcfb38a3 100644 with a base characteristic of \begin{codeblock} integral_constant -@@ -2839,7 +2839,7 @@ template struct tuple_element; +@@ -2856,7 +2856,7 @@ template struct tuple_element; \begin{itemdescr} \pnum Let \tcode{TE} denote \tcode{tuple_element_t} of the cv-unqualified type \tcode{T}. Then -each specialization of the template meets the \oldconcept{TransformationTrait} requirements\iref{meta.rqmts} +each specialization of the template meets the \oldconceptref{TransformationTrait} requirements\iref{meta.rqmts} - with a member typedef \tcode{type} that names the type \tcode{add_const_t}. + with a member typedef \tcode{type} that names the type \tcode{const TE}. \pnum -@@ -3124,7 +3124,7 @@ template +@@ -3142,7 +3142,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -11048,7 +10971,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \begin{note} -@@ -4010,7 +4010,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); +@@ -4038,7 +4038,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11057,7 +10980,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \effects -@@ -4067,7 +4067,7 @@ using const_iterator = @\impdef@; +@@ -4095,7 +4095,7 @@ using const_iterator = @\impdef@; \pnum These types model \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, @@ -11066,7 +10989,7 @@ index abe9bd67..bcfb38a3 100644 meet the requirements for constexpr iterators\iref{iterator.requirements.general}, with value type \tcode{remove_cv_t}. The reference type is \tcode{T\&} for \tcode{iterator} and -@@ -5056,7 +5056,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5111,7 +5111,7 @@ template constexpr bool operator==(const optional& x, const The expression \tcode{*x == *y} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11075,7 +10998,7 @@ index abe9bd67..bcfb38a3 100644 \end{note} \pnum -@@ -5247,7 +5247,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5302,7 +5302,7 @@ template constexpr bool operator==(const optional& x, const The expression \tcode{*x == v} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11084,7 +11007,7 @@ index abe9bd67..bcfb38a3 100644 \end{note} \pnum -@@ -5742,7 +5742,7 @@ is nested within\iref{intro.object} the +@@ -5857,7 +5857,7 @@ is nested within\iref{intro.object} the \pnum All types in \tcode{Types} shall meet @@ -11093,7 +11016,7 @@ index abe9bd67..bcfb38a3 100644 \pnum A program that instantiates the definition of \tcode{variant} with -@@ -6422,7 +6422,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); +@@ -6539,7 +6539,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11102,7 +11025,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \effects -@@ -6467,7 +6467,7 @@ template struct variant_size; +@@ -6584,7 +6584,7 @@ template struct variant_size; \begin{itemdescr} \pnum All specializations of \tcode{variant_size} meet the @@ -11111,7 +11034,7 @@ index abe9bd67..bcfb38a3 100644 with a base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -6480,7 +6480,7 @@ template struct variant_size; +@@ -6597,7 +6597,7 @@ template struct variant_size; \pnum Let \tcode{VS} denote \tcode{variant_size} of the cv-unqualified type \tcode{T}. Then each specialization of the template meets the @@ -11120,16 +11043,16 @@ index abe9bd67..bcfb38a3 100644 base characteristic of \tcode{integral_constant}. \end{itemdescr} -@@ -6500,7 +6500,7 @@ template struct variant_alternative; +@@ -6617,7 +6617,7 @@ template struct variant_alternative; \pnum Let \tcode{VA} denote \tcode{variant_alternative} of the cv-unqualified type \tcode{T}. Then each specialization of the template -meets the \oldconcept{TransformationTrait} requirements\iref{meta.rqmts} with a +meets the \oldconceptref{TransformationTrait} requirements\iref{meta.rqmts} with a - member typedef \tcode{type} that names the type \tcode{add_const_t}. + member typedef \tcode{type} that names the type \tcode{const VA::type}. \end{itemdescr} -@@ -7228,7 +7228,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. +@@ -7348,7 +7348,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. \pnum \expects @@ -11138,7 +11061,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \effects -@@ -7256,7 +7256,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7376,7 +7376,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11147,7 +11070,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \effects -@@ -7289,7 +7289,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7409,7 +7409,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11156,7 +11079,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \effects -@@ -7374,7 +7374,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7494,7 +7494,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11165,7 +11088,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \effects -@@ -7409,7 +7409,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7529,7 +7529,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11174,7 +11097,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \effects -@@ -7453,7 +7453,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7573,7 +7573,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11183,7 +11106,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \effects -@@ -8159,9 +8159,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -8279,9 +8279,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum When \tcode{T} is not \cv{} \tcode{void}, it shall meet @@ -11195,7 +11118,7 @@ index abe9bd67..bcfb38a3 100644 \rSec3[expected.object.cons]{Constructors} -@@ -9401,7 +9401,7 @@ template friend constexpr bool operator==(const expected& x, const T2& +@@ -9521,7 +9521,7 @@ template friend constexpr bool operator==(const expected& x, const T2& The expression \tcode{*x == v} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11204,7 +11127,7 @@ index abe9bd67..bcfb38a3 100644 \end{note} \pnum -@@ -9538,7 +9538,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -9662,7 +9662,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum \tcode{E} shall meet the requirements of @@ -11213,7 +11136,7 @@ index abe9bd67..bcfb38a3 100644 \rSec3[expected.void.cons]{Constructors} -@@ -11563,8 +11563,8 @@ is ill-formed. +@@ -11785,8 +11785,8 @@ is ill-formed. \indextext{call wrapper}% \indextext{call wrapper!simple}% \indextext{call wrapper!forwarding}% @@ -11224,7 +11147,7 @@ index abe9bd67..bcfb38a3 100644 An \defn{argument forwarding call wrapper} is a call wrapper that can be called with an arbitrary argument list and delivers the arguments to the target object as references. -@@ -11604,7 +11604,7 @@ with references as described in the corresponding forwarding steps. +@@ -11826,7 +11826,7 @@ with references as described in the corresponding forwarding steps. \pnum \label{term.simple.call.wrapper}% A \defn{simple call wrapper} is a perfect forwarding call wrapper that meets @@ -11233,7 +11156,7 @@ index abe9bd67..bcfb38a3 100644 and whose copy constructor, move constructor, and assignment operators are constexpr functions that do not throw exceptions. -@@ -11707,7 +11707,7 @@ namespace std { +@@ -11929,7 +11929,7 @@ namespace std { \end{codeblock} \pnum @@ -11242,7 +11165,7 @@ index abe9bd67..bcfb38a3 100644 around a reference to an object or function of type \tcode{T}. \pnum -@@ -13161,7 +13161,7 @@ is \tcode{true}. +@@ -13383,7 +13383,7 @@ is \tcode{true}. \pnum \expects @@ -11251,7 +11174,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \returns -@@ -13247,10 +13247,10 @@ is \tcode{true}. +@@ -13469,10 +13469,10 @@ is \tcode{true}. \pnum \expects @@ -11264,7 +11187,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \returns -@@ -13316,7 +13316,7 @@ then \tcode{f != nullptr} is \tcode{true}. +@@ -13538,7 +13538,7 @@ then \tcode{f != nullptr} is \tcode{true}. \pnum \expects For each $\tcode{T}_i$ in \tcode{BoundArgs}, @@ -11273,7 +11196,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \returns -@@ -13361,7 +13361,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. +@@ -13583,7 +13583,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. \pnum Specializations of the \tcode{is_bind_expression} template shall meet @@ -11282,7 +11205,7 @@ index abe9bd67..bcfb38a3 100644 provides a definition that has a base characteristic of \tcode{true_type} if \tcode{T} is a type returned from \tcode{bind}, otherwise it has a base characteristic of \tcode{false_type}. -@@ -13397,7 +13397,7 @@ The function template \tcode{bind} uses +@@ -13619,7 +13619,7 @@ The function template \tcode{bind} uses \pnum Specializations of the \tcode{is_placeholder} template shall meet @@ -11291,7 +11214,7 @@ index abe9bd67..bcfb38a3 100644 provides a definition that has the base characteristic of \tcode{integral_constant} if \tcode{T} is the type of \tcode{std::placeholders::_\placeholder{J}}, otherwise it has a -@@ -13447,7 +13447,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> +@@ -13669,7 +13669,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> \pnum \expects \tcode{FD} and each $\tcode{TD}_i$ meet @@ -11300,7 +11223,7 @@ index abe9bd67..bcfb38a3 100644 \tcode{\placeholdernc{INVOKE}(fd, $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc$, $\tcode{w}_N$)}\iref{func.require} is a valid expression for some values $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc{}$, $\tcode{w}_N$, where -@@ -13483,8 +13483,8 @@ the state entities of \tcode{g}. +@@ -13705,8 +13705,8 @@ the state entities of \tcode{g}. \pnum \begin{note} If all of \tcode{FD} and $\tcode{TD}_i$ meet @@ -11311,7 +11234,7 @@ index abe9bd67..bcfb38a3 100644 \end{note} \end{itemdescr} -@@ -13553,13 +13553,13 @@ The number \tcode{\placeholder{M}} of placeholders is +@@ -13775,13 +13775,13 @@ The number \tcode{\placeholder{M}} of placeholders is \impldef{number of placeholders for bind expressions}. \pnum @@ -11328,7 +11251,7 @@ index abe9bd67..bcfb38a3 100644 but if so, their copy assignment operators are constexpr functions that do not throw exceptions. -@@ -13827,7 +13827,7 @@ Let \tcode{FD} be \tcode{decay_t}. +@@ -14049,7 +14049,7 @@ Let \tcode{FD} be \tcode{decay_t}. \pnum \expects @@ -11337,7 +11260,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \ensures -@@ -14252,9 +14252,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14474,9 +14474,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11349,7 +11272,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \ensures -@@ -14304,9 +14304,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14526,9 +14526,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11361,7 +11284,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \ensures -@@ -14346,9 +14346,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14568,9 +14568,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11373,7 +11296,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \ensures -@@ -14670,8 +14670,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14892,8 +14892,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11384,7 +11307,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \ensures -@@ -14726,8 +14726,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14948,8 +14948,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11395,7 +11318,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \ensures -@@ -14772,8 +14772,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14994,8 +14994,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11406,7 +11329,7 @@ index abe9bd67..bcfb38a3 100644 \pnum \ensures -@@ -15290,7 +15290,7 @@ provided to the function call operator. +@@ -15512,7 +15512,7 @@ provided to the function call operator. \pnum Each specialization of a class template specified in \ref{func.search} @@ -11415,7 +11338,7 @@ index abe9bd67..bcfb38a3 100644 Template parameters named \begin{itemize} \item \tcode{ForwardIterator}, -@@ -15304,7 +15304,7 @@ Template parameters named +@@ -15526,7 +15526,7 @@ Template parameters named of templates specified in \ref{func.search} shall meet the same requirements and semantics as specified in \ref{algorithms.general}. @@ -11424,7 +11347,7 @@ index abe9bd67..bcfb38a3 100644 requirements (\tref{cpp17.hash}). \pnum -@@ -15413,9 +15413,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, +@@ -15635,9 +15635,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, \pnum \expects The value type of \tcode{RandomAccessIterator1} meets @@ -11437,7 +11360,7 @@ index abe9bd67..bcfb38a3 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15514,8 +15514,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, +@@ -15736,8 +15736,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, \begin{itemdescr} \pnum \expects @@ -11448,7 +11371,7 @@ index abe9bd67..bcfb38a3 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15588,7 +15588,7 @@ as the default hash function. +@@ -15810,7 +15810,7 @@ as the default hash function. Each specialization of \tcode{hash} is either enabled or disabled, as described below. \begin{note} @@ -11457,7 +11380,7 @@ index abe9bd67..bcfb38a3 100644 disabled specializations do not. \end{note} Each header that declares the template \tcode{hash} -@@ -15615,17 +15615,17 @@ Disabled specializations of \tcode{hash} +@@ -15837,17 +15837,17 @@ Disabled specializations of \tcode{hash} are not function object types\iref{function.objects}. \begin{note} This means that the specialization of \tcode{hash} exists, but @@ -11484,28 +11407,28 @@ index abe9bd67..bcfb38a3 100644 2.43.0 -From 6d3783559d80dcb25e603125353d93fa05567811 Mon Sep 17 00:00:00 2001 +From a6221ef3a01c8ed0b6e1a9deef27974da6fac2f6 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 Subject: [PATCH 9/9] Remove awkward \linebreaks. --- source/algorithms.tex | 4 ++-- - source/containers.tex | 53 +++++++++++++++++++++---------------------- - source/exec.tex | 12 +++++----- - source/memory.tex | 6 ++--- + source/containers.tex | 42 +++++++++++++++++++++--------------------- + source/exec.tex | 12 ++++++------ + source/memory.tex | 6 +++--- source/meta.tex | 2 +- source/numerics.tex | 4 ++-- - source/ranges.tex | 38 +++++++++++++++---------------- - source/threads.tex | 8 +++---- - source/utilities.tex | 8 +++---- - 9 files changed, 67 insertions(+), 68 deletions(-) + source/ranges.tex | 38 +++++++++++++++++++------------------- + source/threads.tex | 8 ++++---- + source/utilities.tex | 8 ++++---- + 9 files changed, 62 insertions(+), 62 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 23502107..15374649 100644 +index 4813bec6..a47a149f 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -7072,7 +7072,7 @@ Let: +@@ -7080,7 +7080,7 @@ Let: \tcode{invoke(op, invoke(proj, *(first1 + (i - result))))} for unary transforms defined in namespace \tcode{ranges}; \item @@ -11514,7 +11437,7 @@ index 23502107..15374649 100644 for binary transforms defined in namespace \tcode{ranges}. \end{itemize} \end{itemize} -@@ -14185,7 +14185,7 @@ namespace ranges { +@@ -14217,7 +14217,7 @@ namespace ranges { \pnum \constraints \tcode{is_unbounded_array_v} is \tcode{false}. @@ -11524,7 +11447,7 @@ index 23502107..15374649 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index 7053f174..0e9a3e38 100644 +index 0731405d..59118f4f 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1461,7 +1461,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11536,7 +11459,7 @@ index 7053f174..0e9a3e38 100644 an implementation should not perform more than a single reallocation. \pnum -@@ -1833,7 +1833,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. +@@ -1836,7 +1836,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. \pnum \recommended If \tcode{R} models \tcode{ranges::\libconcept{approximately_sized_range}} and @@ -11545,17 +11468,16 @@ index 7053f174..0e9a3e38 100644 an implementation should not perform any reallocation. \end{itemdescr} -@@ -2449,8 +2449,7 @@ calling \tcode{ator_traits::template rebind_traits::dealloc - Assigns \tcode{nh.ptr_} to \tcode{ptr_}. +@@ -2453,7 +2453,7 @@ Assigns \tcode{nh.\exposid{ptr_}} to \exposid{ptr_}. \item - If \tcode{!alloc\textunderscore} or \tcode{ator_traits::propagate_on_container_move_assignment::value} + If \tcode{!\exposid{alloc_}} is \tcode{true} or + \tcode{\exposid{ator-traits}::propagate_on_container_move_assignment::value} -is \tcode{true}, \linebreak --move assigns \tcode{nh.alloc_} to \tcode{alloc_}. -+is \tcode{true}, move assigns \tcode{nh.alloc_} to \tcode{alloc_}. ++is \tcode{true}, + move assigns \tcode{nh.\exposid{alloc_}} to \exposid{alloc_}. \item Assigns - \keyword{nullptr} to \tcode{nh.ptr_} and assigns \tcode{nullopt} to -@@ -7473,14 +7472,14 @@ template +@@ -7473,14 +7473,14 @@ template \pnum \expects \tcode{T} is \oldconcept{EmplaceConstructible} into \tcode{forward_list} @@ -11572,7 +11494,7 @@ index 7053f174..0e9a3e38 100644 \pnum \returns -@@ -10639,7 +10638,7 @@ template +@@ -10706,7 +10706,7 @@ template \pnum The expression \tcode{\exposid{is-vector-bool-reference}} is \tcode{true} @@ -11581,7 +11503,7 @@ index 7053f174..0e9a3e38 100644 for some type \tcode{Alloc} and \tcode{vector} is not a program-defined specialization. \end{itemdescr} -@@ -12031,7 +12030,7 @@ there is no effect. +@@ -12103,7 +12103,7 @@ there is no effect. Otherwise, let \tcode{r} be \tcode{equal_range(k)}. Constructs an object \tcode{u} of type \tcode{value_type} with \tcode{piecewise_construct, forward_as_tuple(std::forward(k)), @@ -11590,7 +11512,7 @@ index 7053f174..0e9a3e38 100644 If \tcode{equal_range(u.first) == r} is \tcode{false}, the behavior is undefined. Inserts \tcode{u} into \tcode{*this}. -@@ -17517,7 +17516,7 @@ template +@@ -17612,7 +17612,7 @@ template \pnum \effects Equivalent to \tcode{flat_map(sorted_unique, key_cont, mapped_cont)} and @@ -11599,7 +11521,7 @@ index 7053f174..0e9a3e38 100644 except that \tcode{\exposid{c}.keys} and \tcode{\exposid{c}.values} are constructed with uses-allocator construction\iref{allocator.uses.construction}. -@@ -17701,7 +17700,7 @@ template constexpr pair emplace(Args&&... args); +@@ -17796,7 +17796,7 @@ template constexpr pair emplace(Args&&... args); \pnum \effects Initializes an object \tcode{t} of type \tcode{pair} @@ -11608,7 +11530,7 @@ index 7053f174..0e9a3e38 100644 if the map already contains an element whose key is equivalent to \tcode{t.first}, \tcode{*this} is unchanged. -@@ -17957,7 +17956,7 @@ template +@@ -18068,7 +18068,7 @@ template \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11617,7 +11539,7 @@ index 7053f174..0e9a3e38 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18012,7 +18011,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. +@@ -18123,7 +18123,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11626,7 +11548,7 @@ index 7053f174..0e9a3e38 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18626,14 +18625,14 @@ template +@@ -18753,14 +18753,14 @@ template \pnum \effects Equivalent to \tcode{flat_multimap(key_cont, mapped_cont)} and @@ -11643,7 +11565,7 @@ index 7053f174..0e9a3e38 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -23194,7 +23193,7 @@ is representable as a value of type \tcode{index_type.} +@@ -23454,7 +23454,7 @@ is representable as a value of type \tcode{index_type.} \item If \exposid{rank_} is greater than one, then the product of @@ -11652,7 +11574,7 @@ index 7053f174..0e9a3e38 100644 all values \tcode{ext.extent($k$)} with $k$ in the range of \range{1}{\exposid{rank_}} is representable as a value of type \tcode{index_type}. -@@ -23273,7 +23272,7 @@ template +@@ -23533,7 +23533,7 @@ template \item If \exposid{rank_} is greater than \tcode{1} and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11661,7 +11583,7 @@ index 7053f174..0e9a3e38 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(0))) -@@ -23341,7 +23340,7 @@ is \tcode{true}. +@@ -23608,7 +23608,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11670,7 +11592,7 @@ index 7053f174..0e9a3e38 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(0))) -@@ -23739,7 +23738,7 @@ Implementations should not store this value +@@ -24008,7 +24008,7 @@ Implementations should not store this value if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. \begin{note} Using \tcode{extents} @@ -11679,7 +11601,7 @@ index 7053f174..0e9a3e38 100644 would achieve this. \end{note} \end{itemdescr} -@@ -23822,13 +23821,13 @@ is representable as a value of type \tcode{index_type}. +@@ -24091,13 +24091,13 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -11695,7 +11617,7 @@ index 7053f174..0e9a3e38 100644 \end{itemize} \pnum -@@ -23901,7 +23900,7 @@ template +@@ -24170,7 +24170,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11704,7 +11626,7 @@ index 7053f174..0e9a3e38 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -23969,7 +23968,7 @@ is \tcode{true}. +@@ -24245,7 +24245,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11713,48 +11635,11 @@ index 7053f174..0e9a3e38 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) -@@ -25628,7 +25627,7 @@ for which \tcode{\exposid{map-rank}[$k$]} is not \tcode{dynamic_extent}, - \item - \tcode{stride(k) * \exposid{de-ice}($s_k$.stride)} - if $S_k$ is a specialization of \tcode{strided_slice} and --\tcode{$s_k$.stride < $s_k$.\linebreak extent} is \tcode{true}; -+\tcode{$s_k$.stride < $s_k$.extent} is \tcode{true}; - \item - otherwise, \tcode{stride($k$)}. - \end{itemize} -@@ -26026,11 +26025,11 @@ is well-formed when treated as an unevaluated operand. - \begin{itemize} - \item - \tcode{decltype(submdspan_mapping(src.mapping(), slices...))} --is a specialization of \tcode{submd-\linebreak{}span_mapping_result}. -+is a specialization of \tcode{submdspan_mapping_result}. - - \item - \tcode{is_same_v,} --\tcode{decltype(\linebreak{}submdspan_extents(src.mapping(), slices...))>} -+\tcode{decltype(submdspan_extents(src.mapping(), slices...))>} - is \tcode{true}. - - \item -@@ -26060,11 +26059,11 @@ all of the following are \tcode{true}: - \item - $0 \le \tcode{\exposid{first_}(slices...)}$ - $\le \tcode{\exposid{last_}<$k$>(src.extents(), slices...)}$ -- $\le \tcode{\linebreak{}src.extent($k$)}$ -+ $\le \tcode{src.extent($k$)}$ - \end{itemize} - - \item --\tcode{sub_map_offset.mapping.extents() == submdspan_extents(src.mapping(), slices...)}\linebreak -+\tcode{sub_map_offset.mapping.extents() == submdspan_extents(src.mapping(), slices...)} - is \tcode{true}; and - - \item diff --git a/source/exec.tex b/source/exec.tex -index a8d4d24a..23646135 100644 +index 16de2113..1bf60f69 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -3244,7 +3244,7 @@ except that \tcode{sch} is evaluated only once. +@@ -3267,7 +3267,7 @@ except that \tcode{sch} is evaluated only once. Let \tcode{out_sndr} and \tcode{env} be subexpressions such that \tcode{OutSndr} is \tcode{decltype((out_sndr))}. If \tcode{\exposconcept{sender-for}} is \tcode{false}, @@ -11763,7 +11648,7 @@ index a8d4d24a..23646135 100644 \tcode{starts_on.transform_sender(out_sndr, env)} are ill-formed; otherwise \begin{itemize} \item -@@ -3624,7 +3624,7 @@ except that \tcode{sndr} is evaluated only once. +@@ -3647,7 +3647,7 @@ except that \tcode{sndr} is evaluated only once. \pnum Let \tcode{out_sndr} and \tcode{env} be subexpressions, let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and @@ -11772,7 +11657,7 @@ index a8d4d24a..23646135 100644 If \tcode{\exposconcept{sender-for}} is \tcode{false}, then the expressions \tcode{on.transform_env(out_sndr, env)} and \tcode{on.transform_sender(out_sndr, env)} are ill-formed. -@@ -3766,7 +3766,7 @@ Let the expression \exposid{then-cpo} be one of +@@ -3789,7 +3789,7 @@ Let the expression \exposid{then-cpo} be one of For subexpressions \tcode{sndr} and \tcode{f}, if \tcode{decltype((sndr))} does not satisfy \libconcept{sender}, or \tcode{decltype((f))} does not satisfy \exposconcept{movable-value}, @@ -11781,7 +11666,7 @@ index a8d4d24a..23646135 100644 \pnum Otherwise, -@@ -4071,7 +4071,7 @@ is initialized with a callable object equivalent to the following: +@@ -4090,7 +4090,7 @@ is initialized with a callable object equivalent to the following: Let \tcode{sndr} and \tcode{env} be subexpressions, and let \tcode{Sndr} be \tcode{decltype((sndr))}. If @@ -11790,7 +11675,7 @@ index a8d4d24a..23646135 100644 is \tcode{false}, then the expression \tcode{\exposid{let-cpo}.transform_env(sndr, env)} is ill-formed. -@@ -4686,7 +4686,7 @@ try { +@@ -4731,7 +4731,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -11799,7 +11684,7 @@ index a8d4d24a..23646135 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -5729,7 +5729,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. +@@ -5762,7 +5762,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. \pnum For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. @@ -11809,10 +11694,10 @@ index a8d4d24a..23646135 100644 the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: diff --git a/source/memory.tex b/source/memory.tex -index eddd5794..ceadf294 100644 +index 0b20e5ce..87658ba8 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1371,7 +1371,7 @@ A \tcode{tuple} value determined as follows: +@@ -1245,7 +1245,7 @@ A \tcode{tuple} value determined as follows: \begin{itemize} \item If \tcode{uses_allocator_v, Alloc>} is \tcode{false} and @@ -11821,7 +11706,7 @@ index eddd5794..ceadf294 100644 return \tcode{forward_as_tuple(std::forward(args)...)}. \item Otherwise, if \tcode{uses_allocator_v, Alloc>} is \tcode{true} and -@@ -4332,7 +4332,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje +@@ -4206,7 +4206,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje the allocator \tcode{a} passed to \tcode{allocate_shared}. \item When a (sub)object of non-array type \tcode{U} is initialized by @@ -11830,7 +11715,7 @@ index eddd5794..ceadf294 100644 \tcode{allocate_shared_for_overwrite}, it is initialized via the expression \tcode{::new(pv) U}, where \tcode{pv} has type \tcode{void*} and -@@ -5567,7 +5567,7 @@ if (p) { +@@ -5441,7 +5441,7 @@ if (p) { \end{codeblock} if the expression \tcode{s.reset(static_cast(p), std::forward(args)...)} @@ -11840,10 +11725,10 @@ index eddd5794..ceadf294 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index 1a731050..b727a291 100644 +index 02a1d8f4..63be3ac8 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -2534,7 +2534,7 @@ present as follows: +@@ -2526,7 +2526,7 @@ present as follows: \item Let \tcode{R} be \tcode{\placeholdernc{COMMON-REF}(T1, T2)}. If \tcode{T1} and \tcode{T2} are reference types, \tcode{R} is well-formed, and @@ -11853,11 +11738,11 @@ index 1a731050..b727a291 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index 6651e2d3..8d3ac385 100644 +index 084414fa..0b84dc63 100644 --- a/source/numerics.tex +++ b/source/numerics.tex -@@ -13793,7 +13793,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. - \mandates +@@ -13822,7 +13822,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. + a specialization of \tcode{complex}. Let \tcode{a} be \tcode{\exposid{abs-if-needed}(declval())}. -Then, \tcode{decltype(\linebreak init + a * a} is convertible to \tcode{Scalar}. @@ -11865,8 +11750,8 @@ index 6651e2d3..8d3ac385 100644 \pnum \returns -@@ -13999,7 +13999,7 @@ template - \mandates +@@ -14023,7 +14023,7 @@ template())}. -Then, \tcode{decltype(\linebreak init + a * a)} @@ -11875,7 +11760,7 @@ index 6651e2d3..8d3ac385 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 095b3aca..380a7035 100644 +index e12de083..afbb6b0c 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -11896,7 +11781,7 @@ index 095b3aca..380a7035 100644 \tcode{make_from_tuple(std::move(bound_args))}. The behavior is undefined if \tcode{Bound} is not \tcode{unreachable_sentinel_t} and -@@ -5916,7 +5916,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} +@@ -5921,7 +5921,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} that models \libconcept{random_access_range} and \libconcept{sized_range}, then \tcode{iota_view(*ranges::begin(E), @@ -11905,7 +11790,7 @@ index 095b3aca..380a7035 100644 except that \tcode{E} is evaluated only once. \item -@@ -6392,7 +6392,7 @@ if \tcode{T} is +@@ -6402,7 +6402,7 @@ if \tcode{T} is a specialization of \tcode{subrange} that models \libconcept{random_access_range} and \libconcept{sized_range}, then @@ -11914,7 +11799,7 @@ index 095b3aca..380a7035 100644 \exposid{to-unsigned-like}(ranges::distance(E) - std::min(ranges::distance(E), F)))}, except that \tcode{E} and \tcode{F} are each evaluated only once. -@@ -7444,7 +7444,7 @@ Let \placeholder{OUTERC} denote +@@ -7454,7 +7454,7 @@ Let \placeholder{OUTERC} denote let \placeholder{INNERC} denote \tcode{iterator_traits<\exposid{InnerIter}>::iterator_category}, and let \placeholder{PATTERNC} denote @@ -11923,7 +11808,7 @@ index 095b3aca..380a7035 100644 \item If \begin{codeblock} -@@ -7953,7 +7953,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); +@@ -7963,7 +7963,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -11932,7 +11817,7 @@ index 095b3aca..380a7035 100644 \end{itemdescr} \rSec3[range.lazy.split.outer]{Class template \tcode{lazy_split_view::\exposid{outer-iterator}}} -@@ -8264,7 +8264,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: +@@ -8274,7 +8274,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: \begin{itemize} \item \tcode{forward_iterator_tag} if @@ -11941,7 +11826,7 @@ index 095b3aca..380a7035 100644 \tcode{\libconcept{derived_from}}; \item otherwise, \tcode{iterator_traits>::iterator_category}. \end{itemize} -@@ -8484,7 +8484,7 @@ constexpr explicit split_view(R&& r, range_value_t e); +@@ -8494,7 +8494,7 @@ constexpr explicit split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -11950,7 +11835,7 @@ index 095b3aca..380a7035 100644 \end{itemdescr} \indexlibrarymember{begin}{split_view} -@@ -9049,7 +9049,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. +@@ -9060,7 +9060,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. \item Otherwise, if \tcode{\exposconcept{all-forward}} is modeled, @@ -11959,7 +11844,7 @@ index 095b3aca..380a7035 100644 \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} -@@ -9075,14 +9075,14 @@ let \tcode{Cs} denote the pack of types +@@ -9086,14 +9086,14 @@ let \tcode{Cs} denote the pack of types \begin{itemize} \item If @@ -11977,7 +11862,7 @@ index 095b3aca..380a7035 100644 \item Otherwise, if \tcode{(\libconcept{derived_from} \&\& ...)} -@@ -9534,11 +9534,11 @@ Let +@@ -9545,11 +9545,11 @@ Let %FIXME This is hard to parse. If \tcode{$i_\tcode{x}$ > $i_\tcode{y}$}, let \tcode{$d_\tcode{y}$} be @@ -11992,7 +11877,7 @@ index 095b3aca..380a7035 100644 for every integer \tcode{$i$} in the range \range{$i_\tcode{y}$ + 1}{$i_\tcode{x}$} if there is any, and -@@ -9581,7 +9581,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul +@@ -9592,7 +9592,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul Let \tcode{$i_\tcode{x}$} denote \tcode{x.\exposid{it_}.index()}, \tcode{$d_\tcode{x}$} be @@ -12001,7 +11886,7 @@ index 095b3aca..380a7035 100644 Let \tcode{$s$} denote the sum of the sizes of all the ranges \tcode{std::get<$i$>(x.\exposid{parent_}->\exposid{views_})} for every integer \tcode{$i$} in the range -@@ -9738,7 +9738,7 @@ is expression-equivalent to: +@@ -9749,7 +9749,7 @@ is expression-equivalent to: \begin{itemize} \item If \tcode{T} models \libconcept{contiguous_iterator}, @@ -12010,7 +11895,7 @@ index 095b3aca..380a7035 100644 \item Otherwise, if \tcode{T} models \libconcept{random_access_iterator}, -@@ -13434,7 +13434,7 @@ is defined as follows: +@@ -13455,7 +13455,7 @@ is defined as follows: \item If \tcode{invoke_result_t<\exposid{maybe-const}\&, \exposid{REPEAT}(range_reference_t<\exposid{Base}>, N)...>} @@ -12019,7 +11904,7 @@ index 095b3aca..380a7035 100644 \tcode{iterator_category} denotes \tcode{input_iterator_tag}. \item Otherwise, let \tcode{C} denote the type -@@ -14545,7 +14545,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ +@@ -14566,7 +14566,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ \effects Initializes \exposid{current_} with \tcode{current}, \exposid{end_} with \tcode{ranges::end(parent->\exposid{base_})}, @@ -12029,10 +11914,10 @@ index 095b3aca..380a7035 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index 7b9503eb..e28c8648 100644 +index 9d5fcfed..20d0f06a 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -3465,7 +3465,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, +@@ -3481,7 +3481,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12041,7 +11926,7 @@ index 7b9503eb..e28c8648 100644 \pnum \effects -@@ -4740,7 +4740,7 @@ For the \tcode{volatile} overload of this function, +@@ -4774,7 +4774,7 @@ For the \tcode{volatile} overload of this function, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12050,7 +11935,7 @@ index 7b9503eb..e28c8648 100644 \pnum \effects -@@ -6264,7 +6264,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de +@@ -6285,7 +6285,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12059,7 +11944,7 @@ index 7b9503eb..e28c8648 100644 \pnum \effects -@@ -6580,7 +6580,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire +@@ -6601,7 +6601,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -12069,10 +11954,10 @@ index 7b9503eb..e28c8648 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index bcfb38a3..895df40f 100644 +index 639cc237..06e48fd5 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -2062,7 +2062,7 @@ equals \tcode{tuple_size_v>}, +@@ -2078,7 +2078,7 @@ equals \tcode{tuple_size_v>}, \item \tcode{(is_constructible_v(std::forward(u)))> \&\& ...)} @@ -12081,7 +11966,7 @@ index bcfb38a3..895df40f 100644 \tcode{true}, and \item -@@ -3078,7 +3078,7 @@ denotes a type. +@@ -3096,7 +3096,7 @@ denotes a type. \pnum \result The member \grammarterm{typedef-name} \tcode{type} denotes the type @@ -12090,7 +11975,7 @@ index bcfb38a3..895df40f 100644 \end{itemdescr} \indexlibrarymember{common_type}{tuple}% -@@ -4075,7 +4075,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and +@@ -4103,7 +4103,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and \pnum All requirements on container iterators\iref{container.reqmts} apply to @@ -12099,7 +11984,7 @@ index bcfb38a3..895df40f 100644 \pnum Any operation that initializes or destroys the contained value of an optional object invalidates all iterators into that object. -@@ -8987,7 +8987,7 @@ constexpr const T&& value() const &&; +@@ -9107,7 +9107,7 @@ constexpr const T&& value() const &&; \pnum \mandates \tcode{is_copy_constructible_v} is \tcode{true} and diff --git a/lastbuild.sig b/lastbuild.sig index 640e9ffbd0..d522a460da 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ -htmlgen eee5307c45c04761ef5c27956cbed742e08e5fb4 -draft 98ce5ac6fbce2338787adb9b1c842fcf8ebab37c -c312e8aec5bdafb199f3b0f435fd63c3599f2f4a htmlgen.patch +htmlgen 28b6c103f58b9b4305a7d15b224212f1727b7b05 +draft 1d9fdb066e95b7be58881f24977a20a51359097c +bbc2beaa01d1c9e4cd298aa91f392517393b5f5f htmlgen.patch From 7bedb2f40cc2b846ea9c584b02d1322355e72bdd Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Wed, 8 Apr 2026 19:21:33 -0500 Subject: [PATCH 21/36] Update --- cxxdraft-htmlgen | 2 +- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 1061 ++++++++++++++++++++++++---------------------- lastbuild.sig | 6 +- 5 files changed, 566 insertions(+), 507 deletions(-) diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen index 28b6c103f5..ec08ed9082 160000 --- a/cxxdraft-htmlgen +++ b/cxxdraft-htmlgen @@ -1 +1 @@ -Subproject commit 28b6c103f58b9b4305a7d15b224212f1727b7b05 +Subproject commit ec08ed9082b71d87ffc970becceff11c5f8438b2 diff --git a/draft b/draft index 1d9fdb066e..5c8fc4311a 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 1d9fdb066e95b7be58881f24977a20a51359097c +Subproject commit 5c8fc4311ab8ec82f789e9eadf4cf39f47beabf9 diff --git a/gh-pages b/gh-pages index 551bd11729..5fabcc0734 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 551bd117291a90dabe2194bbb6f3967c9ec73a22 +Subproject commit 5fabcc07340c334f9e21025e048c896a71e49985 diff --git a/htmlgen.patch b/htmlgen.patch index 650be36ffc..605756f5ca 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,8 +1,8 @@ -From 25fa7a16a3a954e36753a09d8ad05ef0916ce6e3 Mon Sep 17 00:00:00 2001 +From bb7ca297960b66cd35bae9ab9023b4ce400d4fc9 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 -Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on - smaller (e.g. half-screen) window sizes. +Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout + on smaller (e.g. half-screen) window sizes. --- source/basic.tex | 26 +++++++++++++------------- @@ -10,7 +10,7 @@ Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index c427e154..f34638ff 100644 +index de215a04..8e863f4c 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -324,7 +324,7 @@ Given @@ -22,7 +22,7 @@ index c427e154..f34638ff 100644 }; int main() { -@@ -2628,23 +2628,23 @@ namespace AB { +@@ -2629,23 +2629,23 @@ namespace AB { void h() { @@ -59,10 +59,10 @@ index c427e154..f34638ff 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index ca57b322..ce24309d 100644 +index 10fffe4f..de418bed 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -2937,7 +2937,7 @@ struct s2 { +@@ -2938,7 +2938,7 @@ struct s2 { } auto g() { return [] { @@ -75,10 +75,10 @@ index ca57b322..ce24309d 100644 2.43.0 -From 73205525edfade93e41de3375de335f395e6e18d Mon Sep 17 00:00:00 2001 +From 519c97d9af6000c8ab322c984b6cd7a2431a94f3 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 -Subject: [PATCH 2/9] Use new link macros. +Subject: [PATCH 02/10] Use new link macros. --- source/algorithms.tex | 4 +- @@ -86,7 +86,7 @@ Subject: [PATCH 2/9] Use new link macros. source/classes.tex | 22 ++-- source/compatibility.tex | 4 +- source/concepts.tex | 12 +- - source/containers.tex | 50 ++++---- + source/containers.tex | 48 +++---- source/declarations.tex | 67 +++++----- source/diagnostics.tex | 6 +- source/exceptions.tex | 36 +++--- @@ -94,7 +94,7 @@ Subject: [PATCH 2/9] Use new link macros. source/future.tex | 10 +- source/intro.tex | 19 +-- source/iostreams.tex | 74 +++++------ - source/iterators.tex | 8 +- + source/iterators.tex | 6 +- source/lex.tex | 6 +- source/lib-intro.tex | 71 +++++------ source/limits.tex | 2 +- @@ -108,10 +108,10 @@ Subject: [PATCH 2/9] Use new link macros. source/threads.tex | 45 ++++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 602 insertions(+), 612 deletions(-) + 27 files changed, 600 insertions(+), 610 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 74ac223b..5bf27eb7 100644 +index baf3e4f2..c313c941 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -133,7 +133,7 @@ index 74ac223b..5bf27eb7 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index f34638ff..ac68557f 100644 +index 8e863f4c..818f9001 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -162,7 +162,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -248,12 +248,12 @@ index f34638ff..ac68557f 100644 a non-volatile const object with internal or no linkage if the object \begin{itemize} \item has the same literal type in all definitions of \tcode{D}, --\item is initialized with a constant expression\iref{expr.const}, -+\item is initialized with a \link{constant expression}{expr.const}, +-\item is initialized with a constant expression\iref{expr.const.const}, ++\item is initialized with a \link{constant expression}{expr.const.const}, \item is not odr-used in any definition of \tcode{D}, and \item has the same value in all definitions of \tcode{D}, \end{itemize} -@@ -2921,7 +2920,7 @@ are attached to the same module. +@@ -2922,7 +2921,7 @@ are attached to the same module. \indextext{linkage!\idxcode{inline} and}% \indextext{\idxcode{inline}!linkage of}% The name of an entity @@ -262,7 +262,7 @@ index f34638ff..ac68557f 100644 has internal linkage if it is the name of \begin{itemize} \item -@@ -2962,7 +2961,7 @@ typedef declaration in which the class has the typedef name for linkage +@@ -2963,7 +2962,7 @@ typedef declaration in which the class has the typedef name for linkage purposes\iref{dcl.typedef}; or \item \indextext{enumeration!linkage of}% @@ -271,7 +271,7 @@ index f34638ff..ac68557f 100644 in a typedef declaration in which the enumeration has the typedef name for linkage purposes\iref{dcl.typedef}; or \item an unnamed enumeration -@@ -3038,7 +3037,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. +@@ -3039,7 +3038,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. \pnum \indextext{linkage!no}% Names not covered by these rules have no linkage. Moreover, except as @@ -280,7 +280,7 @@ index f34638ff..ac68557f 100644 linkage. \pnum -@@ -3397,8 +3396,8 @@ features of the language, such as references and virtual functions, might +@@ -3398,8 +3397,8 @@ features of the language, such as references and virtual functions, might involve additional memory locations that are not accessible to programs but are managed by the implementation. \end{note} @@ -291,7 +291,7 @@ index f34638ff..ac68557f 100644 locations without interfering with each other. \pnum -@@ -3442,15 +3441,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but +@@ -3443,15 +3442,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but The constructs in a \Cpp{} program create, destroy, refer to, access, and manipulate objects. An \defn{object} is created @@ -310,7 +310,7 @@ index f34638ff..ac68557f 100644 and in its period of destruction\iref{class.cdtor}. \begin{note} -@@ -3584,7 +3583,7 @@ A \defn{potentially-overlapping subobject} is either: +@@ -3585,7 +3584,7 @@ A \defn{potentially-overlapping subobject} is either: \begin{itemize} \item a base class subobject, or \item a non-static data member @@ -319,7 +319,7 @@ index f34638ff..ac68557f 100644 \end{itemize} \pnum -@@ -3605,7 +3604,7 @@ Otherwise, the circumstances under which the object has zero size +@@ -3606,7 +3605,7 @@ Otherwise, the circumstances under which the object has zero size are \impldef{which non-standard-layout objects containing no data are considered empty}. \indextext{most derived object!bit-field}% @@ -328,7 +328,7 @@ index f34638ff..ac68557f 100644 an object with nonzero size shall occupy one or more bytes of storage, including every byte that is occupied in full or in part -@@ -4198,16 +4197,16 @@ the result of the evaluation is that erroneous value: +@@ -4199,16 +4198,16 @@ the result of the evaluation is that erroneous value: is produced by the evaluation of: \begin{itemize} \item @@ -348,7 +348,7 @@ index f34638ff..ac68557f 100644 \end{itemize} then the result of the operation is an indeterminate value or that erroneous value, respectively. -@@ -4398,8 +4397,8 @@ specified in~\ref{class.copy.elision}. +@@ -4399,8 +4398,8 @@ specified in~\ref{class.copy.elision}. \indextext{storage duration!dynamic|(} \pnum @@ -359,7 +359,7 @@ index f34638ff..ac68557f 100644 \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -@@ -4563,9 +4562,9 @@ that would match a handler\iref{except.handle} of type +@@ -4564,9 +4563,9 @@ that would match a handler\iref{except.handle} of type \tcode{std::bad_alloc}\iref{bad.alloc}. \pnum @@ -372,7 +372,7 @@ index f34638ff..ac68557f 100644 a coroutine state\iref{dcl.fct.def.coroutine}, or called indirectly through calls to the functions in the \Cpp{} standard library. -@@ -5090,9 +5089,9 @@ shall be destroyed before +@@ -5091,9 +5090,9 @@ shall be destroyed before impose requirements on implementations regarding the representation of types. There are two kinds of types: fundamental types and compound types. @@ -385,7 +385,7 @@ index f34638ff..ac68557f 100644 \end{note} \pnum -@@ -5266,7 +5265,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, +@@ -5267,7 +5266,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, pointer types, pointer-to-member types\iref{basic.compound}, \tcode{std::meta::\brk{}info}, \tcode{std::nullptr_t}, and @@ -394,7 +394,7 @@ index f34638ff..ac68557f 100644 types are collectively called \defnadjx{scalar}{types}{type}. \label{term.trivially.copyable.type}% -@@ -5291,7 +5290,7 @@ A type is a \defnadj{literal}{type} if it is: +@@ -5292,7 +5291,7 @@ A type is a \defnadj{literal}{type} if it is: \item a scalar type; or \item a reference type; or \item an array of literal type; or @@ -403,7 +403,7 @@ index f34638ff..ac68557f 100644 has all of the following properties: \begin{itemize} \item it has a constexpr destructor\iref{dcl.constexpr}, -@@ -5325,8 +5324,8 @@ will be usable in a constant expression. +@@ -5326,8 +5325,8 @@ will be usable in a constant expression. Two types \cvqual{cv1} \tcode{T1} and \cvqual{cv2} \tcode{T2} are \defnadjx{layout-compatible}{types}{type} if \tcode{T1} and \tcode{T2} are the same type, @@ -459,10 +459,10 @@ index f34638ff..ac68557f 100644 -an unevaluated operand\iref{expr.context}, +an \deflink{unevaluated operand}{expr.context}, \item - a \grammarterm{constant-expression}\iref{expr.const}, + a \grammarterm{constant-expression}\iref{expr.const.core}, \item diff --git a/source/classes.tex b/source/classes.tex -index ed746ce9..eaf6e4da 100644 +index 058a3176..7883ea0a 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -188,10 +188,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: @@ -546,7 +546,7 @@ index ed746ce9..eaf6e4da 100644 corresponding parameter if the meaning of the program will be unchanged except for the execution of a constructor and destructor for the parameter copy object; diff --git a/source/compatibility.tex b/source/compatibility.tex -index a0ae25da..3aa1637b 100644 +index edbd9196..60706217 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -1990,8 +1990,8 @@ deallocation functions\iref{expr.new}. @@ -561,7 +561,7 @@ index a0ae25da..3aa1637b 100644 lvalue-to-rvalue conversion, were considered gratuitous and surprising. \effect diff --git a/source/concepts.tex b/source/concepts.tex -index 3cbd110a..1722b95c 100644 +index d1e15a6e..42828a4b 100644 --- a/source/concepts.tex +++ b/source/concepts.tex @@ -300,7 +300,7 @@ classifications, and fundamental type properties. @@ -609,7 +609,7 @@ index 3cbd110a..1722b95c 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index 2a04fa0e..f3aded8c 100644 +index 89f3bca5..d64183f9 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -6125,14 +6125,14 @@ namespace std { @@ -640,7 +640,7 @@ index 2a04fa0e..f3aded8c 100644 Descriptions are provided here only for operations on \tcode{array} that are not described in one of these tables and -@@ -6154,13 +6154,13 @@ for operations where there is additional semantic information. +@@ -6154,7 +6154,7 @@ for operations where there is additional semantic information. \tcode{array} is a structural type\iref{term.structural.type} if \tcode{T} is a structural type. Two values \tcode{a1} and \tcode{a2} of type \tcode{array} @@ -649,13 +649,6 @@ index 2a04fa0e..f3aded8c 100644 each pair of corresponding elements in \tcode{a1} and \tcode{a2} are template-argument-equivalent. - \pnum - The types \tcode{iterator} and \tcode{const_iterator} meet --the constexpr iterator requirements\iref{iterator.requirements.general}. -+the \deflinkx{constexpr iterator}{iterator!constexpr}{iterator.requirements.general} requirements. - - \indexlibraryglobal{array}% - \indexlibrarymember{array}{begin}% @@ -6479,7 +6479,7 @@ namespace std { A \indexlibraryglobal{deque}% @@ -801,7 +794,7 @@ index 2a04fa0e..f3aded8c 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index 510def3e..45030de5 100644 +index eac2152f..cc6330bc 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -935,9 +928,9 @@ index 510def3e..45030de5 100644 type and the \grammarterm{constant-expression} in the \grammarterm{enumerator-definition} -shall be a converted constant expression of the underlying --type\iref{expr.const}. +-type\iref{expr.const.const}. +shall be a -+\deflinkx{converted constant expression}{expression!converted constant}{expr.const} ++\deflinkx{converted constant expression}{expression!converted constant}{expr.const.const} +of the underlying type. If the underlying type is not fixed, @@ -947,9 +940,9 @@ index 510def3e..45030de5 100644 \item If an initializer is specified for an enumerator, the -\grammarterm{constant-expression} shall be an integral constant --expression\iref{expr.const}. If the expression has +-expression\iref{expr.const.const}. If the expression has +\grammarterm{constant-expression} shall be an -+\deflinkx{integral constant expression}{expression!integral constant}{expr.const}. ++\deflinkx{integral constant expression}{expression!integral constant}{expr.const.const}. +If the expression has unscoped enumeration type, the enumerator has the underlying type of that enumeration type, otherwise it has the same type as the expression. @@ -1024,7 +1017,7 @@ index 510def3e..45030de5 100644 No \grammarterm{attribute-argument-clause} shall be present. A fallthrough statement may only appear within diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index be2b863f..e653b348 100644 +index 47be572c..8b010321 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -505,13 +505,13 @@ the current state of \tcode{NDEBUG} each time that @@ -1053,7 +1046,7 @@ index be2b863f..e653b348 100644 \end{note} \indexlibraryglobal{system_error}% diff --git a/source/exceptions.tex b/source/exceptions.tex -index 2a4d6d7b..0072f5d6 100644 +index 29d43577..a9fd6f69 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -184,7 +184,7 @@ try : i(f(ii)), d(id) { @@ -1116,10 +1109,10 @@ index 2a4d6d7b..0072f5d6 100644 \item% -a standard pointer conversion\iref{conv.ptr} not involving conversions +a standard \link{pointer conversion}{conv.ptr} not involving conversions - to pointers to private or protected or ambiguous classes + to pointers to private or protected or ambiguous classes, \item% --a function pointer conversion\iref{conv.fctptr} -+a \link{function pointer conversion}{conv.fctptr} +-a function pointer conversion\iref{conv.fctptr}, ++a \link{function pointer conversion}{conv.fctptr}, \item% -a qualification conversion\iref{conv.qual}, or +a \link{qualification conversion}{conv.qual}, or @@ -1202,7 +1195,7 @@ index 2a4d6d7b..0072f5d6 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index ce24309d..0d2c5348 100644 +index de418bed..cea81800 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1418,7 +1411,7 @@ index ce24309d..0d2c5348 100644 \rSec3[expr.prim.lambda.capture]{Captures}% -@@ -3213,7 +3213,7 @@ A fold expression is a pack expansion. +@@ -3214,7 +3214,7 @@ A fold expression is a pack expansion. \pnum A \grammarterm{requires-expression} provides a concise way to express requirements on template arguments @@ -1427,7 +1420,7 @@ index ce24309d..0d2c5348 100644 or by checking properties of types and expressions. \begin{bnf} -@@ -3797,7 +3797,7 @@ or a prvalue of function pointer type. +@@ -3798,7 +3798,7 @@ or a prvalue of function pointer type. If the selected function is non-virtual, or if the \grammarterm{id-expression} in the class member access expression is a \grammarterm{qualified-id}, that function is @@ -1436,7 +1429,7 @@ index ce24309d..0d2c5348 100644 of the object expression is called; such a call is referred to as a \defnx{virtual function call}{function!virtual function call}. \begin{note} -@@ -3810,8 +3810,8 @@ an object under construction or destruction. +@@ -3811,8 +3811,8 @@ an object under construction or destruction. \pnum \begin{note} @@ -1447,7 +1440,7 @@ index ce24309d..0d2c5348 100644 the program is ill-formed. No function is implicitly declared by such a call. \end{note} -@@ -3878,7 +3878,7 @@ function, +@@ -3879,7 +3879,7 @@ function, the object expression of the class member access shall be a glvalue and the implicit object parameter of the function\iref{over.match.funcs} is initialized with that glvalue, @@ -1456,7 +1449,7 @@ index ce24309d..0d2c5348 100644 \begin{note} There is no access or ambiguity checking on this conversion; the access checking and disambiguation are done as part of the (possibly implicit) -@@ -4015,10 +4015,10 @@ pointer parameters. +@@ -4016,10 +4016,10 @@ pointer parameters. \pnum \indextext{declaration!ellipsis in function}% \indextext{parameter list!variable}% @@ -1470,7 +1463,7 @@ index ce24309d..0d2c5348 100644 \begin{note} This implies that, except where the ellipsis (\tcode{...}) or a function parameter pack is used, a parameter is available for each argument. -@@ -4036,8 +4036,8 @@ thus each such argument has a corresponding parameter when a function template +@@ -4037,8 +4037,8 @@ thus each such argument has a corresponding parameter when a function template specialization is actually called. \end{note} The @@ -1481,7 +1474,7 @@ index ce24309d..0d2c5348 100644 performed on the argument expression. An argument that has type \cv{}~\tcode{std::nullptr_t} is converted to type \tcode{\keyword{void}*}\iref{conv.ptr}. -@@ -4052,16 +4052,16 @@ an eligible non-trivial move constructor, or +@@ -4053,16 +4053,16 @@ an eligible non-trivial move constructor, or a non-trivial destructor\iref{class.dtor}, with no corresponding parameter, is conditionally-supported with \impldef{passing argument of class type through ellipsis} semantics. If the argument has @@ -1503,7 +1496,7 @@ index ce24309d..0d2c5348 100644 \pnum A function call is an lvalue -@@ -4080,8 +4080,8 @@ except as specified in \ref{dcl.type.decltype}. +@@ -4081,8 +4081,8 @@ except as specified in \ref{dcl.type.decltype}. \indextext{type conversion, explicit|see{casting}}% \indextext{conversion explicit type|see{casting}}% \indextext{casting}% @@ -1514,7 +1507,7 @@ index ce24309d..0d2c5348 100644 by a parenthesized optional \grammarterm{expression-list} or by a \grammarterm{braced-init-list} (the initializer) -@@ -4092,7 +4092,7 @@ If the type is a placeholder +@@ -4093,7 +4093,7 @@ If the type is a placeholder for a deduced class type, it is replaced by the return type of the function selected by overload resolution @@ -1523,7 +1516,7 @@ index ce24309d..0d2c5348 100644 for the remainder of this subclause. Otherwise, if the type contains a placeholder type, it is replaced by the type -@@ -4491,8 +4491,8 @@ void foo(D* dp) { +@@ -4492,8 +4492,8 @@ void foo(D* dp) { \end{example} \pnum @@ -1534,7 +1527,7 @@ index ce24309d..0d2c5348 100644 \pnum If \tcode{v} is a null pointer value, the result is a null pointer value. -@@ -4543,9 +4543,9 @@ runtime check \term{fails}. +@@ -4544,9 +4544,9 @@ runtime check \term{fails}. \pnum The value of a failed cast to pointer type is the null pointer value of @@ -1547,7 +1540,7 @@ index ce24309d..0d2c5348 100644 \indextext{\idxcode{bad_cast}}% \indexlibraryglobal{bad_cast}% -@@ -4634,13 +4634,13 @@ glvalue refers. +@@ -4635,13 +4635,13 @@ glvalue refers. When \keyword{typeid} is applied to an expression other than a glvalue of a polymorphic class type, the result refers to a \tcode{std::type_info} object representing the static type of the expression. @@ -1565,7 +1558,7 @@ index ce24309d..0d2c5348 100644 \pnum When \keyword{typeid} is applied to a \grammarterm{type-id}, the result -@@ -4734,7 +4734,7 @@ of type \tcode{T1} can be cast to type ``rvalue +@@ -4735,7 +4735,7 @@ of type \tcode{T1} can be cast to type ``rvalue reference to \tcode{T2}'' if \tcode{T2} is reference-compatible with \tcode{T1}\iref{dcl.init.ref}. If the value is not a bit-field, the result refers to the object or the specified base class subobject @@ -1574,7 +1567,7 @@ index ce24309d..0d2c5348 100644 is applied to the bit-field and the resulting prvalue is used as the operand of the \keyword{static_cast} for the remainder of this subclause. If \tcode{T2} is an inaccessible\iref{class.access} or -@@ -4839,7 +4839,8 @@ Otherwise, the behavior is undefined. +@@ -4840,7 +4840,8 @@ Otherwise, the behavior is undefined. A prvalue of type ``pointer to \cvqual{cv1} \tcode{B}'', where \tcode{B} is a class type, can be converted to a prvalue of type ``pointer to \cvqual{cv2} \tcode{D}'', @@ -1584,7 +1577,7 @@ index ce24309d..0d2c5348 100644 from \tcode{B}, if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. -@@ -4860,7 +4861,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} +@@ -4861,7 +4862,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} \tcode{T}'' can be converted to a prvalue of type ``pointer to member of \tcode{B} of type \cvqual{cv2} \tcode{T}'', where \tcode{D} is a complete class type and @@ -1593,7 +1586,7 @@ index ce24309d..0d2c5348 100644 if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. \begin{note} -@@ -4871,7 +4872,7 @@ If no valid standard conversion +@@ -4872,7 +4873,7 @@ If no valid standard conversion from ``pointer to member of \tcode{B} of type \tcode{T}'' to ``pointer to member of \tcode{D} of type \tcode{T}'' exists\iref{conv.mem}, the program is ill-formed. @@ -1602,7 +1595,7 @@ index ce24309d..0d2c5348 100644 member pointer value of the destination type. If class \tcode{B} contains the original member, or is a base class of the class containing the original member, the resulting pointer to member points -@@ -4894,7 +4895,7 @@ If the original pointer value represents the address +@@ -4895,7 +4896,7 @@ If the original pointer value represents the address then the resulting pointer value\iref{basic.compound} is unspecified. Otherwise, if the original pointer value points to an object \placeholder{a}, and there is an object \placeholder{b} of type similar to \tcode{T} @@ -1611,7 +1604,7 @@ index ce24309d..0d2c5348 100644 the result is a pointer to \placeholder{b}. Otherwise, the pointer value is unchanged by the conversion. \begin{example} -@@ -4917,8 +4918,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. +@@ -4918,8 +4919,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. If \tcode{T} is an lvalue reference type or an rvalue reference to function type, the result is an lvalue; if \tcode{T} is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the @@ -1622,7 +1615,7 @@ index ce24309d..0d2c5348 100644 performed on the expression \tcode{v}. Conversions that can be performed explicitly using \keyword{reinterpret_cast} are listed below. No other conversion can be performed explicitly using \keyword{reinterpret_cast}. -@@ -5083,10 +5084,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type +@@ -5084,10 +5085,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type lvalue; if \tcode{T} is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the @@ -1636,7 +1629,7 @@ index ce24309d..0d2c5348 100644 performed on \tcode{v}, other than as specified below. Conversions that can be performed explicitly using \keyword{const_cast} are listed below. No other conversion shall be -@@ -5639,7 +5640,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside +@@ -5640,7 +5641,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside The \keyword{sizeof} operator yields the number of bytes occupied by a non-potentially-overlapping object of the type of its operand. The operand is either an expression, @@ -1645,7 +1638,7 @@ index ce24309d..0d2c5348 100644 \grammarterm{type-id}. \indextext{type!incomplete}% The \keyword{sizeof} operator shall not be applied to an expression that -@@ -5694,7 +5695,7 @@ array-to-pointer\iref{conv.array}, and +@@ -5695,7 +5696,7 @@ array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} standard conversions are not applied to the operand of \keyword{sizeof}. If the operand is a prvalue, @@ -1654,7 +1647,7 @@ index ce24309d..0d2c5348 100644 is applied. \pnum -@@ -5839,7 +5840,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. +@@ -5840,7 +5841,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. \end{bnf} \pnum @@ -1663,7 +1656,7 @@ index ce24309d..0d2c5348 100644 a placeholder for a deduced class type\iref{dcl.type.class.deduct} appears in the \grammarterm{type-specifier-seq} of a \grammarterm{new-type-id} or -@@ -5967,7 +5968,7 @@ is less than zero; +@@ -5968,7 +5969,7 @@ is less than zero; \item its value is such that the size of the allocated object would exceed the @@ -1672,7 +1665,7 @@ index ce24309d..0d2c5348 100644 \item the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} -@@ -5993,7 +5994,7 @@ is the null pointer value of the required result type; +@@ -5994,7 +5995,7 @@ is the null pointer value of the required result type; \item otherwise, the \grammarterm{new-expression} terminates by throwing an exception of a type that would match a handler\iref{except.handle} of type @@ -1681,7 +1674,7 @@ index ce24309d..0d2c5348 100644 \end{itemize} \end{itemize} When the value of the \grammarterm{expression} is zero, the allocation -@@ -6051,8 +6052,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( +@@ -6052,8 +6053,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( A \grammarterm{new-expression} may obtain storage for the object by calling an allocation function\iref{basic.stc.dynamic.allocation}. If the \grammarterm{new-expression} terminates by throwing an exception, it @@ -1692,7 +1685,7 @@ index ce24309d..0d2c5348 100644 is a non-array type, the allocation function's name is \indextext{\idxcode{operator new}}% \indextext{\idxcode{operator delete}}% -@@ -6163,7 +6164,7 @@ the difference between the +@@ -6164,7 +6165,7 @@ the difference between the result of the \grammarterm{new-expression} and the address returned by the allocation function shall be an integral multiple of the strictest fundamental @@ -1701,7 +1694,7 @@ index ce24309d..0d2c5348 100644 is no greater than the size of the array being created. \begin{note} \indextext{allocation!alignment storage}% -@@ -6254,7 +6255,7 @@ invocation of \keyword{new} to another. +@@ -6255,7 +6256,7 @@ invocation of \keyword{new} to another. \pnum \begin{note} Unless an allocation function has a non-throwing @@ -1710,7 +1703,7 @@ index ce24309d..0d2c5348 100644 it indicates failure to allocate storage by throwing a \indextext{\idxcode{bad_alloc}}% \indexlibraryglobal{bad_alloc}% -@@ -6400,8 +6401,8 @@ to both the allocation and deallocation functions. +@@ -6401,8 +6402,8 @@ to both the allocation and deallocation functions. \pnum \indextext{expression!\idxcode{delete}}% \indextext{\idxcode{delete}}% @@ -1721,7 +1714,7 @@ index ce24309d..0d2c5348 100644 \grammarterm{new-expression}. \begin{bnf} -@@ -6504,8 +6505,8 @@ null pointer value, then: +@@ -6505,8 +6506,8 @@ null pointer value, then: \item If the allocation call for the \grammarterm{new-expression} for the object to be deleted was not omitted and the allocation was not extended\iref{expr.new}, the @@ -1732,7 +1725,7 @@ index ce24309d..0d2c5348 100644 allocation call of the \grammarterm{new-expression} shall be passed as the first argument to the deallocation function. -@@ -7090,8 +7091,8 @@ The result of a \tcode{.*} expression +@@ -7091,8 +7092,8 @@ The result of a \tcode{.*} expression whose second operand is a pointer to a data member is an lvalue if the first operand is an lvalue and an xvalue otherwise. The result of a \tcode{.*} expression whose second operand is a pointer to a member function is a prvalue. @@ -1743,7 +1736,7 @@ index ce24309d..0d2c5348 100644 \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -7120,7 +7121,7 @@ left-to-right. +@@ -7121,7 +7122,7 @@ left-to-right. \pnum The operands of \tcode{*} and \tcode{/} shall have arithmetic or unscoped enumeration type; the operands of \tcode{\%} shall have integral or unscoped @@ -1752,7 +1745,7 @@ index ce24309d..0d2c5348 100644 operands and determine the type of the result. \pnum -@@ -7251,7 +7252,7 @@ the behavior is undefined\iref{expr.pre}. +@@ -7252,7 +7253,7 @@ the behavior is undefined\iref{expr.pre}. \pnum For addition or subtraction, if the expressions \tcode{P} or \tcode{Q} have type ``pointer to \cv{}~\tcode{T}'', where \tcode{T} and the array element type @@ -1761,7 +1754,7 @@ index ce24309d..0d2c5348 100644 \begin{example} \begin{codeblock} int arr[5] = {1, 2, 3, 4, 5}; -@@ -7342,12 +7343,12 @@ and the other is not, the program is ill-formed. +@@ -7343,12 +7344,12 @@ and the other is not, the program is ill-formed. If both operands have arithmetic types, or one operand has integral type and the other operand has unscoped enumeration type, @@ -1776,7 +1769,7 @@ index ce24309d..0d2c5348 100644 other than from an integral type to a floating-point type, the program is ill-formed. -@@ -7389,13 +7390,13 @@ the other operand is of object pointer or array type, +@@ -7390,13 +7391,13 @@ the other operand is of object pointer or array type, array-to-pointer conversions\iref{conv.array}, pointer conversions\iref{conv.ptr}, and @@ -1792,7 +1785,7 @@ index ce24309d..0d2c5348 100644 \end{note} In this case, \tcode{p <=> q} is of type \tcode{std::strong_ordering} and -@@ -7484,7 +7485,7 @@ pointer conversions\iref{conv.ptr}, +@@ -7485,7 +7486,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring @@ -1801,7 +1794,7 @@ index ce24309d..0d2c5348 100644 After conversions, the operands shall have the same type. \pnum -@@ -7569,10 +7570,10 @@ same type after the specified conversions have been applied. +@@ -7570,10 +7571,10 @@ same type after the specified conversions have been applied. \indextext{comparison!pointer}% \indextext{comparison!pointer to function}% If at least one of the converted operands is a pointer, @@ -1816,7 +1809,7 @@ index ce24309d..0d2c5348 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -7589,7 +7590,8 @@ the result of the comparison is unspecified. +@@ -7590,7 +7591,8 @@ the result of the comparison is unspecified. \item Otherwise, if the pointers are both null, both point to the same \indextext{address}% @@ -1826,7 +1819,7 @@ index ce24309d..0d2c5348 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -7634,12 +7636,12 @@ bool b1 = (bx == cx); // unspecified +@@ -7635,12 +7637,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -1841,7 +1834,7 @@ index ce24309d..0d2c5348 100644 indirection with a hypothetical object of the associated class type were performed, otherwise they compare unequal. \begin{example} -@@ -7879,7 +7881,7 @@ Otherwise, if the second and third operand have different types and +@@ -7880,7 +7882,7 @@ Otherwise, if the second and third operand have different types and either has (possibly cv-qualified) class type, or if both are glvalues of the same value category and the same type except for cv-qualification, an attempt is made to @@ -1850,7 +1843,7 @@ index ce24309d..0d2c5348 100644 each of those operands to the type of the other. \begin{note} Properties such as access, whether an operand is a bit-field, or whether -@@ -7921,9 +7923,9 @@ denotes the cv-qualifiers of \tcode{T1}; +@@ -7922,9 +7924,9 @@ denotes the cv-qualifiers of \tcode{T1}; \item otherwise, the target type is the type that \tcode{E2} would have after applying the @@ -1863,7 +1856,7 @@ index ce24309d..0d2c5348 100644 standard conversions. \end{itemize} \end{itemize} -@@ -7964,8 +7966,8 @@ are used in place of the original operands for the remainder of this +@@ -7965,8 +7967,8 @@ are used in place of the original operands for the remainder of this subclause. \pnum @@ -1874,7 +1867,7 @@ index ce24309d..0d2c5348 100644 performed on the second and third operands. After those conversions, one of the following shall hold: -@@ -7974,16 +7976,16 @@ of the following shall hold: +@@ -7975,16 +7977,16 @@ of the following shall hold: that type and the result is copy-initialized using the selected operand. \item The second and third operands have arithmetic or enumeration type; @@ -1897,7 +1890,7 @@ index ce24309d..0d2c5348 100644 pointer type. \item One or both of the second and third operands have pointer-to-member type; -@@ -8167,7 +8169,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. +@@ -8168,7 +8170,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. \pnum \indextext{assignment!conversion by}% If the right operand is an expression, it is implicitly @@ -1906,7 +1899,7 @@ index ce24309d..0d2c5348 100644 operand. \pnum -@@ -8181,7 +8183,7 @@ resulting value of the bit-field is +@@ -8182,7 +8184,7 @@ resulting value of the bit-field is An assignment whose left operand is of a volatile-qualified type is deprecated\iref{depr.volatile.type} unless the (possibly parenthesized) assignment is a discarded-value expression or @@ -1915,7 +1908,7 @@ index ce24309d..0d2c5348 100644 \pnum The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} -@@ -8253,7 +8255,7 @@ The comma operator groups left-to-right. +@@ -8254,7 +8256,7 @@ The comma operator groups left-to-right. A pair of expressions separated by a comma is evaluated left-to-right; the left expression is @@ -1924,8 +1917,8 @@ index ce24309d..0d2c5348 100644 The left expression is sequenced before the right expression\iref{intro.execution}. \indextext{operator!side effects and comma}% -@@ -8287,7 +8289,7 @@ Certain contexts require expressions that satisfy additional - requirements as detailed in this subclause; other contexts have different +@@ -8295,7 +8297,7 @@ Certain contexts require expressions that satisfy additional + requirements as detailed in \ref{expr.const}; other contexts have different semantics depending on whether or not an expression satisfies these requirements. Expressions that satisfy these requirements, -assuming that copy elision\iref{class.copy.elision} is not performed, @@ -1933,19 +1926,7 @@ index ce24309d..0d2c5348 100644 are called constant expressions. \begin{note} Constant expressions can be evaluated -@@ -8450,9 +8452,9 @@ a temporary object of non-volatile const-qualified literal type - whose lifetime is extended\iref{class.temporary} - to that of a variable that is usable in constant expressions at $P$, - \item --a template parameter object\iref{temp.param}, -+a \link{template parameter}{temp.param} object, - \item --a string literal object\iref{lex.string}, -+a \link{string literal}{lex.string} object, - \item - a non-mutable subobject of any of the above, or - \item -@@ -8543,7 +8545,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. +@@ -8393,7 +8395,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -1954,7 +1935,7 @@ index ce24309d..0d2c5348 100644 it is applied to \begin{itemize} \item -@@ -8565,7 +8567,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -8415,7 +8417,7 @@ that refers to a non-active member of a union or a subobject thereof; \item an lvalue-to-rvalue conversion that is applied to @@ -1963,7 +1944,7 @@ index ce24309d..0d2c5348 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -8949,7 +8951,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -8864,7 +8866,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte Such expressions can be used as bit-field lengths\iref{class.bit}, as enumerator initializers if the underlying type is not fixed\iref{dcl.enum}, @@ -1972,16 +1953,28 @@ index ce24309d..0d2c5348 100644 \end{note} \pnum -@@ -9455,7 +9457,7 @@ if it is: +@@ -9082,9 +9084,9 @@ a temporary object of non-volatile const-qualified literal type + whose lifetime is extended\iref{class.temporary} + to that of a variable that is usable in constant expressions at $P$, + \item +-a template parameter object\iref{temp.param}, ++a \link{template parameter}{temp.param} object, + \item +-a string literal object\iref{lex.string}, ++a \link{string literal}{lex.string} object, + \item + a non-mutable subobject of any of the above, or + \item +@@ -9465,7 +9467,7 @@ if it is: a manifestly constant-evaluated expression, \item --a potentially-evaluated expression\iref{basic.def.odr}, -+a \deflinkx{potentially-evaluated}{potentially evaluated}{basic.def.odr} expression, +-a potentially evaluated expression\iref{basic.def.odr}, ++a \deflink{potentially evaluated}{basic.def.odr} expression, \item an immediate subexpression of a \grammarterm{braced-init-list}, -@@ -9482,7 +9484,9 @@ A function or variable is +@@ -9492,7 +9494,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -2030,7 +2023,7 @@ index 14b1e41e..c72d59ea 100644 the \oldconcept{TransformationTrait} requirements with a base characteristic of \tcode{integral_constant}. diff --git a/source/intro.tex b/source/intro.tex -index 5cb98d21..a81314b2 100644 +index b04be9ab..c9f5b61f 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -97,8 +97,8 @@ Reads of scalar objects are described in \ref{conv.lval} and @@ -2089,10 +2082,10 @@ index 5cb98d21..a81314b2 100644 translation units to form a complete \Cpp{} program\iref{lex.phases}.% \indextext{conformance requirements!library|)} diff --git a/source/iostreams.tex b/source/iostreams.tex -index d5d867ad..f0d3b942 100644 +index 2ec4c644..faf3c046 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -555,7 +555,7 @@ is initialized, +@@ -558,7 +558,7 @@ is initialized, returns \tcode{\&cout}. Its state is otherwise the same as required for @@ -2101,7 +2094,7 @@ index d5d867ad..f0d3b942 100644 \end{itemdescr} \indexlibraryglobal{cout}% -@@ -588,7 +588,7 @@ is initialized, +@@ -591,7 +591,7 @@ is initialized, \tcode{cerr.flags() \& unitbuf} is nonzero and \tcode{cerr.tie()} returns \tcode{\&cout}. Its state is otherwise the same as required for @@ -2110,7 +2103,7 @@ index d5d867ad..f0d3b942 100644 \end{itemdescr} \indexlibraryglobal{clog}% -@@ -625,7 +625,7 @@ is initialized, +@@ -628,7 +628,7 @@ is initialized, returns \tcode{\&wcout}. Its state is otherwise the same as required for @@ -2119,7 +2112,7 @@ index d5d867ad..f0d3b942 100644 \end{itemdescr} \indexlibraryglobal{wcout}% -@@ -658,7 +658,7 @@ is initialized, +@@ -661,7 +661,7 @@ is initialized, \tcode{wcerr.flags() \& unitbuf} is nonzero and \tcode{wcerr.tie()} returns \tcode{\&wcout}. Its state is otherwise the same as required for @@ -2128,7 +2121,7 @@ index d5d867ad..f0d3b942 100644 \end{itemdescr} \indexlibraryglobal{wclog}% -@@ -1378,7 +1378,7 @@ operate independently of the standard C streams. +@@ -1381,7 +1381,7 @@ operate independently of the standard C streams. \pnum \returns \tcode{true} @@ -2137,7 +2130,7 @@ index d5d867ad..f0d3b942 100644 was synchronized and otherwise returns \tcode{false}. The first time it is called, -@@ -1437,8 +1437,8 @@ static int xalloc(); +@@ -1440,8 +1440,8 @@ static int xalloc(); \pnum \remarks @@ -2148,7 +2141,7 @@ index d5d867ad..f0d3b942 100644 \end{itemdescr} \indexlibrarymember{iword}{ios_base}% -@@ -2025,12 +2025,12 @@ locale imbue(const locale& loc); +@@ -2028,12 +2028,12 @@ locale imbue(const locale& loc); \pnum \effects Calls @@ -2163,7 +2156,7 @@ index d5d867ad..f0d3b942 100644 \pnum \returns -@@ -3283,7 +3283,7 @@ streamsize in_avail(); +@@ -3286,7 +3286,7 @@ streamsize in_avail(); If a read position is available, returns \tcode{egptr() - gptr()}. Otherwise returns @@ -2172,7 +2165,7 @@ index d5d867ad..f0d3b942 100644 \end{itemdescr} \indexlibrarymember{snextc}{basic_streambuf}% -@@ -4308,7 +4308,7 @@ namespace std { +@@ -4311,7 +4311,7 @@ namespace std { template> class basic_istream : virtual public basic_ios { public: @@ -2181,7 +2174,7 @@ index d5d867ad..f0d3b942 100644 using char_type = charT; using int_type = traits::int_type; using pos_type = traits::pos_type; -@@ -4715,7 +4715,7 @@ basic_istream& operator>>(void*& val); +@@ -4718,7 +4718,7 @@ basic_istream& operator>>(void*& val); \pnum As in the case of the inserters, these extractors depend on the locale's @@ -2190,7 +2183,7 @@ index d5d867ad..f0d3b942 100644 stream data. These extractors behave as formatted input functions (as described in~\ref{istream.formatted.reqmts}). After a \tcode{sentry} object is constructed, the conversion occurs as if performed by the following code fragment, -@@ -5002,7 +5002,7 @@ basic_istream& operator>>(basic_streambuf* sb); +@@ -5005,7 +5005,7 @@ basic_istream& operator>>(basic_streambuf* sb); \begin{itemdescr} \pnum \effects @@ -2199,7 +2192,7 @@ index d5d867ad..f0d3b942 100644 If \tcode{sb} is null, calls \tcode{setstate(fail\-bit)}, which may throw -@@ -5397,7 +5397,7 @@ characters and discards them. +@@ -5400,7 +5400,7 @@ characters and discards them. Characters are extracted until any of the following occurs: \begin{itemize} \item @@ -2208,7 +2201,7 @@ index d5d867ad..f0d3b942 100644 and \tcode{n} characters have been extracted so far; \item -@@ -5748,12 +5748,12 @@ template +@@ -5751,12 +5751,12 @@ template \begin{itemdescr} \pnum \effects @@ -2223,7 +2216,7 @@ index d5d867ad..f0d3b942 100644 If \tcode{ws} stops extracting characters because there are no more available it sets -@@ -5778,7 +5778,7 @@ template +@@ -5781,7 +5781,7 @@ template \pnum \constraints The expression \tcode{is >> std::forward(x)} is well-formed @@ -2232,7 +2225,7 @@ index d5d867ad..f0d3b942 100644 \tcode{Istream} is publicly and unambiguously derived from \tcode{ios_base}. \pnum -@@ -5846,7 +5846,7 @@ explicit basic_iostream(basic_streambuf* sb); +@@ -5849,7 +5849,7 @@ explicit basic_iostream(basic_streambuf* sb); Initializes the base class subobjects with \tcode{basic_istream(sb)}\iref{istream} and @@ -2241,7 +2234,7 @@ index d5d867ad..f0d3b942 100644 \pnum \ensures -@@ -5932,7 +5932,7 @@ namespace std { +@@ -5935,7 +5935,7 @@ namespace std { template> class basic_ostream : virtual public basic_ios { public: @@ -2250,7 +2243,7 @@ index d5d867ad..f0d3b942 100644 using char_type = charT; using int_type = traits::int_type; using pos_type = traits::pos_type; -@@ -6702,7 +6702,7 @@ return *this << s; +@@ -6705,7 +6705,7 @@ return *this << s; \end{codeblock} where \tcode{s} is an \impldef{NTCTS in \tcode{basic_ostream\& op\-er\-ator<<(nullptr_t)}} @@ -2259,7 +2252,7 @@ index d5d867ad..f0d3b942 100644 \end{itemdescr} \rSec4[ostream.inserters.character]{Character inserter function templates} -@@ -6726,7 +6726,7 @@ template +@@ -6729,7 +6729,7 @@ template \begin{itemdescr} \pnum \effects @@ -2268,7 +2261,7 @@ index d5d867ad..f0d3b942 100644 of \tcode{out}. Constructs a character sequence \tcode{seq}. If \tcode{c} has type \tcode{char} -@@ -7479,7 +7479,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. +@@ -7482,7 +7482,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. \pnum \effects The expression \tcode{in >> get_money(mon, intl)} described below @@ -2277,7 +2270,7 @@ index d5d867ad..f0d3b942 100644 \pnum \returns -@@ -7524,7 +7524,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. +@@ -7527,7 +7527,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. An object of unspecified type such that if \tcode{out} is an object of type \tcode{basic_ostream} then the expression \tcode{out << put_money(mon, intl)} behaves as a @@ -2286,7 +2279,7 @@ index d5d867ad..f0d3b942 100644 \tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as: \begin{codeblock} -@@ -7648,7 +7648,7 @@ of \tcode{basic_ostream} with member type \tcode{char_type} the same as +@@ -7651,7 +7651,7 @@ of \tcode{basic_ostream} with member type \tcode{char_type} the same as \tcode{charT} and with member type \tcode{traits_type}, which in the second and third forms is the same as \tcode{traits}, then the expression \tcode{out << quoted(s, delim, escape)} @@ -2295,7 +2288,7 @@ index d5d867ad..f0d3b942 100644 of \tcode{out}. This forms a character sequence \tcode{seq}, initially consisting of the following elements: \begin{itemize} -@@ -14126,7 +14126,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. +@@ -14129,7 +14129,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. \pnum \begin{note} @@ -2304,7 +2297,7 @@ index d5d867ad..f0d3b942 100644 for how the value types above and their encodings convert to \tcode{path::value_type} and its encoding. \end{note} -@@ -14738,7 +14738,7 @@ and print functions\iref{print.fun}. +@@ -14741,7 +14741,7 @@ and print functions\iref{print.fun}. \pnum Generic format observer functions return strings formatted according to the @@ -2313,7 +2306,7 @@ index d5d867ad..f0d3b942 100644 A single slash (\tcode{'/'}) character is used as the \grammarterm{directory-separator}. -@@ -15294,11 +15294,11 @@ If normalization\iref{fs.path.generic} is needed +@@ -15297,11 +15297,11 @@ If normalization\iref{fs.path.generic} is needed \indexlibrarymember{path}{iterator}% \pnum Path iterators iterate over the elements of the pathname @@ -2327,7 +2320,7 @@ index d5d867ad..f0d3b942 100644 except that, for dereferenceable iterators \tcode{a} and \tcode{b} of type \tcode{path::iterator} -@@ -16655,7 +16655,7 @@ If a file is removed from or added to a directory after the +@@ -16658,7 +16658,7 @@ If a file is removed from or added to a directory after the construction of a \tcode{directory_iterator} for the directory, it is unspecified whether or not subsequently incrementing the iterator will ever result in an iterator referencing the removed or added directory entry. See @@ -2336,7 +2329,7 @@ index d5d867ad..f0d3b942 100644 \end{note} \rSec3[fs.dir.itr.members]{Members} -@@ -16747,7 +16747,7 @@ directory_iterator& increment(error_code& ec); +@@ -16750,7 +16750,7 @@ directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -2345,7 +2338,7 @@ index d5d867ad..f0d3b942 100644 \pnum \returns -@@ -17059,7 +17059,7 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17062,7 +17062,7 @@ recursive_directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -2354,7 +2347,7 @@ index d5d867ad..f0d3b942 100644 except that: \begin{itemize} -@@ -17650,7 +17650,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin +@@ -17653,7 +17653,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin \begin{itemdescr} \pnum \effects @@ -2363,7 +2356,7 @@ index d5d867ad..f0d3b942 100644 \pnum \ensures -@@ -17726,7 +17726,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, +@@ -17729,7 +17729,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, \begin{itemdescr} \pnum \effects @@ -2372,7 +2365,7 @@ index d5d867ad..f0d3b942 100644 \pnum \ensures -@@ -17759,7 +17759,7 @@ path filesystem::current_path(error_code& ec); +@@ -17762,7 +17762,7 @@ path filesystem::current_path(error_code& ec); \returns The absolute path of the current working directory, whose pathname in the native format is @@ -2381,7 +2374,7 @@ index d5d867ad..f0d3b942 100644 The signature with argument \tcode{ec} returns \tcode{path()} if an error occurs. -@@ -17790,7 +17790,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; +@@ -17793,7 +17793,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; \begin{itemdescr} \pnum \effects @@ -2390,7 +2383,7 @@ index d5d867ad..f0d3b942 100644 \pnum \ensures -@@ -17901,7 +17901,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. +@@ -17904,7 +17904,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. \item If \tcode{is_regular_file(p)}, the size in bytes of the file \tcode{p} resolves to, determined as if by the value of the POSIX \tcode{stat} @@ -2399,7 +2392,7 @@ index d5d867ad..f0d3b942 100644 \item Otherwise, the result is \impldef{result of \tcode{filesystem::file_size}}. \end{itemize} -@@ -18283,7 +18283,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time, +@@ -18286,7 +18286,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time, \pnum \effects Sets the time of last data modification of the file @@ -2409,19 +2402,10 @@ index d5d867ad..f0d3b942 100644 \pnum \throws diff --git a/source/iterators.tex b/source/iterators.tex -index cbfa0c2a..3deb3e2b 100644 +index 9e972f19..909e4ed0 100644 --- a/source/iterators.tex +++ b/source/iterators.tex -@@ -741,7 +741,7 @@ is undefined. - - \pnum - \indextext{iterator!constexpr}% --Iterators meet the \defn{constexpr iterator} requirements -+Iterators meet the \defnadjx{constexpr}{iterators}{iterator} requirements - if all operations provided to meet iterator category requirements - are constexpr functions. - \begin{note} -@@ -6865,7 +6865,7 @@ ostream_iterator& operator++(int); +@@ -6868,7 +6868,7 @@ ostream_iterator& operator++(int); The class template \tcode{istreambuf_iterator} @@ -2430,7 +2414,7 @@ index cbfa0c2a..3deb3e2b 100644 reads successive \textit{characters} from the streambuf for which it was constructed. -@@ -6990,7 +6990,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; +@@ -6993,7 +6993,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; Initializes \tcode{sbuf_} with \keyword{nullptr}. \end{itemdescr} @@ -2438,7 +2422,7 @@ index cbfa0c2a..3deb3e2b 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(istream_type& s) noexcept; -@@ -7002,7 +7001,6 @@ istreambuf_iterator(istream_type& s) noexcept; +@@ -7005,7 +7004,6 @@ istreambuf_iterator(istream_type& s) noexcept; Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2446,7 +2430,7 @@ index cbfa0c2a..3deb3e2b 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(streambuf_type* s) noexcept; -@@ -7014,7 +7012,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; +@@ -7017,7 +7015,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; Initializes \tcode{sbuf_} with \tcode{s}. \end{itemdescr} @@ -2454,7 +2438,7 @@ index cbfa0c2a..3deb3e2b 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept; -@@ -7165,7 +7162,6 @@ is not a null pointer. +@@ -7168,7 +7165,6 @@ is not a null pointer. Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2463,7 +2447,7 @@ index cbfa0c2a..3deb3e2b 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index ed45edd6..ba052c96 100644 +index 7547b4aa..d662f889 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2487,7 +2471,7 @@ index ed45edd6..ba052c96 100644 literal \placeholder{L} is treated as a call of the form diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 185d42dd..4e6c7fa2 100644 +index abe4ecf3..0b2c55f9 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2590,7 +2574,7 @@ index 185d42dd..4e6c7fa2 100644 \begin{oldconcepttable}{EqualityComparable}{}{cpp17.equalitycomparable} {x{1in}x{1in}p{3in}} -@@ -1947,13 +1947,13 @@ evaluated in the context described below, and +@@ -1946,13 +1946,13 @@ evaluated in the context described below, and \pnum The context in which \tcode{swap(t, u)} and \tcode{swap(u, t)} are evaluated shall @@ -2607,7 +2591,7 @@ index 185d42dd..4e6c7fa2 100644 \end{itemize} \begin{note} If \tcode{T} and \tcode{U} are both fundamental types or arrays of -@@ -2056,8 +2056,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in +@@ -2055,8 +2055,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in \end{note} \pnum @@ -2619,7 +2603,7 @@ index 185d42dd..4e6c7fa2 100644 had been evaluated in place of \tcode{p}. \pnum -@@ -2160,7 +2161,7 @@ as the memory allocation and deallocation primitives for it. All of the +@@ -2159,7 +2160,7 @@ as the memory allocation and deallocation primitives for it. All of the string types\iref{strings}, containers\iref{containers} (except \tcode{array} and \tcode{inplace_vector}), string buffers and string streams\iref{input.output}, and @@ -2628,7 +2612,7 @@ index 185d42dd..4e6c7fa2 100644 allocators. \pnum -@@ -2986,7 +2987,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, +@@ -2985,7 +2986,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, whether or not \tcode{T} is a complete type: \begin{itemize} \item \tcode{X} is a complete type, and @@ -2637,7 +2621,7 @@ index 185d42dd..4e6c7fa2 100644 other than \tcode{value_type} are complete types. \end{itemize} -@@ -2997,11 +2998,11 @@ whether or not \tcode{T} is a complete type: +@@ -2996,11 +2997,11 @@ whether or not \tcode{T} is a complete type: \pnum Subclause \ref{constraints} describes restrictions on \Cpp{} programs that use the facilities of the \Cpp{} standard library. The following subclauses specify constraints on the @@ -2653,7 +2637,7 @@ index 185d42dd..4e6c7fa2 100644 \rSec3[namespace.constraints]{Namespace use} -@@ -3404,7 +3405,7 @@ are reserved for use by \Cpp{} implementations. +@@ -3403,7 +3404,7 @@ are reserved for use by \Cpp{} implementations. If a file with a name equivalent to the derived file name for one of the \Cpp{} standard library headers is not provided as part of the implementation, and a file with that name @@ -2662,7 +2646,7 @@ index 185d42dd..4e6c7fa2 100644 the behavior is undefined.% \indextext{source file}% \indextext{undefined} -@@ -3575,7 +3576,7 @@ specified as being shareable without data races or the user supplies a locking m +@@ -3574,7 +3575,7 @@ specified as being shareable without data races or the user supplies a locking m \pnum If an object of a standard library type is accessed, and @@ -2671,7 +2655,7 @@ index 185d42dd..4e6c7fa2 100644 does not happen before the access, or the access does not happen before the end of the object's lifetime, the behavior is undefined unless otherwise specified. -@@ -3641,7 +3642,7 @@ Every such entity shall be defined such that any header that defines it may be +@@ -3640,7 +3641,7 @@ Every such entity shall be defined such that any header that defines it may be included after any other header that also defines it\iref{basic.def.odr}. \pnum @@ -2680,7 +2664,7 @@ index 185d42dd..4e6c7fa2 100644 shall include only their corresponding \Cpp{} standard library header, as described in~\ref{headers}. -@@ -3669,7 +3670,7 @@ explicitly stated otherwise. +@@ -3668,7 +3669,7 @@ explicitly stated otherwise. It is unspecified whether any non-member functions in the \Cpp{} standard library are defined as @@ -2689,7 +2673,7 @@ index 185d42dd..4e6c7fa2 100644 \pnum A call to a non-member function signature -@@ -3697,7 +3698,7 @@ The phrase ``unless otherwise specified'' applies to cases such as +@@ -3696,7 +3697,7 @@ The phrase ``unless otherwise specified'' applies to cases such as the swappable with requirements\iref{swappable.requirements}. The exception for overloaded operators allows argument-dependent lookup in cases like that of @@ -2698,7 +2682,7 @@ index 185d42dd..4e6c7fa2 100644 \effects \begin{codeblock} -@@ -3712,7 +3713,7 @@ return *this; +@@ -3711,7 +3712,7 @@ return *this; \pnum It is unspecified whether any member functions in the \Cpp{} standard library are defined as @@ -2707,7 +2691,7 @@ index 185d42dd..4e6c7fa2 100644 \pnum For a non-virtual member function described in the \Cpp{} standard library, -@@ -3791,8 +3792,8 @@ library may be recursively reentered. +@@ -3790,8 +3791,8 @@ library may be recursively reentered. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -2718,7 +2702,7 @@ index 185d42dd..4e6c7fa2 100644 Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. -@@ -3835,7 +3836,7 @@ not visible to users and are protected against data races. +@@ -3834,7 +3835,7 @@ not visible to users and are protected against data races. \pnum Unless otherwise specified, \Cpp{} standard library functions shall perform all operations solely within the current thread if those operations have effects that are @@ -2727,7 +2711,7 @@ index 185d42dd..4e6c7fa2 100644 \pnum \begin{note} -@@ -3950,7 +3951,7 @@ potentially-throwing exception specification} exceptions. +@@ -3949,7 +3950,7 @@ potentially-throwing exception specification} exceptions. \begin{footnote} In particular, they can report a failure to allocate storage by throwing an exception of type @@ -2737,7 +2721,7 @@ index 185d42dd..4e6c7fa2 100644 \tcode{bad_alloc}\iref{bad.alloc}. \end{footnote} diff --git a/source/limits.tex b/source/limits.tex -index bdc1f3de..efd4eb00 100644 +index e0596a32..877f21f3 100644 --- a/source/limits.tex +++ b/source/limits.tex @@ -120,7 +120,7 @@ during template argument deduction\iref{temp.deduct} [1\,024]. @@ -2750,7 +2734,7 @@ index bdc1f3de..efd4eb00 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index fbc3cea8..bbf484e7 100644 +index 31a2e217..214757e4 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -3235,7 +3219,7 @@ index fe6c4d08..9533e291 100644 and \tcode{long} diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index b9809ae6..9747c367 100644 +index f8bd9728..6624a7f2 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -512,7 +512,7 @@ shall not appear in any context not mentioned in this subclause. @@ -3281,14 +3265,14 @@ index b9809ae6..9747c367 100644 @@ -2447,7 +2447,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. \indextext{__stdcpp_threads__@\mname{STDCPP_THREADS}}% \mname{STDCPP_THREADS}\\ - Defined, and has the value integer literal 1, if and only if a program + Defined, and has the value integer literal \tcode{1}, if and only if a program -can have more than one thread of execution\iref{intro.multithread}. +can have more than one \link{thread of execution}{intro.multithread}. \end{description} diff --git a/source/statements.tex b/source/statements.tex -index 8b9e733d..247b8bce 100644 +index 9163c191..852e314d 100644 --- a/source/statements.tex +++ b/source/statements.tex @@ -219,7 +219,7 @@ Expression statements have the form @@ -3318,8 +3302,8 @@ index 8b9e733d..247b8bce 100644 \keyword{case} constant-expression \terminal{:} \end{ncbnf} where the \grammarterm{constant-expression} shall be --a converted constant expression\iref{expr.const} of the -+a converted \link{constant expression}{expr.const} of the +-a converted constant expression\iref{expr.const.const} of the ++a \deflinkx{converted constant expression}{expression!converted constant}{expr.const.const} of the adjusted type of the switch condition. No two of the case constants in the same switch shall have the same value after conversion. @@ -3423,7 +3407,7 @@ index 3bc1e026..749c23d9 100644 \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index f5a5ed3a..98842079 100644 +index 203a1bf4..b0c75171 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3531,7 +3515,7 @@ index f5a5ed3a..98842079 100644 dependent. The result of applying the \tcode{offsetof} macro to a static data member or a function member is undefined. No operation invoked by the \tcode{offsetof} macro shall throw an exception and -@@ -1102,7 +1089,7 @@ the specialization on the unqualified type \tcode{T}. +@@ -1103,7 +1090,7 @@ the specialization on the unqualified type \tcode{T}. \pnum Non-arithmetic standard types, such as @@ -3540,7 +3524,7 @@ index f5a5ed3a..98842079 100644 \rSec3[numeric.limits.members]{\tcode{numeric_limits} members} -@@ -2144,7 +2131,7 @@ The program is terminated without executing destructors for objects with automat +@@ -2107,7 +2094,7 @@ The program is terminated without executing destructors for objects with automat thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{_Exit}}% @@ -3549,7 +3533,7 @@ index f5a5ed3a..98842079 100644 \end{itemdescr} \indexlibraryglobal{abort}% -@@ -2164,7 +2151,7 @@ automatic, thread, or static storage +@@ -2127,7 +2114,7 @@ automatic, thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{abort}}% @@ -3558,7 +3542,7 @@ index f5a5ed3a..98842079 100644 \end{itemdescr} \indexlibraryglobal{atexit}% -@@ -2181,7 +2168,8 @@ The +@@ -2144,7 +2131,8 @@ The functions register the function pointed to by \tcode{f} to be called without arguments at normal program termination. It is unspecified whether a call to \tcode{atexit()} that does not @@ -3568,7 +3552,7 @@ index f5a5ed3a..98842079 100644 \begin{note} The \tcode{atexit()} functions do not introduce a data race\iref{res.on.data.races}. -@@ -2275,7 +2263,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; +@@ -2238,7 +2226,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; The \tcode{at_quick_exit()} functions register the function pointed to by \tcode{f} to be called without arguments when \tcode{quick_exit} is called. It is unspecified whether a call to \tcode{at_quick_exit()} that does not @@ -3578,7 +3562,7 @@ index f5a5ed3a..98842079 100644 \begin{note} The \tcode{at_quick_exit()} functions do not introduce a -@@ -2327,7 +2316,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s +@@ -2290,7 +2279,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s \pnum \remarks \indextext{signal-safe!\idxcode{quick_exit}}% @@ -3587,7 +3571,7 @@ index f5a5ed3a..98842079 100644 when the functions registered with \tcode{at_quick_exit} are. \end{itemdescr} -@@ -2454,7 +2443,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); +@@ -2417,7 +2406,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3596,7 +3580,7 @@ index f5a5ed3a..98842079 100644 called by a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -2490,7 +2479,7 @@ a null pointer value, throws +@@ -2453,7 +2442,7 @@ a null pointer value, throws \tcode{bad_alloc}. \item Otherwise, the function calls the current @@ -3605,7 +3589,7 @@ index f5a5ed3a..98842079 100644 If the called function returns, the loop repeats. \item The loop terminates when an attempt to allocate the requested storage is -@@ -2712,7 +2701,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); +@@ -2675,7 +2664,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3614,7 +3598,7 @@ index f5a5ed3a..98842079 100644 called by the array form of a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -3025,8 +3014,8 @@ versions of \tcode{operator delete}, the C standard library function +@@ -2988,8 +2977,8 @@ versions of \tcode{operator delete}, the C standard library function introduce a data race\iref{res.on.data.races}. Calls to these functions that allocate or deallocate a particular unit of storage shall occur in a single total order, and each such deallocation call @@ -3625,7 +3609,7 @@ index f5a5ed3a..98842079 100644 \rSec2[alloc.errors]{Storage allocation errors} -@@ -3180,8 +3169,8 @@ template constexpr T* launder(T* p) noexcept; +@@ -3143,8 +3132,8 @@ template constexpr T* launder(T* p) noexcept; \pnum \expects \tcode{p} represents the address \placeholder{A} of a byte in memory. @@ -3636,7 +3620,7 @@ index f5a5ed3a..98842079 100644 is located at the address \placeholder{A}. All bytes of storage that would be reachable through\iref{basic.compound} the result -@@ -3394,7 +3383,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. +@@ -3357,7 +3346,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. \pnum \remarks @@ -3646,7 +3630,7 @@ index f5a5ed3a..98842079 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. \end{itemdescr} -@@ -3971,7 +3961,8 @@ the ordinary literal encoding\iref{lex.ccon}. +@@ -3934,7 +3924,8 @@ the ordinary literal encoding\iref{lex.ccon}. \pnum \remarks @@ -3656,7 +3640,7 @@ index f5a5ed3a..98842079 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. The return value remains valid until the exception object from which -@@ -4122,7 +4113,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread. +@@ -4085,7 +4076,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread. \remarks When \tcode{uncaught_exceptions() > 0}, throwing an exception can result in a call of the function @@ -3665,7 +3649,7 @@ index f5a5ed3a..98842079 100644 \end{itemdescr} \rSec2[propagation]{Exception propagation} -@@ -4185,8 +4176,9 @@ constexpr exception_ptr current_exception() noexcept; +@@ -4148,8 +4139,9 @@ constexpr exception_ptr current_exception() noexcept; \begin{itemdescr} \pnum \returns @@ -3677,7 +3661,7 @@ index f5a5ed3a..98842079 100644 handled exception, or a null \tcode{exception_ptr} object if no exception is being handled. The referenced object shall remain valid at least as long as there is an \tcode{exception_ptr} object that refers to it. -@@ -4776,7 +4768,7 @@ constexpr bool empty() const noexcept; +@@ -4739,7 +4731,7 @@ constexpr bool empty() const noexcept; \pnum The header \libheaderdef{compare} specifies types, objects, and functions for use primarily in connection with @@ -3686,7 +3670,7 @@ index f5a5ed3a..98842079 100644 \indexlibraryglobal{is_eq}% \indexlibraryglobal{is_neq}% -@@ -6369,7 +6361,7 @@ environment. +@@ -6329,7 +6321,7 @@ environment. \end{note} \pnum @@ -3696,7 +3680,7 @@ index f5a5ed3a..98842079 100644 calls to the \tcode{setlocale} function or with calls to functions that are affected by the current C locale. The implementation shall behave as if no diff --git a/source/templates.tex b/source/templates.tex -index 6cf798ea..d7f6a4d9 100644 +index 467b190a..cf9f5e15 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -713,7 +713,7 @@ struct A {}; @@ -3952,8 +3936,8 @@ index 6cf798ea..d7f6a4d9 100644 \item an instantiation uses a default argument or default template argument that had not been defined at the point at which the template was defined, or --\item constant expression evaluation\iref{expr.const} within the template -+\item \link{constant expression evaluation}{expr.const} within the template +-\item constant expression evaluation\iref{expr.const.core} within the template ++\item \link{constant expression evaluation}{expr.const.core} within the template instantiation uses \begin{itemize} \item the value of a const object of integral or unscoped enumeration type or @@ -3997,12 +3981,12 @@ index 6cf798ea..d7f6a4d9 100644 instantiation is value-dependent. An expression of the form \tcode{\&}\grammarterm{cast-expression} is also value-dependent if evaluating \grammarterm{cast-expression} --as a core constant expression\iref{expr.const} succeeds and -+as a \deflinkx{core constant expression}{expression!core constant}{expr.const} succeeds and +-as a core constant expression\iref{expr.const.core} succeeds and ++as a \deflinkx{core constant expression}{expression!core constant}{expr.const.core} succeeds and the result of the evaluation refers to a templated entity that is an object with static or thread storage duration or a member function. -@@ -6245,7 +6245,7 @@ within a translation unit. +@@ -6253,7 +6253,7 @@ within a translation unit. A specialization for any template may have points of instantiation in multiple translation units. If two different points of instantiation give a template specialization @@ -4011,7 +3995,7 @@ index 6cf798ea..d7f6a4d9 100644 the program is ill-formed, no diagnostic required. \pnum -@@ -6556,7 +6556,7 @@ of type +@@ -6564,7 +6564,7 @@ of type \pnum If a function declaration acquired its function type through @@ -4020,7 +4004,7 @@ index 6cf798ea..d7f6a4d9 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -6637,7 +6637,7 @@ X ch; // error: incomplete type \tcode{X} +@@ -6645,7 +6645,7 @@ X ch; // error: incomplete type \tcode{X} \end{example} \begin{note} Within a template declaration, @@ -4029,7 +4013,7 @@ index 6cf798ea..d7f6a4d9 100644 a local class are never considered to be entities that can be separately instantiated (this includes their default arguments, \grammarterm{noexcept-specifier}{s}, and non-static data member -@@ -6815,7 +6815,7 @@ void x() { +@@ -6823,7 +6823,7 @@ void x() { \end{example} \pnum @@ -4038,7 +4022,7 @@ index 6cf798ea..d7f6a4d9 100644 can be determined without instantiating a class template definition, it is unspecified whether that instantiation actually takes place. \begin{example} -@@ -7152,7 +7152,7 @@ If an entity is the subject of both an explicit instantiation declaration +@@ -7160,7 +7160,7 @@ If an entity is the subject of both an explicit instantiation declaration and an explicit instantiation definition in the same translation unit, the definition shall follow the declaration. An entity that is the subject of an explicit instantiation declaration and that is also used @@ -4047,7 +4031,7 @@ index 6cf798ea..d7f6a4d9 100644 in the translation unit shall be the subject of an explicit instantiation definition somewhere in the program; otherwise the program is ill-formed, no diagnostic required. -@@ -8217,7 +8217,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. +@@ -8225,7 +8225,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. In the following example, assuming a \tcode{signed char} cannot represent the value 1000, @@ -4056,7 +4040,7 @@ index 6cf798ea..d7f6a4d9 100644 would be required to convert the \grammarterm{template-argument} of type \tcode{int} to \tcode{signed char}, -@@ -8326,8 +8326,8 @@ is not a reference type: +@@ -8334,8 +8334,8 @@ is not a reference type: \item If \tcode{A} @@ -4067,7 +4051,7 @@ index 6cf798ea..d7f6a4d9 100644 \tcode{A} for type deduction; otherwise, -@@ -8335,7 +8335,7 @@ otherwise, +@@ -8343,7 +8343,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -4076,7 +4060,7 @@ index 6cf798ea..d7f6a4d9 100644 of \tcode{A} for type -@@ -8431,8 +8431,8 @@ The transformed \tcode{A} +@@ -8439,8 +8439,8 @@ The transformed \tcode{A} can be another pointer or pointer-to-member type that can be converted to the deduced \tcode{A} @@ -4087,7 +4071,7 @@ index 6cf798ea..d7f6a4d9 100644 \item If -@@ -8565,7 +8565,7 @@ void test() { +@@ -8573,7 +8573,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -4096,7 +4080,7 @@ index 6cf798ea..d7f6a4d9 100644 If there is a target, the function template's function type and the target type are used as the types of -@@ -8612,7 +8612,7 @@ is not a reference type: +@@ -8620,7 +8620,7 @@ is not a reference type: If \tcode{P} is an array type, the pointer type produced by the @@ -4105,7 +4089,7 @@ index 6cf798ea..d7f6a4d9 100644 \tcode{P} for type deduction; otherwise, -@@ -8620,7 +8620,7 @@ deduction; otherwise, +@@ -8628,7 +8628,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -4114,7 +4098,7 @@ index 6cf798ea..d7f6a4d9 100644 \tcode{P} for type deduction; otherwise, -@@ -8711,7 +8711,7 @@ after a function has been selected. +@@ -8719,7 +8719,7 @@ after a function has been selected. In the context of a call to a conversion function, the return types of the conversion function templates are used. \item @@ -4123,7 +4107,7 @@ index 6cf798ea..d7f6a4d9 100644 type is used. \end{itemize} -@@ -9227,7 +9227,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the +@@ -9235,7 +9235,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the template argument list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by $\texttt{P}_i$. @@ -4132,7 +4116,7 @@ index 6cf798ea..d7f6a4d9 100644 originally a pack expansion: \begin{itemize} \item if \tcode{P} does not contain a template argument corresponding to -@@ -9290,7 +9290,7 @@ each remaining parameter type in the parameter-type-list +@@ -9298,7 +9298,7 @@ each remaining parameter type in the parameter-type-list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by the function parameter pack. @@ -4141,7 +4125,7 @@ index 6cf798ea..d7f6a4d9 100644 originally a function parameter pack: \begin{itemize} \item if \tcode{P} does not contain a function parameter type corresponding to -@@ -9628,8 +9628,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod +@@ -9636,8 +9636,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod In a declaration whose \grammarterm{declarator-id} refers to a specialization of a function template, template argument deduction is performed to identify the specialization to which the declaration refers. Specifically, this is done @@ -4153,7 +4137,7 @@ index 6cf798ea..d7f6a4d9 100644 \tcode{operator new}\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index 7480badf..0d7a40ef 100644 +index bfd73672..9d7efb72 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4168,15 +4152,15 @@ index 7480badf..0d7a40ef 100644 @@ -294,8 +294,8 @@ exception is thrown then a lock shall not have been acquired for the current exe A type \tcode{L} meets the \defnoldconcept{TimedLockable} requirements if it meets the \oldconcept{Lockable} requirements and the following expressions are well-formed and have the specified semantics - (\tcode{m} denotes a value of type \tcode{L}, \tcode{rel_time} denotes a value of an --instantiation of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes a value --of an instantiation of \tcode{time_point}\iref{time.point}). -+instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes a value -+of an instantiation of \link{\tcode{time_point}}{time.point}). + (\tcode{m} denotes a value of type \tcode{L}, \tcode{rel_time} denotes a value of a +-specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes a value +-of a specialization of \tcode{time_point}\iref{time.point}). ++specialization of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes a value ++of a specialization of \link{\tcode{time_point}}{time.point}). \begin{itemdecl} m.try_lock_for(rel_time) -@@ -7288,7 +7288,7 @@ namespace std { +@@ -7287,7 +7287,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -4185,8 +4169,8 @@ index 7480badf..0d7a40ef 100644 An execution agent \term{owns} a mutex from the time it successfully calls one of the lock functions until it calls unlock. Mutexes can be either recursive or non-recursive, and can grant simultaneous ownership to one or many execution agents. Both -@@ -7332,7 +7332,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on - a single mutex appears to occur in a single total order. +@@ -7331,7 +7331,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on + a single mutex appear to occur in a single total order. \begin{note} This -can be viewed as the modification order\iref{intro.multithread} of the @@ -4194,7 +4178,7 @@ index 7480badf..0d7a40ef 100644 mutex. \end{note} \begin{note} -@@ -7412,7 +7412,7 @@ in the absence of contending mutex acquisitions. +@@ -7411,7 +7411,7 @@ in the absence of contending mutex acquisitions. \pnum \sync If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations @@ -4203,7 +4187,7 @@ index 7480badf..0d7a40ef 100644 \begin{note} Since \tcode{lock()} does not synchronize with a failed subsequent \tcode{try_lock()}, the visibility rules are weak enough that little would be -@@ -7448,7 +7448,7 @@ Releases the calling thread's ownership of the mutex. +@@ -7447,7 +7447,7 @@ Releases the calling thread's ownership of the mutex. \pnum \sync @@ -4212,19 +4196,19 @@ index 7480badf..0d7a40ef 100644 lock operations that obtain ownership on the same object. \pnum -@@ -7577,9 +7577,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, +@@ -7576,9 +7576,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, meet the requirements set out below. In this description, \tcode{m} denotes an object of a mutex type, - \tcode{rel_time} denotes an object of an --instantiation of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes an -+instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes an - object of an --instantiation of \tcode{time_point}\iref{time.point}. -+instantiation of \link{\tcode{time_point}}{time.point}. + \tcode{rel_time} denotes an object of a +-specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes an ++specialization of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes an + object of a +-specialization of \tcode{time_point}\iref{time.point}. ++specialization of \link{\tcode{time_point}}{time.point}. \begin{note} The timed mutex types meet the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. -@@ -7869,7 +7869,7 @@ Releases a shared lock on the mutex held by the calling thread. +@@ -7868,7 +7868,7 @@ Releases a shared lock on the mutex held by the calling thread. \pnum \sync @@ -4233,16 +4217,16 @@ index 7480badf..0d7a40ef 100644 \tcode{lock()} operations that obtain ownership on the same object. \pnum -@@ -7973,7 +7973,7 @@ meet the requirements set out below. In this description, - \tcode{rel_time} denotes an object of an instantiation of +@@ -7972,7 +7972,7 @@ meet the requirements set out below. In this description, + \tcode{rel_time} denotes an object of a specialization of \tcode{duration}\iref{time.duration}, and - \tcode{abs_time} denotes an object of an instantiation of + \tcode{abs_time} denotes an object of a specialization of -\tcode{time_point}\iref{time.point}. +\link{\tcode{time_point}}{time.point}. \begin{note} The shared timed mutex types meet the \oldconcept{SharedTimedLockable} requirements\iref{thread.req.lockable.shared.timed}. -@@ -8184,7 +8184,7 @@ namespace std { +@@ -8183,7 +8183,7 @@ namespace std { \pnum An object of type \tcode{lock_guard} controls the ownership of a lockable object within a scope. A \tcode{lock_guard} object maintains ownership of a lockable @@ -4251,7 +4235,7 @@ index 7480badf..0d7a40ef 100644 The behavior of a program is undefined if the lockable object referenced by \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} -@@ -8257,7 +8257,7 @@ namespace std { +@@ -8256,7 +8256,7 @@ namespace std { \pnum An object of type \tcode{scoped_lock} controls the ownership of lockable objects within a scope. A \tcode{scoped_lock} object maintains ownership of lockable @@ -4260,7 +4244,7 @@ index 7480badf..0d7a40ef 100644 The behavior of a program is undefined if the lockable objects referenced by \tcode{pm} do not exist for the entire lifetime of the \tcode{scoped_lock} object. -@@ -9414,7 +9414,7 @@ earlier returning execution. +@@ -9413,7 +9413,7 @@ earlier returning execution. \pnum \sync For any given \tcode{once_flag}: all active executions occur in a total @@ -4269,7 +4253,7 @@ index 7480badf..0d7a40ef 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -11380,22 +11380,21 @@ the state object. +@@ -11379,22 +11379,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4296,7 +4280,7 @@ index 7480badf..0d7a40ef 100644 \begin{note} This explicitly specifies that the result of the shared state is visible in the objects that reference this state in the sense of data race -@@ -11714,8 +11713,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -11713,8 +11712,8 @@ The class template \tcode{future} defines a type for asynchronous return objects do not share their shared state with other asynchronous return objects. A default-constructed \tcode{future} object has no shared state. A \tcode{future} object with shared state can be created by @@ -4307,7 +4291,7 @@ index 7480badf..0d7a40ef 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -12025,7 +12024,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -12024,7 +12023,7 @@ object has no shared state. A \tcode{shared_future} object with shared state can be created by conversion from a \tcode{future} object and shares its shared state with the @@ -4316,7 +4300,7 @@ index 7480badf..0d7a40ef 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -12474,7 +12473,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -12473,7 +12472,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -4326,7 +4310,7 @@ index 7480badf..0d7a40ef 100644 the first function that successfully detects the ready status of the shared state or diff --git a/source/time.tex b/source/time.tex -index 7fa1323a..85f3877e 100644 +index fa46de5b..ce39bdde 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1216,7 +1216,7 @@ unless it meets all of the following conditions: @@ -4375,7 +4359,7 @@ index 7fa1323a..85f3877e 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index d714c1f2..9da223d9 100644 +index 09be66f7..6011601f 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -104,15 +104,15 @@ namespace std { @@ -4464,11 +4448,11 @@ index d714c1f2..9da223d9 100644 2.43.0 -From 35d8595c799e8847754007c2f001a9ea312645ae Mon Sep 17 00:00:00 2001 +From 115ef5611b4abe79f578693147f942a12cd0052d Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 -Subject: [PATCH 3/9] Fix dubious \defnx that has see{} in it, and remove range - index entry with the same key. +Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove + range index entry with the same key. --- source/iostreams.tex | 2 +- @@ -4476,10 +4460,10 @@ Subject: [PATCH 3/9] Fix dubious \defnx that has see{} in it, and remove range 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index f0d3b942..90000ab2 100644 +index faf3c046..8bc8a19a 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -13919,7 +13919,7 @@ without an intervening \grammarterm{root-directory} element. +@@ -13922,7 +13922,7 @@ without an intervening \grammarterm{root-directory} element. \pnum \indextext{path!normalization|(}% @@ -4489,7 +4473,7 @@ index f0d3b942..90000ab2 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index d7f6a4d9..45edbccb 100644 +index cf9f5e15..3e0fd2ed 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -2151,7 +2151,6 @@ so it does match \#2. @@ -4517,11 +4501,11 @@ index d7f6a4d9..45edbccb 100644 2.43.0 -From 70b4bcca531629529edcbc9ee4e7d554e9e84b4a Mon Sep 17 00:00:00 2001 +From e4700dbefbdcdad61bf0c3e303d6b2a7f2391ce2 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 -Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and - literal fragments. +Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code + and literal fragments. --- source/exceptions.tex | 4 +- @@ -4530,7 +4514,7 @@ Subject: [PATCH 4/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and 3 files changed, 351 insertions(+), 351 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex -index 0072f5d6..88e1a340 100644 +index a9fd6f69..d3b0f3e3 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -135,11 +135,11 @@ does not declare a variable. @@ -4548,7 +4532,7 @@ index 0072f5d6..88e1a340 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index ba052c96..53864cf8 100644 +index d662f889..1b8befd1 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -333,43 +333,43 @@ the numerical value has no other meaning in this context. @@ -4933,7 +4917,7 @@ index ba052c96..53864cf8 100644 in the prefix is a \defn{raw string literal}. The \grammarterm{d-char-sequence} serves as a delimiter. The terminating diff --git a/source/time.tex b/source/time.tex -index 85f3877e..6cb712e2 100644 +index ce39bdde..cc24c1c9 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2198,7 +2198,7 @@ If the parse fails to decode a valid duration, @@ -5953,10 +5937,10 @@ index 85f3877e..6cb712e2 100644 2.43.0 -From 377a9bc321369a97e2838c6a11283f6e12f275c6 Mon Sep 17 00:00:00 2001 +From d35ea058dc773ca110bc437d50e1a11c36b65758 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 -Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. +Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. --- source/algorithms.tex | 4 ---- @@ -5988,7 +5972,7 @@ Subject: [PATCH 5/9] Remove more inappropriate paragraph breaks. 26 files changed, 268 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 5bf27eb7..49ef7fdb 100644 +index c313c941..f914092e 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -8716,7 +8716,6 @@ but stronger than those for a partial ordering. @@ -6024,7 +6008,7 @@ index 5bf27eb7..49ef7fdb 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index ac68557f..63b582ea 100644 +index 818f9001..29b5e6e4 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -294,7 +294,6 @@ int X::y = 1; // defines \tcode{X::y} @@ -6052,7 +6036,7 @@ index ac68557f..63b582ea 100644 \item No two signed integer types other than \keyword{char} and \tcode{\keyword{signed} \keyword{char}} (if \keyword{char} is signed) have the same rank, even if they have diff --git a/source/classes.tex b/source/classes.tex -index eaf6e4da..e433d03d 100644 +index 7883ea0a..a7391709 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -1626,7 +1626,6 @@ for each non-static data member of @@ -6120,7 +6104,7 @@ index eaf6e4da..e433d03d 100644 \item If at least one $\tcode{T}_i$ is \tcode{std::partial_ordering}, diff --git a/source/compatibility.tex b/source/compatibility.tex -index 3aa1637b..d1e593f3 100644 +index 60706217..24533a2c 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -2592,7 +2592,6 @@ Overspecification. @@ -6139,7 +6123,7 @@ index 3aa1637b..d1e593f3 100644 \begin{itemize} \item passing a value to a function that takes an argument of type \tcode{bool}; \item using \tcode{operator==} to compare to \tcode{false} or \tcode{true}; -@@ -3787,7 +3785,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in +@@ -3785,7 +3783,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in \pnum Header \libheaderref{cstring}: The following functions have different declarations: @@ -6147,7 +6131,7 @@ index 3aa1637b..d1e593f3 100644 \begin{itemize} \item \tcode{strchr} \item \tcode{strpbrk} -@@ -3801,7 +3798,6 @@ Subclause \ref{cstring.syn} describes the changes. +@@ -3799,7 +3796,6 @@ Subclause \ref{cstring.syn} describes the changes. \pnum Header \libheaderref{cwchar}: The following functions have different declarations: @@ -6155,7 +6139,7 @@ index 3aa1637b..d1e593f3 100644 \begin{itemize} \item \tcode{wcschr} \item \tcode{wcspbrk} -@@ -3826,7 +3822,6 @@ in addition to the names declared in +@@ -3824,7 +3820,6 @@ in addition to the names declared in \pnum Header \libheaderref{cstdlib}: The following functions have different behavior: @@ -6164,7 +6148,7 @@ index 3aa1637b..d1e593f3 100644 \item \tcode{atexit} \item \tcode{exit} diff --git a/source/concepts.tex b/source/concepts.tex -index 1722b95c..6663d0e0 100644 +index 42828a4b..3e64abc8 100644 --- a/source/concepts.tex +++ b/source/concepts.tex @@ -150,7 +150,6 @@ already specifies exactly such an expression explicitly. @@ -6293,7 +6277,7 @@ index 1722b95c..6663d0e0 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index f3aded8c..0731405d 100644 +index d64183f9..8e93903a 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6353,7 +6337,7 @@ index f3aded8c..0731405d 100644 advance(it, sz); @@ -20310,7 +20303,6 @@ For each of \tcode{stack}, - the library provides the following formatter specialization + the library provides the following constexpr-enabled formatter specialization where \tcode{\placeholder{adaptor-type}} is the name of the template: - \indexlibraryglobal{formatter}% @@ -6384,7 +6368,7 @@ index f3aded8c..0731405d 100644 \item \tcode{Extents::static_extent($k$)} diff --git a/source/declarations.tex b/source/declarations.tex -index 45030de5..94c821c5 100644 +index cc6330bc..247f80dc 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1584,7 +1584,6 @@ a partial specialization\iref{temp.spec.partial}, @@ -6500,7 +6484,7 @@ index 45030de5..94c821c5 100644 \terminal{(} unevaluated-string \terminal{)} \end{ncbnf} diff --git a/source/exceptions.tex b/source/exceptions.tex -index 88e1a340..ed441278 100644 +index d3b0f3e3..8f91c70e 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -89,7 +89,6 @@ void f() { @@ -6511,8 +6495,8 @@ index 88e1a340..ed441278 100644 \end{codeblock} \end{example} \indextext{\idxcode{goto}!and try block}% -@@ -561,12 +560,10 @@ to pointers to private or protected or ambiguous classes - a \link{function pointer conversion}{conv.fctptr} +@@ -561,12 +560,10 @@ to pointers to private or protected or ambiguous classes, + a \link{function pointer conversion}{conv.fctptr}, \item% a \link{qualification conversion}{conv.qual}, or - @@ -6525,7 +6509,7 @@ index 88e1a340..ed441278 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 0d2c5348..5d594143 100644 +index cea81800..b61c8bbd 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -467,7 +467,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -6576,7 +6560,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item If \tcode{T1} and \tcode{T2} are the same type, \tcode{C} is that type. -@@ -2810,7 +2804,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} +@@ -2811,7 +2805,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} \pnum For the purposes of lambda capture, an expression potentially references local entities as follows: @@ -6584,7 +6568,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item An \grammarterm{id-expression} that names a local entity -@@ -3420,7 +3413,6 @@ The \grammarterm{expression} is an unevaluated operand. +@@ -3421,7 +3414,6 @@ The \grammarterm{expression} is an unevaluated operand. Substitution of template arguments (if any) and verification of semantic properties proceed in the following order: @@ -6592,7 +6576,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -3432,7 +3424,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. +@@ -3433,7 +3425,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. \item If the \grammarterm{return-type-requirement} is present, then: @@ -6600,7 +6584,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -4523,7 +4514,6 @@ referred to by \tcode{T}. +@@ -4524,7 +4515,6 @@ referred to by \tcode{T}. \pnum Let \tcode{C} be the class type to which \tcode{T} points or refers. The runtime check logically executes as follows: @@ -6608,7 +6592,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item If, in the most derived object pointed (referred) to by \tcode{v}, \tcode{v} points (refers) to a public base class subobject of a -@@ -5037,7 +5027,6 @@ constness. +@@ -5038,7 +5028,6 @@ constness. The null member pointer value\iref{conv.mem} is converted to the null member pointer value of the destination type. The result of this conversion is unspecified, except in the following cases: @@ -6616,7 +6600,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item Converting a prvalue of type ``pointer to member function'' to a different pointer-to-member-function type and back to its original type -@@ -5472,7 +5461,6 @@ is called a \term{suspension context} of the function. +@@ -5473,7 +5462,6 @@ is called a \term{suspension context} of the function. \pnum Evaluation of an \grammarterm{await-expression} involves the following auxiliary types, expressions, and objects: @@ -6624,7 +6608,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item \placeholder{p} is an lvalue naming the promise -@@ -5853,7 +5841,6 @@ and +@@ -5854,7 +5842,6 @@ and the \grammarterm{new-expression}, then the allocated type is the type deduced for the variable \tcode{x} in the invented declaration\iref{dcl.spec.auto}: @@ -6632,7 +6616,7 @@ index 0d2c5348..5d594143 100644 \begin{codeblock} T x @\textrm{\placeholder{init}}@ ; \end{codeblock} -@@ -6213,7 +6200,6 @@ the alignment argument is removed from the argument list; +@@ -6214,7 +6201,6 @@ the alignment argument is removed from the argument list; otherwise, an argument that is the type's alignment and has type \tcode{std::align_val_t} is added into the argument list immediately after the first argument; @@ -6640,7 +6624,7 @@ index 0d2c5348..5d594143 100644 \end{itemize} and then overload resolution is performed again. -@@ -6291,7 +6277,6 @@ necessarily be the same as that of the block if the object is an array. +@@ -6292,7 +6278,6 @@ necessarily be the same as that of the block if the object is an array. \indextext{\idxcode{new}!default constructor and}% A \grammarterm{new-expression} that creates an object of type \tcode{T} initializes that object as follows: @@ -6648,7 +6632,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item If the \grammarterm{new-initializer} is omitted, the object is default-initialized\iref{dcl.init}. -@@ -6380,7 +6365,6 @@ struct S { +@@ -6381,7 +6366,6 @@ struct S { S* p = new (0) S; // error: non-placement deallocation function matches // placement allocation function \end{codeblock} @@ -6656,7 +6640,7 @@ index 0d2c5348..5d594143 100644 \end{example} \pnum -@@ -6500,7 +6484,6 @@ of their constructor; see~\ref{class.base.init}). +@@ -6501,7 +6485,6 @@ of their constructor; see~\ref{class.base.init}). \pnum If the value of the operand of the \grammarterm{delete-expression} is not a null pointer value, then: @@ -6664,7 +6648,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item If the allocation call for the \grammarterm{new-expression} for the object to -@@ -7345,7 +7328,6 @@ or one operand has integral type and +@@ -7346,7 +7329,6 @@ or one operand has integral type and the other operand has unscoped enumeration type, the \link{usual arithmetic conversions}{expr.arith.conv} are applied to the operands. Then: @@ -6672,7 +6656,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, -@@ -7500,7 +7482,6 @@ is considered to be equivalent to a pointer to a hypothetical array element +@@ -7501,7 +7483,6 @@ is considered to be equivalent to a pointer to a hypothetical array element $n$ for this purpose. \end{footnote} is defined in terms of a partial order consistent with the following rules: @@ -6680,7 +6664,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item If two pointers point to different elements of the same array, or to subobjects thereof, the pointer to the element with the higher subscript -@@ -7513,7 +7494,6 @@ neither member is a subobject of zero size +@@ -7514,7 +7495,6 @@ neither member is a subobject of zero size and their class is not a union. \item Otherwise, neither pointer is required to compare greater than the other. @@ -6688,7 +6672,7 @@ index 0d2c5348..5d594143 100644 \end{itemize} \pnum -@@ -7575,7 +7555,6 @@ If at least one of the converted operands is a pointer, +@@ -7576,7 +7556,6 @@ If at least one of the converted operands is a pointer, \link{qualification conversions}{conv.qual} are performed on both operands to bring them to their \deflink{composite pointer type}{expr.type}. Comparing pointers is defined as follows: @@ -6696,7 +6680,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item If one pointer represents the address of a complete object, and another -@@ -7605,7 +7584,6 @@ qualification conversions\iref{conv.qual} +@@ -7606,7 +7585,6 @@ qualification conversions\iref{conv.qual} are performed on both operands to bring them to their composite pointer type\iref{expr.type}. Comparing pointers to members is defined as follows: @@ -6704,7 +6688,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item If two pointers to members are both the null member pointer value, they compare -@@ -7891,7 +7869,6 @@ Attempts are made to form an implicit conversion sequence +@@ -7892,7 +7870,6 @@ Attempts are made to form an implicit conversion sequence from an operand expression \tcode{E1} of type \tcode{T1} to a target type related to the type \tcode{T2} of the operand expression \tcode{E2} as follows: @@ -6712,7 +6696,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item If \tcode{E2} is an lvalue, the target type is ``lvalue reference to \tcode{T2}'', -@@ -7970,7 +7947,6 @@ subclause. +@@ -7971,7 +7948,6 @@ subclause. and \link{function-to-pointer}{conv.func} standard conversions are performed on the second and third operands. After those conversions, one of the following shall hold: @@ -6720,7 +6704,7 @@ index 0d2c5348..5d594143 100644 \begin{itemize} \item The second and third operands have the same type; the result is of that type and the result is copy-initialized using the selected operand. -@@ -8000,7 +7976,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. +@@ -8001,7 +7977,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. Both the second and third operands have type \tcode{std::nullptr_t} or one has that type and the other is a null pointer constant. The result is of type \tcode{std::nullptr_t}. @@ -6797,10 +6781,10 @@ index c72d59ea..a740fd47 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index 90000ab2..6058ccab 100644 +index 8bc8a19a..5651a156 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -2102,14 +2102,12 @@ does nothing. +@@ -2105,14 +2105,12 @@ does nothing. Otherwise assigns to the member objects of \tcode{*this} the corresponding member objects of \tcode{rhs} as follows: @@ -6815,7 +6799,7 @@ index 90000ab2..6058ccab 100644 \begin{itemize} \item \tcode{rdstate()}, \tcode{rdbuf()}, and \tcode{exceptions()} are left unchanged; -@@ -7222,7 +7220,6 @@ clears \tcode{ios_base::skipws} in the format flags stored in the +@@ -7225,7 +7223,6 @@ clears \tcode{ios_base::skipws} in the format flags stored in the format flags stored in the \tcode{basic_ostream} object \tcode{cout} (the same as \tcode{cout << noshowbase}). \end{footnote} @@ -6823,7 +6807,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} void f(ios_base& str, ios_base::fmtflags mask) { // reset specified flags -@@ -7261,7 +7258,6 @@ then the expression +@@ -7264,7 +7261,6 @@ then the expression behaves as if it called \tcode{f(in, mask)}, where the function \tcode{f} is defined as: \indexlibrarymember{fmtflags}{ios_base}% @@ -6831,7 +6815,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} void f(ios_base& str, ios_base::fmtflags mask) { // set specified flags -@@ -7307,7 +7303,6 @@ then the expression +@@ -7310,7 +7306,6 @@ then the expression \tcode{in >> setbase(base)} behaves as if it called \tcode{f(in, base)}, where the function \tcode{f} is defined as: @@ -6839,7 +6823,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} void f(ios_base& str, int base) { // set \tcode{basefield} -@@ -7350,7 +7345,6 @@ then the expression +@@ -7353,7 +7348,6 @@ then the expression \tcode{out << setfill(c)} behaves as if it called \tcode{f(out, c)}, where the function \tcode{f} is defined as: @@ -6847,7 +6831,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} template void f(basic_ios& str, charT c) { -@@ -7391,7 +7385,6 @@ then the expression +@@ -7394,7 +7388,6 @@ then the expression \tcode{in >> setprecision(n)} behaves as if it called \tcode{f(in, n)}, where the function \tcode{f} is defined as: @@ -6855,7 +6839,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} void f(ios_base& str, int n) { // set precision -@@ -7437,7 +7430,6 @@ then the expression +@@ -7440,7 +7433,6 @@ then the expression \tcode{in >> setw(n)} behaves as if it called \tcode{f(in, n)}, where the function \tcode{f} is defined as: @@ -6863,7 +6847,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} void f(ios_base& str, int n) { // set width -@@ -7487,7 +7479,6 @@ An object of unspecified type such that if +@@ -7490,7 +7482,6 @@ An object of unspecified type such that if \tcode{in} is an object of type \tcode{basic_istream} then the expression \tcode{in >> get_money(mon, intl)} behaves as if it called \tcode{f(in, mon, intl)}, where the function \tcode{f} is defined as: @@ -6871,7 +6855,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} template void f(basic_ios& str, moneyT& mon, bool intl) { -@@ -7526,7 +7517,6 @@ An object of unspecified type such that if +@@ -7529,7 +7520,6 @@ An object of unspecified type such that if then the expression \tcode{out << put_money(mon, intl)} behaves as a \link{formatted output function}{ostream.formatted.reqmts} that calls \tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as: @@ -6879,7 +6863,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} template void f(basic_ios& str, const moneyT& mon, bool intl) { -@@ -7562,7 +7552,6 @@ An object of unspecified type such that if \tcode{in} is an object of type +@@ -7565,7 +7555,6 @@ An object of unspecified type such that if \tcode{in} is an object of type \tcode{basic_istream} then the expression \tcode{in >> get_time(tmb, fmt)} behaves as if it called \tcode{f(in, tmb, fmt)}, where the function \tcode{f} is defined as: @@ -6887,7 +6871,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} template void f(basic_ios& str, tm* tmb, const charT* fmt) { -@@ -7601,7 +7590,6 @@ An object of unspecified type such that if \tcode{out} is an object of +@@ -7604,7 +7593,6 @@ An object of unspecified type such that if \tcode{out} is an object of type \tcode{basic_ostream} then the expression \tcode{out << put_time(tmb, fmt)} behaves as if it called \tcode{f(out, tmb, fmt)}, where the function \tcode{f} is defined as: @@ -6895,7 +6879,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} template void f(basic_ios& str, const tm* tmb, const charT* fmt) { -@@ -11429,7 +11417,6 @@ with the specialization that a sequence of characters is read from the input +@@ -11432,7 +11420,6 @@ with the specialization that a sequence of characters is read from the input sequence as if by reading from the associated file into an internal buffer (\tcode{extern_buf}) and then as if by doing: @@ -6903,7 +6887,7 @@ index 90000ab2..6058ccab 100644 \begin{codeblock} char extern_buf[XSIZE]; const char* extern_end; -@@ -13920,7 +13907,6 @@ without an intervening \grammarterm{root-directory} element. +@@ -13923,7 +13910,6 @@ without an intervening \grammarterm{root-directory} element. \pnum \indextext{path!normalization|(}% \defnx{Normalization}{normalization!path} of a generic format pathname means: @@ -6911,7 +6895,7 @@ index 90000ab2..6058ccab 100644 \begin{enumerate} \item If the path is empty, stop. \item Replace each slash character in the \grammarterm{root-name} with a \grammarterm{preferred-separator}. -@@ -17061,7 +17047,6 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17064,7 +17050,6 @@ recursive_directory_iterator& increment(error_code& ec); As specified for the prefix increment operation of \link{Input iterators}{input.iterators}, except that: @@ -6920,10 +6904,10 @@ index 90000ab2..6058ccab 100644 \item If there are no more entries at the current depth, then if \tcode{depth() != 0} iteration over the parent directory resumes; otherwise \tcode{*this = recursive_directory_iterator()}. diff --git a/source/iterators.tex b/source/iterators.tex -index 3deb3e2b..fcbb42cd 100644 +index 909e4ed0..1ac297c8 100644 --- a/source/iterators.tex +++ b/source/iterators.tex -@@ -960,7 +960,6 @@ may be defined as \keyword{void}. +@@ -963,7 +963,6 @@ may be declared as \keyword{void}. \pnum The definitions in this subclause make use of the following exposition-only concepts: @@ -6931,7 +6915,7 @@ index 3deb3e2b..fcbb42cd 100644 \begin{codeblock} template concept @\defexposconcept{cpp17-iterator}@ = -@@ -1018,7 +1017,6 @@ concept @\defexposconcept{cpp17-random-access-iterator}@ = +@@ -1021,7 +1020,6 @@ concept @\defexposconcept{cpp17-random-access-iterator}@ = \pnum The members of a specialization \tcode{iterator_traits} generated from the \tcode{iterator_traits} primary template are computed as follows: @@ -6939,7 +6923,7 @@ index 3deb3e2b..fcbb42cd 100644 \begin{itemize} \item If \tcode{I} has valid\iref{temp.deduct} member -@@ -1165,7 +1163,6 @@ The name \tcode{ranges::iter_move} denotes +@@ -1168,7 +1166,6 @@ The name \tcode{ranges::iter_move} denotes a customization point object\iref{customization.point.object}. The expression \tcode{ranges::\-iter_move(E)} for a subexpression \tcode{E} is expression-equivalent to: @@ -6947,7 +6931,7 @@ index 3deb3e2b..fcbb42cd 100644 \begin{itemize} \item \tcode{iter_move(E)}, if \tcode{E} has class or enumeration type and -@@ -2804,7 +2801,6 @@ namespace std { +@@ -2807,7 +2804,6 @@ namespace std { A program-defined iterator \tcode{BinaryTreeIterator} can be included into the bidirectional iterator category by specializing the \tcode{iterator_traits} template: @@ -6955,7 +6939,7 @@ index 3deb3e2b..fcbb42cd 100644 \begin{codeblock} template struct iterator_traits> { using iterator_category = bidirectional_iterator_tag; -@@ -2822,7 +2818,6 @@ If +@@ -2825,7 +2821,6 @@ If \tcode{evolve()} is well-defined for bidirectional iterators, but can be implemented more efficiently for random access iterators, then the implementation is as follows: @@ -6963,7 +6947,7 @@ index 3deb3e2b..fcbb42cd 100644 \begin{codeblock} template inline void -@@ -3409,7 +3404,6 @@ As if by: +@@ -3412,7 +3407,6 @@ As if by: Iterator tmp = current; return *--tmp; \end{codeblock} @@ -6971,7 +6955,7 @@ index 3deb3e2b..fcbb42cd 100644 \end{itemdescr} \indexlibrarymember{operator->}{reverse_iterator}% -@@ -4792,7 +4786,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 +@@ -4795,7 +4789,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 vector v2(make_move_iterator(s.begin()), make_move_iterator(s.end())); // moves strings into \tcode{v2} \end{codeblock} @@ -6979,7 +6963,7 @@ index 3deb3e2b..fcbb42cd 100644 \end{example} \rSec3[move.iterator]{Class template \tcode{move_iterator}} -@@ -6511,7 +6504,6 @@ partial_sum(istream_iterator(cin), +@@ -6514,7 +6507,6 @@ partial_sum(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "@\textbackslash@n")); \end{codeblock} @@ -6988,7 +6972,7 @@ index 3deb3e2b..fcbb42cd 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 4e6c7fa2..dda79b54 100644 +index 0b2c55f9..c463010f 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -196,7 +196,6 @@ save space, items that do not apply to a Clause are omitted. @@ -7071,7 +7055,7 @@ index 4e6c7fa2..dda79b54 100644 \begin{codeblock} streambuf* sb; // \expos \end{codeblock} -@@ -1938,7 +1928,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if +@@ -1937,7 +1927,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if evaluated in the context described below, and \item these expressions have the following effects: @@ -7079,7 +7063,7 @@ index 4e6c7fa2..dda79b54 100644 \begin{itemize} \item the object referred to by \tcode{t} has the value originally held by \tcode{u} and \item the object referred to by \tcode{u} has the value originally held by \tcode{t}. -@@ -2944,7 +2933,6 @@ for that type can fail by throwing an object of type +@@ -2943,7 +2932,6 @@ for that type can fail by throwing an object of type \begin{example} The following is an allocator class template supporting the minimal interface that meets the requirements of \ref{allocator.requirements.general}: @@ -7087,7 +7071,7 @@ index 4e6c7fa2..dda79b54 100644 \begin{codeblock} template struct SimpleAllocator { -@@ -3430,13 +3418,11 @@ the description of function semantics apply +@@ -3429,13 +3417,11 @@ the description of function semantics apply to both the default version defined by the \Cpp{} standard library and the replacement function defined by the program. @@ -7101,7 +7085,7 @@ index 4e6c7fa2..dda79b54 100644 \begin{itemize} \item \tcode{terminate_handler} -@@ -3457,7 +3443,6 @@ Exception handling. +@@ -3456,7 +3442,6 @@ Exception handling. \pnum A \Cpp{} program can get a pointer to the current handler function by calling the following functions: @@ -7109,7 +7093,7 @@ index 4e6c7fa2..dda79b54 100644 \begin{itemize} \item \indexlibraryglobal{get_new_handler}% -@@ -3483,7 +3468,6 @@ on the implementation. +@@ -3482,7 +3467,6 @@ on the implementation. \pnum In particular, the behavior is undefined in the following cases: @@ -7117,7 +7101,7 @@ index 4e6c7fa2..dda79b54 100644 \begin{itemize} \item For replacement functions\iref{replacement.functions}, if the installed replacement function does not -@@ -3768,7 +3752,6 @@ functions an implementation shall provide corresponding definitions. +@@ -3767,7 +3751,6 @@ functions an implementation shall provide corresponding definitions. \indextext{stable algorithm}% When the requirements for an algorithm state that it is ``stable'' without further elaboration, it means: @@ -7126,7 +7110,7 @@ index 4e6c7fa2..dda79b54 100644 \item For the sort algorithms the relative order of equivalent elements is preserved. diff --git a/source/limits.tex b/source/limits.tex -index efd4eb00..12180661 100644 +index 877f21f3..7fc0a416 100644 --- a/source/limits.tex +++ b/source/limits.tex @@ -123,5 +123,4 @@ Handlers per try block\iref{except.handle} [256]. @@ -7136,7 +7120,7 @@ index efd4eb00..12180661 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index efbf7fee..12c714b4 100644 +index a7f16411..17fb5e8d 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1445,7 +1445,6 @@ when considered as an unevaluated operand. @@ -7156,7 +7140,7 @@ index efbf7fee..12c714b4 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index 82675162..b1abb2de 100644 +index c76fa23e..1fa9a9f2 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -1939,7 +1939,6 @@ is_base_of_v // \tcode{false} @@ -7170,13 +7154,13 @@ index 82675162..b1abb2de 100644 @@ -2447,7 +2446,6 @@ If any of the types computed above is ill-formed, then \pnum For the \tcode{common_type} trait applied to a template parameter pack \tcode{T} of types, - the member \tcode{type} shall be either defined or not present as follows: + the member \tcode{type} shall be either declared or not present as follows: - \begin{itemize} \item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}. diff --git a/source/numerics.tex b/source/numerics.tex -index bbf484e7..4342da1a 100644 +index 214757e4..bce0a4ae 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); @@ -7336,7 +7320,7 @@ index 9533e291..9eadc766 100644 const char* unsigned long long int diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 9747c367..01223d42 100644 +index 6624a7f2..62225b4c 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -199,7 +199,6 @@ begins with the first character in the source file @@ -7412,14 +7396,14 @@ index 9747c367..01223d42 100644 \indextext{__stdc__@\mname{STDC}}% @@ -2448,7 +2439,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. \mname{STDCPP_THREADS}\\ - Defined, and has the value integer literal 1, if and only if a program + Defined, and has the value integer literal \tcode{1}, if and only if a program can have more than one \link{thread of execution}{intro.multithread}. - \end{description} \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 708004ea..e12de083 100644 +index 58f2ef0c..9fff6e28 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7527,7 +7511,7 @@ index 708004ea..e12de083 100644 \item If \tcode{T} models \libconcept{contiguous_iterator}, diff --git a/source/statements.tex b/source/statements.tex -index 247b8bce..76449634 100644 +index 852e314d..5510eb74 100644 --- a/source/statements.tex +++ b/source/statements.tex @@ -727,7 +727,6 @@ exposition only; and @@ -7539,10 +7523,10 @@ index 247b8bce..76449634 100644 \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are diff --git a/source/support.tex b/source/support.tex -index 98842079..1a45ee0e 100644 +index b0c75171..f7399362 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -2462,7 +2462,6 @@ This requirement is binding on any replacement versions of these functions. +@@ -2425,7 +2425,6 @@ This requirement is binding on any replacement versions of these functions. \pnum \default @@ -7550,7 +7534,7 @@ index 98842079..1a45ee0e 100644 \begin{itemize} \item Executes a loop: -@@ -2941,7 +2940,6 @@ Intentionally performs no other action. +@@ -2904,7 +2903,6 @@ Intentionally performs no other action. \pnum \begin{example} This can be useful for constructing an object at a known address: @@ -7558,7 +7542,7 @@ index 98842079..1a45ee0e 100644 \begin{codeblock} void* place = operator new(sizeof(Something)); Something* p = new (place) Something(); -@@ -4850,7 +4848,6 @@ are collectively termed the \defn{comparison category types}. +@@ -4813,7 +4811,6 @@ are collectively termed the \defn{comparison category types}. Each is specified in terms of an exposition-only data member named \tcode{value} whose value typically corresponds to that of an enumerator from one of the following exposition-only enumerations: @@ -7566,7 +7550,7 @@ index 98842079..1a45ee0e 100644 \begin{codeblock} enum class @\placeholdernc{ord}@ { @\placeholdernc{equal}@ = 0, @\placeholdernc{equivalent}@ = @\placeholdernc{equal}@, @\placeholdernc{less}@ = -1, @\placeholdernc{greater}@ = 1 }; // \expos enum class @\placeholdernc{ncmp}@ { @\placeholdernc{unordered}@ = -127 }; // \expos -@@ -5804,7 +5801,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and +@@ -5767,7 +5764,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and denotes a type\iref{temp.deduct}, then \tcode{coroutine_traits} has the following publicly accessible member: @@ -7575,7 +7559,7 @@ index 98842079..1a45ee0e 100644 using promise_type = R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index 45edbccb..2a51aefc 100644 +index 3e0fd2ed..2ebe5fe3 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -256,7 +256,6 @@ in some translation unit; no diagnostic is required. @@ -7738,7 +7722,7 @@ index 45edbccb..2a51aefc 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -7005,7 +6985,6 @@ template. +@@ -7013,7 +6993,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -7746,7 +7730,7 @@ index 45edbccb..2a51aefc 100644 \begin{bnf} \nontermdef{explicit-instantiation}\br \opt{\keyword{extern}} \keyword{template} declaration -@@ -7480,7 +7459,6 @@ otherwise, it is a declaration. +@@ -7488,7 +7467,6 @@ otherwise, it is a declaration. The definition of a static data member of a template for which default-initialization is desired can use functional cast notation\iref{expr.type.conv}: @@ -7754,7 +7738,7 @@ index 45edbccb..2a51aefc 100644 \begin{codeblock} template<> X Q::x; // declaration template<> X Q::x (); // error: declares a function -@@ -7739,7 +7717,6 @@ An empty template argument list can be used to indicate that a given +@@ -7747,7 +7725,6 @@ An empty template argument list can be used to indicate that a given use refers to a specialization of a function template even when a non-template function\iref{dcl.fct} is visible that would otherwise be used. For example: @@ -7762,7 +7746,7 @@ index 45edbccb..2a51aefc 100644 \begin{codeblock} template int f(T); // \#1 int f(int); // \#2 -@@ -8321,7 +8298,6 @@ void h(int x, float& y) { +@@ -8329,7 +8306,6 @@ void h(int x, float& y) { If \tcode{P} is not a reference type: @@ -7770,7 +7754,7 @@ index 45edbccb..2a51aefc 100644 \begin{itemize} \item If -@@ -8416,7 +8392,6 @@ the type +@@ -8424,7 +8400,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -7778,7 +7762,7 @@ index 45edbccb..2a51aefc 100644 \begin{itemize} \item If the original -@@ -8606,7 +8581,6 @@ of \tcode{P} for type deduction and for any further references to or transformat +@@ -8614,7 +8589,6 @@ of \tcode{P} for type deduction and for any further references to or transformat If \tcode{A} is not a reference type: @@ -7786,7 +7770,7 @@ index 45edbccb..2a51aefc 100644 \begin{itemize} \item If -@@ -8652,7 +8626,6 @@ values that will make the deduced +@@ -8660,7 +8634,6 @@ values that will make the deduced identical to \tcode{A}. However, certain attributes of \tcode{A} may be ignored: @@ -7794,7 +7778,7 @@ index 45edbccb..2a51aefc 100644 \begin{itemize} \item If the original \tcode{A} is a reference type, -@@ -8697,7 +8670,6 @@ the argument template and template-1 as the parameter template. +@@ -8705,7 +8678,6 @@ the argument template and template-1 as the parameter template. \pnum The types used to determine the ordering depend on the context in which the partial ordering is done: @@ -7802,7 +7786,7 @@ index 45edbccb..2a51aefc 100644 \begin{itemize} \item In the context of a function call, the types used are those function parameter types -@@ -8725,7 +8697,6 @@ and +@@ -8733,7 +8705,6 @@ and \pnum Before the partial ordering is done, certain transformations are performed on the types used for partial ordering: @@ -7810,7 +7794,7 @@ index 45edbccb..2a51aefc 100644 \begin{itemize} \item If -@@ -8931,7 +8902,6 @@ A given type +@@ -8939,7 +8910,6 @@ A given type \tcode{P} can be composed from a number of other types, templates, and constant template argument values: @@ -7818,7 +7802,7 @@ index 45edbccb..2a51aefc 100644 \begin{itemize} \item A function type includes the types of each of the function parameters, -@@ -8973,7 +8943,6 @@ need not have the same form. +@@ -8981,7 +8951,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -7826,7 +7810,7 @@ index 45edbccb..2a51aefc 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -9068,7 +9037,6 @@ is deduced. +@@ -9076,7 +9045,6 @@ is deduced. \begin{example} Here is an example in which different parameter/argument pairs produce inconsistent template argument deductions: @@ -7834,7 +7818,7 @@ index 45edbccb..2a51aefc 100644 \begin{codeblock} template void f(T x, T y) { @\commentellip@ } struct A { @\commentellip@ }; -@@ -9085,7 +9053,6 @@ Here is an example where two template arguments are deduced from a +@@ -9093,7 +9061,6 @@ Here is an example where two template arguments are deduced from a single function parameter/argument pair. This can lead to conflicts that cause type deduction to fail: @@ -7842,7 +7826,7 @@ index 45edbccb..2a51aefc 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -9102,7 +9069,6 @@ void r() { +@@ -9110,7 +9077,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -7850,7 +7834,7 @@ index 45edbccb..2a51aefc 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -9121,7 +9087,6 @@ void h() { +@@ -9129,7 +9095,6 @@ void h() { Here is an example where a qualification conversion applies between the argument type on the function call and the deduced template argument type: @@ -7858,7 +7842,7 @@ index 45edbccb..2a51aefc 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -9132,7 +9097,6 @@ void s() { +@@ -9140,7 +9105,6 @@ void s() { Here is an example where the template argument is used to instantiate a derived class type of the corresponding function parameter type: @@ -7867,10 +7851,10 @@ index 45edbccb..2a51aefc 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 0d7a40ef..b2503433 100644 +index 9d7efb72..976fa0b3 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -7344,7 +7344,6 @@ and visible to other threads. +@@ -7343,7 +7343,6 @@ and visible to other threads. \pnum The expression \tcode{m.lock()} is well-formed and has the following semantics: @@ -7878,7 +7862,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -7387,7 +7386,6 @@ that a deadlock would occur. +@@ -7386,7 +7385,6 @@ that a deadlock would occur. \pnum The expression \tcode{m.try_lock()} is well-formed and has the following semantics: @@ -7886,7 +7870,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -7433,7 +7431,6 @@ Nothing. +@@ -7432,7 +7430,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -7894,7 +7878,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -7588,7 +7585,6 @@ requirements\iref{thread.req.lockable.timed}. +@@ -7587,7 +7584,6 @@ requirements\iref{thread.req.lockable.timed}. \pnum The expression \tcode{m.try_lock_for(rel_time)} is well-formed and has the following semantics: @@ -7902,7 +7886,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -7630,7 +7626,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -7629,7 +7625,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_until(abs_time)} is well-formed and has the following semantics: @@ -7910,7 +7894,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -7817,7 +7812,6 @@ shared lock. +@@ -7816,7 +7811,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -7918,7 +7902,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -7854,7 +7848,6 @@ The calling thread has a shared lock on the mutex. +@@ -7853,7 +7847,6 @@ The calling thread has a shared lock on the mutex. \pnum The expression \tcode{m.unlock_shared()} is well-formed and has the following semantics: @@ -7926,7 +7910,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -7879,7 +7872,6 @@ Nothing. +@@ -7878,7 +7871,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -7934,7 +7918,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -7982,7 +7974,6 @@ requirements\iref{thread.req.lockable.shared.timed}. +@@ -7981,7 +7973,6 @@ requirements\iref{thread.req.lockable.shared.timed}. \pnum The expression \tcode{m.try_lock_shared_for(rel_time)} is well-formed and has the following semantics: @@ -7942,7 +7926,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -8027,7 +8018,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -8026,7 +8017,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_shared_until(abs_time)} is well-formed and has the following semantics: @@ -7950,7 +7934,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemdescr} \pnum \expects -@@ -10168,7 +10158,6 @@ template +@@ -10167,7 +10157,6 @@ template \begin{itemdescr} \pnum \effects @@ -7958,7 +7942,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -11559,7 +11548,6 @@ shared state as \tcode{*this}. +@@ -11558,7 +11547,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -7966,7 +7950,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemize} \item \tcode{future_already_retrieved} if \tcode{get_future} has already been called on a \tcode{promise} with the same shared state as \tcode{*this}. -@@ -11622,7 +11610,6 @@ already has a stored value or exception. +@@ -11621,7 +11609,6 @@ already has a stored value or exception. \pnum \errors @@ -7974,7 +7958,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -11962,7 +11949,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -11961,7 +11948,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -7982,7 +7966,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12306,7 +12292,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -12305,7 +12291,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -7990,7 +7974,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12341,7 +12326,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -12340,7 +12325,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -7998,7 +7982,7 @@ index 0d7a40ef..b2503433 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12397,7 +12381,6 @@ The further behavior +@@ -12396,7 +12380,6 @@ The further behavior of the second function depends on the \tcode{policy} argument as follows (if more than one of these conditions applies, the implementation may choose any of the corresponding policies): @@ -8007,7 +7991,7 @@ index 0d7a40ef..b2503433 100644 \item If \tcode{launch::async} is set in \tcode{policy}, calls diff --git a/source/time.tex b/source/time.tex -index 6cb712e2..f3cefea4 100644 +index cc24c1c9..2d6f9c27 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2072,7 +2072,6 @@ return os << s.str(); @@ -8157,7 +8141,7 @@ index 6cb712e2..f3cefea4 100644 \fmtnontermdef{chrono-format-spec}\br \opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs} diff --git a/source/utilities.tex b/source/utilities.tex -index 9da223d9..25cadb3c 100644 +index 6011601f..530bb023 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -282,7 +282,6 @@ Exchanges values stored in two locations. @@ -8220,10 +8204,10 @@ index 9da223d9..25cadb3c 100644 2.43.0 -From b73e0476180b083ce8819f4126eaec31baa3e0d6 Mon Sep 17 00:00:00 2001 +From 20cfd6993f796d0067e998824e9a4dfbd6ab80f3 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 -Subject: [PATCH 6/9] Use monospace font for code in figures. +Subject: [PATCH 06/10] Use monospace font for code in figures. --- source/assets/figdag.dot | 8 ++++---- @@ -8367,10 +8351,10 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From 08c95e984a106506ed47405bd0920f7d71527fe2 Mon Sep 17 00:00:00 2001 +From 9e5be3d459ac25cb6550b7beab91eb9aa1c12062 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 -Subject: [PATCH 7/9] [uaxid] Mark code that's not to be highlighted. +Subject: [PATCH 07/10] [uaxid] Mark code that's not to be highlighted. --- source/uax31.tex | 4 ++-- @@ -8395,10 +8379,10 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From 030ef2d0324d13694333b0c59a58e5f8612c3bd0 Mon Sep 17 00:00:00 2001 +From cd3b9b294e8247f729d9d263dd6df7f14d6c982a Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 -Subject: [PATCH 8/9] Use cxxdraft-htmlgen macros more. +Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. --- source/algorithms.tex | 180 +++++++++++++-------------- @@ -8419,7 +8403,7 @@ Subject: [PATCH 8/9] Use cxxdraft-htmlgen macros more. 15 files changed, 481 insertions(+), 489 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 49ef7fdb..4813bec6 100644 +index f914092e..16604a18 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -8528,7 +8512,7 @@ index 49ef7fdb..4813bec6 100644 \end{itemdescr} \rSec2[alg.starts.with]{Starts with} -@@ -7616,7 +7616,7 @@ Let $E$ be +@@ -7616,7 +7616,7 @@ Let $E(\tcode{i})$ be \expects For the algorithms in namespace \tcode{std}, the type of \tcode{*first} @@ -8991,7 +8975,7 @@ index 49ef7fdb..4813bec6 100644 \item For all overloads, in the ranges \crange{first}{last} diff --git a/source/concepts.tex b/source/concepts.tex -index 6663d0e0..53d43b5d 100644 +index 3e64abc8..9efb5afa 100644 --- a/source/concepts.tex +++ b/source/concepts.tex @@ -495,7 +495,7 @@ template @@ -9013,7 +8997,7 @@ index 6663d0e0..53d43b5d 100644 invocation of the destructor does not actually throw. \end{note} diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index e653b348..2adaa033 100644 +index 8b010321..0d4dff5b 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -758,9 +758,9 @@ namespace std { @@ -9079,7 +9063,7 @@ index e653b348..2adaa033 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index c969a57b..16de2113 100644 +index 4455a1c9..000fe37d 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9167,10 +9151,10 @@ index a740fd47..2f15e38b 100644 \begin{itemize} \item for the first specialization, \tcode{volatile VA::type}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index 6058ccab..7586f5cb 100644 +index 5651a156..ebbfbcba 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex -@@ -1681,10 +1681,10 @@ An \tcode{fpos} type specifies file position information. +@@ -1684,10 +1684,10 @@ An \tcode{fpos} type specifies file position information. It holds a state object whose type is equal to the template parameter \tcode{stateT}. Type \tcode{stateT} shall meet @@ -9185,7 +9169,7 @@ index 6058ccab..7586f5cb 100644 If \tcode{is_trivially_copy_constructible_v} is \tcode{true}, then \tcode{fpos} has a trivial copy constructor. If \tcode{is_trivially_copy_assignable_v} is \tcode{true}, -@@ -1692,11 +1692,11 @@ then \tcode{fpos} has a trivial copy assignment operator. +@@ -1695,11 +1695,11 @@ then \tcode{fpos} has a trivial copy assignment operator. If \tcode{is_trivially_destructible_v} is \tcode{true}, then \tcode{fpos} has a trivial destructor. All specializations of \tcode{fpos} meet @@ -9202,7 +9186,7 @@ index 6058ccab..7586f5cb 100644 In addition, the expressions shown in \tref{fpos.operations} are valid and have the indicated semantics. In that table, -@@ -12957,7 +12957,7 @@ namespace std { +@@ -12960,7 +12960,7 @@ namespace std { \pnum \tcode{Allocator} shall meet @@ -9211,7 +9195,7 @@ index 6058ccab..7586f5cb 100644 \pnum \begin{example} -@@ -13250,7 +13250,7 @@ unless \tcode{EcharT} is one of the encoded character types. +@@ -13253,7 +13253,7 @@ unless \tcode{EcharT} is one of the encoded character types. \pnum Template parameters named \tcode{InputIterator} shall meet the @@ -9220,7 +9204,7 @@ index 6058ccab..7586f5cb 100644 have a value type that is one of the encoded character types. \pnum -@@ -13264,7 +13264,7 @@ they are not included as permitted types. +@@ -13267,7 +13267,7 @@ they are not included as permitted types. \pnum Template parameters named \tcode{Allocator} shall meet @@ -9229,7 +9213,7 @@ index 6058ccab..7586f5cb 100644 \rSec2[fs.filesystem.syn]{Header \tcode{} synopsis} -@@ -14082,7 +14082,7 @@ shall be one of: +@@ -14085,7 +14085,7 @@ shall be one of: \item \tcode{basic_string_view}. A function argument \tcode{const Source\&} \tcode{source} shall have an effective range \range{source.begin()}{source.end()}. @@ -9238,7 +9222,7 @@ index 6058ccab..7586f5cb 100644 The value type shall be an encoded character type. A function argument \tcode{const Source\&} \tcode{source} shall have an effective range \range{source}{end} where \tcode{end} is the first -@@ -16587,7 +16587,7 @@ namespace std::filesystem { +@@ -16590,7 +16590,7 @@ namespace std::filesystem { \pnum \tcode{directory_iterator} meets the @@ -9248,10 +9232,10 @@ index 6058ccab..7586f5cb 100644 \pnum If an iterator of type \tcode{directory_iterator} reports an error or diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index dda79b54..9a959af0 100644 +index c463010f..8d09833e 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex -@@ -1868,7 +1868,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1867,7 +1867,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9260,7 +9244,7 @@ index dda79b54..9a959af0 100644 {p{1in}p{4.15in}} \topline \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep -@@ -1895,7 +1895,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1894,7 +1894,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9269,7 +9253,7 @@ index dda79b54..9a959af0 100644 {p{1in}p{1in}p{1in}p{1.9in}} \topline \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Return value} & \hdstyle{Post-condition} \\ \capsep -@@ -1909,7 +1909,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1908,7 +1908,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. \tcode{a.\~T()} & No exception is propagated. \\ \rowsep \multicolumn{2}{|l|}{ \begin{tailnote} @@ -9278,7 +9262,7 @@ index dda79b54..9a959af0 100644 \end{tailnote} } \\ \end{oldconcepttable} -@@ -1988,7 +1988,7 @@ void value_swap(T&& t, U&& u) { +@@ -1987,7 +1987,7 @@ void value_swap(T&& t, U&& u) { // for rvalues and lvalues } @@ -9287,7 +9271,7 @@ index dda79b54..9a959af0 100644 template void lv_swap(T& t1, T& t2) { using std::swap; -@@ -2025,9 +2025,9 @@ int main() { +@@ -2024,9 +2024,9 @@ int main() { A \oldconcept{NullablePointer} type is a pointer-like type that supports null values. A type \tcode{P} meets the \oldconcept{\-Nullable\-Pointer} requirements if \begin{itemize} @@ -9300,7 +9284,7 @@ index dda79b54..9a959af0 100644 \item the expressions shown in \tref{cpp17.nullablepointer} are valid and have the indicated semantics, and -@@ -2103,8 +2103,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. +@@ -2102,8 +2102,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. A type \tcode{H} meets the \defnoldconcept{Hash} requirements if \begin{itemize} \item it is a function object type\iref{function.objects}, @@ -9311,7 +9295,7 @@ index dda79b54..9a959af0 100644 \item the expressions shown in \tref{cpp17.hash} are valid and have the indicated semantics. \end{itemize} -@@ -2788,7 +2788,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2787,7 +2787,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be copied when the client container is copy-assigned; if so, \tcode{X} shall meet @@ -9320,7 +9304,7 @@ index dda79b54..9a959af0 100644 the copy operation shall not throw exceptions. \pnum -@@ -2810,7 +2810,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2809,7 +2809,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be moved when the client container is move-assigned; if so, \tcode{X} shall meet @@ -9329,7 +9313,7 @@ index dda79b54..9a959af0 100644 the move operation shall not throw exceptions. \pnum -@@ -2832,7 +2832,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2831,7 +2831,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be swapped when the client container is swapped; if so, @@ -9338,7 +9322,7 @@ index dda79b54..9a959af0 100644 the \tcode{swap} operation shall not throw exceptions. \pnum -@@ -2862,7 +2862,7 @@ Default: \tcode{is_empty::type} +@@ -2861,7 +2861,7 @@ Default: \tcode{is_empty::type} \pnum An allocator type \tcode{X} shall meet the @@ -9347,7 +9331,7 @@ index dda79b54..9a959af0 100644 The \tcode{XX::pointer}, \tcode{XX::const_pointer}, \tcode{XX::void_pointer}, and \tcode{XX::const_void_pointer} types shall meet the \oldconcept{Nullable\-Pointer} requirements (\tref{cpp17.nullablepointer}). -@@ -2870,7 +2870,7 @@ No constructor, +@@ -2869,7 +2869,7 @@ No constructor, comparison operator function, copy operation, move operation, or swap operation on these pointer types shall exit via an exception. \tcode{XX::pointer} and \tcode{XX::const_pointer} shall also meet the requirements for @@ -9357,7 +9341,7 @@ index dda79b54..9a959af0 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index 12c714b4..0b20e5ce 100644 +index 17fb5e8d..b7efaa69 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1147,7 +1147,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type @@ -9530,7 +9514,7 @@ index 12c714b4..0b20e5ce 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index b1abb2de..02a1d8f4 100644 +index 1fa9a9f2..925356e2 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -136,12 +136,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -10126,7 +10110,7 @@ index b1abb2de..02a1d8f4 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index 4342da1a..084414fa 100644 +index bce0a4ae..10fdf6e7 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul @@ -10263,10 +10247,10 @@ index 749c23d9..8aeb51c9 100644 meets the constexpr iterator requirements\iref{iterator.requirements.general}, whose \tcode{value_type} is the template parameter \tcode{charT}. diff --git a/source/support.tex b/source/support.tex -index 1a45ee0e..b77edfed 100644 +index f7399362..7e61389d 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -3661,11 +3661,11 @@ namespace std { +@@ -3624,11 +3624,11 @@ namespace std { \pnum The type \tcode{source_location} meets the @@ -10283,7 +10267,7 @@ index 1a45ee0e..b77edfed 100644 requirements\iref{utility.arg.requirements,swappable.requirements}. All of the following conditions are \tcode{true}: \begin{itemize} -@@ -4127,7 +4127,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. +@@ -4090,7 +4090,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. \pnum \tcode{exception_ptr} meets the requirements of @@ -10292,7 +10276,7 @@ index 1a45ee0e..b77edfed 100644 \pnum Two non-null values of type \tcode{exception_ptr} are equivalent and compare equal if and -@@ -4354,7 +4354,7 @@ Let \tcode{U} be \tcode{decay_t}. +@@ -4317,7 +4317,7 @@ Let \tcode{U} be \tcode{decay_t}. \pnum \expects @@ -10302,7 +10286,7 @@ index 1a45ee0e..b77edfed 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index b2503433..9d5fcfed 100644 +index 976fa0b3..6a73b71a 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10354,8 +10338,8 @@ index b2503433..9d5fcfed 100644 -A type \tcode{L} meets the \defnoldconcept{TimedLockable} requirements if it meets the \oldconcept{Lockable} +A type \tcode{L} meets the \defnoldconcept{TimedLockable} requirements if it meets the \oldconceptref{Lockable} requirements and the following expressions are well-formed and have the specified semantics - (\tcode{m} denotes a value of type \tcode{L}, \tcode{rel_time} denotes a value of an - instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes a value + (\tcode{m} denotes a value of type \tcode{L}, \tcode{rel_time} denotes a value of a + specialization of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes a value @@ -397,7 +397,7 @@ Nothing. \pnum @@ -10365,7 +10349,7 @@ index b2503433..9d5fcfed 100644 the following expressions are well-formed, have type \tcode{bool}, and have the specified semantics (\tcode{m} denotes a value of type \tcode{L}, -@@ -4481,7 +4481,7 @@ namespace std { +@@ -4480,7 +4480,7 @@ namespace std { \indexlibraryglobal{atomic}% \pnum The template argument for \tcode{T} shall meet the @@ -10374,7 +10358,7 @@ index b2503433..9d5fcfed 100644 The program is ill-formed if any of \begin{itemize} \item \tcode{is_trivially_copyable_v}, -@@ -7305,11 +7305,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, +@@ -7304,11 +7304,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, They meet the requirements set out in \ref{thread.mutex.requirements.mutex}. In this description, \tcode{m} denotes an object of a mutex type. \begin{note} @@ -10388,16 +10372,16 @@ index b2503433..9d5fcfed 100644 If initialization of an object of a mutex type fails, an exception of type \tcode{system_error} is thrown. The mutex types are neither copyable nor movable. -@@ -7578,7 +7578,7 @@ instantiation of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} de - object of an - instantiation of \link{\tcode{time_point}}{time.point}. +@@ -7577,7 +7577,7 @@ specialization of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} d + object of a + specialization of \link{\tcode{time_point}}{time.point}. \begin{note} -The timed mutex types meet the \oldconcept{TimedLockable} +The timed mutex types meet the \oldconceptref{TimedLockable} requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -7790,7 +7790,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally +@@ -7789,7 +7789,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally meet the requirements set out below. In this description, \tcode{m} denotes an object of a shared mutex type. \begin{note} @@ -10406,8 +10390,8 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.shared}. \end{note} -@@ -7967,7 +7967,7 @@ meet the requirements set out below. In this description, - \tcode{abs_time} denotes an object of an instantiation of +@@ -7966,7 +7966,7 @@ meet the requirements set out below. In this description, + \tcode{abs_time} denotes an object of a specialization of \link{\tcode{time_point}}{time.point}. \begin{note} -The shared timed mutex types meet the \oldconcept{SharedTimedLockable} @@ -10415,7 +10399,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.shared.timed}. \end{note} -@@ -8177,7 +8177,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable +@@ -8176,7 +8176,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable object throughout the \tcode{lock_guard} object's \deflink{lifetime}{basic.life}. The behavior of a program is undefined if the lockable object referenced by \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} @@ -10424,7 +10408,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.basic}. \indexlibraryctor{lock_guard}% -@@ -8256,12 +8256,12 @@ object. +@@ -8255,12 +8255,12 @@ object. If \tcode{sizeof...(MutexTypes)} is one, let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. \tcode{Mutex} @@ -10439,7 +10423,7 @@ index b2503433..9d5fcfed 100644 and there is no member \tcode{mutex_type}. \end{itemize} -@@ -8376,17 +8376,17 @@ copyable but are movable. The behavior of a program is undefined if the containe +@@ -8375,17 +8375,17 @@ copyable but are movable. The behavior of a program is undefined if the containe \tcode{pm} is not null and the lockable object pointed to by \tcode{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied @@ -10463,7 +10447,7 @@ index b2503433..9d5fcfed 100644 \end{note} \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} -@@ -8436,7 +8436,7 @@ unique_lock(mutex_type& m, try_to_lock_t); +@@ -8435,7 +8435,7 @@ unique_lock(mutex_type& m, try_to_lock_t); \begin{itemdescr} \pnum \expects @@ -10472,7 +10456,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8478,7 +8478,7 @@ template +@@ -8477,7 +8477,7 @@ template \pnum \expects The supplied \tcode{Mutex} type meets the @@ -10481,7 +10465,7 @@ index b2503433..9d5fcfed 100644 \pnum \effects -@@ -8500,7 +8500,7 @@ template +@@ -8499,7 +8499,7 @@ template \begin{itemdescr} \pnum \expects @@ -10490,7 +10474,7 @@ index b2503433..9d5fcfed 100644 \pnum \effects -@@ -8587,7 +8587,7 @@ bool try_lock(); +@@ -8586,7 +8586,7 @@ bool try_lock(); \begin{itemdescr} \pnum \expects @@ -10499,7 +10483,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8626,7 +8626,7 @@ template +@@ -8625,7 +8625,7 @@ template \begin{itemdescr} \pnum \expects @@ -10508,7 +10492,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.timed}. \pnum -@@ -8665,7 +8665,7 @@ template +@@ -8664,7 +8664,7 @@ template \begin{itemdescr} \pnum \expects @@ -10517,7 +10501,7 @@ index b2503433..9d5fcfed 100644 \pnum \effects -@@ -8858,16 +8858,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type +@@ -8857,16 +8857,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type is undefined if the contained pointer \tcode{pm} is not null and the lockable object pointed to by \tcode{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied @@ -10538,7 +10522,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -8952,7 +8952,7 @@ template +@@ -8951,7 +8951,7 @@ template \begin{itemdescr} \pnum \expects @@ -10547,7 +10531,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8976,7 +8976,7 @@ template +@@ -8975,7 +8975,7 @@ template \begin{itemdescr} \pnum \expects @@ -10556,7 +10540,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9101,7 +9101,7 @@ template +@@ -9100,7 +9100,7 @@ template \begin{itemdescr} \pnum \expects @@ -10565,7 +10549,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9141,7 +9141,7 @@ template +@@ -9140,7 +9140,7 @@ template \begin{itemdescr} \pnum \expects @@ -10574,7 +10558,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9280,7 +9280,7 @@ template int try_lock(L1&, L2&, L3&...); +@@ -9279,7 +9279,7 @@ template int try_lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10583,7 +10567,7 @@ index b2503433..9d5fcfed 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9309,7 +9309,7 @@ template void lock(L1&, L2&, L3&...); +@@ -9308,7 +9308,7 @@ template void lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10592,7 +10576,7 @@ index b2503433..9d5fcfed 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9978,7 +9978,7 @@ This can happen if the re-locking of the mutex throws an exception. +@@ -9977,7 +9977,7 @@ This can happen if the re-locking of the mutex throws an exception. \pnum In \ref{thread.condition.condvarany}, template arguments for template parameters named \tcode{Lock} @@ -10601,7 +10585,7 @@ index b2503433..9d5fcfed 100644 requirements\iref{thread.req.lockable.basic}. \begin{note} All of the standard -@@ -10916,24 +10916,24 @@ execute atomically. +@@ -10915,24 +10915,24 @@ execute atomically. \pnum \tcode{CompletionFunction} shall meet the @@ -10632,7 +10616,7 @@ index b2503433..9d5fcfed 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -11428,7 +11428,7 @@ namespace std { +@@ -11427,7 +11427,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10641,7 +10625,7 @@ index b2503433..9d5fcfed 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -11760,7 +11760,7 @@ namespace std { +@@ -11759,7 +11759,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10650,7 +10634,7 @@ index b2503433..9d5fcfed 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -12066,7 +12066,7 @@ namespace std { +@@ -12065,7 +12065,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10659,7 +10643,7 @@ index b2503433..9d5fcfed 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -13004,7 +13004,7 @@ the expression \tcode{d(ptr)} is valid. +@@ -13003,7 +13003,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -10668,7 +10652,7 @@ index b2503433..9d5fcfed 100644 \pnum If \tcode{D} is trivially copyable, -@@ -13062,7 +13062,7 @@ namespace std { +@@ -13061,7 +13061,7 @@ namespace std { \pnum This class meets the requirements of @@ -10677,7 +10661,7 @@ index b2503433..9d5fcfed 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -13210,8 +13210,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -13209,8 +13209,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -10688,7 +10672,7 @@ index b2503433..9d5fcfed 100644 \pnum \effects -@@ -13403,7 +13403,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -13402,7 +13402,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -10698,7 +10682,7 @@ index b2503433..9d5fcfed 100644 \pnum \tcode{T} may be an incomplete type. diff --git a/source/time.tex b/source/time.tex -index f3cefea4..05dd9136 100644 +index 2d6f9c27..5f3994d7 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1033,13 +1033,13 @@ SI definition is a measure of the quality of implementation. @@ -10911,7 +10895,7 @@ index f3cefea4..05dd9136 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index 25cadb3c..639cc237 100644 +index 530bb023..f1e23f45 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -270,9 +270,9 @@ template @@ -11407,14 +11391,14 @@ index 25cadb3c..639cc237 100644 2.43.0 -From a6221ef3a01c8ed0b6e1a9deef27974da6fac2f6 Mon Sep 17 00:00:00 2001 +From 572bce7fa3719c510e17c9b289ae342980d00227 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 -Subject: [PATCH 9/9] Remove awkward \linebreaks. +Subject: [PATCH 09/10] Remove awkward \linebreaks. --- source/algorithms.tex | 4 ++-- - source/containers.tex | 42 +++++++++++++++++++++--------------------- + source/containers.tex | 40 ++++++++++++++++++++-------------------- source/exec.tex | 12 ++++++------ source/memory.tex | 6 +++--- source/meta.tex | 2 +- @@ -11422,10 +11406,10 @@ Subject: [PATCH 9/9] Remove awkward \linebreaks. source/ranges.tex | 38 +++++++++++++++++++------------------- source/threads.tex | 8 ++++---- source/utilities.tex | 8 ++++---- - 9 files changed, 62 insertions(+), 62 deletions(-) + 9 files changed, 61 insertions(+), 61 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 4813bec6..a47a149f 100644 +index 16604a18..645754f2 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -7080,7 +7080,7 @@ Let: @@ -11447,7 +11431,7 @@ index 4813bec6..a47a149f 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index 0731405d..59118f4f 100644 +index 8e93903a..4d27d6ad 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1461,7 +1461,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11512,15 +11496,6 @@ index 0731405d..59118f4f 100644 If \tcode{equal_range(u.first) == r} is \tcode{false}, the behavior is undefined. Inserts \tcode{u} into \tcode{*this}. -@@ -17612,7 +17612,7 @@ template - \pnum - \effects - Equivalent to \tcode{flat_map(sorted_unique, key_cont, mapped_cont)} and --\tcode{flat_map(sorted_unique, key_cont, \linebreak{}mapped_cont, comp)}, respectively, -+\tcode{flat_map(sorted_unique, key_cont, mapped_cont, comp)}, respectively, - except that \tcode{\exposid{c}.keys} and \tcode{\exposid{c}.values} are constructed - with uses-allocator construction\iref{allocator.uses.construction}. - @@ -17796,7 +17796,7 @@ template constexpr pair emplace(Args&&... args); \pnum \effects @@ -11636,10 +11611,10 @@ index 0731405d..59118f4f 100644 @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) diff --git a/source/exec.tex b/source/exec.tex -index 16de2113..1bf60f69 100644 +index 000fe37d..4a9cbe26 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -3267,7 +3267,7 @@ except that \tcode{sch} is evaluated only once. +@@ -3292,7 +3292,7 @@ except that \tcode{sch} is evaluated only once. Let \tcode{out_sndr} and \tcode{env} be subexpressions such that \tcode{OutSndr} is \tcode{decltype((out_sndr))}. If \tcode{\exposconcept{sender-for}} is \tcode{false}, @@ -11648,7 +11623,7 @@ index 16de2113..1bf60f69 100644 \tcode{starts_on.transform_sender(out_sndr, env)} are ill-formed; otherwise \begin{itemize} \item -@@ -3647,7 +3647,7 @@ except that \tcode{sndr} is evaluated only once. +@@ -3672,7 +3672,7 @@ except that \tcode{sndr} is evaluated only once. \pnum Let \tcode{out_sndr} and \tcode{env} be subexpressions, let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and @@ -11657,7 +11632,7 @@ index 16de2113..1bf60f69 100644 If \tcode{\exposconcept{sender-for}} is \tcode{false}, then the expressions \tcode{on.transform_env(out_sndr, env)} and \tcode{on.transform_sender(out_sndr, env)} are ill-formed. -@@ -3789,7 +3789,7 @@ Let the expression \exposid{then-cpo} be one of +@@ -3814,7 +3814,7 @@ Let the expression \exposid{then-cpo} be one of For subexpressions \tcode{sndr} and \tcode{f}, if \tcode{decltype((sndr))} does not satisfy \libconcept{sender}, or \tcode{decltype((f))} does not satisfy \exposconcept{movable-value}, @@ -11666,7 +11641,7 @@ index 16de2113..1bf60f69 100644 \pnum Otherwise, -@@ -4090,7 +4090,7 @@ is initialized with a callable object equivalent to the following: +@@ -4115,7 +4115,7 @@ is initialized with a callable object equivalent to the following: Let \tcode{sndr} and \tcode{env} be subexpressions, and let \tcode{Sndr} be \tcode{decltype((sndr))}. If @@ -11675,7 +11650,7 @@ index 16de2113..1bf60f69 100644 is \tcode{false}, then the expression \tcode{\exposid{let-cpo}.transform_env(sndr, env)} is ill-formed. -@@ -4731,7 +4731,7 @@ try { +@@ -4756,7 +4756,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -11684,7 +11659,7 @@ index 16de2113..1bf60f69 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -5762,7 +5762,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. +@@ -5787,7 +5787,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. \pnum For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. @@ -11694,7 +11669,7 @@ index 16de2113..1bf60f69 100644 the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: diff --git a/source/memory.tex b/source/memory.tex -index 0b20e5ce..87658ba8 100644 +index b7efaa69..2974c94e 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1245,7 +1245,7 @@ A \tcode{tuple} value determined as follows: @@ -11725,7 +11700,7 @@ index 0b20e5ce..87658ba8 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index 02a1d8f4..63be3ac8 100644 +index 925356e2..f933e848 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -2526,7 +2526,7 @@ present as follows: @@ -11738,7 +11713,7 @@ index 02a1d8f4..63be3ac8 100644 \item Otherwise, if diff --git a/source/numerics.tex b/source/numerics.tex -index 084414fa..0b84dc63 100644 +index 10fdf6e7..41deb6c1 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -13822,7 +13822,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. @@ -11760,7 +11735,7 @@ index 084414fa..0b84dc63 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index e12de083..afbb6b0c 100644 +index 9fff6e28..3f999c75 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -11914,10 +11889,10 @@ index e12de083..afbb6b0c 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index 9d5fcfed..20d0f06a 100644 +index 6a73b71a..d966dcbf 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -3481,7 +3481,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, +@@ -3480,7 +3480,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11926,7 +11901,7 @@ index 9d5fcfed..20d0f06a 100644 \pnum \effects -@@ -4774,7 +4774,7 @@ For the \tcode{volatile} overload of this function, +@@ -4773,7 +4773,7 @@ For the \tcode{volatile} overload of this function, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11935,7 +11910,7 @@ index 9d5fcfed..20d0f06a 100644 \pnum \effects -@@ -6285,7 +6285,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de +@@ -6284,7 +6284,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11944,7 +11919,7 @@ index 9d5fcfed..20d0f06a 100644 \pnum \effects -@@ -6601,7 +6601,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire +@@ -6600,7 +6600,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11954,7 +11929,7 @@ index 9d5fcfed..20d0f06a 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index 639cc237..06e48fd5 100644 +index f1e23f45..c980a039 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -2078,7 +2078,7 @@ equals \tcode{tuple_size_v>}, @@ -11996,3 +11971,87 @@ index 639cc237..06e48fd5 100644 -- 2.43.0 + +From e3aff7dee9e37fa14bc6ac447bfa0dd135589ce3 Mon Sep 17 00:00:00 2001 +From: Eelis van der Weegen +Date: Thu, 25 Dec 2025 12:43:53 +0100 +Subject: [PATCH 10/10] Use \literalterminal more. + +--- + source/lex.tex | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +diff --git a/source/lex.tex b/source/lex.tex +index 1b8befd1..809a61b2 100644 +--- a/source/lex.tex ++++ b/source/lex.tex +@@ -446,7 +446,7 @@ for the respective Unicode encoding form. + + \begin{bnf} + \nontermdef{named-universal-character}\br +- \terminal{\textbackslash N\{} n-char-sequence \terminal{\}} ++ \literalterminal{\textbackslash N\{} n-char-sequence \literalterminal{\}} + \end{bnf} + + \begin{bnf} +@@ -461,9 +461,9 @@ for the respective Unicode encoding form. + + \begin{bnf} + \nontermdef{universal-character-name}\br +- \terminal{\textbackslash u} hex-quad\br +- \terminal{\textbackslash U} hex-quad hex-quad\br +- \terminal{\textbackslash u\{} simple-hexadecimal-digit-sequence \terminal{\}}\br ++ \literalterminal{\textbackslash u} hex-quad\br ++ \literalterminal{\textbackslash U} hex-quad hex-quad\br ++ \literalterminal{\textbackslash u\{} simple-hexadecimal-digit-sequence \literalterminal{\}}\br + named-universal-character + \end{bnf} + +@@ -1170,14 +1170,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. + + \begin{bnf} + \nontermdef{binary-literal}\br +- \terminal{0b} binary-digit\br +- \terminal{0B} binary-digit\br ++ \literalterminal{0b} binary-digit\br ++ \literalterminal{0B} binary-digit\br + binary-literal \opt{\literalterminal{'}} binary-digit + \end{bnf} + + \begin{bnf} + \nontermdef{octal-literal}\br +- \terminal{0}\br ++ \literalterminal{0}\br + octal-literal \opt{\literalterminal{'}} octal-digit + \end{bnf} + +@@ -1194,22 +1194,22 @@ a literal has a type and a value category\iref{expr.prim.literal}. + + \begin{bnf} + \nontermdef{binary-digit} \textnormal{one of}\br +- \terminal{0 1} ++ \literalterminal{0 1} + \end{bnf} + + \begin{bnf} + \nontermdef{octal-digit} \textnormal{one of}\br +- \terminal{0 1 2 3 4 5 6 7} ++ \literalterminal{0 1 2 3 4 5 6 7} + \end{bnf} + + \begin{bnf} + \nontermdef{nonzero-digit} \textnormal{one of}\br +- \terminal{1 2 3 4 5 6 7 8 9} ++ \literalterminal{1 2 3 4 5 6 7 8 9} + \end{bnf} + + \begin{bnf} + \nontermdef{hexadecimal-prefix} \textnormal{one of}\br +- \terminal{0x 0X} ++ \literalterminal{0x 0X} + \end{bnf} + + \begin{bnf} +-- +2.43.0 + diff --git a/lastbuild.sig b/lastbuild.sig index d522a460da..0435edfefb 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ -htmlgen 28b6c103f58b9b4305a7d15b224212f1727b7b05 -draft 1d9fdb066e95b7be58881f24977a20a51359097c -bbc2beaa01d1c9e4cd298aa91f392517393b5f5f htmlgen.patch +htmlgen ec08ed9082b71d87ffc970becceff11c5f8438b2 +draft 5c8fc4311ab8ec82f789e9eadf4cf39f47beabf9 +4d7f727a3cef73dafed68af528bc04371326b1f9 htmlgen.patch From 2986cf5a801e3b29a712f7d4149057015336dff8 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Wed, 8 Apr 2026 20:22:35 -0500 Subject: [PATCH 22/36] update --- gh-pages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gh-pages b/gh-pages index 5fabcc0734..10466a4e2e 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 5fabcc07340c334f9e21025e048c896a71e49985 +Subproject commit 10466a4e2e30d9767eb6b6d58b4eb11ba470263c From 214566a77172fce5910fd89cfe523899460a75e5 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Mon, 20 Apr 2026 00:48:41 -0500 Subject: [PATCH 23/36] update --- gh-pages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gh-pages b/gh-pages index 10466a4e2e..595a1c5608 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 10466a4e2e30d9767eb6b6d58b4eb11ba470263c +Subproject commit 595a1c5608d799902ba8eb12d4cc20725ec17a63 From 3d693dc0f37b0892b98aff7cafc675f43a414642 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Tue, 21 Apr 2026 21:45:46 -0500 Subject: [PATCH 24/36] update --- gh-pages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gh-pages b/gh-pages index 595a1c5608..71c2b82292 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 595a1c5608d799902ba8eb12d4cc20725ec17a63 +Subproject commit 71c2b82292c4df5182be2a860089391b2e8b2bda From 4fb4470d7e6d8e9c7f85399ab91fdc006747738b Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Tue, 21 Apr 2026 21:52:46 -0500 Subject: [PATCH 25/36] Update --- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 2116 ++++++++++++++++++++++--------------------------- lastbuild.sig | 4 +- 4 files changed, 944 insertions(+), 1180 deletions(-) diff --git a/draft b/draft index 5c8fc4311a..1e747bf358 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 5c8fc4311ab8ec82f789e9eadf4cf39f47beabf9 +Subproject commit 1e747bf358e4546e9661c6bcee01a1dd71d2186f diff --git a/gh-pages b/gh-pages index 71c2b82292..0726db91c8 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 71c2b82292c4df5182be2a860089391b2e8b2bda +Subproject commit 0726db91c826d1ca39f90d991585882467de554c diff --git a/htmlgen.patch b/htmlgen.patch index 605756f5ca..9b4a155f5d 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From bb7ca297960b66cd35bae9ab9023b4ce400d4fc9 Mon Sep 17 00:00:00 2001 +From b60946b63be3c75c4fd6750a7c4776a6bbe6824b Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout @@ -10,10 +10,10 @@ Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index de215a04..8e863f4c 100644 +index 43122c5e..09feaca9 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -324,7 +324,7 @@ Given +@@ -342,7 +342,7 @@ Given #include struct C { @@ -22,7 +22,7 @@ index de215a04..8e863f4c 100644 }; int main() { -@@ -2629,23 +2629,23 @@ namespace AB { +@@ -2652,23 +2652,23 @@ namespace AB { void h() { @@ -59,10 +59,10 @@ index de215a04..8e863f4c 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 10fffe4f..de418bed 100644 +index ea8b1848..fb8b4ea2 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -2938,7 +2938,7 @@ struct s2 { +@@ -2939,7 +2939,7 @@ struct s2 { } auto g() { return [] { @@ -75,22 +75,22 @@ index 10fffe4f..de418bed 100644 2.43.0 -From 519c97d9af6000c8ab322c984b6cd7a2431a94f3 Mon Sep 17 00:00:00 2001 +From 1d3d72cbf6686216eb8474491baf4bcd08568eb0 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 Subject: [PATCH 02/10] Use new link macros. --- source/algorithms.tex | 4 +- - source/basic.tex | 97 +++++++------- + source/basic.tex | 93 +++++++------- source/classes.tex | 22 ++-- source/compatibility.tex | 4 +- source/concepts.tex | 12 +- - source/containers.tex | 48 +++---- - source/declarations.tex | 67 +++++----- + source/containers.tex | 48 ++++---- + source/declarations.tex | 57 +++++---- source/diagnostics.tex | 6 +- - source/exceptions.tex | 36 +++--- - source/expressions.tex | 266 ++++++++++++++++++++------------------- + source/exceptions.tex | 34 +++--- + source/expressions.tex | 258 ++++++++++++++++++++------------------- source/future.tex | 10 +- source/intro.tex | 19 +-- source/iostreams.tex | 74 +++++------ @@ -98,20 +98,20 @@ Subject: [PATCH 02/10] Use new link macros. source/lex.tex | 6 +- source/lib-intro.tex | 71 +++++------ source/limits.tex | 2 +- - source/numerics.tex | 55 ++++---- + source/numerics.tex | 55 ++++----- source/overloading.tex | 64 +++++----- - source/preprocessor.tex | 14 +-- + source/preprocessor.tex | 12 +- source/statements.tex | 30 ++--- source/strings.tex | 8 +- - source/support.tex | 90 ++++++------- - source/templates.tex | 124 +++++++++--------- - source/threads.tex | 45 ++++--- + source/support.tex | 86 ++++++------- + source/templates.tex | 114 ++++++++--------- + source/threads.tex | 35 +++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 600 insertions(+), 610 deletions(-) + 27 files changed, 574 insertions(+), 586 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index baf3e4f2..c313c941 100644 +index af6c2c98..3074bc3a 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -123,7 +123,7 @@ index baf3e4f2..c313c941 100644 \pnum The following subclauses describe components for -@@ -10243,7 +10243,7 @@ In either case, twice as many projections as comparisons. +@@ -10225,7 +10225,7 @@ In either case, twice as many projections as comparisons. \pnum \remarks @@ -133,10 +133,10 @@ index baf3e4f2..c313c941 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index 8e863f4c..818f9001 100644 +index 09feaca9..c6a2b6c0 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -162,7 +162,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. +@@ -180,7 +180,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. \indextext{linkage}% A name used in more than one translation unit can potentially refer to the same entity in these translation units depending on the @@ -145,7 +145,7 @@ index 8e863f4c..818f9001 100644 translation unit. \rSec1[basic.def]{Declarations and definitions} -@@ -187,7 +187,7 @@ A declaration can also have effects including: +@@ -205,7 +205,7 @@ A declaration can also have effects including: \item a static assertion\iref{dcl.pre}, \item controlling template instantiation\iref{temp.explicit}, \item guiding template argument deduction for constructors\iref{temp.deduct.guide}, @@ -154,16 +154,7 @@ index 8e863f4c..818f9001 100644 \item nothing (in the case of an \grammarterm{empty-declaration}). \end{itemize} \end{note} -@@ -274,7 +274,7 @@ that defines a function, a class, a variable, or a static data member, - \item it is - an explicit instantiation declaration\iref{temp.explicit}, or - \item it is --an explicit specialization\iref{temp.expl.spec} whose -+an \link{explicit specialization}{temp.expl.spec} whose - \grammarterm{declaration} is not a definition. - \end{itemize} - A declaration is said to be a \defn{definition} of each entity that it defines. -@@ -316,7 +316,7 @@ In some circumstances, \Cpp{} implementations implicitly define the +@@ -334,7 +334,7 @@ In some circumstances, \Cpp{} implementations implicitly define the default constructor\iref{class.default.ctor}, copy constructor, move constructor\iref{class.copy.ctor}, copy assignment operator, move assignment operator\iref{class.copy.assign}, @@ -172,7 +163,7 @@ index 8e863f4c..818f9001 100644 \end{note} \begin{example} Given -@@ -401,7 +401,7 @@ defined as follows: +@@ -419,7 +419,7 @@ defined as follows: an \grammarterm{id-expression}\iref{expr.prim.id} or a \grammarterm{splice-expression}\iref{expr.prim.splice}, the set contains only $E$. @@ -181,7 +172,7 @@ index 8e863f4c..818f9001 100644 an array operand, the set contains the potential results of that operand. \item If $E$ is a class member access expression\iref{expr.ref} of the form -@@ -412,16 +412,15 @@ the set contains the potential results of $E_1$. +@@ -430,16 +430,15 @@ the set contains the potential results of $E_1$. \item If $E$ is a class member access expression naming a static data member, the set contains the \grammarterm{id-expression} designating the data member. @@ -202,7 +193,7 @@ index 8e863f4c..818f9001 100644 contains the potential results of the right operand. \item Otherwise, the set is empty. \end{itemize} -@@ -583,8 +582,8 @@ implicitly-defined +@@ -601,8 +600,8 @@ implicitly-defined copy assignment or move assignment function for another class as specified in~\ref{class.copy.assign}. A constructor for a class is odr-used as specified @@ -213,7 +204,7 @@ index 8e863f4c..818f9001 100644 \pnum A local entity\iref{basic.pre} -@@ -656,7 +655,7 @@ void h() { +@@ -674,7 +673,7 @@ void h() { \pnum Every program shall contain at least one definition of every function or variable that is odr-used in that program @@ -222,7 +213,7 @@ index 8e863f4c..818f9001 100644 The definition can appear explicitly in the program, it can be found in the standard or a user-defined library, or (when appropriate) it is implicitly defined (see~\ref{class.default.ctor}, \ref{class.copy.ctor}, -@@ -704,9 +703,9 @@ The rules for declarations and expressions +@@ -722,9 +721,9 @@ The rules for declarations and expressions describe in which contexts complete class types are required. A class type \tcode{T} must be complete if \begin{itemize} @@ -235,7 +226,7 @@ index 8e863f4c..818f9001 100644 \item \tcode{T} is used as the allocated type or array element type in a \grammarterm{new-expression}\iref{expr.new}, or \item an lvalue-to-rvalue conversion is applied to -@@ -726,7 +725,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or +@@ -744,7 +743,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or \keyword{sizeof} operator\iref{expr.sizeof} is applied to an operand of type \tcode{T}, or \item a function with a return type or argument type of type \tcode{T} @@ -244,16 +235,7 @@ index 8e863f4c..818f9001 100644 \item a class with a base class of type \tcode{T} is defined\iref{class.derived}, or \item an lvalue of type \tcode{T} is assigned to\iref{expr.assign}, or -@@ -781,7 +780,7 @@ template specializations\iref{temp.spec.partial.match}, except that a name can r - a non-volatile const object with internal or no linkage if the object - \begin{itemize} - \item has the same literal type in all definitions of \tcode{D}, --\item is initialized with a constant expression\iref{expr.const.const}, -+\item is initialized with a \link{constant expression}{expr.const.const}, - \item is not odr-used in any definition of \tcode{D}, and - \item has the same value in all definitions of \tcode{D}, - \end{itemize} -@@ -2922,7 +2921,7 @@ are attached to the same module. +@@ -2945,7 +2944,7 @@ are attached to the same module. \indextext{linkage!\idxcode{inline} and}% \indextext{\idxcode{inline}!linkage of}% The name of an entity @@ -262,7 +244,7 @@ index 8e863f4c..818f9001 100644 has internal linkage if it is the name of \begin{itemize} \item -@@ -2963,7 +2962,7 @@ typedef declaration in which the class has the typedef name for linkage +@@ -2986,7 +2985,7 @@ typedef declaration in which the class has the typedef name for linkage purposes\iref{dcl.typedef}; or \item \indextext{enumeration!linkage of}% @@ -271,7 +253,7 @@ index 8e863f4c..818f9001 100644 in a typedef declaration in which the enumeration has the typedef name for linkage purposes\iref{dcl.typedef}; or \item an unnamed enumeration -@@ -3039,7 +3038,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. +@@ -3062,7 +3061,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. \pnum \indextext{linkage!no}% Names not covered by these rules have no linkage. Moreover, except as @@ -280,7 +262,7 @@ index 8e863f4c..818f9001 100644 linkage. \pnum -@@ -3398,8 +3397,8 @@ features of the language, such as references and virtual functions, might +@@ -3421,8 +3420,8 @@ features of the language, such as references and virtual functions, might involve additional memory locations that are not accessible to programs but are managed by the implementation. \end{note} @@ -291,7 +273,7 @@ index 8e863f4c..818f9001 100644 locations without interfering with each other. \pnum -@@ -3443,15 +3442,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but +@@ -3466,15 +3465,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but The constructs in a \Cpp{} program create, destroy, refer to, access, and manipulate objects. An \defn{object} is created @@ -310,7 +292,7 @@ index 8e863f4c..818f9001 100644 and in its period of destruction\iref{class.cdtor}. \begin{note} -@@ -3585,7 +3584,7 @@ A \defn{potentially-overlapping subobject} is either: +@@ -3608,7 +3607,7 @@ A \defn{potentially-overlapping subobject} is either: \begin{itemize} \item a base class subobject, or \item a non-static data member @@ -319,7 +301,7 @@ index 8e863f4c..818f9001 100644 \end{itemize} \pnum -@@ -3606,7 +3605,7 @@ Otherwise, the circumstances under which the object has zero size +@@ -3629,7 +3628,7 @@ Otherwise, the circumstances under which the object has zero size are \impldef{which non-standard-layout objects containing no data are considered empty}. \indextext{most derived object!bit-field}% @@ -328,7 +310,7 @@ index 8e863f4c..818f9001 100644 an object with nonzero size shall occupy one or more bytes of storage, including every byte that is occupied in full or in part -@@ -4199,16 +4198,16 @@ the result of the evaluation is that erroneous value: +@@ -4269,16 +4268,16 @@ the result of the evaluation is that erroneous value: is produced by the evaluation of: \begin{itemize} \item @@ -348,7 +330,7 @@ index 8e863f4c..818f9001 100644 \end{itemize} then the result of the operation is an indeterminate value or that erroneous value, respectively. -@@ -4399,8 +4398,8 @@ specified in~\ref{class.copy.elision}. +@@ -4469,8 +4468,8 @@ specified in~\ref{class.copy.elision}. \indextext{storage duration!dynamic|(} \pnum @@ -359,7 +341,7 @@ index 8e863f4c..818f9001 100644 \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -@@ -4564,9 +4563,9 @@ that would match a handler\iref{except.handle} of type +@@ -4634,9 +4633,9 @@ that would match a handler\iref{except.handle} of type \tcode{std::bad_alloc}\iref{bad.alloc}. \pnum @@ -372,7 +354,7 @@ index 8e863f4c..818f9001 100644 a coroutine state\iref{dcl.fct.def.coroutine}, or called indirectly through calls to the functions in the \Cpp{} standard library. -@@ -5091,9 +5090,9 @@ shall be destroyed before +@@ -5161,9 +5160,9 @@ shall be destroyed before impose requirements on implementations regarding the representation of types. There are two kinds of types: fundamental types and compound types. @@ -385,7 +367,7 @@ index 8e863f4c..818f9001 100644 \end{note} \pnum -@@ -5267,7 +5266,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, +@@ -5337,7 +5336,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, pointer types, pointer-to-member types\iref{basic.compound}, \tcode{std::meta::\brk{}info}, \tcode{std::nullptr_t}, and @@ -394,7 +376,7 @@ index 8e863f4c..818f9001 100644 types are collectively called \defnadjx{scalar}{types}{type}. \label{term.trivially.copyable.type}% -@@ -5292,7 +5291,7 @@ A type is a \defnadj{literal}{type} if it is: +@@ -5362,7 +5361,7 @@ A type is a \defnadj{literal}{type} if it is: \item a scalar type; or \item a reference type; or \item an array of literal type; or @@ -403,7 +385,7 @@ index 8e863f4c..818f9001 100644 has all of the following properties: \begin{itemize} \item it has a constexpr destructor\iref{dcl.constexpr}, -@@ -5326,8 +5325,8 @@ will be usable in a constant expression. +@@ -5396,8 +5395,8 @@ will be usable in a constant expression. Two types \cvqual{cv1} \tcode{T1} and \cvqual{cv2} \tcode{T2} are \defnadjx{layout-compatible}{types}{type} if \tcode{T1} and \tcode{T2} are the same type, @@ -414,7 +396,7 @@ index 8e863f4c..818f9001 100644 \pnum A type is \defn{consteval-only} if it is -@@ -5896,7 +5895,7 @@ ordinary pointers to objects or functions. +@@ -5971,7 +5970,7 @@ ordinary pointers to objects or functions. which identify members of a given type within objects of a given class, \ref{dcl.mptr}. Pointers to data members and pointers to member functions are collectively @@ -423,7 +405,7 @@ index 8e863f4c..818f9001 100644 \end{itemize} \pnum -@@ -5974,7 +5973,7 @@ layout-compatible types shall +@@ -6049,7 +6048,7 @@ layout-compatible types shall have the same value representation and alignment requirements\iref{basic.align}. \begin{note} @@ -432,7 +414,7 @@ index 8e863f4c..818f9001 100644 representation, but their range of valid values is restricted by the extended alignment requirement. \end{note} -@@ -6289,8 +6288,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. +@@ -6386,8 +6385,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. \indextext{program execution|(} \pnum @@ -443,7 +425,7 @@ index 8e863f4c..818f9001 100644 block. Such an object exists and retains its last-stored value during the execution of the block and while the block is suspended (by a call of a function, suspension of a coroutine\iref{expr.await}, or receipt of a signal). -@@ -6335,7 +6334,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, +@@ -6432,7 +6431,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, the initialization of the entities captured by copy and the constituent expressions of the \grammarterm{initializer} of the \grammarterm{init-capture}{s}, \item @@ -452,7 +434,7 @@ index 8e863f4c..818f9001 100644 the constituent expressions of each default argument\iref{dcl.fct.default} used in the call, or \item -@@ -6366,7 +6365,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope +@@ -6463,7 +6462,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope A \defn{full-expression} is \begin{itemize} \item @@ -462,7 +444,7 @@ index 8e863f4c..818f9001 100644 a \grammarterm{constant-expression}\iref{expr.const.core}, \item diff --git a/source/classes.tex b/source/classes.tex -index 058a3176..7883ea0a 100644 +index fbd7a165..76ea152b 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -188,10 +188,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: @@ -488,7 +470,7 @@ index 058a3176..7883ea0a 100644 is a member of the class, and each such \grammarterm{member-declaration} shall either -@@ -589,7 +589,7 @@ Nested types are classes\iref{class.name,class.nest} and +@@ -593,7 +593,7 @@ Nested types are classes\iref{class.name,class.nest} and enumerations\iref{dcl.enum} declared in the class and arbitrary types declared as members by use of a typedef declaration\iref{dcl.typedef} or \grammarterm{alias-declaration}. @@ -497,7 +479,7 @@ index 058a3176..7883ea0a 100644 are members of the class. \pnum -@@ -735,9 +735,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali +@@ -739,9 +739,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali The \grammarterm{member-declarator-list} can be omitted only after a \grammarterm{class-specifier} or an \grammarterm{enum-specifier} or in a @@ -509,7 +491,7 @@ index 058a3176..7883ea0a 100644 that is not a friend declaration. \pnum -@@ -840,7 +840,7 @@ unscoped enumeration type; and +@@ -844,7 +844,7 @@ unscoped enumeration type; and \pnum In addition, if class \tcode{T} has a user-declared @@ -518,7 +500,7 @@ index 058a3176..7883ea0a 100644 \tcode{T} shall have a name different from \tcode{T}. \pnum -@@ -890,7 +890,7 @@ non-static data members (in any order) have layout-compatible +@@ -894,7 +894,7 @@ non-static data members (in any order) have layout-compatible types\iref{term.layout.compatible.type}. \pnum @@ -527,7 +509,7 @@ index 058a3176..7883ea0a 100644 of struct type \tcode{T1}, it is permitted to read a non-static data member \tcode{m} of another union member of struct type \tcode{T2} provided \tcode{m} is part of the common initial sequence of \tcode{T1} and \tcode{T2}; -@@ -2217,7 +2217,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation +@@ -2238,7 +2238,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation An array of class type contains several subobjects for each of which the destructor is invoked. \end{note} @@ -536,7 +518,7 @@ index 058a3176..7883ea0a 100644 if it is invoked or as specified in~\ref{expr.new}, \ref{stmt.return}, \ref{dcl.init.aggr}, \ref{class.base.init}, and~\ref{except.throw}. -@@ -6322,7 +6322,7 @@ associated with a \grammarterm{try-block} (if there is one), +@@ -6346,7 +6346,7 @@ associated with a \grammarterm{try-block} (if there is one), the copy-initialization of the exception object can be omitted by constructing $o$ directly into the exception object; @@ -546,10 +528,10 @@ index 058a3176..7883ea0a 100644 corresponding parameter if the meaning of the program will be unchanged except for the execution of a constructor and destructor for the parameter copy object; diff --git a/source/compatibility.tex b/source/compatibility.tex -index edbd9196..60706217 100644 +index e3512400..cdca4c22 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -1990,8 +1990,8 @@ deallocation functions\iref{expr.new}. +@@ -1981,8 +1981,8 @@ deallocation functions\iref{expr.new}. A conditional expression with a throw expression as its second or third operand keeps the type and value category of the other operand. \rationale @@ -609,7 +591,7 @@ index d1e15a6e..42828a4b 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index 89f3bca5..d64183f9 100644 +index 571b56d0..65081f46 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -6125,14 +6125,14 @@ namespace std { @@ -685,7 +667,7 @@ index 89f3bca5..d64183f9 100644 \end{itemdescr} \indexlibrarymember{reverse}{forward_list}% -@@ -9045,7 +9045,7 @@ A +@@ -9069,7 +9069,7 @@ A is a sequence container that supports bidirectional iterators and allows constant time insert and erase operations anywhere within the sequence, with storage management handled @@ -694,7 +676,7 @@ index 89f3bca5..d64183f9 100644 fast random access to list elements is not supported, but many algorithms only need sequential access anyway. -@@ -9221,7 +9221,7 @@ namespace std { +@@ -9245,7 +9245,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{list} if the allocator meets the @@ -703,7 +685,7 @@ index 89f3bca5..d64183f9 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{list} is referenced. -@@ -9634,7 +9634,7 @@ applications of the corresponding predicate. +@@ -9658,7 +9658,7 @@ applications of the corresponding predicate. \pnum \remarks @@ -712,7 +694,7 @@ index 89f3bca5..d64183f9 100644 \end{itemdescr} \indexlibrarymember{unique}{list}% -@@ -9757,7 +9757,7 @@ comparisons, where $N$ is \tcode{size()}. +@@ -9781,7 +9781,7 @@ comparisons, where $N$ is \tcode{size()}. \pnum \remarks @@ -721,7 +703,7 @@ index 89f3bca5..d64183f9 100644 \end{itemdescr} \rSec3[list.erasure]{Erasure} -@@ -9865,7 +9865,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, +@@ -9889,7 +9889,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, of a sequence container, including most of the optional sequence container requirements\iref{sequence.reqmts}, and, for an element type other than \tcode{bool}, @@ -730,7 +712,7 @@ index 89f3bca5..d64183f9 100644 The exceptions are the \tcode{push_front}, \tcode{prepend_range}, \tcode{pop_front}, and \tcode{emplace_front} member functions, which are not provided. Descriptions are provided here only for operations on \tcode{vector} -@@ -10003,7 +10003,7 @@ namespace std { +@@ -10027,7 +10027,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{vector} if the allocator meets the @@ -739,7 +721,7 @@ index 89f3bca5..d64183f9 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{vector} is referenced. -@@ -10599,7 +10599,7 @@ Unless described below, all operations have the same requirements and +@@ -10623,7 +10623,7 @@ Unless described below, all operations have the same requirements and semantics as the \tcode{vector} primary template, except that operations dealing with the \tcode{bool} value type map to bit values in the container storage and @@ -748,7 +730,7 @@ index 89f3bca5..d64183f9 100644 is not used to construct these values. \pnum -@@ -15740,9 +15740,9 @@ and +@@ -15761,9 +15761,9 @@ and can be used to instantiate \tcode{queue}. In particular, @@ -760,7 +742,7 @@ index 89f3bca5..d64183f9 100644 can be used. \begin{codeblock} -@@ -16097,15 +16097,15 @@ and +@@ -16118,15 +16118,15 @@ and can be used to instantiate \tcode{priority_queue}. In particular, @@ -779,7 +761,7 @@ index 89f3bca5..d64183f9 100644 \begin{codeblock} namespace std { -@@ -16653,10 +16653,10 @@ and +@@ -16674,10 +16674,10 @@ and can be used to instantiate \tcode{stack}. In particular, @@ -794,7 +776,7 @@ index 89f3bca5..d64183f9 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index eac2152f..cc6330bc 100644 +index 0e0c521e..00cff00a 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -830,7 +812,7 @@ index eac2152f..cc6330bc 100644 In the global module, a function defined within a class definition is implicitly inline\iref{class.mfct,class.friend}. \end{note} -@@ -1288,7 +1288,7 @@ the object referenced is a non-const object and can be modified through +@@ -1289,7 +1289,7 @@ the object referenced is a non-const object and can be modified through some other access path. \begin{note} Cv-qualifiers are supported by the type system so that they cannot be @@ -839,7 +821,7 @@ index eac2152f..cc6330bc 100644 \end{note} \pnum -@@ -1724,8 +1724,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; +@@ -1733,8 +1733,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; \item otherwise, \tcode{decltype($E$)} is the type of $E$. \end{itemize} @@ -849,7 +831,7 @@ index eac2152f..cc6330bc 100644 \begin{example} \begin{codeblock} -@@ -1924,7 +1923,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. +@@ -1933,7 +1932,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. If the \grammarterm{init-declarator-list} contains more than one \grammarterm{init-declarator}, they shall all form declarations of variables. The type of each declared variable is determined @@ -858,7 +840,7 @@ index eac2152f..cc6330bc 100644 and if the type that replaces the placeholder type is not the same in each deduction, the program is ill-formed. -@@ -2066,7 +2065,7 @@ A function declared with a return type that uses a placeholder type shall not +@@ -2075,7 +2074,7 @@ A function declared with a return type that uses a placeholder type shall not be a coroutine\iref{dcl.fct.def.coroutine}. \pnum @@ -867,7 +849,7 @@ index eac2152f..cc6330bc 100644 instantiation of an entity declared using a placeholder type, but it also does not prevent that entity from being instantiated as needed to determine its type. -@@ -2281,7 +2280,7 @@ in the \grammarterm{type-specifier-seq} +@@ -2290,7 +2289,7 @@ in the \grammarterm{type-specifier-seq} in the \grammarterm{new-type-id} or \grammarterm{type-id} of a \grammarterm{new-expression}\iref{expr.new}, as the \grammarterm{simple-type-specifier} @@ -876,7 +858,7 @@ index eac2152f..cc6330bc 100644 or as the \grammarterm{type-specifier} in the \grammarterm{parameter-declaration} of a \grammarterm{template-parameter}\iref{temp.param}. -@@ -4489,7 +4488,7 @@ int a; +@@ -4500,7 +4499,7 @@ int a; int f(int a, int b = a); // error: parameter \tcode{a} used as default argument typedef int I; int g(float I, int b = I(2)); // error: parameter \tcode{I} found @@ -885,7 +867,7 @@ index eac2152f..cc6330bc 100644 \end{codeblock} \end{example} A non-static member shall not be designated in a default argument unless -@@ -6214,15 +6213,15 @@ This requires a conversion +@@ -6225,15 +6224,15 @@ This requires a conversion function\iref{class.conv.fct} returning a reference type. \end{footnote} (this conversion is selected by enumerating the applicable conversion @@ -905,7 +887,7 @@ index eac2152f..cc6330bc 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7735,7 +7734,7 @@ the initializer is +@@ -7746,7 +7745,7 @@ the initializer is where \tcode{get} undergoes argument-dependent lookup\iref{basic.lookup.argdep}. In either case, \tcode{get} is interpreted as a \grammarterm{template-id}. \begin{note} @@ -914,7 +896,7 @@ index eac2152f..cc6330bc 100644 \end{note} In either case, \exposid{e} is an lvalue if the type of the entity \exposid{e} is an lvalue reference and an xvalue otherwise. -@@ -7886,7 +7885,7 @@ is not looked up and is introduced by +@@ -7897,7 +7896,7 @@ is not looked up and is introduced by the \grammarterm{enum-specifier} or \grammarterm{opaque-enum-declaration}. If the \grammarterm{enum-head-name} of an \grammarterm{opaque-enum-declaration} contains a \grammarterm{nested-name-specifier}, @@ -923,31 +905,7 @@ index eac2152f..cc6330bc 100644 \pnum \indextext{constant!enumeration}% -@@ -7968,8 +7967,9 @@ If the underlying type is fixed, the type of each enumerator - prior to the closing brace is the underlying - type - and the \grammarterm{constant-expression} in the \grammarterm{enumerator-definition} --shall be a converted constant expression of the underlying --type\iref{expr.const.const}. -+shall be a -+\deflinkx{converted constant expression}{expression!converted constant}{expr.const.const} -+of the underlying type. - If the underlying - type is not fixed, - the type of each enumerator prior to the closing brace is determined as -@@ -7978,8 +7978,9 @@ follows: - \begin{itemize} - \item If an - initializer is specified for an enumerator, the --\grammarterm{constant-expression} shall be an integral constant --expression\iref{expr.const.const}. If the expression has -+\grammarterm{constant-expression} shall be an -+\deflinkx{integral constant expression}{expression!integral constant}{expr.const.const}. -+If the expression has - unscoped enumeration type, the enumerator has the underlying type of that - enumeration type, otherwise it has the same type as the expression. - -@@ -8051,7 +8052,7 @@ if they have the same underlying type. +@@ -8062,7 +8061,7 @@ if they have the same underlying type. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -956,7 +914,7 @@ index eac2152f..cc6330bc 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8334,7 +8335,7 @@ appertains to the namespace being defined or extended. +@@ -8345,7 +8344,7 @@ appertains to the namespace being defined or extended. Members of an inline namespace can be used in most respects as though they were members of the innermost enclosing namespace. Specifically, the inline namespace and its enclosing namespace are both added to the set of associated namespaces used in @@ -965,7 +923,7 @@ index eac2152f..cc6330bc 100644 and a \grammarterm{using-directive}\iref{namespace.udir} that names the inline namespace is implicitly inserted into the enclosing namespace as for an unnamed namespace\iref{namespace.unnamed}. Furthermore, each -@@ -9167,7 +9168,7 @@ different language linkages are distinct types even if they are +@@ -9178,7 +9177,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -974,7 +932,7 @@ index eac2152f..cc6330bc 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9497,18 +9498,18 @@ For each individual attribute, the form of the +@@ -9508,18 +9507,18 @@ For each individual attribute, the form of the \pnum In an \grammarterm{attribute-list}, an ellipsis may appear only if that \grammarterm{attribute}'s specification permits it. An \grammarterm{attribute} followed @@ -998,7 +956,7 @@ index eac2152f..cc6330bc 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9619,7 +9620,7 @@ declaration, the program is ill-formed. +@@ -9637,7 +9636,7 @@ declaration, the program is ill-formed. \pnum An \grammarterm{alignment-specifier} of the form \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same @@ -1007,7 +965,7 @@ index eac2152f..cc6330bc 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9799,7 +9800,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9817,7 +9816,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -1017,10 +975,10 @@ index eac2152f..cc6330bc 100644 No \grammarterm{attribute-argument-clause} shall be present. A fallthrough statement may only appear within diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index 47be572c..8b010321 100644 +index fc53cdb3..9a7aba83 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex -@@ -505,13 +505,13 @@ the current state of \tcode{NDEBUG} each time that +@@ -508,13 +508,13 @@ the current state of \tcode{NDEBUG} each time that \pnum An expression \tcode{assert(E)} @@ -1036,7 +994,7 @@ index 47be572c..8b010321 100644 is a constant subexpression that evaluates to the value \tcode{true}. \end{itemize} -@@ -1526,7 +1526,7 @@ application program interfaces. +@@ -1529,7 +1529,7 @@ application program interfaces. \pnum \begin{note} If an error represents an out-of-memory condition, implementations are @@ -1046,7 +1004,7 @@ index 47be572c..8b010321 100644 \end{note} \indexlibraryglobal{system_error}% diff --git a/source/exceptions.tex b/source/exceptions.tex -index 29d43577..a9fd6f69 100644 +index 465c8197..b01c7719 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -184,7 +184,7 @@ try : i(f(ii)), d(id) { @@ -1155,15 +1113,6 @@ index 29d43577..a9fd6f69 100644 whose \grammarterm{postfix-expression} has a function type, or a pointer-to-function type, -@@ -886,7 +886,7 @@ applied to a pointer to a - polymorphic class type\iref{expr.typeid}, - or - \item --any of the immediate subexpressions\iref{intro.execution} -+any of the \deflinkx{immediate subexpressions}{immediate subexpression}{intro.execution} - of $E$ is potentially-throwing. - \end{itemize} - @@ -939,7 +939,7 @@ the invocation of any assignment operator in the implicit definition is potentially-throwing. @@ -1173,7 +1122,7 @@ index 29d43577..a9fd6f69 100644 with no explicit \grammarterm{noexcept-specifier} has a non-throwing exception specification. -@@ -1054,9 +1054,9 @@ via an exception, or +@@ -1053,9 +1053,9 @@ via an exception, or \item% when the exception handling mechanism cannot find a handler for a thrown exception\iref{except.handle}, or @@ -1185,7 +1134,7 @@ index 29d43577..a9fd6f69 100644 including when a contract-violation handler invoked from an evaluation of a function contract assertion\iref{basic.contract.eval} associated with the function -@@ -1064,7 +1064,7 @@ exits via an exception, +@@ -1063,7 +1063,7 @@ exits via an exception, or \item% @@ -1195,7 +1144,7 @@ index 29d43577..a9fd6f69 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index de418bed..cea81800 100644 +index fb8b4ea2..388f5d39 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1378,7 +1327,7 @@ index de418bed..cea81800 100644 \end{note} \pnum -@@ -2475,7 +2475,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no +@@ -2476,7 +2476,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no and no explicit object parameter\iref{dcl.fct} whose constraints (if any) are satisfied has a conversion function to pointer to @@ -1387,7 +1336,7 @@ index de418bed..cea81800 100644 the same parameter and return types as the closure type's function call operator. The conversion is to ``pointer to \keyword{noexcept} function'' if the function call operator -@@ -2584,8 +2584,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} +@@ -2585,8 +2585,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} \pnum The conversion function or conversion function template is public, @@ -1398,7 +1347,7 @@ index de418bed..cea81800 100644 \begin{example} \begin{codeblock} auto Fwd = [](int (*fp)(int), auto a) { return fp(a); }; -@@ -2643,9 +2643,9 @@ implicitly-declared destructor\iref{class.dtor}. +@@ -2644,9 +2644,9 @@ implicitly-declared destructor\iref{class.dtor}. \pnum A member of a closure type shall not be @@ -1411,7 +1360,7 @@ index de418bed..cea81800 100644 \rSec3[expr.prim.lambda.capture]{Captures}% -@@ -3214,7 +3214,7 @@ A fold expression is a pack expansion. +@@ -3216,7 +3216,7 @@ A fold expression is a pack expansion. \pnum A \grammarterm{requires-expression} provides a concise way to express requirements on template arguments @@ -1420,7 +1369,7 @@ index de418bed..cea81800 100644 or by checking properties of types and expressions. \begin{bnf} -@@ -3798,7 +3798,7 @@ or a prvalue of function pointer type. +@@ -3814,7 +3814,7 @@ or a prvalue of function pointer type. If the selected function is non-virtual, or if the \grammarterm{id-expression} in the class member access expression is a \grammarterm{qualified-id}, that function is @@ -1429,7 +1378,7 @@ index de418bed..cea81800 100644 of the object expression is called; such a call is referred to as a \defnx{virtual function call}{function!virtual function call}. \begin{note} -@@ -3811,8 +3811,8 @@ an object under construction or destruction. +@@ -3827,8 +3827,8 @@ an object under construction or destruction. \pnum \begin{note} @@ -1440,7 +1389,7 @@ index de418bed..cea81800 100644 the program is ill-formed. No function is implicitly declared by such a call. \end{note} -@@ -3879,7 +3879,7 @@ function, +@@ -3895,7 +3895,7 @@ function, the object expression of the class member access shall be a glvalue and the implicit object parameter of the function\iref{over.match.funcs} is initialized with that glvalue, @@ -1449,7 +1398,7 @@ index de418bed..cea81800 100644 \begin{note} There is no access or ambiguity checking on this conversion; the access checking and disambiguation are done as part of the (possibly implicit) -@@ -4016,10 +4016,10 @@ pointer parameters. +@@ -4032,10 +4032,10 @@ pointer parameters. \pnum \indextext{declaration!ellipsis in function}% \indextext{parameter list!variable}% @@ -1463,7 +1412,7 @@ index de418bed..cea81800 100644 \begin{note} This implies that, except where the ellipsis (\tcode{...}) or a function parameter pack is used, a parameter is available for each argument. -@@ -4037,8 +4037,8 @@ thus each such argument has a corresponding parameter when a function template +@@ -4053,8 +4053,8 @@ thus each such argument has a corresponding parameter when a function template specialization is actually called. \end{note} The @@ -1474,7 +1423,7 @@ index de418bed..cea81800 100644 performed on the argument expression. An argument that has type \cv{}~\tcode{std::nullptr_t} is converted to type \tcode{\keyword{void}*}\iref{conv.ptr}. -@@ -4053,16 +4053,16 @@ an eligible non-trivial move constructor, or +@@ -4069,16 +4069,16 @@ an eligible non-trivial move constructor, or a non-trivial destructor\iref{class.dtor}, with no corresponding parameter, is conditionally-supported with \impldef{passing argument of class type through ellipsis} semantics. If the argument has @@ -1496,7 +1445,7 @@ index de418bed..cea81800 100644 \pnum A function call is an lvalue -@@ -4081,8 +4081,8 @@ except as specified in \ref{dcl.type.decltype}. +@@ -4097,8 +4097,8 @@ except as specified in \ref{dcl.type.decltype}. \indextext{type conversion, explicit|see{casting}}% \indextext{conversion explicit type|see{casting}}% \indextext{casting}% @@ -1507,7 +1456,7 @@ index de418bed..cea81800 100644 by a parenthesized optional \grammarterm{expression-list} or by a \grammarterm{braced-init-list} (the initializer) -@@ -4093,7 +4093,7 @@ If the type is a placeholder +@@ -4109,7 +4109,7 @@ If the type is a placeholder for a deduced class type, it is replaced by the return type of the function selected by overload resolution @@ -1516,7 +1465,7 @@ index de418bed..cea81800 100644 for the remainder of this subclause. Otherwise, if the type contains a placeholder type, it is replaced by the type -@@ -4492,8 +4492,8 @@ void foo(D* dp) { +@@ -4508,8 +4508,8 @@ void foo(D* dp) { \end{example} \pnum @@ -1527,7 +1476,7 @@ index de418bed..cea81800 100644 \pnum If \tcode{v} is a null pointer value, the result is a null pointer value. -@@ -4544,9 +4544,9 @@ runtime check \term{fails}. +@@ -4560,9 +4560,9 @@ runtime check \term{fails}. \pnum The value of a failed cast to pointer type is the null pointer value of @@ -1540,7 +1489,7 @@ index de418bed..cea81800 100644 \indextext{\idxcode{bad_cast}}% \indexlibraryglobal{bad_cast}% -@@ -4635,13 +4635,13 @@ glvalue refers. +@@ -4651,13 +4651,13 @@ glvalue refers. When \keyword{typeid} is applied to an expression other than a glvalue of a polymorphic class type, the result refers to a \tcode{std::type_info} object representing the static type of the expression. @@ -1558,7 +1507,7 @@ index de418bed..cea81800 100644 \pnum When \keyword{typeid} is applied to a \grammarterm{type-id}, the result -@@ -4735,7 +4735,7 @@ of type \tcode{T1} can be cast to type ``rvalue +@@ -4751,7 +4751,7 @@ of type \tcode{T1} can be cast to type ``rvalue reference to \tcode{T2}'' if \tcode{T2} is reference-compatible with \tcode{T1}\iref{dcl.init.ref}. If the value is not a bit-field, the result refers to the object or the specified base class subobject @@ -1567,7 +1516,7 @@ index de418bed..cea81800 100644 is applied to the bit-field and the resulting prvalue is used as the operand of the \keyword{static_cast} for the remainder of this subclause. If \tcode{T2} is an inaccessible\iref{class.access} or -@@ -4840,7 +4840,8 @@ Otherwise, the behavior is undefined. +@@ -4856,7 +4856,8 @@ Otherwise, the behavior is undefined. A prvalue of type ``pointer to \cvqual{cv1} \tcode{B}'', where \tcode{B} is a class type, can be converted to a prvalue of type ``pointer to \cvqual{cv2} \tcode{D}'', @@ -1577,7 +1526,7 @@ index de418bed..cea81800 100644 from \tcode{B}, if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. -@@ -4861,7 +4862,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} +@@ -4877,7 +4878,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} \tcode{T}'' can be converted to a prvalue of type ``pointer to member of \tcode{B} of type \cvqual{cv2} \tcode{T}'', where \tcode{D} is a complete class type and @@ -1586,7 +1535,7 @@ index de418bed..cea81800 100644 if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. \begin{note} -@@ -4872,7 +4873,7 @@ If no valid standard conversion +@@ -4888,7 +4889,7 @@ If no valid standard conversion from ``pointer to member of \tcode{B} of type \tcode{T}'' to ``pointer to member of \tcode{D} of type \tcode{T}'' exists\iref{conv.mem}, the program is ill-formed. @@ -1595,7 +1544,7 @@ index de418bed..cea81800 100644 member pointer value of the destination type. If class \tcode{B} contains the original member, or is a base class of the class containing the original member, the resulting pointer to member points -@@ -4895,7 +4896,7 @@ If the original pointer value represents the address +@@ -4911,7 +4912,7 @@ If the original pointer value represents the address then the resulting pointer value\iref{basic.compound} is unspecified. Otherwise, if the original pointer value points to an object \placeholder{a}, and there is an object \placeholder{b} of type similar to \tcode{T} @@ -1604,7 +1553,7 @@ index de418bed..cea81800 100644 the result is a pointer to \placeholder{b}. Otherwise, the pointer value is unchanged by the conversion. \begin{example} -@@ -4918,8 +4919,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. +@@ -4934,8 +4935,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. If \tcode{T} is an lvalue reference type or an rvalue reference to function type, the result is an lvalue; if \tcode{T} is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the @@ -1615,7 +1564,7 @@ index de418bed..cea81800 100644 performed on the expression \tcode{v}. Conversions that can be performed explicitly using \keyword{reinterpret_cast} are listed below. No other conversion can be performed explicitly using \keyword{reinterpret_cast}. -@@ -5084,10 +5085,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type +@@ -5100,10 +5101,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type lvalue; if \tcode{T} is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the @@ -1629,7 +1578,7 @@ index de418bed..cea81800 100644 performed on \tcode{v}, other than as specified below. Conversions that can be performed explicitly using \keyword{const_cast} are listed below. No other conversion shall be -@@ -5640,7 +5641,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside +@@ -5656,7 +5657,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside The \keyword{sizeof} operator yields the number of bytes occupied by a non-potentially-overlapping object of the type of its operand. The operand is either an expression, @@ -1638,7 +1587,7 @@ index de418bed..cea81800 100644 \grammarterm{type-id}. \indextext{type!incomplete}% The \keyword{sizeof} operator shall not be applied to an expression that -@@ -5695,7 +5696,7 @@ array-to-pointer\iref{conv.array}, and +@@ -5713,7 +5714,7 @@ array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} standard conversions are not applied to the operand of \keyword{sizeof}. If the operand is a prvalue, @@ -1647,7 +1596,7 @@ index de418bed..cea81800 100644 is applied. \pnum -@@ -5840,7 +5841,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. +@@ -5858,7 +5859,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. \end{bnf} \pnum @@ -1656,7 +1605,7 @@ index de418bed..cea81800 100644 a placeholder for a deduced class type\iref{dcl.type.class.deduct} appears in the \grammarterm{type-specifier-seq} of a \grammarterm{new-type-id} or -@@ -5968,7 +5969,7 @@ is less than zero; +@@ -5986,7 +5987,7 @@ is less than zero; \item its value is such that the size of the allocated object would exceed the @@ -1665,7 +1614,7 @@ index de418bed..cea81800 100644 \item the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} -@@ -5994,7 +5995,7 @@ is the null pointer value of the required result type; +@@ -6012,7 +6013,7 @@ is the null pointer value of the required result type; \item otherwise, the \grammarterm{new-expression} terminates by throwing an exception of a type that would match a handler\iref{except.handle} of type @@ -1674,7 +1623,7 @@ index de418bed..cea81800 100644 \end{itemize} \end{itemize} When the value of the \grammarterm{expression} is zero, the allocation -@@ -6052,8 +6053,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( +@@ -6070,8 +6071,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( A \grammarterm{new-expression} may obtain storage for the object by calling an allocation function\iref{basic.stc.dynamic.allocation}. If the \grammarterm{new-expression} terminates by throwing an exception, it @@ -1685,7 +1634,7 @@ index de418bed..cea81800 100644 is a non-array type, the allocation function's name is \indextext{\idxcode{operator new}}% \indextext{\idxcode{operator delete}}% -@@ -6164,7 +6165,7 @@ the difference between the +@@ -6182,7 +6183,7 @@ the difference between the result of the \grammarterm{new-expression} and the address returned by the allocation function shall be an integral multiple of the strictest fundamental @@ -1694,7 +1643,7 @@ index de418bed..cea81800 100644 is no greater than the size of the array being created. \begin{note} \indextext{allocation!alignment storage}% -@@ -6255,7 +6256,7 @@ invocation of \keyword{new} to another. +@@ -6273,7 +6274,7 @@ invocation of \keyword{new} to another. \pnum \begin{note} Unless an allocation function has a non-throwing @@ -1703,7 +1652,7 @@ index de418bed..cea81800 100644 it indicates failure to allocate storage by throwing a \indextext{\idxcode{bad_alloc}}% \indexlibraryglobal{bad_alloc}% -@@ -6401,8 +6402,8 @@ to both the allocation and deallocation functions. +@@ -6489,8 +6490,8 @@ to both the allocation and deallocation functions. \pnum \indextext{expression!\idxcode{delete}}% \indextext{\idxcode{delete}}% @@ -1714,7 +1663,7 @@ index de418bed..cea81800 100644 \grammarterm{new-expression}. \begin{bnf} -@@ -6505,8 +6506,8 @@ null pointer value, then: +@@ -6593,8 +6594,8 @@ null pointer value, then: \item If the allocation call for the \grammarterm{new-expression} for the object to be deleted was not omitted and the allocation was not extended\iref{expr.new}, the @@ -1725,7 +1674,7 @@ index de418bed..cea81800 100644 allocation call of the \grammarterm{new-expression} shall be passed as the first argument to the deallocation function. -@@ -7091,8 +7092,8 @@ The result of a \tcode{.*} expression +@@ -7179,8 +7180,8 @@ The result of a \tcode{.*} expression whose second operand is a pointer to a data member is an lvalue if the first operand is an lvalue and an xvalue otherwise. The result of a \tcode{.*} expression whose second operand is a pointer to a member function is a prvalue. @@ -1736,7 +1685,7 @@ index de418bed..cea81800 100644 \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -7121,7 +7122,7 @@ left-to-right. +@@ -7209,7 +7210,7 @@ left-to-right. \pnum The operands of \tcode{*} and \tcode{/} shall have arithmetic or unscoped enumeration type; the operands of \tcode{\%} shall have integral or unscoped @@ -1745,7 +1694,7 @@ index de418bed..cea81800 100644 operands and determine the type of the result. \pnum -@@ -7252,7 +7253,7 @@ the behavior is undefined\iref{expr.pre}. +@@ -7340,7 +7341,7 @@ the behavior is undefined\iref{expr.pre}. \pnum For addition or subtraction, if the expressions \tcode{P} or \tcode{Q} have type ``pointer to \cv{}~\tcode{T}'', where \tcode{T} and the array element type @@ -1754,7 +1703,7 @@ index de418bed..cea81800 100644 \begin{example} \begin{codeblock} int arr[5] = {1, 2, 3, 4, 5}; -@@ -7343,12 +7344,12 @@ and the other is not, the program is ill-formed. +@@ -7431,12 +7432,12 @@ and the other is not, the program is ill-formed. If both operands have arithmetic types, or one operand has integral type and the other operand has unscoped enumeration type, @@ -1769,7 +1718,7 @@ index de418bed..cea81800 100644 other than from an integral type to a floating-point type, the program is ill-formed. -@@ -7390,13 +7391,13 @@ the other operand is of object pointer or array type, +@@ -7478,13 +7479,13 @@ the other operand is of object pointer or array type, array-to-pointer conversions\iref{conv.array}, pointer conversions\iref{conv.ptr}, and @@ -1785,7 +1734,7 @@ index de418bed..cea81800 100644 \end{note} In this case, \tcode{p <=> q} is of type \tcode{std::strong_ordering} and -@@ -7485,7 +7486,7 @@ pointer conversions\iref{conv.ptr}, +@@ -7573,7 +7574,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring @@ -1794,7 +1743,7 @@ index de418bed..cea81800 100644 After conversions, the operands shall have the same type. \pnum -@@ -7570,10 +7571,10 @@ same type after the specified conversions have been applied. +@@ -7658,10 +7659,10 @@ same type after the specified conversions have been applied. \indextext{comparison!pointer}% \indextext{comparison!pointer to function}% If at least one of the converted operands is a pointer, @@ -1809,7 +1758,7 @@ index de418bed..cea81800 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -7590,7 +7591,8 @@ the result of the comparison is unspecified. +@@ -7678,7 +7679,8 @@ the result of the comparison is unspecified. \item Otherwise, if the pointers are both null, both point to the same \indextext{address}% @@ -1819,7 +1768,7 @@ index de418bed..cea81800 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -7635,12 +7637,12 @@ bool b1 = (bx == cx); // unspecified +@@ -7723,12 +7725,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -1834,7 +1783,7 @@ index de418bed..cea81800 100644 indirection with a hypothetical object of the associated class type were performed, otherwise they compare unequal. \begin{example} -@@ -7880,7 +7882,7 @@ Otherwise, if the second and third operand have different types and +@@ -7968,7 +7970,7 @@ Otherwise, if the second and third operand have different types and either has (possibly cv-qualified) class type, or if both are glvalues of the same value category and the same type except for cv-qualification, an attempt is made to @@ -1843,7 +1792,7 @@ index de418bed..cea81800 100644 each of those operands to the type of the other. \begin{note} Properties such as access, whether an operand is a bit-field, or whether -@@ -7922,9 +7924,9 @@ denotes the cv-qualifiers of \tcode{T1}; +@@ -8010,9 +8012,9 @@ denotes the cv-qualifiers of \tcode{T1}; \item otherwise, the target type is the type that \tcode{E2} would have after applying the @@ -1856,7 +1805,7 @@ index de418bed..cea81800 100644 standard conversions. \end{itemize} \end{itemize} -@@ -7965,8 +7967,8 @@ are used in place of the original operands for the remainder of this +@@ -8053,8 +8055,8 @@ are used in place of the original operands for the remainder of this subclause. \pnum @@ -1867,7 +1816,7 @@ index de418bed..cea81800 100644 performed on the second and third operands. After those conversions, one of the following shall hold: -@@ -7975,16 +7977,16 @@ of the following shall hold: +@@ -8063,16 +8065,16 @@ of the following shall hold: that type and the result is copy-initialized using the selected operand. \item The second and third operands have arithmetic or enumeration type; @@ -1890,7 +1839,7 @@ index de418bed..cea81800 100644 pointer type. \item One or both of the second and third operands have pointer-to-member type; -@@ -8168,7 +8170,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. +@@ -8256,7 +8258,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. \pnum \indextext{assignment!conversion by}% If the right operand is an expression, it is implicitly @@ -1899,7 +1848,7 @@ index de418bed..cea81800 100644 operand. \pnum -@@ -8182,7 +8184,7 @@ resulting value of the bit-field is +@@ -8270,7 +8272,7 @@ resulting value of the bit-field is An assignment whose left operand is of a volatile-qualified type is deprecated\iref{depr.volatile.type} unless the (possibly parenthesized) assignment is a discarded-value expression or @@ -1908,7 +1857,7 @@ index de418bed..cea81800 100644 \pnum The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} -@@ -8254,7 +8256,7 @@ The comma operator groups left-to-right. +@@ -8342,7 +8344,7 @@ The comma operator groups left-to-right. A pair of expressions separated by a comma is evaluated left-to-right; the left expression is @@ -1917,16 +1866,7 @@ index de418bed..cea81800 100644 The left expression is sequenced before the right expression\iref{intro.execution}. \indextext{operator!side effects and comma}% -@@ -8295,7 +8297,7 @@ Certain contexts require expressions that satisfy additional - requirements as detailed in \ref{expr.const}; other contexts have different - semantics depending on whether or not an expression satisfies these requirements. - Expressions that satisfy these requirements, --assuming that copy elision\iref{class.copy.elision} is not performed, -+assuming that \link{copy elision}{class.copy.elision} is not performed, - are called constant expressions. - \begin{note} - Constant expressions can be evaluated -@@ -8393,7 +8395,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. +@@ -8493,7 +8495,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -1935,7 +1875,7 @@ index de418bed..cea81800 100644 it is applied to \begin{itemize} \item -@@ -8415,7 +8417,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -8515,7 +8517,7 @@ that refers to a non-active member of a union or a subobject thereof; \item an lvalue-to-rvalue conversion that is applied to @@ -1944,7 +1884,7 @@ index de418bed..cea81800 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -8864,7 +8866,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -8993,7 +8995,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte Such expressions can be used as bit-field lengths\iref{class.bit}, as enumerator initializers if the underlying type is not fixed\iref{dcl.enum}, @@ -1953,28 +1893,7 @@ index de418bed..cea81800 100644 \end{note} \pnum -@@ -9082,9 +9084,9 @@ a temporary object of non-volatile const-qualified literal type - whose lifetime is extended\iref{class.temporary} - to that of a variable that is usable in constant expressions at $P$, - \item --a template parameter object\iref{temp.param}, -+a \link{template parameter}{temp.param} object, - \item --a string literal object\iref{lex.string}, -+a \link{string literal}{lex.string} object, - \item - a non-mutable subobject of any of the above, or - \item -@@ -9465,7 +9467,7 @@ if it is: - a manifestly constant-evaluated expression, - - \item --a potentially evaluated expression\iref{basic.def.odr}, -+a \deflink{potentially evaluated}{basic.def.odr} expression, - - \item - an immediate subexpression of a \grammarterm{braced-init-list}, -@@ -9492,7 +9494,9 @@ A function or variable is +@@ -9678,7 +9680,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -1986,7 +1905,7 @@ index de418bed..cea81800 100644 \item diff --git a/source/future.tex b/source/future.tex -index 14b1e41e..c72d59ea 100644 +index a8772f66..88603947 100644 --- a/source/future.tex +++ b/source/future.tex @@ -14,7 +14,7 @@ is defined as: @@ -2023,7 +1942,7 @@ index 14b1e41e..c72d59ea 100644 the \oldconcept{TransformationTrait} requirements with a base characteristic of \tcode{integral_constant}. diff --git a/source/intro.tex b/source/intro.tex -index b04be9ab..c9f5b61f 100644 +index 3e24d06d..b5e513df 100644 --- a/source/intro.tex +++ b/source/intro.tex @@ -97,8 +97,8 @@ Reads of scalar objects are described in \ref{conv.lval} and @@ -2063,7 +1982,7 @@ index b04be9ab..c9f5b61f 100644 \indexdefn{behavior!implementation-defined}% \definition{implementation-defined behavior}{defns.impl.defined} -@@ -814,7 +815,7 @@ resulting in a contract violation. +@@ -819,7 +820,7 @@ resulting in a contract violation. \indextext{conformance requirements!classes}% \indextext{conformance requirements!class templates}% For classes and class templates, the library Clauses specify partial @@ -2072,7 +1991,7 @@ index b04be9ab..c9f5b61f 100644 specified, but each implementation shall supply them to complete the definitions according to the description in the library Clauses. -@@ -831,7 +832,7 @@ the appropriate standard library named header unit\iref{using.headers}. +@@ -836,7 +837,7 @@ the appropriate standard library named header unit\iref{using.headers}. \pnum The templates, classes, functions, and objects in the library have @@ -2082,7 +2001,7 @@ index b04be9ab..c9f5b61f 100644 translation units to form a complete \Cpp{} program\iref{lex.phases}.% \indextext{conformance requirements!library|)} diff --git a/source/iostreams.tex b/source/iostreams.tex -index 2ec4c644..faf3c046 100644 +index 3320a770..aff85000 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -558,7 +558,7 @@ is initialized, @@ -2288,7 +2207,7 @@ index 2ec4c644..faf3c046 100644 of \tcode{out}. This forms a character sequence \tcode{seq}, initially consisting of the following elements: \begin{itemize} -@@ -14129,7 +14129,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. +@@ -14130,7 +14130,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. \pnum \begin{note} @@ -2297,7 +2216,7 @@ index 2ec4c644..faf3c046 100644 for how the value types above and their encodings convert to \tcode{path::value_type} and its encoding. \end{note} -@@ -14741,7 +14741,7 @@ and print functions\iref{print.fun}. +@@ -14742,7 +14742,7 @@ and print functions\iref{print.fun}. \pnum Generic format observer functions return strings formatted according to the @@ -2306,7 +2225,7 @@ index 2ec4c644..faf3c046 100644 A single slash (\tcode{'/'}) character is used as the \grammarterm{directory-separator}. -@@ -15297,11 +15297,11 @@ If normalization\iref{fs.path.generic} is needed +@@ -15298,11 +15298,11 @@ If normalization\iref{fs.path.generic} is needed \indexlibrarymember{path}{iterator}% \pnum Path iterators iterate over the elements of the pathname @@ -2320,7 +2239,7 @@ index 2ec4c644..faf3c046 100644 except that, for dereferenceable iterators \tcode{a} and \tcode{b} of type \tcode{path::iterator} -@@ -16658,7 +16658,7 @@ If a file is removed from or added to a directory after the +@@ -16659,7 +16659,7 @@ If a file is removed from or added to a directory after the construction of a \tcode{directory_iterator} for the directory, it is unspecified whether or not subsequently incrementing the iterator will ever result in an iterator referencing the removed or added directory entry. See @@ -2329,7 +2248,7 @@ index 2ec4c644..faf3c046 100644 \end{note} \rSec3[fs.dir.itr.members]{Members} -@@ -16750,7 +16750,7 @@ directory_iterator& increment(error_code& ec); +@@ -16751,7 +16751,7 @@ directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -2338,7 +2257,7 @@ index 2ec4c644..faf3c046 100644 \pnum \returns -@@ -17062,7 +17062,7 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17063,7 +17063,7 @@ recursive_directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -2347,7 +2266,7 @@ index 2ec4c644..faf3c046 100644 except that: \begin{itemize} -@@ -17653,7 +17653,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin +@@ -17654,7 +17654,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin \begin{itemdescr} \pnum \effects @@ -2356,7 +2275,7 @@ index 2ec4c644..faf3c046 100644 \pnum \ensures -@@ -17729,7 +17729,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, +@@ -17730,7 +17730,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, \begin{itemdescr} \pnum \effects @@ -2365,7 +2284,7 @@ index 2ec4c644..faf3c046 100644 \pnum \ensures -@@ -17762,7 +17762,7 @@ path filesystem::current_path(error_code& ec); +@@ -17763,7 +17763,7 @@ path filesystem::current_path(error_code& ec); \returns The absolute path of the current working directory, whose pathname in the native format is @@ -2374,7 +2293,7 @@ index 2ec4c644..faf3c046 100644 The signature with argument \tcode{ec} returns \tcode{path()} if an error occurs. -@@ -17793,7 +17793,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; +@@ -17794,7 +17794,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; \begin{itemdescr} \pnum \effects @@ -2383,7 +2302,7 @@ index 2ec4c644..faf3c046 100644 \pnum \ensures -@@ -17904,7 +17904,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. +@@ -17905,7 +17905,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. \item If \tcode{is_regular_file(p)}, the size in bytes of the file \tcode{p} resolves to, determined as if by the value of the POSIX \tcode{stat} @@ -2392,7 +2311,7 @@ index 2ec4c644..faf3c046 100644 \item Otherwise, the result is \impldef{result of \tcode{filesystem::file_size}}. \end{itemize} -@@ -18286,7 +18286,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time, +@@ -18287,7 +18287,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time, \pnum \effects Sets the time of last data modification of the file @@ -2402,10 +2321,10 @@ index 2ec4c644..faf3c046 100644 \pnum \throws diff --git a/source/iterators.tex b/source/iterators.tex -index 9e972f19..909e4ed0 100644 +index ed599d97..46edb440 100644 --- a/source/iterators.tex +++ b/source/iterators.tex -@@ -6868,7 +6868,7 @@ ostream_iterator& operator++(int); +@@ -6872,7 +6872,7 @@ ostream_iterator& operator++(int); The class template \tcode{istreambuf_iterator} @@ -2414,7 +2333,7 @@ index 9e972f19..909e4ed0 100644 reads successive \textit{characters} from the streambuf for which it was constructed. -@@ -6993,7 +6993,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; +@@ -6997,7 +6997,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; Initializes \tcode{sbuf_} with \keyword{nullptr}. \end{itemdescr} @@ -2422,7 +2341,7 @@ index 9e972f19..909e4ed0 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(istream_type& s) noexcept; -@@ -7005,7 +7004,6 @@ istreambuf_iterator(istream_type& s) noexcept; +@@ -7009,7 +7008,6 @@ istreambuf_iterator(istream_type& s) noexcept; Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2430,7 +2349,7 @@ index 9e972f19..909e4ed0 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(streambuf_type* s) noexcept; -@@ -7017,7 +7015,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; +@@ -7021,7 +7019,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; Initializes \tcode{sbuf_} with \tcode{s}. \end{itemdescr} @@ -2438,7 +2357,7 @@ index 9e972f19..909e4ed0 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept; -@@ -7168,7 +7165,6 @@ is not a null pointer. +@@ -7172,7 +7169,6 @@ is not a null pointer. Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2447,7 +2366,7 @@ index 9e972f19..909e4ed0 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index 7547b4aa..d662f889 100644 +index ce8aa22a..5e62f101 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2461,7 +2380,7 @@ index 7547b4aa..d662f889 100644 directive \tcode{\#include}, less any source lines skipped by any of the conditional inclusion\iref{cpp.cond} preprocessing directives, as modified by the implementation-defined behavior of any -@@ -2289,7 +2289,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) +@@ -2315,7 +2315,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) \pnum If \placeholder{L} is a \grammarterm{user-defined-character-literal}, let \placeholder{ch} be the literal without its \grammarterm{ud-suffix}. @@ -2471,7 +2390,7 @@ index 7547b4aa..d662f889 100644 literal \placeholder{L} is treated as a call of the form diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index abe4ecf3..0b2c55f9 100644 +index 9422f9ea..bc8ce8e8 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2494,7 +2413,7 @@ index abe4ecf3..0b2c55f9 100644 \rSec3[expos.only.entity]{Exposition-only entities, etc.} -@@ -644,7 +644,7 @@ and \ref{depr} are +@@ -651,7 +651,7 @@ and \ref{depr} are Each bitmask type can be implemented as an enumerated type that overloads certain operators, as an integer type, or as a @@ -2503,7 +2422,7 @@ index abe4ecf3..0b2c55f9 100644 \indextext{type!enumerated}% \pnum -@@ -770,7 +770,7 @@ locale. +@@ -777,7 +777,7 @@ locale. \item A \defn{character sequence} @@ -2512,7 +2431,7 @@ index abe4ecf3..0b2c55f9 100644 can be declared as \tcode{\placeholdernc{T\;A}[\placeholder{N}]}, where \tcode{\placeholder{T}} is any of the types -@@ -961,7 +961,7 @@ signatures, or for virtual destructors that can be generated by default. +@@ -968,7 +968,7 @@ signatures, or for virtual destructors that can be generated by default. \pnum \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr} do not specify the representation of classes, and intentionally @@ -2521,7 +2440,7 @@ index abe4ecf3..0b2c55f9 100644 define static or non-static class members, or both, as needed to implement the semantics of the member functions specified in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr}. -@@ -1373,10 +1373,10 @@ std::vector vi; // OK +@@ -1380,10 +1380,10 @@ std::vector vi; // OK Except as noted in \ref{library} through \ref{\lastlibchapter} and \ref{depr}, the contents of each header \tcode{c\placeholder{name}} is the same as that of the corresponding header \tcode{\placeholder{name}.h} as @@ -2534,7 +2453,7 @@ index abe4ecf3..0b2c55f9 100644 It is unspecified whether these names (including any overloads added in \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr}) are first declared within the global namespace scope -@@ -1694,8 +1694,8 @@ a hosted implementation. +@@ -1701,8 +1701,8 @@ a hosted implementation. \pnum Subclause \ref{using} describes how a \Cpp{} program gains access to the facilities of the \Cpp{} standard library. \ref{using.headers} describes effects during translation @@ -2545,7 +2464,7 @@ index abe4ecf3..0b2c55f9 100644 \rSec3[using.headers]{Headers} -@@ -1738,7 +1738,7 @@ declared in that header. No diagnostic is required. +@@ -1745,7 +1745,7 @@ declared in that header. No diagnostic is required. \rSec3[using.linkage]{Linkage} \pnum @@ -2554,7 +2473,7 @@ index abe4ecf3..0b2c55f9 100644 Unless otherwise specified, objects and functions have the default \tcode{extern "C++"} linkage\iref{dcl.link}. -@@ -1772,8 +1772,8 @@ the program prior to program startup. +@@ -1779,8 +1779,8 @@ the program prior to program startup. \indextext{startup!program}% \pnum See also @@ -2565,7 +2484,7 @@ index abe4ecf3..0b2c55f9 100644 \rSec2[utility.requirements]{Requirements on types and expressions} -@@ -1821,7 +1821,7 @@ rvalue of type \tcode{const T}. +@@ -1828,7 +1828,7 @@ rvalue of type \tcode{const T}. In general, a default constructor is not required. Certain container class member function signatures specify \tcode{T()} as a default argument. \tcode{T()} shall be a well-defined expression\iref{dcl.init} if one of those @@ -2574,7 +2493,7 @@ index abe4ecf3..0b2c55f9 100644 \begin{oldconcepttable}{EqualityComparable}{}{cpp17.equalitycomparable} {x{1in}x{1in}p{3in}} -@@ -1946,13 +1946,13 @@ evaluated in the context described below, and +@@ -1953,13 +1953,13 @@ evaluated in the context described below, and \pnum The context in which \tcode{swap(t, u)} and \tcode{swap(u, t)} are evaluated shall @@ -2591,7 +2510,7 @@ index abe4ecf3..0b2c55f9 100644 \end{itemize} \begin{note} If \tcode{T} and \tcode{U} are both fundamental types or arrays of -@@ -2055,8 +2055,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in +@@ -2062,8 +2062,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in \end{note} \pnum @@ -2603,7 +2522,7 @@ index abe4ecf3..0b2c55f9 100644 had been evaluated in place of \tcode{p}. \pnum -@@ -2159,7 +2160,7 @@ as the memory allocation and deallocation primitives for it. All of the +@@ -2166,7 +2167,7 @@ as the memory allocation and deallocation primitives for it. All of the string types\iref{strings}, containers\iref{containers} (except \tcode{array} and \tcode{inplace_vector}), string buffers and string streams\iref{input.output}, and @@ -2612,7 +2531,7 @@ index abe4ecf3..0b2c55f9 100644 allocators. \pnum -@@ -2985,7 +2986,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, +@@ -2992,7 +2993,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, whether or not \tcode{T} is a complete type: \begin{itemize} \item \tcode{X} is a complete type, and @@ -2621,7 +2540,7 @@ index abe4ecf3..0b2c55f9 100644 other than \tcode{value_type} are complete types. \end{itemize} -@@ -2996,11 +2997,11 @@ whether or not \tcode{T} is a complete type: +@@ -3003,11 +3004,11 @@ whether or not \tcode{T} is a complete type: \pnum Subclause \ref{constraints} describes restrictions on \Cpp{} programs that use the facilities of the \Cpp{} standard library. The following subclauses specify constraints on the @@ -2637,7 +2556,7 @@ index abe4ecf3..0b2c55f9 100644 \rSec3[namespace.constraints]{Namespace use} -@@ -3403,7 +3404,7 @@ are reserved for use by \Cpp{} implementations. +@@ -3418,7 +3419,7 @@ are reserved for use by \Cpp{} implementations. If a file with a name equivalent to the derived file name for one of the \Cpp{} standard library headers is not provided as part of the implementation, and a file with that name @@ -2646,7 +2565,7 @@ index abe4ecf3..0b2c55f9 100644 the behavior is undefined.% \indextext{source file}% \indextext{undefined} -@@ -3574,7 +3575,7 @@ specified as being shareable without data races or the user supplies a locking m +@@ -3589,7 +3590,7 @@ specified as being shareable without data races or the user supplies a locking m \pnum If an object of a standard library type is accessed, and @@ -2655,7 +2574,7 @@ index abe4ecf3..0b2c55f9 100644 does not happen before the access, or the access does not happen before the end of the object's lifetime, the behavior is undefined unless otherwise specified. -@@ -3640,7 +3641,7 @@ Every such entity shall be defined such that any header that defines it may be +@@ -3655,7 +3656,7 @@ Every such entity shall be defined such that any header that defines it may be included after any other header that also defines it\iref{basic.def.odr}. \pnum @@ -2664,7 +2583,7 @@ index abe4ecf3..0b2c55f9 100644 shall include only their corresponding \Cpp{} standard library header, as described in~\ref{headers}. -@@ -3668,7 +3669,7 @@ explicitly stated otherwise. +@@ -3683,7 +3684,7 @@ explicitly stated otherwise. It is unspecified whether any non-member functions in the \Cpp{} standard library are defined as @@ -2673,7 +2592,7 @@ index abe4ecf3..0b2c55f9 100644 \pnum A call to a non-member function signature -@@ -3696,7 +3697,7 @@ The phrase ``unless otherwise specified'' applies to cases such as +@@ -3711,7 +3712,7 @@ The phrase ``unless otherwise specified'' applies to cases such as the swappable with requirements\iref{swappable.requirements}. The exception for overloaded operators allows argument-dependent lookup in cases like that of @@ -2682,7 +2601,7 @@ index abe4ecf3..0b2c55f9 100644 \effects \begin{codeblock} -@@ -3711,7 +3712,7 @@ return *this; +@@ -3726,7 +3727,7 @@ return *this; \pnum It is unspecified whether any member functions in the \Cpp{} standard library are defined as @@ -2691,7 +2610,7 @@ index abe4ecf3..0b2c55f9 100644 \pnum For a non-virtual member function described in the \Cpp{} standard library, -@@ -3790,8 +3791,8 @@ library may be recursively reentered. +@@ -3815,8 +3816,8 @@ the behavior is undefined unless otherwise specified. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -2702,7 +2621,7 @@ index abe4ecf3..0b2c55f9 100644 Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. -@@ -3834,7 +3835,7 @@ not visible to users and are protected against data races. +@@ -3859,7 +3860,7 @@ not visible to users and are protected against data races. \pnum Unless otherwise specified, \Cpp{} standard library functions shall perform all operations solely within the current thread if those operations have effects that are @@ -2711,7 +2630,7 @@ index abe4ecf3..0b2c55f9 100644 \pnum \begin{note} -@@ -3949,7 +3950,7 @@ potentially-throwing exception specification} exceptions. +@@ -3974,7 +3975,7 @@ potentially-throwing exception specification} exceptions. \begin{footnote} In particular, they can report a failure to allocate storage by throwing an exception of type @@ -2734,7 +2653,7 @@ index e0596a32..877f21f3 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index 31a2e217..214757e4 100644 +index f127499a..0fef1e5d 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -2748,32 +2667,28 @@ index 31a2e217..214757e4 100644 environment is the state of the floating-point environment of the thread that constructs the corresponding \tcode{thread} object\iref{thread.thread.class} or \tcode{jthread} object\iref{thread.jthread.class} -@@ -1566,21 +1566,21 @@ the effect of instantiating a template: - is undefined unless the corresponding template argument - is cv-unqualified and - meets the requirements +@@ -1571,17 +1571,17 @@ on an instantiated template $T$: + A template argument corresponding to a template parameter + named \tcode{Sseq} + shall meet the requirements - of seed sequence\iref{rand.req.seedseq}. + of \link{seed sequence}{rand.req.seedseq}. \item - that has a template type parameter + A template argument corresponding to a template parameter named \tcode{URBG} - is undefined unless the corresponding template argument - is cv-unqualified and - meets the requirements + shall meet the requirements - of uniform random bit generator\iref{rand.req.urng}. + of \link{uniform random bit generator}{rand.req.urng}. \item - that has a template type parameter + A template argument corresponding to a template parameter named \tcode{Engine} - is undefined unless the corresponding template argument - is cv-unqualified and - meets the requirements + shall meet the requirements - of random number engine\iref{rand.req.eng}. + of \link{random number engine}{rand.req.eng}. \item - that has a template type parameter + If a template argument corresponding to a template parameter named \tcode{RealType} -@@ -1704,7 +1704,7 @@ In \tref{rand.req.seedseq} and throughout this subclause: +@@ -1702,7 +1702,7 @@ In \tref{rand.req.seedseq} and throughout this subclause: \endhead \tcode{S::result_type} & \tcode{T} @@ -2782,7 +2697,7 @@ index 31a2e217..214757e4 100644 of at least 32 bits. & \\ \rowsep -@@ -1869,7 +1869,7 @@ An engine's state may be established via +@@ -1867,7 +1867,7 @@ An engine's state may be established via \pnum A class \tcode{E} that meets the requirements @@ -2791,7 +2706,7 @@ index 31a2e217..214757e4 100644 also meets the requirements of a \term{random number engine} if the expressions shown -@@ -1890,7 +1890,7 @@ In \tref{rand.req.eng} and throughout this subclause: +@@ -1888,7 +1888,7 @@ In \tref{rand.req.eng} and throughout this subclause: \tcode{s} is a value of \tcode{T}; \item \tcode{q} is an lvalue @@ -2800,7 +2715,7 @@ index 31a2e217..214757e4 100644 \item \tcode{z} is a value of type \tcode{unsigned long long}; -@@ -2324,7 +2324,7 @@ In \tref{rand.req.dist} and throughout this subclause, +@@ -2322,7 +2322,7 @@ In \tref{rand.req.dist} and throughout this subclause, \item \tcode{g}, \tcode{g1}, and \tcode{g2} are lvalues of a type meeting the requirements @@ -2809,7 +2724,7 @@ index 31a2e217..214757e4 100644 \item \tcode{os} is an lvalue of the type of some class template specialization \tcode{basic_ostream}; -@@ -2356,7 +2356,7 @@ according to \ref{strings} and \ref{input.output}. +@@ -2354,7 +2354,7 @@ according to \ref{strings} and \ref{input.output}. \endhead \tcode{D::result_type} & \tcode{T} @@ -2818,7 +2733,7 @@ index 31a2e217..214757e4 100644 & \\ \rowsep \tcode{D::param_type} -@@ -2598,7 +2598,7 @@ reference to the type of \tcode{is}. +@@ -2596,7 +2596,7 @@ reference to the type of \tcode{is}. Each type instantiated from a class template specified in \ref{rand.eng} meets the requirements @@ -2827,7 +2742,7 @@ index 31a2e217..214757e4 100644 \pnum Except where specified otherwise, -@@ -3396,7 +3396,7 @@ The counter is the value $Z$ introduced at the beginning of this subclause. +@@ -3394,7 +3394,7 @@ The counter is the value $Z$ introduced at the beginning of this subclause. Each type instantiated from a class template specified in \ref{rand.adapt} meets the requirements @@ -2836,7 +2751,7 @@ index 31a2e217..214757e4 100644 \pnum Except where specified otherwise, -@@ -4490,7 +4490,7 @@ than the output when computing $S$. +@@ -4488,7 +4488,7 @@ than the output when computing $S$. Each type instantiated from a class template specified in \ref{rand.dist} meets the requirements @@ -2845,7 +2760,7 @@ index 31a2e217..214757e4 100644 \pnum Descriptions are provided in \ref{rand.dist} -@@ -5344,6 +5344,7 @@ p(x\,|\,\alpha,\beta) = +@@ -5342,6 +5342,7 @@ p(x\,|\,\alpha,\beta) = \indexlibraryglobal{gamma_distribution}% \indexlibrarymember{result_type}{gamma_distribution}% @@ -2853,7 +2768,7 @@ index 31a2e217..214757e4 100644 \begin{codeblock} namespace std { template -@@ -5387,7 +5388,6 @@ namespace std { +@@ -5385,7 +5386,6 @@ namespace std { } \end{codeblock} @@ -2861,7 +2776,7 @@ index 31a2e217..214757e4 100644 \indexlibraryctor{gamma_distribution}% \begin{itemdecl} explicit gamma_distribution(RealType alpha, RealType beta = 1.0); -@@ -5494,7 +5494,7 @@ namespace std { +@@ -5492,7 +5492,7 @@ namespace std { \indexlibraryctor{weibull_distribution}% \begin{itemdecl} explicit weibull_distribution(RealType a, RealType b = 1.0); @@ -2870,7 +2785,7 @@ index 31a2e217..214757e4 100644 \begin{itemdescr} \pnum -@@ -5604,7 +5604,6 @@ namespace std { +@@ -5602,7 +5602,6 @@ namespace std { } \end{codeblock} @@ -2878,7 +2793,7 @@ index 31a2e217..214757e4 100644 \indexlibraryctor{extreme_value_distribution}% \begin{itemdecl} explicit extreme_value_distribution(RealType a, RealType b = 1.0); -@@ -5728,7 +5727,6 @@ namespace std { +@@ -5726,7 +5725,6 @@ namespace std { } \end{codeblock} @@ -2886,7 +2801,7 @@ index 31a2e217..214757e4 100644 \indexlibraryctor{normal_distribution}% \begin{itemdecl} explicit normal_distribution(RealType mean, RealType stddev = 1.0); -@@ -5932,7 +5930,6 @@ namespace std { +@@ -5930,7 +5928,6 @@ namespace std { } \end{codeblock} @@ -2894,7 +2809,7 @@ index 31a2e217..214757e4 100644 \indexlibraryctor{chi_squared_distribution}% \begin{itemdecl} explicit chi_squared_distribution(RealType n); -@@ -6126,7 +6123,6 @@ namespace std { +@@ -6124,7 +6121,6 @@ namespace std { } \end{codeblock} @@ -2902,7 +2817,7 @@ index 31a2e217..214757e4 100644 \indexlibraryctor{fisher_f_distribution}% \begin{itemdecl} explicit fisher_f_distribution(RealType m, RealType n = 1); -@@ -6229,7 +6225,6 @@ namespace std { +@@ -6227,7 +6223,6 @@ namespace std { } \end{codeblock} @@ -2910,7 +2825,7 @@ index 31a2e217..214757e4 100644 \indexlibraryctor{student_t_distribution}% \begin{itemdecl} explicit student_t_distribution(RealType n); -@@ -6345,7 +6340,7 @@ namespace std { +@@ -6343,7 +6338,7 @@ namespace std { } \end{codeblock} @@ -2919,7 +2834,7 @@ index 31a2e217..214757e4 100644 \begin{itemdecl} discrete_distribution(); \end{itemdecl} -@@ -7196,7 +7191,7 @@ objects. +@@ -7194,7 +7189,7 @@ objects. \pnum These library functions are permitted to throw a @@ -2928,7 +2843,7 @@ index 31a2e217..214757e4 100644 to carry out the operation. Note that the exception is not mandated. -@@ -7364,7 +7359,7 @@ explicit valarray(size_t n); +@@ -7362,7 +7357,7 @@ explicit valarray(size_t n); \pnum \effects Constructs a \tcode{valarray} that has length \tcode{n}. @@ -2937,7 +2852,7 @@ index 31a2e217..214757e4 100644 \end{itemdescr} \indexlibraryctor{valarray}% -@@ -7624,7 +7619,7 @@ and other techniques to generate efficient +@@ -7622,7 +7617,7 @@ and other techniques to generate efficient \pnum The reference returned by the subscript operator for an array shall be valid until the member function @@ -2946,7 +2861,7 @@ index 31a2e217..214757e4 100644 that array ends, whichever happens first. \end{itemdescr} -@@ -8050,7 +8045,7 @@ places, with zero fill. +@@ -8048,7 +8043,7 @@ places, with zero fill. \pnum \begin{example} If the argument has the value $-2$, @@ -2955,7 +2870,7 @@ index 31a2e217..214757e4 100644 of the first element of \tcode{*this}; etc. \end{example} \end{itemdescr} -@@ -9175,7 +9170,7 @@ parameter \tcode{T} and its \tcode{reference} type is \tcode{const T\&}. +@@ -9173,7 +9168,7 @@ parameter \tcode{T} and its \tcode{reference} type is \tcode{const T\&}. \pnum The iterators returned by \tcode{begin} and \tcode{end} for an array are guaranteed to be valid until the member function @@ -2964,7 +2879,7 @@ index 31a2e217..214757e4 100644 array or until the lifetime of that array ends, whichever happens first. -@@ -9816,12 +9811,12 @@ The contents and meaning of the header \libheader{cmath} +@@ -9814,12 +9809,12 @@ The contents and meaning of the header \libheader{cmath} are a subset of the C standard library header \libheader{math.h} and only the declarations shown in the synopsis above are present, with the addition of @@ -2980,7 +2895,7 @@ index 31a2e217..214757e4 100644 \end{note} \pnum -@@ -9885,7 +9880,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. +@@ -9883,7 +9878,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. If \tcode{abs} is called with an argument of type \tcode{X} for which \tcode{is_unsigned_v} is \tcode{true} and if \tcode{X} cannot be converted to \tcode{int} @@ -2990,7 +2905,7 @@ index 31a2e217..214757e4 100644 Allowing arguments that can be promoted to \tcode{int} provides compatibility with C. diff --git a/source/overloading.tex b/source/overloading.tex -index fe6c4d08..9533e291 100644 +index 52883f84..d3250f2d 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -74,7 +74,7 @@ Overload resolution selects the function to call in seven distinct @@ -3077,7 +2992,7 @@ index fe6c4d08..9533e291 100644 overload resolution selects the constructor. For direct-initialization or default-initialization (including default-initialization in the context of copy-list-initialization), -@@ -1801,7 +1801,7 @@ Third, for +@@ -1836,7 +1836,7 @@ Third, for \tcode{F} to be a viable function, there shall exist for each argument an @@ -3086,7 +3001,7 @@ index fe6c4d08..9533e291 100644 converts that argument to the corresponding parameter of \tcode{F}. If the parameter has reference type, the implicit conversion sequence -@@ -1865,8 +1865,8 @@ float x = a; // ambiguous: both possibilities require conversions, +@@ -1900,8 +1900,8 @@ float x = a; // ambiguous: both possibilities require conversions, \end{example} or, if not that, @@ -3097,7 +3012,7 @@ index fe6c4d08..9533e291 100644 return type of $\tcode{F}_1$ is the same kind of reference (lvalue or rvalue) as the reference being initialized, and the return type of $\tcode{F}_2$ is not \begin{example} -@@ -1996,7 +1996,7 @@ $\tcode{F}_1$ is generated from a +@@ -2031,7 +2031,7 @@ $\tcode{F}_1$ is generated from a and $\tcode{F}_2$ is not, or, if not that, \item @@ -3106,7 +3021,7 @@ index fe6c4d08..9533e291 100644 and $\tcode{F}_2$ is not, or, if not that, \item -@@ -2122,7 +2122,7 @@ parameter. +@@ -2157,7 +2157,7 @@ parameter. \begin{note} Other properties, such as the lifetime, storage duration, linkage, alignment, accessibility of the argument, whether the argument is a bit-field, @@ -3115,7 +3030,7 @@ index fe6c4d08..9533e291 100644 So, although an implicit conversion sequence can be defined for a given argument-parameter pair, the conversion from the argument to the parameter might still -@@ -2135,11 +2135,11 @@ well-formed implicit conversion +@@ -2170,11 +2170,11 @@ well-formed implicit conversion sequence is one of the following forms: \begin{itemize} \item @@ -3130,7 +3045,7 @@ index fe6c4d08..9533e291 100644 \end{itemize} \pnum -@@ -2317,10 +2317,10 @@ Each conversion in \tref{over.ics.scs} +@@ -2352,10 +2352,10 @@ Each conversion in \tref{over.ics.scs} also has an associated rank (Exact Match, Promotion, or Conversion). These are used @@ -3144,7 +3059,7 @@ index fe6c4d08..9533e291 100644 If any of those has Conversion rank, the sequence has Conversion rank; otherwise, if any of those has Promotion rank, the sequence has Promotion rank; otherwise, the sequence has Exact -@@ -2357,7 +2357,7 @@ by a constructor\iref{class.conv.ctor}, the initial standard +@@ -2392,7 +2392,7 @@ by a constructor\iref{class.conv.ctor}, the initial standard conversion sequence converts the source type to the type of the first parameter of that constructor. If the user-defined @@ -3153,7 +3068,7 @@ index fe6c4d08..9533e291 100644 initial standard conversion sequence converts the source type to the type of the object parameter of that conversion function. -@@ -2493,7 +2493,7 @@ the prohibition on binding a non-\keyword{const} lvalue reference to a bit-field +@@ -2528,7 +2528,7 @@ the prohibition on binding a non-\keyword{const} lvalue reference to a bit-field \rSec4[over.ics.list]{List-initialization sequence} \pnum @@ -3162,7 +3077,7 @@ index fe6c4d08..9533e291 100644 expression and special rules apply for converting it to a parameter type. \pnum -@@ -2735,13 +2735,13 @@ When comparing the basic forms of implicit conversion sequences +@@ -2770,13 +2770,13 @@ When comparing the basic forms of implicit conversion sequences (as defined in~\ref{over.best.ics}) \begin{itemize} \item @@ -3180,7 +3095,7 @@ index fe6c4d08..9533e291 100644 \end{itemize} \pnum -@@ -3168,7 +3168,7 @@ the left side of an assignment\iref{expr.assign}, +@@ -3203,7 +3203,7 @@ the left side of an assignment\iref{expr.assign}, \item a parameter of a function\iref{expr.call}, \item @@ -3189,7 +3104,7 @@ index fe6c4d08..9533e291 100644 \item the return value of a function, operator function, or conversion\iref{stmt.return}, \item -@@ -3368,8 +3368,8 @@ The operators +@@ -3403,8 +3403,8 @@ The operators and \tcode{[]} are formed from more than one token. @@ -3200,7 +3115,7 @@ index fe6c4d08..9533e291 100644 \end{note} \indextext{operator!subscripting}% \indextext{operator!function call}% -@@ -3465,7 +3465,7 @@ this is not required by operator functions. +@@ -3500,7 +3500,7 @@ this is not required by operator functions. \pnum \indextext{argument!overloaded operator and default}% @@ -3209,7 +3124,7 @@ index fe6c4d08..9533e291 100644 except where explicitly stated below. Operator functions cannot have more or fewer parameters than the -@@ -3810,7 +3810,7 @@ to not be included in the set of candidate functions. +@@ -3845,7 +3845,7 @@ to not be included in the set of candidate functions. In this subclause, the term \defn{promoted integral type} is used to refer to those cv-unqualified integral types which are preserved by @@ -3219,19 +3134,10 @@ index fe6c4d08..9533e291 100644 and \tcode{long} diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index f8bd9728..6624a7f2 100644 +index 0bfb7f19..b3cf7fc7 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex -@@ -512,7 +512,7 @@ shall not appear in any context not mentioned in this subclause. - Each preprocessing token that remains (in the list of preprocessing tokens that - will become the controlling expression) - after all macro replacements have occurred --shall be in the lexical form of a token\iref{lex.token}. -+shall be in the lexical form of a \link{token}{lex.token}. - - \pnum - Preprocessing directives of the forms -@@ -566,8 +566,8 @@ are replaced with the \grammarterm{pp-number} +@@ -551,8 +551,8 @@ are replaced with the \grammarterm{pp-number} \tcode{0}, and then each preprocessing token is converted into a token. \begin{note} @@ -3242,7 +3148,7 @@ index f8bd9728..6624a7f2 100644 even when its spelling consists entirely of letters and underscores. Therefore it is not subject to this replacement. \end{note} -@@ -585,8 +585,8 @@ Thus on an +@@ -570,8 +570,8 @@ Thus on an implementation where \tcode{std::numeric_limits::max()} is \tcode{0x7FFF} and \tcode{std::numeric_limits::max()} is \tcode{0xFFFF}, the integer literal \tcode{0x8000} is signed and positive within a \tcode{\#if} @@ -3253,7 +3159,7 @@ index f8bd9728..6624a7f2 100644 \end{note} This includes interpreting \grammarterm{character-literal}s according to the rules in \ref{lex.ccon}. -@@ -2085,7 +2085,7 @@ of the current source line is +@@ -2126,7 +2126,7 @@ of the current source line is the line number of the current physical source line, i.e., it is one greater than the number of new-line characters read or introduced @@ -3262,7 +3168,7 @@ index f8bd9728..6624a7f2 100644 while processing the source file to the current preprocessing token. \pnum -@@ -2447,7 +2447,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. +@@ -2489,7 +2489,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. \indextext{__stdcpp_threads__@\mname{STDCPP_THREADS}}% \mname{STDCPP_THREADS}\\ Defined, and has the value integer literal \tcode{1}, if and only if a program @@ -3272,10 +3178,10 @@ index f8bd9728..6624a7f2 100644 \end{description} diff --git a/source/statements.tex b/source/statements.tex -index 9163c191..852e314d 100644 +index fa6944b1..301d6304 100644 --- a/source/statements.tex +++ b/source/statements.tex -@@ -219,7 +219,7 @@ Expression statements have the form +@@ -224,7 +224,7 @@ Expression statements have the form \end{bnf} The expression is @@ -3284,7 +3190,7 @@ index 9163c191..852e314d 100644 All \indextext{side effects}% side effects from an expression statement -@@ -448,10 +448,10 @@ the value of the condition is the value of the \grammarterm{expression}; +@@ -452,10 +452,10 @@ the value of the condition is the value of the \grammarterm{expression}; otherwise, it is the value of the decision variable. The value of the condition shall be of integral type, enumeration type, or class type. If of class type, the @@ -3298,16 +3204,16 @@ index 9163c191..852e314d 100644 to the promoted type. Any statement within the \keyword{switch} statement can be labeled with one or -@@ -461,7 +461,7 @@ more case labels as follows: +@@ -465,7 +465,7 @@ more case labels as follows: \keyword{case} constant-expression \terminal{:} \end{ncbnf} where the \grammarterm{constant-expression} shall be -a converted constant expression\iref{expr.const.const} of the -+a \deflinkx{converted constant expression}{expression!converted constant}{expr.const.const} of the ++a converted \link{constant expression}{expr.const.const} of the adjusted type of the switch condition. No two of the case constants in the same switch shall have the same value after conversion. -@@ -547,7 +547,7 @@ An \grammarterm{init-statement} ends with a semicolon. +@@ -551,7 +551,7 @@ An \grammarterm{init-statement} ends with a semicolon. \pnum \indextext{scope!\idxgram{iteration-statement}}% The substatement in an \grammarterm{iteration-statement} implicitly defines @@ -3316,7 +3222,7 @@ index 9163c191..852e314d 100644 through the loop. If the substatement in an \grammarterm{iteration-statement} is a single statement and not a \grammarterm{compound-statement}, -@@ -646,7 +646,7 @@ fails. +@@ -650,7 +650,7 @@ fails. \indextext{statement!\idxcode{do}} \pnum @@ -3325,7 +3231,7 @@ index 9163c191..852e314d 100644 if that conversion is ill-formed, the program is ill-formed. \pnum -@@ -1019,8 +1019,8 @@ Jump statements unconditionally transfer control. +@@ -1028,8 +1028,8 @@ Jump statements unconditionally transfer control. \indextext{local variable!destruction of}% \indextext{scope!destructor and exit from}% \begin{note} @@ -3336,7 +3242,7 @@ index 9163c191..852e314d 100644 in the reverse order of their construction\iref{stmt.dcl}. For temporaries, see~\ref{class.temporary}. However, the program can be terminated (by calling -@@ -1089,7 +1089,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; +@@ -1098,7 +1098,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; the \tcode{return} statement initializes the returned reference or prvalue result object of the (explicit or implicit) function call @@ -3345,7 +3251,7 @@ index 9163c191..852e314d 100644 \begin{note} A constructor or destructor does not have a return type. \end{note} -@@ -1226,7 +1226,7 @@ results in undefined behavior. +@@ -1235,7 +1235,7 @@ results in undefined behavior. The \tcode{goto} statement unconditionally transfers control to the statement labeled by the identifier. The identifier shall be a \indextext{label}% @@ -3354,7 +3260,7 @@ index 9163c191..852e314d 100644 \rSec1[stmt.contract.assert]{Assertion statement} -@@ -1337,8 +1337,8 @@ lx: +@@ -1347,8 +1347,8 @@ lx: \indextext{initialization!local \tcode{static}}% \indextext{initialization!local \tcode{thread_local}}% Dynamic initialization of a block variable with @@ -3365,7 +3271,7 @@ index 9163c191..852e314d 100644 the first time control passes through its declaration; such a variable is considered initialized upon the completion of its initialization. If the initialization exits by throwing an exception, the initialization is not -@@ -1381,8 +1381,8 @@ will be destroyed if and only if it was constructed. +@@ -1391,8 +1391,8 @@ will be destroyed if and only if it was constructed. \pnum There is an ambiguity in the grammar involving \grammarterm{expression-statement}{s} and \grammarterm{declaration}{s}: An @@ -3377,10 +3283,10 @@ index 9163c191..852e314d 100644 \grammarterm{declarator} starts with a \tcode{(}. In those cases the \grammarterm{statement} is considered a \grammarterm{declaration}, diff --git a/source/strings.tex b/source/strings.tex -index 3bc1e026..749c23d9 100644 +index b8619c9b..e9c20ec8 100644 --- a/source/strings.tex +++ b/source/strings.tex -@@ -5533,13 +5533,13 @@ The contents and meaning of the header \libheaderdef{cstring} +@@ -5537,13 +5537,13 @@ The contents and meaning of the header \libheaderdef{cstring} are the same as the C standard library header \libheader{string.h}. \pnum @@ -3397,7 +3303,7 @@ index 3bc1e026..749c23d9 100644 Each of these functions implicitly creates objects\iref{intro.object} in the destination region of storage immediately prior to copying the sequence of characters to the destination. -@@ -5551,7 +5551,7 @@ otherwise the value of the first parameter. +@@ -5555,7 +5555,7 @@ otherwise the value of the first parameter. The functions \tcode{strchr}, \tcode{strpbrk}, \tcode{strrchr}, \tcode{strstr}, and \tcode{memchr}, have different signatures in this document, @@ -3407,7 +3313,7 @@ index 3bc1e026..749c23d9 100644 \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index 203a1bf4..b0c75171 100644 +index e86cf147..0dd4cd06 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3515,7 +3421,7 @@ index 203a1bf4..b0c75171 100644 dependent. The result of applying the \tcode{offsetof} macro to a static data member or a function member is undefined. No operation invoked by the \tcode{offsetof} macro shall throw an exception and -@@ -1103,7 +1090,7 @@ the specialization on the unqualified type \tcode{T}. +@@ -1118,7 +1105,7 @@ the specialization on the unqualified type \tcode{T}. \pnum Non-arithmetic standard types, such as @@ -3524,7 +3430,7 @@ index 203a1bf4..b0c75171 100644 \rSec3[numeric.limits.members]{\tcode{numeric_limits} members} -@@ -2107,7 +2094,7 @@ The program is terminated without executing destructors for objects with automat +@@ -2122,7 +2109,7 @@ The program is terminated without executing destructors for objects with automat thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{_Exit}}% @@ -3533,7 +3439,7 @@ index 203a1bf4..b0c75171 100644 \end{itemdescr} \indexlibraryglobal{abort}% -@@ -2127,7 +2114,7 @@ automatic, thread, or static storage +@@ -2142,7 +2129,7 @@ automatic, thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{abort}}% @@ -3542,7 +3448,7 @@ index 203a1bf4..b0c75171 100644 \end{itemdescr} \indexlibraryglobal{atexit}% -@@ -2144,7 +2131,8 @@ The +@@ -2159,7 +2146,8 @@ The functions register the function pointed to by \tcode{f} to be called without arguments at normal program termination. It is unspecified whether a call to \tcode{atexit()} that does not @@ -3552,7 +3458,7 @@ index 203a1bf4..b0c75171 100644 \begin{note} The \tcode{atexit()} functions do not introduce a data race\iref{res.on.data.races}. -@@ -2238,7 +2226,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; +@@ -2253,7 +2241,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; The \tcode{at_quick_exit()} functions register the function pointed to by \tcode{f} to be called without arguments when \tcode{quick_exit} is called. It is unspecified whether a call to \tcode{at_quick_exit()} that does not @@ -3562,7 +3468,7 @@ index 203a1bf4..b0c75171 100644 \begin{note} The \tcode{at_quick_exit()} functions do not introduce a -@@ -2290,7 +2279,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s +@@ -2305,7 +2294,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s \pnum \remarks \indextext{signal-safe!\idxcode{quick_exit}}% @@ -3571,7 +3477,7 @@ index 203a1bf4..b0c75171 100644 when the functions registered with \tcode{at_quick_exit} are. \end{itemdescr} -@@ -2417,7 +2406,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); +@@ -2432,7 +2421,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3580,7 +3486,7 @@ index 203a1bf4..b0c75171 100644 called by a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -2453,7 +2442,7 @@ a null pointer value, throws +@@ -2468,7 +2457,7 @@ a null pointer value, throws \tcode{bad_alloc}. \item Otherwise, the function calls the current @@ -3589,7 +3495,7 @@ index 203a1bf4..b0c75171 100644 If the called function returns, the loop repeats. \item The loop terminates when an attempt to allocate the requested storage is -@@ -2675,7 +2664,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); +@@ -2690,7 +2679,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3598,7 +3504,7 @@ index 203a1bf4..b0c75171 100644 called by the array form of a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -2988,8 +2977,8 @@ versions of \tcode{operator delete}, the C standard library function +@@ -3003,8 +2992,8 @@ versions of \tcode{operator delete}, the C standard library function introduce a data race\iref{res.on.data.races}. Calls to these functions that allocate or deallocate a particular unit of storage shall occur in a single total order, and each such deallocation call @@ -3609,18 +3515,7 @@ index 203a1bf4..b0c75171 100644 \rSec2[alloc.errors]{Storage allocation errors} -@@ -3143,8 +3132,8 @@ template constexpr T* launder(T* p) noexcept; - \pnum - \expects - \tcode{p} represents the address \placeholder{A} of a byte in memory. --An object \placeholder{X} that is within its lifetime\iref{basic.life} --and whose type is similar\iref{conv.qual} to \tcode{T} -+An object \placeholder{X} that is within its \deflink{lifetime}{basic.life} -+and whose type is \deflinkx{similar}{similar types}{conv.qual} to \tcode{T} - is located at the address \placeholder{A}. - All bytes of storage that would be - reachable through\iref{basic.compound} the result -@@ -3357,7 +3346,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. +@@ -3375,7 +3364,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. \pnum \remarks @@ -3630,7 +3525,7 @@ index 203a1bf4..b0c75171 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. \end{itemdescr} -@@ -3934,7 +3924,8 @@ the ordinary literal encoding\iref{lex.ccon}. +@@ -3946,7 +3936,8 @@ the ordinary literal encoding\iref{lex.ccon}. \pnum \remarks @@ -3640,7 +3535,7 @@ index 203a1bf4..b0c75171 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. The return value remains valid until the exception object from which -@@ -4085,7 +4076,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread. +@@ -4097,7 +4088,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread. \remarks When \tcode{uncaught_exceptions() > 0}, throwing an exception can result in a call of the function @@ -3649,7 +3544,7 @@ index 203a1bf4..b0c75171 100644 \end{itemdescr} \rSec2[propagation]{Exception propagation} -@@ -4148,8 +4139,9 @@ constexpr exception_ptr current_exception() noexcept; +@@ -4161,8 +4152,9 @@ exception_ptr current_exception() noexcept; \begin{itemdescr} \pnum \returns @@ -3661,7 +3556,7 @@ index 203a1bf4..b0c75171 100644 handled exception, or a null \tcode{exception_ptr} object if no exception is being handled. The referenced object shall remain valid at least as long as there is an \tcode{exception_ptr} object that refers to it. -@@ -4739,7 +4731,7 @@ constexpr bool empty() const noexcept; +@@ -4748,7 +4740,7 @@ constexpr bool empty() const noexcept; \pnum The header \libheaderdef{compare} specifies types, objects, and functions for use primarily in connection with @@ -3670,7 +3565,7 @@ index 203a1bf4..b0c75171 100644 \indexlibraryglobal{is_eq}% \indexlibraryglobal{is_neq}% -@@ -6329,7 +6321,7 @@ environment. +@@ -6342,7 +6334,7 @@ environment. \end{note} \pnum @@ -3680,10 +3575,10 @@ index 203a1bf4..b0c75171 100644 calls to the \tcode{setlocale} function or with calls to functions that are affected by the current C locale. The implementation shall behave as if no diff --git a/source/templates.tex b/source/templates.tex -index 467b190a..cf9f5e15 100644 +index b5c2e933..5f70947b 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -713,7 +713,7 @@ struct A {}; +@@ -716,7 +716,7 @@ struct A {}; \rSec1[temp.names]{Names of template specializations} \pnum @@ -3692,7 +3587,7 @@ index 467b190a..cf9f5e15 100644 \grammarterm{template-id}: \begin{bnf} -@@ -1052,8 +1052,8 @@ in a \grammarterm{splice-specialization-specifier} +@@ -1055,8 +1055,8 @@ in a \grammarterm{splice-specialization-specifier} shall match the type and form specified for the corresponding parameter declared by the template in its \grammarterm{template-parameter-list}. @@ -3703,7 +3598,7 @@ index 467b190a..cf9f5e15 100644 \grammarterm{template-argument}{s}. \begin{example} \begin{codeblock} -@@ -1244,7 +1244,7 @@ When a \grammarterm{simple-template-id} or +@@ -1247,7 +1247,7 @@ When a \grammarterm{simple-template-id} or \grammarterm{splice-specialization-specifier} does not designate a function, a default \grammarterm{template-argument} is @@ -3712,7 +3607,7 @@ index 467b190a..cf9f5e15 100644 when the value of that default argument is needed. \begin{example} \begin{codeblock} -@@ -1256,7 +1256,7 @@ The default argument for \tcode{U} is instantiated to form the type \tcode{S 1} is not satisfied; the second operand is not checked for satisfaction. \end{example} -@@ -1813,9 +1813,9 @@ in the declaration of a constrained entity (and, therefore, can involve the +@@ -1816,9 +1816,9 @@ in the declaration of a constrained entity (and, therefore, can involve the unsubstituted template parameters of the constrained entity), called the \defn{parameter mapping}\iref{temp.constr.decl}. \begin{note} @@ -3772,7 +3667,7 @@ index 467b190a..cf9f5e15 100644 \end{note} \pnum -@@ -1892,7 +1892,7 @@ first substituted into its expression. +@@ -1895,7 +1895,7 @@ first substituted into its expression. If substitution results in an invalid type or expression in the immediate context of the atomic constraint\iref{temp.deduct.general}, the constraint is not satisfied. @@ -3781,7 +3676,7 @@ index 467b190a..cf9f5e15 100644 is performed if necessary, and \tcode{E} shall be a constant expression of type \tcode{bool}. The constraint is satisfied if and only if evaluation of \tcode{E} -@@ -2054,11 +2054,11 @@ A declaration's \defn{associated constraints} are defined as follows: +@@ -2057,11 +2057,11 @@ A declaration's \defn{associated constraints} are defined as follows: the declaration has no associated constraints. \item Otherwise, if there is a single introduced \grammarterm{constraint-expression}, @@ -3796,7 +3691,7 @@ index 467b190a..cf9f5e15 100644 following order: \begin{itemize} \item -@@ -2155,7 +2155,7 @@ so it does match \#2. +@@ -2158,7 +2158,7 @@ so it does match \#2. \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is @@ -3805,7 +3700,7 @@ index 467b190a..cf9f5e15 100644 % \begin{itemize} \item -@@ -2164,7 +2164,7 @@ the normal form of \tcode{E}. +@@ -2167,7 +2167,7 @@ the normal form of \tcode{E}. \item The normal form of an expression \tcode{E1 || E2} is @@ -3814,7 +3709,7 @@ index 467b190a..cf9f5e15 100644 the normal forms of \tcode{E1} and \tcode{E2}. \item -@@ -2412,7 +2412,7 @@ the constraint of $A$ subsumes that of $B$. +@@ -2415,7 +2415,7 @@ the constraint of $A$ subsumes that of $B$. \end{itemize} % \begin{example} @@ -3823,7 +3718,7 @@ index 467b190a..cf9f5e15 100644 % The constraint $A \land B$ subsumes $A$, but $A$ does not subsume $A \land B$. % -@@ -2632,7 +2632,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. +@@ -2637,7 +2637,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. \end{example} \pnum @@ -3832,18 +3727,7 @@ index 467b190a..cf9f5e15 100644 \tcode{decltype($e$)} denotes a unique dependent type. Two such \grammarterm{decltype-specifier}{s} refer to the same type only if their \grammarterm{expression}{s} are -@@ -2702,8 +2702,8 @@ default arguments, - \grammarterm{requires-clause}{s}, - or - \grammarterm{noexcept-specifier}{s}. --For the purpose of instantiation, the substatements of a constexpr if --statement\iref{stmt.if} are considered definitions. -+For the purpose of instantiation, the substatements of a -+\deflink{constexpr if}{stmt.if} statement are considered definitions. - For the purpose of name lookup and instantiation, - the \grammarterm{compound-statement} of an \grammarterm{expansion-statement} - is considered a template definition. -@@ -3060,7 +3060,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} +@@ -3064,7 +3064,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} \pnum A local class of non-closure type shall not have member templates. @@ -3852,7 +3736,7 @@ index 467b190a..cf9f5e15 100644 apply to member template names. A destructor shall not be a member template. -@@ -3287,7 +3287,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. +@@ -3291,7 +3291,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. \item In a \grammarterm{capture-list}\iref{expr.prim.lambda.capture}; the pattern is the \grammarterm{capture} without the ellipsis. @@ -3861,7 +3745,7 @@ index 467b190a..cf9f5e15 100644 \grammarterm{identifier}. \item In a \grammarterm{pack-index-expression}; -@@ -3910,9 +3910,9 @@ primary template. +@@ -3914,9 +3914,9 @@ primary template. \pnum A partial specialization matches a given actual template argument list if the template arguments of the partial specialization can be @@ -3874,7 +3758,7 @@ index 467b190a..cf9f5e15 100644 \begin{example} \begin{codeblock} template class A { }; // \#1 -@@ -3974,14 +3974,14 @@ of the primary template. +@@ -3978,14 +3978,14 @@ of the primary template. For two partial specializations, the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more @@ -3892,7 +3776,7 @@ index 467b190a..cf9f5e15 100644 as the corresponding partial specialization. \item Each function template -@@ -4187,8 +4187,8 @@ void h(int* p) { +@@ -4191,8 +4191,8 @@ void h(int* p) { \end{example} \pnum @@ -3903,7 +3787,7 @@ index 467b190a..cf9f5e15 100644 \pnum The signature of a function template -@@ -4239,7 +4239,7 @@ For example, a template type parameter can be used in the +@@ -4243,7 +4243,7 @@ For example, a template type parameter can be used in the Two expressions involving template parameters are considered \defnx{equivalent}{equivalent!expressions} if two function definitions containing the expressions would satisfy @@ -3912,9 +3796,9 @@ index 467b190a..cf9f5e15 100644 to name the template parameters may differ as long as a token used to name a template parameter in one expression is replaced by another token that names the same template parameter in the other expression. -@@ -4409,8 +4409,8 @@ function template +@@ -4413,8 +4413,8 @@ function template specialization - is selected to match a placement operator new\iref{basic.stc.dynamic.deallocation,expr.new}; + is selected to match a placement allocation function\iref{basic.stc.dynamic.deallocation,expr.new}; \item -when a friend function declaration\iref{temp.friend}, an -explicit instantiation\iref{temp.explicit} or an explicit specialization\iref{temp.expl.spec} refers to @@ -3923,7 +3807,7 @@ index 467b190a..cf9f5e15 100644 a function template specialization. \end{itemize} -@@ -4803,7 +4803,7 @@ A \grammarterm{concept-definition} +@@ -4807,7 +4807,7 @@ A \grammarterm{concept-definition} shall inhabit a namespace scope\iref{basic.scope.namespace}. \pnum @@ -3932,16 +3816,7 @@ index 467b190a..cf9f5e15 100644 \pnum A concept is not instantiated\iref{temp.spec}. -@@ -5130,7 +5130,7 @@ was a pack expansion and the corresponding pack is empty, or - \item an instantiation uses a default argument or default template argument - that had not been defined at the point at which the template was defined, or - --\item constant expression evaluation\iref{expr.const.core} within the template -+\item \link{constant expression evaluation}{expr.const.core} within the template - instantiation uses - \begin{itemize} - \item the value of a const object of integral or unscoped enumeration type or -@@ -5383,7 +5383,7 @@ any of the expressions +@@ -5387,7 +5387,7 @@ any of the expressions or \grammarterm{braced-init-list}{s} in the \grammarterm{expression-list} @@ -3950,7 +3825,7 @@ index 467b190a..cf9f5e15 100644 \item the \grammarterm{unqualified-id} is a \grammarterm{template-id} in which any of the template arguments depends -@@ -5443,7 +5443,7 @@ if it is +@@ -5447,7 +5447,7 @@ if it is \item in the definition of a class template, a nested class of a class template, a member of a class template, or a member of a nested class of a class template, @@ -3959,7 +3834,7 @@ index 467b190a..cf9f5e15 100644 \item in the definition of a primary class template or a member of a primary class template, the name of the -@@ -5722,7 +5722,7 @@ used without a \grammarterm{template-argument-list}. +@@ -5728,7 +5728,7 @@ used without a \grammarterm{template-argument-list}. \end{footnote} \item a \grammarterm{pack-index-specifier}, \item denoted by \tcode{decltype(}\grammarterm{expression}{}\tcode{)}, @@ -3968,7 +3843,7 @@ index 467b190a..cf9f5e15 100644 \item denoted by a \grammarterm{splice-type-specifier} in which either the \grammarterm{splice-specifier} or \grammarterm{splice-specialization-specifier} -@@ -5874,7 +5874,7 @@ see~\ref{support.types}. +@@ -5880,7 +5880,7 @@ see~\ref{support.types}. \end{note} \pnum @@ -3977,16 +3852,7 @@ index 467b190a..cf9f5e15 100644 type-dependent if \begin{itemize} \item -@@ -6022,7 +6022,7 @@ An expression of the form \tcode{\&}\grammarterm{qualified-id} where the - instantiation is value-dependent. - An expression of the form \tcode{\&}\grammarterm{cast-expression} - is also value-dependent if evaluating \grammarterm{cast-expression} --as a core constant expression\iref{expr.const.core} succeeds and -+as a \deflinkx{core constant expression}{expression!core constant}{expr.const.core} succeeds and - the result of the evaluation refers to a templated entity - that is an object with static or thread storage duration or a member function. - -@@ -6253,7 +6253,7 @@ within a translation unit. +@@ -6260,7 +6260,7 @@ within a translation unit. A specialization for any template may have points of instantiation in multiple translation units. If two different points of instantiation give a template specialization @@ -3995,7 +3861,7 @@ index 467b190a..cf9f5e15 100644 the program is ill-formed, no diagnostic required. \pnum -@@ -6564,7 +6564,7 @@ of type +@@ -6571,7 +6571,7 @@ of type \pnum If a function declaration acquired its function type through @@ -4004,16 +3870,7 @@ index 467b190a..cf9f5e15 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -6645,7 +6645,7 @@ X ch; // error: incomplete type \tcode{X} - \end{example} - \begin{note} - Within a template declaration, --a local class\iref{class.local} or enumeration and the members of -+a \link{local class}{class.local} or enumeration and the members of - a local class are never considered to be entities that can be separately - instantiated (this includes their default arguments, - \grammarterm{noexcept-specifier}{s}, and non-static data member -@@ -6823,7 +6823,7 @@ void x() { +@@ -6808,7 +6808,7 @@ void x() { \end{example} \pnum @@ -4022,7 +3879,7 @@ index 467b190a..cf9f5e15 100644 can be determined without instantiating a class template definition, it is unspecified whether that instantiation actually takes place. \begin{example} -@@ -7160,7 +7160,7 @@ If an entity is the subject of both an explicit instantiation declaration +@@ -7165,7 +7165,7 @@ If an entity is the subject of both an explicit instantiation declaration and an explicit instantiation definition in the same translation unit, the definition shall follow the declaration. An entity that is the subject of an explicit instantiation declaration and that is also used @@ -4031,7 +3888,7 @@ index 467b190a..cf9f5e15 100644 in the translation unit shall be the subject of an explicit instantiation definition somewhere in the program; otherwise the program is ill-formed, no diagnostic required. -@@ -8225,7 +8225,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. +@@ -8250,7 +8250,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. In the following example, assuming a \tcode{signed char} cannot represent the value 1000, @@ -4040,7 +3897,7 @@ index 467b190a..cf9f5e15 100644 would be required to convert the \grammarterm{template-argument} of type \tcode{int} to \tcode{signed char}, -@@ -8334,8 +8334,8 @@ is not a reference type: +@@ -8359,8 +8359,8 @@ is not a reference type: \item If \tcode{A} @@ -4051,7 +3908,7 @@ index 467b190a..cf9f5e15 100644 \tcode{A} for type deduction; otherwise, -@@ -8343,7 +8343,7 @@ otherwise, +@@ -8368,7 +8368,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -4060,7 +3917,7 @@ index 467b190a..cf9f5e15 100644 of \tcode{A} for type -@@ -8439,8 +8439,8 @@ The transformed \tcode{A} +@@ -8464,8 +8464,8 @@ The transformed \tcode{A} can be another pointer or pointer-to-member type that can be converted to the deduced \tcode{A} @@ -4071,7 +3928,7 @@ index 467b190a..cf9f5e15 100644 \item If -@@ -8573,7 +8573,7 @@ void test() { +@@ -8598,7 +8598,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -4080,7 +3937,7 @@ index 467b190a..cf9f5e15 100644 If there is a target, the function template's function type and the target type are used as the types of -@@ -8620,7 +8620,7 @@ is not a reference type: +@@ -8645,7 +8645,7 @@ is not a reference type: If \tcode{P} is an array type, the pointer type produced by the @@ -4089,7 +3946,7 @@ index 467b190a..cf9f5e15 100644 \tcode{P} for type deduction; otherwise, -@@ -8628,7 +8628,7 @@ deduction; otherwise, +@@ -8653,7 +8653,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -4098,7 +3955,7 @@ index 467b190a..cf9f5e15 100644 \tcode{P} for type deduction; otherwise, -@@ -8719,7 +8719,7 @@ after a function has been selected. +@@ -8744,7 +8744,7 @@ after a function has been selected. In the context of a call to a conversion function, the return types of the conversion function templates are used. \item @@ -4107,7 +3964,7 @@ index 467b190a..cf9f5e15 100644 type is used. \end{itemize} -@@ -9235,7 +9235,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the +@@ -9258,7 +9258,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the template argument list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by $\texttt{P}_i$. @@ -4116,7 +3973,7 @@ index 467b190a..cf9f5e15 100644 originally a pack expansion: \begin{itemize} \item if \tcode{P} does not contain a template argument corresponding to -@@ -9298,7 +9298,7 @@ each remaining parameter type in the parameter-type-list +@@ -9321,7 +9321,7 @@ each remaining parameter type in the parameter-type-list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by the function parameter pack. @@ -4125,7 +3982,7 @@ index 467b190a..cf9f5e15 100644 originally a function parameter pack: \begin{itemize} \item if \tcode{P} does not contain a function parameter type corresponding to -@@ -9636,8 +9636,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod +@@ -9659,8 +9659,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod In a declaration whose \grammarterm{declarator-id} refers to a specialization of a function template, template argument deduction is performed to identify the specialization to which the declaration refers. Specifically, this is done @@ -4134,10 +3991,10 @@ index 467b190a..cf9f5e15 100644 +for \link{explicit instantiations}{temp.explicit}, \link{explicit specializations}{temp.expl.spec}, +and certain \link{friend declarations}{temp.friend}. This is also done to determine whether a deallocation function template specialization matches a placement - \tcode{operator new}\iref{basic.stc.dynamic.deallocation,expr.new}. + allocation function\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index bfd73672..9d7efb72 100644 +index 679b2960..363ff13c 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4149,18 +4006,7 @@ index bfd73672..9d7efb72 100644 and values between threads, as summarized in \tref{thread.summary}. -@@ -294,8 +294,8 @@ exception is thrown then a lock shall not have been acquired for the current exe - A type \tcode{L} meets the \defnoldconcept{TimedLockable} requirements if it meets the \oldconcept{Lockable} - requirements and the following expressions are well-formed and have the specified semantics - (\tcode{m} denotes a value of type \tcode{L}, \tcode{rel_time} denotes a value of a --specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes a value --of a specialization of \tcode{time_point}\iref{time.point}). -+specialization of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes a value -+of a specialization of \link{\tcode{time_point}}{time.point}). - - \begin{itemdecl} - m.try_lock_for(rel_time) -@@ -7287,7 +7287,7 @@ namespace std { +@@ -7309,7 +7309,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -4169,7 +4015,7 @@ index bfd73672..9d7efb72 100644 An execution agent \term{owns} a mutex from the time it successfully calls one of the lock functions until it calls unlock. Mutexes can be either recursive or non-recursive, and can grant simultaneous ownership to one or many execution agents. Both -@@ -7331,7 +7331,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on +@@ -7353,7 +7353,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on a single mutex appear to occur in a single total order. \begin{note} This @@ -4178,7 +4024,7 @@ index bfd73672..9d7efb72 100644 mutex. \end{note} \begin{note} -@@ -7411,7 +7411,7 @@ in the absence of contending mutex acquisitions. +@@ -7433,7 +7433,7 @@ in the absence of contending mutex acquisitions. \pnum \sync If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations @@ -4187,7 +4033,7 @@ index bfd73672..9d7efb72 100644 \begin{note} Since \tcode{lock()} does not synchronize with a failed subsequent \tcode{try_lock()}, the visibility rules are weak enough that little would be -@@ -7447,7 +7447,7 @@ Releases the calling thread's ownership of the mutex. +@@ -7469,7 +7469,7 @@ Releases the calling thread's ownership of the mutex. \pnum \sync @@ -4196,19 +4042,7 @@ index bfd73672..9d7efb72 100644 lock operations that obtain ownership on the same object. \pnum -@@ -7576,9 +7576,9 @@ The \defn{timed mutex types} are the standard library types \tcode{timed_mutex}, - meet the requirements set out below. - In this description, \tcode{m} denotes an object of a mutex type, - \tcode{rel_time} denotes an object of a --specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes an -+specialization of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes an - object of a --specialization of \tcode{time_point}\iref{time.point}. -+specialization of \link{\tcode{time_point}}{time.point}. - \begin{note} - The timed mutex types meet the \oldconcept{TimedLockable} - requirements\iref{thread.req.lockable.timed}. -@@ -7868,7 +7868,7 @@ Releases a shared lock on the mutex held by the calling thread. +@@ -7890,7 +7890,7 @@ Releases a shared lock on the mutex held by the calling thread. \pnum \sync @@ -4217,34 +4051,25 @@ index bfd73672..9d7efb72 100644 \tcode{lock()} operations that obtain ownership on the same object. \pnum -@@ -7972,7 +7972,7 @@ meet the requirements set out below. In this description, - \tcode{rel_time} denotes an object of a specialization of - \tcode{duration}\iref{time.duration}, and - \tcode{abs_time} denotes an object of a specialization of --\tcode{time_point}\iref{time.point}. -+\link{\tcode{time_point}}{time.point}. - \begin{note} - The shared timed mutex types meet the \oldconcept{SharedTimedLockable} - requirements\iref{thread.req.lockable.shared.timed}. -@@ -8183,7 +8183,7 @@ namespace std { +@@ -8205,7 +8205,7 @@ namespace std { \pnum An object of type \tcode{lock_guard} controls the ownership of a lockable object within a scope. A \tcode{lock_guard} object maintains ownership of a lockable -object throughout the \tcode{lock_guard} object's lifetime\iref{basic.life}. +object throughout the \tcode{lock_guard} object's \deflink{lifetime}{basic.life}. The behavior of a program is undefined if the lockable object referenced by - \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} + \exposid{pm} does not exist for the entire lifetime of the \tcode{lock_guard} object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} -@@ -8256,7 +8256,7 @@ namespace std { +@@ -8278,7 +8278,7 @@ namespace std { \pnum An object of type \tcode{scoped_lock} controls the ownership of lockable objects within a scope. A \tcode{scoped_lock} object maintains ownership of lockable -objects throughout the \tcode{scoped_lock} object's lifetime\iref{basic.life}. +objects throughout the \tcode{scoped_lock} object's \deflink{lifetime}{basic.life}. The behavior of a program is undefined if the lockable objects referenced by - \tcode{pm} do not exist for the entire lifetime of the \tcode{scoped_lock} + \exposid{pm} do not exist for the entire lifetime of the \tcode{scoped_lock} object. -@@ -9413,7 +9413,7 @@ earlier returning execution. +@@ -9435,7 +9435,7 @@ earlier returning execution. \pnum \sync For any given \tcode{once_flag}: all active executions occur in a total @@ -4253,7 +4078,7 @@ index bfd73672..9d7efb72 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -11379,22 +11379,21 @@ the state object. +@@ -11410,22 +11410,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4280,7 +4105,7 @@ index bfd73672..9d7efb72 100644 \begin{note} This explicitly specifies that the result of the shared state is visible in the objects that reference this state in the sense of data race -@@ -11713,8 +11712,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -11744,8 +11743,8 @@ The class template \tcode{future} defines a type for asynchronous return objects do not share their shared state with other asynchronous return objects. A default-constructed \tcode{future} object has no shared state. A \tcode{future} object with shared state can be created by @@ -4291,7 +4116,7 @@ index bfd73672..9d7efb72 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -12024,7 +12023,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -12055,7 +12054,7 @@ object has no shared state. A \tcode{shared_future} object with shared state can be created by conversion from a \tcode{future} object and shares its shared state with the @@ -4300,7 +4125,7 @@ index bfd73672..9d7efb72 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -12473,7 +12472,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -12504,7 +12503,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -4310,7 +4135,7 @@ index bfd73672..9d7efb72 100644 the first function that successfully detects the ready status of the shared state or diff --git a/source/time.tex b/source/time.tex -index fa46de5b..ce39bdde 100644 +index a29b08ed..b4d55717 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1216,7 +1216,7 @@ unless it meets all of the following conditions: @@ -4322,7 +4147,7 @@ index fa46de5b..ce39bdde 100644 \item the expression \tcode{T::now()} is well-formed when treated as an unevaluated operand. -@@ -11089,7 +11089,7 @@ The expression +@@ -11098,7 +11098,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp) \end{codeblock} @@ -4331,7 +4156,7 @@ index fa46de5b..ce39bdde 100644 \pnum \returns -@@ -11122,7 +11122,7 @@ The expression +@@ -11131,7 +11131,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp, addressof(abbrev)) \end{codeblock} @@ -4340,7 +4165,7 @@ index fa46de5b..ce39bdde 100644 \pnum \returns -@@ -11159,7 +11159,7 @@ from_stream(declval&>(), +@@ -11168,7 +11168,7 @@ from_stream(declval&>(), declval*>(), &offset) \end{codeblock} @@ -4349,7 +4174,7 @@ index fa46de5b..ce39bdde 100644 \pnum \returns -@@ -11199,7 +11199,7 @@ The expression +@@ -11208,7 +11208,7 @@ The expression from_stream(declval&>(), @$F$@, tp, addressof(abbrev), &offset) \end{codeblock} @@ -4359,10 +4184,10 @@ index fa46de5b..ce39bdde 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index 09be66f7..6011601f 100644 +index a284b4f1..f8e08fe3 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -104,15 +104,15 @@ namespace std { +@@ -120,15 +120,15 @@ namespace std { template struct integer_sequence; template @@ -4381,7 +4206,7 @@ index 09be66f7..6011601f 100644 // \ref{intseq.binding}, structured binding support template struct tuple_size; -@@ -345,7 +345,7 @@ of forwarding functions. +@@ -352,7 +352,7 @@ of forwarding functions. \indextext{signal-safe!\idxcode{forward}}% \indextext{signal-safe!\idxcode{move}}% \indextext{signal-safe!\idxcode{move_if_noexcept}}% @@ -4390,7 +4215,7 @@ index 09be66f7..6011601f 100644 \indexlibraryglobal{forward}% \indextext{\idxcode{forward}}% -@@ -520,7 +520,7 @@ template constexpr add_const_t& as_const(T& t) noexcept; +@@ -527,7 +527,7 @@ template constexpr add_const_t& as_const(T& t) noexcept; \pnum The library provides the function template \tcode{declval} to simplify the definition of @@ -4399,7 +4224,7 @@ index 09be66f7..6011601f 100644 \indexlibraryglobal{declval}% \begin{itemdecl} -@@ -1511,7 +1511,7 @@ inline constexpr piecewise_construct_t piecewise_construct{}; +@@ -1814,7 +1814,7 @@ inline constexpr piecewise_construct_t piecewise_construct{}; The \keyword{struct} \tcode{piecewise_construct_t} is an empty class type used as a unique type to disambiguate constructor and function overloading. Specifically, \tcode{pair} has a constructor with \tcode{piecewise_construct_t} as the @@ -4408,7 +4233,7 @@ index 09be66f7..6011601f 100644 for piecewise construction of the elements of the \tcode{pair} object. \rSec1[tuple]{Tuples} -@@ -2161,7 +2161,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. +@@ -2464,7 +2464,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. \pnum \effects Equivalent to the preceding constructors except that each element is constructed with @@ -4417,7 +4242,7 @@ index 09be66f7..6011601f 100644 \end{itemdescr} \rSec3[tuple.assign]{Assignment} -@@ -2819,7 +2819,7 @@ template struct tuple_size; +@@ -3122,7 +3122,7 @@ template struct tuple_size; \pnum Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. If the expression \tcode{TS::value} is well-formed @@ -4426,7 +4251,7 @@ index 09be66f7..6011601f 100644 each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts} with a base characteristic of \begin{codeblock} -@@ -7038,6 +7038,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); +@@ -7356,6 +7356,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); \rSec2[variant.monostate]{Class \tcode{monostate}}% \indexlibraryglobal{monostate}% @@ -4434,7 +4259,7 @@ index 09be66f7..6011601f 100644 \begin{itemdecl} struct monostate{}; \end{itemdecl} -@@ -7209,7 +7210,8 @@ namespace std { +@@ -7527,7 +7528,8 @@ namespace std { \end{codeblock} \pnum @@ -4448,7 +4273,7 @@ index 09be66f7..6011601f 100644 2.43.0 -From 115ef5611b4abe79f578693147f942a12cd0052d Mon Sep 17 00:00:00 2001 +From 60cd2c71f1c5afd5823cd7cd854ff6631771cabb Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove @@ -4460,7 +4285,7 @@ Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/iostreams.tex b/source/iostreams.tex -index faf3c046..8bc8a19a 100644 +index aff85000..4cf63702 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -13922,7 +13922,7 @@ without an intervening \grammarterm{root-directory} element. @@ -4473,10 +4298,10 @@ index faf3c046..8bc8a19a 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index cf9f5e15..3e0fd2ed 100644 +index 5f70947b..5b4f6ad6 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -2151,7 +2151,6 @@ so it does match \#2. +@@ -2154,7 +2154,6 @@ so it does match \#2. \end{example} \rSec2[temp.constr.normal]{Constraint normalization} @@ -4484,7 +4309,7 @@ index cf9f5e15..3e0fd2ed 100644 \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is -@@ -2270,10 +2269,11 @@ whose parameter mapping is the identity mapping. +@@ -2273,10 +2272,11 @@ whose parameter mapping is the identity mapping. \end{itemize} \pnum @@ -4501,7 +4326,7 @@ index cf9f5e15..3e0fd2ed 100644 2.43.0 -From e4700dbefbdcdad61bf0c3e303d6b2a7f2391ce2 Mon Sep 17 00:00:00 2001 +From b3979fdc7f9e5993e9c6d9c0d9247321fe537de1 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code @@ -4514,7 +4339,7 @@ Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code 3 files changed, 351 insertions(+), 351 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex -index a9fd6f69..d3b0f3e3 100644 +index b01c7719..76071483 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -135,11 +135,11 @@ does not declare a variable. @@ -4532,10 +4357,10 @@ index a9fd6f69..d3b0f3e3 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index d662f889..1b8befd1 100644 +index 5e62f101..cf26fce7 100644 --- a/source/lex.tex +++ b/source/lex.tex -@@ -333,43 +333,43 @@ the numerical value has no other meaning in this context. +@@ -336,43 +336,43 @@ the numerical value has no other meaning in this context. \ucode{000c} & \uname{form feed} & \\ \ucode{0020} & \uname{space} & \\ \ucode{000a} & \uname{line feed} & new-line \\ @@ -4616,7 +4441,7 @@ index d662f889..1b8befd1 100644 \end{floattable} \pnum -@@ -608,7 +608,7 @@ given character: +@@ -612,7 +612,7 @@ given character: \item \indextext{literal!string!raw}% If the next character begins a sequence of characters that could be the prefix @@ -4625,7 +4450,7 @@ index d662f889..1b8befd1 100644 token shall be a raw string literal. Between the initial and final double quote characters of the raw string, any transformations performed in phase 2 (line splicing) are reverted; this reversion -@@ -616,7 +616,7 @@ is applied before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting +@@ -620,7 +620,7 @@ is applied before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting parenthesis is identified. The raw string literal is defined as the shortest sequence of characters that matches the raw-string pattern \begin{ncbnf} @@ -4634,7 +4459,7 @@ index d662f889..1b8befd1 100644 \end{ncbnf} \item Otherwise, if the next three characters are \tcode{<::} and the subsequent character -@@ -751,15 +751,15 @@ depending on the implementation. +@@ -755,15 +755,15 @@ depending on the implementation. \begin{bnf} \nontermdef{pp-number}\br digit\br @@ -4658,7 +4483,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \pnum -@@ -1172,19 +1172,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1189,19 +1189,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. \nontermdef{binary-literal}\br \terminal{0b} binary-digit\br \terminal{0B} binary-digit\br @@ -4681,7 +4506,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \begin{bnf} -@@ -1215,14 +1215,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1232,14 +1232,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{hexadecimal-digit-sequence}\br hexadecimal-digit\br @@ -4700,7 +4525,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \begin{bnf} -@@ -1237,17 +1237,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1254,17 +1254,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{unsigned-suffix} \textnormal{one of}\br @@ -4721,7 +4546,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \begin{bnf} -@@ -1286,7 +1286,7 @@ when determining the value. +@@ -1303,7 +1303,7 @@ when determining the value. \pnum The \grammarterm{hexadecimal-digit}s @@ -4730,7 +4555,7 @@ index d662f889..1b8befd1 100644 have decimal values ten through fifteen. \begin{example} The number twelve can be written \tcode{12}, \tcode{014}, -@@ -1330,7 +1330,7 @@ none & +@@ -1347,7 +1347,7 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4739,7 +4564,7 @@ index d662f889..1b8befd1 100644 \tcode{unsigned int} & \tcode{unsigned int}\\ & -@@ -1339,7 +1339,7 @@ none & +@@ -1356,7 +1356,7 @@ none & & \tcode{unsigned long long int} & \tcode{unsigned long long int}\\\hline @@ -4748,7 +4573,7 @@ index d662f889..1b8befd1 100644 \tcode{long int} & \tcode{long int}\\ & -@@ -1351,22 +1351,22 @@ none & +@@ -1368,22 +1368,22 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4776,7 +4601,7 @@ index d662f889..1b8befd1 100644 & \\\hline \tcode{z} or \tcode{Z} & -@@ -1414,12 +1414,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1431,12 +1431,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \indextext{literal!character}% \begin{bnf} \nontermdef{character-literal}\br @@ -4791,7 +4616,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \begin{bnf} -@@ -1449,12 +1449,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1466,12 +1466,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{simple-escape-sequence}\br @@ -4806,7 +4631,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \begin{bnf} -@@ -1470,21 +1470,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1487,21 +1487,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{octal-escape-sequence}\br @@ -4835,7 +4660,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \begin{bnf} -@@ -1667,42 +1667,42 @@ is supported for compatibility with \CppXIV{} and C. +@@ -1684,42 +1684,42 @@ is supported for compatibility with \CppXIV{} and C. \begin{bnf} \nontermdef{fractional-constant}\br @@ -4889,7 +4714,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \pnum -@@ -1788,7 +1788,7 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1814,7 +1814,7 @@ std::float32_t z = 1e1000000000f32; // either greatest finite value or positive \begin{bnf} \nontermdef{string-literal}\br \opt{encoding-prefix} plain-string-literal\br @@ -4898,7 +4723,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \begin{bnf} -@@ -1816,7 +1816,7 @@ chosen in an \impldef{choice of larger or smaller value of +@@ -1842,7 +1842,7 @@ std::float32_t z = 1e1000000000f32; // either greatest finite value or positive \begin{bnf} \nontermdef{raw-string}\br @@ -4907,7 +4732,7 @@ index d662f889..1b8befd1 100644 \end{bnf} \begin{bnf} -@@ -1902,7 +1902,7 @@ UTF-32 & +@@ -1928,7 +1928,7 @@ UTF-32 & \pnum \indextext{literal!string!raw}% @@ -4917,10 +4742,10 @@ index d662f889..1b8befd1 100644 in the prefix is a \defn{raw string literal}. The \grammarterm{d-char-sequence} serves as a delimiter. The terminating diff --git a/source/time.tex b/source/time.tex -index ce39bdde..cc24c1c9 100644 +index b4d55717..62226224 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -2198,7 +2198,7 @@ If the parse fails to decode a valid duration, +@@ -2201,7 +2201,7 @@ If the parse fails to decode a valid duration, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{d} is not modified. If \tcode{\%Z} is used and successfully parsed, that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. @@ -4929,7 +4754,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -2790,9 +2790,9 @@ as specified in \ref{time.parse}. +@@ -2793,9 +2793,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -4941,7 +4766,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp -@@ -2983,9 +2983,9 @@ as specified in \ref{time.parse}. +@@ -2986,9 +2986,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -4953,7 +4778,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp -@@ -3182,9 +3182,9 @@ as specified in \ref{time.parse}. +@@ -3185,9 +3185,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -4965,7 +4790,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp prior to assigning that difference to \tcode{tp}. -@@ -3345,9 +3345,9 @@ as specified in \ref{time.parse}. +@@ -3348,9 +3348,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -4977,7 +4802,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp prior to assigning that difference to \tcode{tp}. -@@ -3452,9 +3452,9 @@ as specified in \ref{time.parse}. +@@ -3455,9 +3455,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -4989,7 +4814,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp prior to assigning that difference to \tcode{tp}. -@@ -3567,9 +3567,9 @@ as specified in \ref{time.parse}. +@@ -3570,9 +3570,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -5001,7 +4826,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4220,9 +4220,9 @@ as specified in \ref{time.parse}. +@@ -4223,9 +4223,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid day, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{d} is not modified. @@ -5013,7 +4838,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4534,9 +4534,9 @@ as specified in \ref{time.parse}. +@@ -4537,9 +4537,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid month, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{m} is not modified. @@ -5025,7 +4850,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4878,9 +4878,9 @@ as specified in \ref{time.parse}. +@@ -4881,9 +4881,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid year, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{y} is not modified. @@ -5037,7 +4862,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -5261,9 +5261,9 @@ as specified in \ref{time.parse}. +@@ -5264,9 +5264,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid weekday, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{wd} is not modified. @@ -5049,7 +4874,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -5644,9 +5644,9 @@ as specified in \ref{time.parse}. +@@ -5647,9 +5647,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid \tcode{month_day}, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{md} is not modified. @@ -5061,7 +4886,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -6324,9 +6324,9 @@ as specified in \ref{time.parse}. +@@ -6327,9 +6327,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid \tcode{year_month}, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{ym} is not modified. @@ -5073,7 +4898,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -6788,9 +6788,9 @@ as specified in \ref{time.parse}. +@@ -6791,9 +6791,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid \tcode{year_month_day}, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{ymd} is not modified. @@ -5085,7 +4910,7 @@ index ce39bdde..cc24c1c9 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -10483,23 +10483,23 @@ according to the following syntax: +@@ -10486,23 +10486,23 @@ according to the following syntax: \begin{ncbnf} \fmtnontermdef{literal-char}\br @@ -5114,7 +4939,7 @@ index ce39bdde..cc24c1c9 100644 \end{ncbnf} The productions -@@ -10572,11 +10572,11 @@ the result of formatting a chrono type +@@ -10575,11 +10575,11 @@ the result of formatting a chrono type does not contain time zone abbreviation and time zone offset information. If the information is available, @@ -5128,7 +4953,7 @@ index ce39bdde..cc24c1c9 100644 conversion specifier appears in the \fmtgrammarterm{chrono-format-spec}, an exception of type \tcode{format_error} is thrown, -@@ -10592,7 +10592,7 @@ A \tcode{duration} does not contain enough information +@@ -10595,7 +10595,7 @@ A \tcode{duration} does not contain enough information to format as a \tcode{weekday}. \end{example} However, if a flag refers to a ``time of day'' @@ -5137,7 +4962,7 @@ index ce39bdde..cc24c1c9 100644 then a specialization of \tcode{duration} is interpreted as the time of day elapsed since midnight. -@@ -10604,57 +10604,57 @@ the time of day elapsed since midnight. +@@ -10607,57 +10607,57 @@ the time of day elapsed since midnight. \hline \lhdr{Specifier} & \rhdr{Replacement} \\ \capsep \endhead @@ -5213,7 +5038,7 @@ index ce39bdde..cc24c1c9 100644 \\ \rowsep \tcode{\%g} & The last two decimal digits of the calendar year -@@ -10665,158 +10665,158 @@ If the result is a single digit it is prefixed by \tcode{0}. +@@ -10668,164 +10668,164 @@ If the result is a single digit it is prefixed by \tcode{0}. The calendar year as a decimal number, as specified in ISO 8601-1:2019 for the week calendar. If the result is less than four digits @@ -5397,7 +5222,8 @@ index ce39bdde..cc24c1c9 100644 \\ \rowsep -\tcode{\%y} & +\noncxxtcode{\%y} & - The last two decimal digits of the year. + The last two decimal digits of the year, + regardless of the sign of the year. -If the result is a single digit, it is prefixed by \tcode{0}. -The modified command \tcode{\%Oy} produces the locale's alternative representation. -The modified command \tcode{\%Ey} produces the locale's alternative representation @@ -5406,6 +5232,11 @@ index ce39bdde..cc24c1c9 100644 +The modified command \noncxxtcode{\%Oy} produces the locale's alternative representation. +The modified command \noncxxtcode{\%Ey} produces the locale's alternative representation +of offset from \noncxxtcode{\%EC} (year only). + \begin{tailexample} + \begin{codeblock} + cout << format("{:%C %y}", -1976y); // prints \tcode{-20 76} + \end{codeblock} + \end{tailexample} \\ \rowsep -\tcode{\%Y} & +\noncxxtcode{\%Y} & @@ -5443,7 +5274,7 @@ index ce39bdde..cc24c1c9 100644 \\ \end{LongTable} -@@ -10864,9 +10864,9 @@ template +@@ -10873,9 +10873,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5455,7 +5286,7 @@ index ce39bdde..cc24c1c9 100644 an offset of \tcode{0min} is formatted. \end{itemdescr} -@@ -10879,9 +10879,9 @@ template +@@ -10888,9 +10888,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5467,7 +5298,7 @@ index ce39bdde..cc24c1c9 100644 an offset of \tcode{0min} is formatted. If the argument represents a time during a positive leap second insertion, and if a seconds field is formatted, -@@ -10898,9 +10898,9 @@ template +@@ -10907,9 +10907,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5479,7 +5310,7 @@ index ce39bdde..cc24c1c9 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted by a \tcode{sys_time} initialized with -@@ -10919,9 +10919,9 @@ template +@@ -10928,9 +10928,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5491,7 +5322,7 @@ index ce39bdde..cc24c1c9 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted by a \tcode{sys_time} initialized with -@@ -10940,9 +10940,9 @@ template +@@ -10949,9 +10949,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5503,7 +5334,7 @@ index ce39bdde..cc24c1c9 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted -@@ -10960,7 +10960,7 @@ template +@@ -10969,7 +10969,7 @@ template \begin{itemdescr} \pnum \remarks @@ -5512,7 +5343,7 @@ index ce39bdde..cc24c1c9 100644 an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -11001,18 +11001,18 @@ passed to \tcode{formatter::format}. +@@ -11010,18 +11010,18 @@ passed to \tcode{formatter::format}. \pnum \remarks If the \fmtgrammarterm{chrono-specs} is omitted, @@ -5536,7 +5367,7 @@ index ce39bdde..cc24c1c9 100644 and \tcode{f.offset_sec} is a null pointer value, then an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -11216,8 +11216,8 @@ except that they have an unspecified effect +@@ -11225,8 +11225,8 @@ except that they have an unspecified effect on the value returned by subsequent calls to \tcode{basic_istream<>::gcount()}. Each overload takes a format string containing ordinary characters and flags which have special meaning. @@ -5547,7 +5378,7 @@ index ce39bdde..cc24c1c9 100644 During parsing each flag interprets characters as parts of date and time types according to~\tref{time.parse.spec}. Some flags can be modified by a width parameter -@@ -11235,7 +11235,7 @@ the information that the format flag refers to, +@@ -11244,7 +11244,7 @@ the information that the format flag refers to, A \tcode{duration} cannot represent a \tcode{weekday}. \end{example} However, if a flag refers to a ``time of day'' @@ -5556,7 +5387,7 @@ index ce39bdde..cc24c1c9 100644 then a specialization of \tcode{duration} is parsed as the time of day elapsed since midnight. -@@ -11255,251 +11255,251 @@ is called on the \tcode{basic_istream}. +@@ -11264,229 +11264,229 @@ is called on the \tcode{basic_istream}. \hline \lhdr{Flag} & \rhdr{Parsed value} \\ \capsep \endhead @@ -5866,7 +5697,8 @@ index ce39bdde..cc24c1c9 100644 \\ \rowsep -\tcode{\%y} & +\noncxxtcode{\%y} & - The last two decimal digits of the year. + The last two decimal digits of the year, + regardless of the sign of the year. If the century is not otherwise specified -(e.g., with \tcode{\%C}), +(e.g., with \noncxxtcode{\%C}), @@ -5883,6 +5715,11 @@ index ce39bdde..cc24c1c9 100644 -The modified commands \tcode{\%Ey} and \tcode{\%Oy} interpret +The modified commands \noncxxtcode{\%Ey} and \noncxxtcode{\%Oy} interpret the locale's alternative representation. + \begin{tailexample} + \begin{codeblock} +@@ -11495,27 +11495,27 @@ istringstream{"-20 76"} >> parse("%3C %y", y); // \tcode{y == -1976y} is \tcode + \end{codeblock} + \end{tailexample} \\ \rowsep -\tcode{\%Y} & +\noncxxtcode{\%Y} & @@ -5922,7 +5759,7 @@ index ce39bdde..cc24c1c9 100644 The time zone abbreviation or name. A single word is parsed. This word can only contain characters -@@ -11507,8 +11507,8 @@ from the basic character set\iref{lex.charset} +@@ -11523,8 +11523,8 @@ from the basic character set\iref{lex.charset} that are alphanumeric, or one of \tcode{'_'}, \tcode{'/'}, \tcode{'-'}, or \tcode{'+'}. \\ \rowsep @@ -5937,7 +5774,7 @@ index ce39bdde..cc24c1c9 100644 2.43.0 -From d35ea058dc773ca110bc437d50e1a11c36b65758 Mon Sep 17 00:00:00 2001 +From 71c3023d731d3f13978d8fbbefc7050405191d2f Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. @@ -5951,7 +5788,7 @@ Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. source/containers.tex | 11 ----------- source/declarations.tex | 14 -------------- source/exceptions.tex | 3 --- - source/expressions.tex | 25 ------------------------- + source/expressions.tex | 24 ------------------------ source/future.tex | 8 -------- source/iostreams.tex | 15 --------------- source/iterators.tex | 8 -------- @@ -5969,13 +5806,13 @@ Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. source/threads.tex | 17 ----------------- source/time.tex | 19 ------------------- source/utilities.tex | 7 ------- - 26 files changed, 268 deletions(-) + 26 files changed, 267 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index c313c941..f914092e 100644 +index 3074bc3a..fad5f7c8 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -8716,7 +8716,6 @@ but stronger than those for a partial ordering. +@@ -8698,7 +8698,6 @@ but stronger than those for a partial ordering. If we define \tcode{equiv(a, b)} as \tcode{!comp(a, b) \&\& !comp(b, a)}, then the requirements are that \tcode{comp} and \tcode{equiv} both be transitive relations: @@ -5983,7 +5820,7 @@ index c313c941..f914092e 100644 \begin{itemize} \item \tcode{comp(a, b) \&\& comp(b, c)} implies \tcode{comp(a, c)} \item \tcode{equiv(a, b) \&\& equiv(b, c)} implies \tcode{equiv(a, c)} -@@ -9768,7 +9767,6 @@ Let $N = \tcode{last - first}$: +@@ -9750,7 +9749,6 @@ Let $N = \tcode{last - first}$: For the parallel algorithm overloads, \bigoh{N \log N} swaps and \bigoh{N} applications of the predicate. \end{itemize} @@ -5991,7 +5828,7 @@ index c313c941..f914092e 100644 \end{itemdescr} \indexlibraryglobal{stable_partition}% -@@ -10916,7 +10914,6 @@ A random access range \range{a}{b} is a +@@ -10909,7 +10907,6 @@ A random access range \range{a}{b} is a {heap with respect to comp and proj@heap with respect to \tcode{comp} and \tcode{proj}} for a comparator and projection \tcode{comp} and \tcode{proj} if its elements are organized such that: @@ -5999,7 +5836,7 @@ index c313c941..f914092e 100644 \begin{itemize} \item With \tcode{$N$ = b - a}, for all $i$, $0 < i < N$, -@@ -13580,7 +13577,6 @@ template +@@ -13573,7 +13570,6 @@ template \pnum Some algorithms in this subclause are constrained with the following exposition-only concepts: @@ -6008,10 +5845,10 @@ index c313c941..f914092e 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index 818f9001..29b5e6e4 100644 +index c6a2b6c0..d03e2989 100644 --- a/source/basic.tex +++ b/source/basic.tex -@@ -294,7 +294,6 @@ int X::y = 1; // defines \tcode{X::y} +@@ -312,7 +312,6 @@ int X::y = 1; // defines \tcode{X::y} enum { up, down }; // defines \tcode{up} and \tcode{down} namespace N { int d; } // defines \tcode{N} and \tcode{N::d} X anX; // defines \tcode{anX} @@ -6019,7 +5856,7 @@ index 818f9001..29b5e6e4 100644 \end{codeblock} whereas these are just declarations: \begin{codeblock} -@@ -832,7 +831,6 @@ compute equivalent values\iref{expr.eq}. +@@ -850,7 +849,6 @@ compute equivalent values\iref{expr.eq}. \pnum For the purposes of the preceding requirements: @@ -6027,7 +5864,7 @@ index 818f9001..29b5e6e4 100644 \begin{itemize} \item If \tcode{D} is a class with an implicitly-declared constructor\iref{class.default.ctor,class.copy.ctor}, -@@ -6170,7 +6168,6 @@ has the top-level cv-qualifier \keyword{volatile}. +@@ -6267,7 +6265,6 @@ has the top-level cv-qualifier \keyword{volatile}. \pnum Every integer type has an \term{integer conversion rank} defined as follows: @@ -6036,10 +5873,10 @@ index 818f9001..29b5e6e4 100644 \item No two signed integer types other than \keyword{char} and \tcode{\keyword{signed} \keyword{char}} (if \keyword{char} is signed) have the same rank, even if they have diff --git a/source/classes.tex b/source/classes.tex -index 7883ea0a..a7391709 100644 +index 76ea152b..62849329 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -1626,7 +1626,6 @@ for each non-static data member of +@@ -1641,7 +1641,6 @@ for each non-static data member of that is of class type (or array thereof), the constructor selected to copy/move that member is trivial; \end{itemize} @@ -6047,7 +5884,7 @@ index 7883ea0a..a7391709 100644 \indextext{constructor!move!non-trivial}% otherwise the copy/move constructor is \defnx{non-trivial}{constructor!copy!nontrivial}. -@@ -3244,7 +3243,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat +@@ -3265,7 +3264,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat destructor and \tcode{N} has a non-trivial constructor (for instance, if they declare or inherit virtual functions), the active member of \tcode{u} can be safely switched from \tcode{m} to \tcode{n} using the destructor and placement \grammarterm{new-expression} as follows: @@ -6055,7 +5892,7 @@ index 7883ea0a..a7391709 100644 \begin{codeblock} u.m.~M(); new (&u.n) N; -@@ -3423,7 +3421,6 @@ A local class cannot have static data members\iref{class.static.data}. +@@ -3447,7 +3445,6 @@ A local class cannot have static data members\iref{class.static.data}. \indextext{multiple inheritance}% A list of base classes can be specified in a class definition using the notation: @@ -6063,7 +5900,7 @@ index 7883ea0a..a7391709 100644 \begin{bnf} \nontermdef{base-clause}\br \terminal{:} base-specifier-list -@@ -5402,7 +5399,6 @@ initializers for direct and virtual base class subobjects and +@@ -5426,7 +5423,6 @@ initializers for direct and virtual base class subobjects and non-static data members can be specified by a \grammarterm{ctor-initializer}, which has the form @@ -6071,7 +5908,7 @@ index 7883ea0a..a7391709 100644 \begin{bnf} \nontermdef{ctor-initializer}\br \terminal{:} mem-initializer-list -@@ -5873,7 +5869,6 @@ public: +@@ -5897,7 +5893,6 @@ public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; \end{codeblock} @@ -6079,7 +5916,7 @@ index 7883ea0a..a7391709 100644 \end{example} \rSec2[class.inhctor.init]{Initialization by inherited constructor}% -@@ -6529,7 +6524,6 @@ any non-static data member of \tcode{C} is of reference type or +@@ -6553,7 +6548,6 @@ any non-static data member of \tcode{C} is of reference type or A binary operator expression \tcode{a @ b} is \defnx{usable}{usable!binary operator expression} if either @@ -6087,7 +5924,7 @@ index 7883ea0a..a7391709 100644 \begin{itemize} \item \tcode{a} or \tcode{b} is of class or enumeration type and -@@ -6650,7 +6644,6 @@ The \defnadj{synthesized}{three-way comparison} +@@ -6674,7 +6668,6 @@ The \defnadj{synthesized}{three-way comparison} of type \tcode{R}\iref{cmp.categories} of glvalues \tcode{a} and \tcode{b} of the same type is defined as follows: @@ -6095,7 +5932,7 @@ index 7883ea0a..a7391709 100644 \begin{itemize} \item If \tcode{a <=> b} is usable\iref{class.compare.default} and -@@ -6750,7 +6743,6 @@ The \defn{common comparison type} \tcode{U} +@@ -6774,7 +6767,6 @@ The \defn{common comparison type} \tcode{U} of a possibly-empty list of $n$ comparison category types $\tcode{T}_0$, $\tcode{T}_1$, $\dotsc$, $\tcode{T}_{n-1}$ is defined as follows: @@ -6104,10 +5941,10 @@ index 7883ea0a..a7391709 100644 \item If at least one $\tcode{T}_i$ is \tcode{std::partial_ordering}, diff --git a/source/compatibility.tex b/source/compatibility.tex -index 60706217..24533a2c 100644 +index cdca4c22..74cce624 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -2592,7 +2592,6 @@ Overspecification. +@@ -2583,7 +2583,6 @@ Overspecification. \effect The signatures of the following member functions changed from taking an \tcode{iterator} to taking a \tcode{const_iterator}: @@ -6115,7 +5952,7 @@ index 60706217..24533a2c 100644 \begin{itemize} \item \tcode{insert(iter, val)} for \tcode{vector}, \tcode{deque}, \tcode{list}, \tcode{set}, \tcode{multiset}, \tcode{map}, \tcode{multimap} -@@ -2664,7 +2663,6 @@ Clarify intentions, avoid workarounds. +@@ -2655,7 +2654,6 @@ Clarify intentions, avoid workarounds. Valid \CppIII{} code that relies on implicit boolean conversions will fail to compile with this revision of \Cpp{}. Such conversions occur in the following conditions: @@ -6123,7 +5960,7 @@ index 60706217..24533a2c 100644 \begin{itemize} \item passing a value to a function that takes an argument of type \tcode{bool}; \item using \tcode{operator==} to compare to \tcode{false} or \tcode{true}; -@@ -3785,7 +3783,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in +@@ -3773,7 +3771,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in \pnum Header \libheaderref{cstring}: The following functions have different declarations: @@ -6131,7 +5968,7 @@ index 60706217..24533a2c 100644 \begin{itemize} \item \tcode{strchr} \item \tcode{strpbrk} -@@ -3799,7 +3796,6 @@ Subclause \ref{cstring.syn} describes the changes. +@@ -3787,7 +3784,6 @@ Subclause \ref{cstring.syn} describes the changes. \pnum Header \libheaderref{cwchar}: The following functions have different declarations: @@ -6139,7 +5976,7 @@ index 60706217..24533a2c 100644 \begin{itemize} \item \tcode{wcschr} \item \tcode{wcspbrk} -@@ -3824,7 +3820,6 @@ in addition to the names declared in +@@ -3812,7 +3808,6 @@ in addition to the names declared in \pnum Header \libheaderref{cstdlib}: The following functions have different behavior: @@ -6277,7 +6114,7 @@ index 42828a4b..3e64abc8 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index d64183f9..8e93903a 100644 +index 65081f46..1c6cb497 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6327,7 +6164,7 @@ index d64183f9..8e93903a 100644 \begin{codeblock} template using @\placeholdernc{iter-value-type}@ = iterator_traits::value_type; // \expos -@@ -9343,7 +9337,6 @@ If \tcode{size() < sz}, +@@ -9367,7 +9361,6 @@ If \tcode{size() < sz}, appends \tcode{sz - size()} default-inserted elements to the sequence. If \tcode{sz <= size()}, equivalent to: @@ -6335,7 +6172,7 @@ index d64183f9..8e93903a 100644 \begin{codeblock} list::iterator it = begin(); advance(it, sz); -@@ -20310,7 +20303,6 @@ For each of +@@ -20331,7 +20324,6 @@ For each of \tcode{stack}, the library provides the following constexpr-enabled formatter specialization where \tcode{\placeholder{adaptor-type}} is the name of the template: @@ -6343,7 +6180,7 @@ index d64183f9..8e93903a 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -24566,7 +24558,6 @@ typename A::offset_policy +@@ -24570,7 +24562,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6351,7 +6188,7 @@ index d64183f9..8e93903a 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -25922,7 +25913,6 @@ for the $k^\text{th}$ extent of \tcode{src}. +@@ -26015,7 +26006,6 @@ for the $k^\text{th}$ extent of \tcode{src}. \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: @@ -6359,7 +6196,7 @@ index d64183f9..8e93903a 100644 \begin{itemize} \item \tcode{SubExtents::rank()} equals -@@ -25934,7 +25924,6 @@ the type of \tcode{slices...[$k$]} is not a collapsing slice type, +@@ -26027,7 +26017,6 @@ the type of \tcode{slices...[$k$]} is not a collapsing slice type, \tcode{SubExt\-ents::static_extent(\placeholder{MAP_RANK}(slices, $k$))} equals the following, where $\Sigma_k$ denotes the type of \tcode{slices...[$k$]}: @@ -6368,10 +6205,10 @@ index d64183f9..8e93903a 100644 \item \tcode{Extents::static_extent($k$)} diff --git a/source/declarations.tex b/source/declarations.tex -index cc6330bc..247f80dc 100644 +index 00cff00a..135ca134 100644 --- a/source/declarations.tex +++ b/source/declarations.tex -@@ -1584,7 +1584,6 @@ a partial specialization\iref{temp.spec.partial}, +@@ -1593,7 +1593,6 @@ a partial specialization\iref{temp.spec.partial}, an explicit instantiation\iref{temp.explicit}, or it has one of the following forms: @@ -6379,7 +6216,7 @@ index cc6330bc..247f80dc 100644 \begin{ncsimplebnf} class-key \opt{attribute-specifier-seq} identifier \terminal{;}\br class-key \opt{attribute-specifier-seq} simple-template-id \terminal{;} -@@ -2487,7 +2486,6 @@ the \grammarterm{declarator} declares a function. +@@ -2498,7 +2497,6 @@ the \grammarterm{declarator} declares a function. \pnum Declarators have the syntax @@ -6387,7 +6224,7 @@ index cc6330bc..247f80dc 100644 \begin{bnf} \nontermdef{declarator}\br ptr-declarator\br -@@ -4393,7 +4391,6 @@ In the following code, +@@ -4404,7 +4402,6 @@ In the following code, \tcode{g} will be called with the value \tcode{f(2)}: @@ -6395,7 +6232,7 @@ index cc6330bc..247f80dc 100644 \begin{codeblock} int a = 1; int f(int); -@@ -5063,7 +5060,6 @@ To +@@ -5074,7 +5071,6 @@ To an object of type \tcode{T} means: @@ -6403,7 +6240,7 @@ index cc6330bc..247f80dc 100644 \begin{itemize} \item If -@@ -5273,7 +5269,6 @@ is sequenced before those associated with +@@ -5284,7 +5280,6 @@ is sequenced before those associated with the initialization of the $j^\text{th}$ element. \item Otherwise, if the destination type is a class type: @@ -6411,7 +6248,7 @@ index cc6330bc..247f80dc 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -6191,7 +6186,6 @@ a program that necessitates such a binding is ill-formed. +@@ -6202,7 +6197,6 @@ a program that necessitates such a binding is ill-formed. A reference to type ``\cvqual{cv1} \tcode{T1}'' is initialized by an expression of type ``\cvqual{cv2} \tcode{T2}'' as follows:% \indextext{binding!reference} @@ -6419,7 +6256,7 @@ index cc6330bc..247f80dc 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6659,7 +6653,6 @@ int j { 1 }; // initialize to 1 +@@ -6670,7 +6664,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -6427,15 +6264,15 @@ index cc6330bc..247f80dc 100644 \end{itemize} \pnum -@@ -7745,7 +7738,6 @@ either \tcode{$\tcode{T}_i$\&} or \tcode{$\tcode{T}_i$\&\&}, - where $\tcode{U}_i$ is an lvalue reference if - the initializer is an lvalue and an rvalue reference otherwise, +@@ -7756,7 +7749,6 @@ as $\tcode{T}_i$ if the initializer is a prvalue, + as ``lvalue reference to $\tcode{T}_i$'' if the initializer is an lvalue, or + as ``rvalue reference to $\tcode{T}_i$'' otherwise, variables are introduced with unique names $\tcode{r}_i$ as follows: - \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7877,7 +7869,6 @@ struct S { +@@ -7888,7 +7880,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6443,7 +6280,7 @@ index cc6330bc..247f80dc 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7974,7 +7965,6 @@ If the underlying +@@ -7984,7 +7975,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6451,7 +6288,7 @@ index cc6330bc..247f80dc 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8433,7 +8423,6 @@ void h() { +@@ -8442,7 +8432,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} according to the following grammar: @@ -6459,7 +6296,7 @@ index cc6330bc..247f80dc 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8607,7 +8596,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8616,7 +8605,6 @@ not declare functions or function templates, the use of the name is ill-formed\i In particular, the name of a variable, function or enumerator does not hide the name of a class or enumeration declared in a different namespace. For example, @@ -6467,7 +6304,7 @@ index cc6330bc..247f80dc 100644 \begin{codeblock} namespace A { class X { }; -@@ -9170,7 +9158,6 @@ otherwise identical. +@@ -9179,7 +9167,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6475,7 +6312,7 @@ index cc6330bc..247f80dc 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -10040,7 +10027,6 @@ may be applied to a function or a lambda call operator or +@@ -10056,7 +10043,6 @@ may be applied to a function or a lambda call operator or to the declaration of a class or enumeration. An \grammarterm{attribute-argument-clause} may be present and, if present, shall have the form: @@ -6484,7 +6321,7 @@ index cc6330bc..247f80dc 100644 \terminal{(} unevaluated-string \terminal{)} \end{ncbnf} diff --git a/source/exceptions.tex b/source/exceptions.tex -index d3b0f3e3..8f91c70e 100644 +index 76071483..3a2e459d 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -89,7 +89,6 @@ void f() { @@ -6509,7 +6346,7 @@ index d3b0f3e3..8f91c70e 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index cea81800..b61c8bbd 100644 +index 388f5d39..2804e820 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -467,7 +467,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -6560,7 +6397,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item If \tcode{T1} and \tcode{T2} are the same type, \tcode{C} is that type. -@@ -2811,7 +2805,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} +@@ -2812,7 +2806,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} \pnum For the purposes of lambda capture, an expression potentially references local entities as follows: @@ -6568,7 +6405,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item An \grammarterm{id-expression} that names a local entity -@@ -3421,7 +3414,6 @@ The \grammarterm{expression} is an unevaluated operand. +@@ -3423,7 +3416,6 @@ The \grammarterm{expression} is an unevaluated operand. Substitution of template arguments (if any) and verification of semantic properties proceed in the following order: @@ -6576,7 +6413,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -3433,7 +3425,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. +@@ -3435,7 +3427,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. \item If the \grammarterm{return-type-requirement} is present, then: @@ -6584,7 +6421,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -4524,7 +4515,6 @@ referred to by \tcode{T}. +@@ -4540,7 +4531,6 @@ referred to by \tcode{T}. \pnum Let \tcode{C} be the class type to which \tcode{T} points or refers. The runtime check logically executes as follows: @@ -6592,7 +6429,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item If, in the most derived object pointed (referred) to by \tcode{v}, \tcode{v} points (refers) to a public base class subobject of a -@@ -5038,7 +5028,6 @@ constness. +@@ -5054,7 +5044,6 @@ constness. The null member pointer value\iref{conv.mem} is converted to the null member pointer value of the destination type. The result of this conversion is unspecified, except in the following cases: @@ -6600,7 +6437,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item Converting a prvalue of type ``pointer to member function'' to a different pointer-to-member-function type and back to its original type -@@ -5473,7 +5462,6 @@ is called a \term{suspension context} of the function. +@@ -5489,7 +5478,6 @@ is called a \term{suspension context} of the function. \pnum Evaluation of an \grammarterm{await-expression} involves the following auxiliary types, expressions, and objects: @@ -6608,7 +6445,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item \placeholder{p} is an lvalue naming the promise -@@ -5854,7 +5842,6 @@ and +@@ -5872,7 +5860,6 @@ and the \grammarterm{new-expression}, then the allocated type is the type deduced for the variable \tcode{x} in the invented declaration\iref{dcl.spec.auto}: @@ -6616,7 +6453,7 @@ index cea81800..b61c8bbd 100644 \begin{codeblock} T x @\textrm{\placeholder{init}}@ ; \end{codeblock} -@@ -6214,7 +6201,6 @@ the alignment argument is removed from the argument list; +@@ -6232,7 +6219,6 @@ the alignment argument is removed from the argument list; otherwise, an argument that is the type's alignment and has type \tcode{std::align_val_t} is added into the argument list immediately after the first argument; @@ -6624,7 +6461,7 @@ index cea81800..b61c8bbd 100644 \end{itemize} and then overload resolution is performed again. -@@ -6292,7 +6278,6 @@ necessarily be the same as that of the block if the object is an array. +@@ -6310,7 +6296,6 @@ necessarily be the same as that of the block if the object is an array. \indextext{\idxcode{new}!default constructor and}% A \grammarterm{new-expression} that creates an object of type \tcode{T} initializes that object as follows: @@ -6632,15 +6469,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item If the \grammarterm{new-initializer} is omitted, the object is default-initialized\iref{dcl.init}. -@@ -6381,7 +6366,6 @@ struct S { - S* p = new (0) S; // error: non-placement deallocation function matches - // placement allocation function - \end{codeblock} -- - \end{example} - - \pnum -@@ -6501,7 +6485,6 @@ of their constructor; see~\ref{class.base.init}). +@@ -6589,7 +6574,6 @@ of their constructor; see~\ref{class.base.init}). \pnum If the value of the operand of the \grammarterm{delete-expression} is not a null pointer value, then: @@ -6648,7 +6477,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item If the allocation call for the \grammarterm{new-expression} for the object to -@@ -7346,7 +7329,6 @@ or one operand has integral type and +@@ -7434,7 +7418,6 @@ or one operand has integral type and the other operand has unscoped enumeration type, the \link{usual arithmetic conversions}{expr.arith.conv} are applied to the operands. Then: @@ -6656,7 +6485,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, -@@ -7501,7 +7483,6 @@ is considered to be equivalent to a pointer to a hypothetical array element +@@ -7589,7 +7572,6 @@ is considered to be equivalent to a pointer to a hypothetical array element $n$ for this purpose. \end{footnote} is defined in terms of a partial order consistent with the following rules: @@ -6664,7 +6493,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item If two pointers point to different elements of the same array, or to subobjects thereof, the pointer to the element with the higher subscript -@@ -7514,7 +7495,6 @@ neither member is a subobject of zero size +@@ -7602,7 +7584,6 @@ neither member is a subobject of zero size and their class is not a union. \item Otherwise, neither pointer is required to compare greater than the other. @@ -6672,7 +6501,7 @@ index cea81800..b61c8bbd 100644 \end{itemize} \pnum -@@ -7576,7 +7556,6 @@ If at least one of the converted operands is a pointer, +@@ -7664,7 +7645,6 @@ If at least one of the converted operands is a pointer, \link{qualification conversions}{conv.qual} are performed on both operands to bring them to their \deflink{composite pointer type}{expr.type}. Comparing pointers is defined as follows: @@ -6680,7 +6509,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item If one pointer represents the address of a complete object, and another -@@ -7606,7 +7585,6 @@ qualification conversions\iref{conv.qual} +@@ -7694,7 +7674,6 @@ qualification conversions\iref{conv.qual} are performed on both operands to bring them to their composite pointer type\iref{expr.type}. Comparing pointers to members is defined as follows: @@ -6688,7 +6517,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item If two pointers to members are both the null member pointer value, they compare -@@ -7892,7 +7870,6 @@ Attempts are made to form an implicit conversion sequence +@@ -7980,7 +7959,6 @@ Attempts are made to form an implicit conversion sequence from an operand expression \tcode{E1} of type \tcode{T1} to a target type related to the type \tcode{T2} of the operand expression \tcode{E2} as follows: @@ -6696,7 +6525,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item If \tcode{E2} is an lvalue, the target type is ``lvalue reference to \tcode{T2}'', -@@ -7971,7 +7948,6 @@ subclause. +@@ -8059,7 +8037,6 @@ subclause. and \link{function-to-pointer}{conv.func} standard conversions are performed on the second and third operands. After those conversions, one of the following shall hold: @@ -6704,7 +6533,7 @@ index cea81800..b61c8bbd 100644 \begin{itemize} \item The second and third operands have the same type; the result is of that type and the result is copy-initialized using the selected operand. -@@ -8001,7 +7977,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. +@@ -8089,7 +8066,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. Both the second and third operands have type \tcode{std::nullptr_t} or one has that type and the other is a null pointer constant. The result is of type \tcode{std::nullptr_t}. @@ -6713,7 +6542,7 @@ index cea81800..b61c8bbd 100644 \rSec2[expr.yield]{Yielding a value}% diff --git a/source/future.tex b/source/future.tex -index c72d59ea..a740fd47 100644 +index 88603947..24498cbb 100644 --- a/source/future.tex +++ b/source/future.tex @@ -283,7 +283,6 @@ shown in the above synopsis. @@ -6781,7 +6610,7 @@ index c72d59ea..a740fd47 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index 8bc8a19a..5651a156 100644 +index 4cf63702..a8f84575 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -2105,14 +2105,12 @@ does nothing. @@ -6895,7 +6724,7 @@ index 8bc8a19a..5651a156 100644 \begin{enumerate} \item If the path is empty, stop. \item Replace each slash character in the \grammarterm{root-name} with a \grammarterm{preferred-separator}. -@@ -17064,7 +17050,6 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17065,7 +17051,6 @@ recursive_directory_iterator& increment(error_code& ec); As specified for the prefix increment operation of \link{Input iterators}{input.iterators}, except that: @@ -6904,7 +6733,7 @@ index 8bc8a19a..5651a156 100644 \item If there are no more entries at the current depth, then if \tcode{depth() != 0} iteration over the parent directory resumes; otherwise \tcode{*this = recursive_directory_iterator()}. diff --git a/source/iterators.tex b/source/iterators.tex -index 909e4ed0..1ac297c8 100644 +index 46edb440..b083ad28 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -963,7 +963,6 @@ may be declared as \keyword{void}. @@ -6931,7 +6760,7 @@ index 909e4ed0..1ac297c8 100644 \begin{itemize} \item \tcode{iter_move(E)}, if \tcode{E} has class or enumeration type and -@@ -2807,7 +2804,6 @@ namespace std { +@@ -2811,7 +2808,6 @@ namespace std { A program-defined iterator \tcode{BinaryTreeIterator} can be included into the bidirectional iterator category by specializing the \tcode{iterator_traits} template: @@ -6939,7 +6768,7 @@ index 909e4ed0..1ac297c8 100644 \begin{codeblock} template struct iterator_traits> { using iterator_category = bidirectional_iterator_tag; -@@ -2825,7 +2821,6 @@ If +@@ -2829,7 +2825,6 @@ If \tcode{evolve()} is well-defined for bidirectional iterators, but can be implemented more efficiently for random access iterators, then the implementation is as follows: @@ -6947,7 +6776,7 @@ index 909e4ed0..1ac297c8 100644 \begin{codeblock} template inline void -@@ -3412,7 +3407,6 @@ As if by: +@@ -3416,7 +3411,6 @@ As if by: Iterator tmp = current; return *--tmp; \end{codeblock} @@ -6955,7 +6784,7 @@ index 909e4ed0..1ac297c8 100644 \end{itemdescr} \indexlibrarymember{operator->}{reverse_iterator}% -@@ -4795,7 +4789,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 +@@ -4799,7 +4793,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 vector v2(make_move_iterator(s.begin()), make_move_iterator(s.end())); // moves strings into \tcode{v2} \end{codeblock} @@ -6963,7 +6792,7 @@ index 909e4ed0..1ac297c8 100644 \end{example} \rSec3[move.iterator]{Class template \tcode{move_iterator}} -@@ -6514,7 +6507,6 @@ partial_sum(istream_iterator(cin), +@@ -6518,7 +6511,6 @@ partial_sum(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "@\textbackslash@n")); \end{codeblock} @@ -6972,7 +6801,7 @@ index 909e4ed0..1ac297c8 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 0b2c55f9..c463010f 100644 +index bc8ce8e8..7e1320d3 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -196,7 +196,6 @@ save space, items that do not apply to a Clause are omitted. @@ -7023,7 +6852,7 @@ index 0b2c55f9..c463010f 100644 \begin{itemize} \item \constraints -@@ -616,7 +610,6 @@ values\iref{basic.fundamental}. +@@ -623,7 +617,6 @@ values\iref{basic.fundamental}. \pnum The enumerated type \tcode{\placeholder{enumerated}} can be written: @@ -7031,7 +6860,7 @@ index 0b2c55f9..c463010f 100644 \begin{codeblock} enum @\placeholder{enumerated}@ { @$\tcode{\placeholder{V}}_{0}$@, @$\tcode{\placeholder{V}}_{1}$@, @$\tcode{\placeholder{V}}_{2}$@, @$\tcode{\placeholder{V}}_{3}$@, @$\ldots$@ }; -@@ -649,7 +642,6 @@ or as a +@@ -656,7 +649,6 @@ or as a \pnum The bitmask type \tcode{\placeholder{bitmask}} can be written: @@ -7039,7 +6868,7 @@ index 0b2c55f9..c463010f 100644 \begin{codeblock} // For exposition only. // \tcode{int_type} is an integral type capable of representing all values of the bitmask type. -@@ -726,7 +718,6 @@ The value \textit{Y} \defnx{is set}{bitmask!value!is set} in the object +@@ -733,7 +725,6 @@ The value \textit{Y} \defnx{is set}{bitmask!value!is set} in the object The C standard library makes widespread use \indextext{library!C standard}% of characters and character sequences that follow a few uniform conventions: @@ -7047,7 +6876,7 @@ index 0b2c55f9..c463010f 100644 \begin{itemize} \item Properties specified as \defn{locale-specific} -@@ -972,7 +963,6 @@ some subclauses provide representative declarations, and semantic requirements, +@@ -979,7 +970,6 @@ some subclauses provide representative declarations, and semantic requirements, private members of classes that meet the external specifications of the classes. The declarations for such members are followed by a comment that ends with \expos, as in: @@ -7055,7 +6884,7 @@ index 0b2c55f9..c463010f 100644 \begin{codeblock} streambuf* sb; // \expos \end{codeblock} -@@ -1937,7 +1927,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if +@@ -1944,7 +1934,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if evaluated in the context described below, and \item these expressions have the following effects: @@ -7063,7 +6892,7 @@ index 0b2c55f9..c463010f 100644 \begin{itemize} \item the object referred to by \tcode{t} has the value originally held by \tcode{u} and \item the object referred to by \tcode{u} has the value originally held by \tcode{t}. -@@ -2943,7 +2932,6 @@ for that type can fail by throwing an object of type +@@ -2950,7 +2939,6 @@ for that type can fail by throwing an object of type \begin{example} The following is an allocator class template supporting the minimal interface that meets the requirements of \ref{allocator.requirements.general}: @@ -7071,7 +6900,7 @@ index 0b2c55f9..c463010f 100644 \begin{codeblock} template struct SimpleAllocator { -@@ -3429,13 +3417,11 @@ the description of function semantics apply +@@ -3444,13 +3432,11 @@ the description of function semantics apply to both the default version defined by the \Cpp{} standard library and the replacement function defined by the program. @@ -7085,7 +6914,7 @@ index 0b2c55f9..c463010f 100644 \begin{itemize} \item \tcode{terminate_handler} -@@ -3456,7 +3442,6 @@ Exception handling. +@@ -3471,7 +3457,6 @@ Exception handling. \pnum A \Cpp{} program can get a pointer to the current handler function by calling the following functions: @@ -7093,7 +6922,7 @@ index 0b2c55f9..c463010f 100644 \begin{itemize} \item \indexlibraryglobal{get_new_handler}% -@@ -3482,7 +3467,6 @@ on the implementation. +@@ -3497,7 +3482,6 @@ on the implementation. \pnum In particular, the behavior is undefined in the following cases: @@ -7101,7 +6930,7 @@ index 0b2c55f9..c463010f 100644 \begin{itemize} \item For replacement functions\iref{replacement.functions}, if the installed replacement function does not -@@ -3767,7 +3751,6 @@ functions an implementation shall provide corresponding definitions. +@@ -3782,7 +3766,6 @@ functions an implementation shall provide corresponding definitions. \indextext{stable algorithm}% When the requirements for an algorithm state that it is ``stable'' without further elaboration, it means: @@ -7120,10 +6949,10 @@ index 877f21f3..7fc0a416 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index a7f16411..17fb5e8d 100644 +index be9812fa..fb901823 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1445,7 +1445,6 @@ when considered as an unevaluated operand. +@@ -1481,7 +1481,6 @@ when considered as an unevaluated operand. \pnum Let \exposid{pair-constructor} be an exposition-only class defined as follows: @@ -7131,7 +6960,7 @@ index a7f16411..17fb5e8d 100644 \begin{codeblock} class @\exposid{pair-constructor}@ { using @\exposid{pair-type}@ = remove_cv_t; // \expos -@@ -3580,7 +3579,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a); +@@ -3620,7 +3619,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a); \tcode{is_move_constructible_v} is \tcode{true}, and \tcode{d(p)} is a well-formed expression. For the first two overloads: @@ -7140,18 +6969,18 @@ index a7f16411..17fb5e8d 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index c76fa23e..1fa9a9f2 100644 +index bfebda45..287b0cef 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -1939,7 +1939,6 @@ is_base_of_v // \tcode{false} - The predicate condition for a template specialization \tcode{is_convertible} - shall be satisfied if and only if the return expression in the following code would be +@@ -1684,7 +1684,6 @@ The predicate condition for a template specialization \tcode{is_convertible(); -@@ -2447,7 +2446,6 @@ If any of the types computed above is ill-formed, then +@@ -2194,7 +2193,6 @@ If any of the types computed above is ill-formed, then \pnum For the \tcode{common_type} trait applied to a template parameter pack \tcode{T} of types, the member \tcode{type} shall be either declared or not present as follows: @@ -7160,7 +6989,7 @@ index c76fa23e..1fa9a9f2 100644 \item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}. diff --git a/source/numerics.tex b/source/numerics.tex -index 214757e4..bce0a4ae 100644 +index 0fef1e5d..c9be3735 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); @@ -7179,7 +7008,7 @@ index 214757e4..bce0a4ae 100644 \begin{codeblock} basic_ostringstream s; s.flags(o.flags()); -@@ -4277,7 +4275,6 @@ template +@@ -4275,7 +4273,6 @@ template each operation is to be carried out modulo $2^{32}$, each indexing operator applied to \tcode{begin} is to be taken modulo $n$, and $T(x)$ is defined as $x \xor (x \rightshift 27)$: @@ -7187,7 +7016,7 @@ index 214757e4..bce0a4ae 100644 \begin{itemize} \item By way of initialization, -@@ -8358,7 +8355,6 @@ A unique function with the indicated name can be applied (unqualified) +@@ -8356,7 +8353,6 @@ A unique function with the indicated name can be applied (unqualified) to an operand of type \tcode{T}. This function returns a value of type \tcode{T} or which can be unambiguously implicitly converted to type \tcode{T}. @@ -7195,7 +7024,7 @@ index 214757e4..bce0a4ae 100644 \end{itemdescr} \rSec3[valarray.special]{Specialized algorithms} -@@ -8374,7 +8370,6 @@ template void swap(valarray& x, valarray& y) noexcept; +@@ -8372,7 +8368,6 @@ template void swap(valarray& x, valarray& y) noexcept; Equivalent to \tcode{x.swap(y)}. \end{itemdescr} @@ -7203,7 +7032,7 @@ index 214757e4..bce0a4ae 100644 \rSec2[class.slice]{Class \tcode{slice}} \rSec3[class.slice.overview]{Overview} -@@ -8794,7 +8789,6 @@ namespace std { +@@ -8792,7 +8787,6 @@ namespace std { This template is a helper template used by the \tcode{gslice} subscript operator @@ -7211,7 +7040,7 @@ index 214757e4..bce0a4ae 100644 \indexlibraryglobal{gslice_array}% \indexlibraryglobal{valarray}% \begin{itemdecl} -@@ -8920,7 +8914,6 @@ namespace std { +@@ -8918,7 +8912,6 @@ namespace std { \pnum This template is a helper template used by the mask subscript operator: @@ -7219,7 +7048,7 @@ index 214757e4..bce0a4ae 100644 \indexlibrarymember{operator[]}{mask_array}% \begin{itemdecl} mask_array valarray::operator[](const valarray&); -@@ -9037,7 +9030,6 @@ namespace std { +@@ -9035,7 +9028,6 @@ namespace std { \pnum This template is a helper template used by the indirect subscript operator @@ -7228,7 +7057,7 @@ index 214757e4..bce0a4ae 100644 \begin{itemdecl} indirect_array valarray::operator[](const valarray&); diff --git a/source/overloading.tex b/source/overloading.tex -index 9533e291..9eadc766 100644 +index d3250f2d..c5328c3c 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -103,7 +103,6 @@ the list of arguments in its own unique way. @@ -7255,7 +7084,7 @@ index 9533e291..9eadc766 100644 \begin{codeblock} struct A { }; void operator + (A, A); -@@ -1080,7 +1077,6 @@ Assuming that +@@ -1081,7 +1078,6 @@ Assuming that \tcode{T} a class type, the candidate functions are selected as follows: @@ -7263,7 +7092,7 @@ index 9533e291..9eadc766 100644 \begin{itemize} \item The non-explicit constructors\iref{class.conv.ctor} of -@@ -1126,7 +1122,6 @@ conversion function to be invoked. +@@ -1127,7 +1123,6 @@ conversion function to be invoked. Assuming that ``\cv{} \tcode{T}'' is the type of the object being initialized, the candidate functions are selected as follows: @@ -7271,7 +7100,7 @@ index 9533e291..9eadc766 100644 \begin{itemize} \item The permissible types for non-explicit conversion functions are -@@ -1198,7 +1193,6 @@ list-initialized such that \ref{dcl.init.list} specifies that overload resolutio +@@ -1199,7 +1194,6 @@ list-initialized such that \ref{dcl.init.list} specifies that overload resolutio is performed according to the rules in this subclause or when forming a list-initialization sequence according to \ref{over.ics.list}, overload resolution selects the constructor in two phases: @@ -7279,7 +7108,7 @@ index 9533e291..9eadc766 100644 \begin{itemize} \item If the initializer list is not empty or \tcode{T} has no default constructor, -@@ -1280,7 +1274,6 @@ called the \defn{copy deduction candidate}. +@@ -1281,7 +1275,6 @@ called the \defn{copy deduction candidate}. For each \grammarterm{deduction-guide}, a function or function template with the following properties: @@ -7287,7 +7116,7 @@ index 9533e291..9eadc766 100644 \begin{itemize} \item The \grammarterm{template-head}, if any, -@@ -2748,7 +2741,6 @@ sequence}{over.ics.ellipsis}. +@@ -2783,7 +2776,6 @@ sequence}{over.ics.ellipsis}. Two implicit conversion sequences of the same form are indistinguishable conversion sequences unless one of the following rules applies: @@ -7295,7 +7124,7 @@ index 9533e291..9eadc766 100644 \begin{itemize} \item List-initialization sequence \tcode{L1} is a better conversion sequence than -@@ -2980,7 +2972,6 @@ int i = f(a); // calls \tcode{f(int)}, because \tcode{short} $ +@@ -3015,7 +3007,6 @@ int i = f(a); // calls \tcode{f(int)}, because \tcode{short} $ // better than \tcode{short} $\to$ \tcode{float}. \end{codeblock} \end{example} @@ -7303,7 +7132,7 @@ index 9533e291..9eadc766 100644 \end{itemize} \pnum -@@ -2989,7 +2980,6 @@ better conversion than a Promotion, which is a better conversion than +@@ -3024,7 +3015,6 @@ better conversion than a Promotion, which is a better conversion than a Conversion. Two conversion sequences with the same rank are indistinguishable unless one of the following rules applies: @@ -7311,7 +7140,7 @@ index 9533e291..9eadc766 100644 \begin{itemize} \item A conversion that does not convert a pointer or a pointer to member -@@ -4146,7 +4136,6 @@ is a \defnx{literal operator template}{literal!operator!template}. +@@ -4182,7 +4172,6 @@ is a \defnx{literal operator template}{literal!operator!template}. \pnum The declaration of a literal operator shall have a \grammarterm{parameter-declaration-clause} equivalent to one of the following: @@ -7320,7 +7149,7 @@ index 9533e291..9eadc766 100644 const char* unsigned long long int diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 6624a7f2..62225b4c 100644 +index b3cf7fc7..cd5f8947 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex @@ -199,7 +199,6 @@ begins with the first character in the source file @@ -7331,7 +7160,7 @@ index 6624a7f2..62225b4c 100644 \begin{itemize} \item a \tcode{\#} preprocessing token, or -@@ -660,7 +659,6 @@ including within a preprocessing directive. +@@ -645,7 +644,6 @@ including within a preprocessing directive. \begin{example} This demonstrates a way to include a library \tcode{optional} facility only if it is available: @@ -7339,7 +7168,7 @@ index 6624a7f2..62225b4c 100644 \begin{codeblock} #if __has_include() # include -@@ -821,14 +819,12 @@ However, using the \tcode{< >} form for headers provided +@@ -806,14 +804,12 @@ However, using the \tcode{< >} form for headers provided with the implementation and the \tcode{" "} form for sources outside the control of the implementation achieves wider portability. For instance: @@ -7354,7 +7183,7 @@ index 6624a7f2..62225b4c 100644 \end{note} \pnum -@@ -836,7 +832,6 @@ achieves wider portability. For instance: +@@ -821,7 +817,6 @@ achieves wider portability. For instance: This illustrates macro-replaced \tcode{\#include} directives: @@ -7362,7 +7191,7 @@ index 6624a7f2..62225b4c 100644 \begin{codeblock} #if VERSION == 1 #define INCFILE "vers1.h" -@@ -1934,7 +1929,6 @@ is optional. +@@ -1975,7 +1970,6 @@ is optional. \pnum \begin{example} In the following fragment: @@ -7370,7 +7199,7 @@ index 6624a7f2..62225b4c 100644 \begin{codeblock} #define hash_hash # ## # #define mkstr(a) # a -@@ -1944,7 +1938,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";} +@@ -1985,7 +1979,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";} \end{codeblock} The expansion produces, at various stages: @@ -7378,7 +7207,7 @@ index 6624a7f2..62225b4c 100644 \begin{codeblock} join(x, y) in_between(x hash_hash y) -@@ -2181,7 +2174,6 @@ has no effect. +@@ -2221,7 +2214,6 @@ has no effect. \pnum The following macro names shall be defined by the implementation: @@ -7386,7 +7215,7 @@ index 6624a7f2..62225b4c 100644 \begin{description} \item -@@ -2413,7 +2405,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali +@@ -2455,7 +2447,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali \pnum The following macro names are conditionally defined by the implementation: @@ -7394,7 +7223,7 @@ index 6624a7f2..62225b4c 100644 \begin{description} \item \indextext{__stdc__@\mname{STDC}}% -@@ -2448,7 +2439,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. +@@ -2490,7 +2481,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. \mname{STDCPP_THREADS}\\ Defined, and has the value integer literal \tcode{1}, if and only if a program can have more than one \link{thread of execution}{intro.multithread}. @@ -7403,7 +7232,7 @@ index 6624a7f2..62225b4c 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 58f2ef0c..9fff6e28 100644 +index 75baf9b1..c339582a 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7470,7 +7299,7 @@ index 58f2ef0c..9fff6e28 100644 \begin{codeblock} template concept @\defexposconceptnc{simple-view}@ = // \expos -@@ -5889,7 +5881,6 @@ If \tcode{decltype((F))} does not model +@@ -5962,7 +5954,6 @@ If \tcode{decltype((F))} does not model \tcode{views::take(E, F)} is ill-formed. Otherwise, the expression \tcode{views::take(E, F)} is expression-equivalent to: @@ -7478,7 +7307,7 @@ index 58f2ef0c..9fff6e28 100644 \begin{itemize} \item If \tcode{T} is a specialization -@@ -5915,7 +5906,6 @@ then +@@ -5988,7 +5979,6 @@ then ranges::be\-gin(E) + std::min(ranges::distance(E), F))}, except that \tcode{E} is evaluated only once, where \tcode{U} is a type determined as follows: @@ -7486,7 +7315,7 @@ index 58f2ef0c..9fff6e28 100644 \begin{itemize} \item if \tcode{T} is a specialization of \tcode{span}, then \tcode{U} is \tcode{span}; -@@ -6377,7 +6367,6 @@ If \tcode{decltype((F))} does not model +@@ -6450,7 +6440,6 @@ If \tcode{decltype((F))} does not model \tcode{views::drop(E, F)} is ill-formed. Otherwise, the expression \tcode{views::drop(E, F)} is expression-equivalent to: @@ -7494,7 +7323,7 @@ index 58f2ef0c..9fff6e28 100644 \begin{itemize} \item If \tcode{T} is a specialization of -@@ -7458,7 +7447,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and +@@ -7531,7 +7520,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and \exposid{Base} and \exposid{InnerBase} each model \libconcept{forward_range}. In that case, \tcode{\exposid{iterator}::iterator_category} is defined as follows: @@ -7502,7 +7331,7 @@ index 58f2ef0c..9fff6e28 100644 \begin{itemize} \item Let \placeholder{OUTERC} denote -@@ -9758,7 +9746,6 @@ appears in the immediate context of a template instantiation. +@@ -9856,7 +9844,6 @@ appears in the immediate context of a template instantiation. \end{note} Otherwise, \tcode{views::counted(E, F)} is expression-equivalent to: @@ -7511,10 +7340,10 @@ index 58f2ef0c..9fff6e28 100644 \item If \tcode{T} models \libconcept{contiguous_iterator}, diff --git a/source/statements.tex b/source/statements.tex -index 852e314d..5510eb74 100644 +index 301d6304..65faf674 100644 --- a/source/statements.tex +++ b/source/statements.tex -@@ -727,7 +727,6 @@ exposition only; and +@@ -731,7 +731,6 @@ exposition only; and \item \exposid{begin-expr} and \exposid{end-expr} are determined as follows: @@ -7523,10 +7352,10 @@ index 852e314d..5510eb74 100644 \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are diff --git a/source/support.tex b/source/support.tex -index b0c75171..f7399362 100644 +index 0dd4cd06..90a3972a 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -2425,7 +2425,6 @@ This requirement is binding on any replacement versions of these functions. +@@ -2440,7 +2440,6 @@ This requirement is binding on any replacement versions of these functions. \pnum \default @@ -7534,7 +7363,7 @@ index b0c75171..f7399362 100644 \begin{itemize} \item Executes a loop: -@@ -2904,7 +2903,6 @@ Intentionally performs no other action. +@@ -2919,7 +2918,6 @@ Intentionally performs no other action. \pnum \begin{example} This can be useful for constructing an object at a known address: @@ -7542,7 +7371,7 @@ index b0c75171..f7399362 100644 \begin{codeblock} void* place = operator new(sizeof(Something)); Something* p = new (place) Something(); -@@ -4813,7 +4811,6 @@ are collectively termed the \defn{comparison category types}. +@@ -4822,7 +4820,6 @@ are collectively termed the \defn{comparison category types}. Each is specified in terms of an exposition-only data member named \tcode{value} whose value typically corresponds to that of an enumerator from one of the following exposition-only enumerations: @@ -7550,7 +7379,7 @@ index b0c75171..f7399362 100644 \begin{codeblock} enum class @\placeholdernc{ord}@ { @\placeholdernc{equal}@ = 0, @\placeholdernc{equivalent}@ = @\placeholdernc{equal}@, @\placeholdernc{less}@ = -1, @\placeholdernc{greater}@ = 1 }; // \expos enum class @\placeholdernc{ncmp}@ { @\placeholdernc{unordered}@ = -127 }; // \expos -@@ -5767,7 +5764,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and +@@ -5780,7 +5777,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and denotes a type\iref{temp.deduct}, then \tcode{coroutine_traits} has the following publicly accessible member: @@ -7559,10 +7388,10 @@ index b0c75171..f7399362 100644 using promise_type = R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index 3e0fd2ed..2ebe5fe3 100644 +index 5b4f6ad6..8ac74188 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -256,7 +256,6 @@ in some translation unit; no diagnostic is required. +@@ -257,7 +257,6 @@ in some translation unit; no diagnostic is required. The syntax for \grammarterm{template-parameter}{s} is: @@ -7570,7 +7399,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{bnf} \nontermdef{template-parameter}\br type-parameter\br -@@ -1635,7 +1634,6 @@ for function templates}{temp.func.order}. +@@ -1638,7 +1637,6 @@ for function templates}{temp.func.order}. Given an invented class template \tcode{X} with the \grammarterm{template-head} of \tcode{A} (including default arguments and \grammarterm{requires-clause}, if any): @@ -7578,7 +7407,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item Each of the two function templates has the same template parameters -@@ -2032,7 +2030,6 @@ or templated function declaration\iref{dcl.fct} +@@ -2035,7 +2033,6 @@ or templated function declaration\iref{dcl.fct} can be constrained by the use of a \grammarterm{requires-clause}. This allows the specification of constraints for that declaration as an expression: @@ -7586,7 +7415,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{bnf} \nontermdef{constraint-expression}\br logical-or-expression -@@ -2048,7 +2045,6 @@ that are used to constrain the declaration. +@@ -2051,7 +2048,6 @@ that are used to constrain the declaration. \pnum \indextext{constraint!associated|see{associated constraints}}% A declaration's \defn{associated constraints} are defined as follows: @@ -7594,7 +7423,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item If there are no introduced \grammarterm{constraint-expression}{s}, the declaration has no associated constraints. -@@ -2838,7 +2834,6 @@ public: +@@ -2842,7 +2838,6 @@ public: declares three member functions of a class template. The subscript function can be defined like this: @@ -7602,7 +7431,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{codeblock} template T& Array::operator[](int i) { if (i<0 || sz<=i) error("Array: range error"); -@@ -3230,7 +3225,6 @@ produces zero or more instantiations of the pattern in a list (described below). +@@ -3234,7 +3229,6 @@ produces zero or more instantiations of the pattern in a list (described below). The form of the pattern depends on the context in which the expansion occurs. Pack expansions can occur in the following contexts: @@ -7610,7 +7439,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item In a function parameter pack\iref{dcl.fct}; the pattern is the \grammarterm{parameter-declaration} without the ellipsis. -@@ -3836,7 +3830,6 @@ All other constant template arguments are specialized. +@@ -3840,7 +3834,6 @@ All other constant template arguments are specialized. \pnum Within the argument list of a partial specialization, the following restrictions apply: @@ -7618,7 +7447,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item The type of a template parameter corresponding to a specialized constant template -@@ -3850,7 +3843,6 @@ template< int X, int (*array_ptr)[X] > class A {}; +@@ -3854,7 +3847,6 @@ template< int X, int (*array_ptr)[X] > class A {}; int array[5]; template< int X > class A { }; // error \end{codeblock} @@ -7626,7 +7455,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \end{example} \item The partial specialization shall be more specialized than the primary -@@ -3976,7 +3968,6 @@ the first is \defn{more specialized} than the second if, given the following +@@ -3980,7 +3972,6 @@ the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more specialized than the second according to the \link{ordering rules for function templates}{temp.func.order}: @@ -7634,7 +7463,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item Each of the two -@@ -4128,7 +4119,6 @@ A::B abci; // uses \#1 +@@ -4132,7 +4123,6 @@ A::B abci; // uses \#1 A function template defines an unbounded set of related functions. \begin{example} A family of sort functions can be declared like this: @@ -7642,7 +7471,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{codeblock} template class Array { }; template void sort(Array&); -@@ -4183,7 +4173,6 @@ void h(int* p) { +@@ -4187,7 +4177,6 @@ void h(int* p) { } \end{codeblock} \end{minipage} @@ -7650,7 +7479,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \end{example} \pnum -@@ -4369,7 +4358,6 @@ to guarantee that functionally equivalent declarations will be treated +@@ -4373,7 +4362,6 @@ to guarantee that functionally equivalent declarations will be treated as distinct. For example, the last two declarations are functionally equivalent and would cause a program to be ill-formed: @@ -7658,7 +7487,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{codeblock} // guaranteed to be the same template void f(A, A); -@@ -4460,7 +4448,6 @@ then the order of the function parameters in its transformed template +@@ -4464,7 +4452,6 @@ then the order of the function parameters in its transformed template is reversed. For a function template $M$ with cv-qualifiers \cv{} that is a member of a class $A$: @@ -7666,7 +7495,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item The type $X(M)$ is ``rvalue reference to \cv{}~$A$'' -@@ -4718,7 +4705,6 @@ template class TT> +@@ -4722,7 +4709,6 @@ template class TT> void g(TT>); g(v); // OK, \tcode{TT} = \tcode{vector} \end{codeblock} @@ -7674,7 +7503,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \end{example} \pnum -@@ -5584,7 +5570,6 @@ of a class that is the current instantiation. +@@ -5588,7 +5574,6 @@ of a class that is the current instantiation. \pnum A qualified name\iref{basic.lookup.qual} is dependent if @@ -7682,7 +7511,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item it is a \grammarterm{conversion-function-id} -@@ -5833,7 +5818,6 @@ specified by the +@@ -5839,7 +5824,6 @@ specified by the or \grammarterm{new-type-id} is dependent, even if any subexpression is type-dependent: @@ -7690,7 +7519,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br simple-type-specifier braced-init-list\br -@@ -5851,7 +5835,6 @@ typename-specifier braced-init-list\br +@@ -5857,7 +5841,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following forms are never type-dependent (because the type of the expression cannot be dependent): @@ -7698,7 +7527,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{ncsimplebnf} literal\br \keyword{sizeof} unary-expression\br -@@ -5962,7 +5945,6 @@ Expressions of the following form are value-dependent if the +@@ -5968,7 +5951,6 @@ Expressions of the following form are value-dependent if the is type-dependent or the \grammarterm{type-id} is dependent: @@ -7706,7 +7535,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{ncsimplebnf} \keyword{sizeof} unary-expression\br \keyword{sizeof} \terminal{(} type-id \terminal{)}\br -@@ -5990,7 +5972,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} +@@ -5996,7 +5978,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} is value-dependent or any \grammarterm{assignment-expression} in the \grammarterm{braced-init-list} is value-dependent: @@ -7714,7 +7543,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br typename-specifier \terminal{(} \opt{expression-list} \terminal{)}\br -@@ -6005,7 +5986,6 @@ typename-specifier braced-init-list\br +@@ -6011,7 +5992,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following form are value-dependent: @@ -7722,7 +7551,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -7013,7 +6993,6 @@ template. +@@ -7018,7 +6998,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -7730,7 +7559,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{bnf} \nontermdef{explicit-instantiation}\br \opt{\keyword{extern}} \keyword{template} declaration -@@ -7488,7 +7467,6 @@ otherwise, it is a declaration. +@@ -7493,7 +7472,6 @@ otherwise, it is a declaration. The definition of a static data member of a template for which default-initialization is desired can use functional cast notation\iref{expr.type.conv}: @@ -7738,7 +7567,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{codeblock} template<> X Q::x; // declaration template<> X Q::x (); // error: declares a function -@@ -7747,7 +7725,6 @@ An empty template argument list can be used to indicate that a given +@@ -7752,7 +7730,6 @@ An empty template argument list can be used to indicate that a given use refers to a specialization of a function template even when a non-template function\iref{dcl.fct} is visible that would otherwise be used. For example: @@ -7746,7 +7575,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{codeblock} template int f(T); // \#1 int f(int); // \#2 -@@ -8329,7 +8306,6 @@ void h(int x, float& y) { +@@ -8354,7 +8331,6 @@ void h(int x, float& y) { If \tcode{P} is not a reference type: @@ -7754,7 +7583,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item If -@@ -8424,7 +8400,6 @@ the type +@@ -8449,7 +8425,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -7762,7 +7591,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item If the original -@@ -8614,7 +8589,6 @@ of \tcode{P} for type deduction and for any further references to or transformat +@@ -8639,7 +8614,6 @@ of \tcode{P} for type deduction and for any further references to or transformat If \tcode{A} is not a reference type: @@ -7770,7 +7599,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item If -@@ -8660,7 +8634,6 @@ values that will make the deduced +@@ -8685,7 +8659,6 @@ values that will make the deduced identical to \tcode{A}. However, certain attributes of \tcode{A} may be ignored: @@ -7778,7 +7607,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item If the original \tcode{A} is a reference type, -@@ -8705,7 +8678,6 @@ the argument template and template-1 as the parameter template. +@@ -8730,7 +8703,6 @@ the argument template and template-1 as the parameter template. \pnum The types used to determine the ordering depend on the context in which the partial ordering is done: @@ -7786,7 +7615,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item In the context of a function call, the types used are those function parameter types -@@ -8733,7 +8705,6 @@ and +@@ -8758,7 +8730,6 @@ and \pnum Before the partial ordering is done, certain transformations are performed on the types used for partial ordering: @@ -7794,7 +7623,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item If -@@ -8939,7 +8910,6 @@ A given type +@@ -8962,7 +8933,6 @@ A given type \tcode{P} can be composed from a number of other types, templates, and constant template argument values: @@ -7802,7 +7631,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{itemize} \item A function type includes the types of each of the function parameters, -@@ -8981,7 +8951,6 @@ need not have the same form. +@@ -9004,7 +8974,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -7810,7 +7639,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -9076,7 +9045,6 @@ is deduced. +@@ -9099,7 +9068,6 @@ is deduced. \begin{example} Here is an example in which different parameter/argument pairs produce inconsistent template argument deductions: @@ -7818,7 +7647,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{codeblock} template void f(T x, T y) { @\commentellip@ } struct A { @\commentellip@ }; -@@ -9093,7 +9061,6 @@ Here is an example where two template arguments are deduced from a +@@ -9116,7 +9084,6 @@ Here is an example where two template arguments are deduced from a single function parameter/argument pair. This can lead to conflicts that cause type deduction to fail: @@ -7826,7 +7655,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -9110,7 +9077,6 @@ void r() { +@@ -9133,7 +9100,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -7834,7 +7663,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -9129,7 +9095,6 @@ void h() { +@@ -9152,7 +9118,6 @@ void h() { Here is an example where a qualification conversion applies between the argument type on the function call and the deduced template argument type: @@ -7842,7 +7671,7 @@ index 3e0fd2ed..2ebe5fe3 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -9140,7 +9105,6 @@ void s() { +@@ -9163,7 +9128,6 @@ void s() { Here is an example where the template argument is used to instantiate a derived class type of the corresponding function parameter type: @@ -7851,10 +7680,10 @@ index 3e0fd2ed..2ebe5fe3 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 9d7efb72..976fa0b3 100644 +index 363ff13c..0e8242c0 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -7343,7 +7343,6 @@ and visible to other threads. +@@ -7365,7 +7365,6 @@ and visible to other threads. \pnum The expression \tcode{m.lock()} is well-formed and has the following semantics: @@ -7862,7 +7691,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -7386,7 +7385,6 @@ that a deadlock would occur. +@@ -7408,7 +7407,6 @@ that a deadlock would occur. \pnum The expression \tcode{m.try_lock()} is well-formed and has the following semantics: @@ -7870,7 +7699,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -7432,7 +7430,6 @@ Nothing. +@@ -7454,7 +7452,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -7878,7 +7707,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -7587,7 +7584,6 @@ requirements\iref{thread.req.lockable.timed}. +@@ -7609,7 +7606,6 @@ requirements\iref{thread.req.lockable.timed}. \pnum The expression \tcode{m.try_lock_for(rel_time)} is well-formed and has the following semantics: @@ -7886,7 +7715,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -7629,7 +7625,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -7651,7 +7647,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_until(abs_time)} is well-formed and has the following semantics: @@ -7894,7 +7723,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -7816,7 +7811,6 @@ shared lock. +@@ -7838,7 +7833,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -7902,7 +7731,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -7853,7 +7847,6 @@ The calling thread has a shared lock on the mutex. +@@ -7875,7 +7869,6 @@ The calling thread has a shared lock on the mutex. \pnum The expression \tcode{m.unlock_shared()} is well-formed and has the following semantics: @@ -7910,7 +7739,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -7878,7 +7871,6 @@ Nothing. +@@ -7900,7 +7893,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -7918,7 +7747,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -7981,7 +7973,6 @@ requirements\iref{thread.req.lockable.shared.timed}. +@@ -8003,7 +7995,6 @@ requirements\iref{thread.req.lockable.shared.timed}. \pnum The expression \tcode{m.try_lock_shared_for(rel_time)} is well-formed and has the following semantics: @@ -7926,7 +7755,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -8026,7 +8017,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -8048,7 +8039,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_shared_until(abs_time)} is well-formed and has the following semantics: @@ -7934,7 +7763,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemdescr} \pnum \expects -@@ -10167,7 +10157,6 @@ template +@@ -10199,7 +10189,6 @@ template \begin{itemdescr} \pnum \effects @@ -7942,7 +7771,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -11558,7 +11547,6 @@ shared state as \tcode{*this}. +@@ -11589,7 +11578,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -7950,7 +7779,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemize} \item \tcode{future_already_retrieved} if \tcode{get_future} has already been called on a \tcode{promise} with the same shared state as \tcode{*this}. -@@ -11621,7 +11609,6 @@ already has a stored value or exception. +@@ -11652,7 +11640,6 @@ already has a stored value or exception. \pnum \errors @@ -7958,7 +7787,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -11961,7 +11948,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -11992,7 +11979,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -7966,7 +7795,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12305,7 +12291,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -12336,7 +12322,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -7974,7 +7803,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12340,7 +12325,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -12371,7 +12356,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -7982,7 +7811,7 @@ index 9d7efb72..976fa0b3 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12396,7 +12380,6 @@ The further behavior +@@ -12427,7 +12411,6 @@ The further behavior of the second function depends on the \tcode{policy} argument as follows (if more than one of these conditions applies, the implementation may choose any of the corresponding policies): @@ -7991,10 +7820,10 @@ index 9d7efb72..976fa0b3 100644 \item If \tcode{launch::async} is set in \tcode{policy}, calls diff --git a/source/time.tex b/source/time.tex -index cc24c1c9..2d6f9c27 100644 +index 62226224..6b4a0b79 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -2072,7 +2072,6 @@ return os << s.str(); +@@ -2075,7 +2075,6 @@ return os << s.str(); \end{codeblock} where \tcode{\placeholder{units-suffix}} depends on the type \tcode{Period::type} as follows: @@ -8002,7 +7831,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{itemize} \item If \tcode{Period::type} is \tcode{atto}, -@@ -2950,7 +2949,6 @@ for (auto i = 0; i < 8; ++i, u += 250ms) +@@ -2953,7 +2952,6 @@ for (auto i = 0; i < 8; ++i, u += 250ms) \end{codeblock} Produces this output: @@ -8010,7 +7839,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{outputblock} 2015-06-30 23:59:59.500 UTC 2015-06-30 23:59:59.750 UTC -@@ -3156,7 +3154,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, tt); +@@ -3159,7 +3157,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, tt); \end{codeblock} Produces this output: @@ -8018,7 +7847,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{outputblock} 2000-01-01 00:00:00 UTC == 2000-01-01 00:00:32 TAI \end{outputblock} -@@ -3319,7 +3316,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, gt); +@@ -3322,7 +3319,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, gt); \end{codeblock} Produces this output: @@ -8026,7 +7855,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{outputblock} 2000-01-01 00:00:00 UTC == 2000-01-01 00:00:13 GPS \end{outputblock} -@@ -3388,7 +3384,6 @@ such as \tcode{std::file\-sys\-tem}. +@@ -3391,7 +3387,6 @@ such as \tcode{std::file\-sys\-tem}. \pnum The type denoted by \tcode{file_clock} provides precisely one of the following two sets of static member functions: @@ -8034,7 +7863,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{codeblock} template static sys_time<@\seebelow@> -@@ -3397,9 +3392,7 @@ template +@@ -3400,9 +3395,7 @@ template static file_time<@\seebelow@> from_sys(const sys_time&); \end{codeblock} @@ -8044,7 +7873,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{codeblock} template static utc_time<@\seebelow@> -@@ -3872,7 +3865,6 @@ template +@@ -3875,7 +3868,6 @@ template \constraints At least one of the following clock time conversion expressions is well-formed: @@ -8052,7 +7881,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{itemize} \item \begin{codeblock} -@@ -7918,7 +7910,6 @@ a conventional syntax for the creation of civil calendar dates. +@@ -7921,7 +7913,6 @@ a conventional syntax for the creation of civil calendar dates. \pnum \begin{note} The year, month, and day are accepted in any of the following 3 orders: @@ -8060,7 +7889,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{codeblock} @\tcode{\placeholder{year}}@/@\tcode{\placeholder{month}}@/@\tcode{\placeholder{day}}@ @\tcode{\placeholder{month}}@/@\tcode{\placeholder{day}}@/@\tcode{\placeholder{year}}@ -@@ -7926,7 +7917,6 @@ The year, month, and day are accepted in any of the following 3 orders: +@@ -7929,7 +7920,6 @@ The year, month, and day are accepted in any of the following 3 orders: \end{codeblock} Anywhere a \tcode{\placeholder{day}} is needed, any of the following can also be specified: @@ -8068,7 +7897,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{codeblock} last @\tcode{\placeholder{weekday}}@[@\tcode{\placeholder{i}}@] -@@ -7939,7 +7929,6 @@ last +@@ -7942,7 +7932,6 @@ last Partial-date types such as \tcode{year_month} and \tcode{month_day} can be created by not applying the second division operator for any of the three orders. For example: @@ -8076,7 +7905,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{codeblock} year_month ym = 2015y/April; month_day md1 = April/4; -@@ -9131,7 +9120,6 @@ template +@@ -9134,7 +9123,6 @@ template Initializes the base class with a sequence of \tcode{char} equivalent to that produced by \tcode{os.str()} initialized as shown below: @@ -8084,7 +7913,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{codeblock} ostringstream os; os << tp << " is in a gap between\n" -@@ -9161,7 +9149,6 @@ int main() { +@@ -9164,7 +9152,6 @@ int main() { \end{codeblock} Produces the output: @@ -8092,7 +7921,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{outputblock} 2016-03-13 02:30:00 is in a gap between 2016-03-13 02:00:00 EST and -@@ -9206,7 +9193,6 @@ template +@@ -9209,7 +9196,6 @@ template Initializes the base class with a sequence of \tcode{char} equivalent to that produced by \tcode{os.str()} initialized as shown below: @@ -8100,7 +7929,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{codeblock} ostringstream os; os << tp << " is ambiguous. It could be\n" -@@ -9234,7 +9220,6 @@ int main() { +@@ -9237,7 +9223,6 @@ int main() { \end{codeblock} Produces the output: @@ -8108,7 +7937,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{outputblock} 2016-11-06 01:30:00 is ambiguous. It could be 2016-11-06 01:30:00 EDT == 2016-11-06 05:30:00 UTC or -@@ -9288,7 +9273,6 @@ The \tcode{offset} data member indicates +@@ -9291,7 +9276,6 @@ The \tcode{offset} data member indicates the UTC offset in effect for the associated \tcode{time_zone} and \tcode{time_point}. The relationship between \tcode{local_time} and \tcode{sys_time} is: @@ -8116,7 +7945,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{codeblock} offset = local_time - sys_time \end{codeblock} -@@ -9593,7 +9577,6 @@ the behavior of \tcode{zoned_time} +@@ -9596,7 +9580,6 @@ the behavior of \tcode{zoned_time} for the \tcode{zoned_time} default constructor, and constructors taking \tcode{string_view}. A specialization for \tcode{const time_zone*} is provided by the implementation: @@ -8124,7 +7953,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{codeblock} namespace std::chrono { template<> struct zoned_traits { -@@ -10169,7 +10152,6 @@ for (auto& l : get_tzdb().leap_seconds) +@@ -10172,7 +10155,6 @@ for (auto& l : get_tzdb().leap_seconds) \end{codeblock} Produces the output: @@ -8132,7 +7961,7 @@ index cc24c1c9..2d6f9c27 100644 \begin{outputblock} 1972-07-01 00:00:00: 1s 1973-01-01 00:00:00: 1s -@@ -10468,7 +10450,6 @@ The \tcode{parse} member functions of these formatters +@@ -10471,7 +10453,6 @@ The \tcode{parse} member functions of these formatters interpret the format specification as a \fmtgrammarterm{chrono-format-spec} according to the following syntax: @@ -8141,10 +7970,10 @@ index cc24c1c9..2d6f9c27 100644 \fmtnontermdef{chrono-format-spec}\br \opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs} diff --git a/source/utilities.tex b/source/utilities.tex -index 6011601f..530bb023 100644 +index f8e08fe3..d463a05a 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -282,7 +282,6 @@ Exchanges values stored in two locations. +@@ -289,7 +289,6 @@ Exchanges values stored in two locations. \pnum \remarks The exception specification is equivalent to: @@ -8152,7 +7981,7 @@ index 6011601f..530bb023 100644 \begin{codeblock} is_nothrow_move_constructible_v && is_nothrow_move_assignable_v \end{codeblock} -@@ -2237,7 +2236,6 @@ For all $i$, assigns \tcode{std::forward<$\tcode{T}_i$>(get<$i$>(u))} to +@@ -2540,7 +2539,6 @@ For all $i$, assigns \tcode{std::forward<$\tcode{T}_i$>(get<$i$>(u))} to \remarks The exception specification is equivalent to the logical \logop{and} of the following expressions: @@ -8160,7 +7989,7 @@ index 6011601f..530bb023 100644 \begin{codeblock} is_nothrow_move_assignable_v<@$\mathtt{T}_i$@> \end{codeblock} -@@ -3183,7 +3181,6 @@ As if by \tcode{x.swap(y)}. +@@ -3486,7 +3484,6 @@ As if by \tcode{x.swap(y)}. \pnum \remarks The exception specification is equivalent to: @@ -8168,7 +7997,7 @@ index 6011601f..530bb023 100644 \begin{codeblock} noexcept(x.swap(y)) \end{codeblock} -@@ -10930,7 +10927,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; +@@ -11307,7 +11304,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8176,7 +8005,7 @@ index 6011601f..530bb023 100644 \begin{itemize} \item If \tcode{I < pos}, the new value is zero; -@@ -10955,7 +10951,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; +@@ -11332,7 +11328,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -8184,7 +8013,7 @@ index 6011601f..530bb023 100644 \begin{itemize} \item If \tcode{pos >= N - I}, the new value is zero; -@@ -11684,7 +11679,6 @@ namespace std { +@@ -12061,7 +12056,6 @@ namespace std { If a \Cpp{} program wants to have a by-element addition of two vectors \tcode{a} and \tcode{b} containing \tcode{double} and put the result into \tcode{a}, it can do: @@ -8192,7 +8021,7 @@ index 6011601f..530bb023 100644 \begin{codeblock} transform(a.begin(), a.end(), b.begin(), a.begin(), plus()); \end{codeblock} -@@ -15163,7 +15157,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; +@@ -15544,7 +15538,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; The header provides partial specializations of \tcode{function_ref} for each combination of the possible replacements of the placeholders \cv{} and \placeholder{noex} where: @@ -8204,7 +8033,7 @@ index 6011601f..530bb023 100644 2.43.0 -From 20cfd6993f796d0067e998824e9a4dfbd6ab80f3 Mon Sep 17 00:00:00 2001 +From 32af6cd9ff8d0f9c4684f2488f2aa83fbeca83e4 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 Subject: [PATCH 06/10] Use monospace font for code in figures. @@ -8351,7 +8180,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From 9e5be3d459ac25cb6550b7beab91eb9aa1c12062 Mon Sep 17 00:00:00 2001 +From 0d26f8fa398395e59e8b8b392bc2b37b822b2f33 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 Subject: [PATCH 07/10] [uaxid] Mark code that's not to be highlighted. @@ -8379,7 +8208,7 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From cd3b9b294e8247f729d9d263dd6df7f14d6c982a Mon Sep 17 00:00:00 2001 +From 1d2defde13540045bf1eed78e553fedcf059a025 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. @@ -8396,14 +8225,14 @@ Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. source/meta.tex | 268 ++++++++++++++++++++--------------------- source/numerics.tex | 34 +++--- source/strings.tex | 10 +- - source/support.tex | 14 +-- + source/support.tex | 4 +- source/threads.tex | 110 ++++++++--------- source/time.tex | 66 +++++----- source/utilities.tex | 136 ++++++++++----------- - 15 files changed, 481 insertions(+), 489 deletions(-) + 15 files changed, 476 insertions(+), 484 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index f914092e..16604a18 100644 +index fad5f7c8..600c9685 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -8450,7 +8279,7 @@ index f914092e..16604a18 100644 if it is required to be a mutable iterator, or model \libconcept{random_access_iterator}\iref{iterator.concept.random.access} otherwise. \end{itemize} -@@ -4626,10 +4626,10 @@ template +@@ -4619,10 +4619,10 @@ template \pnum \expects \tcode{Function} meets @@ -8463,7 +8292,7 @@ index f914092e..16604a18 100644 \end{note} \pnum -@@ -4666,7 +4666,7 @@ template +@@ -4659,7 +4659,7 @@ template \begin{itemdescr} \pnum \expects @@ -8472,7 +8301,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -4800,10 +4800,10 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4793,10 +4793,10 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8485,7 +8314,7 @@ index f914092e..16604a18 100644 \end{note} \pnum -@@ -4840,7 +4840,7 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4833,7 +4833,7 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8494,7 +8323,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -5688,7 +5688,7 @@ If +@@ -5681,7 +5681,7 @@ If \item the types of \tcode{first1}, \tcode{last1}, \tcode{first2}, and \tcode{last2} meet the @@ -8503,7 +8332,7 @@ index f914092e..16604a18 100644 and \tcode{last1 - first1 != last2 - first2} for the overloads in namespace \tcode{std}; \item -@@ -6032,7 +6032,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} +@@ -6025,7 +6025,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} \pnum \remarks @@ -8512,7 +8341,7 @@ index f914092e..16604a18 100644 \end{itemdescr} \rSec2[alg.starts.with]{Starts with} -@@ -7616,7 +7616,7 @@ Let $E(\tcode{i})$ be +@@ -7598,7 +7598,7 @@ Let $E(\tcode{i})$ be \expects For the algorithms in namespace \tcode{std}, the type of \tcode{*first} @@ -8521,7 +8350,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -7867,7 +7867,7 @@ let $E(\tcode{i})$ be +@@ -7849,7 +7849,7 @@ let $E(\tcode{i})$ be For the overloads in namespace \tcode{std}, \tcode{pred} is an equivalence relation and the type of \tcode{*first} meets @@ -8530,7 +8359,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -7998,10 +7998,10 @@ Let: +@@ -7980,10 +7980,10 @@ Let: \libconcept{forward_iterator}\iref{iterator.concept.forward}, then there are no additional requirements for \tcode{T}. Otherwise, if \tcode{OutputIterator} meets @@ -8543,7 +8372,7 @@ index f914092e..16604a18 100644 Otherwise, \tcode{T} meets both the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and \oldconcept{CopyAssignable} requirements. -@@ -8080,7 +8080,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8062,7 +8062,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8552,7 +8381,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -8215,10 +8215,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterat +@@ -8197,10 +8197,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterat \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -8566,7 +8395,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -8438,13 +8438,13 @@ For the overload in namespace \tcode{std}: +@@ -8420,13 +8420,13 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{PopulationIterator} meets @@ -8583,7 +8412,7 @@ index f914092e..16604a18 100644 unless \tcode{Pop\-ulat\-ion\-Iter\-ator} models \libconcept{forward_iterator}\iref{iterator.concept.forward}. \item -@@ -8512,7 +8512,7 @@ For the overload in namespace \tcode{std}: +@@ -8494,7 +8494,7 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{RandomAccessIterator} meets @@ -8592,7 +8421,7 @@ index f914092e..16604a18 100644 \item The type \tcode{remove_reference_t} meets the uniform random bit generator\iref{rand.req.urng} requirements. -@@ -8573,7 +8573,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8555,7 +8555,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8601,7 +8430,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -8637,10 +8637,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8619,10 +8619,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8615,7 +8444,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -8819,10 +8819,10 @@ for the overloads with no parameters by those names. +@@ -8801,10 +8801,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8629,7 +8458,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -8887,10 +8887,10 @@ for the overloads with no parameters by those names. +@@ -8869,10 +8869,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8643,7 +8472,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -8961,10 +8961,10 @@ for the overloads with no parameters by those names. +@@ -8943,10 +8943,10 @@ for the overloads with no parameters by those names. \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8657,7 +8486,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -9108,10 +9108,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. +@@ -9090,10 +9090,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8671,7 +8500,7 @@ index f914092e..16604a18 100644 \pnum For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and -@@ -9346,10 +9346,10 @@ for the overloads with no parameters by those names. +@@ -9328,10 +9328,10 @@ for the overloads with no parameters by those names. \range{first}{nth} and \range{nth}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8685,7 +8514,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -9731,7 +9731,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9713,7 +9713,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -8694,7 +8523,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -9758,7 +9758,7 @@ Let $N = \tcode{last - first}$: +@@ -9740,7 +9740,7 @@ Let $N = \tcode{last - first}$: For the non-parallel algorithm overloads, exactly $N$ applications of the predicate and projection. At most $N / 2$ swaps if the type of \tcode{first} meets @@ -8703,7 +8532,7 @@ index f914092e..16604a18 100644 for the overloads in namespace \tcode{std} or models \libconcept{bidirectional_iterator} for the overloads in namespace \tcode{ranges}, -@@ -9811,10 +9811,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9793,10 +9793,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8717,7 +8546,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -10211,10 +10211,10 @@ for the overloads with no parameters by those names. +@@ -10193,10 +10193,10 @@ for the overloads with no parameters by those names. sorted with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8731,7 +8560,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -10966,10 +10966,10 @@ The range \range{first}{last - 1} +@@ -10959,10 +10959,10 @@ The range \range{first}{last - 1} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8745,7 +8574,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -11019,10 +11019,10 @@ The range \range{first}{last} +@@ -11012,10 +11012,10 @@ The range \range{first}{last} is a valid non-empty heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8759,7 +8588,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -11075,10 +11075,10 @@ for the overloads with no parameters by those names. +@@ -11068,10 +11068,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8773,7 +8602,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -11128,10 +11128,10 @@ The range \range{first}{last} is +@@ -11121,10 +11121,10 @@ The range \range{first}{last} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8787,7 +8616,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -11318,7 +11318,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8807,7 +8636,7 @@ index f914092e..16604a18 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11401,7 +11401,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8827,7 +8656,7 @@ index f914092e..16604a18 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11486,7 +11486,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8847,7 +8676,7 @@ index f914092e..16604a18 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11755,7 +11755,7 @@ for the overloads with no parameter \tcode{proj}. +@@ -11748,7 +11748,7 @@ for the overloads with no parameter \tcode{proj}. \expects \tcode{bool(invoke(comp, invoke(proj, hi), invoke(proj, lo)))} is \tcode{false}. For the first form, type \tcode{T} @@ -8856,7 +8685,7 @@ index f914092e..16604a18 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11958,7 +11958,7 @@ for overloads with no parameters by those names. +@@ -11951,7 +11951,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8865,7 +8694,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -12017,7 +12017,7 @@ for overloads with no parameters by those names. +@@ -12010,7 +12010,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8874,7 +8703,7 @@ index f914092e..16604a18 100644 \pnum \effects -@@ -12336,8 +12336,8 @@ template +@@ -12329,8 +12329,8 @@ template \pnum \expects \tcode{T} meets @@ -8885,7 +8714,7 @@ index f914092e..16604a18 100644 In the range \crange{first}{last}, \tcode{binary_op} neither modifies elements nor invalidates iterators or subranges. -@@ -12459,7 +12459,7 @@ are convertible to \tcode{T}. +@@ -12452,7 +12452,7 @@ are convertible to \tcode{T}. \expects \begin{itemize} \item @@ -8894,7 +8723,7 @@ index f914092e..16604a18 100644 \item \tcode{binary_op} neither invalidates iterators or subranges, nor modifies elements in the range \crange{first}{last}. -@@ -12503,8 +12503,8 @@ template}. +@@ -13191,7 +13191,7 @@ that denotes an object of type \tcode{minus<>}. \begin{itemize} \item For the overloads with no \tcode{ExecutionPolicy}, @@ -8997,10 +8826,10 @@ index 3e64abc8..9efb5afa 100644 invocation of the destructor does not actually throw. \end{note} diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index 8b010321..0d4dff5b 100644 +index 9a7aba83..04178bdb 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex -@@ -758,9 +758,9 @@ namespace std { +@@ -761,9 +761,9 @@ namespace std { // \ref{syserr}, system error support template @@ -9012,7 +8841,7 @@ index 8b010321..0d4dff5b 100644 } \end{codeblock} -@@ -771,9 +771,9 @@ Whether or not the \libheader{system_error} implementation +@@ -774,9 +774,9 @@ Whether or not the \libheader{system_error} implementation exposes the \libheader{cerrno} macros is unspecified. \pnum @@ -9024,7 +8853,7 @@ index 8b010321..0d4dff5b 100644 conversions, respectively. \rSec2[syserr.errcat]{Class \tcode{error_category}} -@@ -798,8 +798,6 @@ even for objects holding the same value. +@@ -801,8 +801,6 @@ even for objects holding the same value. \indexlibraryglobal{error_category}% \indexlibraryctor{error_category}% \indexlibrarydtor{error_category}% @@ -9033,7 +8862,7 @@ index 8b010321..0d4dff5b 100644 \begin{codeblock} namespace std { class error_category { -@@ -818,8 +816,8 @@ namespace std { +@@ -821,8 +819,8 @@ namespace std { strong_ordering operator<=>(const error_category& rhs) const noexcept; }; @@ -9044,7 +8873,7 @@ index 8b010321..0d4dff5b 100644 } \end{codeblock} -@@ -1090,7 +1088,7 @@ template +@@ -1093,7 +1091,7 @@ template \begin{itemdescr} \pnum \constraints @@ -9053,7 +8882,7 @@ index 8b010321..0d4dff5b 100644 \pnum \effects -@@ -1123,7 +1121,7 @@ template +@@ -1126,7 +1124,7 @@ template \begin{itemdescr} \pnum \constraints @@ -9063,7 +8892,7 @@ index 8b010321..0d4dff5b 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 4455a1c9..000fe37d 100644 +index 067536ac..9a2154a7 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9102,7 +8931,7 @@ index 4455a1c9..000fe37d 100644 \\ \end{floattable} diff --git a/source/future.tex b/source/future.tex -index a740fd47..2f15e38b 100644 +index 24498cbb..99bb6113 100644 --- a/source/future.tex +++ b/source/future.tex @@ -359,7 +359,7 @@ template struct is_pod; @@ -9151,7 +8980,7 @@ index a740fd47..2f15e38b 100644 \begin{itemize} \item for the first specialization, \tcode{volatile VA::type}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index 5651a156..ebbfbcba 100644 +index a8f84575..f444a705 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -1684,10 +1684,10 @@ An \tcode{fpos} type specifies file position information. @@ -9213,7 +9042,7 @@ index 5651a156..ebbfbcba 100644 \rSec2[fs.filesystem.syn]{Header \tcode{} synopsis} -@@ -14085,7 +14085,7 @@ shall be one of: +@@ -14086,7 +14086,7 @@ shall be one of: \item \tcode{basic_string_view}. A function argument \tcode{const Source\&} \tcode{source} shall have an effective range \range{source.begin()}{source.end()}. @@ -9222,7 +9051,7 @@ index 5651a156..ebbfbcba 100644 The value type shall be an encoded character type. A function argument \tcode{const Source\&} \tcode{source} shall have an effective range \range{source}{end} where \tcode{end} is the first -@@ -16590,7 +16590,7 @@ namespace std::filesystem { +@@ -16591,7 +16591,7 @@ namespace std::filesystem { \pnum \tcode{directory_iterator} meets the @@ -9232,10 +9061,10 @@ index 5651a156..ebbfbcba 100644 \pnum If an iterator of type \tcode{directory_iterator} reports an error or diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index c463010f..8d09833e 100644 +index 7e1320d3..b4c67f66 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex -@@ -1867,7 +1867,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1874,7 +1874,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9244,7 +9073,7 @@ index c463010f..8d09833e 100644 {p{1in}p{4.15in}} \topline \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep -@@ -1894,7 +1894,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1901,7 +1901,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9253,7 +9082,7 @@ index c463010f..8d09833e 100644 {p{1in}p{1in}p{1in}p{1.9in}} \topline \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Return value} & \hdstyle{Post-condition} \\ \capsep -@@ -1908,7 +1908,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1915,7 +1915,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. \tcode{a.\~T()} & No exception is propagated. \\ \rowsep \multicolumn{2}{|l|}{ \begin{tailnote} @@ -9262,7 +9091,7 @@ index c463010f..8d09833e 100644 \end{tailnote} } \\ \end{oldconcepttable} -@@ -1987,7 +1987,7 @@ void value_swap(T&& t, U&& u) { +@@ -1994,7 +1994,7 @@ void value_swap(T&& t, U&& u) { // for rvalues and lvalues } @@ -9271,7 +9100,7 @@ index c463010f..8d09833e 100644 template void lv_swap(T& t1, T& t2) { using std::swap; -@@ -2024,9 +2024,9 @@ int main() { +@@ -2031,9 +2031,9 @@ int main() { A \oldconcept{NullablePointer} type is a pointer-like type that supports null values. A type \tcode{P} meets the \oldconcept{\-Nullable\-Pointer} requirements if \begin{itemize} @@ -9284,7 +9113,7 @@ index c463010f..8d09833e 100644 \item the expressions shown in \tref{cpp17.nullablepointer} are valid and have the indicated semantics, and -@@ -2102,8 +2102,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. +@@ -2109,8 +2109,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. A type \tcode{H} meets the \defnoldconcept{Hash} requirements if \begin{itemize} \item it is a function object type\iref{function.objects}, @@ -9295,7 +9124,7 @@ index c463010f..8d09833e 100644 \item the expressions shown in \tref{cpp17.hash} are valid and have the indicated semantics. \end{itemize} -@@ -2787,7 +2787,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2794,7 +2794,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be copied when the client container is copy-assigned; if so, \tcode{X} shall meet @@ -9304,7 +9133,7 @@ index c463010f..8d09833e 100644 the copy operation shall not throw exceptions. \pnum -@@ -2809,7 +2809,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2816,7 +2816,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be moved when the client container is move-assigned; if so, \tcode{X} shall meet @@ -9313,7 +9142,7 @@ index c463010f..8d09833e 100644 the move operation shall not throw exceptions. \pnum -@@ -2831,7 +2831,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2838,7 +2838,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be swapped when the client container is swapped; if so, @@ -9322,7 +9151,7 @@ index c463010f..8d09833e 100644 the \tcode{swap} operation shall not throw exceptions. \pnum -@@ -2861,7 +2861,7 @@ Default: \tcode{is_empty::type} +@@ -2868,7 +2868,7 @@ Default: \tcode{is_empty::type} \pnum An allocator type \tcode{X} shall meet the @@ -9331,7 +9160,7 @@ index c463010f..8d09833e 100644 The \tcode{XX::pointer}, \tcode{XX::const_pointer}, \tcode{XX::void_pointer}, and \tcode{XX::const_void_pointer} types shall meet the \oldconcept{Nullable\-Pointer} requirements (\tref{cpp17.nullablepointer}). -@@ -2869,7 +2869,7 @@ No constructor, +@@ -2876,7 +2876,7 @@ No constructor, comparison operator function, copy operation, move operation, or swap operation on these pointer types shall exit via an exception. \tcode{XX::pointer} and \tcode{XX::const_pointer} shall also meet the requirements for @@ -9341,10 +9170,10 @@ index c463010f..8d09833e 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index 17fb5e8d..b7efaa69 100644 +index fb901823..2dea2cc5 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1147,7 +1147,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type +@@ -1183,7 +1183,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type disambiguate constructor and function overloading. Specifically, several types (see \tcode{tuple}~\ref{tuple}) have constructors with \tcode{allocator_arg_t} as the first argument, immediately followed by an argument of a type that meets the @@ -9353,7 +9182,7 @@ index 17fb5e8d..b7efaa69 100644 \rSec2[allocator.uses]{\tcode{uses_allocator}} -@@ -1162,7 +1162,7 @@ template struct uses_allocator; +@@ -1198,7 +1198,7 @@ template struct uses_allocator; \pnum \remarks Automatically detects whether \tcode{T} has a nested \tcode{allocator_type} that @@ -9362,7 +9191,7 @@ index 17fb5e8d..b7efaa69 100644 requirements\iref{meta.rqmts}. The implementation shall provide a definition that is derived from \tcode{true_type} if the \grammarterm{qualified-id} \tcode{T::allocator_type} is valid and denotes a type\iref{temp.deduct} and -@@ -2112,8 +2112,8 @@ deleter before such replacement is considered completed. +@@ -2148,8 +2148,8 @@ deleter before such replacement is considered completed. Each object of a type \tcode{U} instantiated from the \tcode{unique_ptr} template specified in \ref{unique.ptr} has the strict ownership semantics, specified above, of a unique pointer. In partial satisfaction of these semantics, each such \tcode{U} @@ -9373,7 +9202,7 @@ index 17fb5e8d..b7efaa69 100644 The template parameter \tcode{T} of \tcode{unique_ptr} may be an incomplete type. \pnum -@@ -2300,7 +2300,7 @@ pointer as appropriate for that deleter. +@@ -2336,7 +2336,7 @@ pointer as appropriate for that deleter. \pnum If the deleter's type \tcode{D} is not a reference type, \tcode{D} shall meet @@ -9382,7 +9211,7 @@ index 17fb5e8d..b7efaa69 100644 \pnum If the \grammarterm{qualified-id} \tcode{remove_reference_t::pointer} is valid and denotes a -@@ -2308,7 +2308,7 @@ type\iref{temp.deduct}, then \tcode{unique_ptr::pointer} shall be a synonym for \tcode{remove_reference_t::pointer}. Otherwise \tcode{unique_ptr::pointer} shall be a synonym for \tcode{element_type*}. The type \tcode{unique_ptr::pointer} shall @@ -9391,7 +9220,7 @@ index 17fb5e8d..b7efaa69 100644 \pnum \begin{example} -@@ -2334,7 +2334,7 @@ constexpr unique_ptr(nullptr_t) noexcept; +@@ -2370,7 +2370,7 @@ constexpr unique_ptr(nullptr_t) noexcept; \pnum \expects @@ -9400,7 +9229,7 @@ index 17fb5e8d..b7efaa69 100644 and that construction does not throw an exception. \pnum -@@ -2361,7 +2361,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; +@@ -2397,7 +2397,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; \pnum \expects @@ -9409,7 +9238,7 @@ index 17fb5e8d..b7efaa69 100644 and that construction does not throw an exception. \pnum -@@ -2390,10 +2390,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex +@@ -2426,10 +2426,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex \pnum \expects For the first constructor, if \tcode{D} is not a reference type, @@ -9422,7 +9251,7 @@ index 17fb5e8d..b7efaa69 100644 such construction does not exit via an exception. \pnum -@@ -2418,8 +2418,8 @@ the second constructor is defined as deleted. +@@ -2454,8 +2454,8 @@ the second constructor is defined as deleted. \begin{example} \begin{codeblock} D d; @@ -9433,7 +9262,7 @@ index 17fb5e8d..b7efaa69 100644 unique_ptr p3(new int, d); // \tcode{p3} holds a reference to \tcode{d} unique_ptr p4(new int, D()); // error: rvalue deleter object combined // with reference deleter type -@@ -2440,7 +2440,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; +@@ -2476,7 +2476,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, @@ -9442,7 +9271,7 @@ index 17fb5e8d..b7efaa69 100644 requirements (\tref{cpp17.moveconstructible}). Construction of the deleter from an rvalue of type \tcode{D} does not -@@ -2549,10 +2549,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; +@@ -2585,10 +2585,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, \tcode{D} meets the @@ -9455,7 +9284,7 @@ index 17fb5e8d..b7efaa69 100644 requirements and assignment of the deleter from an lvalue of type \tcode{D} does not throw an exception. -@@ -3450,8 +3450,8 @@ namespace std { +@@ -3490,8 +3490,8 @@ namespace std { \end{codeblock} \pnum @@ -9466,7 +9295,7 @@ index 17fb5e8d..b7efaa69 100644 containers. Specializations of \tcode{shared_ptr} shall be contextually convertible to \tcode{bool}, allowing their use in boolean expressions and declarations in conditions. -@@ -3596,7 +3596,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. +@@ -3636,7 +3636,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. The expression \tcode{d(p)} has well-defined behavior and does not throw exceptions. \tcode{A} meets @@ -9475,7 +9304,7 @@ index 17fb5e8d..b7efaa69 100644 \pnum \effects -@@ -4116,7 +4116,7 @@ template +@@ -4156,7 +4156,7 @@ template \pnum \expects \tcode{A} meets @@ -9484,7 +9313,7 @@ index 17fb5e8d..b7efaa69 100644 \pnum \effects -@@ -4772,8 +4772,8 @@ namespace std { +@@ -4812,8 +4812,8 @@ namespace std { \end{codeblock} \pnum @@ -9495,7 +9324,7 @@ index 17fb5e8d..b7efaa69 100644 containers. The template parameter \tcode{T} of \tcode{weak_ptr} may be an incomplete type. -@@ -5352,7 +5352,7 @@ namespace std { +@@ -5392,7 +5392,7 @@ namespace std { \end{codeblock} \pnum @@ -9504,7 +9333,7 @@ index 17fb5e8d..b7efaa69 100644 If \tcode{Smart} is a specialization of \tcode{shared_ptr} and \tcode{sizeof...(Args) == 0}, the program is ill-formed. -@@ -5592,7 +5592,7 @@ namespace std { +@@ -5632,7 +5632,7 @@ namespace std { \end{codeblock} \pnum @@ -9514,7 +9343,7 @@ index 17fb5e8d..b7efaa69 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index 1fa9a9f2..925356e2 100644 +index 287b0cef..64dc0929 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -136,12 +136,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -9548,7 +9377,7 @@ index 1fa9a9f2..925356e2 100644 the arguments to the template \tcode{integral_constant} determined by the requirements for the particular relationship being described. The member names of the base characteristic shall not be hidden and shall be -@@ -344,17 +344,17 @@ namespace std { +@@ -328,17 +328,17 @@ namespace std { template struct add_cv; template @@ -9572,7 +9401,7 @@ index 1fa9a9f2..925356e2 100644 // \ref{meta.trans.ref}, reference modifications template struct remove_reference; -@@ -362,38 +362,38 @@ namespace std { +@@ -346,38 +346,38 @@ namespace std { template struct add_rvalue_reference; template @@ -9620,7 +9449,7 @@ index 1fa9a9f2..925356e2 100644 // \ref{meta.trans.other}, other transformations template struct type_identity; -@@ -412,29 +412,29 @@ namespace std { +@@ -396,29 +396,29 @@ namespace std { template struct unwrap_ref_decay; template @@ -9662,7 +9491,7 @@ index 1fa9a9f2..925356e2 100644 template using @\libglobal{void_t}@ = void; -@@ -445,185 +445,185 @@ namespace std { +@@ -429,185 +429,185 @@ namespace std { // \ref{meta.unary.cat}, primary type categories template @@ -9762,8 +9591,8 @@ index 1fa9a9f2..925356e2 100644 - constexpr bool @\libglobal{is_aggregate_v}@ = is_aggregate::value; + constexpr bool @\libglobal{is_aggregate_v}@ = @\libglobalref{is_aggregate}@::value; template -- constexpr bool @\libglobal{is_consteval_only_v}@ = is_consteval_only::value; -+ constexpr bool @\libglobal{is_consteval_only_v}@ = @\libglobalref{is_consteval_only}@::value; +- constexpr bool @\libglobal{is_structural_v}@ = is_structural::value; ++ constexpr bool @\libglobal{is_structural_v}@ = @\libglobalref{is_structural}@::value; template constexpr bool @\libglobal{is_signed_v}@ = is_signed::value; template @@ -9921,7 +9750,7 @@ index 1fa9a9f2..925356e2 100644 template constexpr bool @\libglobal{is_nothrow_invocable_r_v}@ = is_nothrow_invocable_r::value; template -@@ -633,11 +633,11 @@ namespace std { +@@ -617,11 +617,11 @@ namespace std { // \ref{meta.logical}, logical operator traits template @@ -9936,7 +9765,7 @@ index 1fa9a9f2..925356e2 100644 // \ref{meta.member}, member relationships template -@@ -936,7 +936,7 @@ properties of a type at compile time. +@@ -674,7 +674,7 @@ properties of a type at compile time. \pnum Each of these templates shall be a @@ -9945,7 +9774,7 @@ index 1fa9a9f2..925356e2 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is \tcode{true}, otherwise \tcode{false_type}. -@@ -966,17 +966,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. +@@ -704,17 +704,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. \topline \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead @@ -9966,7 +9795,7 @@ index 1fa9a9f2..925356e2 100644 \tcode{T} is an integral type\iref{basic.fundamental} & \\ \rowsep \indexlibraryglobal{is_floating_point}% \tcode{template}\br -@@ -1191,9 +1188,8 @@ A union is a class type that +@@ -929,9 +926,8 @@ A union is a class type that & If \tcode{T} is a class type, \tcode{T} shall be a complete type. \\ \rowsep @@ -9977,7 +9806,7 @@ index 1fa9a9f2..925356e2 100644 \tcode{T} is an aggregate type\iref{dcl.init.aggr} & \tcode{T} shall be an array type, a complete type, or \cv~\keyword{void}. \\ \rowsep -@@ -1210,16 +1206,14 @@ A union is a class type that +@@ -948,16 +944,14 @@ A union is a class type that \tcode{T(-1) < T(0)}; otherwise, \tcode{false} & \\ \rowsep @@ -9996,7 +9825,7 @@ index 1fa9a9f2..925356e2 100644 \tcode{T} is an array type of known bound\iref{dcl.array} & \\ \rowsep -@@ -1713,7 +1707,7 @@ may be used to query properties of types at compile time. +@@ -1457,7 +1451,7 @@ may be used to query properties of types at compile time. \end{libreqtab2a} \pnum @@ -10005,7 +9834,7 @@ index 1fa9a9f2..925356e2 100644 base characteristic of \tcode{integral_constant}. \pnum -@@ -1749,7 +1743,7 @@ may be used to query relationships between types at compile time. +@@ -1493,7 +1487,7 @@ may be used to query relationships between types at compile time. \pnum Each of these templates shall be a @@ -10014,7 +9843,7 @@ index 1fa9a9f2..925356e2 100644 with a base characteristic of \tcode{true_type} if the corresponding condition is true, otherwise \tcode{false_type}. -@@ -1770,7 +1764,7 @@ Let \tcode{\placeholdernc{ELEMS-OF}(T)} be the parameter pack +@@ -1514,7 +1508,7 @@ Let \tcode{\placeholdernc{ELEMS-OF}(T)} be the parameter pack \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep \endhead \tcode{template}\br @@ -10023,7 +9852,7 @@ index 1fa9a9f2..925356e2 100644 \tcode{T} and \tcode{U} name the same type with the same cv-qualifications & \\ \rowsep \indexlibraryglobal{is_base_of}% -@@ -1971,7 +1965,7 @@ type to another following some predefined rule. +@@ -1718,7 +1712,7 @@ type to another following some predefined rule. \pnum Each of the templates in \ref{meta.trans} shall be a @@ -10032,7 +9861,7 @@ index 1fa9a9f2..925356e2 100644 \rSec3[meta.trans.cv]{Const-volatile modifications} -@@ -2258,16 +2252,16 @@ perform other modifications of a type. +@@ -2005,16 +1999,16 @@ perform other modifications of a type. \tcode{template\br struct \libglobal{remove_cvref};} & The member typedef \tcode{type} denotes @@ -10054,7 +9883,7 @@ index 1fa9a9f2..925356e2 100644 \begin{tailnote} This behavior is similar to the lvalue-to-rvalue\iref{conv.lval}, array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} -@@ -2373,7 +2367,7 @@ argument passing. +@@ -2120,7 +2114,7 @@ argument passing. \tcode{template} \tcode{struct \libglobal{unwrap_reference};} & If \tcode{T} is @@ -10063,7 +9892,7 @@ index 1fa9a9f2..925356e2 100644 the member typedef \tcode{type} of \tcode{unwrap_reference} denotes \tcode{X\&}, otherwise \tcode{type} denotes \tcode{T}. \\ \rowsep -@@ -2381,7 +2375,7 @@ argument passing. +@@ -2128,7 +2122,7 @@ argument passing. \tcode{template} \tcode{\libglobal{unwrap_ref_decay};} & The member typedef \tcode{type} of \tcode{unwrap_ref_decay} @@ -10072,7 +9901,7 @@ index 1fa9a9f2..925356e2 100644 \end{libreqtab2a} \pnum -@@ -2399,7 +2393,7 @@ when the header \tcode{}\iref{functional.syn} is included. +@@ -2146,7 +2140,7 @@ when the header \tcode{}\iref{functional.syn} is included. Let: \begin{itemize} \item \tcode{\placeholdernc{CREF}(A)} be @@ -10081,7 +9910,7 @@ index 1fa9a9f2..925356e2 100644 \item \tcode{\placeholdernc{XREF}(A)} denote a unary alias template \tcode{T} such that \tcode{T} denotes the same type as \tcode{U} with the addition of \tcode{A}'s cv and reference qualifiers, for a non-reference cv-unqualified -@@ -2424,15 +2418,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: +@@ -2171,15 +2165,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: \placeholdernc{COPYCV}(\brk{}Y, X) \&)} if that type exists and is a reference type. \item Otherwise, let \tcode{C} be @@ -10100,7 +9929,7 @@ index 1fa9a9f2..925356e2 100644 \tcode{true}, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is \tcode{D}. \item Otherwise, if \tcode{A} is an lvalue reference and \tcode{B} is an rvalue reference, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is -@@ -2731,7 +2725,7 @@ template struct negation : @\seebelow@ { }; +@@ -2478,7 +2472,7 @@ template struct negation : @\seebelow@ { }; The class template \tcode{negation} forms the logical negation of its template type argument. The type \tcode{negation} @@ -10110,7 +9939,7 @@ index 1fa9a9f2..925356e2 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index bce0a4ae..10fdf6e7 100644 +index c9be3735..9ce34899 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul @@ -10128,7 +9957,7 @@ index bce0a4ae..10fdf6e7 100644 requirements\iref{utility.arg.requirements}. \begin{footnote} In other words, value types. -@@ -2025,8 +2025,8 @@ according to \ref{strings} and \ref{input.output}. +@@ -2023,8 +2023,8 @@ according to \ref{strings} and \ref{input.output}. \pnum \tcode{E} shall meet the @@ -10139,7 +9968,7 @@ index bce0a4ae..10fdf6e7 100644 These operations shall each be of complexity no worse than \bigoh{\text{size of state}}. -@@ -2454,8 +2454,8 @@ according to \ref{strings} and \ref{input.output}. +@@ -2452,8 +2452,8 @@ according to \ref{strings} and \ref{input.output}. \pnum \tcode{D} shall meet the @@ -10150,7 +9979,7 @@ index bce0a4ae..10fdf6e7 100644 \pnum The sequence of numbers -@@ -2486,10 +2486,10 @@ for convenience of exposition only. +@@ -2484,10 +2484,10 @@ for convenience of exposition only. \pnum \tcode{P} shall meet the @@ -10164,7 +9993,7 @@ index bce0a4ae..10fdf6e7 100644 \pnum For each of the constructors of \tcode{D} -@@ -4233,7 +4233,7 @@ template +@@ -4231,7 +4231,7 @@ template \pnum \expects \tcode{InputIterator} meets the @@ -10173,7 +10002,7 @@ index bce0a4ae..10fdf6e7 100644 \pnum \effects -@@ -4260,7 +4260,7 @@ template +@@ -4258,7 +4258,7 @@ template \pnum \expects \tcode{RandomAccessIterator} meets the @@ -10182,7 +10011,7 @@ index bce0a4ae..10fdf6e7 100644 and the requirements of a mutable iterator. \pnum -@@ -4373,7 +4373,7 @@ template +@@ -4371,7 +4371,7 @@ template \pnum \expects \tcode{OutputIterator} meets the @@ -10191,7 +10020,7 @@ index bce0a4ae..10fdf6e7 100644 \pnum \effects -@@ -6368,7 +6368,7 @@ double>} is \tcode{true}. +@@ -6366,7 +6366,7 @@ double>} is \tcode{true}. \pnum \expects \tcode{InputIterator} meets the @@ -10200,7 +10029,7 @@ index bce0a4ae..10fdf6e7 100644 If \tcode{firstW == lastW}, let $n = 1$ and $w_0 = 1$. Otherwise, -@@ -6566,7 +6566,7 @@ are \tcode{true}. +@@ -6564,7 +6564,7 @@ are \tcode{true}. \expects \tcode{InputIteratorB} and \tcode{InputIteratorW} each meet the @@ -10209,7 +10038,7 @@ index bce0a4ae..10fdf6e7 100644 If \tcode{firstB == lastB} or \tcode{++firstB == lastB}, let $n = 1$, -@@ -6801,7 +6801,7 @@ are \tcode{true}. +@@ -6799,7 +6799,7 @@ are \tcode{true}. \expects \tcode{InputIteratorB} and \tcode{InputIteratorW} each meet the @@ -10219,7 +10048,7 @@ index bce0a4ae..10fdf6e7 100644 or \tcode{++firstB == lastB}, let $n = 1$, diff --git a/source/strings.tex b/source/strings.tex -index 749c23d9..8aeb51c9 100644 +index e9c20ec8..9f0d3f9c 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -238,10 +238,10 @@ using state_type = @\seebelow@; @@ -10247,27 +10076,10 @@ index 749c23d9..8aeb51c9 100644 meets the constexpr iterator requirements\iref{iterator.requirements.general}, whose \tcode{value_type} is the template parameter \tcode{charT}. diff --git a/source/support.tex b/source/support.tex -index f7399362..7e61389d 100644 +index 90a3972a..5d4fbbf8 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -3624,11 +3624,11 @@ namespace std { - - \pnum - The type \tcode{source_location} meets the --\oldconcept{DefaultConstructible}, --\oldconcept{CopyConstructible}, --\oldconcept{Copy\-Assignable}, --\oldconcept{Swappable}, and --\oldconcept{Destructible} -+\oldconceptref{DefaultConstructible}, -+\oldconceptref{CopyConstructible}, -+\oldconceptref{CopyAssignable}, -+\oldconceptref{Swappable}, and -+\oldconceptref{Destructible} - requirements\iref{utility.arg.requirements,swappable.requirements}. - All of the following conditions are \tcode{true}: - \begin{itemize} -@@ -4090,7 +4090,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. +@@ -4102,7 +4102,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. \pnum \tcode{exception_ptr} meets the requirements of @@ -10276,7 +10088,7 @@ index f7399362..7e61389d 100644 \pnum Two non-null values of type \tcode{exception_ptr} are equivalent and compare equal if and -@@ -4317,7 +4317,7 @@ Let \tcode{U} be \tcode{decay_t}. +@@ -4326,7 +4326,7 @@ Let \tcode{U} be \tcode{decay_t}. \pnum \expects @@ -10286,7 +10098,7 @@ index f7399362..7e61389d 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index 976fa0b3..6a73b71a 100644 +index 0e8242c0..98143cb4 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10339,7 +10151,7 @@ index 976fa0b3..6a73b71a 100644 +A type \tcode{L} meets the \defnoldconcept{TimedLockable} requirements if it meets the \oldconceptref{Lockable} requirements and the following expressions are well-formed and have the specified semantics (\tcode{m} denotes a value of type \tcode{L}, \tcode{rel_time} denotes a value of a - specialization of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} denotes a value + specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes a value @@ -397,7 +397,7 @@ Nothing. \pnum @@ -10349,7 +10161,7 @@ index 976fa0b3..6a73b71a 100644 the following expressions are well-formed, have type \tcode{bool}, and have the specified semantics (\tcode{m} denotes a value of type \tcode{L}, -@@ -4480,7 +4480,7 @@ namespace std { +@@ -4498,7 +4498,7 @@ namespace std { \indexlibraryglobal{atomic}% \pnum The template argument for \tcode{T} shall meet the @@ -10358,7 +10170,7 @@ index 976fa0b3..6a73b71a 100644 The program is ill-formed if any of \begin{itemize} \item \tcode{is_trivially_copyable_v}, -@@ -7304,11 +7304,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, +@@ -7326,11 +7326,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, They meet the requirements set out in \ref{thread.mutex.requirements.mutex}. In this description, \tcode{m} denotes an object of a mutex type. \begin{note} @@ -10372,16 +10184,16 @@ index 976fa0b3..6a73b71a 100644 If initialization of an object of a mutex type fails, an exception of type \tcode{system_error} is thrown. The mutex types are neither copyable nor movable. -@@ -7577,7 +7577,7 @@ specialization of \link{\tcode{duration}}{time.duration}, and \tcode{abs_time} d +@@ -7599,7 +7599,7 @@ specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} den object of a - specialization of \link{\tcode{time_point}}{time.point}. + specialization of \tcode{time_point}\iref{time.point}. \begin{note} -The timed mutex types meet the \oldconcept{TimedLockable} +The timed mutex types meet the \oldconceptref{TimedLockable} requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -7789,7 +7789,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally +@@ -7811,7 +7811,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally meet the requirements set out below. In this description, \tcode{m} denotes an object of a shared mutex type. \begin{note} @@ -10390,25 +10202,25 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.shared}. \end{note} -@@ -7966,7 +7966,7 @@ meet the requirements set out below. In this description, +@@ -7988,7 +7988,7 @@ meet the requirements set out below. In this description, \tcode{abs_time} denotes an object of a specialization of - \link{\tcode{time_point}}{time.point}. + \tcode{time_point}\iref{time.point}. \begin{note} -The shared timed mutex types meet the \oldconcept{SharedTimedLockable} +The shared timed mutex types meet the \oldconceptref{SharedTimedLockable} requirements\iref{thread.req.lockable.shared.timed}. \end{note} -@@ -8176,7 +8176,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable +@@ -8198,7 +8198,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable object throughout the \tcode{lock_guard} object's \deflink{lifetime}{basic.life}. The behavior of a program is undefined if the lockable object referenced by - \tcode{pm} does not exist for the entire lifetime of the \tcode{lock_guard} + \exposid{pm} does not exist for the entire lifetime of the \tcode{lock_guard} -object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} +object. The supplied \tcode{Mutex} type shall meet the \oldconceptref{BasicLockable} requirements\iref{thread.req.lockable.basic}. \indexlibraryctor{lock_guard}% -@@ -8255,12 +8255,12 @@ object. +@@ -8277,12 +8277,12 @@ object. If \tcode{sizeof...(MutexTypes)} is one, let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. \tcode{Mutex} @@ -10423,9 +10235,9 @@ index 976fa0b3..6a73b71a 100644 and there is no member \tcode{mutex_type}. \end{itemize} -@@ -8375,17 +8375,17 @@ copyable but are movable. The behavior of a program is undefined if the containe - \tcode{pm} is not null and the lockable object pointed - to by \tcode{pm} does not exist for the entire remaining +@@ -8397,17 +8397,17 @@ copyable but are movable. The behavior of a program is undefined if the containe + \exposid{pm} is not null and the lockable object pointed + to by \exposid{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied -\tcode{Mutex} type shall meet the \oldconcept{BasicLockable} +\tcode{Mutex} type shall meet the \oldconceptref{BasicLockable} @@ -10447,7 +10259,7 @@ index 976fa0b3..6a73b71a 100644 \end{note} \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} -@@ -8435,7 +8435,7 @@ unique_lock(mutex_type& m, try_to_lock_t); +@@ -8457,7 +8457,7 @@ unique_lock(mutex_type& m, try_to_lock_t); \begin{itemdescr} \pnum \expects @@ -10456,7 +10268,7 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8477,7 +8477,7 @@ template +@@ -8499,7 +8499,7 @@ template \pnum \expects The supplied \tcode{Mutex} type meets the @@ -10465,7 +10277,7 @@ index 976fa0b3..6a73b71a 100644 \pnum \effects -@@ -8499,7 +8499,7 @@ template +@@ -8521,7 +8521,7 @@ template \begin{itemdescr} \pnum \expects @@ -10474,7 +10286,7 @@ index 976fa0b3..6a73b71a 100644 \pnum \effects -@@ -8586,7 +8586,7 @@ bool try_lock(); +@@ -8608,7 +8608,7 @@ bool try_lock(); \begin{itemdescr} \pnum \expects @@ -10483,7 +10295,7 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8625,7 +8625,7 @@ template +@@ -8647,7 +8647,7 @@ template \begin{itemdescr} \pnum \expects @@ -10492,7 +10304,7 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.timed}. \pnum -@@ -8664,7 +8664,7 @@ template +@@ -8686,7 +8686,7 @@ template \begin{itemdescr} \pnum \expects @@ -10501,9 +10313,9 @@ index 976fa0b3..6a73b71a 100644 \pnum \effects -@@ -8857,16 +8857,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type - is undefined if the contained pointer \tcode{pm} is not null and the lockable - object pointed to by \tcode{pm} does not exist for the entire remaining +@@ -8879,16 +8879,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type + is undefined if the contained pointer \exposid{pm} is not null and the lockable + object pointed to by \exposid{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied -\tcode{Mutex} type shall meet the \oldconcept{SharedLockable} +\tcode{Mutex} type shall meet the \oldconceptref{SharedLockable} @@ -10522,7 +10334,7 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -8951,7 +8951,7 @@ template +@@ -8973,7 +8973,7 @@ template \begin{itemdescr} \pnum \expects @@ -10531,7 +10343,7 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8975,7 +8975,7 @@ template +@@ -8997,7 +8997,7 @@ template \begin{itemdescr} \pnum \expects @@ -10540,7 +10352,7 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9100,7 +9100,7 @@ template +@@ -9122,7 +9122,7 @@ template \begin{itemdescr} \pnum \expects @@ -10549,7 +10361,7 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9140,7 +9140,7 @@ template +@@ -9162,7 +9162,7 @@ template \begin{itemdescr} \pnum \expects @@ -10558,7 +10370,7 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9279,7 +9279,7 @@ template int try_lock(L1&, L2&, L3&...); +@@ -9301,7 +9301,7 @@ template int try_lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10567,7 +10379,7 @@ index 976fa0b3..6a73b71a 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9308,7 +9308,7 @@ template void lock(L1&, L2&, L3&...); +@@ -9330,7 +9330,7 @@ template void lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10576,7 +10388,7 @@ index 976fa0b3..6a73b71a 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9977,7 +9977,7 @@ This can happen if the re-locking of the mutex throws an exception. +@@ -10009,7 +10009,7 @@ This can happen if the re-locking of the mutex throws an exception. \pnum In \ref{thread.condition.condvarany}, template arguments for template parameters named \tcode{Lock} @@ -10585,7 +10397,7 @@ index 976fa0b3..6a73b71a 100644 requirements\iref{thread.req.lockable.basic}. \begin{note} All of the standard -@@ -10915,24 +10915,24 @@ execute atomically. +@@ -10946,24 +10946,24 @@ execute atomically. \pnum \tcode{CompletionFunction} shall meet the @@ -10602,7 +10414,7 @@ index 976fa0b3..6a73b71a 100644 -it meets the \oldconcept{DefaultConstructible} +it meets the \oldconceptref{DefaultConstructible} requirements (\tref{cpp17.defaultconstructible}) and - \tcode{completion()} has no effects. + \tcode{\exposid{completion}()} has no effects. \pnum \tcode{barrier::arrival_token} is an unspecified type, @@ -10616,7 +10428,7 @@ index 976fa0b3..6a73b71a 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -11427,7 +11427,7 @@ namespace std { +@@ -11458,7 +11458,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10625,7 +10437,7 @@ index 976fa0b3..6a73b71a 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -11759,7 +11759,7 @@ namespace std { +@@ -11790,7 +11790,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10634,7 +10446,7 @@ index 976fa0b3..6a73b71a 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -12065,7 +12065,7 @@ namespace std { +@@ -12096,7 +12096,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10643,7 +10455,7 @@ index 976fa0b3..6a73b71a 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -13003,7 +13003,7 @@ the expression \tcode{d(ptr)} is valid. +@@ -13034,7 +13034,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -10652,7 +10464,7 @@ index 976fa0b3..6a73b71a 100644 \pnum If \tcode{D} is trivially copyable, -@@ -13061,7 +13061,7 @@ namespace std { +@@ -13092,7 +13092,7 @@ namespace std { \pnum This class meets the requirements of @@ -10661,7 +10473,7 @@ index 976fa0b3..6a73b71a 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -13209,8 +13209,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -13240,8 +13240,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -10672,7 +10484,7 @@ index 976fa0b3..6a73b71a 100644 \pnum \effects -@@ -13402,7 +13402,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -13433,7 +13433,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -10682,7 +10494,7 @@ index 976fa0b3..6a73b71a 100644 \pnum \tcode{T} may be an incomplete type. diff --git a/source/time.tex b/source/time.tex -index 2d6f9c27..5f3994d7 100644 +index 6b4a0b79..5e264ea3 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1033,13 +1033,13 @@ SI definition is a measure of the quality of implementation. @@ -10723,7 +10535,7 @@ index 2d6f9c27..5f3994d7 100644 unless it meets all of the following conditions: \begin{itemize} \item the \grammarterm{qualified-id}s -@@ -2630,7 +2630,7 @@ template +@@ -2633,7 +2633,7 @@ template \pnum The types defined in \ref{time.clock} meet the @@ -10732,7 +10544,7 @@ index 2d6f9c27..5f3994d7 100644 requirements\iref{time.clock.req} unless otherwise specified. -@@ -2848,7 +2848,7 @@ which is \tcode{10'957 * 86'400s + 22s}. \\ +@@ -2851,7 +2851,7 @@ which is \tcode{10'957 * 86'400s + 22s}. \\ \end{example} \pnum @@ -10741,7 +10553,7 @@ index 2d6f9c27..5f3994d7 100644 unless the implementation can guarantee that \tcode{utc_clock::now()} does not propagate an exception. \begin{note} -@@ -3067,7 +3067,7 @@ so 2000-01-01 00:00:00 UTC is equivalent to 2000-01-01 00:00:32 TAI +@@ -3070,7 +3070,7 @@ so 2000-01-01 00:00:00 UTC is equivalent to 2000-01-01 00:00:32 TAI (22s plus the initial 10s offset). \pnum @@ -10750,7 +10562,7 @@ index 2d6f9c27..5f3994d7 100644 unless the implementation can guarantee that \tcode{tai_clock::now()} does not propagate an exception. \begin{note} -@@ -3229,7 +3229,7 @@ GPS is behind TAI by 19s due to the 10s offset between 1958 and 1970 +@@ -3232,7 +3232,7 @@ GPS is behind TAI by 19s due to the 10s offset between 1958 and 1970 and the additional 9 leap seconds inserted between 1970 and 1980. \pnum @@ -10759,7 +10571,7 @@ index 2d6f9c27..5f3994d7 100644 unless the implementation can guarantee that \tcode{gps_clock::now()} does not propagate an exception. \begin{note} -@@ -3366,7 +3366,7 @@ namespace std::chrono { +@@ -3369,7 +3369,7 @@ namespace std::chrono { \pnum \tcode{file_clock} is an alias for a type @@ -10768,7 +10580,7 @@ index 2d6f9c27..5f3994d7 100644 using a signed arithmetic type for \tcode{file_clock::rep}. \tcode{file_clock} is used to create the \tcode{time_point} system used for \tcode{file_time_type}\iref{filesystems}. -@@ -3973,8 +3973,8 @@ It normally holds values in the range 1 to 31, +@@ -3976,8 +3976,8 @@ It normally holds values in the range 1 to 31, but may hold non-negative values outside this range. It can be constructed with any \tcode{unsigned} value, which will be subsequently truncated to fit into \tcode{day}'s unspecified internal storage. @@ -10779,7 +10591,7 @@ index 2d6f9c27..5f3994d7 100644 and participates in basic arithmetic with \tcode{days} objects, which represent a difference between two \tcode{day} objects. -@@ -4266,8 +4266,8 @@ It normally holds values in the range 1 to 12, +@@ -4269,8 +4269,8 @@ It normally holds values in the range 1 to 12, but may hold non-negative values outside this range. It can be constructed with any \tcode{unsigned} value, which will be subsequently truncated to fit into \tcode{month}'s unspecified internal storage. @@ -10790,7 +10602,7 @@ index 2d6f9c27..5f3994d7 100644 and participates in basic arithmetic with \tcode{months} objects, which represent a difference between two \tcode{month} objects. -@@ -4576,8 +4576,8 @@ namespace std::chrono { +@@ -4579,8 +4579,8 @@ namespace std::chrono { It can represent values in the range \crange{min()}{max()}. It can be constructed with any \tcode{int} value, which will be subsequently truncated to fit into \tcode{year}'s unspecified internal storage. @@ -10801,7 +10613,7 @@ index 2d6f9c27..5f3994d7 100644 and participates in basic arithmetic with \tcode{years} objects, which represent a difference between two \tcode{year} objects. -@@ -4931,10 +4931,10 @@ corresponding to Sunday through Saturday, but +@@ -4934,10 +4934,10 @@ corresponding to Sunday through Saturday, but it may hold non-negative values outside this range. It can be constructed with any \tcode{unsigned} value, which will be subsequently truncated to fit into \tcode{weekday}'s unspecified internal storage. @@ -10814,7 +10626,7 @@ index 2d6f9c27..5f3994d7 100644 because there is no universal consensus on which day is the first day of the week. \tcode{weekday}'s arithmetic operations treat the days of the week as a circular range, with no beginning and no end. -@@ -5514,8 +5514,8 @@ namespace std::chrono { +@@ -5517,8 +5517,8 @@ namespace std::chrono { \pnum \tcode{month_day} represents a specific day of a specific month, but with an unspecified year. @@ -10825,7 +10637,7 @@ index 2d6f9c27..5f3994d7 100644 \pnum \tcode{month_day} is a trivially copyable and standard-layout class type. -@@ -6015,8 +6015,8 @@ namespace std::chrono { +@@ -6018,8 +6018,8 @@ namespace std::chrono { \tcode{year_month} represents a specific month of a specific year, but with an unspecified day. \tcode{year_month} is a field-based time point with a resolution of \tcode{months}. @@ -10836,7 +10648,7 @@ index 2d6f9c27..5f3994d7 100644 \pnum \tcode{year_month} is a trivially copyable and standard-layout class type. -@@ -6371,8 +6371,8 @@ but not \tcode{days}-oriented arithmetic. +@@ -6374,8 +6374,8 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -10847,7 +10659,7 @@ index 2d6f9c27..5f3994d7 100644 \pnum \tcode{year_month_day} is a trivially copyable and standard-layout class type. -@@ -6832,8 +6832,8 @@ but not \tcode{days}-oriented arithmetic. +@@ -6835,8 +6835,8 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -10858,7 +10670,7 @@ index 2d6f9c27..5f3994d7 100644 \pnum \tcode{year_month_day_last} is a trivially copyable and standard-layout class type. -@@ -7203,7 +7203,7 @@ but not \tcode{days}-oriented arithmetic. +@@ -7206,7 +7206,7 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -10867,7 +10679,7 @@ index 2d6f9c27..5f3994d7 100644 \pnum \tcode{year_month_weekday} is a trivially copyable and standard-layout class type. -@@ -7596,7 +7596,7 @@ but not \tcode{days}-oriented arithmetic. +@@ -7599,7 +7599,7 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -10876,7 +10688,7 @@ index 2d6f9c27..5f3994d7 100644 \pnum \tcode{year_month_weekday_last} is a trivially copyable and standard-layout class type. -@@ -8849,7 +8849,7 @@ The \tcode{tzdb_list} object contains a list of \tcode{tzdb} objects. +@@ -8852,7 +8852,7 @@ The \tcode{tzdb_list} object contains a list of \tcode{tzdb} objects. \pnum \tcode{tzdb_list::const_iterator} is a constant iterator @@ -10885,7 +10697,7 @@ index 2d6f9c27..5f3994d7 100644 and has a value type of \tcode{tzdb}. \indexlibrarymember{front}{tzdb_list}% -@@ -11560,7 +11560,7 @@ template<> struct hash; +@@ -11576,7 +11576,7 @@ template<> struct hash; The specializations are enabled\iref{unord.hash}. \begin{note} All the \tcode{hash} specializations listed above meet the @@ -10895,10 +10707,10 @@ index 2d6f9c27..5f3994d7 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index 530bb023..f1e23f45 100644 +index d463a05a..a8521ec6 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -270,9 +270,9 @@ template +@@ -277,9 +277,9 @@ template Type \tcode{T} meets the @@ -10910,7 +10722,7 @@ index 530bb023..f1e23f45 100644 requirements. \pnum -@@ -2155,7 +2155,7 @@ template +@@ -2458,7 +2458,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -10919,7 +10731,7 @@ index 530bb023..f1e23f45 100644 \pnum \effects -@@ -2777,7 +2777,7 @@ template struct tuple_size; +@@ -3080,7 +3080,7 @@ template struct tuple_size; \pnum Except where specified otherwise, all specializations of \tcode{tuple_size} meet the @@ -10928,7 +10740,7 @@ index 530bb023..f1e23f45 100644 base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -2818,7 +2818,7 @@ template struct tuple_size; +@@ -3121,7 +3121,7 @@ template struct tuple_size; Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. If the expression \tcode{TS::value} is well-formed when treated as an \deflink{unevaluated operand}{expr.context}, then @@ -10937,7 +10749,7 @@ index 530bb023..f1e23f45 100644 with a base characteristic of \begin{codeblock} integral_constant -@@ -2856,7 +2856,7 @@ template struct tuple_element; +@@ -3159,7 +3159,7 @@ template struct tuple_element; \begin{itemdescr} \pnum Let \tcode{TE} denote \tcode{tuple_element_t} of the cv-unqualified type \tcode{T}. Then @@ -10946,7 +10758,7 @@ index 530bb023..f1e23f45 100644 with a member typedef \tcode{type} that names the type \tcode{const TE}. \pnum -@@ -3142,7 +3142,7 @@ template +@@ -3445,7 +3445,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -10955,7 +10767,7 @@ index 530bb023..f1e23f45 100644 \pnum \begin{note} -@@ -4038,7 +4038,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); +@@ -4341,7 +4341,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); \pnum \expects @@ -10964,7 +10776,7 @@ index 530bb023..f1e23f45 100644 \pnum \effects -@@ -4095,7 +4095,7 @@ using const_iterator = @\impdef@; +@@ -4398,7 +4398,7 @@ using const_iterator = @\impdef@; \pnum These types model \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, @@ -10973,7 +10785,7 @@ index 530bb023..f1e23f45 100644 meet the requirements for constexpr iterators\iref{iterator.requirements.general}, with value type \tcode{remove_cv_t}. The reference type is \tcode{T\&} for \tcode{iterator} and -@@ -5111,7 +5111,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5418,7 +5418,7 @@ template constexpr bool operator==(const optional& x, const The expression \tcode{*x == *y} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -10982,7 +10794,7 @@ index 530bb023..f1e23f45 100644 \end{note} \pnum -@@ -5302,7 +5302,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5609,7 +5609,7 @@ template constexpr bool operator==(const optional& x, const The expression \tcode{*x == v} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -10991,7 +10803,7 @@ index 530bb023..f1e23f45 100644 \end{note} \pnum -@@ -5857,7 +5857,7 @@ is nested within\iref{intro.object} the +@@ -6164,7 +6164,7 @@ is nested within\iref{intro.object} the \pnum All types in \tcode{Types} shall meet @@ -11000,7 +10812,7 @@ index 530bb023..f1e23f45 100644 \pnum A program that instantiates the definition of \tcode{variant} with -@@ -6539,7 +6539,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); +@@ -6857,7 +6857,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); \pnum \expects @@ -11009,7 +10821,7 @@ index 530bb023..f1e23f45 100644 \pnum \effects -@@ -6584,7 +6584,7 @@ template struct variant_size; +@@ -6902,7 +6902,7 @@ template struct variant_size; \begin{itemdescr} \pnum All specializations of \tcode{variant_size} meet the @@ -11018,7 +10830,7 @@ index 530bb023..f1e23f45 100644 with a base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -6597,7 +6597,7 @@ template struct variant_size; +@@ -6915,7 +6915,7 @@ template struct variant_size; \pnum Let \tcode{VS} denote \tcode{variant_size} of the cv-unqualified type \tcode{T}. Then each specialization of the template meets the @@ -11027,7 +10839,7 @@ index 530bb023..f1e23f45 100644 base characteristic of \tcode{integral_constant}. \end{itemdescr} -@@ -6617,7 +6617,7 @@ template struct variant_alternative; +@@ -6935,7 +6935,7 @@ template struct variant_alternative; \pnum Let \tcode{VA} denote \tcode{variant_alternative} of the cv-unqualified type \tcode{T}. Then each specialization of the template @@ -11036,7 +10848,7 @@ index 530bb023..f1e23f45 100644 member typedef \tcode{type} that names the type \tcode{const VA::type}. \end{itemdescr} -@@ -7348,7 +7348,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. +@@ -7666,7 +7666,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. \pnum \expects @@ -11045,7 +10857,7 @@ index 530bb023..f1e23f45 100644 \pnum \effects -@@ -7376,7 +7376,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7694,7 +7694,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11054,7 +10866,7 @@ index 530bb023..f1e23f45 100644 \pnum \effects -@@ -7409,7 +7409,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7727,7 +7727,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11063,7 +10875,7 @@ index 530bb023..f1e23f45 100644 \pnum \effects -@@ -7494,7 +7494,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7812,7 +7812,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11072,7 +10884,7 @@ index 530bb023..f1e23f45 100644 \pnum \effects -@@ -7529,7 +7529,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7847,7 +7847,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11081,7 +10893,7 @@ index 530bb023..f1e23f45 100644 \pnum \effects -@@ -7573,7 +7573,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7891,7 +7891,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11090,7 +10902,7 @@ index 530bb023..f1e23f45 100644 \pnum \effects -@@ -8279,9 +8279,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -8597,9 +8597,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum When \tcode{T} is not \cv{} \tcode{void}, it shall meet @@ -11102,7 +10914,7 @@ index 530bb023..f1e23f45 100644 \rSec3[expected.object.cons]{Constructors} -@@ -9521,7 +9521,7 @@ template friend constexpr bool operator==(const expected& x, const T2& +@@ -9861,7 +9861,7 @@ template friend constexpr bool operator==(const expected& x, const T2& The expression \tcode{*x == v} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -11111,7 +10923,7 @@ index 530bb023..f1e23f45 100644 \end{note} \pnum -@@ -9662,7 +9662,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -10002,7 +10002,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum \tcode{E} shall meet the requirements of @@ -11120,7 +10932,7 @@ index 530bb023..f1e23f45 100644 \rSec3[expected.void.cons]{Constructors} -@@ -11785,8 +11785,8 @@ is ill-formed. +@@ -12163,8 +12163,8 @@ is ill-formed. \indextext{call wrapper}% \indextext{call wrapper!simple}% \indextext{call wrapper!forwarding}% @@ -11131,7 +10943,7 @@ index 530bb023..f1e23f45 100644 An \defn{argument forwarding call wrapper} is a call wrapper that can be called with an arbitrary argument list and delivers the arguments to the target object as references. -@@ -11826,7 +11826,7 @@ with references as described in the corresponding forwarding steps. +@@ -12204,7 +12204,7 @@ with references as described in the corresponding forwarding steps. \pnum \label{term.simple.call.wrapper}% A \defn{simple call wrapper} is a perfect forwarding call wrapper that meets @@ -11140,7 +10952,7 @@ index 530bb023..f1e23f45 100644 and whose copy constructor, move constructor, and assignment operators are constexpr functions that do not throw exceptions. -@@ -11929,7 +11929,7 @@ namespace std { +@@ -12307,7 +12307,7 @@ namespace std { \end{codeblock} \pnum @@ -11149,7 +10961,7 @@ index 530bb023..f1e23f45 100644 around a reference to an object or function of type \tcode{T}. \pnum -@@ -13383,7 +13383,7 @@ is \tcode{true}. +@@ -13761,7 +13761,7 @@ is \tcode{true}. \pnum \expects @@ -11158,7 +10970,7 @@ index 530bb023..f1e23f45 100644 \pnum \returns -@@ -13469,10 +13469,10 @@ is \tcode{true}. +@@ -13847,10 +13847,10 @@ is \tcode{true}. \pnum \expects @@ -11171,7 +10983,7 @@ index 530bb023..f1e23f45 100644 \pnum \returns -@@ -13538,7 +13538,7 @@ then \tcode{f != nullptr} is \tcode{true}. +@@ -13916,7 +13916,7 @@ then \tcode{f != nullptr} is \tcode{true}. \pnum \expects For each $\tcode{T}_i$ in \tcode{BoundArgs}, @@ -11180,7 +10992,7 @@ index 530bb023..f1e23f45 100644 \pnum \returns -@@ -13583,7 +13583,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. +@@ -13962,7 +13962,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. \pnum Specializations of the \tcode{is_bind_expression} template shall meet @@ -11189,7 +11001,7 @@ index 530bb023..f1e23f45 100644 provides a definition that has a base characteristic of \tcode{true_type} if \tcode{T} is a type returned from \tcode{bind}, otherwise it has a base characteristic of \tcode{false_type}. -@@ -13619,7 +13619,7 @@ The function template \tcode{bind} uses +@@ -13998,7 +13998,7 @@ The function template \tcode{bind} uses \pnum Specializations of the \tcode{is_placeholder} template shall meet @@ -11198,7 +11010,7 @@ index 530bb023..f1e23f45 100644 provides a definition that has the base characteristic of \tcode{integral_constant} if \tcode{T} is the type of \tcode{std::placeholders::_\placeholder{J}}, otherwise it has a -@@ -13669,7 +13669,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> +@@ -14048,7 +14048,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> \pnum \expects \tcode{FD} and each $\tcode{TD}_i$ meet @@ -11207,7 +11019,7 @@ index 530bb023..f1e23f45 100644 \tcode{\placeholdernc{INVOKE}(fd, $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc$, $\tcode{w}_N$)}\iref{func.require} is a valid expression for some values $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc{}$, $\tcode{w}_N$, where -@@ -13705,8 +13705,8 @@ the state entities of \tcode{g}. +@@ -14084,8 +14084,8 @@ the state entities of \tcode{g}. \pnum \begin{note} If all of \tcode{FD} and $\tcode{TD}_i$ meet @@ -11218,7 +11030,7 @@ index 530bb023..f1e23f45 100644 \end{note} \end{itemdescr} -@@ -13775,13 +13775,13 @@ The number \tcode{\placeholder{M}} of placeholders is +@@ -14154,13 +14154,13 @@ The number \tcode{\placeholder{M}} of placeholders is \impldef{number of placeholders for bind expressions}. \pnum @@ -11235,7 +11047,7 @@ index 530bb023..f1e23f45 100644 but if so, their copy assignment operators are constexpr functions that do not throw exceptions. -@@ -14049,7 +14049,7 @@ Let \tcode{FD} be \tcode{decay_t}. +@@ -14430,7 +14430,7 @@ Let \tcode{FD} be \tcode{decay_t}. \pnum \expects @@ -11244,7 +11056,7 @@ index 530bb023..f1e23f45 100644 \pnum \ensures -@@ -14474,9 +14474,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14855,9 +14855,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11256,7 +11068,7 @@ index 530bb023..f1e23f45 100644 \pnum \ensures -@@ -14526,9 +14526,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14907,9 +14907,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11268,7 +11080,7 @@ index 530bb023..f1e23f45 100644 \pnum \ensures -@@ -14568,9 +14568,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14949,9 +14949,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11280,7 +11092,7 @@ index 530bb023..f1e23f45 100644 \pnum \ensures -@@ -14892,8 +14892,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -15273,8 +15273,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11291,7 +11103,7 @@ index 530bb023..f1e23f45 100644 \pnum \ensures -@@ -14948,8 +14948,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -15329,8 +15329,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11302,7 +11114,7 @@ index 530bb023..f1e23f45 100644 \pnum \ensures -@@ -14994,8 +14994,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -15375,8 +15375,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11313,7 +11125,7 @@ index 530bb023..f1e23f45 100644 \pnum \ensures -@@ -15512,7 +15512,7 @@ provided to the function call operator. +@@ -15937,7 +15937,7 @@ provided to the function call operator. \pnum Each specialization of a class template specified in \ref{func.search} @@ -11322,7 +11134,7 @@ index 530bb023..f1e23f45 100644 Template parameters named \begin{itemize} \item \tcode{ForwardIterator}, -@@ -15526,7 +15526,7 @@ Template parameters named +@@ -15951,7 +15951,7 @@ Template parameters named of templates specified in \ref{func.search} shall meet the same requirements and semantics as specified in \ref{algorithms.general}. @@ -11331,7 +11143,7 @@ index 530bb023..f1e23f45 100644 requirements (\tref{cpp17.hash}). \pnum -@@ -15635,9 +15635,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, +@@ -16060,9 +16060,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, \pnum \expects The value type of \tcode{RandomAccessIterator1} meets @@ -11344,7 +11156,7 @@ index 530bb023..f1e23f45 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15736,8 +15736,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, +@@ -16161,8 +16161,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, \begin{itemdescr} \pnum \expects @@ -11355,7 +11167,7 @@ index 530bb023..f1e23f45 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -15810,7 +15810,7 @@ as the default hash function. +@@ -16235,7 +16235,7 @@ as the default hash function. Each specialization of \tcode{hash} is either enabled or disabled, as described below. \begin{note} @@ -11364,7 +11176,7 @@ index 530bb023..f1e23f45 100644 disabled specializations do not. \end{note} Each header that declares the template \tcode{hash} -@@ -15837,17 +15837,17 @@ Disabled specializations of \tcode{hash} +@@ -16262,17 +16262,17 @@ Disabled specializations of \tcode{hash} are not function object types\iref{function.objects}. \begin{note} This means that the specialization of \tcode{hash} exists, but @@ -11391,28 +11203,27 @@ index 530bb023..f1e23f45 100644 2.43.0 -From 572bce7fa3719c510e17c9b289ae342980d00227 Mon Sep 17 00:00:00 2001 +From c18b462efcc14f654e972f99364c504f4863117f Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 Subject: [PATCH 09/10] Remove awkward \linebreaks. --- source/algorithms.tex | 4 ++-- - source/containers.tex | 40 ++++++++++++++++++++-------------------- - source/exec.tex | 12 ++++++------ + source/containers.tex | 38 +++++++++++++++++++------------------- + source/exec.tex | 8 ++++---- source/memory.tex | 6 +++--- source/meta.tex | 2 +- - source/numerics.tex | 4 ++-- source/ranges.tex | 38 +++++++++++++++++++------------------- source/threads.tex | 8 ++++---- source/utilities.tex | 8 ++++---- - 9 files changed, 61 insertions(+), 61 deletions(-) + 8 files changed, 56 insertions(+), 56 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 16604a18..645754f2 100644 +index 600c9685..e289b9b5 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -7080,7 +7080,7 @@ Let: +@@ -7073,7 +7073,7 @@ Let: \tcode{invoke(op, invoke(proj, *(first1 + (i - result))))} for unary transforms defined in namespace \tcode{ranges}; \item @@ -11421,7 +11232,7 @@ index 16604a18..645754f2 100644 for binary transforms defined in namespace \tcode{ranges}. \end{itemize} \end{itemize} -@@ -14217,7 +14217,7 @@ namespace ranges { +@@ -14212,7 +14212,7 @@ namespace ranges { \pnum \constraints \tcode{is_unbounded_array_v} is \tcode{false}. @@ -11431,7 +11242,7 @@ index 16604a18..645754f2 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index 8e93903a..4d27d6ad 100644 +index 1c6cb497..ace39839 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1461,7 +1461,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11478,7 +11289,7 @@ index 8e93903a..4d27d6ad 100644 \pnum \returns -@@ -10706,7 +10706,7 @@ template +@@ -10742,7 +10742,7 @@ template \pnum The expression \tcode{\exposid{is-vector-bool-reference}} is \tcode{true} @@ -11487,7 +11298,7 @@ index 8e93903a..4d27d6ad 100644 for some type \tcode{Alloc} and \tcode{vector} is not a program-defined specialization. \end{itemdescr} -@@ -12103,7 +12103,7 @@ there is no effect. +@@ -12124,7 +12124,7 @@ there is no effect. Otherwise, let \tcode{r} be \tcode{equal_range(k)}. Constructs an object \tcode{u} of type \tcode{value_type} with \tcode{piecewise_construct, forward_as_tuple(std::forward(k)), @@ -11496,7 +11307,7 @@ index 8e93903a..4d27d6ad 100644 If \tcode{equal_range(u.first) == r} is \tcode{false}, the behavior is undefined. Inserts \tcode{u} into \tcode{*this}. -@@ -17796,7 +17796,7 @@ template constexpr pair emplace(Args&&... args); +@@ -17817,7 +17817,7 @@ template constexpr pair emplace(Args&&... args); \pnum \effects Initializes an object \tcode{t} of type \tcode{pair} @@ -11505,7 +11316,7 @@ index 8e93903a..4d27d6ad 100644 if the map already contains an element whose key is equivalent to \tcode{t.first}, \tcode{*this} is unchanged. -@@ -18068,7 +18068,7 @@ template +@@ -18089,7 +18089,7 @@ template \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11514,7 +11325,7 @@ index 8e93903a..4d27d6ad 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18123,7 +18123,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. +@@ -18144,7 +18144,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11523,7 +11334,7 @@ index 8e93903a..4d27d6ad 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18753,14 +18753,14 @@ template +@@ -18774,14 +18774,14 @@ template \pnum \effects Equivalent to \tcode{flat_multimap(key_cont, mapped_cont)} and @@ -11576,7 +11387,7 @@ index 8e93903a..4d27d6ad 100644 would achieve this. \end{note} \end{itemdescr} -@@ -24091,13 +24091,13 @@ is representable as a value of type \tcode{index_type}. +@@ -24095,7 +24095,7 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -11585,14 +11396,7 @@ index 8e93903a..4d27d6ad 100644 all values \tcode{ext.extent($k$)} with $k$ in the range of \range{0}{\exposid{rank_} - 1} is representable as a value of type \tcode{index_type}. - \item - If \tcode{padding_value} is not equal to \tcode{dynamic_extent}, --\tcode{padding_value} equals \tcode{extents_type::\linebreak \exposid{index-cast}(pad)}. -+\tcode{padding_value} equals \tcode{extents_type::\exposid{index-cast}(pad)}. - \end{itemize} - - \pnum -@@ -24170,7 +24170,7 @@ template +@@ -24174,7 +24174,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11601,7 +11405,7 @@ index 8e93903a..4d27d6ad 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -24245,7 +24245,7 @@ is \tcode{true}. +@@ -24249,7 +24249,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11611,28 +11415,19 @@ index 8e93903a..4d27d6ad 100644 @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) diff --git a/source/exec.tex b/source/exec.tex -index 000fe37d..4a9cbe26 100644 +index 9a2154a7..81623295 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -3292,7 +3292,7 @@ except that \tcode{sch} is evaluated only once. - Let \tcode{out_sndr} and \tcode{env} be subexpressions - such that \tcode{OutSndr} is \tcode{decltype((out_sndr))}. - If \tcode{\exposconcept{sender-for}} is \tcode{false}, --then the expressions \tcode{starts_on.transform_env(out_sndr, env)} and\linebreak -+then the expressions \tcode{starts_on.transform_env(out_sndr, env)} and - \tcode{starts_on.transform_sender(out_sndr, env)} are ill-formed; otherwise - \begin{itemize} - \item -@@ -3672,7 +3672,7 @@ except that \tcode{sndr} is evaluated only once. +@@ -3915,7 +3915,7 @@ otherwise, it is expression-equivalent to \pnum Let \tcode{out_sndr} and \tcode{env} be subexpressions, let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and -let \tcode{Env} be \tcode{decltype((\linebreak env))}. +let \tcode{Env} be \tcode{decltype((env))}. If \tcode{\exposconcept{sender-for}} is \tcode{false}, - then the expressions \tcode{on.transform_env(out_sndr, env)} and - \tcode{on.transform_sender(out_sndr, env)} are ill-formed. -@@ -3814,7 +3814,7 @@ Let the expression \exposid{then-cpo} be one of + then the expression \tcode{on.transform_sender(out_sndr, env)} is ill-formed. + +@@ -4020,7 +4020,7 @@ Let the expression \exposid{then-cpo} be one of For subexpressions \tcode{sndr} and \tcode{f}, if \tcode{decltype((sndr))} does not satisfy \libconcept{sender}, or \tcode{decltype((f))} does not satisfy \exposconcept{movable-value}, @@ -11641,16 +11436,7 @@ index 000fe37d..4a9cbe26 100644 \pnum Otherwise, -@@ -4115,7 +4115,7 @@ is initialized with a callable object equivalent to the following: - Let \tcode{sndr} and \tcode{env} be subexpressions, and - let \tcode{Sndr} be \tcode{decltype((sndr))}. - If --\tcode{\exposconcept{sender-for}>} -+\tcode{\exposconcept{sender-for}>} - is \tcode{false}, - then the expression \tcode{\exposid{let-cpo}.transform_env(sndr, env)} - is ill-formed. -@@ -4756,7 +4756,7 @@ try { +@@ -4983,7 +4983,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -11659,20 +11445,20 @@ index 000fe37d..4a9cbe26 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -5787,7 +5787,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. +@@ -6153,7 +6153,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. \pnum For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. --If \tcode{\libconcept{sender_to}>} -+If \tcode{\libconcept{sender_to}>} +-If \tcode{\exposconcept{sender-to}>} ++If \tcode{\exposconcept{sender-to}>} is \tcode{false}, the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: diff --git a/source/memory.tex b/source/memory.tex -index b7efaa69..2974c94e 100644 +index 2dea2cc5..e1572fe6 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1245,7 +1245,7 @@ A \tcode{tuple} value determined as follows: +@@ -1281,7 +1281,7 @@ A \tcode{tuple} value determined as follows: \begin{itemize} \item If \tcode{uses_allocator_v, Alloc>} is \tcode{false} and @@ -11681,7 +11467,7 @@ index b7efaa69..2974c94e 100644 return \tcode{forward_as_tuple(std::forward(args)...)}. \item Otherwise, if \tcode{uses_allocator_v, Alloc>} is \tcode{true} and -@@ -4206,7 +4206,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje +@@ -4246,7 +4246,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje the allocator \tcode{a} passed to \tcode{allocate_shared}. \item When a (sub)object of non-array type \tcode{U} is initialized by @@ -11690,7 +11476,7 @@ index b7efaa69..2974c94e 100644 \tcode{allocate_shared_for_overwrite}, it is initialized via the expression \tcode{::new(pv) U}, where \tcode{pv} has type \tcode{void*} and -@@ -5441,7 +5441,7 @@ if (p) { +@@ -5481,7 +5481,7 @@ if (p) { \end{codeblock} if the expression \tcode{s.reset(static_cast(p), std::forward(args)...)} @@ -11700,10 +11486,10 @@ index b7efaa69..2974c94e 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index 925356e2..f933e848 100644 +index 64dc0929..99eecfb1 100644 --- a/source/meta.tex +++ b/source/meta.tex -@@ -2526,7 +2526,7 @@ present as follows: +@@ -2273,7 +2273,7 @@ present as follows: \item Let \tcode{R} be \tcode{\placeholdernc{COMMON-REF}(T1, T2)}. If \tcode{T1} and \tcode{T2} are reference types, \tcode{R} is well-formed, and @@ -11712,30 +11498,8 @@ index 925356e2..f933e848 100644 then the member typedef \tcode{type} denotes \tcode{R}. \item Otherwise, if -diff --git a/source/numerics.tex b/source/numerics.tex -index 10fdf6e7..41deb6c1 100644 ---- a/source/numerics.tex -+++ b/source/numerics.tex -@@ -13822,7 +13822,7 @@ These functions correspond to the BLAS function \tcode{xNRM2}\supercite{blas1}. - a specialization of \tcode{complex}. - Let \tcode{a} be - \tcode{\exposid{abs-if-needed}(declval())}. --Then, \tcode{decltype(\linebreak init + a * a} is convertible to \tcode{Scalar}. -+Then, \tcode{decltype(init + a * a} is convertible to \tcode{Scalar}. - - \pnum - \returns -@@ -14023,7 +14023,7 @@ template())}. --Then, \tcode{decltype(\linebreak init + a * a)} -+Then, \tcode{decltype(init + a * a)} - is convertible to \tcode{Scalar}. - - \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 9fff6e28..3f999c75 100644 +index c339582a..b1943a7e 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -11756,7 +11520,7 @@ index 9fff6e28..3f999c75 100644 \tcode{make_from_tuple(std::move(bound_args))}. The behavior is undefined if \tcode{Bound} is not \tcode{unreachable_sentinel_t} and -@@ -5921,7 +5921,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} +@@ -5994,7 +5994,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} that models \libconcept{random_access_range} and \libconcept{sized_range}, then \tcode{iota_view(*ranges::begin(E), @@ -11765,7 +11529,7 @@ index 9fff6e28..3f999c75 100644 except that \tcode{E} is evaluated only once. \item -@@ -6402,7 +6402,7 @@ if \tcode{T} is +@@ -6475,7 +6475,7 @@ if \tcode{T} is a specialization of \tcode{subrange} that models \libconcept{random_access_range} and \libconcept{sized_range}, then @@ -11774,7 +11538,7 @@ index 9fff6e28..3f999c75 100644 \exposid{to-unsigned-like}(ranges::distance(E) - std::min(ranges::distance(E), F)))}, except that \tcode{E} and \tcode{F} are each evaluated only once. -@@ -7454,7 +7454,7 @@ Let \placeholder{OUTERC} denote +@@ -7527,7 +7527,7 @@ Let \placeholder{OUTERC} denote let \placeholder{INNERC} denote \tcode{iterator_traits<\exposid{InnerIter}>::iterator_category}, and let \placeholder{PATTERNC} denote @@ -11783,7 +11547,7 @@ index 9fff6e28..3f999c75 100644 \item If \begin{codeblock} -@@ -7963,7 +7963,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); +@@ -8038,7 +8038,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -11792,7 +11556,7 @@ index 9fff6e28..3f999c75 100644 \end{itemdescr} \rSec3[range.lazy.split.outer]{Class template \tcode{lazy_split_view::\exposid{outer-iterator}}} -@@ -8274,7 +8274,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: +@@ -8349,7 +8349,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: \begin{itemize} \item \tcode{forward_iterator_tag} if @@ -11801,7 +11565,7 @@ index 9fff6e28..3f999c75 100644 \tcode{\libconcept{derived_from}}; \item otherwise, \tcode{iterator_traits>::iterator_category}. \end{itemize} -@@ -8494,7 +8494,7 @@ constexpr explicit split_view(R&& r, range_value_t e); +@@ -8569,7 +8569,7 @@ constexpr explicit split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -11810,7 +11574,7 @@ index 9fff6e28..3f999c75 100644 \end{itemdescr} \indexlibrarymember{begin}{split_view} -@@ -9060,7 +9060,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. +@@ -9158,7 +9158,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. \item Otherwise, if \tcode{\exposconcept{all-forward}} is modeled, @@ -11819,7 +11583,7 @@ index 9fff6e28..3f999c75 100644 \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} -@@ -9086,14 +9086,14 @@ let \tcode{Cs} denote the pack of types +@@ -9184,14 +9184,14 @@ let \tcode{Cs} denote the pack of types \begin{itemize} \item If @@ -11837,7 +11601,7 @@ index 9fff6e28..3f999c75 100644 \item Otherwise, if \tcode{(\libconcept{derived_from} \&\& ...)} -@@ -9545,11 +9545,11 @@ Let +@@ -9643,11 +9643,11 @@ Let %FIXME This is hard to parse. If \tcode{$i_\tcode{x}$ > $i_\tcode{y}$}, let \tcode{$d_\tcode{y}$} be @@ -11852,7 +11616,7 @@ index 9fff6e28..3f999c75 100644 for every integer \tcode{$i$} in the range \range{$i_\tcode{y}$ + 1}{$i_\tcode{x}$} if there is any, and -@@ -9592,7 +9592,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul +@@ -9690,7 +9690,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul Let \tcode{$i_\tcode{x}$} denote \tcode{x.\exposid{it_}.index()}, \tcode{$d_\tcode{x}$} be @@ -11861,7 +11625,7 @@ index 9fff6e28..3f999c75 100644 Let \tcode{$s$} denote the sum of the sizes of all the ranges \tcode{std::get<$i$>(x.\exposid{parent_}->\exposid{views_})} for every integer \tcode{$i$} in the range -@@ -9749,7 +9749,7 @@ is expression-equivalent to: +@@ -9847,7 +9847,7 @@ is expression-equivalent to: \begin{itemize} \item If \tcode{T} models \libconcept{contiguous_iterator}, @@ -11870,7 +11634,7 @@ index 9fff6e28..3f999c75 100644 \item Otherwise, if \tcode{T} models \libconcept{random_access_iterator}, -@@ -13455,7 +13455,7 @@ is defined as follows: +@@ -13556,7 +13556,7 @@ is defined as follows: \item If \tcode{invoke_result_t<\exposid{maybe-const}\&, \exposid{REPEAT}(range_reference_t<\exposid{Base}>, N)...>} @@ -11879,7 +11643,7 @@ index 9fff6e28..3f999c75 100644 \tcode{iterator_category} denotes \tcode{input_iterator_tag}. \item Otherwise, let \tcode{C} denote the type -@@ -14566,7 +14566,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ +@@ -14667,7 +14667,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ \effects Initializes \exposid{current_} with \tcode{current}, \exposid{end_} with \tcode{ranges::end(parent->\exposid{base_})}, @@ -11889,10 +11653,10 @@ index 9fff6e28..3f999c75 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index 6a73b71a..d966dcbf 100644 +index 98143cb4..f00c8ecd 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -3480,7 +3480,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, +@@ -3492,7 +3492,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11901,7 +11665,7 @@ index 6a73b71a..d966dcbf 100644 \pnum \effects -@@ -4773,7 +4773,7 @@ For the \tcode{volatile} overload of this function, +@@ -4791,7 +4791,7 @@ For the \tcode{volatile} overload of this function, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11910,7 +11674,7 @@ index 6a73b71a..d966dcbf 100644 \pnum \effects -@@ -6284,7 +6284,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de +@@ -6305,7 +6305,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11919,7 +11683,7 @@ index 6a73b71a..d966dcbf 100644 \pnum \effects -@@ -6600,7 +6600,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire +@@ -6621,7 +6621,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11929,10 +11693,10 @@ index 6a73b71a..d966dcbf 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index f1e23f45..c980a039 100644 +index a8521ec6..6c5b1c0a 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -2078,7 +2078,7 @@ equals \tcode{tuple_size_v>}, +@@ -2381,7 +2381,7 @@ equals \tcode{tuple_size_v>}, \item \tcode{(is_constructible_v(std::forward(u)))> \&\& ...)} @@ -11941,7 +11705,7 @@ index f1e23f45..c980a039 100644 \tcode{true}, and \item -@@ -3096,7 +3096,7 @@ denotes a type. +@@ -3399,7 +3399,7 @@ denotes a type. \pnum \result The member \grammarterm{typedef-name} \tcode{type} denotes the type @@ -11950,7 +11714,7 @@ index f1e23f45..c980a039 100644 \end{itemdescr} \indexlibrarymember{common_type}{tuple}% -@@ -4103,7 +4103,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and +@@ -4406,7 +4406,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and \pnum All requirements on container iterators\iref{container.reqmts} apply to @@ -11959,7 +11723,7 @@ index f1e23f45..c980a039 100644 \pnum Any operation that initializes or destroys the contained value of an optional object invalidates all iterators into that object. -@@ -9107,7 +9107,7 @@ constexpr const T&& value() const &&; +@@ -9447,7 +9447,7 @@ constexpr const T&& value() const &&; \pnum \mandates \tcode{is_copy_constructible_v} is \tcode{true} and @@ -11972,7 +11736,7 @@ index f1e23f45..c980a039 100644 2.43.0 -From e3aff7dee9e37fa14bc6ac447bfa0dd135589ce3 Mon Sep 17 00:00:00 2001 +From 3ed0ca416602d5a04615520b7ba15ac52b872eec Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 25 Dec 2025 12:43:53 +0100 Subject: [PATCH 10/10] Use \literalterminal more. @@ -11982,10 +11746,10 @@ Subject: [PATCH 10/10] Use \literalterminal more. 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/source/lex.tex b/source/lex.tex -index 1b8befd1..809a61b2 100644 +index cf26fce7..e5a112a8 100644 --- a/source/lex.tex +++ b/source/lex.tex -@@ -446,7 +446,7 @@ for the respective Unicode encoding form. +@@ -449,7 +449,7 @@ for the respective Unicode encoding form. \begin{bnf} \nontermdef{named-universal-character}\br @@ -11994,7 +11758,7 @@ index 1b8befd1..809a61b2 100644 \end{bnf} \begin{bnf} -@@ -461,9 +461,9 @@ for the respective Unicode encoding form. +@@ -464,9 +464,9 @@ for the respective Unicode encoding form. \begin{bnf} \nontermdef{universal-character-name}\br @@ -12007,7 +11771,7 @@ index 1b8befd1..809a61b2 100644 named-universal-character \end{bnf} -@@ -1170,14 +1170,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1187,14 +1187,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{binary-literal}\br @@ -12025,7 +11789,7 @@ index 1b8befd1..809a61b2 100644 octal-literal \opt{\literalterminal{'}} octal-digit \end{bnf} -@@ -1194,22 +1194,22 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1211,22 +1211,22 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{binary-digit} \textnormal{one of}\br diff --git a/lastbuild.sig b/lastbuild.sig index 0435edfefb..71dffdea72 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ htmlgen ec08ed9082b71d87ffc970becceff11c5f8438b2 -draft 5c8fc4311ab8ec82f789e9eadf4cf39f47beabf9 -4d7f727a3cef73dafed68af528bc04371326b1f9 htmlgen.patch +draft 1e747bf358e4546e9661c6bcee01a1dd71d2186f +dd8cc3cb92b400f1a882557061648f8156b9a6cc htmlgen.patch From 122a149bfeaadb4dc2d4bde3fdcd3c7bf375e316 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Tue, 21 Apr 2026 22:01:03 -0500 Subject: [PATCH 26/36] Update --- all.patch | 32 ++++++++++++++++++++++++++++++++ gen_html_std.sh | 2 +- gh-pages | 2 +- lastbuild.sig | 1 + 4 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 all.patch diff --git a/all.patch b/all.patch new file mode 100644 index 0000000000..48f6b322bc --- /dev/null +++ b/all.patch @@ -0,0 +1,32 @@ +From 19e05f38d286ea889af4e0ef2bd2095ebc953d95 Mon Sep 17 00:00:00 2001 +From: timsong-cpp +Date: Tue, 21 Apr 2026 21:51:27 -0500 +Subject: [PATCH] [meta.define.static] Move misplaced \end{codeblock} + +--- + source/meta.tex | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/source/meta.tex b/source/meta.tex +index bfebda45..0f5f5a68 100644 +--- a/source/meta.tex ++++ b/source/meta.tex +@@ -3297,6 +3297,7 @@ if (meta::is_array_type(meta::type_of(array))) { + } else { + return span(static_cast(nullptr), 0); + } ++\end{codeblock} + + \pnum + \remarks +@@ -3304,7 +3305,6 @@ The second template argument of the returned \tcode{span} type + is \tcode{static_cast(ranges::size(r))} + if \tcode{ranges::size(r)} is a constant expression, and + \tcode{dynamic_extent} otherwise. +-\end{codeblock} + \end{itemdescr} + + \indexlibraryglobal{define_static_object}% +-- +2.43.0 + diff --git a/gen_html_std.sh b/gen_html_std.sh index 2e18c5df43..f9ec3bef8d 100755 --- a/gen_html_std.sh +++ b/gen_html_std.sh @@ -70,7 +70,7 @@ shopt -u extglob if [ -f ../../htmlgen.patch ] then -git apply -3 ../../htmlgen.patch +git apply ../../htmlgen.patch fi # Build the HTML diff --git a/gh-pages b/gh-pages index 0726db91c8..dbef578333 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 0726db91c826d1ca39f90d991585882467de554c +Subproject commit dbef57833321af757e32d1e3e9909357a8a6627b diff --git a/lastbuild.sig b/lastbuild.sig index 71dffdea72..1b1adfeb6a 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,4 @@ htmlgen ec08ed9082b71d87ffc970becceff11c5f8438b2 draft 1e747bf358e4546e9661c6bcee01a1dd71d2186f +3f412befff9815972eb9f8b3fd8aca2324c7d58b all.patch dd8cc3cb92b400f1a882557061648f8156b9a6cc htmlgen.patch From cf7475b20e81854227f77e77a87efe93aa4733be Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Mon, 27 Apr 2026 00:19:48 -0500 Subject: [PATCH 27/36] Update --- all.patch | 70 +++++++++----- cxxdraft-htmlgen | 2 +- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 239 +++++++++++++++++++++++------------------------ lastbuild.sig | 8 +- 6 files changed, 169 insertions(+), 154 deletions(-) diff --git a/all.patch b/all.patch index 48f6b322bc..e53ce4a822 100644 --- a/all.patch +++ b/all.patch @@ -1,32 +1,56 @@ -From 19e05f38d286ea889af4e0ef2bd2095ebc953d95 Mon Sep 17 00:00:00 2001 +From 19e297bce01ae69c917d0b8bfb5f1f1491cc8804 Mon Sep 17 00:00:00 2001 From: timsong-cpp -Date: Tue, 21 Apr 2026 21:51:27 -0500 -Subject: [PATCH] [meta.define.static] Move misplaced \end{codeblock} +Date: Sun, 26 Apr 2026 23:50:34 -0500 +Subject: [PATCH 1/2] [exec.get.compl.sched] Remove spurious @ --- - source/meta.tex | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + source/exec.tex | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -diff --git a/source/meta.tex b/source/meta.tex -index bfebda45..0f5f5a68 100644 ---- a/source/meta.tex -+++ b/source/meta.tex -@@ -3297,6 +3297,7 @@ if (meta::is_array_type(meta::type_of(array))) { - } else { - return span(static_cast(nullptr), 0); - } -+\end{codeblock} +diff --git a/source/exec.tex b/source/exec.tex +index f4e308d8..3f55bde5 100644 +--- a/source/exec.tex ++++ b/source/exec.tex +@@ -1130,11 +1130,11 @@ if the type of \tcode{q} satisfies \libconcept{scheduler} and + \tcode{envs} is not an empty pack, + except that \tcode{envs...} is evaluated. + \item +-Otherwise, \tcode{get_completion_scheduler<@\exposid{completion-fn-tag}@>(q, envs...)} ++Otherwise, \tcode{get_completion_scheduler<\exposid{completion-fn-tag}>(q, envs...)} + is ill-formed. + \end{itemize} + \mandates +-If \tcode{get_completion_scheduler<@\exposid{completion-fn-tag}@>(q, envs...)} ++If \tcode{get_completion_scheduler<\exposid{completion-fn-tag}>(q, envs...)} + is well-formed, + its type satisfies \libconcept{scheduler}. - \pnum - \remarks -@@ -3304,7 +3305,6 @@ The second template argument of the returned \tcode{span} type - is \tcode{static_cast(ranges::size(r))} - if \tcode{ranges::size(r)} is a constant expression, and - \tcode{dynamic_extent} otherwise. --\end{codeblock} +-- +2.43.0 + + +From a26a612a93ae3780426fe142c956bbd6f3794ad0 Mon Sep 17 00:00:00 2001 +From: timsong-cpp +Date: Mon, 27 Apr 2026 00:13:14 -0500 +Subject: [PATCH 2/2] [exec.spawn.future] Add missing @ + +--- + source/exec.tex | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/source/exec.tex b/source/exec.tex +index 3f55bde5..61e8379b 100644 +--- a/source/exec.tex ++++ b/source/exec.tex +@@ -5763,7 +5763,7 @@ std::move(this->@\exposid{result}@).visit( + }, std::move(tuple)); + } + }); +-@\exposid{destroy}(); ++@\exposid{destroy}@(); + \end{codeblock} + \end{itemize} \end{itemdescr} - - \indexlibraryglobal{define_static_object}% -- 2.43.0 diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen index ec08ed9082..63bc5929dc 160000 --- a/cxxdraft-htmlgen +++ b/cxxdraft-htmlgen @@ -1 +1 @@ -Subproject commit ec08ed9082b71d87ffc970becceff11c5f8438b2 +Subproject commit 63bc5929dc4fa6bb7448390ecec586c8069516b7 diff --git a/draft b/draft index 1e747bf358..d7c02a0f5c 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 1e747bf358e4546e9661c6bcee01a1dd71d2186f +Subproject commit d7c02a0f5c21cd235a0ed3921a30b19d75771f2e diff --git a/gh-pages b/gh-pages index dbef578333..4f35cfa20f 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit dbef57833321af757e32d1e3e9909357a8a6627b +Subproject commit 4f35cfa20fbbc1d2a58d86ca2d03a74faaf92765 diff --git a/htmlgen.patch b/htmlgen.patch index 9b4a155f5d..1f4662d816 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From b60946b63be3c75c4fd6750a7c4776a6bbe6824b Mon Sep 17 00:00:00 2001 +From 0dac0f606043fceca51128dc97ceb1977321e2ed Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout @@ -10,7 +10,7 @@ Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index 43122c5e..09feaca9 100644 +index cf9f4d86..1e8fe13a 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -342,7 +342,7 @@ Given @@ -59,7 +59,7 @@ index 43122c5e..09feaca9 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index ea8b1848..fb8b4ea2 100644 +index ee17db06..a927ad91 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2939,7 +2939,7 @@ struct s2 { @@ -75,7 +75,7 @@ index ea8b1848..fb8b4ea2 100644 2.43.0 -From 1d3d72cbf6686216eb8474491baf4bcd08568eb0 Mon Sep 17 00:00:00 2001 +From 72339cc06b7b760642fc93a82de59d47af67650b Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 Subject: [PATCH 02/10] Use new link macros. @@ -96,7 +96,7 @@ Subject: [PATCH 02/10] Use new link macros. source/iostreams.tex | 74 +++++------ source/iterators.tex | 6 +- source/lex.tex | 6 +- - source/lib-intro.tex | 71 +++++------ + source/lib-intro.tex | 69 +++++------ source/limits.tex | 2 +- source/numerics.tex | 55 ++++----- source/overloading.tex | 64 +++++----- @@ -108,10 +108,10 @@ Subject: [PATCH 02/10] Use new link macros. source/threads.tex | 35 +++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 574 insertions(+), 586 deletions(-) + 27 files changed, 573 insertions(+), 585 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index af6c2c98..3074bc3a 100644 +index 2fcdf94a..ea4d7f5f 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -133,7 +133,7 @@ index af6c2c98..3074bc3a 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index 09feaca9..c6a2b6c0 100644 +index 1e8fe13a..34aebafa 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -180,7 +180,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -444,7 +444,7 @@ index 09feaca9..c6a2b6c0 100644 a \grammarterm{constant-expression}\iref{expr.const.core}, \item diff --git a/source/classes.tex b/source/classes.tex -index fbd7a165..76ea152b 100644 +index 78a504f0..8c2f3c53 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -188,10 +188,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: @@ -509,7 +509,7 @@ index fbd7a165..76ea152b 100644 of struct type \tcode{T1}, it is permitted to read a non-static data member \tcode{m} of another union member of struct type \tcode{T2} provided \tcode{m} is part of the common initial sequence of \tcode{T1} and \tcode{T2}; -@@ -2238,7 +2238,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation +@@ -2236,7 +2236,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation An array of class type contains several subobjects for each of which the destructor is invoked. \end{note} @@ -518,7 +518,7 @@ index fbd7a165..76ea152b 100644 if it is invoked or as specified in~\ref{expr.new}, \ref{stmt.return}, \ref{dcl.init.aggr}, \ref{class.base.init}, and~\ref{except.throw}. -@@ -6346,7 +6346,7 @@ associated with a \grammarterm{try-block} (if there is one), +@@ -6344,7 +6344,7 @@ associated with a \grammarterm{try-block} (if there is one), the copy-initialization of the exception object can be omitted by constructing $o$ directly into the exception object; @@ -591,7 +591,7 @@ index d1e15a6e..42828a4b 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index 571b56d0..65081f46 100644 +index 43f506d2..394d0c38 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -6125,14 +6125,14 @@ namespace std { @@ -776,7 +776,7 @@ index 571b56d0..65081f46 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index 0e0c521e..00cff00a 100644 +index 3ab79575..d488264d 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -975,7 +975,7 @@ index 0e0c521e..00cff00a 100644 No \grammarterm{attribute-argument-clause} shall be present. A fallthrough statement may only appear within diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index fc53cdb3..9a7aba83 100644 +index d842475b..eee2454e 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -508,13 +508,13 @@ the current state of \tcode{NDEBUG} each time that @@ -1144,7 +1144,7 @@ index 465c8197..b01c7719 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index fb8b4ea2..388f5d39 100644 +index a927ad91..168ff89d 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1905,7 +1905,7 @@ index fb8b4ea2..388f5d39 100644 \item diff --git a/source/future.tex b/source/future.tex -index a8772f66..88603947 100644 +index 72dbeabb..dc26444a 100644 --- a/source/future.tex +++ b/source/future.tex @@ -14,7 +14,7 @@ is defined as: @@ -2366,7 +2366,7 @@ index ed599d97..46edb440 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index ce8aa22a..5e62f101 100644 +index bfd55be5..5baaf9a1 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2390,7 +2390,7 @@ index ce8aa22a..5e62f101 100644 literal \placeholder{L} is treated as a call of the form diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 9422f9ea..bc8ce8e8 100644 +index 24029adb..6c8b5dab 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2484,16 +2484,7 @@ index 9422f9ea..bc8ce8e8 100644 \rSec2[utility.requirements]{Requirements on types and expressions} -@@ -1828,7 +1828,7 @@ rvalue of type \tcode{const T}. - In general, a default constructor is not required. Certain container class - member function signatures specify \tcode{T()} as a default argument. - \tcode{T()} shall be a well-defined expression\iref{dcl.init} if one of those --signatures is called using the default argument\iref{dcl.fct.default}. -+signatures is called using the \link{default argument}{dcl.fct.default}. - - \begin{oldconcepttable}{EqualityComparable}{}{cpp17.equalitycomparable} - {x{1in}x{1in}p{3in}} -@@ -1953,13 +1953,13 @@ evaluated in the context described below, and +@@ -1947,13 +1947,13 @@ evaluated in the context described below, and \pnum The context in which \tcode{swap(t, u)} and \tcode{swap(u, t)} are evaluated shall @@ -2510,7 +2501,7 @@ index 9422f9ea..bc8ce8e8 100644 \end{itemize} \begin{note} If \tcode{T} and \tcode{U} are both fundamental types or arrays of -@@ -2062,8 +2062,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in +@@ -2056,8 +2056,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in \end{note} \pnum @@ -2522,7 +2513,7 @@ index 9422f9ea..bc8ce8e8 100644 had been evaluated in place of \tcode{p}. \pnum -@@ -2166,7 +2167,7 @@ as the memory allocation and deallocation primitives for it. All of the +@@ -2160,7 +2161,7 @@ as the memory allocation and deallocation primitives for it. All of the string types\iref{strings}, containers\iref{containers} (except \tcode{array} and \tcode{inplace_vector}), string buffers and string streams\iref{input.output}, and @@ -2531,7 +2522,7 @@ index 9422f9ea..bc8ce8e8 100644 allocators. \pnum -@@ -2992,7 +2993,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, +@@ -2986,7 +2987,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, whether or not \tcode{T} is a complete type: \begin{itemize} \item \tcode{X} is a complete type, and @@ -2540,7 +2531,7 @@ index 9422f9ea..bc8ce8e8 100644 other than \tcode{value_type} are complete types. \end{itemize} -@@ -3003,11 +3004,11 @@ whether or not \tcode{T} is a complete type: +@@ -2997,11 +2998,11 @@ whether or not \tcode{T} is a complete type: \pnum Subclause \ref{constraints} describes restrictions on \Cpp{} programs that use the facilities of the \Cpp{} standard library. The following subclauses specify constraints on the @@ -2556,7 +2547,7 @@ index 9422f9ea..bc8ce8e8 100644 \rSec3[namespace.constraints]{Namespace use} -@@ -3418,7 +3419,7 @@ are reserved for use by \Cpp{} implementations. +@@ -3412,7 +3413,7 @@ are reserved for use by \Cpp{} implementations. If a file with a name equivalent to the derived file name for one of the \Cpp{} standard library headers is not provided as part of the implementation, and a file with that name @@ -2565,7 +2556,7 @@ index 9422f9ea..bc8ce8e8 100644 the behavior is undefined.% \indextext{source file}% \indextext{undefined} -@@ -3589,7 +3590,7 @@ specified as being shareable without data races or the user supplies a locking m +@@ -3583,7 +3584,7 @@ specified as being shareable without data races or the user supplies a locking m \pnum If an object of a standard library type is accessed, and @@ -2574,7 +2565,7 @@ index 9422f9ea..bc8ce8e8 100644 does not happen before the access, or the access does not happen before the end of the object's lifetime, the behavior is undefined unless otherwise specified. -@@ -3655,7 +3656,7 @@ Every such entity shall be defined such that any header that defines it may be +@@ -3649,7 +3650,7 @@ Every such entity shall be defined such that any header that defines it may be included after any other header that also defines it\iref{basic.def.odr}. \pnum @@ -2583,7 +2574,7 @@ index 9422f9ea..bc8ce8e8 100644 shall include only their corresponding \Cpp{} standard library header, as described in~\ref{headers}. -@@ -3683,7 +3684,7 @@ explicitly stated otherwise. +@@ -3677,7 +3678,7 @@ explicitly stated otherwise. It is unspecified whether any non-member functions in the \Cpp{} standard library are defined as @@ -2592,7 +2583,7 @@ index 9422f9ea..bc8ce8e8 100644 \pnum A call to a non-member function signature -@@ -3711,7 +3712,7 @@ The phrase ``unless otherwise specified'' applies to cases such as +@@ -3705,7 +3706,7 @@ The phrase ``unless otherwise specified'' applies to cases such as the swappable with requirements\iref{swappable.requirements}. The exception for overloaded operators allows argument-dependent lookup in cases like that of @@ -2601,7 +2592,7 @@ index 9422f9ea..bc8ce8e8 100644 \effects \begin{codeblock} -@@ -3726,7 +3727,7 @@ return *this; +@@ -3720,7 +3721,7 @@ return *this; \pnum It is unspecified whether any member functions in the \Cpp{} standard library are defined as @@ -2610,7 +2601,7 @@ index 9422f9ea..bc8ce8e8 100644 \pnum For a non-virtual member function described in the \Cpp{} standard library, -@@ -3815,8 +3816,8 @@ the behavior is undefined unless otherwise specified. +@@ -3809,8 +3810,8 @@ the behavior is undefined unless otherwise specified. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -2621,7 +2612,7 @@ index 9422f9ea..bc8ce8e8 100644 Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. -@@ -3859,7 +3860,7 @@ not visible to users and are protected against data races. +@@ -3853,7 +3854,7 @@ not visible to users and are protected against data races. \pnum Unless otherwise specified, \Cpp{} standard library functions shall perform all operations solely within the current thread if those operations have effects that are @@ -2630,7 +2621,7 @@ index 9422f9ea..bc8ce8e8 100644 \pnum \begin{note} -@@ -3974,7 +3975,7 @@ potentially-throwing exception specification} exceptions. +@@ -3968,7 +3969,7 @@ potentially-throwing exception specification} exceptions. \begin{footnote} In particular, they can report a failure to allocate storage by throwing an exception of type @@ -2653,7 +2644,7 @@ index e0596a32..877f21f3 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index f127499a..0fef1e5d 100644 +index 36f4bc1b..bdf02769 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -3575,7 +3566,7 @@ index e86cf147..0dd4cd06 100644 calls to the \tcode{setlocale} function or with calls to functions that are affected by the current C locale. The implementation shall behave as if no diff --git a/source/templates.tex b/source/templates.tex -index b5c2e933..5f70947b 100644 +index 36975546..0fde0978 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -716,7 +716,7 @@ struct A {}; @@ -3994,7 +3985,7 @@ index b5c2e933..5f70947b 100644 allocation function\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index 679b2960..363ff13c 100644 +index 3769ac1a..9176b33a 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4184,7 +4175,7 @@ index a29b08ed..b4d55717 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index a284b4f1..f8e08fe3 100644 +index 9cedb5cf..e6eba26a 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -120,15 +120,15 @@ namespace std { @@ -4273,7 +4264,7 @@ index a284b4f1..f8e08fe3 100644 2.43.0 -From 60cd2c71f1c5afd5823cd7cd854ff6631771cabb Mon Sep 17 00:00:00 2001 +From ddf04f017e95bc41342a578ece248e8c7f17b588 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Tue, 1 Aug 2017 14:38:23 +0200 Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove @@ -4298,7 +4289,7 @@ index aff85000..4cf63702 100644 \begin{enumerate} \item If the path is empty, stop. diff --git a/source/templates.tex b/source/templates.tex -index 5f70947b..5b4f6ad6 100644 +index 0fde0978..3d76fc07 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -2154,7 +2154,6 @@ so it does match \#2. @@ -4326,7 +4317,7 @@ index 5f70947b..5b4f6ad6 100644 2.43.0 -From b3979fdc7f9e5993e9c6d9c0d9247321fe537de1 Mon Sep 17 00:00:00 2001 +From 2d2da697a766ca9ad1dfa83d27bb4a5175d7b856 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code @@ -4357,7 +4348,7 @@ index b01c7719..76071483 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index 5e62f101..cf26fce7 100644 +index 5baaf9a1..2e1da4ca 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -336,43 +336,43 @@ the numerical value has no other meaning in this context. @@ -5774,7 +5765,7 @@ index b4d55717..62226224 100644 2.43.0 -From 71c3023d731d3f13978d8fbbefc7050405191d2f Mon Sep 17 00:00:00 2001 +From 2af5c65e7ae06d6691815f301b1280c73ef8c3c7 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. @@ -5809,7 +5800,7 @@ Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. 26 files changed, 267 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 3074bc3a..fad5f7c8 100644 +index ea4d7f5f..69602731 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -8698,7 +8698,6 @@ but stronger than those for a partial ordering. @@ -5845,7 +5836,7 @@ index 3074bc3a..fad5f7c8 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index c6a2b6c0..d03e2989 100644 +index 34aebafa..c2ab775e 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -312,7 +312,6 @@ int X::y = 1; // defines \tcode{X::y} @@ -5873,10 +5864,10 @@ index c6a2b6c0..d03e2989 100644 \item No two signed integer types other than \keyword{char} and \tcode{\keyword{signed} \keyword{char}} (if \keyword{char} is signed) have the same rank, even if they have diff --git a/source/classes.tex b/source/classes.tex -index 76ea152b..62849329 100644 +index 8c2f3c53..fd067ac2 100644 --- a/source/classes.tex +++ b/source/classes.tex -@@ -1641,7 +1641,6 @@ for each non-static data member of +@@ -1640,7 +1640,6 @@ for each non-static data member of that is of class type (or array thereof), the constructor selected to copy/move that member is trivial; \end{itemize} @@ -5884,7 +5875,7 @@ index 76ea152b..62849329 100644 \indextext{constructor!move!non-trivial}% otherwise the copy/move constructor is \defnx{non-trivial}{constructor!copy!nontrivial}. -@@ -3265,7 +3264,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat +@@ -3263,7 +3262,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat destructor and \tcode{N} has a non-trivial constructor (for instance, if they declare or inherit virtual functions), the active member of \tcode{u} can be safely switched from \tcode{m} to \tcode{n} using the destructor and placement \grammarterm{new-expression} as follows: @@ -5892,7 +5883,7 @@ index 76ea152b..62849329 100644 \begin{codeblock} u.m.~M(); new (&u.n) N; -@@ -3447,7 +3445,6 @@ A local class cannot have static data members\iref{class.static.data}. +@@ -3445,7 +3443,6 @@ A local class cannot have static data members\iref{class.static.data}. \indextext{multiple inheritance}% A list of base classes can be specified in a class definition using the notation: @@ -5900,7 +5891,7 @@ index 76ea152b..62849329 100644 \begin{bnf} \nontermdef{base-clause}\br \terminal{:} base-specifier-list -@@ -5426,7 +5423,6 @@ initializers for direct and virtual base class subobjects and +@@ -5424,7 +5421,6 @@ initializers for direct and virtual base class subobjects and non-static data members can be specified by a \grammarterm{ctor-initializer}, which has the form @@ -5908,7 +5899,7 @@ index 76ea152b..62849329 100644 \begin{bnf} \nontermdef{ctor-initializer}\br \terminal{:} mem-initializer-list -@@ -5897,7 +5893,6 @@ public: +@@ -5895,7 +5891,6 @@ public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; \end{codeblock} @@ -5916,7 +5907,7 @@ index 76ea152b..62849329 100644 \end{example} \rSec2[class.inhctor.init]{Initialization by inherited constructor}% -@@ -6553,7 +6548,6 @@ any non-static data member of \tcode{C} is of reference type or +@@ -6551,7 +6546,6 @@ any non-static data member of \tcode{C} is of reference type or A binary operator expression \tcode{a @ b} is \defnx{usable}{usable!binary operator expression} if either @@ -5924,7 +5915,7 @@ index 76ea152b..62849329 100644 \begin{itemize} \item \tcode{a} or \tcode{b} is of class or enumeration type and -@@ -6674,7 +6668,6 @@ The \defnadj{synthesized}{three-way comparison} +@@ -6672,7 +6666,6 @@ The \defnadj{synthesized}{three-way comparison} of type \tcode{R}\iref{cmp.categories} of glvalues \tcode{a} and \tcode{b} of the same type is defined as follows: @@ -5932,7 +5923,7 @@ index 76ea152b..62849329 100644 \begin{itemize} \item If \tcode{a <=> b} is usable\iref{class.compare.default} and -@@ -6774,7 +6767,6 @@ The \defn{common comparison type} \tcode{U} +@@ -6772,7 +6765,6 @@ The \defn{common comparison type} \tcode{U} of a possibly-empty list of $n$ comparison category types $\tcode{T}_0$, $\tcode{T}_1$, $\dotsc$, $\tcode{T}_{n-1}$ is defined as follows: @@ -6114,7 +6105,7 @@ index 42828a4b..3e64abc8 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 65081f46..1c6cb497 100644 +index 394d0c38..1e0aedc6 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6205,7 +6196,7 @@ index 65081f46..1c6cb497 100644 \item \tcode{Extents::static_extent($k$)} diff --git a/source/declarations.tex b/source/declarations.tex -index 00cff00a..135ca134 100644 +index d488264d..f30652b2 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1593,7 +1593,6 @@ a partial specialization\iref{temp.spec.partial}, @@ -6346,7 +6337,7 @@ index 76071483..3a2e459d 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 388f5d39..2804e820 100644 +index 168ff89d..221b68d0 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -467,7 +467,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -6542,7 +6533,7 @@ index 388f5d39..2804e820 100644 \rSec2[expr.yield]{Yielding a value}% diff --git a/source/future.tex b/source/future.tex -index 88603947..24498cbb 100644 +index dc26444a..ac4ac504 100644 --- a/source/future.tex +++ b/source/future.tex @@ -283,7 +283,6 @@ shown in the above synopsis. @@ -6801,7 +6792,7 @@ index 46edb440..b083ad28 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index bc8ce8e8..7e1320d3 100644 +index 6c8b5dab..a8a934eb 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -196,7 +196,6 @@ save space, items that do not apply to a Clause are omitted. @@ -6884,7 +6875,7 @@ index bc8ce8e8..7e1320d3 100644 \begin{codeblock} streambuf* sb; // \expos \end{codeblock} -@@ -1944,7 +1934,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if +@@ -1938,7 +1928,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if evaluated in the context described below, and \item these expressions have the following effects: @@ -6892,7 +6883,7 @@ index bc8ce8e8..7e1320d3 100644 \begin{itemize} \item the object referred to by \tcode{t} has the value originally held by \tcode{u} and \item the object referred to by \tcode{u} has the value originally held by \tcode{t}. -@@ -2950,7 +2939,6 @@ for that type can fail by throwing an object of type +@@ -2944,7 +2933,6 @@ for that type can fail by throwing an object of type \begin{example} The following is an allocator class template supporting the minimal interface that meets the requirements of \ref{allocator.requirements.general}: @@ -6900,7 +6891,7 @@ index bc8ce8e8..7e1320d3 100644 \begin{codeblock} template struct SimpleAllocator { -@@ -3444,13 +3432,11 @@ the description of function semantics apply +@@ -3438,13 +3426,11 @@ the description of function semantics apply to both the default version defined by the \Cpp{} standard library and the replacement function defined by the program. @@ -6914,7 +6905,7 @@ index bc8ce8e8..7e1320d3 100644 \begin{itemize} \item \tcode{terminate_handler} -@@ -3471,7 +3457,6 @@ Exception handling. +@@ -3465,7 +3451,6 @@ Exception handling. \pnum A \Cpp{} program can get a pointer to the current handler function by calling the following functions: @@ -6922,7 +6913,7 @@ index bc8ce8e8..7e1320d3 100644 \begin{itemize} \item \indexlibraryglobal{get_new_handler}% -@@ -3497,7 +3482,6 @@ on the implementation. +@@ -3491,7 +3476,6 @@ on the implementation. \pnum In particular, the behavior is undefined in the following cases: @@ -6930,7 +6921,7 @@ index bc8ce8e8..7e1320d3 100644 \begin{itemize} \item For replacement functions\iref{replacement.functions}, if the installed replacement function does not -@@ -3782,7 +3766,6 @@ functions an implementation shall provide corresponding definitions. +@@ -3776,7 +3760,6 @@ functions an implementation shall provide corresponding definitions. \indextext{stable algorithm}% When the requirements for an algorithm state that it is ``stable'' without further elaboration, it means: @@ -6969,7 +6960,7 @@ index be9812fa..fb901823 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index bfebda45..287b0cef 100644 +index 743d89ac..37e97efd 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -1684,7 +1684,6 @@ The predicate condition for a template specialization \tcode{is_convertible constexpr complex operator+(const complex& lhs); @@ -7232,7 +7223,7 @@ index b3cf7fc7..cd5f8947 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 75baf9b1..c339582a 100644 +index eb12aa77..31f45df2 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7331,7 +7322,7 @@ index 75baf9b1..c339582a 100644 \begin{itemize} \item Let \placeholder{OUTERC} denote -@@ -9856,7 +9844,6 @@ appears in the immediate context of a template instantiation. +@@ -9855,7 +9843,6 @@ appears in the immediate context of a template instantiation. \end{note} Otherwise, \tcode{views::counted(E, F)} is expression-equivalent to: @@ -7388,7 +7379,7 @@ index 0dd4cd06..90a3972a 100644 using promise_type = R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index 5b4f6ad6..8ac74188 100644 +index 3d76fc07..2efd0118 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -257,7 +257,6 @@ in some translation unit; no diagnostic is required. @@ -7680,7 +7671,7 @@ index 5b4f6ad6..8ac74188 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 363ff13c..0e8242c0 100644 +index 9176b33a..08c373e3 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -7365,7 +7365,6 @@ and visible to other threads. @@ -7970,7 +7961,7 @@ index 62226224..6b4a0b79 100644 \fmtnontermdef{chrono-format-spec}\br \opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs} diff --git a/source/utilities.tex b/source/utilities.tex -index f8e08fe3..d463a05a 100644 +index e6eba26a..d2207210 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -289,7 +289,6 @@ Exchanges values stored in two locations. @@ -8033,7 +8024,7 @@ index f8e08fe3..d463a05a 100644 2.43.0 -From 32af6cd9ff8d0f9c4684f2488f2aa83fbeca83e4 Mon Sep 17 00:00:00 2001 +From c26d9343345641bdccdf9a8fae861c016ee3d51f Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 Subject: [PATCH 06/10] Use monospace font for code in figures. @@ -8180,7 +8171,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From 0d26f8fa398395e59e8b8b392bc2b37b822b2f33 Mon Sep 17 00:00:00 2001 +From 15f4cec4afd235e7e2ca44784f480df1665846fb Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 Subject: [PATCH 07/10] [uaxid] Mark code that's not to be highlighted. @@ -8208,7 +8199,7 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From 1d2defde13540045bf1eed78e553fedcf059a025 Mon Sep 17 00:00:00 2001 +From 393258f4241f4bde846b156b5c7b0b53b91711eb Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. @@ -8232,7 +8223,7 @@ Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. 15 files changed, 476 insertions(+), 484 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index fad5f7c8..600c9685 100644 +index 69602731..d4a49bde 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -8826,7 +8817,7 @@ index 3e64abc8..9efb5afa 100644 invocation of the destructor does not actually throw. \end{note} diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index 9a7aba83..04178bdb 100644 +index eee2454e..267f428b 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -761,9 +761,9 @@ namespace std { @@ -8836,7 +8827,7 @@ index 9a7aba83..04178bdb 100644 - constexpr bool @\libglobal{is_error_code_enum_v}@ = is_error_code_enum::value; + constexpr bool @\libglobal{is_error_code_enum_v}@ = @\libglobalref{is_error_code_enum}@::value; template -- constexpr bool is_error_condition_enum_v = is_error_condition_enum::value; +- constexpr bool @\libglobal{is_error_condition_enum_v}@ = is_error_condition_enum::value; + constexpr bool @\libglobal{is_error_condition_enum_v}@ = @\libglobalref{is_error_condition_enum}@::value; } \end{codeblock} @@ -8892,7 +8883,7 @@ index 9a7aba83..04178bdb 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 067536ac..9a2154a7 100644 +index 61e8379b..766741df 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -8931,7 +8922,7 @@ index 067536ac..9a2154a7 100644 \\ \end{floattable} diff --git a/source/future.tex b/source/future.tex -index 24498cbb..99bb6113 100644 +index ac4ac504..dffbe172 100644 --- a/source/future.tex +++ b/source/future.tex @@ -359,7 +359,7 @@ template struct is_pod; @@ -9061,10 +9052,10 @@ index a8f84575..f444a705 100644 \pnum If an iterator of type \tcode{directory_iterator} reports an error or diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 7e1320d3..b4c67f66 100644 +index a8a934eb..db69d69a 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex -@@ -1874,7 +1874,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1868,7 +1868,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9073,7 +9064,7 @@ index 7e1320d3..b4c67f66 100644 {p{1in}p{4.15in}} \topline \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep -@@ -1901,7 +1901,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1895,7 +1895,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. }\\ \end{oldconcepttable} @@ -9082,7 +9073,7 @@ index 7e1320d3..b4c67f66 100644 {p{1in}p{1in}p{1in}p{1.9in}} \topline \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Return value} & \hdstyle{Post-condition} \\ \capsep -@@ -1915,7 +1915,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. +@@ -1909,7 +1909,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. \tcode{a.\~T()} & No exception is propagated. \\ \rowsep \multicolumn{2}{|l|}{ \begin{tailnote} @@ -9091,7 +9082,7 @@ index 7e1320d3..b4c67f66 100644 \end{tailnote} } \\ \end{oldconcepttable} -@@ -1994,7 +1994,7 @@ void value_swap(T&& t, U&& u) { +@@ -1988,7 +1988,7 @@ void value_swap(T&& t, U&& u) { // for rvalues and lvalues } @@ -9100,7 +9091,7 @@ index 7e1320d3..b4c67f66 100644 template void lv_swap(T& t1, T& t2) { using std::swap; -@@ -2031,9 +2031,9 @@ int main() { +@@ -2025,9 +2025,9 @@ int main() { A \oldconcept{NullablePointer} type is a pointer-like type that supports null values. A type \tcode{P} meets the \oldconcept{\-Nullable\-Pointer} requirements if \begin{itemize} @@ -9113,7 +9104,7 @@ index 7e1320d3..b4c67f66 100644 \item the expressions shown in \tref{cpp17.nullablepointer} are valid and have the indicated semantics, and -@@ -2109,8 +2109,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. +@@ -2103,8 +2103,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. A type \tcode{H} meets the \defnoldconcept{Hash} requirements if \begin{itemize} \item it is a function object type\iref{function.objects}, @@ -9124,7 +9115,7 @@ index 7e1320d3..b4c67f66 100644 \item the expressions shown in \tref{cpp17.hash} are valid and have the indicated semantics. \end{itemize} -@@ -2794,7 +2794,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2788,7 +2788,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be copied when the client container is copy-assigned; if so, \tcode{X} shall meet @@ -9133,7 +9124,7 @@ index 7e1320d3..b4c67f66 100644 the copy operation shall not throw exceptions. \pnum -@@ -2816,7 +2816,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2810,7 +2810,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be moved when the client container is move-assigned; if so, \tcode{X} shall meet @@ -9142,7 +9133,7 @@ index 7e1320d3..b4c67f66 100644 the move operation shall not throw exceptions. \pnum -@@ -2838,7 +2838,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. +@@ -2832,7 +2832,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. \tcode{true_type} only if an allocator of type \tcode{X} should be swapped when the client container is swapped; if so, @@ -9151,7 +9142,7 @@ index 7e1320d3..b4c67f66 100644 the \tcode{swap} operation shall not throw exceptions. \pnum -@@ -2868,7 +2868,7 @@ Default: \tcode{is_empty::type} +@@ -2862,7 +2862,7 @@ Default: \tcode{is_empty::type} \pnum An allocator type \tcode{X} shall meet the @@ -9160,7 +9151,7 @@ index 7e1320d3..b4c67f66 100644 The \tcode{XX::pointer}, \tcode{XX::const_pointer}, \tcode{XX::void_pointer}, and \tcode{XX::const_void_pointer} types shall meet the \oldconcept{Nullable\-Pointer} requirements (\tref{cpp17.nullablepointer}). -@@ -2876,7 +2876,7 @@ No constructor, +@@ -2870,7 +2870,7 @@ No constructor, comparison operator function, copy operation, move operation, or swap operation on these pointer types shall exit via an exception. \tcode{XX::pointer} and \tcode{XX::const_pointer} shall also meet the requirements for @@ -9343,7 +9334,7 @@ index fb901823..2dea2cc5 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index 287b0cef..64dc0929 100644 +index 37e97efd..995ac6ef 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -136,12 +136,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -9939,7 +9930,7 @@ index 287b0cef..64dc0929 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index c9be3735..9ce34899 100644 +index 6f53e771..6e8821bc 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul @@ -10098,7 +10089,7 @@ index 90a3972a..5d4fbbf8 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index 0e8242c0..98143cb4 100644 +index 08c373e3..422752c7 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10707,7 +10698,7 @@ index 6b4a0b79..5e264ea3 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index d463a05a..a8521ec6 100644 +index d2207210..4182d9ba 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -277,9 +277,9 @@ template @@ -11203,7 +11194,7 @@ index d463a05a..a8521ec6 100644 2.43.0 -From c18b462efcc14f654e972f99364c504f4863117f Mon Sep 17 00:00:00 2001 +From 947155ac8d3784a042a416256a8980d540a5b02b Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 Subject: [PATCH 09/10] Remove awkward \linebreaks. @@ -11220,7 +11211,7 @@ Subject: [PATCH 09/10] Remove awkward \linebreaks. 8 files changed, 56 insertions(+), 56 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 600c9685..e289b9b5 100644 +index d4a49bde..999851e8 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -7073,7 +7073,7 @@ Let: @@ -11242,7 +11233,7 @@ index 600c9685..e289b9b5 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index 1c6cb497..ace39839 100644 +index 1e0aedc6..3ad3ae82 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1461,7 +1461,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11415,10 +11406,10 @@ index 1c6cb497..ace39839 100644 @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) diff --git a/source/exec.tex b/source/exec.tex -index 9a2154a7..81623295 100644 +index 766741df..9c053a01 100644 --- a/source/exec.tex +++ b/source/exec.tex -@@ -3915,7 +3915,7 @@ otherwise, it is expression-equivalent to +@@ -3914,7 +3914,7 @@ otherwise, it is expression-equivalent to \pnum Let \tcode{out_sndr} and \tcode{env} be subexpressions, let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and @@ -11427,7 +11418,7 @@ index 9a2154a7..81623295 100644 If \tcode{\exposconcept{sender-for}} is \tcode{false}, then the expression \tcode{on.transform_sender(out_sndr, env)} is ill-formed. -@@ -4020,7 +4020,7 @@ Let the expression \exposid{then-cpo} be one of +@@ -4019,7 +4019,7 @@ Let the expression \exposid{then-cpo} be one of For subexpressions \tcode{sndr} and \tcode{f}, if \tcode{decltype((sndr))} does not satisfy \libconcept{sender}, or \tcode{decltype((f))} does not satisfy \exposconcept{movable-value}, @@ -11436,7 +11427,7 @@ index 9a2154a7..81623295 100644 \pnum Otherwise, -@@ -4983,7 +4983,7 @@ try { +@@ -4980,7 +4980,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -11445,7 +11436,7 @@ index 9a2154a7..81623295 100644 \pnum The expression \tcode{when_all_with_variant(sndrs...)} -@@ -6153,7 +6153,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. +@@ -6150,7 +6150,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. \pnum For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. @@ -11486,7 +11477,7 @@ index 2dea2cc5..e1572fe6 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index 64dc0929..99eecfb1 100644 +index 995ac6ef..ccf1ed9a 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -2273,7 +2273,7 @@ present as follows: @@ -11499,7 +11490,7 @@ index 64dc0929..99eecfb1 100644 \item Otherwise, if diff --git a/source/ranges.tex b/source/ranges.tex -index c339582a..b1943a7e 100644 +index 31f45df2..a92d85a4 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -11574,7 +11565,7 @@ index c339582a..b1943a7e 100644 \end{itemdescr} \indexlibrarymember{begin}{split_view} -@@ -9158,7 +9158,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. +@@ -9157,7 +9157,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. \item Otherwise, if \tcode{\exposconcept{all-forward}} is modeled, @@ -11583,7 +11574,7 @@ index c339582a..b1943a7e 100644 \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} -@@ -9184,14 +9184,14 @@ let \tcode{Cs} denote the pack of types +@@ -9183,14 +9183,14 @@ let \tcode{Cs} denote the pack of types \begin{itemize} \item If @@ -11601,7 +11592,7 @@ index c339582a..b1943a7e 100644 \item Otherwise, if \tcode{(\libconcept{derived_from} \&\& ...)} -@@ -9643,11 +9643,11 @@ Let +@@ -9642,11 +9642,11 @@ Let %FIXME This is hard to parse. If \tcode{$i_\tcode{x}$ > $i_\tcode{y}$}, let \tcode{$d_\tcode{y}$} be @@ -11616,7 +11607,7 @@ index c339582a..b1943a7e 100644 for every integer \tcode{$i$} in the range \range{$i_\tcode{y}$ + 1}{$i_\tcode{x}$} if there is any, and -@@ -9690,7 +9690,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul +@@ -9689,7 +9689,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul Let \tcode{$i_\tcode{x}$} denote \tcode{x.\exposid{it_}.index()}, \tcode{$d_\tcode{x}$} be @@ -11625,7 +11616,7 @@ index c339582a..b1943a7e 100644 Let \tcode{$s$} denote the sum of the sizes of all the ranges \tcode{std::get<$i$>(x.\exposid{parent_}->\exposid{views_})} for every integer \tcode{$i$} in the range -@@ -9847,7 +9847,7 @@ is expression-equivalent to: +@@ -9846,7 +9846,7 @@ is expression-equivalent to: \begin{itemize} \item If \tcode{T} models \libconcept{contiguous_iterator}, @@ -11634,7 +11625,7 @@ index c339582a..b1943a7e 100644 \item Otherwise, if \tcode{T} models \libconcept{random_access_iterator}, -@@ -13556,7 +13556,7 @@ is defined as follows: +@@ -13555,7 +13555,7 @@ is defined as follows: \item If \tcode{invoke_result_t<\exposid{maybe-const}\&, \exposid{REPEAT}(range_reference_t<\exposid{Base}>, N)...>} @@ -11643,7 +11634,7 @@ index c339582a..b1943a7e 100644 \tcode{iterator_category} denotes \tcode{input_iterator_tag}. \item Otherwise, let \tcode{C} denote the type -@@ -14667,7 +14667,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ +@@ -14666,7 +14666,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ \effects Initializes \exposid{current_} with \tcode{current}, \exposid{end_} with \tcode{ranges::end(parent->\exposid{base_})}, @@ -11653,7 +11644,7 @@ index c339582a..b1943a7e 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index 98143cb4..f00c8ecd 100644 +index 422752c7..6ad1377c 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -3492,7 +3492,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, @@ -11693,7 +11684,7 @@ index 98143cb4..f00c8ecd 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index a8521ec6..6c5b1c0a 100644 +index 4182d9ba..cb48e529 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -2381,7 +2381,7 @@ equals \tcode{tuple_size_v>}, @@ -11736,7 +11727,7 @@ index a8521ec6..6c5b1c0a 100644 2.43.0 -From 3ed0ca416602d5a04615520b7ba15ac52b872eec Mon Sep 17 00:00:00 2001 +From 6525e0d2b25950802af497a323be4a5086d20d2b Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 25 Dec 2025 12:43:53 +0100 Subject: [PATCH 10/10] Use \literalterminal more. @@ -11746,7 +11737,7 @@ Subject: [PATCH 10/10] Use \literalterminal more. 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/source/lex.tex b/source/lex.tex -index cf26fce7..e5a112a8 100644 +index 2e1da4ca..23ea54ce 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -449,7 +449,7 @@ for the respective Unicode encoding form. diff --git a/lastbuild.sig b/lastbuild.sig index 1b1adfeb6a..b294d65c2c 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,4 +1,4 @@ -htmlgen ec08ed9082b71d87ffc970becceff11c5f8438b2 -draft 1e747bf358e4546e9661c6bcee01a1dd71d2186f -3f412befff9815972eb9f8b3fd8aca2324c7d58b all.patch -dd8cc3cb92b400f1a882557061648f8156b9a6cc htmlgen.patch +htmlgen 63bc5929dc4fa6bb7448390ecec586c8069516b7 +draft d7c02a0f5c21cd235a0ed3921a30b19d75771f2e +3d59569741cf06af59fe3616010d0ee27e397fce all.patch +0b9675c5b0f6b6a329ba2b39b29f2a8fc8c40cec htmlgen.patch From 105d929ee9faf5c9d84427ee38bca50afe7e8fe7 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Mon, 4 May 2026 08:10:28 -0500 Subject: [PATCH 28/36] Update --- all.patch | 56 ---------------- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 175 ++++++++++++++++++-------------------------------- lastbuild.sig | 5 +- 5 files changed, 65 insertions(+), 175 deletions(-) delete mode 100644 all.patch diff --git a/all.patch b/all.patch deleted file mode 100644 index e53ce4a822..0000000000 --- a/all.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 19e297bce01ae69c917d0b8bfb5f1f1491cc8804 Mon Sep 17 00:00:00 2001 -From: timsong-cpp -Date: Sun, 26 Apr 2026 23:50:34 -0500 -Subject: [PATCH 1/2] [exec.get.compl.sched] Remove spurious @ - ---- - source/exec.tex | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/source/exec.tex b/source/exec.tex -index f4e308d8..3f55bde5 100644 ---- a/source/exec.tex -+++ b/source/exec.tex -@@ -1130,11 +1130,11 @@ if the type of \tcode{q} satisfies \libconcept{scheduler} and - \tcode{envs} is not an empty pack, - except that \tcode{envs...} is evaluated. - \item --Otherwise, \tcode{get_completion_scheduler<@\exposid{completion-fn-tag}@>(q, envs...)} -+Otherwise, \tcode{get_completion_scheduler<\exposid{completion-fn-tag}>(q, envs...)} - is ill-formed. - \end{itemize} - \mandates --If \tcode{get_completion_scheduler<@\exposid{completion-fn-tag}@>(q, envs...)} -+If \tcode{get_completion_scheduler<\exposid{completion-fn-tag}>(q, envs...)} - is well-formed, - its type satisfies \libconcept{scheduler}. - --- -2.43.0 - - -From a26a612a93ae3780426fe142c956bbd6f3794ad0 Mon Sep 17 00:00:00 2001 -From: timsong-cpp -Date: Mon, 27 Apr 2026 00:13:14 -0500 -Subject: [PATCH 2/2] [exec.spawn.future] Add missing @ - ---- - source/exec.tex | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/source/exec.tex b/source/exec.tex -index 3f55bde5..61e8379b 100644 ---- a/source/exec.tex -+++ b/source/exec.tex -@@ -5763,7 +5763,7 @@ std::move(this->@\exposid{result}@).visit( - }, std::move(tuple)); - } - }); --@\exposid{destroy}(); -+@\exposid{destroy}@(); - \end{codeblock} - \end{itemize} - \end{itemdescr} --- -2.43.0 - diff --git a/draft b/draft index d7c02a0f5c..9b656eb698 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit d7c02a0f5c21cd235a0ed3921a30b19d75771f2e +Subproject commit 9b656eb6984f5b2726abb6a49d88f64ffdbe57be diff --git a/gh-pages b/gh-pages index 4f35cfa20f..f285dd653a 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 4f35cfa20fbbc1d2a58d86ca2d03a74faaf92765 +Subproject commit f285dd653af2c78abe95dbadddc053850bb26639 diff --git a/htmlgen.patch b/htmlgen.patch index 1f4662d816..9da76b14f6 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,8 +1,8 @@ -From 0dac0f606043fceca51128dc97ceb1977321e2ed Mon Sep 17 00:00:00 2001 +From 7d72a757ffd2029d45c947619c9ed8dc1338ed9b Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 -Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout - on smaller (e.g. half-screen) window sizes. +Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on + smaller (e.g. half-screen) window sizes. --- source/basic.tex | 26 +++++++++++++------------- @@ -10,7 +10,7 @@ Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index cf9f4d86..1e8fe13a 100644 +index 3285447e..d20703a0 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -342,7 +342,7 @@ Given @@ -75,10 +75,10 @@ index ee17db06..a927ad91 100644 2.43.0 -From 72339cc06b7b760642fc93a82de59d47af67650b Mon Sep 17 00:00:00 2001 +From 6d3fa8f7c0411bca74eec2b707b39224af0925d0 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 -Subject: [PATCH 02/10] Use new link macros. +Subject: [PATCH 2/9] Use new link macros. --- source/algorithms.tex | 4 +- @@ -111,7 +111,7 @@ Subject: [PATCH 02/10] Use new link macros. 27 files changed, 573 insertions(+), 585 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 2fcdf94a..ea4d7f5f 100644 +index 8b2f530d..cd4ba8fb 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -133,7 +133,7 @@ index 2fcdf94a..ea4d7f5f 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index 1e8fe13a..34aebafa 100644 +index d20703a0..4b9c8b5b 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -180,7 +180,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -591,7 +591,7 @@ index d1e15a6e..42828a4b 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index 43f506d2..394d0c38 100644 +index 2aee316d..796a6263 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -6125,14 +6125,14 @@ namespace std { @@ -1004,7 +1004,7 @@ index d842475b..eee2454e 100644 \end{note} \indexlibraryglobal{system_error}% diff --git a/source/exceptions.tex b/source/exceptions.tex -index 465c8197..b01c7719 100644 +index df3b639d..abd4aef1 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -184,7 +184,7 @@ try : i(f(ii)), d(id) { @@ -2644,7 +2644,7 @@ index e0596a32..877f21f3 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index 36f4bc1b..bdf02769 100644 +index f5f24c88..b21d7146 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -3566,7 +3566,7 @@ index e86cf147..0dd4cd06 100644 calls to the \tcode{setlocale} function or with calls to functions that are affected by the current C locale. The implementation shall behave as if no diff --git a/source/templates.tex b/source/templates.tex -index 36975546..0fde0978 100644 +index 36975546..ea6af80c 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -716,7 +716,7 @@ struct A {}; @@ -3652,7 +3652,7 @@ index 36975546..0fde0978 100644 -Atomic constraints are formed by constraint normalization\iref{temp.constr.normal}. -\tcode{E} is never a logical \logop{and} expression\iref{expr.log.and} -nor a logical \logop{or} expression\iref{expr.log.or}. -+Atomic constraints are formed by \deflinkx{constraint normalization}{constraint!normalization}{temp.constr.normal}. ++Atomic constraints are formed by \link{constraint normalization}{temp.constr.normal}. +\tcode{E} is never a \link{logical \logop{and} expression}{expr.log.and} +nor a \link{logical \logop{or} expression}{expr.log.or}. \end{note} @@ -3985,7 +3985,7 @@ index 36975546..0fde0978 100644 allocation function\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index 3769ac1a..9176b33a 100644 +index a0d0f855..d3c9e517 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4264,64 +4264,11 @@ index 9cedb5cf..e6eba26a 100644 2.43.0 -From ddf04f017e95bc41342a578ece248e8c7f17b588 Mon Sep 17 00:00:00 2001 -From: Eelis van der Weegen -Date: Tue, 1 Aug 2017 14:38:23 +0200 -Subject: [PATCH 03/10] Fix dubious \defnx that has see{} in it, and remove - range index entry with the same key. - ---- - source/iostreams.tex | 2 +- - source/templates.tex | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/source/iostreams.tex b/source/iostreams.tex -index aff85000..4cf63702 100644 ---- a/source/iostreams.tex -+++ b/source/iostreams.tex -@@ -13922,7 +13922,7 @@ without an intervening \grammarterm{root-directory} element. - - \pnum - \indextext{path!normalization|(}% --\defnx{Normalization}{normalization!path|see{path, normalization}} of a generic format pathname means: -+\defnx{Normalization}{normalization!path} of a generic format pathname means: - - \begin{enumerate} - \item If the path is empty, stop. -diff --git a/source/templates.tex b/source/templates.tex -index 0fde0978..3d76fc07 100644 ---- a/source/templates.tex -+++ b/source/templates.tex -@@ -2154,7 +2154,6 @@ so it does match \#2. - \end{example} - - \rSec2[temp.constr.normal]{Constraint normalization} --\indextext{constraint!normalization|(}% - - \pnum - The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is -@@ -2273,10 +2272,11 @@ whose parameter mapping is the identity mapping. - \end{itemize} - - \pnum -+\indextext{normalization|see{constraint, normalization}}% - The process of obtaining the normal form of a - \grammarterm{constraint-expression} - is called --\defnx{normalization}{normalization!constraint|see{constraint, normalization}}. -+\defnx{normalization}{constraint!normalization}. - \begin{note} - Normalization of \grammarterm{constraint-expression}{s} - is performed --- -2.43.0 - - -From 2d2da697a766ca9ad1dfa83d27bb4a5175d7b856 Mon Sep 17 00:00:00 2001 +From 9c824a2fa19e94d11ebc070a30c6ca6a4619699f Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 -Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code - and literal fragments. +Subject: [PATCH 3/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and + literal fragments. --- source/exceptions.tex | 4 +- @@ -4330,7 +4277,7 @@ Subject: [PATCH 04/10] Use cxxdraft-htmlgen macros to annotate non-C++ code 3 files changed, 351 insertions(+), 351 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex -index b01c7719..76071483 100644 +index abd4aef1..ea065465 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -135,11 +135,11 @@ does not declare a variable. @@ -5765,10 +5712,10 @@ index b4d55717..62226224 100644 2.43.0 -From 2af5c65e7ae06d6691815f301b1280c73ef8c3c7 Mon Sep 17 00:00:00 2001 +From 76b77b9c9f9d71e1ef38aab0cd533fdaa2e262e0 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 -Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. +Subject: [PATCH 4/9] Remove more inappropriate paragraph breaks. --- source/algorithms.tex | 4 ---- @@ -5800,7 +5747,7 @@ Subject: [PATCH 05/10] Remove more inappropriate paragraph breaks. 26 files changed, 267 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index ea4d7f5f..69602731 100644 +index cd4ba8fb..6eaef6b7 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -8698,7 +8698,6 @@ but stronger than those for a partial ordering. @@ -5836,7 +5783,7 @@ index ea4d7f5f..69602731 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index 34aebafa..c2ab775e 100644 +index 4b9c8b5b..61d14b18 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -312,7 +312,6 @@ int X::y = 1; // defines \tcode{X::y} @@ -6105,7 +6052,7 @@ index 42828a4b..3e64abc8 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 394d0c38..1e0aedc6 100644 +index 796a6263..62d8c723 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6171,7 +6118,7 @@ index 394d0c38..1e0aedc6 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -24570,7 +24562,6 @@ typename A::offset_policy +@@ -24583,7 +24575,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6179,7 +6126,7 @@ index 394d0c38..1e0aedc6 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -26015,7 +26006,6 @@ for the $k^\text{th}$ extent of \tcode{src}. +@@ -26028,7 +26019,6 @@ for the $k^\text{th}$ extent of \tcode{src}. \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: @@ -6187,7 +6134,7 @@ index 394d0c38..1e0aedc6 100644 \begin{itemize} \item \tcode{SubExtents::rank()} equals -@@ -26027,7 +26017,6 @@ the type of \tcode{slices...[$k$]} is not a collapsing slice type, +@@ -26040,7 +26030,6 @@ the type of \tcode{slices...[$k$]} is not a collapsing slice type, \tcode{SubExt\-ents::static_extent(\placeholder{MAP_RANK}(slices, $k$))} equals the following, where $\Sigma_k$ denotes the type of \tcode{slices...[$k$]}: @@ -6312,7 +6259,7 @@ index d488264d..f30652b2 100644 \terminal{(} unevaluated-string \terminal{)} \end{ncbnf} diff --git a/source/exceptions.tex b/source/exceptions.tex -index 76071483..3a2e459d 100644 +index ea065465..869f7588 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -89,7 +89,6 @@ void f() { @@ -6601,7 +6548,7 @@ index dc26444a..ac4ac504 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index 4cf63702..a8f84575 100644 +index aff85000..4b7233de 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -2105,14 +2105,12 @@ does nothing. @@ -6710,7 +6657,7 @@ index 4cf63702..a8f84575 100644 @@ -13923,7 +13910,6 @@ without an intervening \grammarterm{root-directory} element. \pnum \indextext{path!normalization|(}% - \defnx{Normalization}{normalization!path} of a generic format pathname means: + \defnx{Normalization}{normalization!path|see{path, normalization}} of a generic format pathname means: - \begin{enumerate} \item If the path is empty, stop. @@ -6980,7 +6927,7 @@ index 743d89ac..37e97efd 100644 \item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}. diff --git a/source/numerics.tex b/source/numerics.tex -index bdf02769..6f53e771 100644 +index b21d7146..13c2330a 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); @@ -7223,7 +7170,7 @@ index b3cf7fc7..cd5f8947 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index eb12aa77..31f45df2 100644 +index 29b5ae53..912546d8 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7379,7 +7326,7 @@ index 0dd4cd06..90a3972a 100644 using promise_type = R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index 3d76fc07..2efd0118 100644 +index ea6af80c..23c257ac 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -257,7 +257,6 @@ in some translation unit; no diagnostic is required. @@ -7671,7 +7618,7 @@ index 3d76fc07..2efd0118 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 9176b33a..08c373e3 100644 +index d3c9e517..a7735840 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -7365,7 +7365,6 @@ and visible to other threads. @@ -8024,10 +7971,10 @@ index e6eba26a..d2207210 100644 2.43.0 -From c26d9343345641bdccdf9a8fae861c016ee3d51f Mon Sep 17 00:00:00 2001 +From cead0aff18113931a18f9db87b834c6f6f5365cd Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 -Subject: [PATCH 06/10] Use monospace font for code in figures. +Subject: [PATCH 5/9] Use monospace font for code in figures. --- source/assets/figdag.dot | 8 ++++---- @@ -8171,10 +8118,10 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From 15f4cec4afd235e7e2ca44784f480df1665846fb Mon Sep 17 00:00:00 2001 +From 751755a7c599e84c57bfdeb91b2a593fbe80b4db Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 -Subject: [PATCH 07/10] [uaxid] Mark code that's not to be highlighted. +Subject: [PATCH 6/9] [uaxid] Mark code that's not to be highlighted. --- source/uax31.tex | 4 ++-- @@ -8199,10 +8146,10 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From 393258f4241f4bde846b156b5c7b0b53b91711eb Mon Sep 17 00:00:00 2001 +From 4188ff9acbe46a32bb0707ae2217f99a9e2c78c2 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 -Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. +Subject: [PATCH 7/9] Use cxxdraft-htmlgen macros more. --- source/algorithms.tex | 180 +++++++++++++-------------- @@ -8223,7 +8170,7 @@ Subject: [PATCH 08/10] Use cxxdraft-htmlgen macros more. 15 files changed, 476 insertions(+), 484 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 69602731..d4a49bde 100644 +index 6eaef6b7..b7fd050e 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -8883,7 +8830,7 @@ index eee2454e..267f428b 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 61e8379b..766741df 100644 +index 4f7f72b0..4bf25bbd 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -8971,7 +8918,7 @@ index ac4ac504..dffbe172 100644 \begin{itemize} \item for the first specialization, \tcode{volatile VA::type}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index a8f84575..f444a705 100644 +index 4b7233de..8af4eea6 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -1684,10 +1684,10 @@ An \tcode{fpos} type specifies file position information. @@ -9930,7 +9877,7 @@ index 37e97efd..995ac6ef 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index 6f53e771..6e8821bc 100644 +index 13c2330a..cc6ba680 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul @@ -10089,7 +10036,7 @@ index 90a3972a..5d4fbbf8 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index 08c373e3..422752c7 100644 +index a7735840..db46040d 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -11194,10 +11141,10 @@ index d2207210..4182d9ba 100644 2.43.0 -From 947155ac8d3784a042a416256a8980d540a5b02b Mon Sep 17 00:00:00 2001 +From 7e4b50ef5f4d48cd5d4a40d84305a45dfba5a23d Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 -Subject: [PATCH 09/10] Remove awkward \linebreaks. +Subject: [PATCH 8/9] Remove awkward \linebreaks. --- source/algorithms.tex | 4 ++-- @@ -11211,7 +11158,7 @@ Subject: [PATCH 09/10] Remove awkward \linebreaks. 8 files changed, 56 insertions(+), 56 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index d4a49bde..999851e8 100644 +index b7fd050e..8cbeb8e6 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -7073,7 +7073,7 @@ Let: @@ -11233,7 +11180,7 @@ index d4a49bde..999851e8 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index 1e0aedc6..3ad3ae82 100644 +index 62d8c723..8c6f18c1 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1461,7 +1461,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11342,7 +11289,7 @@ index 1e0aedc6..3ad3ae82 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -23454,7 +23454,7 @@ is representable as a value of type \tcode{index_type.} +@@ -23458,7 +23458,7 @@ is representable as a value of type \tcode{index_type.} \item If \exposid{rank_} is greater than one, then the product of @@ -11351,7 +11298,7 @@ index 1e0aedc6..3ad3ae82 100644 all values \tcode{ext.extent($k$)} with $k$ in the range of \range{1}{\exposid{rank_}} is representable as a value of type \tcode{index_type}. -@@ -23533,7 +23533,7 @@ template +@@ -23537,7 +23537,7 @@ template \item If \exposid{rank_} is greater than \tcode{1} and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11360,7 +11307,7 @@ index 1e0aedc6..3ad3ae82 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(0))) -@@ -23608,7 +23608,7 @@ is \tcode{true}. +@@ -23612,7 +23612,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11369,7 +11316,7 @@ index 1e0aedc6..3ad3ae82 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(0))) -@@ -24008,7 +24008,7 @@ Implementations should not store this value +@@ -24020,7 +24020,7 @@ Implementations should not store this value if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. \begin{note} Using \tcode{extents} @@ -11378,7 +11325,7 @@ index 1e0aedc6..3ad3ae82 100644 would achieve this. \end{note} \end{itemdescr} -@@ -24095,7 +24095,7 @@ is representable as a value of type \tcode{index_type}. +@@ -24107,7 +24107,7 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -11387,7 +11334,7 @@ index 1e0aedc6..3ad3ae82 100644 all values \tcode{ext.extent($k$)} with $k$ in the range of \range{0}{\exposid{rank_} - 1} is representable as a value of type \tcode{index_type}. -@@ -24174,7 +24174,7 @@ template +@@ -24186,7 +24186,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11396,7 +11343,7 @@ index 1e0aedc6..3ad3ae82 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -24249,7 +24249,7 @@ is \tcode{true}. +@@ -24261,7 +24261,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11406,7 +11353,7 @@ index 1e0aedc6..3ad3ae82 100644 @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) diff --git a/source/exec.tex b/source/exec.tex -index 766741df..9c053a01 100644 +index 4bf25bbd..98317a73 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -3914,7 +3914,7 @@ otherwise, it is expression-equivalent to @@ -11416,7 +11363,7 @@ index 766741df..9c053a01 100644 -let \tcode{Env} be \tcode{decltype((\linebreak env))}. +let \tcode{Env} be \tcode{decltype((env))}. If \tcode{\exposconcept{sender-for}} is \tcode{false}, - then the expression \tcode{on.transform_sender(out_sndr, env)} is ill-formed. + then the expression \tcode{on.transform_sender(set_value, out_sndr, env)} is ill-formed. @@ -4019,7 +4019,7 @@ Let the expression \exposid{then-cpo} be one of For subexpressions \tcode{sndr} and \tcode{f}, @@ -11490,7 +11437,7 @@ index 995ac6ef..ccf1ed9a 100644 \item Otherwise, if diff --git a/source/ranges.tex b/source/ranges.tex -index 31f45df2..a92d85a4 100644 +index 912546d8..ec7898d1 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -11644,7 +11591,7 @@ index 31f45df2..a92d85a4 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index 422752c7..6ad1377c 100644 +index db46040d..53723351 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -3492,7 +3492,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, @@ -11727,10 +11674,10 @@ index 4182d9ba..cb48e529 100644 2.43.0 -From 6525e0d2b25950802af497a323be4a5086d20d2b Mon Sep 17 00:00:00 2001 +From bf5db43c8514610a4cccbb355049eb5ba3819046 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 25 Dec 2025 12:43:53 +0100 -Subject: [PATCH 10/10] Use \literalterminal more. +Subject: [PATCH 9/9] Use \literalterminal more. --- source/lex.tex | 22 +++++++++++----------- diff --git a/lastbuild.sig b/lastbuild.sig index b294d65c2c..8b1d05b8f2 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,4 +1,3 @@ htmlgen 63bc5929dc4fa6bb7448390ecec586c8069516b7 -draft d7c02a0f5c21cd235a0ed3921a30b19d75771f2e -3d59569741cf06af59fe3616010d0ee27e397fce all.patch -0b9675c5b0f6b6a329ba2b39b29f2a8fc8c40cec htmlgen.patch +draft 9b656eb6984f5b2726abb6a49d88f64ffdbe57be +e85cafa93444a46087d5141c83095da1cae4bca7 htmlgen.patch From 30d64dc66a2cd4b71e9343932fd48ef4f46273f5 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Mon, 4 May 2026 09:06:27 -0500 Subject: [PATCH 29/36] Update --- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 180 +++++++++++++++++++++++++------------------------- lastbuild.sig | 4 +- 4 files changed, 94 insertions(+), 94 deletions(-) diff --git a/draft b/draft index 9b656eb698..1fad6accf1 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 9b656eb6984f5b2726abb6a49d88f64ffdbe57be +Subproject commit 1fad6accf1aa93fb8803936ac2c2834340357bce diff --git a/gh-pages b/gh-pages index f285dd653a..51b40df41c 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit f285dd653af2c78abe95dbadddc053850bb26639 +Subproject commit 51b40df41cbd00a35ee626bee78acb568687e52b diff --git a/htmlgen.patch b/htmlgen.patch index 9da76b14f6..fae5a240e1 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From 7d72a757ffd2029d45c947619c9ed8dc1338ed9b Mon Sep 17 00:00:00 2001 +From c84e3f2ed2c298d39367f7a741a5d654d247c5af Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on @@ -59,10 +59,10 @@ index 3285447e..d20703a0 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index ee17db06..a927ad91 100644 +index 357ab782..924905e0 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -2939,7 +2939,7 @@ struct s2 { +@@ -2938,7 +2938,7 @@ struct s2 { } auto g() { return [] { @@ -75,7 +75,7 @@ index ee17db06..a927ad91 100644 2.43.0 -From 6d3fa8f7c0411bca74eec2b707b39224af0925d0 Mon Sep 17 00:00:00 2001 +From 390a70e372f44ad0db75c7f914d2e23ecaa9b003 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 Subject: [PATCH 2/9] Use new link macros. @@ -1144,7 +1144,7 @@ index df3b639d..abd4aef1 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index a927ad91..168ff89d 100644 +index 924905e0..893ddf29 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1296,7 +1296,7 @@ index a927ad91..168ff89d 100644 Class members declared later are not visible. \begin{example} \begin{codeblock} -@@ -1385,8 +1385,8 @@ meaning, except as otherwise indicated. +@@ -1384,8 +1384,8 @@ meaning, except as otherwise indicated. An \grammarterm{id-expression} is a restricted form of a \grammarterm{primary-expression}. \begin{note} @@ -1307,7 +1307,7 @@ index a927ad91..168ff89d 100644 \end{note} \pnum -@@ -1519,7 +1519,7 @@ In each case, the constraints of \tcode{f} are not satisfied. +@@ -1518,7 +1518,7 @@ In each case, the constraints of \tcode{f} are not satisfied. In the declaration of \tcode{p2}, those constraints need to be satisfied even though @@ -1316,7 +1316,7 @@ index a927ad91..168ff89d 100644 \end{example} \end{note} -@@ -2141,8 +2141,8 @@ void abssort(float* x, unsigned N) { +@@ -2140,8 +2140,8 @@ void abssort(float* x, unsigned N) { A \grammarterm{lambda-expression} is a prvalue whose result object is called the \defn{closure object}. \begin{note} @@ -1327,7 +1327,7 @@ index a927ad91..168ff89d 100644 \end{note} \pnum -@@ -2476,7 +2476,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no +@@ -2475,7 +2475,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no and no explicit object parameter\iref{dcl.fct} whose constraints (if any) are satisfied has a conversion function to pointer to @@ -1336,7 +1336,7 @@ index a927ad91..168ff89d 100644 the same parameter and return types as the closure type's function call operator. The conversion is to ``pointer to \keyword{noexcept} function'' if the function call operator -@@ -2585,8 +2585,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} +@@ -2584,8 +2584,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} \pnum The conversion function or conversion function template is public, @@ -1347,7 +1347,7 @@ index a927ad91..168ff89d 100644 \begin{example} \begin{codeblock} auto Fwd = [](int (*fp)(int), auto a) { return fp(a); }; -@@ -2644,9 +2644,9 @@ implicitly-declared destructor\iref{class.dtor}. +@@ -2643,9 +2643,9 @@ implicitly-declared destructor\iref{class.dtor}. \pnum A member of a closure type shall not be @@ -1360,7 +1360,7 @@ index a927ad91..168ff89d 100644 \rSec3[expr.prim.lambda.capture]{Captures}% -@@ -3216,7 +3216,7 @@ A fold expression is a pack expansion. +@@ -3215,7 +3215,7 @@ A fold expression is a pack expansion. \pnum A \grammarterm{requires-expression} provides a concise way to express requirements on template arguments @@ -1369,7 +1369,7 @@ index a927ad91..168ff89d 100644 or by checking properties of types and expressions. \begin{bnf} -@@ -3814,7 +3814,7 @@ or a prvalue of function pointer type. +@@ -3813,7 +3813,7 @@ or a prvalue of function pointer type. If the selected function is non-virtual, or if the \grammarterm{id-expression} in the class member access expression is a \grammarterm{qualified-id}, that function is @@ -1378,7 +1378,7 @@ index a927ad91..168ff89d 100644 of the object expression is called; such a call is referred to as a \defnx{virtual function call}{function!virtual function call}. \begin{note} -@@ -3827,8 +3827,8 @@ an object under construction or destruction. +@@ -3826,8 +3826,8 @@ an object under construction or destruction. \pnum \begin{note} @@ -1389,7 +1389,7 @@ index a927ad91..168ff89d 100644 the program is ill-formed. No function is implicitly declared by such a call. \end{note} -@@ -3895,7 +3895,7 @@ function, +@@ -3894,7 +3894,7 @@ function, the object expression of the class member access shall be a glvalue and the implicit object parameter of the function\iref{over.match.funcs} is initialized with that glvalue, @@ -1398,7 +1398,7 @@ index a927ad91..168ff89d 100644 \begin{note} There is no access or ambiguity checking on this conversion; the access checking and disambiguation are done as part of the (possibly implicit) -@@ -4032,10 +4032,10 @@ pointer parameters. +@@ -4031,10 +4031,10 @@ pointer parameters. \pnum \indextext{declaration!ellipsis in function}% \indextext{parameter list!variable}% @@ -1412,7 +1412,7 @@ index a927ad91..168ff89d 100644 \begin{note} This implies that, except where the ellipsis (\tcode{...}) or a function parameter pack is used, a parameter is available for each argument. -@@ -4053,8 +4053,8 @@ thus each such argument has a corresponding parameter when a function template +@@ -4052,8 +4052,8 @@ thus each such argument has a corresponding parameter when a function template specialization is actually called. \end{note} The @@ -1423,7 +1423,7 @@ index a927ad91..168ff89d 100644 performed on the argument expression. An argument that has type \cv{}~\tcode{std::nullptr_t} is converted to type \tcode{\keyword{void}*}\iref{conv.ptr}. -@@ -4069,16 +4069,16 @@ an eligible non-trivial move constructor, or +@@ -4068,16 +4068,16 @@ an eligible non-trivial move constructor, or a non-trivial destructor\iref{class.dtor}, with no corresponding parameter, is conditionally-supported with \impldef{passing argument of class type through ellipsis} semantics. If the argument has @@ -1445,7 +1445,7 @@ index a927ad91..168ff89d 100644 \pnum A function call is an lvalue -@@ -4097,8 +4097,8 @@ except as specified in \ref{dcl.type.decltype}. +@@ -4096,8 +4096,8 @@ except as specified in \ref{dcl.type.decltype}. \indextext{type conversion, explicit|see{casting}}% \indextext{conversion explicit type|see{casting}}% \indextext{casting}% @@ -1456,7 +1456,7 @@ index a927ad91..168ff89d 100644 by a parenthesized optional \grammarterm{expression-list} or by a \grammarterm{braced-init-list} (the initializer) -@@ -4109,7 +4109,7 @@ If the type is a placeholder +@@ -4108,7 +4108,7 @@ If the type is a placeholder for a deduced class type, it is replaced by the return type of the function selected by overload resolution @@ -1465,7 +1465,7 @@ index a927ad91..168ff89d 100644 for the remainder of this subclause. Otherwise, if the type contains a placeholder type, it is replaced by the type -@@ -4508,8 +4508,8 @@ void foo(D* dp) { +@@ -4507,8 +4507,8 @@ void foo(D* dp) { \end{example} \pnum @@ -1476,7 +1476,7 @@ index a927ad91..168ff89d 100644 \pnum If \tcode{v} is a null pointer value, the result is a null pointer value. -@@ -4560,9 +4560,9 @@ runtime check \term{fails}. +@@ -4559,9 +4559,9 @@ runtime check \term{fails}. \pnum The value of a failed cast to pointer type is the null pointer value of @@ -1489,7 +1489,7 @@ index a927ad91..168ff89d 100644 \indextext{\idxcode{bad_cast}}% \indexlibraryglobal{bad_cast}% -@@ -4651,13 +4651,13 @@ glvalue refers. +@@ -4650,13 +4650,13 @@ glvalue refers. When \keyword{typeid} is applied to an expression other than a glvalue of a polymorphic class type, the result refers to a \tcode{std::type_info} object representing the static type of the expression. @@ -1507,7 +1507,7 @@ index a927ad91..168ff89d 100644 \pnum When \keyword{typeid} is applied to a \grammarterm{type-id}, the result -@@ -4751,7 +4751,7 @@ of type \tcode{T1} can be cast to type ``rvalue +@@ -4750,7 +4750,7 @@ of type \tcode{T1} can be cast to type ``rvalue reference to \tcode{T2}'' if \tcode{T2} is reference-compatible with \tcode{T1}\iref{dcl.init.ref}. If the value is not a bit-field, the result refers to the object or the specified base class subobject @@ -1516,7 +1516,7 @@ index a927ad91..168ff89d 100644 is applied to the bit-field and the resulting prvalue is used as the operand of the \keyword{static_cast} for the remainder of this subclause. If \tcode{T2} is an inaccessible\iref{class.access} or -@@ -4856,7 +4856,8 @@ Otherwise, the behavior is undefined. +@@ -4855,7 +4855,8 @@ Otherwise, the behavior is undefined. A prvalue of type ``pointer to \cvqual{cv1} \tcode{B}'', where \tcode{B} is a class type, can be converted to a prvalue of type ``pointer to \cvqual{cv2} \tcode{D}'', @@ -1526,7 +1526,7 @@ index a927ad91..168ff89d 100644 from \tcode{B}, if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. -@@ -4877,7 +4878,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} +@@ -4876,7 +4877,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} \tcode{T}'' can be converted to a prvalue of type ``pointer to member of \tcode{B} of type \cvqual{cv2} \tcode{T}'', where \tcode{D} is a complete class type and @@ -1535,7 +1535,7 @@ index a927ad91..168ff89d 100644 if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. \begin{note} -@@ -4888,7 +4889,7 @@ If no valid standard conversion +@@ -4887,7 +4888,7 @@ If no valid standard conversion from ``pointer to member of \tcode{B} of type \tcode{T}'' to ``pointer to member of \tcode{D} of type \tcode{T}'' exists\iref{conv.mem}, the program is ill-formed. @@ -1544,7 +1544,7 @@ index a927ad91..168ff89d 100644 member pointer value of the destination type. If class \tcode{B} contains the original member, or is a base class of the class containing the original member, the resulting pointer to member points -@@ -4911,7 +4912,7 @@ If the original pointer value represents the address +@@ -4910,7 +4911,7 @@ If the original pointer value represents the address then the resulting pointer value\iref{basic.compound} is unspecified. Otherwise, if the original pointer value points to an object \placeholder{a}, and there is an object \placeholder{b} of type similar to \tcode{T} @@ -1553,7 +1553,7 @@ index a927ad91..168ff89d 100644 the result is a pointer to \placeholder{b}. Otherwise, the pointer value is unchanged by the conversion. \begin{example} -@@ -4934,8 +4935,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. +@@ -4933,8 +4934,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. If \tcode{T} is an lvalue reference type or an rvalue reference to function type, the result is an lvalue; if \tcode{T} is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the @@ -1564,7 +1564,7 @@ index a927ad91..168ff89d 100644 performed on the expression \tcode{v}. Conversions that can be performed explicitly using \keyword{reinterpret_cast} are listed below. No other conversion can be performed explicitly using \keyword{reinterpret_cast}. -@@ -5100,10 +5101,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type +@@ -5099,10 +5100,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type lvalue; if \tcode{T} is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the @@ -1578,7 +1578,7 @@ index a927ad91..168ff89d 100644 performed on \tcode{v}, other than as specified below. Conversions that can be performed explicitly using \keyword{const_cast} are listed below. No other conversion shall be -@@ -5656,7 +5657,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside +@@ -5655,7 +5656,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside The \keyword{sizeof} operator yields the number of bytes occupied by a non-potentially-overlapping object of the type of its operand. The operand is either an expression, @@ -1587,7 +1587,7 @@ index a927ad91..168ff89d 100644 \grammarterm{type-id}. \indextext{type!incomplete}% The \keyword{sizeof} operator shall not be applied to an expression that -@@ -5713,7 +5714,7 @@ array-to-pointer\iref{conv.array}, and +@@ -5712,7 +5713,7 @@ array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} standard conversions are not applied to the operand of \keyword{sizeof}. If the operand is a prvalue, @@ -1596,7 +1596,7 @@ index a927ad91..168ff89d 100644 is applied. \pnum -@@ -5858,7 +5859,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. +@@ -5857,7 +5858,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. \end{bnf} \pnum @@ -1605,7 +1605,7 @@ index a927ad91..168ff89d 100644 a placeholder for a deduced class type\iref{dcl.type.class.deduct} appears in the \grammarterm{type-specifier-seq} of a \grammarterm{new-type-id} or -@@ -5986,7 +5987,7 @@ is less than zero; +@@ -5985,7 +5986,7 @@ is less than zero; \item its value is such that the size of the allocated object would exceed the @@ -1614,7 +1614,7 @@ index a927ad91..168ff89d 100644 \item the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} -@@ -6012,7 +6013,7 @@ is the null pointer value of the required result type; +@@ -6011,7 +6012,7 @@ is the null pointer value of the required result type; \item otherwise, the \grammarterm{new-expression} terminates by throwing an exception of a type that would match a handler\iref{except.handle} of type @@ -1623,7 +1623,7 @@ index a927ad91..168ff89d 100644 \end{itemize} \end{itemize} When the value of the \grammarterm{expression} is zero, the allocation -@@ -6070,8 +6071,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( +@@ -6069,8 +6070,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( A \grammarterm{new-expression} may obtain storage for the object by calling an allocation function\iref{basic.stc.dynamic.allocation}. If the \grammarterm{new-expression} terminates by throwing an exception, it @@ -1634,7 +1634,7 @@ index a927ad91..168ff89d 100644 is a non-array type, the allocation function's name is \indextext{\idxcode{operator new}}% \indextext{\idxcode{operator delete}}% -@@ -6182,7 +6183,7 @@ the difference between the +@@ -6181,7 +6182,7 @@ the difference between the result of the \grammarterm{new-expression} and the address returned by the allocation function shall be an integral multiple of the strictest fundamental @@ -1643,7 +1643,7 @@ index a927ad91..168ff89d 100644 is no greater than the size of the array being created. \begin{note} \indextext{allocation!alignment storage}% -@@ -6273,7 +6274,7 @@ invocation of \keyword{new} to another. +@@ -6272,7 +6273,7 @@ invocation of \keyword{new} to another. \pnum \begin{note} Unless an allocation function has a non-throwing @@ -1652,7 +1652,7 @@ index a927ad91..168ff89d 100644 it indicates failure to allocate storage by throwing a \indextext{\idxcode{bad_alloc}}% \indexlibraryglobal{bad_alloc}% -@@ -6489,8 +6490,8 @@ to both the allocation and deallocation functions. +@@ -6488,8 +6489,8 @@ to both the allocation and deallocation functions. \pnum \indextext{expression!\idxcode{delete}}% \indextext{\idxcode{delete}}% @@ -1663,7 +1663,7 @@ index a927ad91..168ff89d 100644 \grammarterm{new-expression}. \begin{bnf} -@@ -6593,8 +6594,8 @@ null pointer value, then: +@@ -6592,8 +6593,8 @@ null pointer value, then: \item If the allocation call for the \grammarterm{new-expression} for the object to be deleted was not omitted and the allocation was not extended\iref{expr.new}, the @@ -1674,7 +1674,7 @@ index a927ad91..168ff89d 100644 allocation call of the \grammarterm{new-expression} shall be passed as the first argument to the deallocation function. -@@ -7179,8 +7180,8 @@ The result of a \tcode{.*} expression +@@ -7178,8 +7179,8 @@ The result of a \tcode{.*} expression whose second operand is a pointer to a data member is an lvalue if the first operand is an lvalue and an xvalue otherwise. The result of a \tcode{.*} expression whose second operand is a pointer to a member function is a prvalue. @@ -1685,7 +1685,7 @@ index a927ad91..168ff89d 100644 \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -7209,7 +7210,7 @@ left-to-right. +@@ -7208,7 +7209,7 @@ left-to-right. \pnum The operands of \tcode{*} and \tcode{/} shall have arithmetic or unscoped enumeration type; the operands of \tcode{\%} shall have integral or unscoped @@ -1694,7 +1694,7 @@ index a927ad91..168ff89d 100644 operands and determine the type of the result. \pnum -@@ -7340,7 +7341,7 @@ the behavior is undefined\iref{expr.pre}. +@@ -7339,7 +7340,7 @@ the behavior is undefined\iref{expr.pre}. \pnum For addition or subtraction, if the expressions \tcode{P} or \tcode{Q} have type ``pointer to \cv{}~\tcode{T}'', where \tcode{T} and the array element type @@ -1703,7 +1703,7 @@ index a927ad91..168ff89d 100644 \begin{example} \begin{codeblock} int arr[5] = {1, 2, 3, 4, 5}; -@@ -7431,12 +7432,12 @@ and the other is not, the program is ill-formed. +@@ -7430,12 +7431,12 @@ and the other is not, the program is ill-formed. If both operands have arithmetic types, or one operand has integral type and the other operand has unscoped enumeration type, @@ -1718,7 +1718,7 @@ index a927ad91..168ff89d 100644 other than from an integral type to a floating-point type, the program is ill-formed. -@@ -7478,13 +7479,13 @@ the other operand is of object pointer or array type, +@@ -7477,13 +7478,13 @@ the other operand is of object pointer or array type, array-to-pointer conversions\iref{conv.array}, pointer conversions\iref{conv.ptr}, and @@ -1734,7 +1734,7 @@ index a927ad91..168ff89d 100644 \end{note} In this case, \tcode{p <=> q} is of type \tcode{std::strong_ordering} and -@@ -7573,7 +7574,7 @@ pointer conversions\iref{conv.ptr}, +@@ -7572,7 +7573,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring @@ -1743,7 +1743,7 @@ index a927ad91..168ff89d 100644 After conversions, the operands shall have the same type. \pnum -@@ -7658,10 +7659,10 @@ same type after the specified conversions have been applied. +@@ -7657,10 +7658,10 @@ same type after the specified conversions have been applied. \indextext{comparison!pointer}% \indextext{comparison!pointer to function}% If at least one of the converted operands is a pointer, @@ -1758,7 +1758,7 @@ index a927ad91..168ff89d 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -7678,7 +7679,8 @@ the result of the comparison is unspecified. +@@ -7677,7 +7678,8 @@ the result of the comparison is unspecified. \item Otherwise, if the pointers are both null, both point to the same \indextext{address}% @@ -1768,7 +1768,7 @@ index a927ad91..168ff89d 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -7723,12 +7725,12 @@ bool b1 = (bx == cx); // unspecified +@@ -7722,12 +7724,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -1783,7 +1783,7 @@ index a927ad91..168ff89d 100644 indirection with a hypothetical object of the associated class type were performed, otherwise they compare unequal. \begin{example} -@@ -7968,7 +7970,7 @@ Otherwise, if the second and third operand have different types and +@@ -7967,7 +7969,7 @@ Otherwise, if the second and third operand have different types and either has (possibly cv-qualified) class type, or if both are glvalues of the same value category and the same type except for cv-qualification, an attempt is made to @@ -1792,7 +1792,7 @@ index a927ad91..168ff89d 100644 each of those operands to the type of the other. \begin{note} Properties such as access, whether an operand is a bit-field, or whether -@@ -8010,9 +8012,9 @@ denotes the cv-qualifiers of \tcode{T1}; +@@ -8009,9 +8011,9 @@ denotes the cv-qualifiers of \tcode{T1}; \item otherwise, the target type is the type that \tcode{E2} would have after applying the @@ -1805,7 +1805,7 @@ index a927ad91..168ff89d 100644 standard conversions. \end{itemize} \end{itemize} -@@ -8053,8 +8055,8 @@ are used in place of the original operands for the remainder of this +@@ -8052,8 +8054,8 @@ are used in place of the original operands for the remainder of this subclause. \pnum @@ -1816,7 +1816,7 @@ index a927ad91..168ff89d 100644 performed on the second and third operands. After those conversions, one of the following shall hold: -@@ -8063,16 +8065,16 @@ of the following shall hold: +@@ -8062,16 +8064,16 @@ of the following shall hold: that type and the result is copy-initialized using the selected operand. \item The second and third operands have arithmetic or enumeration type; @@ -1839,7 +1839,7 @@ index a927ad91..168ff89d 100644 pointer type. \item One or both of the second and third operands have pointer-to-member type; -@@ -8256,7 +8258,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. +@@ -8255,7 +8257,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. \pnum \indextext{assignment!conversion by}% If the right operand is an expression, it is implicitly @@ -1848,7 +1848,7 @@ index a927ad91..168ff89d 100644 operand. \pnum -@@ -8270,7 +8272,7 @@ resulting value of the bit-field is +@@ -8269,7 +8271,7 @@ resulting value of the bit-field is An assignment whose left operand is of a volatile-qualified type is deprecated\iref{depr.volatile.type} unless the (possibly parenthesized) assignment is a discarded-value expression or @@ -1857,7 +1857,7 @@ index a927ad91..168ff89d 100644 \pnum The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} -@@ -8342,7 +8344,7 @@ The comma operator groups left-to-right. +@@ -8341,7 +8343,7 @@ The comma operator groups left-to-right. A pair of expressions separated by a comma is evaluated left-to-right; the left expression is @@ -1866,7 +1866,7 @@ index a927ad91..168ff89d 100644 The left expression is sequenced before the right expression\iref{intro.execution}. \indextext{operator!side effects and comma}% -@@ -8493,7 +8495,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. +@@ -8492,7 +8494,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. \end{footnote} \item @@ -1875,7 +1875,7 @@ index a927ad91..168ff89d 100644 it is applied to \begin{itemize} \item -@@ -8515,7 +8517,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -8514,7 +8516,7 @@ that refers to a non-active member of a union or a subobject thereof; \item an lvalue-to-rvalue conversion that is applied to @@ -1884,7 +1884,7 @@ index a927ad91..168ff89d 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -8993,7 +8995,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -8992,7 +8994,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte Such expressions can be used as bit-field lengths\iref{class.bit}, as enumerator initializers if the underlying type is not fixed\iref{dcl.enum}, @@ -1893,7 +1893,7 @@ index a927ad91..168ff89d 100644 \end{note} \pnum -@@ -9678,7 +9680,9 @@ A function or variable is +@@ -9677,7 +9679,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -4175,7 +4175,7 @@ index a29b08ed..b4d55717 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index 9cedb5cf..e6eba26a 100644 +index 402dbea6..af0ec065 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -120,15 +120,15 @@ namespace std { @@ -4264,7 +4264,7 @@ index 9cedb5cf..e6eba26a 100644 2.43.0 -From 9c824a2fa19e94d11ebc070a30c6ca6a4619699f Mon Sep 17 00:00:00 2001 +From 52d980a5a35f0616644bc3effefe0c6d8daf9a1c Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 Subject: [PATCH 3/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and @@ -5712,7 +5712,7 @@ index b4d55717..62226224 100644 2.43.0 -From 76b77b9c9f9d71e1ef38aab0cd533fdaa2e262e0 Mon Sep 17 00:00:00 2001 +From 8d26665b31b1ba860a63e2700db412dfbe02c0c9 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 Subject: [PATCH 4/9] Remove more inappropriate paragraph breaks. @@ -6284,7 +6284,7 @@ index ea065465..869f7588 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 168ff89d..221b68d0 100644 +index 893ddf29..3587d8b5 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -467,7 +467,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -6335,7 +6335,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item If \tcode{T1} and \tcode{T2} are the same type, \tcode{C} is that type. -@@ -2812,7 +2806,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} +@@ -2811,7 +2805,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} \pnum For the purposes of lambda capture, an expression potentially references local entities as follows: @@ -6343,7 +6343,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item An \grammarterm{id-expression} that names a local entity -@@ -3423,7 +3416,6 @@ The \grammarterm{expression} is an unevaluated operand. +@@ -3422,7 +3415,6 @@ The \grammarterm{expression} is an unevaluated operand. Substitution of template arguments (if any) and verification of semantic properties proceed in the following order: @@ -6351,7 +6351,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -3435,7 +3427,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. +@@ -3434,7 +3426,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. \item If the \grammarterm{return-type-requirement} is present, then: @@ -6359,7 +6359,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -4540,7 +4531,6 @@ referred to by \tcode{T}. +@@ -4539,7 +4530,6 @@ referred to by \tcode{T}. \pnum Let \tcode{C} be the class type to which \tcode{T} points or refers. The runtime check logically executes as follows: @@ -6367,7 +6367,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item If, in the most derived object pointed (referred) to by \tcode{v}, \tcode{v} points (refers) to a public base class subobject of a -@@ -5054,7 +5044,6 @@ constness. +@@ -5053,7 +5043,6 @@ constness. The null member pointer value\iref{conv.mem} is converted to the null member pointer value of the destination type. The result of this conversion is unspecified, except in the following cases: @@ -6375,7 +6375,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item Converting a prvalue of type ``pointer to member function'' to a different pointer-to-member-function type and back to its original type -@@ -5489,7 +5478,6 @@ is called a \term{suspension context} of the function. +@@ -5488,7 +5477,6 @@ is called a \term{suspension context} of the function. \pnum Evaluation of an \grammarterm{await-expression} involves the following auxiliary types, expressions, and objects: @@ -6383,7 +6383,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item \placeholder{p} is an lvalue naming the promise -@@ -5872,7 +5860,6 @@ and +@@ -5871,7 +5859,6 @@ and the \grammarterm{new-expression}, then the allocated type is the type deduced for the variable \tcode{x} in the invented declaration\iref{dcl.spec.auto}: @@ -6391,7 +6391,7 @@ index 168ff89d..221b68d0 100644 \begin{codeblock} T x @\textrm{\placeholder{init}}@ ; \end{codeblock} -@@ -6232,7 +6219,6 @@ the alignment argument is removed from the argument list; +@@ -6231,7 +6218,6 @@ the alignment argument is removed from the argument list; otherwise, an argument that is the type's alignment and has type \tcode{std::align_val_t} is added into the argument list immediately after the first argument; @@ -6399,7 +6399,7 @@ index 168ff89d..221b68d0 100644 \end{itemize} and then overload resolution is performed again. -@@ -6310,7 +6296,6 @@ necessarily be the same as that of the block if the object is an array. +@@ -6309,7 +6295,6 @@ necessarily be the same as that of the block if the object is an array. \indextext{\idxcode{new}!default constructor and}% A \grammarterm{new-expression} that creates an object of type \tcode{T} initializes that object as follows: @@ -6407,7 +6407,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item If the \grammarterm{new-initializer} is omitted, the object is default-initialized\iref{dcl.init}. -@@ -6589,7 +6574,6 @@ of their constructor; see~\ref{class.base.init}). +@@ -6588,7 +6573,6 @@ of their constructor; see~\ref{class.base.init}). \pnum If the value of the operand of the \grammarterm{delete-expression} is not a null pointer value, then: @@ -6415,7 +6415,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item If the allocation call for the \grammarterm{new-expression} for the object to -@@ -7434,7 +7418,6 @@ or one operand has integral type and +@@ -7433,7 +7417,6 @@ or one operand has integral type and the other operand has unscoped enumeration type, the \link{usual arithmetic conversions}{expr.arith.conv} are applied to the operands. Then: @@ -6423,7 +6423,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, -@@ -7589,7 +7572,6 @@ is considered to be equivalent to a pointer to a hypothetical array element +@@ -7588,7 +7571,6 @@ is considered to be equivalent to a pointer to a hypothetical array element $n$ for this purpose. \end{footnote} is defined in terms of a partial order consistent with the following rules: @@ -6431,7 +6431,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item If two pointers point to different elements of the same array, or to subobjects thereof, the pointer to the element with the higher subscript -@@ -7602,7 +7584,6 @@ neither member is a subobject of zero size +@@ -7601,7 +7583,6 @@ neither member is a subobject of zero size and their class is not a union. \item Otherwise, neither pointer is required to compare greater than the other. @@ -6439,7 +6439,7 @@ index 168ff89d..221b68d0 100644 \end{itemize} \pnum -@@ -7664,7 +7645,6 @@ If at least one of the converted operands is a pointer, +@@ -7663,7 +7644,6 @@ If at least one of the converted operands is a pointer, \link{qualification conversions}{conv.qual} are performed on both operands to bring them to their \deflink{composite pointer type}{expr.type}. Comparing pointers is defined as follows: @@ -6447,7 +6447,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item If one pointer represents the address of a complete object, and another -@@ -7694,7 +7674,6 @@ qualification conversions\iref{conv.qual} +@@ -7693,7 +7673,6 @@ qualification conversions\iref{conv.qual} are performed on both operands to bring them to their composite pointer type\iref{expr.type}. Comparing pointers to members is defined as follows: @@ -6455,7 +6455,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item If two pointers to members are both the null member pointer value, they compare -@@ -7980,7 +7959,6 @@ Attempts are made to form an implicit conversion sequence +@@ -7979,7 +7958,6 @@ Attempts are made to form an implicit conversion sequence from an operand expression \tcode{E1} of type \tcode{T1} to a target type related to the type \tcode{T2} of the operand expression \tcode{E2} as follows: @@ -6463,7 +6463,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item If \tcode{E2} is an lvalue, the target type is ``lvalue reference to \tcode{T2}'', -@@ -8059,7 +8037,6 @@ subclause. +@@ -8058,7 +8036,6 @@ subclause. and \link{function-to-pointer}{conv.func} standard conversions are performed on the second and third operands. After those conversions, one of the following shall hold: @@ -6471,7 +6471,7 @@ index 168ff89d..221b68d0 100644 \begin{itemize} \item The second and third operands have the same type; the result is of that type and the result is copy-initialized using the selected operand. -@@ -8089,7 +8066,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. +@@ -8088,7 +8065,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. Both the second and third operands have type \tcode{std::nullptr_t} or one has that type and the other is a null pointer constant. The result is of type \tcode{std::nullptr_t}. @@ -7908,7 +7908,7 @@ index 62226224..6b4a0b79 100644 \fmtnontermdef{chrono-format-spec}\br \opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs} diff --git a/source/utilities.tex b/source/utilities.tex -index e6eba26a..d2207210 100644 +index af0ec065..c39c394b 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -289,7 +289,6 @@ Exchanges values stored in two locations. @@ -7971,7 +7971,7 @@ index e6eba26a..d2207210 100644 2.43.0 -From cead0aff18113931a18f9db87b834c6f6f5365cd Mon Sep 17 00:00:00 2001 +From bf467875ecd35410f444e79b97155cfb8c395b76 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 Subject: [PATCH 5/9] Use monospace font for code in figures. @@ -8118,7 +8118,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From 751755a7c599e84c57bfdeb91b2a593fbe80b4db Mon Sep 17 00:00:00 2001 +From 546cf5258e2d52629c3b8e6015d36e1ac8fcaeec Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 Subject: [PATCH 6/9] [uaxid] Mark code that's not to be highlighted. @@ -8146,7 +8146,7 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From 4188ff9acbe46a32bb0707ae2217f99a9e2c78c2 Mon Sep 17 00:00:00 2001 +From eb4a13aa7cd2cf0fd5cfb66b12e200b7ef6b1a24 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 Subject: [PATCH 7/9] Use cxxdraft-htmlgen macros more. @@ -10645,7 +10645,7 @@ index 6b4a0b79..5e264ea3 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index d2207210..4182d9ba 100644 +index c39c394b..ba05d89f 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -277,9 +277,9 @@ template @@ -11141,7 +11141,7 @@ index d2207210..4182d9ba 100644 2.43.0 -From 7e4b50ef5f4d48cd5d4a40d84305a45dfba5a23d Mon Sep 17 00:00:00 2001 +From 7f46bb5cd73f8d0aa7410bfc07c19029787f6d90 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 Subject: [PATCH 8/9] Remove awkward \linebreaks. @@ -11631,7 +11631,7 @@ index db46040d..53723351 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index 4182d9ba..cb48e529 100644 +index ba05d89f..c03201fa 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -2381,7 +2381,7 @@ equals \tcode{tuple_size_v>}, @@ -11674,7 +11674,7 @@ index 4182d9ba..cb48e529 100644 2.43.0 -From bf5db43c8514610a4cccbb355049eb5ba3819046 Mon Sep 17 00:00:00 2001 +From 7b7a1a758f9b27ba4976db4caa01e43821e1e699 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 25 Dec 2025 12:43:53 +0100 Subject: [PATCH 9/9] Use \literalterminal more. diff --git a/lastbuild.sig b/lastbuild.sig index 8b1d05b8f2..bad5f12ef1 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ htmlgen 63bc5929dc4fa6bb7448390ecec586c8069516b7 -draft 9b656eb6984f5b2726abb6a49d88f64ffdbe57be -e85cafa93444a46087d5141c83095da1cae4bca7 htmlgen.patch +draft 1fad6accf1aa93fb8803936ac2c2834340357bce +3070135b818ce3bb22deafe0ec55bdcdf690ed6e htmlgen.patch From ce221e8e8cfe1e7c09d0e95bd4723498edd2155c Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Tue, 12 May 2026 12:32:35 -0500 Subject: [PATCH 30/36] Update --- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 132 +++++++++++++++++++++++++------------------------- lastbuild.sig | 4 +- 4 files changed, 70 insertions(+), 70 deletions(-) diff --git a/draft b/draft index 1fad6accf1..aaecb9378d 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 1fad6accf1aa93fb8803936ac2c2834340357bce +Subproject commit aaecb9378d0766482cbb46e6bbe605edfc0781aa diff --git a/gh-pages b/gh-pages index 51b40df41c..b1102cf744 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 51b40df41cbd00a35ee626bee78acb568687e52b +Subproject commit b1102cf744bbc95fd433320282abee6b58f55167 diff --git a/htmlgen.patch b/htmlgen.patch index fae5a240e1..be6fb53190 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From c84e3f2ed2c298d39367f7a741a5d654d247c5af Mon Sep 17 00:00:00 2001 +From cfef94fb6232496a51582eb9fc9eea8987e68449 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on @@ -10,7 +10,7 @@ Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index 3285447e..d20703a0 100644 +index 98705dfb..a22e5e30 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -342,7 +342,7 @@ Given @@ -59,7 +59,7 @@ index 3285447e..d20703a0 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 357ab782..924905e0 100644 +index eec3be90..0ea2a413 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2938,7 +2938,7 @@ struct s2 { @@ -75,7 +75,7 @@ index 357ab782..924905e0 100644 2.43.0 -From 390a70e372f44ad0db75c7f914d2e23ecaa9b003 Mon Sep 17 00:00:00 2001 +From 2879897dfe61d7e64d62f61275844d48b7fa15ac Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 Subject: [PATCH 2/9] Use new link macros. @@ -133,7 +133,7 @@ index 8b2f530d..cd4ba8fb 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index d20703a0..4b9c8b5b 100644 +index a22e5e30..eab80b45 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -180,7 +180,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -432,7 +432,7 @@ index d20703a0..4b9c8b5b 100644 -if $E$ is a function call\iref{expr.call} or implicitly invokes a function, +if $E$ is a \link{function call}{expr.call} or implicitly invokes a function, the constituent expressions of each default argument\iref{dcl.fct.default} - used in the call, or + used in the call, and \item @@ -6463,7 +6462,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope A \defn{full-expression} is @@ -591,7 +591,7 @@ index d1e15a6e..42828a4b 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index 2aee316d..796a6263 100644 +index a0095c26..0e937574 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -6125,14 +6125,14 @@ namespace std { @@ -776,7 +776,7 @@ index 2aee316d..796a6263 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index 3ab79575..d488264d 100644 +index 627360a2..cea5493a 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -788,7 +788,7 @@ index 3ab79575..d488264d 100644 \end{note} \pnum -@@ -814,10 +814,10 @@ an alias template or a type template template parameter. +@@ -815,10 +815,10 @@ an alias template or a type template template parameter. A \grammarterm{simple-template-id} that names a class template specialization is a \grammarterm{class-name}\iref{class.name}. If a \grammarterm{typedef-name} is used to identify the subject of an @@ -803,7 +803,7 @@ index 3ab79575..d488264d 100644 \end{note} \begin{example} \begin{codeblock} -@@ -1150,7 +1150,7 @@ If an inline function or variable that is attached to a named module +@@ -1151,7 +1151,7 @@ If an inline function or variable that is attached to a named module is declared in a definition domain, it shall be defined in that domain. \begin{note} @@ -812,7 +812,7 @@ index 3ab79575..d488264d 100644 In the global module, a function defined within a class definition is implicitly inline\iref{class.mfct,class.friend}. \end{note} -@@ -1289,7 +1289,7 @@ the object referenced is a non-const object and can be modified through +@@ -1290,7 +1290,7 @@ the object referenced is a non-const object and can be modified through some other access path. \begin{note} Cv-qualifiers are supported by the type system so that they cannot be @@ -821,7 +821,7 @@ index 3ab79575..d488264d 100644 \end{note} \pnum -@@ -1733,8 +1733,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; +@@ -1734,8 +1734,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; \item otherwise, \tcode{decltype($E$)} is the type of $E$. \end{itemize} @@ -831,7 +831,7 @@ index 3ab79575..d488264d 100644 \begin{example} \begin{codeblock} -@@ -1933,7 +1932,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. +@@ -1934,7 +1933,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. If the \grammarterm{init-declarator-list} contains more than one \grammarterm{init-declarator}, they shall all form declarations of variables. The type of each declared variable is determined @@ -840,7 +840,7 @@ index 3ab79575..d488264d 100644 and if the type that replaces the placeholder type is not the same in each deduction, the program is ill-formed. -@@ -2075,7 +2074,7 @@ A function declared with a return type that uses a placeholder type shall not +@@ -2076,7 +2075,7 @@ A function declared with a return type that uses a placeholder type shall not be a coroutine\iref{dcl.fct.def.coroutine}. \pnum @@ -849,7 +849,7 @@ index 3ab79575..d488264d 100644 instantiation of an entity declared using a placeholder type, but it also does not prevent that entity from being instantiated as needed to determine its type. -@@ -2290,7 +2289,7 @@ in the \grammarterm{type-specifier-seq} +@@ -2291,7 +2290,7 @@ in the \grammarterm{type-specifier-seq} in the \grammarterm{new-type-id} or \grammarterm{type-id} of a \grammarterm{new-expression}\iref{expr.new}, as the \grammarterm{simple-type-specifier} @@ -858,7 +858,7 @@ index 3ab79575..d488264d 100644 or as the \grammarterm{type-specifier} in the \grammarterm{parameter-declaration} of a \grammarterm{template-parameter}\iref{temp.param}. -@@ -4500,7 +4499,7 @@ int a; +@@ -4501,7 +4500,7 @@ int a; int f(int a, int b = a); // error: parameter \tcode{a} used as default argument typedef int I; int g(float I, int b = I(2)); // error: parameter \tcode{I} found @@ -867,7 +867,7 @@ index 3ab79575..d488264d 100644 \end{codeblock} \end{example} A non-static member shall not be designated in a default argument unless -@@ -6225,15 +6224,15 @@ This requires a conversion +@@ -6226,15 +6225,15 @@ This requires a conversion function\iref{class.conv.fct} returning a reference type. \end{footnote} (this conversion is selected by enumerating the applicable conversion @@ -887,7 +887,7 @@ index 3ab79575..d488264d 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7746,7 +7745,7 @@ the initializer is +@@ -7747,7 +7746,7 @@ the initializer is where \tcode{get} undergoes argument-dependent lookup\iref{basic.lookup.argdep}. In either case, \tcode{get} is interpreted as a \grammarterm{template-id}. \begin{note} @@ -896,7 +896,7 @@ index 3ab79575..d488264d 100644 \end{note} In either case, \exposid{e} is an lvalue if the type of the entity \exposid{e} is an lvalue reference and an xvalue otherwise. -@@ -7897,7 +7896,7 @@ is not looked up and is introduced by +@@ -7898,7 +7897,7 @@ is not looked up and is introduced by the \grammarterm{enum-specifier} or \grammarterm{opaque-enum-declaration}. If the \grammarterm{enum-head-name} of an \grammarterm{opaque-enum-declaration} contains a \grammarterm{nested-name-specifier}, @@ -905,7 +905,7 @@ index 3ab79575..d488264d 100644 \pnum \indextext{constant!enumeration}% -@@ -8062,7 +8061,7 @@ if they have the same underlying type. +@@ -8063,7 +8062,7 @@ if they have the same underlying type. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -914,7 +914,7 @@ index 3ab79575..d488264d 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8345,7 +8344,7 @@ appertains to the namespace being defined or extended. +@@ -8346,7 +8345,7 @@ appertains to the namespace being defined or extended. Members of an inline namespace can be used in most respects as though they were members of the innermost enclosing namespace. Specifically, the inline namespace and its enclosing namespace are both added to the set of associated namespaces used in @@ -923,7 +923,7 @@ index 3ab79575..d488264d 100644 and a \grammarterm{using-directive}\iref{namespace.udir} that names the inline namespace is implicitly inserted into the enclosing namespace as for an unnamed namespace\iref{namespace.unnamed}. Furthermore, each -@@ -9178,7 +9177,7 @@ different language linkages are distinct types even if they are +@@ -9179,7 +9178,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -932,7 +932,7 @@ index 3ab79575..d488264d 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9508,18 +9507,18 @@ For each individual attribute, the form of the +@@ -9509,18 +9508,18 @@ For each individual attribute, the form of the \pnum In an \grammarterm{attribute-list}, an ellipsis may appear only if that \grammarterm{attribute}'s specification permits it. An \grammarterm{attribute} followed @@ -956,7 +956,7 @@ index 3ab79575..d488264d 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9637,7 +9636,7 @@ declaration, the program is ill-formed. +@@ -9638,7 +9637,7 @@ declaration, the program is ill-formed. \pnum An \grammarterm{alignment-specifier} of the form \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same @@ -965,7 +965,7 @@ index 3ab79575..d488264d 100644 \pnum The alignment requirement of an entity is the strictest nonzero alignment -@@ -9817,7 +9816,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9818,7 +9817,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -1144,7 +1144,7 @@ index df3b639d..abd4aef1 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index 924905e0..893ddf29 100644 +index 0ea2a413..24af225d 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1893,7 +1893,7 @@ index 924905e0..893ddf29 100644 \end{note} \pnum -@@ -9677,7 +9679,9 @@ A function or variable is +@@ -9680,7 +9682,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -2001,7 +2001,7 @@ index 3e24d06d..b5e513df 100644 translation units to form a complete \Cpp{} program\iref{lex.phases}.% \indextext{conformance requirements!library|)} diff --git a/source/iostreams.tex b/source/iostreams.tex -index 3320a770..aff85000 100644 +index 615ea941..ad9e3afe 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -558,7 +558,7 @@ is initialized, @@ -2644,7 +2644,7 @@ index e0596a32..877f21f3 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index f5f24c88..b21d7146 100644 +index 544aa428..f3299984 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -3985,7 +3985,7 @@ index 36975546..ea6af80c 100644 allocation function\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index a0d0f855..d3c9e517 100644 +index 53bec754..7a2d110e 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4264,7 +4264,7 @@ index 402dbea6..af0ec065 100644 2.43.0 -From 52d980a5a35f0616644bc3effefe0c6d8daf9a1c Mon Sep 17 00:00:00 2001 +From 41e5a2d3fa6d05b949f0ca91e997d6a792e762e1 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 Subject: [PATCH 3/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and @@ -5712,7 +5712,7 @@ index b4d55717..62226224 100644 2.43.0 -From 8d26665b31b1ba860a63e2700db412dfbe02c0c9 Mon Sep 17 00:00:00 2001 +From 53d23fcadc9df8c3555b3e41d6dcfcd5f9ef2057 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 Subject: [PATCH 4/9] Remove more inappropriate paragraph breaks. @@ -5783,7 +5783,7 @@ index cd4ba8fb..6eaef6b7 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index 4b9c8b5b..61d14b18 100644 +index eab80b45..db5f28a2 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -312,7 +312,6 @@ int X::y = 1; // defines \tcode{X::y} @@ -6052,7 +6052,7 @@ index 42828a4b..3e64abc8 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 796a6263..62d8c723 100644 +index 0e937574..0be602a1 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6143,10 +6143,10 @@ index 796a6263..62d8c723 100644 \item \tcode{Extents::static_extent($k$)} diff --git a/source/declarations.tex b/source/declarations.tex -index d488264d..f30652b2 100644 +index cea5493a..38e1f367 100644 --- a/source/declarations.tex +++ b/source/declarations.tex -@@ -1593,7 +1593,6 @@ a partial specialization\iref{temp.spec.partial}, +@@ -1594,7 +1594,6 @@ a partial specialization\iref{temp.spec.partial}, an explicit instantiation\iref{temp.explicit}, or it has one of the following forms: @@ -6154,7 +6154,7 @@ index d488264d..f30652b2 100644 \begin{ncsimplebnf} class-key \opt{attribute-specifier-seq} identifier \terminal{;}\br class-key \opt{attribute-specifier-seq} simple-template-id \terminal{;} -@@ -2498,7 +2497,6 @@ the \grammarterm{declarator} declares a function. +@@ -2499,7 +2498,6 @@ the \grammarterm{declarator} declares a function. \pnum Declarators have the syntax @@ -6162,7 +6162,7 @@ index d488264d..f30652b2 100644 \begin{bnf} \nontermdef{declarator}\br ptr-declarator\br -@@ -4404,7 +4402,6 @@ In the following code, +@@ -4405,7 +4403,6 @@ In the following code, \tcode{g} will be called with the value \tcode{f(2)}: @@ -6170,7 +6170,7 @@ index d488264d..f30652b2 100644 \begin{codeblock} int a = 1; int f(int); -@@ -5074,7 +5071,6 @@ To +@@ -5075,7 +5072,6 @@ To an object of type \tcode{T} means: @@ -6178,7 +6178,7 @@ index d488264d..f30652b2 100644 \begin{itemize} \item If -@@ -5284,7 +5280,6 @@ is sequenced before those associated with +@@ -5285,7 +5281,6 @@ is sequenced before those associated with the initialization of the $j^\text{th}$ element. \item Otherwise, if the destination type is a class type: @@ -6186,7 +6186,7 @@ index d488264d..f30652b2 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -6202,7 +6197,6 @@ a program that necessitates such a binding is ill-formed. +@@ -6203,7 +6198,6 @@ a program that necessitates such a binding is ill-formed. A reference to type ``\cvqual{cv1} \tcode{T1}'' is initialized by an expression of type ``\cvqual{cv2} \tcode{T2}'' as follows:% \indextext{binding!reference} @@ -6194,7 +6194,7 @@ index d488264d..f30652b2 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6670,7 +6664,6 @@ int j { 1 }; // initialize to 1 +@@ -6671,7 +6665,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -6202,7 +6202,7 @@ index d488264d..f30652b2 100644 \end{itemize} \pnum -@@ -7756,7 +7749,6 @@ as $\tcode{T}_i$ if the initializer is a prvalue, +@@ -7757,7 +7750,6 @@ as $\tcode{T}_i$ if the initializer is a prvalue, as ``lvalue reference to $\tcode{T}_i$'' if the initializer is an lvalue, or as ``rvalue reference to $\tcode{T}_i$'' otherwise, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -6210,7 +6210,7 @@ index d488264d..f30652b2 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7888,7 +7880,6 @@ struct S { +@@ -7889,7 +7881,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6218,7 +6218,7 @@ index d488264d..f30652b2 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7984,7 +7975,6 @@ If the underlying +@@ -7985,7 +7976,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6226,7 +6226,7 @@ index d488264d..f30652b2 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8442,7 +8432,6 @@ void h() { +@@ -8443,7 +8433,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} according to the following grammar: @@ -6234,7 +6234,7 @@ index d488264d..f30652b2 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8616,7 +8605,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8617,7 +8606,6 @@ not declare functions or function templates, the use of the name is ill-formed\i In particular, the name of a variable, function or enumerator does not hide the name of a class or enumeration declared in a different namespace. For example, @@ -6242,7 +6242,7 @@ index d488264d..f30652b2 100644 \begin{codeblock} namespace A { class X { }; -@@ -9179,7 +9167,6 @@ otherwise identical. +@@ -9180,7 +9168,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6250,7 +6250,7 @@ index d488264d..f30652b2 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -10056,7 +10043,6 @@ may be applied to a function or a lambda call operator or +@@ -10057,7 +10044,6 @@ may be applied to a function or a lambda call operator or to the declaration of a class or enumeration. An \grammarterm{attribute-argument-clause} may be present and, if present, shall have the form: @@ -6284,7 +6284,7 @@ index ea065465..869f7588 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 893ddf29..3587d8b5 100644 +index 24af225d..b23928b0 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -467,7 +467,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -6548,7 +6548,7 @@ index dc26444a..ac4ac504 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index aff85000..4b7233de 100644 +index ad9e3afe..a046490d 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -2105,14 +2105,12 @@ does nothing. @@ -6907,7 +6907,7 @@ index be9812fa..fb901823 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index 743d89ac..37e97efd 100644 +index 7c1dbfb9..eda69180 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -1684,7 +1684,6 @@ The predicate condition for a template specialization \tcode{is_convertible constexpr complex operator+(const complex& lhs); @@ -7618,7 +7618,7 @@ index ea6af80c..23c257ac 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index d3c9e517..a7735840 100644 +index 7a2d110e..6b8778ac 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -7365,7 +7365,6 @@ and visible to other threads. @@ -7971,7 +7971,7 @@ index af0ec065..c39c394b 100644 2.43.0 -From bf467875ecd35410f444e79b97155cfb8c395b76 Mon Sep 17 00:00:00 2001 +From 60545dee60f2abfb85a8ab5fd8e069a06de25ed8 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 Subject: [PATCH 5/9] Use monospace font for code in figures. @@ -8118,7 +8118,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From 546cf5258e2d52629c3b8e6015d36e1ac8fcaeec Mon Sep 17 00:00:00 2001 +From cc7685c521be604401667ec9815e3e955fe5ad09 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 Subject: [PATCH 6/9] [uaxid] Mark code that's not to be highlighted. @@ -8146,7 +8146,7 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From eb4a13aa7cd2cf0fd5cfb66b12e200b7ef6b1a24 Mon Sep 17 00:00:00 2001 +From abbb3bbd075250a722a3ed158747251af8d03697 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 Subject: [PATCH 7/9] Use cxxdraft-htmlgen macros more. @@ -8918,7 +8918,7 @@ index ac4ac504..dffbe172 100644 \begin{itemize} \item for the first specialization, \tcode{volatile VA::type}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index 4b7233de..8af4eea6 100644 +index a046490d..11bf87e7 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -1684,10 +1684,10 @@ An \tcode{fpos} type specifies file position information. @@ -9281,7 +9281,7 @@ index fb901823..2dea2cc5 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index 37e97efd..995ac6ef 100644 +index eda69180..b61dc003 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -136,12 +136,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -9877,7 +9877,7 @@ index 37e97efd..995ac6ef 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index 13c2330a..cc6ba680 100644 +index a0370273..5304cf1b 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul @@ -10036,7 +10036,7 @@ index 90a3972a..5d4fbbf8 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index a7735840..db46040d 100644 +index 6b8778ac..693a8b4c 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -11141,7 +11141,7 @@ index c39c394b..ba05d89f 100644 2.43.0 -From 7f46bb5cd73f8d0aa7410bfc07c19029787f6d90 Mon Sep 17 00:00:00 2001 +From ceb985047db6f23ba96c440e695b7cda83211715 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 Subject: [PATCH 8/9] Remove awkward \linebreaks. @@ -11180,7 +11180,7 @@ index b7fd050e..8cbeb8e6 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index 62d8c723..8c6f18c1 100644 +index 0be602a1..1bdcf098 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1461,7 +1461,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11424,7 +11424,7 @@ index 2dea2cc5..e1572fe6 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index 995ac6ef..ccf1ed9a 100644 +index b61dc003..57e3b12b 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -2273,7 +2273,7 @@ present as follows: @@ -11591,7 +11591,7 @@ index 912546d8..ec7898d1 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index db46040d..53723351 100644 +index 693a8b4c..9a4c2a31 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -3492,7 +3492,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, @@ -11674,7 +11674,7 @@ index ba05d89f..c03201fa 100644 2.43.0 -From 7b7a1a758f9b27ba4976db4caa01e43821e1e699 Mon Sep 17 00:00:00 2001 +From 3826c56a6e20a012815bac083e355c92926f71b7 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 25 Dec 2025 12:43:53 +0100 Subject: [PATCH 9/9] Use \literalterminal more. diff --git a/lastbuild.sig b/lastbuild.sig index bad5f12ef1..588a0930d8 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ htmlgen 63bc5929dc4fa6bb7448390ecec586c8069516b7 -draft 1fad6accf1aa93fb8803936ac2c2834340357bce -3070135b818ce3bb22deafe0ec55bdcdf690ed6e htmlgen.patch +draft aaecb9378d0766482cbb46e6bbe605edfc0781aa +68db5a559863267bad23f556fdf4d2c907b772f3 htmlgen.patch From af433bc595b89f5beaa3dbf2e3fd85be08978421 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Wed, 15 Jul 2026 23:57:31 -0500 Subject: [PATCH 31/36] Update --- cxxdraft-htmlgen | 2 +- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 1726 +++++++++++++++++++++++----------------------- lastbuild.sig | 6 +- 5 files changed, 878 insertions(+), 860 deletions(-) diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen index 63bc5929dc..fa47c53345 160000 --- a/cxxdraft-htmlgen +++ b/cxxdraft-htmlgen @@ -1 +1 @@ -Subproject commit 63bc5929dc4fa6bb7448390ecec586c8069516b7 +Subproject commit fa47c53345fbb32375bd3d54a1b64452cb5bbef4 diff --git a/draft b/draft index aaecb9378d..254debad79 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit aaecb9378d0766482cbb46e6bbe605edfc0781aa +Subproject commit 254debad796f8f4a544b20561a14cf7630b8c69c diff --git a/gh-pages b/gh-pages index b1102cf744..2e35adb34d 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit b1102cf744bbc95fd433320282abee6b58f55167 +Subproject commit 2e35adb34dd873f67b2e2164f54e2d4b15795aca diff --git a/htmlgen.patch b/htmlgen.patch index be6fb53190..478d86b692 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,8 +1,8 @@ -From cfef94fb6232496a51582eb9fc9eea8987e68449 Mon Sep 17 00:00:00 2001 +From f9dfb400e3de5e852317285abcf775d2176d00f1 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 -Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on - smaller (e.g. half-screen) window sizes. +Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout + on smaller (e.g. half-screen) window sizes. --- source/basic.tex | 26 +++++++++++++------------- @@ -10,7 +10,7 @@ Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index 98705dfb..a22e5e30 100644 +index d82ac7a8..0ef628a3 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -342,7 +342,7 @@ Given @@ -22,7 +22,7 @@ index 98705dfb..a22e5e30 100644 }; int main() { -@@ -2652,23 +2652,23 @@ namespace AB { +@@ -2654,23 +2654,23 @@ namespace AB { void h() { @@ -59,10 +59,10 @@ index 98705dfb..a22e5e30 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index eec3be90..0ea2a413 100644 +index 1047e1b9..00e1c3a9 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -2938,7 +2938,7 @@ struct s2 { +@@ -2989,7 +2989,7 @@ struct s2 { } auto g() { return [] { @@ -75,10 +75,10 @@ index eec3be90..0ea2a413 100644 2.43.0 -From 2879897dfe61d7e64d62f61275844d48b7fa15ac Mon Sep 17 00:00:00 2001 +From b161727beec2ef474584e7c96d2b2287815daf00 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 -Subject: [PATCH 2/9] Use new link macros. +Subject: [PATCH 02/10] Use new link macros. --- source/algorithms.tex | 4 +- @@ -87,7 +87,7 @@ Subject: [PATCH 2/9] Use new link macros. source/compatibility.tex | 4 +- source/concepts.tex | 12 +- source/containers.tex | 48 ++++---- - source/declarations.tex | 57 +++++---- + source/declarations.tex | 55 ++++----- source/diagnostics.tex | 6 +- source/exceptions.tex | 34 +++--- source/expressions.tex | 258 ++++++++++++++++++++------------------- @@ -96,7 +96,7 @@ Subject: [PATCH 2/9] Use new link macros. source/iostreams.tex | 74 +++++------ source/iterators.tex | 6 +- source/lex.tex | 6 +- - source/lib-intro.tex | 69 +++++------ + source/lib-intro.tex | 67 +++++----- source/limits.tex | 2 +- source/numerics.tex | 55 ++++----- source/overloading.tex | 64 +++++----- @@ -108,10 +108,10 @@ Subject: [PATCH 2/9] Use new link macros. source/threads.tex | 35 +++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 573 insertions(+), 585 deletions(-) + 27 files changed, 571 insertions(+), 583 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 8b2f530d..cd4ba8fb 100644 +index 95b1a818..450e1200 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -5,7 +5,7 @@ @@ -123,7 +123,7 @@ index 8b2f530d..cd4ba8fb 100644 \pnum The following subclauses describe components for -@@ -10225,7 +10225,7 @@ In either case, twice as many projections as comparisons. +@@ -10224,7 +10224,7 @@ In either case, twice as many projections as comparisons. \pnum \remarks @@ -133,7 +133,7 @@ index 8b2f530d..cd4ba8fb 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index a22e5e30..eab80b45 100644 +index 0ef628a3..eeb815cc 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -180,7 +180,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -208,8 +208,8 @@ index a22e5e30..eab80b45 100644 \pnum Every program shall contain at least one definition of every function or variable that is odr-used in that program --outside of a discarded statement\iref{stmt.if}; no diagnostic required. -+outside of a \deflink{discarded statement}{stmt.if}; no diagnostic required. +-outside of a discarded statement\iref{stmt.if}; no diagnostic required\ifndrdef{basic.def.odr.minimum.one.def}. ++outside of a \deflink{discarded statement}{stmt.if}; no diagnostic required\ifndrdef{basic.def.odr.minimum.one.def}. The definition can appear explicitly in the program, it can be found in the standard or a user-defined library, or (when appropriate) it is implicitly defined (see~\ref{class.default.ctor}, \ref{class.copy.ctor}, @@ -235,7 +235,7 @@ index a22e5e30..eab80b45 100644 \item a class with a base class of type \tcode{T} is defined\iref{class.derived}, or \item an lvalue of type \tcode{T} is assigned to\iref{expr.assign}, or -@@ -2945,7 +2944,7 @@ are attached to the same module. +@@ -2947,7 +2946,7 @@ are attached to the same module. \indextext{linkage!\idxcode{inline} and}% \indextext{\idxcode{inline}!linkage of}% The name of an entity @@ -244,7 +244,7 @@ index a22e5e30..eab80b45 100644 has internal linkage if it is the name of \begin{itemize} \item -@@ -2986,7 +2985,7 @@ typedef declaration in which the class has the typedef name for linkage +@@ -2988,7 +2987,7 @@ typedef declaration in which the class has the typedef name for linkage purposes\iref{dcl.typedef}; or \item \indextext{enumeration!linkage of}% @@ -253,7 +253,7 @@ index a22e5e30..eab80b45 100644 in a typedef declaration in which the enumeration has the typedef name for linkage purposes\iref{dcl.typedef}; or \item an unnamed enumeration -@@ -3062,7 +3061,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. +@@ -3064,7 +3063,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. \pnum \indextext{linkage!no}% Names not covered by these rules have no linkage. Moreover, except as @@ -262,7 +262,7 @@ index a22e5e30..eab80b45 100644 linkage. \pnum -@@ -3421,8 +3420,8 @@ features of the language, such as references and virtual functions, might +@@ -3424,8 +3423,8 @@ features of the language, such as references and virtual functions, might involve additional memory locations that are not accessible to programs but are managed by the implementation. \end{note} @@ -273,7 +273,7 @@ index a22e5e30..eab80b45 100644 locations without interfering with each other. \pnum -@@ -3466,15 +3465,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but +@@ -3469,15 +3468,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but The constructs in a \Cpp{} program create, destroy, refer to, access, and manipulate objects. An \defn{object} is created @@ -292,7 +292,7 @@ index a22e5e30..eab80b45 100644 and in its period of destruction\iref{class.cdtor}. \begin{note} -@@ -3608,7 +3607,7 @@ A \defn{potentially-overlapping subobject} is either: +@@ -3611,7 +3610,7 @@ A \defn{potentially-overlapping subobject} is either: \begin{itemize} \item a base class subobject, or \item a non-static data member @@ -301,7 +301,7 @@ index a22e5e30..eab80b45 100644 \end{itemize} \pnum -@@ -3629,7 +3628,7 @@ Otherwise, the circumstances under which the object has zero size +@@ -3632,7 +3631,7 @@ Otherwise, the circumstances under which the object has zero size are \impldef{which non-standard-layout objects containing no data are considered empty}. \indextext{most derived object!bit-field}% @@ -310,7 +310,7 @@ index a22e5e30..eab80b45 100644 an object with nonzero size shall occupy one or more bytes of storage, including every byte that is occupied in full or in part -@@ -4269,16 +4268,16 @@ the result of the evaluation is that erroneous value: +@@ -4274,16 +4273,16 @@ the result of the evaluation is that erroneous value: is produced by the evaluation of: \begin{itemize} \item @@ -330,7 +330,7 @@ index a22e5e30..eab80b45 100644 \end{itemize} then the result of the operation is an indeterminate value or that erroneous value, respectively. -@@ -4469,8 +4468,8 @@ specified in~\ref{class.copy.elision}. +@@ -4474,8 +4473,8 @@ specified in~\ref{class.copy.elision}. \indextext{storage duration!dynamic|(} \pnum @@ -341,7 +341,7 @@ index a22e5e30..eab80b45 100644 \indextext{\idxcode{new}}% \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using \indextext{\idxcode{delete}}% -@@ -4634,9 +4633,9 @@ that would match a handler\iref{except.handle} of type +@@ -4639,9 +4638,9 @@ that would match a handler\iref{except.handle} of type \tcode{std::bad_alloc}\iref{bad.alloc}. \pnum @@ -354,7 +354,7 @@ index a22e5e30..eab80b45 100644 a coroutine state\iref{dcl.fct.def.coroutine}, or called indirectly through calls to the functions in the \Cpp{} standard library. -@@ -5161,9 +5160,9 @@ shall be destroyed before +@@ -5167,9 +5166,9 @@ shall be destroyed before impose requirements on implementations regarding the representation of types. There are two kinds of types: fundamental types and compound types. @@ -367,7 +367,7 @@ index a22e5e30..eab80b45 100644 \end{note} \pnum -@@ -5337,7 +5336,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, +@@ -5288,7 +5287,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, pointer types, pointer-to-member types\iref{basic.compound}, \tcode{std::meta::\brk{}info}, \tcode{std::nullptr_t}, and @@ -376,7 +376,7 @@ index a22e5e30..eab80b45 100644 types are collectively called \defnadjx{scalar}{types}{type}. \label{term.trivially.copyable.type}% -@@ -5362,7 +5361,7 @@ A type is a \defnadj{literal}{type} if it is: +@@ -5313,7 +5312,7 @@ A type is a \defnadj{literal}{type} if it is: \item a scalar type; or \item a reference type; or \item an array of literal type; or @@ -385,7 +385,7 @@ index a22e5e30..eab80b45 100644 has all of the following properties: \begin{itemize} \item it has a constexpr destructor\iref{dcl.constexpr}, -@@ -5396,8 +5395,8 @@ will be usable in a constant expression. +@@ -5347,8 +5346,8 @@ will be usable in a constant expression. Two types \cvqual{cv1} \tcode{T1} and \cvqual{cv2} \tcode{T2} are \defnadjx{layout-compatible}{types}{type} if \tcode{T1} and \tcode{T2} are the same type, @@ -394,9 +394,9 @@ index a22e5e30..eab80b45 100644 +\deflinkx{layout-compatible enumerations}{layout-compatible!enumeration}{dcl.enum}, or +\deflinkx{layout-compatible standard-layout class types}{layout-compatible!class}{class.mem}. - \pnum - A type is \defn{consteval-only} if it is -@@ -5971,7 +5970,7 @@ ordinary pointers to objects or functions. + \rSec2[basic.types.trivial]{Trivially copyable types} + +@@ -5978,7 +5977,7 @@ ordinary pointers to objects or functions. which identify members of a given type within objects of a given class, \ref{dcl.mptr}. Pointers to data members and pointers to member functions are collectively @@ -405,7 +405,7 @@ index a22e5e30..eab80b45 100644 \end{itemize} \pnum -@@ -6049,7 +6048,7 @@ layout-compatible types shall +@@ -6056,7 +6055,7 @@ layout-compatible types shall have the same value representation and alignment requirements\iref{basic.align}. \begin{note} @@ -414,7 +414,7 @@ index a22e5e30..eab80b45 100644 representation, but their range of valid values is restricted by the extended alignment requirement. \end{note} -@@ -6386,8 +6385,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. +@@ -6405,8 +6404,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. \indextext{program execution|(} \pnum @@ -425,7 +425,7 @@ index a22e5e30..eab80b45 100644 block. Such an object exists and retains its last-stored value during the execution of the block and while the block is suspended (by a call of a function, suspension of a coroutine\iref{expr.await}, or receipt of a signal). -@@ -6432,7 +6431,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, +@@ -6451,7 +6450,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, the initialization of the entities captured by copy and the constituent expressions of the \grammarterm{initializer} of the \grammarterm{init-capture}{s}, \item @@ -434,7 +434,7 @@ index a22e5e30..eab80b45 100644 the constituent expressions of each default argument\iref{dcl.fct.default} used in the call, and \item -@@ -6463,7 +6462,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope +@@ -6482,7 +6481,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope A \defn{full-expression} is \begin{itemize} \item @@ -444,7 +444,7 @@ index a22e5e30..eab80b45 100644 a \grammarterm{constant-expression}\iref{expr.const.core}, \item diff --git a/source/classes.tex b/source/classes.tex -index 78a504f0..8c2f3c53 100644 +index 766503df..e41b209a 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -188,10 +188,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: @@ -518,7 +518,7 @@ index 78a504f0..8c2f3c53 100644 if it is invoked or as specified in~\ref{expr.new}, \ref{stmt.return}, \ref{dcl.init.aggr}, \ref{class.base.init}, and~\ref{except.throw}. -@@ -6344,7 +6344,7 @@ associated with a \grammarterm{try-block} (if there is one), +@@ -6353,7 +6353,7 @@ associated with a \grammarterm{try-block} (if there is one), the copy-initialization of the exception object can be omitted by constructing $o$ directly into the exception object; @@ -528,10 +528,10 @@ index 78a504f0..8c2f3c53 100644 corresponding parameter if the meaning of the program will be unchanged except for the execution of a constructor and destructor for the parameter copy object; diff --git a/source/compatibility.tex b/source/compatibility.tex -index e3512400..cdca4c22 100644 +index 206e211e..46dcbe79 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -1981,8 +1981,8 @@ deallocation functions\iref{expr.new}. +@@ -2091,8 +2091,8 @@ deallocation functions\iref{expr.new}. A conditional expression with a throw expression as its second or third operand keeps the type and value category of the other operand. \rationale @@ -591,10 +591,10 @@ index d1e15a6e..42828a4b 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index a0095c26..0e937574 100644 +index 586663f9..862f2004 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -6125,14 +6125,14 @@ namespace std { +@@ -6143,14 +6143,14 @@ namespace std { \indextext{\idxcode{array}!contiguous storage}% The header \libheader{array} defines a class template for storing fixed-size sequences of objects. @@ -611,7 +611,7 @@ index a0095c26..0e937574 100644 list-initialized with up to \tcode{N} elements whose types are convertible to \tcode{T}. -@@ -6143,8 +6143,8 @@ of a container\iref{container.reqmts} and +@@ -6161,8 +6161,8 @@ of a container\iref{container.reqmts} and of a reversible container\iref{container.rev.reqmts}, except that a default constructed \tcode{array} object is not empty if $\tcode{N} > 0$. @@ -622,7 +622,7 @@ index a0095c26..0e937574 100644 Descriptions are provided here only for operations on \tcode{array} that are not described in one of these tables and -@@ -6154,7 +6154,7 @@ for operations where there is additional semantic information. +@@ -6172,7 +6172,7 @@ for operations where there is additional semantic information. \tcode{array} is a structural type\iref{term.structural.type} if \tcode{T} is a structural type. Two values \tcode{a1} and \tcode{a2} of type \tcode{array} @@ -631,7 +631,7 @@ index a0095c26..0e937574 100644 each pair of corresponding elements in \tcode{a1} and \tcode{a2} are template-argument-equivalent. -@@ -6479,7 +6479,7 @@ namespace std { +@@ -6497,7 +6497,7 @@ namespace std { A \indexlibraryglobal{deque}% \tcode{deque} @@ -640,7 +640,7 @@ index a0095c26..0e937574 100644 In addition, it supports constant time insert and erase operations at the beginning or the end; insert and erase in the middle take linear time. That is, a deque is especially optimized for pushing and popping elements at the beginning and end. -@@ -7144,7 +7144,7 @@ namespace std { +@@ -7162,7 +7162,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{forward_list} if the allocator meets the @@ -649,7 +649,7 @@ index a0095c26..0e937574 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{forward_list} is referenced. -@@ -7728,7 +7728,7 @@ predicate. +@@ -7746,7 +7746,7 @@ predicate. \pnum \remarks @@ -658,7 +658,7 @@ index a0095c26..0e937574 100644 \end{itemdescr} \indexlibrarymember{unique}{forward_list}% -@@ -7833,7 +7833,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( +@@ -7851,7 +7851,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( \pnum \remarks @@ -667,7 +667,7 @@ index a0095c26..0e937574 100644 \end{itemdescr} \indexlibrarymember{reverse}{forward_list}% -@@ -9069,7 +9069,7 @@ A +@@ -9087,7 +9087,7 @@ A is a sequence container that supports bidirectional iterators and allows constant time insert and erase operations anywhere within the sequence, with storage management handled @@ -676,7 +676,7 @@ index a0095c26..0e937574 100644 fast random access to list elements is not supported, but many algorithms only need sequential access anyway. -@@ -9245,7 +9245,7 @@ namespace std { +@@ -9263,7 +9263,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{list} if the allocator meets the @@ -685,7 +685,7 @@ index a0095c26..0e937574 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{list} is referenced. -@@ -9658,7 +9658,7 @@ applications of the corresponding predicate. +@@ -9676,7 +9676,7 @@ applications of the corresponding predicate. \pnum \remarks @@ -694,7 +694,7 @@ index a0095c26..0e937574 100644 \end{itemdescr} \indexlibrarymember{unique}{list}% -@@ -9781,7 +9781,7 @@ comparisons, where $N$ is \tcode{size()}. +@@ -9799,7 +9799,7 @@ comparisons, where $N$ is \tcode{size()}. \pnum \remarks @@ -703,7 +703,7 @@ index a0095c26..0e937574 100644 \end{itemdescr} \rSec3[list.erasure]{Erasure} -@@ -9889,7 +9889,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, +@@ -9907,7 +9907,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, of a sequence container, including most of the optional sequence container requirements\iref{sequence.reqmts}, and, for an element type other than \tcode{bool}, @@ -712,7 +712,7 @@ index a0095c26..0e937574 100644 The exceptions are the \tcode{push_front}, \tcode{prepend_range}, \tcode{pop_front}, and \tcode{emplace_front} member functions, which are not provided. Descriptions are provided here only for operations on \tcode{vector} -@@ -10027,7 +10027,7 @@ namespace std { +@@ -10045,7 +10045,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{vector} if the allocator meets the @@ -721,7 +721,7 @@ index a0095c26..0e937574 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{vector} is referenced. -@@ -10623,7 +10623,7 @@ Unless described below, all operations have the same requirements and +@@ -10641,7 +10641,7 @@ Unless described below, all operations have the same requirements and semantics as the \tcode{vector} primary template, except that operations dealing with the \tcode{bool} value type map to bit values in the container storage and @@ -730,7 +730,7 @@ index a0095c26..0e937574 100644 is not used to construct these values. \pnum -@@ -15761,9 +15761,9 @@ and +@@ -15847,9 +15847,9 @@ and can be used to instantiate \tcode{queue}. In particular, @@ -742,7 +742,7 @@ index a0095c26..0e937574 100644 can be used. \begin{codeblock} -@@ -16118,15 +16118,15 @@ and +@@ -16204,15 +16204,15 @@ and can be used to instantiate \tcode{priority_queue}. In particular, @@ -761,7 +761,7 @@ index a0095c26..0e937574 100644 \begin{codeblock} namespace std { -@@ -16674,10 +16674,10 @@ and +@@ -16760,10 +16760,10 @@ and can be used to instantiate \tcode{stack}. In particular, @@ -776,7 +776,7 @@ index a0095c26..0e937574 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index 627360a2..cea5493a 100644 +index c231e467..bb44396c 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -821,7 +821,7 @@ index 627360a2..cea5493a 100644 \end{note} \pnum -@@ -1734,8 +1734,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; +@@ -1740,8 +1740,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; \item otherwise, \tcode{decltype($E$)} is the type of $E$. \end{itemize} @@ -831,7 +831,7 @@ index 627360a2..cea5493a 100644 \begin{example} \begin{codeblock} -@@ -1934,7 +1933,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. +@@ -1940,7 +1939,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. If the \grammarterm{init-declarator-list} contains more than one \grammarterm{init-declarator}, they shall all form declarations of variables. The type of each declared variable is determined @@ -840,7 +840,7 @@ index 627360a2..cea5493a 100644 and if the type that replaces the placeholder type is not the same in each deduction, the program is ill-formed. -@@ -2076,7 +2075,7 @@ A function declared with a return type that uses a placeholder type shall not +@@ -2082,7 +2081,7 @@ A function declared with a return type that uses a placeholder type shall not be a coroutine\iref{dcl.fct.def.coroutine}. \pnum @@ -849,8 +849,8 @@ index 627360a2..cea5493a 100644 instantiation of an entity declared using a placeholder type, but it also does not prevent that entity from being instantiated as needed to determine its type. -@@ -2291,7 +2290,7 @@ in the \grammarterm{type-specifier-seq} - in the \grammarterm{new-type-id} or \grammarterm{type-id} +@@ -2297,7 +2296,7 @@ in the \grammarterm{type-specifier-seq} + in the \grammarterm{new-type-id} or \grammarterm{nofun-type-id} of a \grammarterm{new-expression}\iref{expr.new}, as the \grammarterm{simple-type-specifier} -in an explicit type conversion (functional notation)\iref{expr.type.conv}, @@ -858,7 +858,7 @@ index 627360a2..cea5493a 100644 or as the \grammarterm{type-specifier} in the \grammarterm{parameter-declaration} of a \grammarterm{template-parameter}\iref{temp.param}. -@@ -4501,7 +4500,7 @@ int a; +@@ -4556,7 +4555,7 @@ int a; int f(int a, int b = a); // error: parameter \tcode{a} used as default argument typedef int I; int g(float I, int b = I(2)); // error: parameter \tcode{I} found @@ -867,7 +867,7 @@ index 627360a2..cea5493a 100644 \end{codeblock} \end{example} A non-static member shall not be designated in a default argument unless -@@ -6226,15 +6225,15 @@ This requires a conversion +@@ -6379,15 +6378,15 @@ This requires a conversion function\iref{class.conv.fct} returning a reference type. \end{footnote} (this conversion is selected by enumerating the applicable conversion @@ -887,7 +887,7 @@ index 627360a2..cea5493a 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7747,7 +7746,7 @@ the initializer is +@@ -7923,7 +7922,7 @@ the initializer is where \tcode{get} undergoes argument-dependent lookup\iref{basic.lookup.argdep}. In either case, \tcode{get} is interpreted as a \grammarterm{template-id}. \begin{note} @@ -896,7 +896,7 @@ index 627360a2..cea5493a 100644 \end{note} In either case, \exposid{e} is an lvalue if the type of the entity \exposid{e} is an lvalue reference and an xvalue otherwise. -@@ -7898,7 +7897,7 @@ is not looked up and is introduced by +@@ -8074,7 +8073,7 @@ is not looked up and is introduced by the \grammarterm{enum-specifier} or \grammarterm{opaque-enum-declaration}. If the \grammarterm{enum-head-name} of an \grammarterm{opaque-enum-declaration} contains a \grammarterm{nested-name-specifier}, @@ -905,7 +905,7 @@ index 627360a2..cea5493a 100644 \pnum \indextext{constant!enumeration}% -@@ -8063,7 +8062,7 @@ if they have the same underlying type. +@@ -8240,7 +8239,7 @@ and the same values. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -914,7 +914,7 @@ index 627360a2..cea5493a 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8346,7 +8345,7 @@ appertains to the namespace being defined or extended. +@@ -8523,7 +8522,7 @@ appertains to the namespace being defined or extended. Members of an inline namespace can be used in most respects as though they were members of the innermost enclosing namespace. Specifically, the inline namespace and its enclosing namespace are both added to the set of associated namespaces used in @@ -923,7 +923,7 @@ index 627360a2..cea5493a 100644 and a \grammarterm{using-directive}\iref{namespace.udir} that names the inline namespace is implicitly inserted into the enclosing namespace as for an unnamed namespace\iref{namespace.unnamed}. Furthermore, each -@@ -9179,7 +9178,7 @@ different language linkages are distinct types even if they are +@@ -9356,7 +9355,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -932,7 +932,7 @@ index 627360a2..cea5493a 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9509,18 +9508,18 @@ For each individual attribute, the form of the +@@ -9686,18 +9685,18 @@ For each individual attribute, the form of the \pnum In an \grammarterm{attribute-list}, an ellipsis may appear only if that \grammarterm{attribute}'s specification permits it. An \grammarterm{attribute} followed @@ -956,16 +956,7 @@ index 627360a2..cea5493a 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9638,7 +9637,7 @@ declaration, the program is ill-formed. - \pnum - An \grammarterm{alignment-specifier} of the form - \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same --effect as \tcode{alignas(\brk{}alignof(} \grammarterm{type-id}~\tcode{))}\iref{expr.alignof}. -+effect as \tcode{alignas(\brk{}\link{alignof}{expr.alignof}(} \grammarterm{type-id}~\tcode{))}. - - \pnum - The alignment requirement of an entity is the strictest nonzero alignment -@@ -9818,7 +9817,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9995,7 +9994,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -975,7 +966,7 @@ index 627360a2..cea5493a 100644 No \grammarterm{attribute-argument-clause} shall be present. A fallthrough statement may only appear within diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index d842475b..eee2454e 100644 +index 3cf07552..94d32dfb 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -508,13 +508,13 @@ the current state of \tcode{NDEBUG} each time that @@ -994,7 +985,7 @@ index d842475b..eee2454e 100644 is a constant subexpression that evaluates to the value \tcode{true}. \end{itemize} -@@ -1529,7 +1529,7 @@ application program interfaces. +@@ -1624,7 +1624,7 @@ application program interfaces. \pnum \begin{note} If an error represents an out-of-memory condition, implementations are @@ -1004,7 +995,7 @@ index d842475b..eee2454e 100644 \end{note} \indexlibraryglobal{system_error}% diff --git a/source/exceptions.tex b/source/exceptions.tex -index df3b639d..abd4aef1 100644 +index 23e143e1..be584f9d 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -184,7 +184,7 @@ try : i(f(ii)), d(id) { @@ -1095,7 +1086,7 @@ index df3b639d..abd4aef1 100644 \begin{bnf} \nontermdef{noexcept-specifier}\br -@@ -809,7 +809,7 @@ in which cases the exception specification +@@ -811,7 +811,7 @@ in which cases the exception specification is as specified below and no other declaration for that function shall have a \grammarterm{noexcept-specifier}. @@ -1104,7 +1095,7 @@ index df3b639d..abd4aef1 100644 a \grammarterm{noexcept-specifier} may be specified, but is not required. If a \grammarterm{noexcept-specifier} is specified -@@ -858,7 +858,7 @@ An expression $E$ is +@@ -860,7 +860,7 @@ An expression $E$ is \defnx{potentially-throwing}{potentially-throwing!expression} if \begin{itemize} \item @@ -1113,7 +1104,7 @@ index df3b639d..abd4aef1 100644 whose \grammarterm{postfix-expression} has a function type, or a pointer-to-function type, -@@ -939,7 +939,7 @@ the invocation of any assignment operator +@@ -941,7 +941,7 @@ the invocation of any assignment operator in the implicit definition is potentially-throwing. \pnum @@ -1122,7 +1113,7 @@ index df3b639d..abd4aef1 100644 with no explicit \grammarterm{noexcept-specifier} has a non-throwing exception specification. -@@ -1053,9 +1053,9 @@ via an exception, or +@@ -1059,9 +1059,9 @@ via an exception, or \item% when the exception handling mechanism cannot find a handler for a thrown exception\iref{except.handle}, or @@ -1134,7 +1125,7 @@ index df3b639d..abd4aef1 100644 including when a contract-violation handler invoked from an evaluation of a function contract assertion\iref{basic.contract.eval} associated with the function -@@ -1063,7 +1063,7 @@ exits via an exception, +@@ -1069,7 +1069,7 @@ exits via an exception, or \item% @@ -1144,7 +1135,7 @@ index df3b639d..abd4aef1 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index 0ea2a413..24af225d 100644 +index 00e1c3a9..19764696 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1166,7 +1157,7 @@ index 0ea2a413..24af225d 100644 \end{note} \pnum -@@ -216,7 +216,7 @@ xvalues; rvalue references to functions are treated as lvalues whether named or +@@ -259,7 +259,7 @@ xvalues; rvalue references to functions are treated as lvalues whether named or \begin{example} \begin{codeblock} struct A { @@ -1175,7 +1166,7 @@ index 0ea2a413..24af225d 100644 }; A&& operator+(A, A); A&& f(); -@@ -272,7 +272,7 @@ Unless otherwise specified\iref{expr.reinterpret.cast, expr.const.cast}, +@@ -315,7 +315,7 @@ Unless otherwise specified\iref{expr.reinterpret.cast, expr.const.cast}, whenever a prvalue that is not the result of the lvalue-to-rvalue conversion\iref{conv.lval} appears as an operand of an operator, @@ -1184,7 +1175,7 @@ index 0ea2a413..24af225d 100644 applied to convert the expression to an xvalue. \pnum -@@ -455,31 +455,31 @@ An unevaluated operand is not evaluated. +@@ -498,31 +498,31 @@ An unevaluated operand is not evaluated. In an unevaluated operand, a non-static class member can be named\iref{expr.prim.id} and naming of objects or functions does not, by itself, require that a definition be provided\iref{basic.def.odr}. @@ -1227,7 +1218,7 @@ index 0ea2a413..24af225d 100644 these expressions. \end{itemize} -@@ -618,7 +618,7 @@ descriptions of those operators and contexts. +@@ -661,7 +661,7 @@ descriptions of those operators and contexts. \pnum \indextext{conversion!lvalue-to-rvalue}% \indextext{type!incomplete}% @@ -1236,7 +1227,7 @@ index 0ea2a413..24af225d 100644 can be converted to a prvalue. \begin{footnote} -@@ -643,18 +643,18 @@ is applied to an expression $E$, and either +@@ -686,18 +686,18 @@ is applied to an expression $E$, and either \begin{itemize} \item $E$ is not potentially evaluated, or \item the evaluation of $E$ results in the evaluation of a member @@ -1261,7 +1252,7 @@ index 0ea2a413..24af225d 100644 } auto g = f(); int m = g(false); // undefined behavior: access of \tcode{x.n} outside its lifetime -@@ -826,11 +826,11 @@ allowed), a program could inadvertently modify a const object +@@ -874,11 +874,11 @@ allowed), a program could inadvertently modify a const object (as it is done on line \#2). For example, \begin{codeblock} int main() { @@ -1278,7 +1269,7 @@ index 0ea2a413..24af225d 100644 } \end{codeblock} \end{note} -@@ -1088,7 +1088,7 @@ the derived class object. +@@ -1138,7 +1138,7 @@ the derived class object. \indextext{conversion!pointer-to-member}% \indextext{null member pointer conversion|see{conversion, null member pointer}}% \indextext{constant!null pointer}% @@ -1287,7 +1278,7 @@ index 0ea2a413..24af225d 100644 pointer-to-member type; the result is the \defnx{null member pointer value}{value!null member pointer} of that type and is distinguishable from any pointer to member not -@@ -1317,7 +1317,7 @@ occur until the complete declarator is known. +@@ -1368,7 +1368,7 @@ occur until the complete declarator is known. \begin{note} In a \grammarterm{trailing-return-type}, the class being defined is not required to be complete @@ -1296,7 +1287,7 @@ index 0ea2a413..24af225d 100644 Class members declared later are not visible. \begin{example} \begin{codeblock} -@@ -1384,8 +1384,8 @@ meaning, except as otherwise indicated. +@@ -1435,8 +1435,8 @@ meaning, except as otherwise indicated. An \grammarterm{id-expression} is a restricted form of a \grammarterm{primary-expression}. \begin{note} @@ -1307,7 +1298,7 @@ index 0ea2a413..24af225d 100644 \end{note} \pnum -@@ -1518,7 +1518,7 @@ In each case, the constraints of \tcode{f} are not satisfied. +@@ -1569,7 +1569,7 @@ In each case, the constraints of \tcode{f} are not satisfied. In the declaration of \tcode{p2}, those constraints need to be satisfied even though @@ -1316,7 +1307,7 @@ index 0ea2a413..24af225d 100644 \end{example} \end{note} -@@ -2140,8 +2140,8 @@ void abssort(float* x, unsigned N) { +@@ -2191,8 +2191,8 @@ void abssort(float* x, unsigned N) { A \grammarterm{lambda-expression} is a prvalue whose result object is called the \defn{closure object}. \begin{note} @@ -1327,7 +1318,7 @@ index 0ea2a413..24af225d 100644 \end{note} \pnum -@@ -2475,7 +2475,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no +@@ -2526,7 +2526,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no and no explicit object parameter\iref{dcl.fct} whose constraints (if any) are satisfied has a conversion function to pointer to @@ -1336,7 +1327,7 @@ index 0ea2a413..24af225d 100644 the same parameter and return types as the closure type's function call operator. The conversion is to ``pointer to \keyword{noexcept} function'' if the function call operator -@@ -2584,8 +2584,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} +@@ -2635,8 +2635,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} \pnum The conversion function or conversion function template is public, @@ -1347,7 +1338,7 @@ index 0ea2a413..24af225d 100644 \begin{example} \begin{codeblock} auto Fwd = [](int (*fp)(int), auto a) { return fp(a); }; -@@ -2643,9 +2643,9 @@ implicitly-declared destructor\iref{class.dtor}. +@@ -2694,9 +2694,9 @@ implicitly-declared destructor\iref{class.dtor}. \pnum A member of a closure type shall not be @@ -1360,7 +1351,7 @@ index 0ea2a413..24af225d 100644 \rSec3[expr.prim.lambda.capture]{Captures}% -@@ -3215,7 +3215,7 @@ A fold expression is a pack expansion. +@@ -3285,7 +3285,7 @@ A fold expression is a pack expansion. \pnum A \grammarterm{requires-expression} provides a concise way to express requirements on template arguments @@ -1369,7 +1360,7 @@ index 0ea2a413..24af225d 100644 or by checking properties of types and expressions. \begin{bnf} -@@ -3813,7 +3813,7 @@ or a prvalue of function pointer type. +@@ -3890,7 +3890,7 @@ or a prvalue of function pointer type. If the selected function is non-virtual, or if the \grammarterm{id-expression} in the class member access expression is a \grammarterm{qualified-id}, that function is @@ -1378,7 +1369,7 @@ index 0ea2a413..24af225d 100644 of the object expression is called; such a call is referred to as a \defnx{virtual function call}{function!virtual function call}. \begin{note} -@@ -3826,8 +3826,8 @@ an object under construction or destruction. +@@ -3903,8 +3903,8 @@ an object under construction or destruction. \pnum \begin{note} @@ -1389,7 +1380,7 @@ index 0ea2a413..24af225d 100644 the program is ill-formed. No function is implicitly declared by such a call. \end{note} -@@ -3894,7 +3894,7 @@ function, +@@ -4025,7 +4025,7 @@ function, the object expression of the class member access shall be a glvalue and the implicit object parameter of the function\iref{over.match.funcs} is initialized with that glvalue, @@ -1398,7 +1389,7 @@ index 0ea2a413..24af225d 100644 \begin{note} There is no access or ambiguity checking on this conversion; the access checking and disambiguation are done as part of the (possibly implicit) -@@ -4031,10 +4031,10 @@ pointer parameters. +@@ -4162,10 +4162,10 @@ pointer parameters. \pnum \indextext{declaration!ellipsis in function}% \indextext{parameter list!variable}% @@ -1412,7 +1403,7 @@ index 0ea2a413..24af225d 100644 \begin{note} This implies that, except where the ellipsis (\tcode{...}) or a function parameter pack is used, a parameter is available for each argument. -@@ -4052,8 +4052,8 @@ thus each such argument has a corresponding parameter when a function template +@@ -4183,8 +4183,8 @@ thus each such argument has a corresponding parameter when a function template specialization is actually called. \end{note} The @@ -1423,7 +1414,7 @@ index 0ea2a413..24af225d 100644 performed on the argument expression. An argument that has type \cv{}~\tcode{std::nullptr_t} is converted to type \tcode{\keyword{void}*}\iref{conv.ptr}. -@@ -4068,16 +4068,16 @@ an eligible non-trivial move constructor, or +@@ -4199,16 +4199,16 @@ an eligible non-trivial move constructor, or a non-trivial destructor\iref{class.dtor}, with no corresponding parameter, is conditionally-supported with \impldef{passing argument of class type through ellipsis} semantics. If the argument has @@ -1445,7 +1436,7 @@ index 0ea2a413..24af225d 100644 \pnum A function call is an lvalue -@@ -4096,8 +4096,8 @@ except as specified in \ref{dcl.type.decltype}. +@@ -4227,8 +4227,8 @@ except as specified in \ref{dcl.type.decltype}. \indextext{type conversion, explicit|see{casting}}% \indextext{conversion explicit type|see{casting}}% \indextext{casting}% @@ -1456,7 +1447,7 @@ index 0ea2a413..24af225d 100644 by a parenthesized optional \grammarterm{expression-list} or by a \grammarterm{braced-init-list} (the initializer) -@@ -4108,7 +4108,7 @@ If the type is a placeholder +@@ -4239,7 +4239,7 @@ If the type is a placeholder for a deduced class type, it is replaced by the return type of the function selected by overload resolution @@ -1465,7 +1456,7 @@ index 0ea2a413..24af225d 100644 for the remainder of this subclause. Otherwise, if the type contains a placeholder type, it is replaced by the type -@@ -4507,8 +4507,8 @@ void foo(D* dp) { +@@ -4638,8 +4638,8 @@ void foo(D* dp) { \end{example} \pnum @@ -1476,7 +1467,7 @@ index 0ea2a413..24af225d 100644 \pnum If \tcode{v} is a null pointer value, the result is a null pointer value. -@@ -4559,9 +4559,9 @@ runtime check \term{fails}. +@@ -4690,9 +4690,9 @@ runtime check \term{fails}. \pnum The value of a failed cast to pointer type is the null pointer value of @@ -1489,7 +1480,7 @@ index 0ea2a413..24af225d 100644 \indextext{\idxcode{bad_cast}}% \indexlibraryglobal{bad_cast}% -@@ -4650,13 +4650,13 @@ glvalue refers. +@@ -4781,13 +4781,13 @@ glvalue refers. When \keyword{typeid} is applied to an expression other than a glvalue of a polymorphic class type, the result refers to a \tcode{std::type_info} object representing the static type of the expression. @@ -1507,7 +1498,7 @@ index 0ea2a413..24af225d 100644 \pnum When \keyword{typeid} is applied to a \grammarterm{type-id}, the result -@@ -4750,7 +4750,7 @@ of type \tcode{T1} can be cast to type ``rvalue +@@ -4881,7 +4881,7 @@ of type \tcode{T1} can be cast to type ``rvalue reference to \tcode{T2}'' if \tcode{T2} is reference-compatible with \tcode{T1}\iref{dcl.init.ref}. If the value is not a bit-field, the result refers to the object or the specified base class subobject @@ -1516,7 +1507,7 @@ index 0ea2a413..24af225d 100644 is applied to the bit-field and the resulting prvalue is used as the operand of the \keyword{static_cast} for the remainder of this subclause. If \tcode{T2} is an inaccessible\iref{class.access} or -@@ -4855,7 +4855,8 @@ Otherwise, the behavior is undefined. +@@ -4986,7 +4986,8 @@ Otherwise, the behavior is undefined\ubdef{expr.static.cast.fp.outside.range}. A prvalue of type ``pointer to \cvqual{cv1} \tcode{B}'', where \tcode{B} is a class type, can be converted to a prvalue of type ``pointer to \cvqual{cv2} \tcode{D}'', @@ -1526,7 +1517,7 @@ index 0ea2a413..24af225d 100644 from \tcode{B}, if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. -@@ -4876,7 +4877,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} +@@ -5007,7 +5008,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} \tcode{T}'' can be converted to a prvalue of type ``pointer to member of \tcode{B} of type \cvqual{cv2} \tcode{T}'', where \tcode{D} is a complete class type and @@ -1535,7 +1526,7 @@ index 0ea2a413..24af225d 100644 if \cvqual{cv2} is the same cv-qualification as, or greater cv-qualification than, \cvqual{cv1}. \begin{note} -@@ -4887,7 +4888,7 @@ If no valid standard conversion +@@ -5018,7 +5019,7 @@ If no valid standard conversion from ``pointer to member of \tcode{B} of type \tcode{T}'' to ``pointer to member of \tcode{D} of type \tcode{T}'' exists\iref{conv.mem}, the program is ill-formed. @@ -1544,7 +1535,7 @@ index 0ea2a413..24af225d 100644 member pointer value of the destination type. If class \tcode{B} contains the original member, or is a base class of the class containing the original member, the resulting pointer to member points -@@ -4910,7 +4911,7 @@ If the original pointer value represents the address +@@ -5041,7 +5042,7 @@ If the original pointer value represents the address then the resulting pointer value\iref{basic.compound} is unspecified. Otherwise, if the original pointer value points to an object \placeholder{a}, and there is an object \placeholder{b} of type similar to \tcode{T} @@ -1553,7 +1544,7 @@ index 0ea2a413..24af225d 100644 the result is a pointer to \placeholder{b}. Otherwise, the pointer value is unchanged by the conversion. \begin{example} -@@ -4933,8 +4934,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. +@@ -5064,8 +5065,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. If \tcode{T} is an lvalue reference type or an rvalue reference to function type, the result is an lvalue; if \tcode{T} is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the @@ -1564,7 +1555,7 @@ index 0ea2a413..24af225d 100644 performed on the expression \tcode{v}. Conversions that can be performed explicitly using \keyword{reinterpret_cast} are listed below. No other conversion can be performed explicitly using \keyword{reinterpret_cast}. -@@ -5099,10 +5100,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type +@@ -5244,10 +5245,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type lvalue; if \tcode{T} is an rvalue reference to object type, the result is an xvalue; otherwise, the result is a prvalue and the @@ -1578,16 +1569,16 @@ index 0ea2a413..24af225d 100644 performed on \tcode{v}, other than as specified below. Conversions that can be performed explicitly using \keyword{const_cast} are listed below. No other conversion shall be -@@ -5655,7 +5656,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside +@@ -5801,7 +5802,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside The \keyword{sizeof} operator yields the number of bytes occupied by a non-potentially-overlapping object of the type of its operand. The operand is either an expression, -which is an unevaluated operand\iref{term.unevaluated.operand}, or a parenthesized -+which is an \deflink{unevaluated operand}{expr.context}, or a parenthesized - \grammarterm{type-id}. ++which is an \link{unevaluated operand}{term.unevaluated.operand}, or a parenthesized + \grammarterm{nofun-type-id}. \indextext{type!incomplete}% The \keyword{sizeof} operator shall not be applied to an expression that -@@ -5712,7 +5713,7 @@ array-to-pointer\iref{conv.array}, and +@@ -5858,7 +5859,7 @@ array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} standard conversions are not applied to the operand of \keyword{sizeof}. If the operand is a prvalue, @@ -1596,7 +1587,7 @@ index 0ea2a413..24af225d 100644 is applied. \pnum -@@ -5857,7 +5858,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. +@@ -6003,7 +6004,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. \end{bnf} \pnum @@ -1605,7 +1596,7 @@ index 0ea2a413..24af225d 100644 a placeholder for a deduced class type\iref{dcl.type.class.deduct} appears in the \grammarterm{type-specifier-seq} of a \grammarterm{new-type-id} or -@@ -5985,7 +5986,7 @@ is less than zero; +@@ -6131,7 +6132,7 @@ is less than zero; \item its value is such that the size of the allocated object would exceed the @@ -1614,7 +1605,7 @@ index 0ea2a413..24af225d 100644 \item the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} -@@ -6011,7 +6012,7 @@ is the null pointer value of the required result type; +@@ -6157,7 +6158,7 @@ is the null pointer value of the required result type; \item otherwise, the \grammarterm{new-expression} terminates by throwing an exception of a type that would match a handler\iref{except.handle} of type @@ -1623,7 +1614,7 @@ index 0ea2a413..24af225d 100644 \end{itemize} \end{itemize} When the value of the \grammarterm{expression} is zero, the allocation -@@ -6069,8 +6070,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( +@@ -6215,8 +6216,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( A \grammarterm{new-expression} may obtain storage for the object by calling an allocation function\iref{basic.stc.dynamic.allocation}. If the \grammarterm{new-expression} terminates by throwing an exception, it @@ -1634,7 +1625,7 @@ index 0ea2a413..24af225d 100644 is a non-array type, the allocation function's name is \indextext{\idxcode{operator new}}% \indextext{\idxcode{operator delete}}% -@@ -6181,7 +6182,7 @@ the difference between the +@@ -6327,7 +6328,7 @@ the difference between the result of the \grammarterm{new-expression} and the address returned by the allocation function shall be an integral multiple of the strictest fundamental @@ -1643,7 +1634,7 @@ index 0ea2a413..24af225d 100644 is no greater than the size of the array being created. \begin{note} \indextext{allocation!alignment storage}% -@@ -6272,7 +6273,7 @@ invocation of \keyword{new} to another. +@@ -6418,7 +6419,7 @@ invocation of \keyword{new} to another. \pnum \begin{note} Unless an allocation function has a non-throwing @@ -1652,7 +1643,7 @@ index 0ea2a413..24af225d 100644 it indicates failure to allocate storage by throwing a \indextext{\idxcode{bad_alloc}}% \indexlibraryglobal{bad_alloc}% -@@ -6488,8 +6489,8 @@ to both the allocation and deallocation functions. +@@ -6634,8 +6635,8 @@ to both the allocation and deallocation functions. \pnum \indextext{expression!\idxcode{delete}}% \indextext{\idxcode{delete}}% @@ -1663,7 +1654,7 @@ index 0ea2a413..24af225d 100644 \grammarterm{new-expression}. \begin{bnf} -@@ -6592,8 +6593,8 @@ null pointer value, then: +@@ -6738,8 +6739,8 @@ null pointer value, then: \item If the allocation call for the \grammarterm{new-expression} for the object to be deleted was not omitted and the allocation was not extended\iref{expr.new}, the @@ -1674,18 +1665,18 @@ index 0ea2a413..24af225d 100644 allocation call of the \grammarterm{new-expression} shall be passed as the first argument to the deallocation function. -@@ -7178,8 +7179,8 @@ The result of a \tcode{.*} expression +@@ -7346,8 +7347,8 @@ The result of a \tcode{.*} expression whose second operand is a pointer to a data member is an lvalue if the first operand is an lvalue and an xvalue otherwise. The result of a \tcode{.*} expression whose second operand is a pointer to a member function is a prvalue. -If the second operand is the null --member pointer value\iref{conv.mem}, the behavior is undefined. +-member pointer value\iref{conv.mem}, the behavior is undefined\ubdef{expr.mptr.oper.member.func.null}. +If the second operand is the \deflinkx{null member pointer value}{value!null member pointer}{conv.mem}, -+the behavior is undefined. ++the behavior is undefined\ubdef{expr.mptr.oper.member.func.null}. \rSec2[expr.mul]{Multiplicative operators}% \indextext{expression!multiplicative operators}% -@@ -7208,7 +7209,7 @@ left-to-right. +@@ -7376,7 +7377,7 @@ left-to-right. \pnum The operands of \tcode{*} and \tcode{/} shall have arithmetic or unscoped enumeration type; the operands of \tcode{\%} shall have integral or unscoped @@ -1694,16 +1685,16 @@ index 0ea2a413..24af225d 100644 operands and determine the type of the result. \pnum -@@ -7339,7 +7340,7 @@ the behavior is undefined\iref{expr.pre}. +@@ -7507,7 +7508,7 @@ the behavior is undefined\iref{expr.pre}. \pnum For addition or subtraction, if the expressions \tcode{P} or \tcode{Q} have type ``pointer to \cv{}~\tcode{T}'', where \tcode{T} and the array element type --are not similar\iref{conv.qual}, the behavior is undefined. -+are not \deflinkx{similar}{similar types}{conv.qual}, the behavior is undefined. +-are not similar\iref{conv.qual}, the behavior is undefined\ubdef{expr.add.not.similar}. ++are not \deflinkx{similar}{similar types}{conv.qual}, the behavior is undefined\ubdef{expr.add.not.similar}. \begin{example} \begin{codeblock} int arr[5] = {1, 2, 3, 4, 5}; -@@ -7430,12 +7431,12 @@ and the other is not, the program is ill-formed. +@@ -7598,12 +7599,12 @@ and the other is not, the program is ill-formed. If both operands have arithmetic types, or one operand has integral type and the other operand has unscoped enumeration type, @@ -1718,7 +1709,7 @@ index 0ea2a413..24af225d 100644 other than from an integral type to a floating-point type, the program is ill-formed. -@@ -7477,13 +7478,13 @@ the other operand is of object pointer or array type, +@@ -7645,13 +7646,13 @@ the other operand is of object pointer or array type, array-to-pointer conversions\iref{conv.array}, pointer conversions\iref{conv.ptr}, and @@ -1734,7 +1725,7 @@ index 0ea2a413..24af225d 100644 \end{note} In this case, \tcode{p <=> q} is of type \tcode{std::strong_ordering} and -@@ -7572,7 +7573,7 @@ pointer conversions\iref{conv.ptr}, +@@ -7740,7 +7741,7 @@ pointer conversions\iref{conv.ptr}, function pointer conversions\iref{conv.fctptr}, and qualification conversions\iref{conv.qual} are performed to bring @@ -1743,7 +1734,7 @@ index 0ea2a413..24af225d 100644 After conversions, the operands shall have the same type. \pnum -@@ -7657,10 +7658,10 @@ same type after the specified conversions have been applied. +@@ -7833,10 +7834,10 @@ so long as neither value is an invalid pointer value. \indextext{comparison!pointer}% \indextext{comparison!pointer to function}% If at least one of the converted operands is a pointer, @@ -1758,7 +1749,7 @@ index 0ea2a413..24af225d 100644 Comparing pointers is defined as follows: \begin{itemize} -@@ -7677,7 +7678,8 @@ the result of the comparison is unspecified. +@@ -7853,7 +7854,8 @@ the result of the comparison is unspecified. \item Otherwise, if the pointers are both null, both point to the same \indextext{address}% @@ -1768,7 +1759,7 @@ index 0ea2a413..24af225d 100644 they compare equal. \item Otherwise, the pointers compare unequal. -@@ -7722,12 +7724,12 @@ bool b1 = (bx == cx); // unspecified +@@ -7898,12 +7900,12 @@ bool b1 = (bx == cx); // unspecified \end{example} \item @@ -1783,7 +1774,7 @@ index 0ea2a413..24af225d 100644 indirection with a hypothetical object of the associated class type were performed, otherwise they compare unequal. \begin{example} -@@ -7967,7 +7969,7 @@ Otherwise, if the second and third operand have different types and +@@ -8142,7 +8144,7 @@ Otherwise, if the second and third operand have different types and either has (possibly cv-qualified) class type, or if both are glvalues of the same value category and the same type except for cv-qualification, an attempt is made to @@ -1792,7 +1783,7 @@ index 0ea2a413..24af225d 100644 each of those operands to the type of the other. \begin{note} Properties such as access, whether an operand is a bit-field, or whether -@@ -8009,9 +8011,9 @@ denotes the cv-qualifiers of \tcode{T1}; +@@ -8184,9 +8186,9 @@ denotes the cv-qualifiers of \tcode{T1}; \item otherwise, the target type is the type that \tcode{E2} would have after applying the @@ -1805,7 +1796,7 @@ index 0ea2a413..24af225d 100644 standard conversions. \end{itemize} \end{itemize} -@@ -8052,8 +8054,8 @@ are used in place of the original operands for the remainder of this +@@ -8227,8 +8229,8 @@ are used in place of the original operands for the remainder of this subclause. \pnum @@ -1816,7 +1807,7 @@ index 0ea2a413..24af225d 100644 performed on the second and third operands. After those conversions, one of the following shall hold: -@@ -8062,16 +8064,16 @@ of the following shall hold: +@@ -8237,16 +8239,16 @@ of the following shall hold: that type and the result is copy-initialized using the selected operand. \item The second and third operands have arithmetic or enumeration type; @@ -1839,7 +1830,7 @@ index 0ea2a413..24af225d 100644 pointer type. \item One or both of the second and third operands have pointer-to-member type; -@@ -8255,7 +8257,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. +@@ -8440,7 +8442,7 @@ that is not valid in the context of the evaluation\iref{basic.compound}, and \pnum \indextext{assignment!conversion by}% If the right operand is an expression, it is implicitly @@ -1848,7 +1839,7 @@ index 0ea2a413..24af225d 100644 operand. \pnum -@@ -8269,7 +8271,7 @@ resulting value of the bit-field is +@@ -8454,7 +8456,7 @@ resulting value of the bit-field is An assignment whose left operand is of a volatile-qualified type is deprecated\iref{depr.volatile.type} unless the (possibly parenthesized) assignment is a discarded-value expression or @@ -1857,7 +1848,7 @@ index 0ea2a413..24af225d 100644 \pnum The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} -@@ -8341,7 +8343,7 @@ The comma operator groups left-to-right. +@@ -8526,7 +8528,7 @@ The comma operator groups left-to-right. A pair of expressions separated by a comma is evaluated left-to-right; the left expression is @@ -1866,8 +1857,8 @@ index 0ea2a413..24af225d 100644 The left expression is sequenced before the right expression\iref{intro.execution}. \indextext{operator!side effects and comma}% -@@ -8492,7 +8494,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. - \end{footnote} +@@ -8686,7 +8688,7 @@ an arithmetic expression\iref{expr.pre} where + \end{itemize} \item -an lvalue-to-rvalue conversion\iref{conv.lval} unless @@ -1875,7 +1866,7 @@ index 0ea2a413..24af225d 100644 it is applied to \begin{itemize} \item -@@ -8514,7 +8516,7 @@ that refers to a non-active member of a union or a subobject thereof; +@@ -8708,7 +8710,7 @@ that refers to a non-active member of a union or a subobject thereof; \item an lvalue-to-rvalue conversion that is applied to @@ -1884,7 +1875,7 @@ index 0ea2a413..24af225d 100644 \item an invocation of an implicitly-defined copy/move constructor or -@@ -8992,7 +8994,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte +@@ -9209,7 +9211,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte Such expressions can be used as bit-field lengths\iref{class.bit}, as enumerator initializers if the underlying type is not fixed\iref{dcl.enum}, @@ -1893,7 +1884,7 @@ index 0ea2a413..24af225d 100644 \end{note} \pnum -@@ -9680,7 +9682,9 @@ A function or variable is +@@ -9903,7 +9905,9 @@ A function or variable is if it is: \begin{itemize} \item @@ -1905,7 +1896,7 @@ index 0ea2a413..24af225d 100644 \item diff --git a/source/future.tex b/source/future.tex -index 72dbeabb..dc26444a 100644 +index 2c50628c..fc3ccf5a 100644 --- a/source/future.tex +++ b/source/future.tex @@ -14,7 +14,7 @@ is defined as: @@ -2001,7 +1992,7 @@ index 3e24d06d..b5e513df 100644 translation units to form a complete \Cpp{} program\iref{lex.phases}.% \indextext{conformance requirements!library|)} diff --git a/source/iostreams.tex b/source/iostreams.tex -index 615ea941..ad9e3afe 100644 +index e911e38d..c25de465 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -558,7 +558,7 @@ is initialized, @@ -2093,7 +2084,7 @@ index 615ea941..ad9e3afe 100644 using char_type = charT; using int_type = traits::int_type; using pos_type = traits::pos_type; -@@ -4718,7 +4718,7 @@ basic_istream& operator>>(void*& val); +@@ -4710,7 +4710,7 @@ basic_istream& operator>>(void*& val); \pnum As in the case of the inserters, these extractors depend on the locale's @@ -2102,7 +2093,7 @@ index 615ea941..ad9e3afe 100644 stream data. These extractors behave as formatted input functions (as described in~\ref{istream.formatted.reqmts}). After a \tcode{sentry} object is constructed, the conversion occurs as if performed by the following code fragment, -@@ -5005,7 +5005,7 @@ basic_istream& operator>>(basic_streambuf* sb); +@@ -4989,7 +4989,7 @@ basic_istream& operator>>(basic_streambuf* sb); \begin{itemdescr} \pnum \effects @@ -2111,7 +2102,7 @@ index 615ea941..ad9e3afe 100644 If \tcode{sb} is null, calls \tcode{setstate(fail\-bit)}, which may throw -@@ -5400,7 +5400,7 @@ characters and discards them. +@@ -5384,7 +5384,7 @@ characters and discards them. Characters are extracted until any of the following occurs: \begin{itemize} \item @@ -2120,7 +2111,7 @@ index 615ea941..ad9e3afe 100644 and \tcode{n} characters have been extracted so far; \item -@@ -5751,12 +5751,12 @@ template +@@ -5735,12 +5735,12 @@ template \begin{itemdescr} \pnum \effects @@ -2135,7 +2126,7 @@ index 615ea941..ad9e3afe 100644 If \tcode{ws} stops extracting characters because there are no more available it sets -@@ -5781,7 +5781,7 @@ template +@@ -5765,7 +5765,7 @@ template \pnum \constraints The expression \tcode{is >> std::forward(x)} is well-formed @@ -2144,7 +2135,7 @@ index 615ea941..ad9e3afe 100644 \tcode{Istream} is publicly and unambiguously derived from \tcode{ios_base}. \pnum -@@ -5849,7 +5849,7 @@ explicit basic_iostream(basic_streambuf* sb); +@@ -5833,7 +5833,7 @@ explicit basic_iostream(basic_streambuf* sb); Initializes the base class subobjects with \tcode{basic_istream(sb)}\iref{istream} and @@ -2153,7 +2144,7 @@ index 615ea941..ad9e3afe 100644 \pnum \ensures -@@ -5935,7 +5935,7 @@ namespace std { +@@ -5919,7 +5919,7 @@ namespace std { template> class basic_ostream : virtual public basic_ios { public: @@ -2162,7 +2153,7 @@ index 615ea941..ad9e3afe 100644 using char_type = charT; using int_type = traits::int_type; using pos_type = traits::pos_type; -@@ -6705,7 +6705,7 @@ return *this << s; +@@ -6679,7 +6679,7 @@ return *this << s; \end{codeblock} where \tcode{s} is an \impldef{NTCTS in \tcode{basic_ostream\& op\-er\-ator<<(nullptr_t)}} @@ -2171,7 +2162,7 @@ index 615ea941..ad9e3afe 100644 \end{itemdescr} \rSec4[ostream.inserters.character]{Character inserter function templates} -@@ -6729,7 +6729,7 @@ template +@@ -6698,7 +6698,7 @@ template \begin{itemdescr} \pnum \effects @@ -2180,7 +2171,7 @@ index 615ea941..ad9e3afe 100644 of \tcode{out}. Constructs a character sequence \tcode{seq}. If \tcode{c} has type \tcode{char} -@@ -7482,7 +7482,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. +@@ -7443,7 +7443,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. \pnum \effects The expression \tcode{in >> get_money(mon, intl)} described below @@ -2189,7 +2180,7 @@ index 615ea941..ad9e3afe 100644 \pnum \returns -@@ -7527,7 +7527,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. +@@ -7488,7 +7488,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. An object of unspecified type such that if \tcode{out} is an object of type \tcode{basic_ostream} then the expression \tcode{out << put_money(mon, intl)} behaves as a @@ -2198,7 +2189,7 @@ index 615ea941..ad9e3afe 100644 \tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as: \begin{codeblock} -@@ -7651,7 +7651,7 @@ of \tcode{basic_ostream} with member type \tcode{char_type} the same as +@@ -7612,7 +7612,7 @@ of \tcode{basic_ostream} with member type \tcode{char_type} the same as \tcode{charT} and with member type \tcode{traits_type}, which in the second and third forms is the same as \tcode{traits}, then the expression \tcode{out << quoted(s, delim, escape)} @@ -2207,7 +2198,7 @@ index 615ea941..ad9e3afe 100644 of \tcode{out}. This forms a character sequence \tcode{seq}, initially consisting of the following elements: \begin{itemize} -@@ -14130,7 +14130,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. +@@ -14091,7 +14091,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. \pnum \begin{note} @@ -2216,7 +2207,7 @@ index 615ea941..ad9e3afe 100644 for how the value types above and their encodings convert to \tcode{path::value_type} and its encoding. \end{note} -@@ -14742,7 +14742,7 @@ and print functions\iref{print.fun}. +@@ -14703,7 +14703,7 @@ and print functions\iref{print.fun}. \pnum Generic format observer functions return strings formatted according to the @@ -2225,7 +2216,7 @@ index 615ea941..ad9e3afe 100644 A single slash (\tcode{'/'}) character is used as the \grammarterm{directory-separator}. -@@ -15298,11 +15298,11 @@ If normalization\iref{fs.path.generic} is needed +@@ -15259,11 +15259,11 @@ If normalization\iref{fs.path.generic} is needed \indexlibrarymember{path}{iterator}% \pnum Path iterators iterate over the elements of the pathname @@ -2239,7 +2230,7 @@ index 615ea941..ad9e3afe 100644 except that, for dereferenceable iterators \tcode{a} and \tcode{b} of type \tcode{path::iterator} -@@ -16659,7 +16659,7 @@ If a file is removed from or added to a directory after the +@@ -16620,7 +16620,7 @@ If a file is removed from or added to a directory after the construction of a \tcode{directory_iterator} for the directory, it is unspecified whether or not subsequently incrementing the iterator will ever result in an iterator referencing the removed or added directory entry. See @@ -2248,7 +2239,7 @@ index 615ea941..ad9e3afe 100644 \end{note} \rSec3[fs.dir.itr.members]{Members} -@@ -16751,7 +16751,7 @@ directory_iterator& increment(error_code& ec); +@@ -16712,7 +16712,7 @@ directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -2257,7 +2248,7 @@ index 615ea941..ad9e3afe 100644 \pnum \returns -@@ -17063,7 +17063,7 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17024,7 +17024,7 @@ recursive_directory_iterator& increment(error_code& ec); \pnum \effects As specified for the prefix increment operation of @@ -2266,7 +2257,7 @@ index 615ea941..ad9e3afe 100644 except that: \begin{itemize} -@@ -17654,7 +17654,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin +@@ -17615,7 +17615,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin \begin{itemdescr} \pnum \effects @@ -2275,7 +2266,7 @@ index 615ea941..ad9e3afe 100644 \pnum \ensures -@@ -17730,7 +17730,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, +@@ -17691,7 +17691,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, \begin{itemdescr} \pnum \effects @@ -2284,7 +2275,7 @@ index 615ea941..ad9e3afe 100644 \pnum \ensures -@@ -17763,7 +17763,7 @@ path filesystem::current_path(error_code& ec); +@@ -17724,7 +17724,7 @@ path filesystem::current_path(error_code& ec); \returns The absolute path of the current working directory, whose pathname in the native format is @@ -2293,7 +2284,7 @@ index 615ea941..ad9e3afe 100644 The signature with argument \tcode{ec} returns \tcode{path()} if an error occurs. -@@ -17794,7 +17794,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; +@@ -17755,7 +17755,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; \begin{itemdescr} \pnum \effects @@ -2302,7 +2293,7 @@ index 615ea941..ad9e3afe 100644 \pnum \ensures -@@ -17905,7 +17905,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. +@@ -17866,7 +17866,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. \item If \tcode{is_regular_file(p)}, the size in bytes of the file \tcode{p} resolves to, determined as if by the value of the POSIX \tcode{stat} @@ -2311,7 +2302,7 @@ index 615ea941..ad9e3afe 100644 \item Otherwise, the result is \impldef{result of \tcode{filesystem::file_size}}. \end{itemize} -@@ -18287,7 +18287,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time, +@@ -18248,7 +18248,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time, \pnum \effects Sets the time of last data modification of the file @@ -2321,10 +2312,10 @@ index 615ea941..ad9e3afe 100644 \pnum \throws diff --git a/source/iterators.tex b/source/iterators.tex -index ed599d97..46edb440 100644 +index 317e6a04..5483c764 100644 --- a/source/iterators.tex +++ b/source/iterators.tex -@@ -6872,7 +6872,7 @@ ostream_iterator& operator++(int); +@@ -6860,7 +6860,7 @@ ostream_iterator& operator++(int); The class template \tcode{istreambuf_iterator} @@ -2333,7 +2324,7 @@ index ed599d97..46edb440 100644 reads successive \textit{characters} from the streambuf for which it was constructed. -@@ -6997,7 +6997,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; +@@ -6985,7 +6985,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; Initializes \tcode{sbuf_} with \keyword{nullptr}. \end{itemdescr} @@ -2341,7 +2332,7 @@ index ed599d97..46edb440 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(istream_type& s) noexcept; -@@ -7009,7 +7008,6 @@ istreambuf_iterator(istream_type& s) noexcept; +@@ -6997,7 +6996,6 @@ istreambuf_iterator(istream_type& s) noexcept; Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2349,7 +2340,7 @@ index ed599d97..46edb440 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(streambuf_type* s) noexcept; -@@ -7021,7 +7019,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; +@@ -7009,7 +7007,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; Initializes \tcode{sbuf_} with \tcode{s}. \end{itemdescr} @@ -2357,7 +2348,7 @@ index ed599d97..46edb440 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept; -@@ -7172,7 +7169,6 @@ is not a null pointer. +@@ -7160,7 +7157,6 @@ is not a null pointer. Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2366,7 +2357,7 @@ index ed599d97..46edb440 100644 \begin{itemdecl} ostreambuf_iterator(streambuf_type* s) noexcept; diff --git a/source/lex.tex b/source/lex.tex -index bfd55be5..5baaf9a1 100644 +index f96ec6b6..3c9f22b7 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -29,8 +29,8 @@ @@ -2380,7 +2371,7 @@ index bfd55be5..5baaf9a1 100644 directive \tcode{\#include}, less any source lines skipped by any of the conditional inclusion\iref{cpp.cond} preprocessing directives, as modified by the implementation-defined behavior of any -@@ -2315,7 +2315,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) +@@ -2324,7 +2324,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) \pnum If \placeholder{L} is a \grammarterm{user-defined-character-literal}, let \placeholder{ch} be the literal without its \grammarterm{ud-suffix}. @@ -2390,7 +2381,7 @@ index bfd55be5..5baaf9a1 100644 literal \placeholder{L} is treated as a call of the form diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 24029adb..6c8b5dab 100644 +index 99420d7c..f7e65073 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -101,7 +101,7 @@ including formatting, internationalization support and @@ -2583,16 +2574,7 @@ index 24029adb..6c8b5dab 100644 \pnum A call to a non-member function signature -@@ -3705,7 +3706,7 @@ The phrase ``unless otherwise specified'' applies to cases such as - the swappable with requirements\iref{swappable.requirements}. - The exception for overloaded operators allows argument-dependent lookup - in cases like that of --\tcode{ostream_iterator::operator=}\iref{ostream.iterator.ops}: -+\libmemberrefx{ostream_iterator::operator=}{ostream_iterator}{operator=}: - - \effects - \begin{codeblock} -@@ -3720,7 +3721,7 @@ return *this; +@@ -3714,7 +3715,7 @@ includes the associated namespaces of \tcode{value}'s type. \pnum It is unspecified whether any member functions in the \Cpp{} standard library are defined as @@ -2601,7 +2583,7 @@ index 24029adb..6c8b5dab 100644 \pnum For a non-virtual member function described in the \Cpp{} standard library, -@@ -3809,8 +3810,8 @@ the behavior is undefined unless otherwise specified. +@@ -3803,8 +3804,8 @@ the behavior is undefined unless otherwise specified. \rSec3[res.on.data.races]{Data race avoidance} \pnum @@ -2612,7 +2594,7 @@ index 24029adb..6c8b5dab 100644 Every standard library function shall meet each requirement unless otherwise specified. Implementations may prevent data races in cases other than those specified below. -@@ -3853,7 +3854,7 @@ not visible to users and are protected against data races. +@@ -3847,7 +3848,7 @@ not visible to users and are protected against data races. \pnum Unless otherwise specified, \Cpp{} standard library functions shall perform all operations solely within the current thread if those operations have effects that are @@ -2621,7 +2603,7 @@ index 24029adb..6c8b5dab 100644 \pnum \begin{note} -@@ -3968,7 +3969,7 @@ potentially-throwing exception specification} exceptions. +@@ -3962,7 +3963,7 @@ potentially-throwing exception specification} exceptions. \begin{footnote} In particular, they can report a failure to allocate storage by throwing an exception of type @@ -2644,7 +2626,7 @@ index e0596a32..877f21f3 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index 544aa428..f3299984 100644 +index c5f64956..4ca050f7 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -2870,7 +2852,7 @@ index 544aa428..f3299984 100644 array or until the lifetime of that array ends, whichever happens first. -@@ -9814,12 +9809,12 @@ The contents and meaning of the header \libheader{cmath} +@@ -9618,12 +9613,12 @@ The contents and meaning of the header \libheader{cmath} are a subset of the C standard library header \libheader{math.h} and only the declarations shown in the synopsis above are present, with the addition of @@ -2886,7 +2868,7 @@ index 544aa428..f3299984 100644 \end{note} \pnum -@@ -9883,7 +9878,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. +@@ -9687,7 +9682,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. If \tcode{abs} is called with an argument of type \tcode{X} for which \tcode{is_unsigned_v} is \tcode{true} and if \tcode{X} cannot be converted to \tcode{int} @@ -2896,7 +2878,7 @@ index 544aa428..f3299984 100644 Allowing arguments that can be promoted to \tcode{int} provides compatibility with C. diff --git a/source/overloading.tex b/source/overloading.tex -index 52883f84..d3250f2d 100644 +index d49ef098..a1fdfd80 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -74,7 +74,7 @@ Overload resolution selects the function to call in seven distinct @@ -3115,20 +3097,20 @@ index 52883f84..d3250f2d 100644 except where explicitly stated below. Operator functions cannot have more or fewer parameters than the -@@ -3845,7 +3845,7 @@ to not be included in the set of candidate functions. +@@ -3945,7 +3945,7 @@ to not be included in the set of candidate functions. In this subclause, the term \defn{promoted integral type} is used to refer to those cv-unqualified integral types which are preserved by --integral promotion\iref{conv.prom} (including e.g. -+\link{integral promotion}{conv.prom} (including e.g. +-integral promotion\iref{conv.prom} (including e.g., ++\link{integral promotion}{conv.prom} (including e.g., \tcode{int} and \tcode{long} diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index 0bfb7f19..b3cf7fc7 100644 +index 39cd5e50..ba13ba06 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex -@@ -551,8 +551,8 @@ are replaced with the \grammarterm{pp-number} +@@ -552,8 +552,8 @@ are replaced with the \grammarterm{pp-number} \tcode{0}, and then each preprocessing token is converted into a token. \begin{note} @@ -3139,7 +3121,7 @@ index 0bfb7f19..b3cf7fc7 100644 even when its spelling consists entirely of letters and underscores. Therefore it is not subject to this replacement. \end{note} -@@ -570,8 +570,8 @@ Thus on an +@@ -571,8 +571,8 @@ Thus on an implementation where \tcode{std::numeric_limits::max()} is \tcode{0x7FFF} and \tcode{std::numeric_limits::max()} is \tcode{0xFFFF}, the integer literal \tcode{0x8000} is signed and positive within a \tcode{\#if} @@ -3150,7 +3132,7 @@ index 0bfb7f19..b3cf7fc7 100644 \end{note} This includes interpreting \grammarterm{character-literal}s according to the rules in \ref{lex.ccon}. -@@ -2126,7 +2126,7 @@ of the current source line is +@@ -2195,7 +2195,7 @@ of the current source line is the line number of the current physical source line, i.e., it is one greater than the number of new-line characters read or introduced @@ -3159,7 +3141,7 @@ index 0bfb7f19..b3cf7fc7 100644 while processing the source file to the current preprocessing token. \pnum -@@ -2489,7 +2489,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. +@@ -2558,7 +2558,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. \indextext{__stdcpp_threads__@\mname{STDCPP_THREADS}}% \mname{STDCPP_THREADS}\\ Defined, and has the value integer literal \tcode{1}, if and only if a program @@ -3169,7 +3151,7 @@ index 0bfb7f19..b3cf7fc7 100644 \end{description} diff --git a/source/statements.tex b/source/statements.tex -index fa6944b1..301d6304 100644 +index f0344937..7a81a873 100644 --- a/source/statements.tex +++ b/source/statements.tex @@ -224,7 +224,7 @@ Expression statements have the form @@ -3242,7 +3224,7 @@ index fa6944b1..301d6304 100644 \begin{note} A constructor or destructor does not have a return type. \end{note} -@@ -1235,7 +1235,7 @@ results in undefined behavior. +@@ -1234,7 +1234,7 @@ results in undefined behavior\ubdef{stmt.return.coroutine.flow.off}. The \tcode{goto} statement unconditionally transfers control to the statement labeled by the identifier. The identifier shall be a \indextext{label}% @@ -3251,7 +3233,7 @@ index fa6944b1..301d6304 100644 \rSec1[stmt.contract.assert]{Assertion statement} -@@ -1347,8 +1347,8 @@ lx: +@@ -1346,8 +1346,8 @@ lx: \indextext{initialization!local \tcode{static}}% \indextext{initialization!local \tcode{thread_local}}% Dynamic initialization of a block variable with @@ -3262,7 +3244,7 @@ index fa6944b1..301d6304 100644 the first time control passes through its declaration; such a variable is considered initialized upon the completion of its initialization. If the initialization exits by throwing an exception, the initialization is not -@@ -1391,8 +1391,8 @@ will be destroyed if and only if it was constructed. +@@ -1390,8 +1390,8 @@ will be destroyed if and only if it was constructed. \pnum There is an ambiguity in the grammar involving \grammarterm{expression-statement}{s} and \grammarterm{declaration}{s}: An @@ -3274,10 +3256,10 @@ index fa6944b1..301d6304 100644 \grammarterm{declarator} starts with a \tcode{(}. In those cases the \grammarterm{statement} is considered a \grammarterm{declaration}, diff --git a/source/strings.tex b/source/strings.tex -index b8619c9b..e9c20ec8 100644 +index 1286a236..025af463 100644 --- a/source/strings.tex +++ b/source/strings.tex -@@ -5537,13 +5537,13 @@ The contents and meaning of the header \libheaderdef{cstring} +@@ -5547,13 +5547,13 @@ The contents and meaning of the header \libheaderdef{cstring} are the same as the C standard library header \libheader{string.h}. \pnum @@ -3294,7 +3276,7 @@ index b8619c9b..e9c20ec8 100644 Each of these functions implicitly creates objects\iref{intro.object} in the destination region of storage immediately prior to copying the sequence of characters to the destination. -@@ -5555,7 +5555,7 @@ otherwise the value of the first parameter. +@@ -5565,7 +5565,7 @@ otherwise the value of the first parameter. The functions \tcode{strchr}, \tcode{strpbrk}, \tcode{strrchr}, \tcode{strstr}, and \tcode{memchr}, have different signatures in this document, @@ -3304,7 +3286,7 @@ index b8619c9b..e9c20ec8 100644 \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index e86cf147..0dd4cd06 100644 +index 3620c7ad..8cef234d 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3401,7 +3383,7 @@ index e86cf147..0dd4cd06 100644 \end{note} \xrefc{7.24} -@@ -319,8 +306,8 @@ is required to work as specified even if unary +@@ -321,8 +308,8 @@ is required to work as specified even if unary is overloaded for any of the types involved. \end{footnote} The expression \tcode{offsetof(\placeholder{type}, \placeholder{member-designator})} @@ -3412,7 +3394,7 @@ index e86cf147..0dd4cd06 100644 dependent. The result of applying the \tcode{offsetof} macro to a static data member or a function member is undefined. No operation invoked by the \tcode{offsetof} macro shall throw an exception and -@@ -1118,7 +1105,7 @@ the specialization on the unqualified type \tcode{T}. +@@ -1126,7 +1113,7 @@ the specialization on the unqualified type \tcode{T}. \pnum Non-arithmetic standard types, such as @@ -3421,7 +3403,7 @@ index e86cf147..0dd4cd06 100644 \rSec3[numeric.limits.members]{\tcode{numeric_limits} members} -@@ -2122,7 +2109,7 @@ The program is terminated without executing destructors for objects with automat +@@ -2133,7 +2120,7 @@ The program is terminated without executing destructors for objects with automat thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{_Exit}}% @@ -3430,7 +3412,7 @@ index e86cf147..0dd4cd06 100644 \end{itemdescr} \indexlibraryglobal{abort}% -@@ -2142,7 +2129,7 @@ automatic, thread, or static storage +@@ -2153,7 +2140,7 @@ automatic, thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{abort}}% @@ -3439,7 +3421,7 @@ index e86cf147..0dd4cd06 100644 \end{itemdescr} \indexlibraryglobal{atexit}% -@@ -2159,7 +2146,8 @@ The +@@ -2170,7 +2157,8 @@ The functions register the function pointed to by \tcode{f} to be called without arguments at normal program termination. It is unspecified whether a call to \tcode{atexit()} that does not @@ -3449,7 +3431,7 @@ index e86cf147..0dd4cd06 100644 \begin{note} The \tcode{atexit()} functions do not introduce a data race\iref{res.on.data.races}. -@@ -2253,7 +2241,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; +@@ -2264,7 +2252,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; The \tcode{at_quick_exit()} functions register the function pointed to by \tcode{f} to be called without arguments when \tcode{quick_exit} is called. It is unspecified whether a call to \tcode{at_quick_exit()} that does not @@ -3459,7 +3441,7 @@ index e86cf147..0dd4cd06 100644 \begin{note} The \tcode{at_quick_exit()} functions do not introduce a -@@ -2305,7 +2294,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s +@@ -2316,7 +2305,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s \pnum \remarks \indextext{signal-safe!\idxcode{quick_exit}}% @@ -3468,7 +3450,7 @@ index e86cf147..0dd4cd06 100644 when the functions registered with \tcode{at_quick_exit} are. \end{itemdescr} -@@ -2432,7 +2421,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); +@@ -2443,7 +2432,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3477,7 +3459,7 @@ index e86cf147..0dd4cd06 100644 called by a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -2468,7 +2457,7 @@ a null pointer value, throws +@@ -2479,7 +2468,7 @@ a null pointer value, throws \tcode{bad_alloc}. \item Otherwise, the function calls the current @@ -3486,7 +3468,7 @@ index e86cf147..0dd4cd06 100644 If the called function returns, the loop repeats. \item The loop terminates when an attempt to allocate the requested storage is -@@ -2690,7 +2679,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); +@@ -2701,7 +2690,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3495,7 +3477,7 @@ index e86cf147..0dd4cd06 100644 called by the array form of a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -3003,8 +2992,8 @@ versions of \tcode{operator delete}, the C standard library function +@@ -3014,8 +3003,8 @@ versions of \tcode{operator delete}, the C standard library function introduce a data race\iref{res.on.data.races}. Calls to these functions that allocate or deallocate a particular unit of storage shall occur in a single total order, and each such deallocation call @@ -3506,7 +3488,7 @@ index e86cf147..0dd4cd06 100644 \rSec2[alloc.errors]{Storage allocation errors} -@@ -3375,7 +3364,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. +@@ -3386,7 +3375,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. \pnum \remarks @@ -3516,7 +3498,7 @@ index e86cf147..0dd4cd06 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. \end{itemdescr} -@@ -3946,7 +3936,8 @@ the ordinary literal encoding\iref{lex.ccon}. +@@ -3957,7 +3947,8 @@ the ordinary literal encoding\iref{lex.ccon}. \pnum \remarks @@ -3526,7 +3508,7 @@ index e86cf147..0dd4cd06 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. The return value remains valid until the exception object from which -@@ -4097,7 +4088,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread. +@@ -4108,7 +4099,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread. \remarks When \tcode{uncaught_exceptions() > 0}, throwing an exception can result in a call of the function @@ -3535,7 +3517,7 @@ index e86cf147..0dd4cd06 100644 \end{itemdescr} \rSec2[propagation]{Exception propagation} -@@ -4161,8 +4152,9 @@ exception_ptr current_exception() noexcept; +@@ -4172,8 +4163,9 @@ exception_ptr current_exception() noexcept; \begin{itemdescr} \pnum \returns @@ -3547,7 +3529,7 @@ index e86cf147..0dd4cd06 100644 handled exception, or a null \tcode{exception_ptr} object if no exception is being handled. The referenced object shall remain valid at least as long as there is an \tcode{exception_ptr} object that refers to it. -@@ -4748,7 +4740,7 @@ constexpr bool empty() const noexcept; +@@ -4759,7 +4751,7 @@ constexpr bool empty() const noexcept; \pnum The header \libheaderdef{compare} specifies types, objects, and functions for use primarily in connection with @@ -3556,7 +3538,7 @@ index e86cf147..0dd4cd06 100644 \indexlibraryglobal{is_eq}% \indexlibraryglobal{is_neq}% -@@ -6342,7 +6334,7 @@ environment. +@@ -6353,7 +6345,7 @@ environment. \end{note} \pnum @@ -3566,10 +3548,10 @@ index e86cf147..0dd4cd06 100644 calls to the \tcode{setlocale} function or with calls to functions that are affected by the current C locale. The implementation shall behave as if no diff --git a/source/templates.tex b/source/templates.tex -index 36975546..ea6af80c 100644 +index 92de24e0..f0a5071f 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -716,7 +716,7 @@ struct A {}; +@@ -715,7 +715,7 @@ struct A {}; \rSec1[temp.names]{Names of template specializations} \pnum @@ -3578,7 +3560,7 @@ index 36975546..ea6af80c 100644 \grammarterm{template-id}: \begin{bnf} -@@ -1055,8 +1055,8 @@ in a \grammarterm{splice-specialization-specifier} +@@ -1089,8 +1089,8 @@ in a \grammarterm{splice-specialization-specifier} shall match the type and form specified for the corresponding parameter declared by the template in its \grammarterm{template-parameter-list}. @@ -3589,7 +3571,7 @@ index 36975546..ea6af80c 100644 \grammarterm{template-argument}{s}. \begin{example} \begin{codeblock} -@@ -1247,7 +1247,7 @@ When a \grammarterm{simple-template-id} or +@@ -1281,7 +1281,7 @@ When a \grammarterm{simple-template-id} or \grammarterm{splice-specialization-specifier} does not designate a function, a default \grammarterm{template-argument} is @@ -3598,7 +3580,7 @@ index 36975546..ea6af80c 100644 when the value of that default argument is needed. \begin{example} \begin{codeblock} -@@ -1259,7 +1259,7 @@ The default argument for \tcode{U} is instantiated to form the type \tcode{S 1} is not satisfied; the second operand is not checked for satisfaction. \end{example} -@@ -1816,9 +1816,9 @@ in the declaration of a constrained entity (and, therefore, can involve the +@@ -1850,9 +1850,9 @@ in the declaration of a constrained entity (and, therefore, can involve the unsubstituted template parameters of the constrained entity), called the \defn{parameter mapping}\iref{temp.constr.decl}. \begin{note} @@ -3658,7 +3640,7 @@ index 36975546..ea6af80c 100644 \end{note} \pnum -@@ -1895,7 +1895,7 @@ first substituted into its expression. +@@ -1929,7 +1929,7 @@ first substituted into its expression. If substitution results in an invalid type or expression in the immediate context of the atomic constraint\iref{temp.deduct.general}, the constraint is not satisfied. @@ -3667,7 +3649,7 @@ index 36975546..ea6af80c 100644 is performed if necessary, and \tcode{E} shall be a constant expression of type \tcode{bool}. The constraint is satisfied if and only if evaluation of \tcode{E} -@@ -2057,11 +2057,11 @@ A declaration's \defn{associated constraints} are defined as follows: +@@ -2091,11 +2091,11 @@ A declaration's \defn{associated constraints} are defined as follows: the declaration has no associated constraints. \item Otherwise, if there is a single introduced \grammarterm{constraint-expression}, @@ -3682,7 +3664,7 @@ index 36975546..ea6af80c 100644 following order: \begin{itemize} \item -@@ -2158,7 +2158,7 @@ so it does match \#2. +@@ -2192,7 +2192,7 @@ so it does match \#2. \pnum The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is @@ -3691,7 +3673,7 @@ index 36975546..ea6af80c 100644 % \begin{itemize} \item -@@ -2167,7 +2167,7 @@ the normal form of \tcode{E}. +@@ -2201,7 +2201,7 @@ the normal form of \tcode{E}. \item The normal form of an expression \tcode{E1 || E2} is @@ -3700,7 +3682,7 @@ index 36975546..ea6af80c 100644 the normal forms of \tcode{E1} and \tcode{E2}. \item -@@ -2415,7 +2415,7 @@ the constraint of $A$ subsumes that of $B$. +@@ -2449,7 +2449,7 @@ the constraint of $A$ subsumes that of $B$. \end{itemize} % \begin{example} @@ -3709,7 +3691,7 @@ index 36975546..ea6af80c 100644 % The constraint $A \land B$ subsumes $A$, but $A$ does not subsume $A \land B$. % -@@ -2637,7 +2637,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. +@@ -2671,7 +2671,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. \end{example} \pnum @@ -3718,7 +3700,7 @@ index 36975546..ea6af80c 100644 \tcode{decltype($e$)} denotes a unique dependent type. Two such \grammarterm{decltype-specifier}{s} refer to the same type only if their \grammarterm{expression}{s} are -@@ -3064,7 +3064,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} +@@ -3114,7 +3114,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} \pnum A local class of non-closure type shall not have member templates. @@ -3727,7 +3709,7 @@ index 36975546..ea6af80c 100644 apply to member template names. A destructor shall not be a member template. -@@ -3291,7 +3291,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. +@@ -3341,7 +3341,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. \item In a \grammarterm{capture-list}\iref{expr.prim.lambda.capture}; the pattern is the \grammarterm{capture} without the ellipsis. @@ -3736,7 +3718,7 @@ index 36975546..ea6af80c 100644 \grammarterm{identifier}. \item In a \grammarterm{pack-index-expression}; -@@ -3914,9 +3914,9 @@ primary template. +@@ -3972,9 +3972,9 @@ primary template. \pnum A partial specialization matches a given actual template argument list if the template arguments of the partial specialization can be @@ -3749,7 +3731,7 @@ index 36975546..ea6af80c 100644 \begin{example} \begin{codeblock} template class A { }; // \#1 -@@ -3978,14 +3978,14 @@ of the primary template. +@@ -4036,14 +4036,14 @@ of the primary template. For two partial specializations, the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more @@ -3767,7 +3749,7 @@ index 36975546..ea6af80c 100644 as the corresponding partial specialization. \item Each function template -@@ -4191,8 +4191,8 @@ void h(int* p) { +@@ -4249,8 +4249,8 @@ void h(int* p) { \end{example} \pnum @@ -3778,7 +3760,7 @@ index 36975546..ea6af80c 100644 \pnum The signature of a function template -@@ -4243,7 +4243,7 @@ For example, a template type parameter can be used in the +@@ -4301,7 +4301,7 @@ For example, a template type parameter can be used in the Two expressions involving template parameters are considered \defnx{equivalent}{equivalent!expressions} if two function definitions containing the expressions would satisfy @@ -3787,7 +3769,7 @@ index 36975546..ea6af80c 100644 to name the template parameters may differ as long as a token used to name a template parameter in one expression is replaced by another token that names the same template parameter in the other expression. -@@ -4413,8 +4413,8 @@ function template +@@ -4471,8 +4471,8 @@ function template specialization is selected to match a placement allocation function\iref{basic.stc.dynamic.deallocation,expr.new}; \item @@ -3798,7 +3780,7 @@ index 36975546..ea6af80c 100644 a function template specialization. \end{itemize} -@@ -4807,7 +4807,7 @@ A \grammarterm{concept-definition} +@@ -4865,7 +4865,7 @@ A \grammarterm{concept-definition} shall inhabit a namespace scope\iref{basic.scope.namespace}. \pnum @@ -3807,7 +3789,7 @@ index 36975546..ea6af80c 100644 \pnum A concept is not instantiated\iref{temp.spec}. -@@ -5387,7 +5387,7 @@ any of the expressions +@@ -5445,7 +5445,7 @@ any of the expressions or \grammarterm{braced-init-list}{s} in the \grammarterm{expression-list} @@ -3816,7 +3798,7 @@ index 36975546..ea6af80c 100644 \item the \grammarterm{unqualified-id} is a \grammarterm{template-id} in which any of the template arguments depends -@@ -5447,7 +5447,7 @@ if it is +@@ -5505,7 +5505,7 @@ if it is \item in the definition of a class template, a nested class of a class template, a member of a class template, or a member of a nested class of a class template, @@ -3825,7 +3807,7 @@ index 36975546..ea6af80c 100644 \item in the definition of a primary class template or a member of a primary class template, the name of the -@@ -5728,7 +5728,7 @@ used without a \grammarterm{template-argument-list}. +@@ -5786,7 +5786,7 @@ used without a \grammarterm{template-argument-list}. \end{footnote} \item a \grammarterm{pack-index-specifier}, \item denoted by \tcode{decltype(}\grammarterm{expression}{}\tcode{)}, @@ -3834,7 +3816,7 @@ index 36975546..ea6af80c 100644 \item denoted by a \grammarterm{splice-type-specifier} in which either the \grammarterm{splice-specifier} or \grammarterm{splice-specialization-specifier} -@@ -5880,7 +5880,7 @@ see~\ref{support.types}. +@@ -5939,7 +5939,7 @@ see~\ref{support.types}. \end{note} \pnum @@ -3843,16 +3825,16 @@ index 36975546..ea6af80c 100644 type-dependent if \begin{itemize} \item -@@ -6260,7 +6260,7 @@ within a translation unit. +@@ -6321,7 +6321,7 @@ within a translation unit. A specialization for any template may have points of instantiation in multiple translation units. If two different points of instantiation give a template specialization -different meanings according to the one-definition rule\iref{basic.def.odr}, +different meanings according to the \link{one-definition rule}{basic.def.odr}, - the program is ill-formed, no diagnostic required. + the program is ill-formed, no diagnostic required\ifndrdef{temp.point.diff.pt.diff.meaning}. \pnum -@@ -6571,7 +6571,7 @@ of type +@@ -6632,7 +6632,7 @@ of type \pnum If a function declaration acquired its function type through @@ -3861,7 +3843,7 @@ index 36975546..ea6af80c 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -6808,7 +6808,7 @@ void x() { +@@ -6890,7 +6890,7 @@ decltype(+X2::arr) r2; // OK, type of \tcode{arr} is complete and arr is no \end{example} \pnum @@ -3870,7 +3852,7 @@ index 36975546..ea6af80c 100644 can be determined without instantiating a class template definition, it is unspecified whether that instantiation actually takes place. \begin{example} -@@ -7165,7 +7165,7 @@ If an entity is the subject of both an explicit instantiation declaration +@@ -7247,7 +7247,7 @@ If an entity is the subject of both an explicit instantiation declaration and an explicit instantiation definition in the same translation unit, the definition shall follow the declaration. An entity that is the subject of an explicit instantiation declaration and that is also used @@ -3878,8 +3860,8 @@ index 36975546..ea6af80c 100644 +in a way that would otherwise cause an \link{implicit instantiation}{temp.inst} in the translation unit shall be the subject of an explicit instantiation definition somewhere in the - program; otherwise the program is ill-formed, no diagnostic required. -@@ -8250,7 +8250,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. + program; otherwise the program is ill-formed, no diagnostic required\ifndrdef{temp.explicit.decl.implicit.inst}. +@@ -8332,7 +8332,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. In the following example, assuming a \tcode{signed char} cannot represent the value 1000, @@ -3888,7 +3870,7 @@ index 36975546..ea6af80c 100644 would be required to convert the \grammarterm{template-argument} of type \tcode{int} to \tcode{signed char}, -@@ -8359,8 +8359,8 @@ is not a reference type: +@@ -8440,8 +8440,8 @@ is not a reference type: \item If \tcode{A} @@ -3899,7 +3881,7 @@ index 36975546..ea6af80c 100644 \tcode{A} for type deduction; otherwise, -@@ -8368,7 +8368,7 @@ otherwise, +@@ -8449,7 +8449,7 @@ otherwise, If \tcode{A} is a function type, the pointer type produced by the @@ -3908,7 +3890,7 @@ index 36975546..ea6af80c 100644 of \tcode{A} for type -@@ -8464,8 +8464,8 @@ The transformed \tcode{A} +@@ -8545,8 +8545,8 @@ The transformed \tcode{A} can be another pointer or pointer-to-member type that can be converted to the deduced \tcode{A} @@ -3919,7 +3901,7 @@ index 36975546..ea6af80c 100644 \item If -@@ -8598,7 +8598,7 @@ void test() { +@@ -8679,7 +8679,7 @@ void test() { \pnum Template arguments can be deduced from the type specified when taking @@ -3928,7 +3910,7 @@ index 36975546..ea6af80c 100644 If there is a target, the function template's function type and the target type are used as the types of -@@ -8645,7 +8645,7 @@ is not a reference type: +@@ -8726,7 +8726,7 @@ is not a reference type: If \tcode{P} is an array type, the pointer type produced by the @@ -3937,7 +3919,7 @@ index 36975546..ea6af80c 100644 \tcode{P} for type deduction; otherwise, -@@ -8653,7 +8653,7 @@ deduction; otherwise, +@@ -8734,7 +8734,7 @@ deduction; otherwise, If \tcode{P} is a function type, the pointer type produced by the @@ -3946,7 +3928,7 @@ index 36975546..ea6af80c 100644 \tcode{P} for type deduction; otherwise, -@@ -8744,7 +8744,7 @@ after a function has been selected. +@@ -8825,7 +8825,7 @@ after a function has been selected. In the context of a call to a conversion function, the return types of the conversion function templates are used. \item @@ -3955,7 +3937,7 @@ index 36975546..ea6af80c 100644 type is used. \end{itemize} -@@ -9258,7 +9258,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the +@@ -9339,7 +9339,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the template argument list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by $\texttt{P}_i$. @@ -3964,7 +3946,7 @@ index 36975546..ea6af80c 100644 originally a pack expansion: \begin{itemize} \item if \tcode{P} does not contain a template argument corresponding to -@@ -9321,7 +9321,7 @@ each remaining parameter type in the parameter-type-list +@@ -9402,7 +9402,7 @@ each remaining parameter type in the parameter-type-list of \tcode{A}. Each comparison deduces template arguments for subsequent positions in the template parameter packs expanded by the function parameter pack. @@ -3973,7 +3955,7 @@ index 36975546..ea6af80c 100644 originally a function parameter pack: \begin{itemize} \item if \tcode{P} does not contain a function parameter type corresponding to -@@ -9659,8 +9659,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod +@@ -9740,8 +9740,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod In a declaration whose \grammarterm{declarator-id} refers to a specialization of a function template, template argument deduction is performed to identify the specialization to which the declaration refers. Specifically, this is done @@ -3985,7 +3967,7 @@ index 36975546..ea6af80c 100644 allocation function\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index 53bec754..7a2d110e 100644 +index 1094c686..1abadbfa 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -3997,7 +3979,7 @@ index 53bec754..7a2d110e 100644 and values between threads, as summarized in \tref{thread.summary}. -@@ -7309,7 +7309,7 @@ namespace std { +@@ -7361,7 +7361,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -4006,7 +3988,7 @@ index 53bec754..7a2d110e 100644 An execution agent \term{owns} a mutex from the time it successfully calls one of the lock functions until it calls unlock. Mutexes can be either recursive or non-recursive, and can grant simultaneous ownership to one or many execution agents. Both -@@ -7353,7 +7353,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on +@@ -7405,7 +7405,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on a single mutex appear to occur in a single total order. \begin{note} This @@ -4015,7 +3997,7 @@ index 53bec754..7a2d110e 100644 mutex. \end{note} \begin{note} -@@ -7433,7 +7433,7 @@ in the absence of contending mutex acquisitions. +@@ -7485,7 +7485,7 @@ in the absence of contending mutex acquisitions. \pnum \sync If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations @@ -4024,7 +4006,7 @@ index 53bec754..7a2d110e 100644 \begin{note} Since \tcode{lock()} does not synchronize with a failed subsequent \tcode{try_lock()}, the visibility rules are weak enough that little would be -@@ -7469,7 +7469,7 @@ Releases the calling thread's ownership of the mutex. +@@ -7521,7 +7521,7 @@ Releases the calling thread's ownership of the mutex. \pnum \sync @@ -4033,7 +4015,7 @@ index 53bec754..7a2d110e 100644 lock operations that obtain ownership on the same object. \pnum -@@ -7890,7 +7890,7 @@ Releases a shared lock on the mutex held by the calling thread. +@@ -7942,7 +7942,7 @@ Releases a shared lock on the mutex held by the calling thread. \pnum \sync @@ -4042,7 +4024,7 @@ index 53bec754..7a2d110e 100644 \tcode{lock()} operations that obtain ownership on the same object. \pnum -@@ -8205,7 +8205,7 @@ namespace std { +@@ -8257,7 +8257,7 @@ namespace std { \pnum An object of type \tcode{lock_guard} controls the ownership of a lockable object within a scope. A \tcode{lock_guard} object maintains ownership of a lockable @@ -4051,7 +4033,7 @@ index 53bec754..7a2d110e 100644 The behavior of a program is undefined if the lockable object referenced by \exposid{pm} does not exist for the entire lifetime of the \tcode{lock_guard} object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} -@@ -8278,7 +8278,7 @@ namespace std { +@@ -8330,7 +8330,7 @@ namespace std { \pnum An object of type \tcode{scoped_lock} controls the ownership of lockable objects within a scope. A \tcode{scoped_lock} object maintains ownership of lockable @@ -4060,7 +4042,7 @@ index 53bec754..7a2d110e 100644 The behavior of a program is undefined if the lockable objects referenced by \exposid{pm} do not exist for the entire lifetime of the \tcode{scoped_lock} object. -@@ -9435,7 +9435,7 @@ earlier returning execution. +@@ -9487,7 +9487,7 @@ earlier returning execution. \pnum \sync For any given \tcode{once_flag}: all active executions occur in a total @@ -4069,7 +4051,7 @@ index 53bec754..7a2d110e 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -11410,22 +11410,21 @@ the state object. +@@ -11462,22 +11462,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4096,7 +4078,7 @@ index 53bec754..7a2d110e 100644 \begin{note} This explicitly specifies that the result of the shared state is visible in the objects that reference this state in the sense of data race -@@ -11744,8 +11743,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -11796,8 +11795,8 @@ The class template \tcode{future} defines a type for asynchronous return objects do not share their shared state with other asynchronous return objects. A default-constructed \tcode{future} object has no shared state. A \tcode{future} object with shared state can be created by @@ -4107,7 +4089,7 @@ index 53bec754..7a2d110e 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -12055,7 +12054,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -12107,7 +12106,7 @@ object has no shared state. A \tcode{shared_future} object with shared state can be created by conversion from a \tcode{future} object and shares its shared state with the @@ -4116,7 +4098,7 @@ index 53bec754..7a2d110e 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -12504,7 +12503,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -12556,7 +12555,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -4126,10 +4108,10 @@ index 53bec754..7a2d110e 100644 the first function that successfully detects the ready status of the shared state or diff --git a/source/time.tex b/source/time.tex -index a29b08ed..b4d55717 100644 +index 85696ba9..6be9e47e 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -1216,7 +1216,7 @@ unless it meets all of the following conditions: +@@ -1217,7 +1217,7 @@ unless it meets all of the following conditions: are valid and each denotes a type\iref{temp.deduct}, \item the expression \tcode{T::is_steady} @@ -4138,7 +4120,7 @@ index a29b08ed..b4d55717 100644 \item the expression \tcode{T::now()} is well-formed when treated as an unevaluated operand. -@@ -11098,7 +11098,7 @@ The expression +@@ -11099,7 +11099,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp) \end{codeblock} @@ -4147,7 +4129,7 @@ index a29b08ed..b4d55717 100644 \pnum \returns -@@ -11131,7 +11131,7 @@ The expression +@@ -11132,7 +11132,7 @@ The expression \begin{codeblock} from_stream(declval&>(), @$F$@, tp, addressof(abbrev)) \end{codeblock} @@ -4156,7 +4138,7 @@ index a29b08ed..b4d55717 100644 \pnum \returns -@@ -11168,7 +11168,7 @@ from_stream(declval&>(), +@@ -11169,7 +11169,7 @@ from_stream(declval&>(), declval*>(), &offset) \end{codeblock} @@ -4165,7 +4147,7 @@ index a29b08ed..b4d55717 100644 \pnum \returns -@@ -11208,7 +11208,7 @@ The expression +@@ -11209,7 +11209,7 @@ The expression from_stream(declval&>(), @$F$@, tp, addressof(abbrev), &offset) \end{codeblock} @@ -4175,10 +4157,10 @@ index a29b08ed..b4d55717 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index 402dbea6..af0ec065 100644 +index 6936087f..1a4da8e8 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -120,15 +120,15 @@ namespace std { +@@ -117,15 +117,15 @@ namespace std { template struct integer_sequence; template @@ -4197,7 +4179,7 @@ index 402dbea6..af0ec065 100644 // \ref{intseq.binding}, structured binding support template struct tuple_size; -@@ -352,7 +352,7 @@ of forwarding functions. +@@ -349,7 +349,7 @@ of forwarding functions. \indextext{signal-safe!\idxcode{forward}}% \indextext{signal-safe!\idxcode{move}}% \indextext{signal-safe!\idxcode{move_if_noexcept}}% @@ -4206,7 +4188,7 @@ index 402dbea6..af0ec065 100644 \indexlibraryglobal{forward}% \indextext{\idxcode{forward}}% -@@ -527,7 +527,7 @@ template constexpr add_const_t& as_const(T& t) noexcept; +@@ -524,7 +524,7 @@ template constexpr add_const_t& as_const(T& t) noexcept; \pnum The library provides the function template \tcode{declval} to simplify the definition of @@ -4215,7 +4197,7 @@ index 402dbea6..af0ec065 100644 \indexlibraryglobal{declval}% \begin{itemdecl} -@@ -1814,7 +1814,7 @@ inline constexpr piecewise_construct_t piecewise_construct{}; +@@ -1787,7 +1787,7 @@ inline constexpr piecewise_construct_t piecewise_construct{}; The \keyword{struct} \tcode{piecewise_construct_t} is an empty class type used as a unique type to disambiguate constructor and function overloading. Specifically, \tcode{pair} has a constructor with \tcode{piecewise_construct_t} as the @@ -4224,16 +4206,16 @@ index 402dbea6..af0ec065 100644 for piecewise construction of the elements of the \tcode{pair} object. \rSec1[tuple]{Tuples} -@@ -2464,7 +2464,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. - \pnum +@@ -2438,7 +2438,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. \effects - Equivalent to the preceding constructors except that each element is constructed with + Equivalent to the preceding constructors + except that each element of non-reference type is constructed with -uses-allocator construction\iref{allocator.uses.construction}. +\deflink{uses-allocator construction}{allocator.uses.construction}. \end{itemdescr} \rSec3[tuple.assign]{Assignment} -@@ -3122,7 +3122,7 @@ template struct tuple_size; +@@ -3096,7 +3096,7 @@ template struct tuple_size; \pnum Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. If the expression \tcode{TS::value} is well-formed @@ -4242,7 +4224,7 @@ index 402dbea6..af0ec065 100644 each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts} with a base characteristic of \begin{codeblock} -@@ -7356,6 +7356,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); +@@ -7329,6 +7329,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); \rSec2[variant.monostate]{Class \tcode{monostate}}% \indexlibraryglobal{monostate}% @@ -4250,7 +4232,7 @@ index 402dbea6..af0ec065 100644 \begin{itemdecl} struct monostate{}; \end{itemdecl} -@@ -7527,7 +7528,8 @@ namespace std { +@@ -7500,7 +7501,8 @@ namespace std { \end{codeblock} \pnum @@ -4264,20 +4246,20 @@ index 402dbea6..af0ec065 100644 2.43.0 -From 41e5a2d3fa6d05b949f0ca91e997d6a792e762e1 Mon Sep 17 00:00:00 2001 +From fbef96ef3d80ee6c12a34b23fdbce396bdef68e7 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 -Subject: [PATCH 3/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and - literal fragments. +Subject: [PATCH 03/10] Use cxxdraft-htmlgen macros to annotate non-C++ code + and literal fragments. --- source/exceptions.tex | 4 +- - source/lex.tex | 180 +++++++-------- + source/lex.tex | 182 +++++++-------- source/time.tex | 518 +++++++++++++++++++++--------------------- - 3 files changed, 351 insertions(+), 351 deletions(-) + 3 files changed, 352 insertions(+), 352 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex -index abd4aef1..ea065465 100644 +index be584f9d..bab8b5b0 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -135,11 +135,11 @@ does not declare a variable. @@ -4295,7 +4277,7 @@ index abd4aef1..ea065465 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index 5baaf9a1..2e1da4ca 100644 +index 3c9f22b7..ade495a0 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -336,43 +336,43 @@ the numerical value has no other meaning in this context. @@ -4379,7 +4361,7 @@ index 5baaf9a1..2e1da4ca 100644 \end{floattable} \pnum -@@ -612,7 +612,7 @@ given character: +@@ -611,7 +611,7 @@ given character: \item \indextext{literal!string!raw}% If the next character begins a sequence of characters that could be the prefix @@ -4388,7 +4370,7 @@ index 5baaf9a1..2e1da4ca 100644 token shall be a raw string literal. Between the initial and final double quote characters of the raw string, any transformations performed in phase 2 (line splicing) are reverted; this reversion -@@ -620,7 +620,7 @@ is applied before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting +@@ -619,7 +619,7 @@ is applied before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting parenthesis is identified. The raw string literal is defined as the shortest sequence of characters that matches the raw-string pattern \begin{ncbnf} @@ -4397,7 +4379,16 @@ index 5baaf9a1..2e1da4ca 100644 \end{ncbnf} \item Otherwise, if the next three characters are \tcode{<::} and the subsequent character -@@ -755,15 +755,15 @@ depending on the implementation. +@@ -741,7 +741,7 @@ after certain occurrences of an \tcode{import} token + \end{note} + + \pnum +-The appearance of either of the characters \tcode{'} or \tcode{\textbackslash} or of ++The appearance of either of the characters \noncxxtcode{'} or \tcode{\textbackslash} or of + either of the character sequences \tcode{/*} or \tcode{//} in a + \grammarterm{q-char-sequence} or an \grammarterm{h-char-sequence} + is conditionally-supported with \impldef{meaning of \tcode{'}, \tcode{\textbackslash}, +@@ -762,15 +762,15 @@ depending on the implementation. \begin{bnf} \nontermdef{pp-number}\br digit\br @@ -4421,7 +4412,7 @@ index 5baaf9a1..2e1da4ca 100644 \end{bnf} \pnum -@@ -1189,19 +1189,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1198,19 +1198,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. \nontermdef{binary-literal}\br \terminal{0b} binary-digit\br \terminal{0B} binary-digit\br @@ -4444,7 +4435,7 @@ index 5baaf9a1..2e1da4ca 100644 \end{bnf} \begin{bnf} -@@ -1232,14 +1232,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1241,14 +1241,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{hexadecimal-digit-sequence}\br hexadecimal-digit\br @@ -4463,7 +4454,7 @@ index 5baaf9a1..2e1da4ca 100644 \end{bnf} \begin{bnf} -@@ -1254,17 +1254,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1263,17 +1263,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{unsigned-suffix} \textnormal{one of}\br @@ -4484,7 +4475,7 @@ index 5baaf9a1..2e1da4ca 100644 \end{bnf} \begin{bnf} -@@ -1303,7 +1303,7 @@ when determining the value. +@@ -1312,7 +1312,7 @@ when determining the value. \pnum The \grammarterm{hexadecimal-digit}s @@ -4493,7 +4484,7 @@ index 5baaf9a1..2e1da4ca 100644 have decimal values ten through fifteen. \begin{example} The number twelve can be written \tcode{12}, \tcode{014}, -@@ -1347,7 +1347,7 @@ none & +@@ -1356,7 +1356,7 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4502,7 +4493,7 @@ index 5baaf9a1..2e1da4ca 100644 \tcode{unsigned int} & \tcode{unsigned int}\\ & -@@ -1356,7 +1356,7 @@ none & +@@ -1365,7 +1365,7 @@ none & & \tcode{unsigned long long int} & \tcode{unsigned long long int}\\\hline @@ -4511,7 +4502,7 @@ index 5baaf9a1..2e1da4ca 100644 \tcode{long int} & \tcode{long int}\\ & -@@ -1368,22 +1368,22 @@ none & +@@ -1377,22 +1377,22 @@ none & & & \tcode{unsigned long long int}\\\hline @@ -4539,7 +4530,7 @@ index 5baaf9a1..2e1da4ca 100644 & \\\hline \tcode{z} or \tcode{Z} & -@@ -1431,12 +1431,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1440,12 +1440,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \indextext{literal!character}% \begin{bnf} \nontermdef{character-literal}\br @@ -4554,7 +4545,7 @@ index 5baaf9a1..2e1da4ca 100644 \end{bnf} \begin{bnf} -@@ -1466,12 +1466,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1475,12 +1475,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{simple-escape-sequence}\br @@ -4569,7 +4560,7 @@ index 5baaf9a1..2e1da4ca 100644 \end{bnf} \begin{bnf} -@@ -1487,21 +1487,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. +@@ -1496,21 +1496,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. \begin{bnf} \nontermdef{octal-escape-sequence}\br @@ -4598,7 +4589,7 @@ index 5baaf9a1..2e1da4ca 100644 \end{bnf} \begin{bnf} -@@ -1684,42 +1684,42 @@ is supported for compatibility with \CppXIV{} and C. +@@ -1693,42 +1693,42 @@ is supported for compatibility with \CppXIV{} and C. \begin{bnf} \nontermdef{fractional-constant}\br @@ -4652,7 +4643,7 @@ index 5baaf9a1..2e1da4ca 100644 \end{bnf} \pnum -@@ -1814,7 +1814,7 @@ std::float32_t z = 1e1000000000f32; // either greatest finite value or positive +@@ -1823,7 +1823,7 @@ std::float32_t z = 1e1000000000f32; // either greatest finite value or positive \begin{bnf} \nontermdef{string-literal}\br \opt{encoding-prefix} plain-string-literal\br @@ -4661,7 +4652,7 @@ index 5baaf9a1..2e1da4ca 100644 \end{bnf} \begin{bnf} -@@ -1842,7 +1842,7 @@ std::float32_t z = 1e1000000000f32; // either greatest finite value or positive +@@ -1851,7 +1851,7 @@ std::float32_t z = 1e1000000000f32; // either greatest finite value or positive \begin{bnf} \nontermdef{raw-string}\br @@ -4670,7 +4661,7 @@ index 5baaf9a1..2e1da4ca 100644 \end{bnf} \begin{bnf} -@@ -1928,7 +1928,7 @@ UTF-32 & +@@ -1937,7 +1937,7 @@ UTF-32 & \pnum \indextext{literal!string!raw}% @@ -4680,10 +4671,10 @@ index 5baaf9a1..2e1da4ca 100644 in the prefix is a \defn{raw string literal}. The \grammarterm{d-char-sequence} serves as a delimiter. The terminating diff --git a/source/time.tex b/source/time.tex -index b4d55717..62226224 100644 +index 6be9e47e..3d6fb318 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -2201,7 +2201,7 @@ If the parse fails to decode a valid duration, +@@ -2202,7 +2202,7 @@ If the parse fails to decode a valid duration, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{d} is not modified. If \tcode{\%Z} is used and successfully parsed, that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. @@ -4692,7 +4683,7 @@ index b4d55717..62226224 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -2793,9 +2793,9 @@ as specified in \ref{time.parse}. +@@ -2794,9 +2794,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -4704,7 +4695,7 @@ index b4d55717..62226224 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp -@@ -2986,9 +2986,9 @@ as specified in \ref{time.parse}. +@@ -2987,9 +2987,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -4716,7 +4707,7 @@ index b4d55717..62226224 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp -@@ -3185,9 +3185,9 @@ as specified in \ref{time.parse}. +@@ -3186,9 +3186,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -4728,7 +4719,7 @@ index b4d55717..62226224 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp prior to assigning that difference to \tcode{tp}. -@@ -3348,9 +3348,9 @@ as specified in \ref{time.parse}. +@@ -3349,9 +3349,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -4740,7 +4731,7 @@ index b4d55717..62226224 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp prior to assigning that difference to \tcode{tp}. -@@ -3455,9 +3455,9 @@ as specified in \ref{time.parse}. +@@ -3456,9 +3456,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -4752,7 +4743,7 @@ index b4d55717..62226224 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. Additionally, the parsed offset will be subtracted from the successfully parsed timestamp prior to assigning that difference to \tcode{tp}. -@@ -3570,9 +3570,9 @@ as specified in \ref{time.parse}. +@@ -3571,9 +3571,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid date, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{tp} is not modified. @@ -4764,7 +4755,7 @@ index b4d55717..62226224 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4223,9 +4223,9 @@ as specified in \ref{time.parse}. +@@ -4224,9 +4224,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid day, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{d} is not modified. @@ -4776,7 +4767,7 @@ index b4d55717..62226224 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4537,9 +4537,9 @@ as specified in \ref{time.parse}. +@@ -4538,9 +4538,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid month, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{m} is not modified. @@ -4788,7 +4779,7 @@ index b4d55717..62226224 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -4881,9 +4881,9 @@ as specified in \ref{time.parse}. +@@ -4882,9 +4882,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid year, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{y} is not modified. @@ -4800,7 +4791,7 @@ index b4d55717..62226224 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -5264,9 +5264,9 @@ as specified in \ref{time.parse}. +@@ -5265,9 +5265,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid weekday, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{wd} is not modified. @@ -4812,7 +4803,7 @@ index b4d55717..62226224 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -5647,9 +5647,9 @@ as specified in \ref{time.parse}. +@@ -5648,9 +5648,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid \tcode{month_day}, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{md} is not modified. @@ -4824,7 +4815,7 @@ index b4d55717..62226224 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -6327,9 +6327,9 @@ as specified in \ref{time.parse}. +@@ -6328,9 +6328,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid \tcode{year_month}, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{ym} is not modified. @@ -4836,7 +4827,7 @@ index b4d55717..62226224 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -6791,9 +6791,9 @@ as specified in \ref{time.parse}. +@@ -6792,9 +6792,9 @@ as specified in \ref{time.parse}. If the parse fails to decode a valid \tcode{year_month_day}, \tcode{is.setstate(ios_base::failbit)} is called and \tcode{ymd} is not modified. @@ -4848,7 +4839,7 @@ index b4d55717..62226224 100644 that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. \pnum -@@ -10486,23 +10486,23 @@ according to the following syntax: +@@ -10487,23 +10487,23 @@ according to the following syntax: \begin{ncbnf} \fmtnontermdef{literal-char}\br @@ -4877,7 +4868,7 @@ index b4d55717..62226224 100644 \end{ncbnf} The productions -@@ -10575,11 +10575,11 @@ the result of formatting a chrono type +@@ -10576,11 +10576,11 @@ the result of formatting a chrono type does not contain time zone abbreviation and time zone offset information. If the information is available, @@ -4891,7 +4882,7 @@ index b4d55717..62226224 100644 conversion specifier appears in the \fmtgrammarterm{chrono-format-spec}, an exception of type \tcode{format_error} is thrown, -@@ -10595,7 +10595,7 @@ A \tcode{duration} does not contain enough information +@@ -10596,7 +10596,7 @@ A \tcode{duration} does not contain enough information to format as a \tcode{weekday}. \end{example} However, if a flag refers to a ``time of day'' @@ -4900,7 +4891,7 @@ index b4d55717..62226224 100644 then a specialization of \tcode{duration} is interpreted as the time of day elapsed since midnight. -@@ -10607,57 +10607,57 @@ the time of day elapsed since midnight. +@@ -10608,57 +10608,57 @@ the time of day elapsed since midnight. \hline \lhdr{Specifier} & \rhdr{Replacement} \\ \capsep \endhead @@ -4976,7 +4967,7 @@ index b4d55717..62226224 100644 \\ \rowsep \tcode{\%g} & The last two decimal digits of the calendar year -@@ -10668,164 +10668,164 @@ If the result is a single digit it is prefixed by \tcode{0}. +@@ -10669,164 +10669,164 @@ If the result is a single digit it is prefixed by \tcode{0}. The calendar year as a decimal number, as specified in ISO 8601-1:2019 for the week calendar. If the result is less than four digits @@ -5212,7 +5203,7 @@ index b4d55717..62226224 100644 \\ \end{LongTable} -@@ -10873,9 +10873,9 @@ template +@@ -10874,9 +10874,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5224,7 +5215,7 @@ index b4d55717..62226224 100644 an offset of \tcode{0min} is formatted. \end{itemdescr} -@@ -10888,9 +10888,9 @@ template +@@ -10889,9 +10889,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5236,7 +5227,7 @@ index b4d55717..62226224 100644 an offset of \tcode{0min} is formatted. If the argument represents a time during a positive leap second insertion, and if a seconds field is formatted, -@@ -10907,9 +10907,9 @@ template +@@ -10908,9 +10908,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5248,7 +5239,7 @@ index b4d55717..62226224 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted by a \tcode{sys_time} initialized with -@@ -10928,9 +10928,9 @@ template +@@ -10929,9 +10929,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5260,7 +5251,7 @@ index b4d55717..62226224 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted by a \tcode{sys_time} initialized with -@@ -10949,9 +10949,9 @@ template +@@ -10950,9 +10950,9 @@ template \begin{itemdescr} \pnum \remarks @@ -5272,7 +5263,7 @@ index b4d55717..62226224 100644 an offset of \tcode{0min} is formatted. The date and time formatted are equivalent to those formatted -@@ -10969,7 +10969,7 @@ template +@@ -10970,7 +10970,7 @@ template \begin{itemdescr} \pnum \remarks @@ -5281,7 +5272,7 @@ index b4d55717..62226224 100644 an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -11010,18 +11010,18 @@ passed to \tcode{formatter::format}. +@@ -11011,18 +11011,18 @@ passed to \tcode{formatter::format}. \pnum \remarks If the \fmtgrammarterm{chrono-specs} is omitted, @@ -5290,22 +5281,22 @@ index b4d55717..62226224 100644 the \fmtgrammarterm{chrono-specs}. -If \tcode{\%Z} is used, +If \noncxxtcode{\%Z} is used, - it is replaced with \tcode{*f.abbrev} - if \tcode{f.abbrev} is not a null pointer value. + it is replaced with \tcode{*f.\exposid{abbrev_}} + if \tcode{f.\exposid{abbrev_}} is not a null pointer value. -If \tcode{\%Z} is used +If \noncxxtcode{\%Z} is used - and \tcode{f.abbrev} is a null pointer value, + and \tcode{f.\exposid{abbrev_}} is a null pointer value, an exception of type \tcode{format_error} is thrown. -If \tcode{\%z} (or a modified variant of \tcode{\%z}) is used, +If \noncxxtcode{\%z} (or a modified variant of \noncxxtcode{\%z}) is used, - it is formatted with the value of \tcode{*f.offset_sec} - if \tcode{f.offset_sec} is not a null pointer value. + it is formatted with the value of \tcode{*f.\exposid{offset-sec}} + if \tcode{f.\exposid{offset-sec}} is not a null pointer value. -If \tcode{\%z} (or a modified variant of \tcode{\%z}) is used +If \noncxxtcode{\%z} (or a modified variant of \noncxxtcode{\%z}) is used - and \tcode{f.offset_sec} is a null pointer value, + and \tcode{f.\exposid{offset-sec}} is a null pointer value, then an exception of type \tcode{format_error} is thrown. \end{itemdescr} -@@ -11225,8 +11225,8 @@ except that they have an unspecified effect +@@ -11226,8 +11226,8 @@ except that they have an unspecified effect on the value returned by subsequent calls to \tcode{basic_istream<>::gcount()}. Each overload takes a format string containing ordinary characters and flags which have special meaning. @@ -5316,7 +5307,7 @@ index b4d55717..62226224 100644 During parsing each flag interprets characters as parts of date and time types according to~\tref{time.parse.spec}. Some flags can be modified by a width parameter -@@ -11244,7 +11244,7 @@ the information that the format flag refers to, +@@ -11245,7 +11245,7 @@ the information that the format flag refers to, A \tcode{duration} cannot represent a \tcode{weekday}. \end{example} However, if a flag refers to a ``time of day'' @@ -5325,7 +5316,7 @@ index b4d55717..62226224 100644 then a specialization of \tcode{duration} is parsed as the time of day elapsed since midnight. -@@ -11264,229 +11264,229 @@ is called on the \tcode{basic_istream}. +@@ -11265,229 +11265,229 @@ is called on the \tcode{basic_istream}. \hline \lhdr{Flag} & \rhdr{Parsed value} \\ \capsep \endhead @@ -5655,7 +5646,7 @@ index b4d55717..62226224 100644 the locale's alternative representation. \begin{tailexample} \begin{codeblock} -@@ -11495,27 +11495,27 @@ istringstream{"-20 76"} >> parse("%3C %y", y); // \tcode{y == -1976y} is \tcode +@@ -11496,27 +11496,27 @@ istringstream{"-20 76"} >> parse("%3C %y", y); // \tcode{y == -1976y} is \tcode \end{codeblock} \end{tailexample} \\ \rowsep @@ -5697,7 +5688,7 @@ index b4d55717..62226224 100644 The time zone abbreviation or name. A single word is parsed. This word can only contain characters -@@ -11523,8 +11523,8 @@ from the basic character set\iref{lex.charset} +@@ -11524,8 +11524,8 @@ from the basic character set\iref{lex.charset} that are alphanumeric, or one of \tcode{'_'}, \tcode{'/'}, \tcode{'-'}, or \tcode{'+'}. \\ \rowsep @@ -5712,10 +5703,10 @@ index b4d55717..62226224 100644 2.43.0 -From 53d23fcadc9df8c3555b3e41d6dcfcd5f9ef2057 Mon Sep 17 00:00:00 2001 +From d7efac8955ecbee7cc939432e7406275d6c1a048 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 -Subject: [PATCH 4/9] Remove more inappropriate paragraph breaks. +Subject: [PATCH 04/10] Remove more inappropriate paragraph breaks. --- source/algorithms.tex | 4 ---- @@ -5747,10 +5738,10 @@ Subject: [PATCH 4/9] Remove more inappropriate paragraph breaks. 26 files changed, 267 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index cd4ba8fb..6eaef6b7 100644 +index 450e1200..c9bac8f9 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -8698,7 +8698,6 @@ but stronger than those for a partial ordering. +@@ -8697,7 +8697,6 @@ but stronger than those for a partial ordering. If we define \tcode{equiv(a, b)} as \tcode{!comp(a, b) \&\& !comp(b, a)}, then the requirements are that \tcode{comp} and \tcode{equiv} both be transitive relations: @@ -5758,7 +5749,7 @@ index cd4ba8fb..6eaef6b7 100644 \begin{itemize} \item \tcode{comp(a, b) \&\& comp(b, c)} implies \tcode{comp(a, c)} \item \tcode{equiv(a, b) \&\& equiv(b, c)} implies \tcode{equiv(a, c)} -@@ -9750,7 +9749,6 @@ Let $N = \tcode{last - first}$: +@@ -9749,7 +9748,6 @@ Let $N = \tcode{last - first}$: For the parallel algorithm overloads, \bigoh{N \log N} swaps and \bigoh{N} applications of the predicate. \end{itemize} @@ -5766,7 +5757,7 @@ index cd4ba8fb..6eaef6b7 100644 \end{itemdescr} \indexlibraryglobal{stable_partition}% -@@ -10909,7 +10907,6 @@ A random access range \range{a}{b} is a +@@ -10908,7 +10906,6 @@ A random access range \range{a}{b} is a {heap with respect to comp and proj@heap with respect to \tcode{comp} and \tcode{proj}} for a comparator and projection \tcode{comp} and \tcode{proj} if its elements are organized such that: @@ -5774,7 +5765,7 @@ index cd4ba8fb..6eaef6b7 100644 \begin{itemize} \item With \tcode{$N$ = b - a}, for all $i$, $0 < i < N$, -@@ -13573,7 +13570,6 @@ template +@@ -13572,7 +13569,6 @@ template \pnum Some algorithms in this subclause are constrained with the following exposition-only concepts: @@ -5783,7 +5774,7 @@ index cd4ba8fb..6eaef6b7 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index eab80b45..db5f28a2 100644 +index eeb815cc..a3b98a67 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -312,7 +312,6 @@ int X::y = 1; // defines \tcode{X::y} @@ -5794,7 +5785,7 @@ index eab80b45..db5f28a2 100644 \end{codeblock} whereas these are just declarations: \begin{codeblock} -@@ -850,7 +849,6 @@ compute equivalent values\iref{expr.eq}. +@@ -852,7 +851,6 @@ compute equivalent values\iref{expr.eq}. \pnum For the purposes of the preceding requirements: @@ -5802,16 +5793,16 @@ index eab80b45..db5f28a2 100644 \begin{itemize} \item If \tcode{D} is a class with an implicitly-declared constructor\iref{class.default.ctor,class.copy.ctor}, -@@ -6267,7 +6265,6 @@ has the top-level cv-qualifier \keyword{volatile}. +@@ -6292,7 +6290,6 @@ has the top-level cv-qualifier \keyword{volatile}. \pnum Every integer type has an \term{integer conversion rank} defined as follows: - \begin{itemize} - \item No two signed integer types other than \keyword{char} and \tcode{\keyword{signed} - \keyword{char}} (if \keyword{char} is signed) have the same rank, even if they have + \item No two signed integer types + have the same rank, even if they have diff --git a/source/classes.tex b/source/classes.tex -index 8c2f3c53..fd067ac2 100644 +index e41b209a..cf834a11 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -1640,7 +1640,6 @@ for each non-static data member of @@ -5838,7 +5829,7 @@ index 8c2f3c53..fd067ac2 100644 \begin{bnf} \nontermdef{base-clause}\br \terminal{:} base-specifier-list -@@ -5424,7 +5421,6 @@ initializers for direct and virtual base class subobjects and +@@ -5422,7 +5419,6 @@ initializers for direct and virtual base class subobjects and non-static data members can be specified by a \grammarterm{ctor-initializer}, which has the form @@ -5846,7 +5837,7 @@ index 8c2f3c53..fd067ac2 100644 \begin{bnf} \nontermdef{ctor-initializer}\br \terminal{:} mem-initializer-list -@@ -5895,7 +5891,6 @@ public: +@@ -5903,7 +5899,6 @@ public: X(const Mixins&... mixins) : Mixins(mixins)... { } }; \end{codeblock} @@ -5854,7 +5845,7 @@ index 8c2f3c53..fd067ac2 100644 \end{example} \rSec2[class.inhctor.init]{Initialization by inherited constructor}% -@@ -6551,7 +6546,6 @@ any non-static data member of \tcode{C} is of reference type or +@@ -6560,7 +6555,6 @@ any non-static data member of \tcode{C} is of reference type or A binary operator expression \tcode{a @ b} is \defnx{usable}{usable!binary operator expression} if either @@ -5862,7 +5853,7 @@ index 8c2f3c53..fd067ac2 100644 \begin{itemize} \item \tcode{a} or \tcode{b} is of class or enumeration type and -@@ -6672,7 +6666,6 @@ The \defnadj{synthesized}{three-way comparison} +@@ -6681,7 +6675,6 @@ The \defnadj{synthesized}{three-way comparison} of type \tcode{R}\iref{cmp.categories} of glvalues \tcode{a} and \tcode{b} of the same type is defined as follows: @@ -5870,7 +5861,7 @@ index 8c2f3c53..fd067ac2 100644 \begin{itemize} \item If \tcode{a <=> b} is usable\iref{class.compare.default} and -@@ -6772,7 +6765,6 @@ The \defn{common comparison type} \tcode{U} +@@ -6781,7 +6774,6 @@ The \defn{common comparison type} \tcode{U} of a possibly-empty list of $n$ comparison category types $\tcode{T}_0$, $\tcode{T}_1$, $\dotsc$, $\tcode{T}_{n-1}$ is defined as follows: @@ -5879,10 +5870,10 @@ index 8c2f3c53..fd067ac2 100644 \item If at least one $\tcode{T}_i$ is \tcode{std::partial_ordering}, diff --git a/source/compatibility.tex b/source/compatibility.tex -index cdca4c22..74cce624 100644 +index 46dcbe79..ad4f4201 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -2583,7 +2583,6 @@ Overspecification. +@@ -2693,7 +2693,6 @@ Overspecification. \effect The signatures of the following member functions changed from taking an \tcode{iterator} to taking a \tcode{const_iterator}: @@ -5890,7 +5881,7 @@ index cdca4c22..74cce624 100644 \begin{itemize} \item \tcode{insert(iter, val)} for \tcode{vector}, \tcode{deque}, \tcode{list}, \tcode{set}, \tcode{multiset}, \tcode{map}, \tcode{multimap} -@@ -2655,7 +2654,6 @@ Clarify intentions, avoid workarounds. +@@ -2765,7 +2764,6 @@ Clarify intentions, avoid workarounds. Valid \CppIII{} code that relies on implicit boolean conversions will fail to compile with this revision of \Cpp{}. Such conversions occur in the following conditions: @@ -5898,7 +5889,7 @@ index cdca4c22..74cce624 100644 \begin{itemize} \item passing a value to a function that takes an argument of type \tcode{bool}; \item using \tcode{operator==} to compare to \tcode{false} or \tcode{true}; -@@ -3773,7 +3771,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in +@@ -3920,7 +3918,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in \pnum Header \libheaderref{cstring}: The following functions have different declarations: @@ -5906,7 +5897,7 @@ index cdca4c22..74cce624 100644 \begin{itemize} \item \tcode{strchr} \item \tcode{strpbrk} -@@ -3787,7 +3784,6 @@ Subclause \ref{cstring.syn} describes the changes. +@@ -3934,7 +3931,6 @@ Subclause \ref{cstring.syn} describes the changes. \pnum Header \libheaderref{cwchar}: The following functions have different declarations: @@ -5914,7 +5905,7 @@ index cdca4c22..74cce624 100644 \begin{itemize} \item \tcode{wcschr} \item \tcode{wcspbrk} -@@ -3812,7 +3808,6 @@ in addition to the names declared in +@@ -3959,7 +3955,6 @@ in addition to the names declared in \pnum Header \libheaderref{cstdlib}: The following functions have different behavior: @@ -6052,7 +6043,7 @@ index 42828a4b..3e64abc8 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 0e937574..0be602a1 100644 +index 862f2004..cb05d8bd 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6079,7 +6070,7 @@ index 0e937574..0be602a1 100644 \begin{itemize} \item \tcode{T} is \defnx{\oldconcept{DefaultInsertable} into \tcode{X}} -@@ -4045,14 +4042,12 @@ such that distance from +@@ -4057,14 +4054,12 @@ such that distance from to \tcode{j} is positive, the following condition holds: @@ -6094,7 +6085,7 @@ index 0e937574..0be602a1 100644 \begin{codeblock} value_comp(*i, *j) != false \end{codeblock} -@@ -6064,7 +6059,6 @@ define class templates that meet the requirements for sequence containers. +@@ -6082,7 +6077,6 @@ define class templates that meet the requirements for sequence containers. \pnum The following exposition-only alias template may appear in deduction guides for sequence containers: @@ -6102,7 +6093,7 @@ index 0e937574..0be602a1 100644 \begin{codeblock} template using @\placeholdernc{iter-value-type}@ = iterator_traits::value_type; // \expos -@@ -9367,7 +9361,6 @@ If \tcode{size() < sz}, +@@ -9385,7 +9379,6 @@ If \tcode{size() < sz}, appends \tcode{sz - size()} default-inserted elements to the sequence. If \tcode{sz <= size()}, equivalent to: @@ -6110,7 +6101,7 @@ index 0e937574..0be602a1 100644 \begin{codeblock} list::iterator it = begin(); advance(it, sz); -@@ -20331,7 +20324,6 @@ For each of +@@ -20450,7 +20443,6 @@ For each of \tcode{stack}, the library provides the following constexpr-enabled formatter specialization where \tcode{\placeholder{adaptor-type}} is the name of the template: @@ -6118,7 +6109,7 @@ index 0e937574..0be602a1 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -24583,7 +24575,6 @@ typename A::offset_policy +@@ -24713,7 +24705,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6126,7 +6117,7 @@ index 0e937574..0be602a1 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -26028,7 +26019,6 @@ for the $k^\text{th}$ extent of \tcode{src}. +@@ -26158,7 +26149,6 @@ for the $k^\text{th}$ extent of \tcode{src}. \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: @@ -6134,7 +6125,7 @@ index 0e937574..0be602a1 100644 \begin{itemize} \item \tcode{SubExtents::rank()} equals -@@ -26040,7 +26030,6 @@ the type of \tcode{slices...[$k$]} is not a collapsing slice type, +@@ -26170,7 +26160,6 @@ the type of \tcode{slices...[$k$]} is not a collapsing slice type, \tcode{SubExt\-ents::static_extent(\placeholder{MAP_RANK}(slices, $k$))} equals the following, where $\Sigma_k$ denotes the type of \tcode{slices...[$k$]}: @@ -6143,10 +6134,10 @@ index 0e937574..0be602a1 100644 \item \tcode{Extents::static_extent($k$)} diff --git a/source/declarations.tex b/source/declarations.tex -index cea5493a..38e1f367 100644 +index bb44396c..112c5b77 100644 --- a/source/declarations.tex +++ b/source/declarations.tex -@@ -1594,7 +1594,6 @@ a partial specialization\iref{temp.spec.partial}, +@@ -1600,7 +1600,6 @@ a partial specialization\iref{temp.spec.partial}, an explicit instantiation\iref{temp.explicit}, or it has one of the following forms: @@ -6154,7 +6145,7 @@ index cea5493a..38e1f367 100644 \begin{ncsimplebnf} class-key \opt{attribute-specifier-seq} identifier \terminal{;}\br class-key \opt{attribute-specifier-seq} simple-template-id \terminal{;} -@@ -2499,7 +2498,6 @@ the \grammarterm{declarator} declares a function. +@@ -2512,7 +2511,6 @@ the \grammarterm{declarator} declares a function. \pnum Declarators have the syntax @@ -6162,7 +6153,7 @@ index cea5493a..38e1f367 100644 \begin{bnf} \nontermdef{declarator}\br ptr-declarator\br -@@ -4405,7 +4403,6 @@ In the following code, +@@ -4460,7 +4458,6 @@ In the following code, \tcode{g} will be called with the value \tcode{f(2)}: @@ -6170,7 +6161,7 @@ index cea5493a..38e1f367 100644 \begin{codeblock} int a = 1; int f(int); -@@ -5075,7 +5072,6 @@ To +@@ -5131,7 +5128,6 @@ To an object of type \tcode{T} means: @@ -6178,7 +6169,7 @@ index cea5493a..38e1f367 100644 \begin{itemize} \item If -@@ -5285,7 +5281,6 @@ is sequenced before those associated with +@@ -5341,7 +5337,6 @@ is sequenced before those associated with the initialization of the $j^\text{th}$ element. \item Otherwise, if the destination type is a class type: @@ -6186,7 +6177,7 @@ index cea5493a..38e1f367 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -6203,7 +6198,6 @@ a program that necessitates such a binding is ill-formed. +@@ -6356,7 +6351,6 @@ a program that necessitates such a binding is ill-formed. A reference to type ``\cvqual{cv1} \tcode{T1}'' is initialized by an expression of type ``\cvqual{cv2} \tcode{T2}'' as follows:% \indextext{binding!reference} @@ -6194,7 +6185,7 @@ index cea5493a..38e1f367 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6671,7 +6665,6 @@ int j { 1 }; // initialize to 1 +@@ -6837,7 +6831,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -6202,7 +6193,7 @@ index cea5493a..38e1f367 100644 \end{itemize} \pnum -@@ -7757,7 +7750,6 @@ as $\tcode{T}_i$ if the initializer is a prvalue, +@@ -7933,7 +7926,6 @@ as $\tcode{T}_i$ if the initializer is a prvalue, as ``lvalue reference to $\tcode{T}_i$'' if the initializer is an lvalue, or as ``rvalue reference to $\tcode{T}_i$'' otherwise, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -6210,7 +6201,7 @@ index cea5493a..38e1f367 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -7889,7 +7881,6 @@ struct S { +@@ -8065,7 +8057,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6218,7 +6209,7 @@ index cea5493a..38e1f367 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -7985,7 +7976,6 @@ If the underlying +@@ -8161,7 +8152,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6226,7 +6217,7 @@ index cea5493a..38e1f367 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8443,7 +8433,6 @@ void h() { +@@ -8620,7 +8610,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} according to the following grammar: @@ -6234,7 +6225,7 @@ index cea5493a..38e1f367 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8617,7 +8606,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8794,7 +8783,6 @@ not declare functions or function templates, the use of the name is ill-formed\i In particular, the name of a variable, function or enumerator does not hide the name of a class or enumeration declared in a different namespace. For example, @@ -6242,7 +6233,7 @@ index cea5493a..38e1f367 100644 \begin{codeblock} namespace A { class X { }; -@@ -9180,7 +9168,6 @@ otherwise identical. +@@ -9357,7 +9345,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6250,7 +6241,7 @@ index cea5493a..38e1f367 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -10057,7 +10044,6 @@ may be applied to a function or a lambda call operator or +@@ -10234,7 +10221,6 @@ may be applied to a function or a lambda call operator or to the declaration of a class or enumeration. An \grammarterm{attribute-argument-clause} may be present and, if present, shall have the form: @@ -6259,7 +6250,7 @@ index cea5493a..38e1f367 100644 \terminal{(} unevaluated-string \terminal{)} \end{ncbnf} diff --git a/source/exceptions.tex b/source/exceptions.tex -index ea065465..869f7588 100644 +index bab8b5b0..cfebc253 100644 --- a/source/exceptions.tex +++ b/source/exceptions.tex @@ -89,7 +89,6 @@ void f() { @@ -6284,10 +6275,10 @@ index ea065465..869f7588 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 24af225d..b23928b0 100644 +index 19764696..ff0ff92b 100644 --- a/source/expressions.tex +++ b/source/expressions.tex -@@ -467,7 +467,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied +@@ -510,7 +510,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied if and only if the expression is a glvalue of volatile-qualified type and it is one of the following: @@ -6295,7 +6286,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item \tcode{(} \grammarterm{expression} \tcode{)}, where \grammarterm{expression} is one of these expressions, -@@ -511,7 +510,6 @@ Standard conversions are implicit conversions with built-in meaning. +@@ -554,7 +553,6 @@ Standard conversions are implicit conversions with built-in meaning. \ref{conv} enumerates the full set of such conversions. A \defnx{standard conversion sequence}{conversion sequence!standard} is a sequence of standard conversions in the following order: @@ -6303,7 +6294,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item Zero or one conversion from the following set: lvalue-to-rvalue conversion, array-to-pointer conversion, and function-to-pointer -@@ -539,7 +537,6 @@ a required destination type and value category. +@@ -582,7 +580,6 @@ a required destination type and value category. \begin{note} Expressions with a given type will be implicitly converted to other types in several contexts: @@ -6311,7 +6302,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item When used as operands of operators. The operator's requirements for its operands dictate the destination type\iref{expr.compound}. -@@ -665,7 +662,6 @@ int n = g(true); // OK, does not access \tcode{y.n} +@@ -708,7 +705,6 @@ int n = g(true); // OK, does not access \tcode{y.n} \pnum The result of the conversion is determined according to the following rules: @@ -6319,7 +6310,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item If \tcode{T} is \cv{}~\tcode{std::nullptr_t}, the result is a -@@ -1176,7 +1172,6 @@ type cause conversions and yield result types in a similar way. The +@@ -1227,7 +1223,6 @@ type cause conversions and yield result types in a similar way. The purpose is to yield a common type, which is also the type of the result. This pattern is called the \defnx{usual arithmetic conversions}{conversion!usual arithmetic}, which are defined as follows: @@ -6327,7 +6318,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item The lvalue-to-rvalue conversion\iref{conv.lval} is applied to each operand and -@@ -1219,7 +1214,6 @@ As a consequence, operands of type \keyword{bool}, \keyword{char8_t}, \keyword{c +@@ -1270,7 +1265,6 @@ As a consequence, operands of type \keyword{bool}, \keyword{char8_t}, \keyword{c to some integral type. \end{footnote} Then the following rules are applied to determine \tcode{C}: @@ -6335,7 +6326,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item If \tcode{T1} and \tcode{T2} are the same type, \tcode{C} is that type. -@@ -2811,7 +2805,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} +@@ -2862,7 +2856,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} \pnum For the purposes of lambda capture, an expression potentially references local entities as follows: @@ -6343,7 +6334,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item An \grammarterm{id-expression} that names a local entity -@@ -3422,7 +3415,6 @@ The \grammarterm{expression} is an unevaluated operand. +@@ -3492,7 +3485,6 @@ The \grammarterm{expression} is an unevaluated operand. Substitution of template arguments (if any) and verification of semantic properties proceed in the following order: @@ -6351,7 +6342,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -3434,7 +3426,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. +@@ -3511,7 +3503,6 @@ $E$ shall not be a potentially-throwing expression. \item If the \grammarterm{return-type-requirement} is present, then: @@ -6359,7 +6350,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item Substitution of template arguments (if any) -@@ -4539,7 +4530,6 @@ referred to by \tcode{T}. +@@ -4670,7 +4661,6 @@ referred to by \tcode{T}. \pnum Let \tcode{C} be the class type to which \tcode{T} points or refers. The runtime check logically executes as follows: @@ -6367,7 +6358,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item If, in the most derived object pointed (referred) to by \tcode{v}, \tcode{v} points (refers) to a public base class subobject of a -@@ -5053,7 +5043,6 @@ constness. +@@ -5198,7 +5188,6 @@ constness. The null member pointer value\iref{conv.mem} is converted to the null member pointer value of the destination type. The result of this conversion is unspecified, except in the following cases: @@ -6375,7 +6366,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item Converting a prvalue of type ``pointer to member function'' to a different pointer-to-member-function type and back to its original type -@@ -5488,7 +5477,6 @@ is called a \term{suspension context} of the function. +@@ -5634,7 +5623,6 @@ is called a \term{suspension context} of the function. \pnum Evaluation of an \grammarterm{await-expression} involves the following auxiliary types, expressions, and objects: @@ -6383,7 +6374,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item \placeholder{p} is an lvalue naming the promise -@@ -5871,7 +5859,6 @@ and +@@ -6017,7 +6005,6 @@ and the \grammarterm{new-expression}, then the allocated type is the type deduced for the variable \tcode{x} in the invented declaration\iref{dcl.spec.auto}: @@ -6391,7 +6382,7 @@ index 24af225d..b23928b0 100644 \begin{codeblock} T x @\textrm{\placeholder{init}}@ ; \end{codeblock} -@@ -6231,7 +6218,6 @@ the alignment argument is removed from the argument list; +@@ -6377,7 +6364,6 @@ the alignment argument is removed from the argument list; otherwise, an argument that is the type's alignment and has type \tcode{std::align_val_t} is added into the argument list immediately after the first argument; @@ -6399,7 +6390,7 @@ index 24af225d..b23928b0 100644 \end{itemize} and then overload resolution is performed again. -@@ -6309,7 +6295,6 @@ necessarily be the same as that of the block if the object is an array. +@@ -6455,7 +6441,6 @@ necessarily be the same as that of the block if the object is an array. \indextext{\idxcode{new}!default constructor and}% A \grammarterm{new-expression} that creates an object of type \tcode{T} initializes that object as follows: @@ -6407,7 +6398,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item If the \grammarterm{new-initializer} is omitted, the object is default-initialized\iref{dcl.init}. -@@ -6588,7 +6573,6 @@ of their constructor; see~\ref{class.base.init}). +@@ -6734,7 +6719,6 @@ of their constructor; see~\ref{class.base.init}). \pnum If the value of the operand of the \grammarterm{delete-expression} is not a null pointer value, then: @@ -6415,7 +6406,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item If the allocation call for the \grammarterm{new-expression} for the object to -@@ -7433,7 +7417,6 @@ or one operand has integral type and +@@ -7601,7 +7585,6 @@ or one operand has integral type and the other operand has unscoped enumeration type, the \link{usual arithmetic conversions}{expr.arith.conv} are applied to the operands. Then: @@ -6423,7 +6414,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, -@@ -7588,7 +7571,6 @@ is considered to be equivalent to a pointer to a hypothetical array element +@@ -7756,7 +7739,6 @@ is considered to be equivalent to a pointer to a hypothetical array element $n$ for this purpose. \end{footnote} is defined in terms of a partial order consistent with the following rules: @@ -6431,7 +6422,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item If two pointers point to different elements of the same array, or to subobjects thereof, the pointer to the element with the higher subscript -@@ -7601,7 +7583,6 @@ neither member is a subobject of zero size +@@ -7769,7 +7751,6 @@ neither member is a subobject of zero size and their class is not a union. \item Otherwise, neither pointer is required to compare greater than the other. @@ -6439,7 +6430,7 @@ index 24af225d..b23928b0 100644 \end{itemize} \pnum -@@ -7663,7 +7644,6 @@ If at least one of the converted operands is a pointer, +@@ -7839,7 +7820,6 @@ If at least one of the converted operands is a pointer, \link{qualification conversions}{conv.qual} are performed on both operands to bring them to their \deflink{composite pointer type}{expr.type}. Comparing pointers is defined as follows: @@ -6447,7 +6438,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item If one pointer represents the address of a complete object, and another -@@ -7693,7 +7673,6 @@ qualification conversions\iref{conv.qual} +@@ -7869,7 +7849,6 @@ qualification conversions\iref{conv.qual} are performed on both operands to bring them to their composite pointer type\iref{expr.type}. Comparing pointers to members is defined as follows: @@ -6455,7 +6446,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item If two pointers to members are both the null member pointer value, they compare -@@ -7979,7 +7958,6 @@ Attempts are made to form an implicit conversion sequence +@@ -8154,7 +8133,6 @@ Attempts are made to form an implicit conversion sequence from an operand expression \tcode{E1} of type \tcode{T1} to a target type related to the type \tcode{T2} of the operand expression \tcode{E2} as follows: @@ -6463,7 +6454,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item If \tcode{E2} is an lvalue, the target type is ``lvalue reference to \tcode{T2}'', -@@ -8058,7 +8036,6 @@ subclause. +@@ -8233,7 +8211,6 @@ subclause. and \link{function-to-pointer}{conv.func} standard conversions are performed on the second and third operands. After those conversions, one of the following shall hold: @@ -6471,7 +6462,7 @@ index 24af225d..b23928b0 100644 \begin{itemize} \item The second and third operands have the same type; the result is of that type and the result is copy-initialized using the selected operand. -@@ -8088,7 +8065,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. +@@ -8263,7 +8240,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. Both the second and third operands have type \tcode{std::nullptr_t} or one has that type and the other is a null pointer constant. The result is of type \tcode{std::nullptr_t}. @@ -6480,7 +6471,7 @@ index 24af225d..b23928b0 100644 \rSec2[expr.yield]{Yielding a value}% diff --git a/source/future.tex b/source/future.tex -index dc26444a..ac4ac504 100644 +index fc3ccf5a..86a8449c 100644 --- a/source/future.tex +++ b/source/future.tex @@ -283,7 +283,6 @@ shown in the above synopsis. @@ -6548,7 +6539,7 @@ index dc26444a..ac4ac504 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index ad9e3afe..a046490d 100644 +index c25de465..42906f91 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -2105,14 +2105,12 @@ does nothing. @@ -6566,7 +6557,7 @@ index ad9e3afe..a046490d 100644 \begin{itemize} \item \tcode{rdstate()}, \tcode{rdbuf()}, and \tcode{exceptions()} are left unchanged; -@@ -7225,7 +7223,6 @@ clears \tcode{ios_base::skipws} in the format flags stored in the +@@ -7186,7 +7184,6 @@ clears \tcode{ios_base::skipws} in the format flags stored in the format flags stored in the \tcode{basic_ostream} object \tcode{cout} (the same as \tcode{cout << noshowbase}). \end{footnote} @@ -6574,7 +6565,7 @@ index ad9e3afe..a046490d 100644 \begin{codeblock} void f(ios_base& str, ios_base::fmtflags mask) { // reset specified flags -@@ -7264,7 +7261,6 @@ then the expression +@@ -7225,7 +7222,6 @@ then the expression behaves as if it called \tcode{f(in, mask)}, where the function \tcode{f} is defined as: \indexlibrarymember{fmtflags}{ios_base}% @@ -6582,7 +6573,7 @@ index ad9e3afe..a046490d 100644 \begin{codeblock} void f(ios_base& str, ios_base::fmtflags mask) { // set specified flags -@@ -7310,7 +7306,6 @@ then the expression +@@ -7271,7 +7267,6 @@ then the expression \tcode{in >> setbase(base)} behaves as if it called \tcode{f(in, base)}, where the function \tcode{f} is defined as: @@ -6590,7 +6581,7 @@ index ad9e3afe..a046490d 100644 \begin{codeblock} void f(ios_base& str, int base) { // set \tcode{basefield} -@@ -7353,7 +7348,6 @@ then the expression +@@ -7314,7 +7309,6 @@ then the expression \tcode{out << setfill(c)} behaves as if it called \tcode{f(out, c)}, where the function \tcode{f} is defined as: @@ -6598,7 +6589,7 @@ index ad9e3afe..a046490d 100644 \begin{codeblock} template void f(basic_ios& str, charT c) { -@@ -7394,7 +7388,6 @@ then the expression +@@ -7355,7 +7349,6 @@ then the expression \tcode{in >> setprecision(n)} behaves as if it called \tcode{f(in, n)}, where the function \tcode{f} is defined as: @@ -6606,7 +6597,7 @@ index ad9e3afe..a046490d 100644 \begin{codeblock} void f(ios_base& str, int n) { // set precision -@@ -7440,7 +7433,6 @@ then the expression +@@ -7401,7 +7394,6 @@ then the expression \tcode{in >> setw(n)} behaves as if it called \tcode{f(in, n)}, where the function \tcode{f} is defined as: @@ -6614,7 +6605,7 @@ index ad9e3afe..a046490d 100644 \begin{codeblock} void f(ios_base& str, int n) { // set width -@@ -7490,7 +7482,6 @@ An object of unspecified type such that if +@@ -7451,7 +7443,6 @@ An object of unspecified type such that if \tcode{in} is an object of type \tcode{basic_istream} then the expression \tcode{in >> get_money(mon, intl)} behaves as if it called \tcode{f(in, mon, intl)}, where the function \tcode{f} is defined as: @@ -6622,7 +6613,7 @@ index ad9e3afe..a046490d 100644 \begin{codeblock} template void f(basic_ios& str, moneyT& mon, bool intl) { -@@ -7529,7 +7520,6 @@ An object of unspecified type such that if +@@ -7490,7 +7481,6 @@ An object of unspecified type such that if then the expression \tcode{out << put_money(mon, intl)} behaves as a \link{formatted output function}{ostream.formatted.reqmts} that calls \tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as: @@ -6630,7 +6621,7 @@ index ad9e3afe..a046490d 100644 \begin{codeblock} template void f(basic_ios& str, const moneyT& mon, bool intl) { -@@ -7565,7 +7555,6 @@ An object of unspecified type such that if \tcode{in} is an object of type +@@ -7526,7 +7516,6 @@ An object of unspecified type such that if \tcode{in} is an object of type \tcode{basic_istream} then the expression \tcode{in >> get_time(tmb, fmt)} behaves as if it called \tcode{f(in, tmb, fmt)}, where the function \tcode{f} is defined as: @@ -6638,7 +6629,7 @@ index ad9e3afe..a046490d 100644 \begin{codeblock} template void f(basic_ios& str, tm* tmb, const charT* fmt) { -@@ -7604,7 +7593,6 @@ An object of unspecified type such that if \tcode{out} is an object of +@@ -7565,7 +7554,6 @@ An object of unspecified type such that if \tcode{out} is an object of type \tcode{basic_ostream} then the expression \tcode{out << put_time(tmb, fmt)} behaves as if it called \tcode{f(out, tmb, fmt)}, where the function \tcode{f} is defined as: @@ -6646,7 +6637,7 @@ index ad9e3afe..a046490d 100644 \begin{codeblock} template void f(basic_ios& str, const tm* tmb, const charT* fmt) { -@@ -11432,7 +11420,6 @@ with the specialization that a sequence of characters is read from the input +@@ -11393,7 +11381,6 @@ with the specialization that a sequence of characters is read from the input sequence as if by reading from the associated file into an internal buffer (\tcode{extern_buf}) and then as if by doing: @@ -6654,7 +6645,7 @@ index ad9e3afe..a046490d 100644 \begin{codeblock} char extern_buf[XSIZE]; const char* extern_end; -@@ -13923,7 +13910,6 @@ without an intervening \grammarterm{root-directory} element. +@@ -13884,7 +13871,6 @@ without an intervening \grammarterm{root-directory} element. \pnum \indextext{path!normalization|(}% \defnx{Normalization}{normalization!path|see{path, normalization}} of a generic format pathname means: @@ -6662,7 +6653,7 @@ index ad9e3afe..a046490d 100644 \begin{enumerate} \item If the path is empty, stop. \item Replace each slash character in the \grammarterm{root-name} with a \grammarterm{preferred-separator}. -@@ -17065,7 +17051,6 @@ recursive_directory_iterator& increment(error_code& ec); +@@ -17026,7 +17012,6 @@ recursive_directory_iterator& increment(error_code& ec); As specified for the prefix increment operation of \link{Input iterators}{input.iterators}, except that: @@ -6671,7 +6662,7 @@ index ad9e3afe..a046490d 100644 \item If there are no more entries at the current depth, then if \tcode{depth() != 0} iteration over the parent directory resumes; otherwise \tcode{*this = recursive_directory_iterator()}. diff --git a/source/iterators.tex b/source/iterators.tex -index 46edb440..b083ad28 100644 +index 5483c764..7cfb8250 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -963,7 +963,6 @@ may be declared as \keyword{void}. @@ -6730,7 +6721,7 @@ index 46edb440..b083ad28 100644 \end{example} \rSec3[move.iterator]{Class template \tcode{move_iterator}} -@@ -6518,7 +6511,6 @@ partial_sum(istream_iterator(cin), +@@ -6506,7 +6499,6 @@ partial_sum(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "@\textbackslash@n")); \end{codeblock} @@ -6739,7 +6730,7 @@ index 46edb440..b083ad28 100644 \tcode{cin}, and prints the partial sums onto diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index 6c8b5dab..a8a934eb 100644 +index f7e65073..5597e57d 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -196,7 +196,6 @@ save space, items that do not apply to a Clause are omitted. @@ -6868,7 +6859,7 @@ index 6c8b5dab..a8a934eb 100644 \begin{itemize} \item For replacement functions\iref{replacement.functions}, if the installed replacement function does not -@@ -3776,7 +3760,6 @@ functions an implementation shall provide corresponding definitions. +@@ -3770,7 +3754,6 @@ functions an implementation shall provide corresponding definitions. \indextext{stable algorithm}% When the requirements for an algorithm state that it is ``stable'' without further elaboration, it means: @@ -6887,10 +6878,10 @@ index 877f21f3..7fc0a416 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index be9812fa..fb901823 100644 +index 4375357a..df34f301 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1481,7 +1481,6 @@ when considered as an unevaluated operand. +@@ -1525,7 +1525,6 @@ when considered as an unevaluated operand. \pnum Let \exposid{pair-constructor} be an exposition-only class defined as follows: @@ -6898,7 +6889,7 @@ index be9812fa..fb901823 100644 \begin{codeblock} class @\exposid{pair-constructor}@ { using @\exposid{pair-type}@ = remove_cv_t; // \expos -@@ -3620,7 +3619,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a); +@@ -4087,7 +4086,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a); \tcode{is_move_constructible_v} is \tcode{true}, and \tcode{d(p)} is a well-formed expression. For the first two overloads: @@ -6907,7 +6898,7 @@ index be9812fa..fb901823 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index 7c1dbfb9..eda69180 100644 +index 08052036..2c8f245e 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -1684,7 +1684,6 @@ The predicate condition for a template specialization \tcode{is_convertible constexpr complex operator+(const complex& lhs); @@ -6995,7 +6986,7 @@ index f3299984..a0370273 100644 \begin{itemdecl} indirect_array valarray::operator[](const valarray&); diff --git a/source/overloading.tex b/source/overloading.tex -index d3250f2d..c5328c3c 100644 +index a1fdfd80..0b95dbcd 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -103,7 +103,6 @@ the list of arguments in its own unique way. @@ -7078,7 +7069,7 @@ index d3250f2d..c5328c3c 100644 \begin{itemize} \item A conversion that does not convert a pointer or a pointer to member -@@ -4182,7 +4172,6 @@ is a \defnx{literal operator template}{literal!operator!template}. +@@ -4282,7 +4272,6 @@ is a \defnx{literal operator template}{literal!operator!template}. \pnum The declaration of a literal operator shall have a \grammarterm{parameter-declaration-clause} equivalent to one of the following: @@ -7087,10 +7078,10 @@ index d3250f2d..c5328c3c 100644 const char* unsigned long long int diff --git a/source/preprocessor.tex b/source/preprocessor.tex -index b3cf7fc7..cd5f8947 100644 +index ba13ba06..a4228a22 100644 --- a/source/preprocessor.tex +++ b/source/preprocessor.tex -@@ -199,7 +199,6 @@ begins with the first character in the source file +@@ -200,7 +200,6 @@ begins with the first character in the source file (optionally after whitespace containing no new-line characters) or follows whitespace containing at least one new-line character, and is @@ -7098,7 +7089,7 @@ index b3cf7fc7..cd5f8947 100644 \begin{itemize} \item a \tcode{\#} preprocessing token, or -@@ -645,7 +644,6 @@ including within a preprocessing directive. +@@ -646,7 +645,6 @@ including within a preprocessing directive. \begin{example} This demonstrates a way to include a library \tcode{optional} facility only if it is available: @@ -7106,7 +7097,7 @@ index b3cf7fc7..cd5f8947 100644 \begin{codeblock} #if __has_include() # include -@@ -806,14 +804,12 @@ However, using the \tcode{< >} form for headers provided +@@ -808,14 +806,12 @@ However, using the \tcode{< >} form for headers provided with the implementation and the \tcode{" "} form for sources outside the control of the implementation achieves wider portability. For instance: @@ -7121,7 +7112,7 @@ index b3cf7fc7..cd5f8947 100644 \end{note} \pnum -@@ -821,7 +817,6 @@ achieves wider portability. For instance: +@@ -823,7 +819,6 @@ achieves wider portability. For instance: This illustrates macro-replaced \tcode{\#include} directives: @@ -7129,7 +7120,7 @@ index b3cf7fc7..cd5f8947 100644 \begin{codeblock} #if VERSION == 1 #define INCFILE "vers1.h" -@@ -1975,7 +1970,6 @@ is optional. +@@ -2044,7 +2039,6 @@ is optional. \pnum \begin{example} In the following fragment: @@ -7137,7 +7128,7 @@ index b3cf7fc7..cd5f8947 100644 \begin{codeblock} #define hash_hash # ## # #define mkstr(a) # a -@@ -1985,7 +1979,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";} +@@ -2054,7 +2048,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";} \end{codeblock} The expansion produces, at various stages: @@ -7145,7 +7136,7 @@ index b3cf7fc7..cd5f8947 100644 \begin{codeblock} join(x, y) in_between(x hash_hash y) -@@ -2221,7 +2214,6 @@ has no effect. +@@ -2290,7 +2283,6 @@ has no effect. \pnum The following macro names shall be defined by the implementation: @@ -7153,15 +7144,15 @@ index b3cf7fc7..cd5f8947 100644 \begin{description} \item -@@ -2455,7 +2447,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali +@@ -2484,7 +2476,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali \pnum The following macro names are conditionally defined by the implementation: - \begin{description} \item - \indextext{__stdc__@\mname{STDC}}% -@@ -2490,7 +2481,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. + \indextext{__stdcpp_float16_t__@\mname{STDCPP_FLOAT16_T}}% +@@ -2559,7 +2550,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. \mname{STDCPP_THREADS}\\ Defined, and has the value integer literal \tcode{1}, if and only if a program can have more than one \link{thread of execution}{intro.multithread}. @@ -7170,7 +7161,7 @@ index b3cf7fc7..cd5f8947 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 29b5ae53..912546d8 100644 +index 76ce039f..cd57cb1f 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7237,7 +7228,7 @@ index 29b5ae53..912546d8 100644 \begin{codeblock} template concept @\defexposconceptnc{simple-view}@ = // \expos -@@ -5962,7 +5954,6 @@ If \tcode{decltype((F))} does not model +@@ -5986,7 +5978,6 @@ If \tcode{decltype((F))} does not model \tcode{views::take(E, F)} is ill-formed. Otherwise, the expression \tcode{views::take(E, F)} is expression-equivalent to: @@ -7245,7 +7236,7 @@ index 29b5ae53..912546d8 100644 \begin{itemize} \item If \tcode{T} is a specialization -@@ -5988,7 +5979,6 @@ then +@@ -6012,7 +6003,6 @@ then ranges::be\-gin(E) + std::min(ranges::distance(E), F))}, except that \tcode{E} is evaluated only once, where \tcode{U} is a type determined as follows: @@ -7253,7 +7244,7 @@ index 29b5ae53..912546d8 100644 \begin{itemize} \item if \tcode{T} is a specialization of \tcode{span}, then \tcode{U} is \tcode{span}; -@@ -6450,7 +6440,6 @@ If \tcode{decltype((F))} does not model +@@ -6474,7 +6464,6 @@ If \tcode{decltype((F))} does not model \tcode{views::drop(E, F)} is ill-formed. Otherwise, the expression \tcode{views::drop(E, F)} is expression-equivalent to: @@ -7261,7 +7252,7 @@ index 29b5ae53..912546d8 100644 \begin{itemize} \item If \tcode{T} is a specialization of -@@ -7531,7 +7520,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and +@@ -7555,7 +7544,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and \exposid{Base} and \exposid{InnerBase} each model \libconcept{forward_range}. In that case, \tcode{\exposid{iterator}::iterator_category} is defined as follows: @@ -7269,7 +7260,7 @@ index 29b5ae53..912546d8 100644 \begin{itemize} \item Let \placeholder{OUTERC} denote -@@ -9855,7 +9843,6 @@ appears in the immediate context of a template instantiation. +@@ -9881,7 +9869,6 @@ appears in the immediate context of a template instantiation. \end{note} Otherwise, \tcode{views::counted(E, F)} is expression-equivalent to: @@ -7278,7 +7269,7 @@ index 29b5ae53..912546d8 100644 \item If \tcode{T} models \libconcept{contiguous_iterator}, diff --git a/source/statements.tex b/source/statements.tex -index 301d6304..65faf674 100644 +index 7a81a873..ab070cf7 100644 --- a/source/statements.tex +++ b/source/statements.tex @@ -731,7 +731,6 @@ exposition only; and @@ -7290,10 +7281,10 @@ index 301d6304..65faf674 100644 \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are diff --git a/source/support.tex b/source/support.tex -index 0dd4cd06..90a3972a 100644 +index 8cef234d..ffcaa878 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -2440,7 +2440,6 @@ This requirement is binding on any replacement versions of these functions. +@@ -2451,7 +2451,6 @@ This requirement is binding on any replacement versions of these functions. \pnum \default @@ -7301,7 +7292,7 @@ index 0dd4cd06..90a3972a 100644 \begin{itemize} \item Executes a loop: -@@ -2919,7 +2918,6 @@ Intentionally performs no other action. +@@ -2930,7 +2929,6 @@ Intentionally performs no other action. \pnum \begin{example} This can be useful for constructing an object at a known address: @@ -7309,7 +7300,7 @@ index 0dd4cd06..90a3972a 100644 \begin{codeblock} void* place = operator new(sizeof(Something)); Something* p = new (place) Something(); -@@ -4822,7 +4820,6 @@ are collectively termed the \defn{comparison category types}. +@@ -4833,7 +4831,6 @@ are collectively termed the \defn{comparison category types}. Each is specified in terms of an exposition-only data member named \tcode{value} whose value typically corresponds to that of an enumerator from one of the following exposition-only enumerations: @@ -7317,7 +7308,7 @@ index 0dd4cd06..90a3972a 100644 \begin{codeblock} enum class @\placeholdernc{ord}@ { @\placeholdernc{equal}@ = 0, @\placeholdernc{equivalent}@ = @\placeholdernc{equal}@, @\placeholdernc{less}@ = -1, @\placeholdernc{greater}@ = 1 }; // \expos enum class @\placeholdernc{ncmp}@ { @\placeholdernc{unordered}@ = -127 }; // \expos -@@ -5780,7 +5777,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and +@@ -5791,7 +5788,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and denotes a type\iref{temp.deduct}, then \tcode{coroutine_traits} has the following publicly accessible member: @@ -7326,10 +7317,10 @@ index 0dd4cd06..90a3972a 100644 using promise_type = R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index ea6af80c..23c257ac 100644 +index f0a5071f..a40183bd 100644 --- a/source/templates.tex +++ b/source/templates.tex -@@ -257,7 +257,6 @@ in some translation unit; no diagnostic is required. +@@ -256,7 +256,6 @@ in some translation unit; no diagnostic is required\ifndrdef{temp.pre.reach.def} The syntax for \grammarterm{template-parameter}{s} is: @@ -7337,7 +7328,7 @@ index ea6af80c..23c257ac 100644 \begin{bnf} \nontermdef{template-parameter}\br type-parameter\br -@@ -1638,7 +1637,6 @@ for function templates}{temp.func.order}. +@@ -1672,7 +1671,6 @@ for function templates}{temp.func.order}. Given an invented class template \tcode{X} with the \grammarterm{template-head} of \tcode{A} (including default arguments and \grammarterm{requires-clause}, if any): @@ -7345,7 +7336,7 @@ index ea6af80c..23c257ac 100644 \begin{itemize} \item Each of the two function templates has the same template parameters -@@ -2035,7 +2033,6 @@ or templated function declaration\iref{dcl.fct} +@@ -2069,7 +2067,6 @@ or templated function declaration\iref{dcl.fct} can be constrained by the use of a \grammarterm{requires-clause}. This allows the specification of constraints for that declaration as an expression: @@ -7353,7 +7344,7 @@ index ea6af80c..23c257ac 100644 \begin{bnf} \nontermdef{constraint-expression}\br logical-or-expression -@@ -2051,7 +2048,6 @@ that are used to constrain the declaration. +@@ -2085,7 +2082,6 @@ that are used to constrain the declaration. \pnum \indextext{constraint!associated|see{associated constraints}}% A declaration's \defn{associated constraints} are defined as follows: @@ -7361,7 +7352,7 @@ index ea6af80c..23c257ac 100644 \begin{itemize} \item If there are no introduced \grammarterm{constraint-expression}{s}, the declaration has no associated constraints. -@@ -2842,7 +2838,6 @@ public: +@@ -2892,7 +2888,6 @@ public: declares three member functions of a class template. The subscript function can be defined like this: @@ -7369,7 +7360,7 @@ index ea6af80c..23c257ac 100644 \begin{codeblock} template T& Array::operator[](int i) { if (i<0 || sz<=i) error("Array: range error"); -@@ -3234,7 +3229,6 @@ produces zero or more instantiations of the pattern in a list (described below). +@@ -3284,7 +3279,6 @@ produces zero or more instantiations of the pattern in a list (described below). The form of the pattern depends on the context in which the expansion occurs. Pack expansions can occur in the following contexts: @@ -7377,7 +7368,7 @@ index ea6af80c..23c257ac 100644 \begin{itemize} \item In a function parameter pack\iref{dcl.fct}; the pattern is the \grammarterm{parameter-declaration} without the ellipsis. -@@ -3840,7 +3834,6 @@ All other constant template arguments are specialized. +@@ -3898,7 +3892,6 @@ All other constant template arguments are specialized. \pnum Within the argument list of a partial specialization, the following restrictions apply: @@ -7385,7 +7376,7 @@ index ea6af80c..23c257ac 100644 \begin{itemize} \item The type of a template parameter corresponding to a specialized constant template -@@ -3854,7 +3847,6 @@ template< int X, int (*array_ptr)[X] > class A {}; +@@ -3912,7 +3905,6 @@ template< int X, int (*array_ptr)[X] > class A {}; int array[5]; template< int X > class A { }; // error \end{codeblock} @@ -7393,7 +7384,7 @@ index ea6af80c..23c257ac 100644 \end{example} \item The partial specialization shall be more specialized than the primary -@@ -3980,7 +3972,6 @@ the first is \defn{more specialized} than the second if, given the following +@@ -4038,7 +4030,6 @@ the first is \defn{more specialized} than the second if, given the following rewrite to two function templates, the first function template is more specialized than the second according to the \link{ordering rules for function templates}{temp.func.order}: @@ -7401,7 +7392,7 @@ index ea6af80c..23c257ac 100644 \begin{itemize} \item Each of the two -@@ -4132,7 +4123,6 @@ A::B abci; // uses \#1 +@@ -4190,7 +4181,6 @@ A::B abci; // uses \#1 A function template defines an unbounded set of related functions. \begin{example} A family of sort functions can be declared like this: @@ -7409,7 +7400,7 @@ index ea6af80c..23c257ac 100644 \begin{codeblock} template class Array { }; template void sort(Array&); -@@ -4187,7 +4177,6 @@ void h(int* p) { +@@ -4245,7 +4235,6 @@ void h(int* p) { } \end{codeblock} \end{minipage} @@ -7417,7 +7408,7 @@ index ea6af80c..23c257ac 100644 \end{example} \pnum -@@ -4373,7 +4362,6 @@ to guarantee that functionally equivalent declarations will be treated +@@ -4431,7 +4420,6 @@ to guarantee that functionally equivalent declarations will be treated as distinct. For example, the last two declarations are functionally equivalent and would cause a program to be ill-formed: @@ -7425,7 +7416,7 @@ index ea6af80c..23c257ac 100644 \begin{codeblock} // guaranteed to be the same template void f(A, A); -@@ -4464,7 +4452,6 @@ then the order of the function parameters in its transformed template +@@ -4522,7 +4510,6 @@ then the order of the function parameters in its transformed template is reversed. For a function template $M$ with cv-qualifiers \cv{} that is a member of a class $A$: @@ -7433,7 +7424,7 @@ index ea6af80c..23c257ac 100644 \begin{itemize} \item The type $X(M)$ is ``rvalue reference to \cv{}~$A$'' -@@ -4722,7 +4709,6 @@ template class TT> +@@ -4780,7 +4767,6 @@ template class TT> void g(TT>); g(v); // OK, \tcode{TT} = \tcode{vector} \end{codeblock} @@ -7441,7 +7432,7 @@ index ea6af80c..23c257ac 100644 \end{example} \pnum -@@ -5588,7 +5574,6 @@ of a class that is the current instantiation. +@@ -5646,7 +5632,6 @@ of a class that is the current instantiation. \pnum A qualified name\iref{basic.lookup.qual} is dependent if @@ -7449,7 +7440,7 @@ index ea6af80c..23c257ac 100644 \begin{itemize} \item it is a \grammarterm{conversion-function-id} -@@ -5839,7 +5824,6 @@ specified by the +@@ -5898,7 +5883,6 @@ specified by the or \grammarterm{new-type-id} is dependent, even if any subexpression is type-dependent: @@ -7457,7 +7448,7 @@ index ea6af80c..23c257ac 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br simple-type-specifier braced-init-list\br -@@ -5857,7 +5841,6 @@ typename-specifier braced-init-list\br +@@ -5916,7 +5900,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following forms are never type-dependent (because the type of the expression cannot be dependent): @@ -7465,15 +7456,15 @@ index ea6af80c..23c257ac 100644 \begin{ncsimplebnf} literal\br \keyword{sizeof} unary-expression\br -@@ -5968,7 +5951,6 @@ Expressions of the following form are value-dependent if the - is type-dependent or the +@@ -6028,7 +6011,6 @@ is type-dependent or the \grammarterm{type-id} + or \grammarterm{nofun-type-id} is dependent: - \begin{ncsimplebnf} \keyword{sizeof} unary-expression\br - \keyword{sizeof} \terminal{(} type-id \terminal{)}\br -@@ -5996,7 +5978,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} + \keyword{sizeof} \terminal{(} nofun-type-id \terminal{)}\br +@@ -6057,7 +6039,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} is value-dependent or any \grammarterm{assignment-expression} in the \grammarterm{braced-init-list} is value-dependent: @@ -7481,7 +7472,7 @@ index ea6af80c..23c257ac 100644 \begin{ncsimplebnf} simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br typename-specifier \terminal{(} \opt{expression-list} \terminal{)}\br -@@ -6011,7 +5992,6 @@ typename-specifier braced-init-list\br +@@ -6072,7 +6053,6 @@ typename-specifier braced-init-list\br \pnum Expressions of the following form are value-dependent: @@ -7489,7 +7480,7 @@ index ea6af80c..23c257ac 100644 \begin{ncsimplebnf} \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br fold-expression -@@ -7018,7 +6998,6 @@ template. +@@ -7100,7 +7080,6 @@ template. \pnum The syntax for explicit instantiation is: @@ -7497,7 +7488,7 @@ index ea6af80c..23c257ac 100644 \begin{bnf} \nontermdef{explicit-instantiation}\br \opt{\keyword{extern}} \keyword{template} declaration -@@ -7493,7 +7472,6 @@ otherwise, it is a declaration. +@@ -7575,7 +7554,6 @@ otherwise, it is a declaration. The definition of a static data member of a template for which default-initialization is desired can use functional cast notation\iref{expr.type.conv}: @@ -7505,7 +7496,7 @@ index ea6af80c..23c257ac 100644 \begin{codeblock} template<> X Q::x; // declaration template<> X Q::x (); // error: declares a function -@@ -7752,7 +7730,6 @@ An empty template argument list can be used to indicate that a given +@@ -7834,7 +7812,6 @@ An empty template argument list can be used to indicate that a given use refers to a specialization of a function template even when a non-template function\iref{dcl.fct} is visible that would otherwise be used. For example: @@ -7513,7 +7504,7 @@ index ea6af80c..23c257ac 100644 \begin{codeblock} template int f(T); // \#1 int f(int); // \#2 -@@ -8354,7 +8331,6 @@ void h(int x, float& y) { +@@ -8435,7 +8412,6 @@ void h(int x, float& y) { If \tcode{P} is not a reference type: @@ -7521,7 +7512,7 @@ index ea6af80c..23c257ac 100644 \begin{itemize} \item If -@@ -8449,7 +8425,6 @@ the type +@@ -8530,7 +8506,6 @@ the type is transformed as described above). However, there are three cases that allow a difference: @@ -7529,7 +7520,7 @@ index ea6af80c..23c257ac 100644 \begin{itemize} \item If the original -@@ -8639,7 +8614,6 @@ of \tcode{P} for type deduction and for any further references to or transformat +@@ -8720,7 +8695,6 @@ of \tcode{P} for type deduction and for any further references to or transformat If \tcode{A} is not a reference type: @@ -7537,7 +7528,7 @@ index ea6af80c..23c257ac 100644 \begin{itemize} \item If -@@ -8685,7 +8659,6 @@ values that will make the deduced +@@ -8766,7 +8740,6 @@ values that will make the deduced identical to \tcode{A}. However, certain attributes of \tcode{A} may be ignored: @@ -7545,7 +7536,7 @@ index ea6af80c..23c257ac 100644 \begin{itemize} \item If the original \tcode{A} is a reference type, -@@ -8730,7 +8703,6 @@ the argument template and template-1 as the parameter template. +@@ -8811,7 +8784,6 @@ the argument template and template-1 as the parameter template. \pnum The types used to determine the ordering depend on the context in which the partial ordering is done: @@ -7553,7 +7544,7 @@ index ea6af80c..23c257ac 100644 \begin{itemize} \item In the context of a function call, the types used are those function parameter types -@@ -8758,7 +8730,6 @@ and +@@ -8839,7 +8811,6 @@ and \pnum Before the partial ordering is done, certain transformations are performed on the types used for partial ordering: @@ -7561,7 +7552,7 @@ index ea6af80c..23c257ac 100644 \begin{itemize} \item If -@@ -8962,7 +8933,6 @@ A given type +@@ -9043,7 +9014,6 @@ A given type \tcode{P} can be composed from a number of other types, templates, and constant template argument values: @@ -7569,7 +7560,7 @@ index ea6af80c..23c257ac 100644 \begin{itemize} \item A function type includes the types of each of the function parameters, -@@ -9004,7 +8974,6 @@ need not have the same form. +@@ -9085,7 +9055,6 @@ need not have the same form. \pnum The non-deduced contexts are: @@ -7577,7 +7568,7 @@ index ea6af80c..23c257ac 100644 \indextext{context!non-deduced}% \begin{itemize} \item -@@ -9099,7 +9068,6 @@ is deduced. +@@ -9180,7 +9149,6 @@ is deduced. \begin{example} Here is an example in which different parameter/argument pairs produce inconsistent template argument deductions: @@ -7585,7 +7576,7 @@ index ea6af80c..23c257ac 100644 \begin{codeblock} template void f(T x, T y) { @\commentellip@ } struct A { @\commentellip@ }; -@@ -9116,7 +9084,6 @@ Here is an example where two template arguments are deduced from a +@@ -9197,7 +9165,6 @@ Here is an example where two template arguments are deduced from a single function parameter/argument pair. This can lead to conflicts that cause type deduction to fail: @@ -7593,7 +7584,7 @@ index ea6af80c..23c257ac 100644 \begin{codeblock} template void f(T (*)(T, U, U)); -@@ -9133,7 +9100,6 @@ void r() { +@@ -9214,7 +9181,6 @@ void r() { Here is an example where the exception specification of a function type is deduced: @@ -7601,7 +7592,7 @@ index ea6af80c..23c257ac 100644 \begin{codeblock} template void f1(void (*)() noexcept(E)); template struct A { }; -@@ -9152,7 +9118,6 @@ void h() { +@@ -9233,7 +9199,6 @@ void h() { Here is an example where a qualification conversion applies between the argument type on the function call and the deduced template argument type: @@ -7609,7 +7600,7 @@ index ea6af80c..23c257ac 100644 \begin{codeblock} template void f(const T*) { } int* p; -@@ -9163,7 +9128,6 @@ void s() { +@@ -9244,7 +9209,6 @@ void s() { Here is an example where the template argument is used to instantiate a derived class type of the corresponding function parameter type: @@ -7618,10 +7609,10 @@ index ea6af80c..23c257ac 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 7a2d110e..6b8778ac 100644 +index 1abadbfa..f5f287c6 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -7365,7 +7365,6 @@ and visible to other threads. +@@ -7417,7 +7417,6 @@ and visible to other threads. \pnum The expression \tcode{m.lock()} is well-formed and has the following semantics: @@ -7629,7 +7620,7 @@ index 7a2d110e..6b8778ac 100644 \begin{itemdescr} \pnum \expects -@@ -7408,7 +7407,6 @@ that a deadlock would occur. +@@ -7460,7 +7459,6 @@ that a deadlock would occur. \pnum The expression \tcode{m.try_lock()} is well-formed and has the following semantics: @@ -7637,7 +7628,7 @@ index 7a2d110e..6b8778ac 100644 \begin{itemdescr} \pnum \expects -@@ -7454,7 +7452,6 @@ Nothing. +@@ -7506,7 +7504,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -7645,7 +7636,7 @@ index 7a2d110e..6b8778ac 100644 \begin{itemdescr} \pnum \expects -@@ -7609,7 +7606,6 @@ requirements\iref{thread.req.lockable.timed}. +@@ -7661,7 +7658,6 @@ requirements\iref{thread.req.lockable.timed}. \pnum The expression \tcode{m.try_lock_for(rel_time)} is well-formed and has the following semantics: @@ -7653,7 +7644,7 @@ index 7a2d110e..6b8778ac 100644 \begin{itemdescr} \pnum \expects -@@ -7651,7 +7647,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -7703,7 +7699,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_until(abs_time)} is well-formed and has the following semantics: @@ -7661,7 +7652,7 @@ index 7a2d110e..6b8778ac 100644 \begin{itemdescr} \pnum \expects -@@ -7838,7 +7833,6 @@ shared lock. +@@ -7890,7 +7885,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -7669,7 +7660,7 @@ index 7a2d110e..6b8778ac 100644 \begin{itemdescr} \pnum \expects -@@ -7875,7 +7869,6 @@ The calling thread has a shared lock on the mutex. +@@ -7927,7 +7921,6 @@ The calling thread has a shared lock on the mutex. \pnum The expression \tcode{m.unlock_shared()} is well-formed and has the following semantics: @@ -7677,7 +7668,7 @@ index 7a2d110e..6b8778ac 100644 \begin{itemdescr} \pnum \expects -@@ -7900,7 +7893,6 @@ Nothing. +@@ -7952,7 +7945,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -7685,7 +7676,7 @@ index 7a2d110e..6b8778ac 100644 \begin{itemdescr} \pnum \expects -@@ -8003,7 +7995,6 @@ requirements\iref{thread.req.lockable.shared.timed}. +@@ -8055,7 +8047,6 @@ requirements\iref{thread.req.lockable.shared.timed}. \pnum The expression \tcode{m.try_lock_shared_for(rel_time)} is well-formed and has the following semantics: @@ -7693,7 +7684,7 @@ index 7a2d110e..6b8778ac 100644 \begin{itemdescr} \pnum \expects -@@ -8048,7 +8039,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -8100,7 +8091,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_shared_until(abs_time)} is well-formed and has the following semantics: @@ -7701,7 +7692,7 @@ index 7a2d110e..6b8778ac 100644 \begin{itemdescr} \pnum \expects -@@ -10199,7 +10189,6 @@ template +@@ -10251,7 +10241,6 @@ template \begin{itemdescr} \pnum \effects @@ -7709,7 +7700,7 @@ index 7a2d110e..6b8778ac 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -11589,7 +11578,6 @@ shared state as \tcode{*this}. +@@ -11641,7 +11630,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -7717,7 +7708,7 @@ index 7a2d110e..6b8778ac 100644 \begin{itemize} \item \tcode{future_already_retrieved} if \tcode{get_future} has already been called on a \tcode{promise} with the same shared state as \tcode{*this}. -@@ -11652,7 +11640,6 @@ already has a stored value or exception. +@@ -11704,7 +11692,6 @@ already has a stored value or exception. \pnum \errors @@ -7725,7 +7716,7 @@ index 7a2d110e..6b8778ac 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -11992,7 +11979,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -12044,7 +12031,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -7733,7 +7724,7 @@ index 7a2d110e..6b8778ac 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12336,7 +12322,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -12388,7 +12374,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -7741,7 +7732,7 @@ index 7a2d110e..6b8778ac 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12371,7 +12356,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -12423,7 +12408,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -7749,7 +7740,7 @@ index 7a2d110e..6b8778ac 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12427,7 +12411,6 @@ The further behavior +@@ -12479,7 +12463,6 @@ The further behavior of the second function depends on the \tcode{policy} argument as follows (if more than one of these conditions applies, the implementation may choose any of the corresponding policies): @@ -7758,10 +7749,10 @@ index 7a2d110e..6b8778ac 100644 \item If \tcode{launch::async} is set in \tcode{policy}, calls diff --git a/source/time.tex b/source/time.tex -index 62226224..6b4a0b79 100644 +index 3d6fb318..fa754085 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -2075,7 +2075,6 @@ return os << s.str(); +@@ -2076,7 +2076,6 @@ return os << s.str(); \end{codeblock} where \tcode{\placeholder{units-suffix}} depends on the type \tcode{Period::type} as follows: @@ -7769,7 +7760,7 @@ index 62226224..6b4a0b79 100644 \begin{itemize} \item If \tcode{Period::type} is \tcode{atto}, -@@ -2953,7 +2952,6 @@ for (auto i = 0; i < 8; ++i, u += 250ms) +@@ -2954,7 +2953,6 @@ for (auto i = 0; i < 8; ++i, u += 250ms) \end{codeblock} Produces this output: @@ -7777,7 +7768,7 @@ index 62226224..6b4a0b79 100644 \begin{outputblock} 2015-06-30 23:59:59.500 UTC 2015-06-30 23:59:59.750 UTC -@@ -3159,7 +3157,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, tt); +@@ -3160,7 +3158,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, tt); \end{codeblock} Produces this output: @@ -7785,7 +7776,7 @@ index 62226224..6b4a0b79 100644 \begin{outputblock} 2000-01-01 00:00:00 UTC == 2000-01-01 00:00:32 TAI \end{outputblock} -@@ -3322,7 +3319,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, gt); +@@ -3323,7 +3320,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, gt); \end{codeblock} Produces this output: @@ -7793,7 +7784,7 @@ index 62226224..6b4a0b79 100644 \begin{outputblock} 2000-01-01 00:00:00 UTC == 2000-01-01 00:00:13 GPS \end{outputblock} -@@ -3391,7 +3387,6 @@ such as \tcode{std::file\-sys\-tem}. +@@ -3392,7 +3388,6 @@ such as \tcode{std::file\-sys\-tem}. \pnum The type denoted by \tcode{file_clock} provides precisely one of the following two sets of static member functions: @@ -7801,7 +7792,7 @@ index 62226224..6b4a0b79 100644 \begin{codeblock} template static sys_time<@\seebelow@> -@@ -3400,9 +3395,7 @@ template +@@ -3401,9 +3396,7 @@ template static file_time<@\seebelow@> from_sys(const sys_time&); \end{codeblock} @@ -7811,7 +7802,7 @@ index 62226224..6b4a0b79 100644 \begin{codeblock} template static utc_time<@\seebelow@> -@@ -3875,7 +3868,6 @@ template +@@ -3876,7 +3869,6 @@ template \constraints At least one of the following clock time conversion expressions is well-formed: @@ -7819,7 +7810,7 @@ index 62226224..6b4a0b79 100644 \begin{itemize} \item \begin{codeblock} -@@ -7921,7 +7913,6 @@ a conventional syntax for the creation of civil calendar dates. +@@ -7922,7 +7914,6 @@ a conventional syntax for the creation of civil calendar dates. \pnum \begin{note} The year, month, and day are accepted in any of the following 3 orders: @@ -7827,7 +7818,7 @@ index 62226224..6b4a0b79 100644 \begin{codeblock} @\tcode{\placeholder{year}}@/@\tcode{\placeholder{month}}@/@\tcode{\placeholder{day}}@ @\tcode{\placeholder{month}}@/@\tcode{\placeholder{day}}@/@\tcode{\placeholder{year}}@ -@@ -7929,7 +7920,6 @@ The year, month, and day are accepted in any of the following 3 orders: +@@ -7930,7 +7921,6 @@ The year, month, and day are accepted in any of the following 3 orders: \end{codeblock} Anywhere a \tcode{\placeholder{day}} is needed, any of the following can also be specified: @@ -7835,7 +7826,7 @@ index 62226224..6b4a0b79 100644 \begin{codeblock} last @\tcode{\placeholder{weekday}}@[@\tcode{\placeholder{i}}@] -@@ -7942,7 +7932,6 @@ last +@@ -7943,7 +7933,6 @@ last Partial-date types such as \tcode{year_month} and \tcode{month_day} can be created by not applying the second division operator for any of the three orders. For example: @@ -7843,7 +7834,7 @@ index 62226224..6b4a0b79 100644 \begin{codeblock} year_month ym = 2015y/April; month_day md1 = April/4; -@@ -9134,7 +9123,6 @@ template +@@ -9135,7 +9124,6 @@ template Initializes the base class with a sequence of \tcode{char} equivalent to that produced by \tcode{os.str()} initialized as shown below: @@ -7851,7 +7842,7 @@ index 62226224..6b4a0b79 100644 \begin{codeblock} ostringstream os; os << tp << " is in a gap between\n" -@@ -9164,7 +9152,6 @@ int main() { +@@ -9165,7 +9153,6 @@ int main() { \end{codeblock} Produces the output: @@ -7859,7 +7850,7 @@ index 62226224..6b4a0b79 100644 \begin{outputblock} 2016-03-13 02:30:00 is in a gap between 2016-03-13 02:00:00 EST and -@@ -9209,7 +9196,6 @@ template +@@ -9210,7 +9197,6 @@ template Initializes the base class with a sequence of \tcode{char} equivalent to that produced by \tcode{os.str()} initialized as shown below: @@ -7867,7 +7858,7 @@ index 62226224..6b4a0b79 100644 \begin{codeblock} ostringstream os; os << tp << " is ambiguous. It could be\n" -@@ -9237,7 +9223,6 @@ int main() { +@@ -9238,7 +9224,6 @@ int main() { \end{codeblock} Produces the output: @@ -7875,7 +7866,7 @@ index 62226224..6b4a0b79 100644 \begin{outputblock} 2016-11-06 01:30:00 is ambiguous. It could be 2016-11-06 01:30:00 EDT == 2016-11-06 05:30:00 UTC or -@@ -9291,7 +9276,6 @@ The \tcode{offset} data member indicates +@@ -9292,7 +9277,6 @@ The \tcode{offset} data member indicates the UTC offset in effect for the associated \tcode{time_zone} and \tcode{time_point}. The relationship between \tcode{local_time} and \tcode{sys_time} is: @@ -7883,7 +7874,7 @@ index 62226224..6b4a0b79 100644 \begin{codeblock} offset = local_time - sys_time \end{codeblock} -@@ -9596,7 +9580,6 @@ the behavior of \tcode{zoned_time} +@@ -9597,7 +9581,6 @@ the behavior of \tcode{zoned_time} for the \tcode{zoned_time} default constructor, and constructors taking \tcode{string_view}. A specialization for \tcode{const time_zone*} is provided by the implementation: @@ -7891,7 +7882,7 @@ index 62226224..6b4a0b79 100644 \begin{codeblock} namespace std::chrono { template<> struct zoned_traits { -@@ -10172,7 +10155,6 @@ for (auto& l : get_tzdb().leap_seconds) +@@ -10173,7 +10156,6 @@ for (auto& l : get_tzdb().leap_seconds) \end{codeblock} Produces the output: @@ -7899,7 +7890,7 @@ index 62226224..6b4a0b79 100644 \begin{outputblock} 1972-07-01 00:00:00: 1s 1973-01-01 00:00:00: 1s -@@ -10471,7 +10453,6 @@ The \tcode{parse} member functions of these formatters +@@ -10472,7 +10454,6 @@ The \tcode{parse} member functions of these formatters interpret the format specification as a \fmtgrammarterm{chrono-format-spec} according to the following syntax: @@ -7908,10 +7899,10 @@ index 62226224..6b4a0b79 100644 \fmtnontermdef{chrono-format-spec}\br \opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs} diff --git a/source/utilities.tex b/source/utilities.tex -index af0ec065..c39c394b 100644 +index 1a4da8e8..45cc4ec4 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -289,7 +289,6 @@ Exchanges values stored in two locations. +@@ -286,7 +286,6 @@ Exchanges values stored in two locations. \pnum \remarks The exception specification is equivalent to: @@ -7919,7 +7910,7 @@ index af0ec065..c39c394b 100644 \begin{codeblock} is_nothrow_move_constructible_v && is_nothrow_move_assignable_v \end{codeblock} -@@ -2540,7 +2539,6 @@ For all $i$, assigns \tcode{std::forward<$\tcode{T}_i$>(get<$i$>(u))} to +@@ -2514,7 +2513,6 @@ For all $i$, assigns \tcode{std::forward<$\tcode{T}_i$>(get<$i$>(u))} to \remarks The exception specification is equivalent to the logical \logop{and} of the following expressions: @@ -7927,7 +7918,7 @@ index af0ec065..c39c394b 100644 \begin{codeblock} is_nothrow_move_assignable_v<@$\mathtt{T}_i$@> \end{codeblock} -@@ -3486,7 +3484,6 @@ As if by \tcode{x.swap(y)}. +@@ -3460,7 +3458,6 @@ As if by \tcode{x.swap(y)}. \pnum \remarks The exception specification is equivalent to: @@ -7935,7 +7926,7 @@ index af0ec065..c39c394b 100644 \begin{codeblock} noexcept(x.swap(y)) \end{codeblock} -@@ -11307,7 +11304,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; +@@ -11305,7 +11302,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -7943,7 +7934,7 @@ index af0ec065..c39c394b 100644 \begin{itemize} \item If \tcode{I < pos}, the new value is zero; -@@ -11332,7 +11328,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; +@@ -11330,7 +11326,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -7951,7 +7942,7 @@ index af0ec065..c39c394b 100644 \begin{itemize} \item If \tcode{pos >= N - I}, the new value is zero; -@@ -12061,7 +12056,6 @@ namespace std { +@@ -12059,7 +12054,6 @@ namespace std { If a \Cpp{} program wants to have a by-element addition of two vectors \tcode{a} and \tcode{b} containing \tcode{double} and put the result into \tcode{a}, it can do: @@ -7959,7 +7950,7 @@ index af0ec065..c39c394b 100644 \begin{codeblock} transform(a.begin(), a.end(), b.begin(), a.begin(), plus()); \end{codeblock} -@@ -15544,7 +15538,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; +@@ -15542,7 +15536,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; The header provides partial specializations of \tcode{function_ref} for each combination of the possible replacements of the placeholders \cv{} and \placeholder{noex} where: @@ -7971,10 +7962,10 @@ index af0ec065..c39c394b 100644 2.43.0 -From 60545dee60f2abfb85a8ab5fd8e069a06de25ed8 Mon Sep 17 00:00:00 2001 +From 4af424126ca2fb32126301a11debb7e69a55d119 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 -Subject: [PATCH 5/9] Use monospace font for code in figures. +Subject: [PATCH 05/10] Use monospace font for code in figures. --- source/assets/figdag.dot | 8 ++++---- @@ -8118,27 +8109,27 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From cc7685c521be604401667ec9815e3e955fe5ad09 Mon Sep 17 00:00:00 2001 +From b3d38b42d08ae489c027396b9a357f914f3c0c22 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 -Subject: [PATCH 6/9] [uaxid] Mark code that's not to be highlighted. +Subject: [PATCH 06/10] [uaxid] Mark code that's not to be highlighted. --- source/uax31.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/uax31.tex b/source/uax31.tex -index 79f0f7d0..80b2d666 100644 +index 6a13e104..6263535e 100644 --- a/source/uax31.tex +++ b/source/uax31.tex -@@ -33,8 +33,8 @@ where \tcode{} has the XID_Start property, - \tcode{} is a list of characters permitted between continue characters. - For \Cpp{} we add the character \unicode{005f}{low line}, or \tcode{_}, - to the set of permitted \tcode{} characters, --the \tcode{} set is empty, and --the \tcode{} characters are unmodified. -+the \noncxxtcode{} set is empty, and -+the \noncxxtcode{} characters are unmodified. +@@ -35,8 +35,8 @@ where \tcode{} has the XID_Start property, + including the Mathematical Compatability Notation profile. + For \Cpp{} we apply the Mathematical Compatability Notation profile, + and we add the character \unicode{005f}{low line}, or \tcode{_}, +-to the set of permitted \tcode{} characters. +-The \tcode{} set is empty. ++to the set of permitted \noncxxtcode{} characters. ++The \noncxxtcode{} set is empty. In the grammar used in \UAX{31}, this is \begin{outputblock} := * @@ -8146,10 +8137,10 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From abbb3bbd075250a722a3ed158747251af8d03697 Mon Sep 17 00:00:00 2001 +From e0cf280142fe9046599b072d04a2d4953454dabb Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 -Subject: [PATCH 7/9] Use cxxdraft-htmlgen macros more. +Subject: [PATCH 07/10] Use cxxdraft-htmlgen macros more. --- source/algorithms.tex | 180 +++++++++++++-------------- @@ -8170,7 +8161,7 @@ Subject: [PATCH 7/9] Use cxxdraft-htmlgen macros more. 15 files changed, 476 insertions(+), 484 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index 6eaef6b7..b7fd050e 100644 +index c9bac8f9..b86bfc2a 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex @@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. @@ -8217,7 +8208,7 @@ index 6eaef6b7..b7fd050e 100644 if it is required to be a mutable iterator, or model \libconcept{random_access_iterator}\iref{iterator.concept.random.access} otherwise. \end{itemize} -@@ -4619,10 +4619,10 @@ template +@@ -4618,10 +4618,10 @@ template \pnum \expects \tcode{Function} meets @@ -8230,7 +8221,7 @@ index 6eaef6b7..b7fd050e 100644 \end{note} \pnum -@@ -4659,7 +4659,7 @@ template +@@ -4658,7 +4658,7 @@ template \begin{itemdescr} \pnum \expects @@ -8239,7 +8230,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -4793,10 +4793,10 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4792,10 +4792,10 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8252,7 +8243,7 @@ index 6eaef6b7..b7fd050e 100644 \end{note} \pnum -@@ -4833,7 +4833,7 @@ to an integral type\iref{conv.integral,class.conv}. +@@ -4832,7 +4832,7 @@ to an integral type\iref{conv.integral,class.conv}. \pnum \expects \tcode{n >= 0} is \tcode{true}. @@ -8261,7 +8252,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -5681,7 +5681,7 @@ If +@@ -5680,7 +5680,7 @@ If \item the types of \tcode{first1}, \tcode{last1}, \tcode{first2}, and \tcode{last2} meet the @@ -8270,7 +8261,7 @@ index 6eaef6b7..b7fd050e 100644 and \tcode{last1 - first1 != last2 - first2} for the overloads in namespace \tcode{std}; \item -@@ -6025,7 +6025,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} +@@ -6024,7 +6024,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} \pnum \remarks @@ -8279,7 +8270,7 @@ index 6eaef6b7..b7fd050e 100644 \end{itemdescr} \rSec2[alg.starts.with]{Starts with} -@@ -7598,7 +7598,7 @@ Let $E(\tcode{i})$ be +@@ -7597,7 +7597,7 @@ Let $E(\tcode{i})$ be \expects For the algorithms in namespace \tcode{std}, the type of \tcode{*first} @@ -8288,7 +8279,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -7849,7 +7849,7 @@ let $E(\tcode{i})$ be +@@ -7848,7 +7848,7 @@ let $E(\tcode{i})$ be For the overloads in namespace \tcode{std}, \tcode{pred} is an equivalence relation and the type of \tcode{*first} meets @@ -8297,7 +8288,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -7980,10 +7980,10 @@ Let: +@@ -7979,10 +7979,10 @@ Let: \libconcept{forward_iterator}\iref{iterator.concept.forward}, then there are no additional requirements for \tcode{T}. Otherwise, if \tcode{OutputIterator} meets @@ -8310,7 +8301,7 @@ index 6eaef6b7..b7fd050e 100644 Otherwise, \tcode{T} meets both the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and \oldconcept{CopyAssignable} requirements. -@@ -8062,7 +8062,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8061,7 +8061,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8319,7 +8310,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -8197,10 +8197,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterat +@@ -8196,10 +8196,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterat \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -8333,7 +8324,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -8420,13 +8420,13 @@ For the overload in namespace \tcode{std}: +@@ -8419,13 +8419,13 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{PopulationIterator} meets @@ -8350,7 +8341,7 @@ index 6eaef6b7..b7fd050e 100644 unless \tcode{Pop\-ulat\-ion\-Iter\-ator} models \libconcept{forward_iterator}\iref{iterator.concept.forward}. \item -@@ -8494,7 +8494,7 @@ For the overload in namespace \tcode{std}: +@@ -8493,7 +8493,7 @@ For the overload in namespace \tcode{std}: \begin{itemize} \item \tcode{RandomAccessIterator} meets @@ -8359,7 +8350,7 @@ index 6eaef6b7..b7fd050e 100644 \item The type \tcode{remove_reference_t} meets the uniform random bit generator\iref{rand.req.urng} requirements. -@@ -8555,7 +8555,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8554,7 +8554,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8368,7 +8359,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -8619,10 +8619,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces +@@ -8618,10 +8618,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces \expects \tcode{n >= 0} is \tcode{true}. For the overloads in namespace \tcode{std}, @@ -8382,7 +8373,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -8801,10 +8801,10 @@ for the overloads with no parameters by those names. +@@ -8800,10 +8800,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8396,7 +8387,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -8869,10 +8869,10 @@ for the overloads with no parameters by those names. +@@ -8868,10 +8868,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8410,7 +8401,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -8943,10 +8943,10 @@ for the overloads with no parameters by those names. +@@ -8942,10 +8942,10 @@ for the overloads with no parameters by those names. \range{first}{middle} and \range{middle}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8424,7 +8415,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -9090,10 +9090,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. +@@ -9089,10 +9089,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8438,7 +8429,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and -@@ -9328,10 +9328,10 @@ for the overloads with no parameters by those names. +@@ -9327,10 +9327,10 @@ for the overloads with no parameters by those names. \range{first}{nth} and \range{nth}{last} are valid ranges. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8452,7 +8443,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -9713,7 +9713,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9712,7 +9712,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{ForwardIterator} meets @@ -8461,7 +8452,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -9740,7 +9740,7 @@ Let $N = \tcode{last - first}$: +@@ -9739,7 +9739,7 @@ Let $N = \tcode{last - first}$: For the non-parallel algorithm overloads, exactly $N$ applications of the predicate and projection. At most $N / 2$ swaps if the type of \tcode{first} meets @@ -8470,7 +8461,7 @@ index 6eaef6b7..b7fd050e 100644 for the overloads in namespace \tcode{std} or models \libconcept{bidirectional_iterator} for the overloads in namespace \tcode{ranges}, -@@ -9793,10 +9793,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. +@@ -9792,10 +9792,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8484,7 +8475,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -10193,10 +10193,10 @@ for the overloads with no parameters by those names. +@@ -10192,10 +10192,10 @@ for the overloads with no parameters by those names. sorted with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8498,7 +8489,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -10959,10 +10959,10 @@ The range \range{first}{last - 1} +@@ -10958,10 +10958,10 @@ The range \range{first}{last - 1} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8512,7 +8503,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -11012,10 +11012,10 @@ The range \range{first}{last} +@@ -11011,10 +11011,10 @@ The range \range{first}{last} is a valid non-empty heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8526,7 +8517,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -11068,10 +11068,10 @@ for the overloads with no parameters by those names. +@@ -11067,10 +11067,10 @@ for the overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8540,7 +8531,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -11121,10 +11121,10 @@ The range \range{first}{last} is +@@ -11120,10 +11120,10 @@ The range \range{first}{last} is a valid heap with respect to \tcode{comp} and \tcode{proj}. For the overloads in namespace \tcode{std}, \tcode{RandomAccessIterator} meets @@ -8554,7 +8545,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -11311,7 +11311,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8574,7 +8565,7 @@ index 6eaef6b7..b7fd050e 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11394,7 +11394,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8594,7 +8585,7 @@ index 6eaef6b7..b7fd050e 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11479,7 +11479,7 @@ template 0}. For the overloads in namespace \tcode{std}, @@ -8614,7 +8605,7 @@ index 6eaef6b7..b7fd050e 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11748,7 +11748,7 @@ for the overloads with no parameter \tcode{proj}. +@@ -11747,7 +11747,7 @@ for the overloads with no parameter \tcode{proj}. \expects \tcode{bool(invoke(comp, invoke(proj, hi), invoke(proj, lo)))} is \tcode{false}. For the first form, type \tcode{T} @@ -8623,7 +8614,7 @@ index 6eaef6b7..b7fd050e 100644 requirements (\tref{cpp17.lessthancomparable}). \pnum -@@ -11951,7 +11951,7 @@ for overloads with no parameters by those names. +@@ -11950,7 +11950,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8632,7 +8623,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -12010,7 +12010,7 @@ for overloads with no parameters by those names. +@@ -12009,7 +12009,7 @@ for overloads with no parameters by those names. \expects For the overloads in namespace \tcode{std}, \tcode{BidirectionalIterator} meets @@ -8641,7 +8632,7 @@ index 6eaef6b7..b7fd050e 100644 \pnum \effects -@@ -12329,8 +12329,8 @@ template +@@ -12328,8 +12328,8 @@ template \pnum \expects \tcode{T} meets @@ -8652,7 +8643,7 @@ index 6eaef6b7..b7fd050e 100644 In the range \crange{first}{last}, \tcode{binary_op} neither modifies elements nor invalidates iterators or subranges. -@@ -12452,7 +12452,7 @@ are convertible to \tcode{T}. +@@ -12451,7 +12451,7 @@ are convertible to \tcode{T}. \expects \begin{itemize} \item @@ -8661,7 +8652,7 @@ index 6eaef6b7..b7fd050e 100644 \item \tcode{binary_op} neither invalidates iterators or subranges, nor modifies elements in the range \crange{first}{last}. -@@ -12496,8 +12496,8 @@ template}. +@@ -13190,7 +13190,7 @@ that denotes an object of type \tcode{minus<>}. \begin{itemize} \item For the overloads with no \tcode{ExecutionPolicy}, @@ -8764,7 +8755,7 @@ index 3e64abc8..9efb5afa 100644 invocation of the destructor does not actually throw. \end{note} diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index eee2454e..267f428b 100644 +index 94d32dfb..f3b63bf4 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -761,9 +761,9 @@ namespace std { @@ -8776,10 +8767,10 @@ index eee2454e..267f428b 100644 template - constexpr bool @\libglobal{is_error_condition_enum_v}@ = is_error_condition_enum::value; + constexpr bool @\libglobal{is_error_condition_enum_v}@ = @\libglobalref{is_error_condition_enum}@::value; - } - \end{codeblock} -@@ -774,9 +774,9 @@ Whether or not the \libheader{system_error} implementation + // \ref{syserr.fmt}, formatter + template struct formatter; +@@ -777,9 +777,9 @@ Whether or not the \libheader{system_error} implementation exposes the \libheader{cerrno} macros is unspecified. \pnum @@ -8791,7 +8782,7 @@ index eee2454e..267f428b 100644 conversions, respectively. \rSec2[syserr.errcat]{Class \tcode{error_category}} -@@ -801,8 +801,6 @@ even for objects holding the same value. +@@ -804,8 +804,6 @@ even for objects holding the same value. \indexlibraryglobal{error_category}% \indexlibraryctor{error_category}% \indexlibrarydtor{error_category}% @@ -8800,7 +8791,7 @@ index eee2454e..267f428b 100644 \begin{codeblock} namespace std { class error_category { -@@ -821,8 +819,8 @@ namespace std { +@@ -824,8 +822,8 @@ namespace std { strong_ordering operator<=>(const error_category& rhs) const noexcept; }; @@ -8811,7 +8802,7 @@ index eee2454e..267f428b 100644 } \end{codeblock} -@@ -1093,7 +1091,7 @@ template +@@ -1097,7 +1095,7 @@ template \begin{itemdescr} \pnum \constraints @@ -8820,7 +8811,7 @@ index eee2454e..267f428b 100644 \pnum \effects -@@ -1126,7 +1124,7 @@ template +@@ -1130,7 +1128,7 @@ template \begin{itemdescr} \pnum \constraints @@ -8830,7 +8821,7 @@ index eee2454e..267f428b 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 4f7f72b0..4bf25bbd 100644 +index 7ee54f91..3eb08725 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -8869,7 +8860,7 @@ index 4f7f72b0..4bf25bbd 100644 \\ \end{floattable} diff --git a/source/future.tex b/source/future.tex -index ac4ac504..dffbe172 100644 +index 86a8449c..4d529384 100644 --- a/source/future.tex +++ b/source/future.tex @@ -359,7 +359,7 @@ template struct is_pod; @@ -8918,7 +8909,7 @@ index ac4ac504..dffbe172 100644 \begin{itemize} \item for the first specialization, \tcode{volatile VA::type}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index a046490d..11bf87e7 100644 +index 42906f91..8e600da9 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -1684,10 +1684,10 @@ An \tcode{fpos} type specifies file position information. @@ -8953,7 +8944,7 @@ index a046490d..11bf87e7 100644 In addition, the expressions shown in \tref{fpos.operations} are valid and have the indicated semantics. In that table, -@@ -12960,7 +12960,7 @@ namespace std { +@@ -12921,7 +12921,7 @@ namespace std { \pnum \tcode{Allocator} shall meet @@ -8962,7 +8953,7 @@ index a046490d..11bf87e7 100644 \pnum \begin{example} -@@ -13253,7 +13253,7 @@ unless \tcode{EcharT} is one of the encoded character types. +@@ -13214,7 +13214,7 @@ unless \tcode{EcharT} is one of the encoded character types. \pnum Template parameters named \tcode{InputIterator} shall meet the @@ -8971,7 +8962,7 @@ index a046490d..11bf87e7 100644 have a value type that is one of the encoded character types. \pnum -@@ -13267,7 +13267,7 @@ they are not included as permitted types. +@@ -13228,7 +13228,7 @@ they are not included as permitted types. \pnum Template parameters named \tcode{Allocator} shall meet @@ -8980,7 +8971,7 @@ index a046490d..11bf87e7 100644 \rSec2[fs.filesystem.syn]{Header \tcode{} synopsis} -@@ -14086,7 +14086,7 @@ shall be one of: +@@ -14047,7 +14047,7 @@ shall be one of: \item \tcode{basic_string_view}. A function argument \tcode{const Source\&} \tcode{source} shall have an effective range \range{source.begin()}{source.end()}. @@ -8989,7 +8980,7 @@ index a046490d..11bf87e7 100644 The value type shall be an encoded character type. A function argument \tcode{const Source\&} \tcode{source} shall have an effective range \range{source}{end} where \tcode{end} is the first -@@ -16591,7 +16591,7 @@ namespace std::filesystem { +@@ -16552,7 +16552,7 @@ namespace std::filesystem { \pnum \tcode{directory_iterator} meets the @@ -8999,7 +8990,7 @@ index a046490d..11bf87e7 100644 \pnum If an iterator of type \tcode{directory_iterator} reports an error or diff --git a/source/lib-intro.tex b/source/lib-intro.tex -index a8a934eb..db69d69a 100644 +index 5597e57d..2149f97a 100644 --- a/source/lib-intro.tex +++ b/source/lib-intro.tex @@ -1868,7 +1868,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. @@ -9108,10 +9099,10 @@ index a8a934eb..db69d69a 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index fb901823..2dea2cc5 100644 +index df34f301..717ae306 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1183,7 +1183,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type +@@ -1227,7 +1227,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type disambiguate constructor and function overloading. Specifically, several types (see \tcode{tuple}~\ref{tuple}) have constructors with \tcode{allocator_arg_t} as the first argument, immediately followed by an argument of a type that meets the @@ -9120,7 +9111,7 @@ index fb901823..2dea2cc5 100644 \rSec2[allocator.uses]{\tcode{uses_allocator}} -@@ -1198,7 +1198,7 @@ template struct uses_allocator; +@@ -1242,7 +1242,7 @@ template struct uses_allocator; \pnum \remarks Automatically detects whether \tcode{T} has a nested \tcode{allocator_type} that @@ -9129,7 +9120,7 @@ index fb901823..2dea2cc5 100644 requirements\iref{meta.rqmts}. The implementation shall provide a definition that is derived from \tcode{true_type} if the \grammarterm{qualified-id} \tcode{T::allocator_type} is valid and denotes a type\iref{temp.deduct} and -@@ -2148,8 +2148,8 @@ deleter before such replacement is considered completed. +@@ -2615,8 +2615,8 @@ deleter before such replacement is considered completed. Each object of a type \tcode{U} instantiated from the \tcode{unique_ptr} template specified in \ref{unique.ptr} has the strict ownership semantics, specified above, of a unique pointer. In partial satisfaction of these semantics, each such \tcode{U} @@ -9140,7 +9131,7 @@ index fb901823..2dea2cc5 100644 The template parameter \tcode{T} of \tcode{unique_ptr} may be an incomplete type. \pnum -@@ -2336,7 +2336,7 @@ pointer as appropriate for that deleter. +@@ -2803,7 +2803,7 @@ pointer as appropriate for that deleter. \pnum If the deleter's type \tcode{D} is not a reference type, \tcode{D} shall meet @@ -9149,7 +9140,7 @@ index fb901823..2dea2cc5 100644 \pnum If the \grammarterm{qualified-id} \tcode{remove_reference_t::pointer} is valid and denotes a -@@ -2344,7 +2344,7 @@ type\iref{temp.deduct}, then \tcode{unique_ptr::pointer} shall be a synonym for \tcode{remove_reference_t::pointer}. Otherwise \tcode{unique_ptr::pointer} shall be a synonym for \tcode{element_type*}. The type \tcode{unique_ptr::pointer} shall @@ -9158,7 +9149,7 @@ index fb901823..2dea2cc5 100644 \pnum \begin{example} -@@ -2370,7 +2370,7 @@ constexpr unique_ptr(nullptr_t) noexcept; +@@ -2837,7 +2837,7 @@ constexpr unique_ptr(nullptr_t) noexcept; \pnum \expects @@ -9167,7 +9158,7 @@ index fb901823..2dea2cc5 100644 and that construction does not throw an exception. \pnum -@@ -2397,7 +2397,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; +@@ -2864,7 +2864,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; \pnum \expects @@ -9176,7 +9167,7 @@ index fb901823..2dea2cc5 100644 and that construction does not throw an exception. \pnum -@@ -2426,10 +2426,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex +@@ -2893,10 +2893,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex \pnum \expects For the first constructor, if \tcode{D} is not a reference type, @@ -9189,7 +9180,7 @@ index fb901823..2dea2cc5 100644 such construction does not exit via an exception. \pnum -@@ -2454,8 +2454,8 @@ the second constructor is defined as deleted. +@@ -2921,8 +2921,8 @@ the second constructor is defined as deleted. \begin{example} \begin{codeblock} D d; @@ -9200,7 +9191,7 @@ index fb901823..2dea2cc5 100644 unique_ptr p3(new int, d); // \tcode{p3} holds a reference to \tcode{d} unique_ptr p4(new int, D()); // error: rvalue deleter object combined // with reference deleter type -@@ -2476,7 +2476,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; +@@ -2943,7 +2943,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, @@ -9209,7 +9200,7 @@ index fb901823..2dea2cc5 100644 requirements (\tref{cpp17.moveconstructible}). Construction of the deleter from an rvalue of type \tcode{D} does not -@@ -2585,10 +2585,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; +@@ -3052,10 +3052,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, \tcode{D} meets the @@ -9222,7 +9213,7 @@ index fb901823..2dea2cc5 100644 requirements and assignment of the deleter from an lvalue of type \tcode{D} does not throw an exception. -@@ -3490,8 +3490,8 @@ namespace std { +@@ -3957,8 +3957,8 @@ namespace std { \end{codeblock} \pnum @@ -9233,7 +9224,7 @@ index fb901823..2dea2cc5 100644 containers. Specializations of \tcode{shared_ptr} shall be contextually convertible to \tcode{bool}, allowing their use in boolean expressions and declarations in conditions. -@@ -3636,7 +3636,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. +@@ -4103,7 +4103,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. The expression \tcode{d(p)} has well-defined behavior and does not throw exceptions. \tcode{A} meets @@ -9242,7 +9233,7 @@ index fb901823..2dea2cc5 100644 \pnum \effects -@@ -4156,7 +4156,7 @@ template +@@ -4623,7 +4623,7 @@ template \pnum \expects \tcode{A} meets @@ -9251,7 +9242,7 @@ index fb901823..2dea2cc5 100644 \pnum \effects -@@ -4812,8 +4812,8 @@ namespace std { +@@ -5279,8 +5279,8 @@ namespace std { \end{codeblock} \pnum @@ -9262,7 +9253,7 @@ index fb901823..2dea2cc5 100644 containers. The template parameter \tcode{T} of \tcode{weak_ptr} may be an incomplete type. -@@ -5392,7 +5392,7 @@ namespace std { +@@ -5859,7 +5859,7 @@ namespace std { \end{codeblock} \pnum @@ -9271,7 +9262,7 @@ index fb901823..2dea2cc5 100644 If \tcode{Smart} is a specialization of \tcode{shared_ptr} and \tcode{sizeof...(Args) == 0}, the program is ill-formed. -@@ -5632,7 +5632,7 @@ namespace std { +@@ -6099,7 +6099,7 @@ namespace std { \end{codeblock} \pnum @@ -9281,7 +9272,7 @@ index fb901823..2dea2cc5 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index eda69180..b61dc003 100644 +index 2c8f245e..c175f7f6 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -136,12 +136,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -9877,7 +9868,7 @@ index eda69180..b61dc003 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index a0370273..5304cf1b 100644 +index c2cec33b..93b65af3 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul @@ -9986,7 +9977,7 @@ index a0370273..5304cf1b 100644 or \tcode{++firstB == lastB}, let $n = 1$, diff --git a/source/strings.tex b/source/strings.tex -index e9c20ec8..9f0d3f9c 100644 +index 025af463..e7afd872 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -238,10 +238,10 @@ using state_type = @\seebelow@; @@ -10004,7 +9995,7 @@ index e9c20ec8..9f0d3f9c 100644 \end{itemdescr} \rSec2[char.traits.specializations]{\tcode{char_traits} specializations} -@@ -928,7 +928,7 @@ using const_iterator = @\impdefx{type of \tcode{basic_string_view::const_iterato +@@ -935,7 +935,7 @@ using const_iterator = @\impdefx{type of \tcode{basic_string_view::const_iterato \pnum A type that meets the requirements of a constant @@ -10014,10 +10005,10 @@ index e9c20ec8..9f0d3f9c 100644 meets the constexpr iterator requirements\iref{iterator.requirements.general}, whose \tcode{value_type} is the template parameter \tcode{charT}. diff --git a/source/support.tex b/source/support.tex -index 90a3972a..5d4fbbf8 100644 +index ffcaa878..4b5e7791 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -4102,7 +4102,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. +@@ -4113,7 +4113,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. \pnum \tcode{exception_ptr} meets the requirements of @@ -10026,7 +10017,7 @@ index 90a3972a..5d4fbbf8 100644 \pnum Two non-null values of type \tcode{exception_ptr} are equivalent and compare equal if and -@@ -4326,7 +4326,7 @@ Let \tcode{U} be \tcode{decay_t}. +@@ -4337,7 +4337,7 @@ Let \tcode{U} be \tcode{decay_t}. \pnum \expects @@ -10036,7 +10027,7 @@ index 90a3972a..5d4fbbf8 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index 6b8778ac..693a8b4c 100644 +index f5f287c6..755ffdd6 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10099,7 +10090,7 @@ index 6b8778ac..693a8b4c 100644 the following expressions are well-formed, have type \tcode{bool}, and have the specified semantics (\tcode{m} denotes a value of type \tcode{L}, -@@ -4498,7 +4498,7 @@ namespace std { +@@ -4527,7 +4527,7 @@ namespace std { \indexlibraryglobal{atomic}% \pnum The template argument for \tcode{T} shall meet the @@ -10108,7 +10099,7 @@ index 6b8778ac..693a8b4c 100644 The program is ill-formed if any of \begin{itemize} \item \tcode{is_trivially_copyable_v}, -@@ -7326,11 +7326,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, +@@ -7378,11 +7378,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, They meet the requirements set out in \ref{thread.mutex.requirements.mutex}. In this description, \tcode{m} denotes an object of a mutex type. \begin{note} @@ -10122,7 +10113,7 @@ index 6b8778ac..693a8b4c 100644 If initialization of an object of a mutex type fails, an exception of type \tcode{system_error} is thrown. The mutex types are neither copyable nor movable. -@@ -7599,7 +7599,7 @@ specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} den +@@ -7651,7 +7651,7 @@ specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} den object of a specialization of \tcode{time_point}\iref{time.point}. \begin{note} @@ -10131,7 +10122,7 @@ index 6b8778ac..693a8b4c 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -7811,7 +7811,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally +@@ -7863,7 +7863,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally meet the requirements set out below. In this description, \tcode{m} denotes an object of a shared mutex type. \begin{note} @@ -10140,7 +10131,7 @@ index 6b8778ac..693a8b4c 100644 requirements\iref{thread.req.lockable.shared}. \end{note} -@@ -7988,7 +7988,7 @@ meet the requirements set out below. In this description, +@@ -8040,7 +8040,7 @@ meet the requirements set out below. In this description, \tcode{abs_time} denotes an object of a specialization of \tcode{time_point}\iref{time.point}. \begin{note} @@ -10149,7 +10140,7 @@ index 6b8778ac..693a8b4c 100644 requirements\iref{thread.req.lockable.shared.timed}. \end{note} -@@ -8198,7 +8198,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable +@@ -8250,7 +8250,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable object throughout the \tcode{lock_guard} object's \deflink{lifetime}{basic.life}. The behavior of a program is undefined if the lockable object referenced by \exposid{pm} does not exist for the entire lifetime of the \tcode{lock_guard} @@ -10158,7 +10149,7 @@ index 6b8778ac..693a8b4c 100644 requirements\iref{thread.req.lockable.basic}. \indexlibraryctor{lock_guard}% -@@ -8277,12 +8277,12 @@ object. +@@ -8329,12 +8329,12 @@ object. If \tcode{sizeof...(MutexTypes)} is one, let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. \tcode{Mutex} @@ -10173,7 +10164,7 @@ index 6b8778ac..693a8b4c 100644 and there is no member \tcode{mutex_type}. \end{itemize} -@@ -8397,17 +8397,17 @@ copyable but are movable. The behavior of a program is undefined if the containe +@@ -8449,17 +8449,17 @@ copyable but are movable. The behavior of a program is undefined if the containe \exposid{pm} is not null and the lockable object pointed to by \exposid{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied @@ -10197,7 +10188,7 @@ index 6b8778ac..693a8b4c 100644 \end{note} \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} -@@ -8457,7 +8457,7 @@ unique_lock(mutex_type& m, try_to_lock_t); +@@ -8509,7 +8509,7 @@ unique_lock(mutex_type& m, try_to_lock_t); \begin{itemdescr} \pnum \expects @@ -10206,7 +10197,7 @@ index 6b8778ac..693a8b4c 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8499,7 +8499,7 @@ template +@@ -8551,7 +8551,7 @@ template \pnum \expects The supplied \tcode{Mutex} type meets the @@ -10215,7 +10206,7 @@ index 6b8778ac..693a8b4c 100644 \pnum \effects -@@ -8521,7 +8521,7 @@ template +@@ -8573,7 +8573,7 @@ template \begin{itemdescr} \pnum \expects @@ -10224,7 +10215,7 @@ index 6b8778ac..693a8b4c 100644 \pnum \effects -@@ -8608,7 +8608,7 @@ bool try_lock(); +@@ -8660,7 +8660,7 @@ bool try_lock(); \begin{itemdescr} \pnum \expects @@ -10233,7 +10224,7 @@ index 6b8778ac..693a8b4c 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8647,7 +8647,7 @@ template +@@ -8699,7 +8699,7 @@ template \begin{itemdescr} \pnum \expects @@ -10242,7 +10233,7 @@ index 6b8778ac..693a8b4c 100644 requirements\iref{thread.req.lockable.timed}. \pnum -@@ -8686,7 +8686,7 @@ template +@@ -8738,7 +8738,7 @@ template \begin{itemdescr} \pnum \expects @@ -10251,7 +10242,7 @@ index 6b8778ac..693a8b4c 100644 \pnum \effects -@@ -8879,16 +8879,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type +@@ -8931,16 +8931,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type is undefined if the contained pointer \exposid{pm} is not null and the lockable object pointed to by \exposid{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied @@ -10272,7 +10263,7 @@ index 6b8778ac..693a8b4c 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -8973,7 +8973,7 @@ template +@@ -9025,7 +9025,7 @@ template \begin{itemdescr} \pnum \expects @@ -10281,7 +10272,7 @@ index 6b8778ac..693a8b4c 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -8997,7 +8997,7 @@ template +@@ -9049,7 +9049,7 @@ template \begin{itemdescr} \pnum \expects @@ -10290,7 +10281,7 @@ index 6b8778ac..693a8b4c 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9122,7 +9122,7 @@ template +@@ -9174,7 +9174,7 @@ template \begin{itemdescr} \pnum \expects @@ -10299,7 +10290,7 @@ index 6b8778ac..693a8b4c 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9162,7 +9162,7 @@ template +@@ -9214,7 +9214,7 @@ template \begin{itemdescr} \pnum \expects @@ -10308,7 +10299,7 @@ index 6b8778ac..693a8b4c 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9301,7 +9301,7 @@ template int try_lock(L1&, L2&, L3&...); +@@ -9353,7 +9353,7 @@ template int try_lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10317,7 +10308,7 @@ index 6b8778ac..693a8b4c 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9330,7 +9330,7 @@ template void lock(L1&, L2&, L3&...); +@@ -9382,7 +9382,7 @@ template void lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10326,7 +10317,7 @@ index 6b8778ac..693a8b4c 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -10009,7 +10009,7 @@ This can happen if the re-locking of the mutex throws an exception. +@@ -10061,7 +10061,7 @@ This can happen if the re-locking of the mutex throws an exception. \pnum In \ref{thread.condition.condvarany}, template arguments for template parameters named \tcode{Lock} @@ -10335,7 +10326,7 @@ index 6b8778ac..693a8b4c 100644 requirements\iref{thread.req.lockable.basic}. \begin{note} All of the standard -@@ -10946,24 +10946,24 @@ execute atomically. +@@ -10998,24 +10998,24 @@ execute atomically. \pnum \tcode{CompletionFunction} shall meet the @@ -10366,7 +10357,7 @@ index 6b8778ac..693a8b4c 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -11458,7 +11458,7 @@ namespace std { +@@ -11510,7 +11510,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10375,7 +10366,7 @@ index 6b8778ac..693a8b4c 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -11790,7 +11790,7 @@ namespace std { +@@ -11842,7 +11842,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10384,7 +10375,7 @@ index 6b8778ac..693a8b4c 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -12096,7 +12096,7 @@ namespace std { +@@ -12148,7 +12148,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10393,7 +10384,7 @@ index 6b8778ac..693a8b4c 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -13034,7 +13034,7 @@ the expression \tcode{d(ptr)} is valid. +@@ -13086,7 +13086,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -10402,7 +10393,7 @@ index 6b8778ac..693a8b4c 100644 \pnum If \tcode{D} is trivially copyable, -@@ -13092,7 +13092,7 @@ namespace std { +@@ -13144,7 +13144,7 @@ namespace std { \pnum This class meets the requirements of @@ -10411,7 +10402,7 @@ index 6b8778ac..693a8b4c 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -13240,8 +13240,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -13292,8 +13292,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -10422,7 +10413,7 @@ index 6b8778ac..693a8b4c 100644 \pnum \effects -@@ -13433,7 +13433,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -13487,7 +13487,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -10432,10 +10423,10 @@ index 6b8778ac..693a8b4c 100644 \pnum \tcode{T} may be an incomplete type. diff --git a/source/time.tex b/source/time.tex -index 6b4a0b79..5e264ea3 100644 +index fa754085..1c4e655a 100644 --- a/source/time.tex +++ b/source/time.tex -@@ -1033,13 +1033,13 @@ SI definition is a measure of the quality of implementation. +@@ -1034,13 +1034,13 @@ SI definition is a measure of the quality of implementation. A type \tcode{TC} meets the \defnoldconcept{TrivialClock} requirements if \begin{itemize} \item @@ -10453,7 +10444,7 @@ index 6b4a0b79..5e264ea3 100644 requirements and the requirements of numeric types\iref{numeric.requirements}, \begin{note} -@@ -1197,15 +1197,15 @@ template struct is_clock; +@@ -1198,15 +1198,15 @@ template struct is_clock; \end{itemdecl} \pnum @@ -10473,7 +10464,7 @@ index 6b4a0b79..5e264ea3 100644 unless it meets all of the following conditions: \begin{itemize} \item the \grammarterm{qualified-id}s -@@ -2633,7 +2633,7 @@ template +@@ -2634,7 +2634,7 @@ template \pnum The types defined in \ref{time.clock} meet the @@ -10482,7 +10473,7 @@ index 6b4a0b79..5e264ea3 100644 requirements\iref{time.clock.req} unless otherwise specified. -@@ -2851,7 +2851,7 @@ which is \tcode{10'957 * 86'400s + 22s}. \\ +@@ -2852,7 +2852,7 @@ which is \tcode{10'957 * 86'400s + 22s}. \\ \end{example} \pnum @@ -10491,7 +10482,7 @@ index 6b4a0b79..5e264ea3 100644 unless the implementation can guarantee that \tcode{utc_clock::now()} does not propagate an exception. \begin{note} -@@ -3070,7 +3070,7 @@ so 2000-01-01 00:00:00 UTC is equivalent to 2000-01-01 00:00:32 TAI +@@ -3071,7 +3071,7 @@ so 2000-01-01 00:00:00 UTC is equivalent to 2000-01-01 00:00:32 TAI (22s plus the initial 10s offset). \pnum @@ -10500,7 +10491,7 @@ index 6b4a0b79..5e264ea3 100644 unless the implementation can guarantee that \tcode{tai_clock::now()} does not propagate an exception. \begin{note} -@@ -3232,7 +3232,7 @@ GPS is behind TAI by 19s due to the 10s offset between 1958 and 1970 +@@ -3233,7 +3233,7 @@ GPS is behind TAI by 19s due to the 10s offset between 1958 and 1970 and the additional 9 leap seconds inserted between 1970 and 1980. \pnum @@ -10509,7 +10500,7 @@ index 6b4a0b79..5e264ea3 100644 unless the implementation can guarantee that \tcode{gps_clock::now()} does not propagate an exception. \begin{note} -@@ -3369,7 +3369,7 @@ namespace std::chrono { +@@ -3370,7 +3370,7 @@ namespace std::chrono { \pnum \tcode{file_clock} is an alias for a type @@ -10518,7 +10509,7 @@ index 6b4a0b79..5e264ea3 100644 using a signed arithmetic type for \tcode{file_clock::rep}. \tcode{file_clock} is used to create the \tcode{time_point} system used for \tcode{file_time_type}\iref{filesystems}. -@@ -3976,8 +3976,8 @@ It normally holds values in the range 1 to 31, +@@ -3977,8 +3977,8 @@ It normally holds values in the range 1 to 31, but may hold non-negative values outside this range. It can be constructed with any \tcode{unsigned} value, which will be subsequently truncated to fit into \tcode{day}'s unspecified internal storage. @@ -10529,7 +10520,7 @@ index 6b4a0b79..5e264ea3 100644 and participates in basic arithmetic with \tcode{days} objects, which represent a difference between two \tcode{day} objects. -@@ -4269,8 +4269,8 @@ It normally holds values in the range 1 to 12, +@@ -4270,8 +4270,8 @@ It normally holds values in the range 1 to 12, but may hold non-negative values outside this range. It can be constructed with any \tcode{unsigned} value, which will be subsequently truncated to fit into \tcode{month}'s unspecified internal storage. @@ -10540,7 +10531,7 @@ index 6b4a0b79..5e264ea3 100644 and participates in basic arithmetic with \tcode{months} objects, which represent a difference between two \tcode{month} objects. -@@ -4579,8 +4579,8 @@ namespace std::chrono { +@@ -4580,8 +4580,8 @@ namespace std::chrono { It can represent values in the range \crange{min()}{max()}. It can be constructed with any \tcode{int} value, which will be subsequently truncated to fit into \tcode{year}'s unspecified internal storage. @@ -10551,7 +10542,7 @@ index 6b4a0b79..5e264ea3 100644 and participates in basic arithmetic with \tcode{years} objects, which represent a difference between two \tcode{year} objects. -@@ -4934,10 +4934,10 @@ corresponding to Sunday through Saturday, but +@@ -4935,10 +4935,10 @@ corresponding to Sunday through Saturday, but it may hold non-negative values outside this range. It can be constructed with any \tcode{unsigned} value, which will be subsequently truncated to fit into \tcode{weekday}'s unspecified internal storage. @@ -10564,7 +10555,7 @@ index 6b4a0b79..5e264ea3 100644 because there is no universal consensus on which day is the first day of the week. \tcode{weekday}'s arithmetic operations treat the days of the week as a circular range, with no beginning and no end. -@@ -5517,8 +5517,8 @@ namespace std::chrono { +@@ -5518,8 +5518,8 @@ namespace std::chrono { \pnum \tcode{month_day} represents a specific day of a specific month, but with an unspecified year. @@ -10575,7 +10566,7 @@ index 6b4a0b79..5e264ea3 100644 \pnum \tcode{month_day} is a trivially copyable and standard-layout class type. -@@ -6018,8 +6018,8 @@ namespace std::chrono { +@@ -6019,8 +6019,8 @@ namespace std::chrono { \tcode{year_month} represents a specific month of a specific year, but with an unspecified day. \tcode{year_month} is a field-based time point with a resolution of \tcode{months}. @@ -10586,7 +10577,7 @@ index 6b4a0b79..5e264ea3 100644 \pnum \tcode{year_month} is a trivially copyable and standard-layout class type. -@@ -6374,8 +6374,8 @@ but not \tcode{days}-oriented arithmetic. +@@ -6375,8 +6375,8 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -10597,7 +10588,7 @@ index 6b4a0b79..5e264ea3 100644 \pnum \tcode{year_month_day} is a trivially copyable and standard-layout class type. -@@ -6835,8 +6835,8 @@ but not \tcode{days}-oriented arithmetic. +@@ -6836,8 +6836,8 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -10608,7 +10599,7 @@ index 6b4a0b79..5e264ea3 100644 \pnum \tcode{year_month_day_last} is a trivially copyable and standard-layout class type. -@@ -7206,7 +7206,7 @@ but not \tcode{days}-oriented arithmetic. +@@ -7207,7 +7207,7 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -10617,7 +10608,7 @@ index 6b4a0b79..5e264ea3 100644 \pnum \tcode{year_month_weekday} is a trivially copyable and standard-layout class type. -@@ -7599,7 +7599,7 @@ but not \tcode{days}-oriented arithmetic. +@@ -7600,7 +7600,7 @@ but not \tcode{days}-oriented arithmetic. For the latter, there is a conversion to \tcode{sys_days}, which efficiently supports \tcode{days}-oriented arithmetic. \end{note} @@ -10626,7 +10617,7 @@ index 6b4a0b79..5e264ea3 100644 \pnum \tcode{year_month_weekday_last} is a trivially copyable and standard-layout class type. -@@ -8852,7 +8852,7 @@ The \tcode{tzdb_list} object contains a list of \tcode{tzdb} objects. +@@ -8853,7 +8853,7 @@ The \tcode{tzdb_list} object contains a list of \tcode{tzdb} objects. \pnum \tcode{tzdb_list::const_iterator} is a constant iterator @@ -10635,7 +10626,7 @@ index 6b4a0b79..5e264ea3 100644 and has a value type of \tcode{tzdb}. \indexlibrarymember{front}{tzdb_list}% -@@ -11576,7 +11576,7 @@ template<> struct hash; +@@ -11577,7 +11577,7 @@ template<> struct hash; The specializations are enabled\iref{unord.hash}. \begin{note} All the \tcode{hash} specializations listed above meet the @@ -10645,10 +10636,10 @@ index 6b4a0b79..5e264ea3 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index c39c394b..ba05d89f 100644 +index 45cc4ec4..4302fdc4 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -277,9 +277,9 @@ template +@@ -274,9 +274,9 @@ template Type \tcode{T} meets the @@ -10660,7 +10651,7 @@ index c39c394b..ba05d89f 100644 requirements. \pnum -@@ -2458,7 +2458,7 @@ template +@@ -2431,7 +2431,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -10669,7 +10660,7 @@ index c39c394b..ba05d89f 100644 \pnum \effects -@@ -3080,7 +3080,7 @@ template struct tuple_size; +@@ -3054,7 +3054,7 @@ template struct tuple_size; \pnum Except where specified otherwise, all specializations of \tcode{tuple_size} meet the @@ -10678,7 +10669,7 @@ index c39c394b..ba05d89f 100644 base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -3121,7 +3121,7 @@ template struct tuple_size; +@@ -3095,7 +3095,7 @@ template struct tuple_size; Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. If the expression \tcode{TS::value} is well-formed when treated as an \deflink{unevaluated operand}{expr.context}, then @@ -10687,7 +10678,7 @@ index c39c394b..ba05d89f 100644 with a base characteristic of \begin{codeblock} integral_constant -@@ -3159,7 +3159,7 @@ template struct tuple_element; +@@ -3133,7 +3133,7 @@ template struct tuple_element; \begin{itemdescr} \pnum Let \tcode{TE} denote \tcode{tuple_element_t} of the cv-unqualified type \tcode{T}. Then @@ -10696,7 +10687,7 @@ index c39c394b..ba05d89f 100644 with a member typedef \tcode{type} that names the type \tcode{const TE}. \pnum -@@ -3445,7 +3445,7 @@ template +@@ -3419,7 +3419,7 @@ template \pnum \expects \tcode{Alloc} meets @@ -10705,7 +10696,7 @@ index c39c394b..ba05d89f 100644 \pnum \begin{note} -@@ -4341,7 +4341,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); +@@ -4315,7 +4315,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); \pnum \expects @@ -10714,7 +10705,7 @@ index c39c394b..ba05d89f 100644 \pnum \effects -@@ -4398,7 +4398,7 @@ using const_iterator = @\impdef@; +@@ -4372,7 +4372,7 @@ using const_iterator = @\impdef@; \pnum These types model \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, @@ -10723,7 +10714,7 @@ index c39c394b..ba05d89f 100644 meet the requirements for constexpr iterators\iref{iterator.requirements.general}, with value type \tcode{remove_cv_t}. The reference type is \tcode{T\&} for \tcode{iterator} and -@@ -5418,7 +5418,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5391,7 +5391,7 @@ template constexpr bool operator==(const optional& x, const The expression \tcode{*x == *y} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -10732,7 +10723,7 @@ index c39c394b..ba05d89f 100644 \end{note} \pnum -@@ -5609,7 +5609,7 @@ template constexpr bool operator==(const optional& x, const +@@ -5582,7 +5582,7 @@ template constexpr bool operator==(const optional& x, const The expression \tcode{*x == v} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -10741,7 +10732,7 @@ index c39c394b..ba05d89f 100644 \end{note} \pnum -@@ -6164,7 +6164,7 @@ is nested within\iref{intro.object} the +@@ -6137,7 +6137,7 @@ is nested within\iref{intro.object} the \pnum All types in \tcode{Types} shall meet @@ -10750,7 +10741,7 @@ index c39c394b..ba05d89f 100644 \pnum A program that instantiates the definition of \tcode{variant} with -@@ -6857,7 +6857,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); +@@ -6830,7 +6830,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); \pnum \expects @@ -10759,7 +10750,7 @@ index c39c394b..ba05d89f 100644 \pnum \effects -@@ -6902,7 +6902,7 @@ template struct variant_size; +@@ -6875,7 +6875,7 @@ template struct variant_size; \begin{itemdescr} \pnum All specializations of \tcode{variant_size} meet the @@ -10768,7 +10759,7 @@ index c39c394b..ba05d89f 100644 with a base characteristic of \tcode{integral_constant} for some \tcode{N}. \end{itemdescr} -@@ -6915,7 +6915,7 @@ template struct variant_size; +@@ -6888,7 +6888,7 @@ template struct variant_size; \pnum Let \tcode{VS} denote \tcode{variant_size} of the cv-unqualified type \tcode{T}. Then each specialization of the template meets the @@ -10777,7 +10768,7 @@ index c39c394b..ba05d89f 100644 base characteristic of \tcode{integral_constant}. \end{itemdescr} -@@ -6935,7 +6935,7 @@ template struct variant_alternative; +@@ -6908,7 +6908,7 @@ template struct variant_alternative; \pnum Let \tcode{VA} denote \tcode{variant_alternative} of the cv-unqualified type \tcode{T}. Then each specialization of the template @@ -10786,7 +10777,7 @@ index c39c394b..ba05d89f 100644 member typedef \tcode{type} that names the type \tcode{const VA::type}. \end{itemdescr} -@@ -7666,7 +7666,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. +@@ -7639,7 +7639,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. \pnum \expects @@ -10795,7 +10786,7 @@ index c39c394b..ba05d89f 100644 \pnum \effects -@@ -7694,7 +7694,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7667,7 +7667,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -10804,7 +10795,7 @@ index c39c394b..ba05d89f 100644 \pnum \effects -@@ -7727,7 +7727,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7700,7 +7700,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -10813,7 +10804,7 @@ index c39c394b..ba05d89f 100644 \pnum \effects -@@ -7812,7 +7812,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7785,7 +7785,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -10822,7 +10813,7 @@ index c39c394b..ba05d89f 100644 \pnum \effects -@@ -7847,7 +7847,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7820,7 +7820,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -10831,7 +10822,7 @@ index c39c394b..ba05d89f 100644 \pnum \effects -@@ -7891,7 +7891,7 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -7864,7 +7864,7 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -10840,7 +10831,7 @@ index c39c394b..ba05d89f 100644 \pnum \effects -@@ -8597,9 +8597,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -8571,9 +8571,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum When \tcode{T} is not \cv{} \tcode{void}, it shall meet @@ -10852,7 +10843,7 @@ index c39c394b..ba05d89f 100644 \rSec3[expected.object.cons]{Constructors} -@@ -9861,7 +9861,7 @@ template friend constexpr bool operator==(const expected& x, const T2& +@@ -9847,7 +9847,7 @@ template friend constexpr bool operator==(const expected& x, const T2& The expression \tcode{*x == v} is well-formed and its result is convertible to \tcode{bool}. \begin{note} @@ -10861,7 +10852,7 @@ index c39c394b..ba05d89f 100644 \end{note} \pnum -@@ -10002,7 +10002,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -9988,7 +9988,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum \tcode{E} shall meet the requirements of @@ -10870,7 +10861,7 @@ index c39c394b..ba05d89f 100644 \rSec3[expected.void.cons]{Constructors} -@@ -12163,8 +12163,8 @@ is ill-formed. +@@ -12161,8 +12161,8 @@ is ill-formed. \indextext{call wrapper}% \indextext{call wrapper!simple}% \indextext{call wrapper!forwarding}% @@ -10881,7 +10872,7 @@ index c39c394b..ba05d89f 100644 An \defn{argument forwarding call wrapper} is a call wrapper that can be called with an arbitrary argument list and delivers the arguments to the target object as references. -@@ -12204,7 +12204,7 @@ with references as described in the corresponding forwarding steps. +@@ -12202,7 +12202,7 @@ with references as described in the corresponding forwarding steps. \pnum \label{term.simple.call.wrapper}% A \defn{simple call wrapper} is a perfect forwarding call wrapper that meets @@ -10890,7 +10881,7 @@ index c39c394b..ba05d89f 100644 and whose copy constructor, move constructor, and assignment operators are constexpr functions that do not throw exceptions. -@@ -12307,7 +12307,7 @@ namespace std { +@@ -12305,7 +12305,7 @@ namespace std { \end{codeblock} \pnum @@ -10899,7 +10890,7 @@ index c39c394b..ba05d89f 100644 around a reference to an object or function of type \tcode{T}. \pnum -@@ -13761,7 +13761,7 @@ is \tcode{true}. +@@ -13759,7 +13759,7 @@ is \tcode{true}. \pnum \expects @@ -10908,7 +10899,7 @@ index c39c394b..ba05d89f 100644 \pnum \returns -@@ -13847,10 +13847,10 @@ is \tcode{true}. +@@ -13845,10 +13845,10 @@ is \tcode{true}. \pnum \expects @@ -10921,7 +10912,7 @@ index c39c394b..ba05d89f 100644 \pnum \returns -@@ -13916,7 +13916,7 @@ then \tcode{f != nullptr} is \tcode{true}. +@@ -13914,7 +13914,7 @@ then \tcode{f != nullptr} is \tcode{true}. \pnum \expects For each $\tcode{T}_i$ in \tcode{BoundArgs}, @@ -10930,7 +10921,7 @@ index c39c394b..ba05d89f 100644 \pnum \returns -@@ -13962,7 +13962,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. +@@ -13960,7 +13960,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. \pnum Specializations of the \tcode{is_bind_expression} template shall meet @@ -10939,7 +10930,7 @@ index c39c394b..ba05d89f 100644 provides a definition that has a base characteristic of \tcode{true_type} if \tcode{T} is a type returned from \tcode{bind}, otherwise it has a base characteristic of \tcode{false_type}. -@@ -13998,7 +13998,7 @@ The function template \tcode{bind} uses +@@ -13996,7 +13996,7 @@ The function template \tcode{bind} uses \pnum Specializations of the \tcode{is_placeholder} template shall meet @@ -10948,7 +10939,7 @@ index c39c394b..ba05d89f 100644 provides a definition that has the base characteristic of \tcode{integral_constant} if \tcode{T} is the type of \tcode{std::placeholders::_\placeholder{J}}, otherwise it has a -@@ -14048,7 +14048,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> +@@ -14046,7 +14046,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> \pnum \expects \tcode{FD} and each $\tcode{TD}_i$ meet @@ -10957,7 +10948,7 @@ index c39c394b..ba05d89f 100644 \tcode{\placeholdernc{INVOKE}(fd, $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc$, $\tcode{w}_N$)}\iref{func.require} is a valid expression for some values $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc{}$, $\tcode{w}_N$, where -@@ -14084,8 +14084,8 @@ the state entities of \tcode{g}. +@@ -14082,8 +14082,8 @@ the state entities of \tcode{g}. \pnum \begin{note} If all of \tcode{FD} and $\tcode{TD}_i$ meet @@ -10968,7 +10959,7 @@ index c39c394b..ba05d89f 100644 \end{note} \end{itemdescr} -@@ -14154,13 +14154,13 @@ The number \tcode{\placeholder{M}} of placeholders is +@@ -14152,13 +14152,13 @@ The number \tcode{\placeholder{M}} of placeholders is \impldef{number of placeholders for bind expressions}. \pnum @@ -10985,7 +10976,7 @@ index c39c394b..ba05d89f 100644 but if so, their copy assignment operators are constexpr functions that do not throw exceptions. -@@ -14430,7 +14430,7 @@ Let \tcode{FD} be \tcode{decay_t}. +@@ -14428,7 +14428,7 @@ Let \tcode{FD} be \tcode{decay_t}. \pnum \expects @@ -10994,7 +10985,7 @@ index c39c394b..ba05d89f 100644 \pnum \ensures -@@ -14855,9 +14855,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14853,9 +14853,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11006,7 +10997,7 @@ index c39c394b..ba05d89f 100644 \pnum \ensures -@@ -14907,9 +14907,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14905,9 +14905,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11018,7 +11009,7 @@ index c39c394b..ba05d89f 100644 \pnum \ensures -@@ -14949,9 +14949,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14947,9 +14947,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11030,7 +11021,7 @@ index c39c394b..ba05d89f 100644 \pnum \ensures -@@ -15273,8 +15273,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -15271,8 +15271,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11041,7 +11032,7 @@ index c39c394b..ba05d89f 100644 \pnum \ensures -@@ -15329,8 +15329,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -15327,8 +15327,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11052,7 +11043,7 @@ index c39c394b..ba05d89f 100644 \pnum \ensures -@@ -15375,8 +15375,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -15373,8 +15373,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11063,7 +11054,7 @@ index c39c394b..ba05d89f 100644 \pnum \ensures -@@ -15937,7 +15937,7 @@ provided to the function call operator. +@@ -15935,7 +15935,7 @@ provided to the function call operator. \pnum Each specialization of a class template specified in \ref{func.search} @@ -11072,7 +11063,7 @@ index c39c394b..ba05d89f 100644 Template parameters named \begin{itemize} \item \tcode{ForwardIterator}, -@@ -15951,7 +15951,7 @@ Template parameters named +@@ -15949,7 +15949,7 @@ Template parameters named of templates specified in \ref{func.search} shall meet the same requirements and semantics as specified in \ref{algorithms.general}. @@ -11081,7 +11072,7 @@ index c39c394b..ba05d89f 100644 requirements (\tref{cpp17.hash}). \pnum -@@ -16060,9 +16060,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, +@@ -16058,9 +16058,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, \pnum \expects The value type of \tcode{RandomAccessIterator1} meets @@ -11094,7 +11085,7 @@ index c39c394b..ba05d89f 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -16161,8 +16161,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, +@@ -16159,8 +16159,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, \begin{itemdescr} \pnum \expects @@ -11105,7 +11096,7 @@ index c39c394b..ba05d89f 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -16235,7 +16235,7 @@ as the default hash function. +@@ -16233,7 +16233,7 @@ as the default hash function. Each specialization of \tcode{hash} is either enabled or disabled, as described below. \begin{note} @@ -11114,7 +11105,7 @@ index c39c394b..ba05d89f 100644 disabled specializations do not. \end{note} Each header that declares the template \tcode{hash} -@@ -16262,17 +16262,17 @@ Disabled specializations of \tcode{hash} +@@ -16260,17 +16260,17 @@ Disabled specializations of \tcode{hash} are not function object types\iref{function.objects}. \begin{note} This means that the specialization of \tcode{hash} exists, but @@ -11141,10 +11132,10 @@ index c39c394b..ba05d89f 100644 2.43.0 -From ceb985047db6f23ba96c440e695b7cda83211715 Mon Sep 17 00:00:00 2001 +From 0a7518c947dde6d96c13b14655fe5bbc858157a7 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 -Subject: [PATCH 8/9] Remove awkward \linebreaks. +Subject: [PATCH 08/10] Remove awkward \linebreaks. --- source/algorithms.tex | 4 ++-- @@ -11158,10 +11149,10 @@ Subject: [PATCH 8/9] Remove awkward \linebreaks. 8 files changed, 56 insertions(+), 56 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex -index b7fd050e..8cbeb8e6 100644 +index b86bfc2a..5b4fb286 100644 --- a/source/algorithms.tex +++ b/source/algorithms.tex -@@ -7073,7 +7073,7 @@ Let: +@@ -7072,7 +7072,7 @@ Let: \tcode{invoke(op, invoke(proj, *(first1 + (i - result))))} for unary transforms defined in namespace \tcode{ranges}; \item @@ -11170,7 +11161,7 @@ index b7fd050e..8cbeb8e6 100644 for binary transforms defined in namespace \tcode{ranges}. \end{itemize} \end{itemize} -@@ -14212,7 +14212,7 @@ namespace ranges { +@@ -14211,7 +14211,7 @@ namespace ranges { \pnum \constraints \tcode{is_unbounded_array_v} is \tcode{false}. @@ -11180,7 +11171,7 @@ index b7fd050e..8cbeb8e6 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index 0be602a1..1bdcf098 100644 +index cb05d8bd..54046ba7 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1461,7 +1461,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11201,7 +11192,7 @@ index 0be602a1..1bdcf098 100644 an implementation should not perform any reallocation. \end{itemdescr} -@@ -2453,7 +2453,7 @@ Assigns \tcode{nh.\exposid{ptr_}} to \exposid{ptr_}. +@@ -2457,7 +2457,7 @@ Assigns \tcode{nh.\exposid{ptr_}} to \exposid{ptr_}. \item If \tcode{!\exposid{alloc_}} is \tcode{true} or \tcode{\exposid{ator-traits}::propagate_on_container_move_assignment::value} @@ -11210,7 +11201,7 @@ index 0be602a1..1bdcf098 100644 move assigns \tcode{nh.\exposid{alloc_}} to \exposid{alloc_}. \item Assigns -@@ -7473,14 +7473,14 @@ template +@@ -7491,14 +7491,14 @@ template \pnum \expects \tcode{T} is \oldconcept{EmplaceConstructible} into \tcode{forward_list} @@ -11227,7 +11218,7 @@ index 0be602a1..1bdcf098 100644 \pnum \returns -@@ -10742,7 +10742,7 @@ template +@@ -10760,7 +10760,7 @@ template \pnum The expression \tcode{\exposid{is-vector-bool-reference}} is \tcode{true} @@ -11236,7 +11227,7 @@ index 0be602a1..1bdcf098 100644 for some type \tcode{Alloc} and \tcode{vector} is not a program-defined specialization. \end{itemdescr} -@@ -12124,7 +12124,7 @@ there is no effect. +@@ -12175,7 +12175,7 @@ there is no effect. Otherwise, let \tcode{r} be \tcode{equal_range(k)}. Constructs an object \tcode{u} of type \tcode{value_type} with \tcode{piecewise_construct, forward_as_tuple(std::forward(k)), @@ -11245,7 +11236,7 @@ index 0be602a1..1bdcf098 100644 If \tcode{equal_range(u.first) == r} is \tcode{false}, the behavior is undefined. Inserts \tcode{u} into \tcode{*this}. -@@ -17817,7 +17817,7 @@ template constexpr pair emplace(Args&&... args); +@@ -17936,7 +17936,7 @@ template constexpr pair emplace(Args&&... args); \pnum \effects Initializes an object \tcode{t} of type \tcode{pair} @@ -11254,7 +11245,7 @@ index 0be602a1..1bdcf098 100644 if the map already contains an element whose key is equivalent to \tcode{t.first}, \tcode{*this} is unchanged. -@@ -18089,7 +18089,7 @@ template +@@ -18208,7 +18208,7 @@ template \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11263,7 +11254,7 @@ index 0be602a1..1bdcf098 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18144,7 +18144,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. +@@ -18263,7 +18263,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11272,7 +11263,7 @@ index 0be602a1..1bdcf098 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18774,14 +18774,14 @@ template +@@ -18893,14 +18893,14 @@ template \pnum \effects Equivalent to \tcode{flat_multimap(key_cont, mapped_cont)} and @@ -11289,7 +11280,7 @@ index 0be602a1..1bdcf098 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -23458,7 +23458,7 @@ is representable as a value of type \tcode{index_type.} +@@ -23588,7 +23588,7 @@ is representable as a value of type \tcode{index_type.} \item If \exposid{rank_} is greater than one, then the product of @@ -11298,7 +11289,7 @@ index 0be602a1..1bdcf098 100644 all values \tcode{ext.extent($k$)} with $k$ in the range of \range{1}{\exposid{rank_}} is representable as a value of type \tcode{index_type}. -@@ -23537,7 +23537,7 @@ template +@@ -23667,7 +23667,7 @@ template \item If \exposid{rank_} is greater than \tcode{1} and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11307,7 +11298,7 @@ index 0be602a1..1bdcf098 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(0))) -@@ -23612,7 +23612,7 @@ is \tcode{true}. +@@ -23742,7 +23742,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11316,7 +11307,7 @@ index 0be602a1..1bdcf098 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(0))) -@@ -24020,7 +24020,7 @@ Implementations should not store this value +@@ -24150,7 +24150,7 @@ Implementations should not store this value if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. \begin{note} Using \tcode{extents} @@ -11325,7 +11316,7 @@ index 0be602a1..1bdcf098 100644 would achieve this. \end{note} \end{itemdescr} -@@ -24107,7 +24107,7 @@ is representable as a value of type \tcode{index_type}. +@@ -24237,7 +24237,7 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -11334,7 +11325,7 @@ index 0be602a1..1bdcf098 100644 all values \tcode{ext.extent($k$)} with $k$ in the range of \range{0}{\exposid{rank_} - 1} is representable as a value of type \tcode{index_type}. -@@ -24186,7 +24186,7 @@ template +@@ -24316,7 +24316,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11343,7 +11334,7 @@ index 0be602a1..1bdcf098 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -24261,7 +24261,7 @@ is \tcode{true}. +@@ -24391,7 +24391,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11353,7 +11344,7 @@ index 0be602a1..1bdcf098 100644 @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) diff --git a/source/exec.tex b/source/exec.tex -index 4bf25bbd..98317a73 100644 +index 3eb08725..f8d2c299 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -3914,7 +3914,7 @@ otherwise, it is expression-equivalent to @@ -11374,7 +11365,7 @@ index 4bf25bbd..98317a73 100644 \pnum Otherwise, -@@ -4980,7 +4980,7 @@ try { +@@ -4979,7 +4979,7 @@ try { \end{codeblock} if the expression \tcode{\exposid{decayed-tuple}\{as...\}} is potentially throwing; @@ -11393,10 +11384,10 @@ index 4bf25bbd..98317a73 100644 the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: diff --git a/source/memory.tex b/source/memory.tex -index 2dea2cc5..e1572fe6 100644 +index 717ae306..7f0d47f5 100644 --- a/source/memory.tex +++ b/source/memory.tex -@@ -1281,7 +1281,7 @@ A \tcode{tuple} value determined as follows: +@@ -1325,7 +1325,7 @@ A \tcode{tuple} value determined as follows: \begin{itemize} \item If \tcode{uses_allocator_v, Alloc>} is \tcode{false} and @@ -11405,7 +11396,7 @@ index 2dea2cc5..e1572fe6 100644 return \tcode{forward_as_tuple(std::forward(args)...)}. \item Otherwise, if \tcode{uses_allocator_v, Alloc>} is \tcode{true} and -@@ -4246,7 +4246,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje +@@ -4713,7 +4713,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje the allocator \tcode{a} passed to \tcode{allocate_shared}. \item When a (sub)object of non-array type \tcode{U} is initialized by @@ -11414,7 +11405,7 @@ index 2dea2cc5..e1572fe6 100644 \tcode{allocate_shared_for_overwrite}, it is initialized via the expression \tcode{::new(pv) U}, where \tcode{pv} has type \tcode{void*} and -@@ -5481,7 +5481,7 @@ if (p) { +@@ -5948,7 +5948,7 @@ if (p) { \end{codeblock} if the expression \tcode{s.reset(static_cast(p), std::forward(args)...)} @@ -11424,7 +11415,7 @@ index 2dea2cc5..e1572fe6 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index b61dc003..57e3b12b 100644 +index c175f7f6..ccf7f156 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -2273,7 +2273,7 @@ present as follows: @@ -11437,7 +11428,7 @@ index b61dc003..57e3b12b 100644 \item Otherwise, if diff --git a/source/ranges.tex b/source/ranges.tex -index 912546d8..ec7898d1 100644 +index cd57cb1f..0ba91b42 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -11449,7 +11440,7 @@ index 912546d8..ec7898d1 100644 For example, it is possible for \tcode{ranges::reserve_hint(t)} to be well-defined for an \libconceptx{approximate\-ly_sized_range}{approximately_sized_range} whose -@@ -3673,7 +3673,7 @@ constexpr explicit repeat_view(piecewise_construct_t, +@@ -3697,7 +3697,7 @@ constexpr explicit repeat_view(piecewise_construct_t, Initializes \exposid{value_} with \tcode{make_from_tuple(std::move(value_args))} and @@ -11458,7 +11449,7 @@ index 912546d8..ec7898d1 100644 \tcode{make_from_tuple(std::move(bound_args))}. The behavior is undefined if \tcode{Bound} is not \tcode{unreachable_sentinel_t} and -@@ -5994,7 +5994,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} +@@ -6018,7 +6018,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} that models \libconcept{random_access_range} and \libconcept{sized_range}, then \tcode{iota_view(*ranges::begin(E), @@ -11467,7 +11458,7 @@ index 912546d8..ec7898d1 100644 except that \tcode{E} is evaluated only once. \item -@@ -6475,7 +6475,7 @@ if \tcode{T} is +@@ -6499,7 +6499,7 @@ if \tcode{T} is a specialization of \tcode{subrange} that models \libconcept{random_access_range} and \libconcept{sized_range}, then @@ -11476,7 +11467,7 @@ index 912546d8..ec7898d1 100644 \exposid{to-unsigned-like}(ranges::distance(E) - std::min(ranges::distance(E), F)))}, except that \tcode{E} and \tcode{F} are each evaluated only once. -@@ -7527,7 +7527,7 @@ Let \placeholder{OUTERC} denote +@@ -7551,7 +7551,7 @@ Let \placeholder{OUTERC} denote let \placeholder{INNERC} denote \tcode{iterator_traits<\exposid{InnerIter}>::iterator_category}, and let \placeholder{PATTERNC} denote @@ -11485,7 +11476,7 @@ index 912546d8..ec7898d1 100644 \item If \begin{codeblock} -@@ -8038,7 +8038,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); +@@ -8062,7 +8062,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -11494,7 +11485,7 @@ index 912546d8..ec7898d1 100644 \end{itemdescr} \rSec3[range.lazy.split.outer]{Class template \tcode{lazy_split_view::\exposid{outer-iterator}}} -@@ -8349,7 +8349,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: +@@ -8375,7 +8375,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: \begin{itemize} \item \tcode{forward_iterator_tag} if @@ -11503,7 +11494,7 @@ index 912546d8..ec7898d1 100644 \tcode{\libconcept{derived_from}}; \item otherwise, \tcode{iterator_traits>::iterator_category}. \end{itemize} -@@ -8569,7 +8569,7 @@ constexpr explicit split_view(R&& r, range_value_t e); +@@ -8595,7 +8595,7 @@ constexpr explicit split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -11512,7 +11503,7 @@ index 912546d8..ec7898d1 100644 \end{itemdescr} \indexlibrarymember{begin}{split_view} -@@ -9157,7 +9157,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. +@@ -9183,7 +9183,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. \item Otherwise, if \tcode{\exposconcept{all-forward}} is modeled, @@ -11521,7 +11512,7 @@ index 912546d8..ec7898d1 100644 \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} -@@ -9183,14 +9183,14 @@ let \tcode{Cs} denote the pack of types +@@ -9209,14 +9209,14 @@ let \tcode{Cs} denote the pack of types \begin{itemize} \item If @@ -11539,7 +11530,7 @@ index 912546d8..ec7898d1 100644 \item Otherwise, if \tcode{(\libconcept{derived_from} \&\& ...)} -@@ -9642,11 +9642,11 @@ Let +@@ -9668,11 +9668,11 @@ Let %FIXME This is hard to parse. If \tcode{$i_\tcode{x}$ > $i_\tcode{y}$}, let \tcode{$d_\tcode{y}$} be @@ -11554,7 +11545,7 @@ index 912546d8..ec7898d1 100644 for every integer \tcode{$i$} in the range \range{$i_\tcode{y}$ + 1}{$i_\tcode{x}$} if there is any, and -@@ -9689,7 +9689,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul +@@ -9715,7 +9715,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul Let \tcode{$i_\tcode{x}$} denote \tcode{x.\exposid{it_}.index()}, \tcode{$d_\tcode{x}$} be @@ -11563,7 +11554,7 @@ index 912546d8..ec7898d1 100644 Let \tcode{$s$} denote the sum of the sizes of all the ranges \tcode{std::get<$i$>(x.\exposid{parent_}->\exposid{views_})} for every integer \tcode{$i$} in the range -@@ -9846,7 +9846,7 @@ is expression-equivalent to: +@@ -9872,7 +9872,7 @@ is expression-equivalent to: \begin{itemize} \item If \tcode{T} models \libconcept{contiguous_iterator}, @@ -11572,7 +11563,7 @@ index 912546d8..ec7898d1 100644 \item Otherwise, if \tcode{T} models \libconcept{random_access_iterator}, -@@ -13555,7 +13555,7 @@ is defined as follows: +@@ -13581,7 +13581,7 @@ is defined as follows: \item If \tcode{invoke_result_t<\exposid{maybe-const}\&, \exposid{REPEAT}(range_reference_t<\exposid{Base}>, N)...>} @@ -11581,7 +11572,7 @@ index 912546d8..ec7898d1 100644 \tcode{iterator_category} denotes \tcode{input_iterator_tag}. \item Otherwise, let \tcode{C} denote the type -@@ -14666,7 +14666,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ +@@ -14692,7 +14692,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ \effects Initializes \exposid{current_} with \tcode{current}, \exposid{end_} with \tcode{ranges::end(parent->\exposid{base_})}, @@ -11591,10 +11582,10 @@ index 912546d8..ec7898d1 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index 693a8b4c..9a4c2a31 100644 +index 755ffdd6..6b4d53eb 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -3492,7 +3492,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, +@@ -3513,7 +3513,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11603,7 +11594,7 @@ index 693a8b4c..9a4c2a31 100644 \pnum \effects -@@ -4791,7 +4791,7 @@ For the \tcode{volatile} overload of this function, +@@ -4820,7 +4820,7 @@ For the \tcode{volatile} overload of this function, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11612,7 +11603,7 @@ index 693a8b4c..9a4c2a31 100644 \pnum \effects -@@ -6305,7 +6305,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de +@@ -6357,7 +6357,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11621,7 +11612,7 @@ index 693a8b4c..9a4c2a31 100644 \pnum \effects -@@ -6621,7 +6621,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire +@@ -6673,7 +6673,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11631,10 +11622,10 @@ index 693a8b4c..9a4c2a31 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index ba05d89f..c03201fa 100644 +index 4302fdc4..840f6d0f 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -2381,7 +2381,7 @@ equals \tcode{tuple_size_v>}, +@@ -2354,7 +2354,7 @@ equals \tcode{tuple_size_v>}, \item \tcode{(is_constructible_v(std::forward(u)))> \&\& ...)} @@ -11643,7 +11634,7 @@ index ba05d89f..c03201fa 100644 \tcode{true}, and \item -@@ -3399,7 +3399,7 @@ denotes a type. +@@ -3373,7 +3373,7 @@ denotes a type. \pnum \result The member \grammarterm{typedef-name} \tcode{type} denotes the type @@ -11652,7 +11643,7 @@ index ba05d89f..c03201fa 100644 \end{itemdescr} \indexlibrarymember{common_type}{tuple}% -@@ -4406,7 +4406,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and +@@ -4380,7 +4380,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and \pnum All requirements on container iterators\iref{container.reqmts} apply to @@ -11661,7 +11652,7 @@ index ba05d89f..c03201fa 100644 \pnum Any operation that initializes or destroys the contained value of an optional object invalidates all iterators into that object. -@@ -9447,7 +9447,7 @@ constexpr const T&& value() const &&; +@@ -9433,7 +9433,7 @@ constexpr const T&& value() const &&; \pnum \mandates \tcode{is_copy_constructible_v} is \tcode{true} and @@ -11674,17 +11665,17 @@ index ba05d89f..c03201fa 100644 2.43.0 -From 3826c56a6e20a012815bac083e355c92926f71b7 Mon Sep 17 00:00:00 2001 +From 427dc2cb2d3bd39484de96f26105ca772c421619 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 25 Dec 2025 12:43:53 +0100 -Subject: [PATCH 9/9] Use \literalterminal more. +Subject: [PATCH 09/10] Use \literalterminal more. --- source/lex.tex | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/source/lex.tex b/source/lex.tex -index 2e1da4ca..23ea54ce 100644 +index ade495a0..04f25c1d 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -449,7 +449,7 @@ for the respective Unicode encoding form. @@ -11709,7 +11700,7 @@ index 2e1da4ca..23ea54ce 100644 named-universal-character \end{bnf} -@@ -1187,14 +1187,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1196,14 +1196,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{binary-literal}\br @@ -11727,7 +11718,7 @@ index 2e1da4ca..23ea54ce 100644 octal-literal \opt{\literalterminal{'}} octal-digit \end{bnf} -@@ -1211,22 +1211,22 @@ a literal has a type and a value category\iref{expr.prim.literal}. +@@ -1220,22 +1220,22 @@ a literal has a type and a value category\iref{expr.prim.literal}. \begin{bnf} \nontermdef{binary-digit} \textnormal{one of}\br @@ -11757,3 +11748,30 @@ index 2e1da4ca..23ea54ce 100644 -- 2.43.0 + +From 529f4081a310c72e8e31b6100c204f41f00d28f3 Mon Sep 17 00:00:00 2001 +From: Eisenwave +Date: Wed, 15 Jul 2026 21:34:34 +0200 +Subject: [PATCH 10/10] [syserr.fmt] Replace \unicode with \ucode to render + U+FFFD + +--- + source/diagnostics.tex | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/source/diagnostics.tex b/source/diagnostics.tex +index f3b63bf4..b93bb1dc 100644 +--- a/source/diagnostics.tex ++++ b/source/diagnostics.tex +@@ -1309,7 +1309,7 @@ If \tcode{charT} is \tcode{char} and the ordinary literal encoding is UTF-8, + then let \tcode{msg} be \tcode{ec.message()} transcoded to UTF-8 + with maximal subparts of ill-formed subsequences + substituted with \unicode{fffd}{replacement character} +-per the Unicode Standard, Chapter 3.9 \unicode{fffd} Substi\-tution in Conversion. ++per the Unicode Standard, Chapter 3.9 \ucode{fffd} Substi\-tution in Conversion. + \item + Otherwise, let \tcode{msg} be \tcode{ec.message()} + transcoded to an +-- +2.43.0 + diff --git a/lastbuild.sig b/lastbuild.sig index 588a0930d8..bfec191846 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ -htmlgen 63bc5929dc4fa6bb7448390ecec586c8069516b7 -draft aaecb9378d0766482cbb46e6bbe605edfc0781aa -68db5a559863267bad23f556fdf4d2c907b772f3 htmlgen.patch +htmlgen fa47c53345fbb32375bd3d54a1b64452cb5bbef4 +draft 254debad796f8f4a544b20561a14cf7630b8c69c +a23d324a4b920a0e9f83ddfc68842abf5b350897 htmlgen.patch From 70862c6b30d9b28260be06a2d5440825e3b66738 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Thu, 16 Jul 2026 19:09:20 -0500 Subject: [PATCH 32/36] Update --- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 476 +++++++++++++++++++++++--------------------------- lastbuild.sig | 4 +- 4 files changed, 224 insertions(+), 260 deletions(-) diff --git a/draft b/draft index 254debad79..85a72ebc3b 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 254debad796f8f4a544b20561a14cf7630b8c69c +Subproject commit 85a72ebc3b426fc055303d6896a21c88c423552d diff --git a/gh-pages b/gh-pages index 2e35adb34d..2145e11a1b 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 2e35adb34dd873f67b2e2164f54e2d4b15795aca +Subproject commit 2145e11a1b94ae722d45614083b1811a4a5d8f26 diff --git a/htmlgen.patch b/htmlgen.patch index 478d86b692..a728233f28 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,8 +1,8 @@ -From f9dfb400e3de5e852317285abcf775d2176d00f1 Mon Sep 17 00:00:00 2001 +From aa9a838f0c15cd9c3ad933e79f72da31e8e96231 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 -Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout - on smaller (e.g. half-screen) window sizes. +Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on + smaller (e.g. half-screen) window sizes. --- source/basic.tex | 26 +++++++++++++------------- @@ -10,7 +10,7 @@ Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index d82ac7a8..0ef628a3 100644 +index 96e289ef..5d886599 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -342,7 +342,7 @@ Given @@ -75,10 +75,10 @@ index 1047e1b9..00e1c3a9 100644 2.43.0 -From b161727beec2ef474584e7c96d2b2287815daf00 Mon Sep 17 00:00:00 2001 +From 8a2ed1ef7b746359e14ec89657e7d5d9710db431 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 -Subject: [PATCH 02/10] Use new link macros. +Subject: [PATCH 2/9] Use new link macros. --- source/algorithms.tex | 4 +- @@ -98,7 +98,7 @@ Subject: [PATCH 02/10] Use new link macros. source/lex.tex | 6 +- source/lib-intro.tex | 67 +++++----- source/limits.tex | 2 +- - source/numerics.tex | 55 ++++----- + source/numerics.tex | 53 ++++---- source/overloading.tex | 64 +++++----- source/preprocessor.tex | 12 +- source/statements.tex | 30 ++--- @@ -108,7 +108,7 @@ Subject: [PATCH 02/10] Use new link macros. source/threads.tex | 35 +++--- source/time.tex | 10 +- source/utilities.tex | 20 +-- - 27 files changed, 571 insertions(+), 583 deletions(-) + 27 files changed, 570 insertions(+), 582 deletions(-) diff --git a/source/algorithms.tex b/source/algorithms.tex index 95b1a818..450e1200 100644 @@ -133,7 +133,7 @@ index 95b1a818..450e1200 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index 0ef628a3..eeb815cc 100644 +index 5d886599..8e80092a 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -180,7 +180,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -528,7 +528,7 @@ index 766503df..e41b209a 100644 corresponding parameter if the meaning of the program will be unchanged except for the execution of a constructor and destructor for the parameter copy object; diff --git a/source/compatibility.tex b/source/compatibility.tex -index 206e211e..46dcbe79 100644 +index 95ce2830..36345e89 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -2091,8 +2091,8 @@ deallocation functions\iref{expr.new}. @@ -591,7 +591,7 @@ index d1e15a6e..42828a4b 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index 586663f9..862f2004 100644 +index 67febde3..c00c4c86 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -6143,14 +6143,14 @@ namespace std { @@ -721,7 +721,7 @@ index 586663f9..862f2004 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{vector} is referenced. -@@ -10641,7 +10641,7 @@ Unless described below, all operations have the same requirements and +@@ -10638,7 +10638,7 @@ Unless described below, all operations have the same requirements and semantics as the \tcode{vector} primary template, except that operations dealing with the \tcode{bool} value type map to bit values in the container storage and @@ -730,7 +730,7 @@ index 586663f9..862f2004 100644 is not used to construct these values. \pnum -@@ -15847,9 +15847,9 @@ and +@@ -15844,9 +15844,9 @@ and can be used to instantiate \tcode{queue}. In particular, @@ -742,7 +742,7 @@ index 586663f9..862f2004 100644 can be used. \begin{codeblock} -@@ -16204,15 +16204,15 @@ and +@@ -16201,15 +16201,15 @@ and can be used to instantiate \tcode{priority_queue}. In particular, @@ -761,7 +761,7 @@ index 586663f9..862f2004 100644 \begin{codeblock} namespace std { -@@ -16760,10 +16760,10 @@ and +@@ -16757,10 +16757,10 @@ and can be used to instantiate \tcode{stack}. In particular, @@ -776,7 +776,7 @@ index 586663f9..862f2004 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index c231e467..bb44396c 100644 +index 9fba8d40..ea1cca57 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -867,7 +867,7 @@ index c231e467..bb44396c 100644 \end{codeblock} \end{example} A non-static member shall not be designated in a default argument unless -@@ -6379,15 +6378,15 @@ This requires a conversion +@@ -6380,15 +6379,15 @@ This requires a conversion function\iref{class.conv.fct} returning a reference type. \end{footnote} (this conversion is selected by enumerating the applicable conversion @@ -887,7 +887,7 @@ index c231e467..bb44396c 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7923,7 +7922,7 @@ the initializer is +@@ -7924,7 +7923,7 @@ the initializer is where \tcode{get} undergoes argument-dependent lookup\iref{basic.lookup.argdep}. In either case, \tcode{get} is interpreted as a \grammarterm{template-id}. \begin{note} @@ -896,7 +896,7 @@ index c231e467..bb44396c 100644 \end{note} In either case, \exposid{e} is an lvalue if the type of the entity \exposid{e} is an lvalue reference and an xvalue otherwise. -@@ -8074,7 +8073,7 @@ is not looked up and is introduced by +@@ -8075,7 +8074,7 @@ is not looked up and is introduced by the \grammarterm{enum-specifier} or \grammarterm{opaque-enum-declaration}. If the \grammarterm{enum-head-name} of an \grammarterm{opaque-enum-declaration} contains a \grammarterm{nested-name-specifier}, @@ -905,7 +905,7 @@ index c231e467..bb44396c 100644 \pnum \indextext{constant!enumeration}% -@@ -8240,7 +8239,7 @@ and the same values. +@@ -8241,7 +8240,7 @@ and the same values. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -914,7 +914,7 @@ index c231e467..bb44396c 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8523,7 +8522,7 @@ appertains to the namespace being defined or extended. +@@ -8524,7 +8523,7 @@ appertains to the namespace being defined or extended. Members of an inline namespace can be used in most respects as though they were members of the innermost enclosing namespace. Specifically, the inline namespace and its enclosing namespace are both added to the set of associated namespaces used in @@ -923,7 +923,7 @@ index c231e467..bb44396c 100644 and a \grammarterm{using-directive}\iref{namespace.udir} that names the inline namespace is implicitly inserted into the enclosing namespace as for an unnamed namespace\iref{namespace.unnamed}. Furthermore, each -@@ -9356,7 +9355,7 @@ different language linkages are distinct types even if they are +@@ -9357,7 +9356,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -932,7 +932,7 @@ index c231e467..bb44396c 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9686,18 +9685,18 @@ For each individual attribute, the form of the +@@ -9687,18 +9686,18 @@ For each individual attribute, the form of the \pnum In an \grammarterm{attribute-list}, an ellipsis may appear only if that \grammarterm{attribute}'s specification permits it. An \grammarterm{attribute} followed @@ -956,7 +956,7 @@ index c231e467..bb44396c 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9995,7 +9994,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9996,7 +9995,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -966,7 +966,7 @@ index c231e467..bb44396c 100644 No \grammarterm{attribute-argument-clause} shall be present. A fallthrough statement may only appear within diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index 3cf07552..94d32dfb 100644 +index 474319eb..a0ff42d4 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -508,13 +508,13 @@ the current state of \tcode{NDEBUG} each time that @@ -2312,10 +2312,10 @@ index e911e38d..c25de465 100644 \pnum \throws diff --git a/source/iterators.tex b/source/iterators.tex -index 317e6a04..5483c764 100644 +index 8c8469c0..fe0df33f 100644 --- a/source/iterators.tex +++ b/source/iterators.tex -@@ -6860,7 +6860,7 @@ ostream_iterator& operator++(int); +@@ -6746,7 +6746,7 @@ ostream_iterator& operator++(int); The class template \tcode{istreambuf_iterator} @@ -2324,7 +2324,7 @@ index 317e6a04..5483c764 100644 reads successive \textit{characters} from the streambuf for which it was constructed. -@@ -6985,7 +6985,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; +@@ -6871,7 +6871,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; Initializes \tcode{sbuf_} with \keyword{nullptr}. \end{itemdescr} @@ -2332,7 +2332,7 @@ index 317e6a04..5483c764 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(istream_type& s) noexcept; -@@ -6997,7 +6996,6 @@ istreambuf_iterator(istream_type& s) noexcept; +@@ -6883,7 +6882,6 @@ istreambuf_iterator(istream_type& s) noexcept; Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2340,7 +2340,7 @@ index 317e6a04..5483c764 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(streambuf_type* s) noexcept; -@@ -7009,7 +7007,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; +@@ -6895,7 +6893,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; Initializes \tcode{sbuf_} with \tcode{s}. \end{itemdescr} @@ -2348,7 +2348,7 @@ index 317e6a04..5483c764 100644 \indexlibraryctor{istreambuf_iterator}% \begin{itemdecl} istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept; -@@ -7160,7 +7157,6 @@ is not a null pointer. +@@ -7046,7 +7043,6 @@ is not a null pointer. Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. \end{itemdescr} @@ -2626,7 +2626,7 @@ index e0596a32..877f21f3 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index c5f64956..4ca050f7 100644 +index b77ea2c6..cdc2eb06 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -2834,7 +2834,7 @@ index c5f64956..4ca050f7 100644 that array ends, whichever happens first. \end{itemdescr} -@@ -8048,7 +8043,7 @@ places, with zero fill. +@@ -8094,7 +8089,7 @@ places, with zero fill. \pnum \begin{example} If the argument has the value $-2$, @@ -2843,15 +2843,6 @@ index c5f64956..4ca050f7 100644 of the first element of \tcode{*this}; etc. \end{example} \end{itemdescr} -@@ -9173,7 +9168,7 @@ parameter \tcode{T} and its \tcode{reference} type is \tcode{const T\&}. - \pnum - The iterators returned by \tcode{begin} and \tcode{end} for an array - are guaranteed to be valid until the member function --\tcode{resize(size_t, T)}\iref{valarray.members} is called for that -+\libmemberrefx{resize(size_t, T)}{valarray}{resize} is called for that - array or until the lifetime of that array ends, whichever happens - first. - @@ -9618,12 +9613,12 @@ The contents and meaning of the header \libheader{cmath} are a subset of the C standard library header \libheader{math.h} and only the declarations shown in the synopsis above are present, @@ -3286,7 +3277,7 @@ index 1286a236..025af463 100644 \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index 3620c7ad..8cef234d 100644 +index bf6d7fb8..9c659d24 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3394,7 +3385,7 @@ index 3620c7ad..8cef234d 100644 dependent. The result of applying the \tcode{offsetof} macro to a static data member or a function member is undefined. No operation invoked by the \tcode{offsetof} macro shall throw an exception and -@@ -1126,7 +1113,7 @@ the specialization on the unqualified type \tcode{T}. +@@ -1127,7 +1114,7 @@ the specialization on the unqualified type \tcode{T}. \pnum Non-arithmetic standard types, such as @@ -3403,7 +3394,7 @@ index 3620c7ad..8cef234d 100644 \rSec3[numeric.limits.members]{\tcode{numeric_limits} members} -@@ -2133,7 +2120,7 @@ The program is terminated without executing destructors for objects with automat +@@ -2134,7 +2121,7 @@ The program is terminated without executing destructors for objects with automat thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{_Exit}}% @@ -3412,7 +3403,7 @@ index 3620c7ad..8cef234d 100644 \end{itemdescr} \indexlibraryglobal{abort}% -@@ -2153,7 +2140,7 @@ automatic, thread, or static storage +@@ -2154,7 +2141,7 @@ automatic, thread, or static storage duration and without calling functions passed to \tcode{atexit()}\iref{basic.start.term}. \indextext{signal-safe!\idxcode{abort}}% @@ -3421,7 +3412,7 @@ index 3620c7ad..8cef234d 100644 \end{itemdescr} \indexlibraryglobal{atexit}% -@@ -2170,7 +2157,8 @@ The +@@ -2171,7 +2158,8 @@ The functions register the function pointed to by \tcode{f} to be called without arguments at normal program termination. It is unspecified whether a call to \tcode{atexit()} that does not @@ -3431,7 +3422,7 @@ index 3620c7ad..8cef234d 100644 \begin{note} The \tcode{atexit()} functions do not introduce a data race\iref{res.on.data.races}. -@@ -2264,7 +2252,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; +@@ -2265,7 +2253,8 @@ int at_quick_exit(@\exposid{atexit-handler}@* f) noexcept; The \tcode{at_quick_exit()} functions register the function pointed to by \tcode{f} to be called without arguments when \tcode{quick_exit} is called. It is unspecified whether a call to \tcode{at_quick_exit()} that does not @@ -3441,7 +3432,7 @@ index 3620c7ad..8cef234d 100644 \begin{note} The \tcode{at_quick_exit()} functions do not introduce a -@@ -2316,7 +2305,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s +@@ -2317,7 +2306,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s \pnum \remarks \indextext{signal-safe!\idxcode{quick_exit}}% @@ -3450,7 +3441,7 @@ index 3620c7ad..8cef234d 100644 when the functions registered with \tcode{at_quick_exit} are. \end{itemdescr} -@@ -2443,7 +2432,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); +@@ -2444,7 +2433,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3459,7 +3450,7 @@ index 3620c7ad..8cef234d 100644 called by a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -2479,7 +2468,7 @@ a null pointer value, throws +@@ -2480,7 +2469,7 @@ a null pointer value, throws \tcode{bad_alloc}. \item Otherwise, the function calls the current @@ -3468,7 +3459,7 @@ index 3620c7ad..8cef234d 100644 If the called function returns, the loop repeats. \item The loop terminates when an attempt to allocate the requested storage is -@@ -2701,7 +2690,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); +@@ -2702,7 +2691,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); \pnum \effects The @@ -3477,7 +3468,7 @@ index 3620c7ad..8cef234d 100644 called by the array form of a \grammarterm{new-expression}\iref{expr.new} to allocate -@@ -3014,8 +3003,8 @@ versions of \tcode{operator delete}, the C standard library function +@@ -3015,8 +3004,8 @@ versions of \tcode{operator delete}, the C standard library function introduce a data race\iref{res.on.data.races}. Calls to these functions that allocate or deallocate a particular unit of storage shall occur in a single total order, and each such deallocation call @@ -3488,7 +3479,7 @@ index 3620c7ad..8cef234d 100644 \rSec2[alloc.errors]{Storage allocation errors} -@@ -3386,7 +3375,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. +@@ -3387,7 +3376,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. \pnum \remarks @@ -3498,7 +3489,7 @@ index 3620c7ad..8cef234d 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. \end{itemdescr} -@@ -3957,7 +3947,8 @@ the ordinary literal encoding\iref{lex.ccon}. +@@ -3958,7 +3948,8 @@ the ordinary literal encoding\iref{lex.ccon}. \pnum \remarks @@ -3508,7 +3499,7 @@ index 3620c7ad..8cef234d 100644 suitable for conversion and display as a \tcode{wstring}\iref{string.classes,locale.codecvt}. The return value remains valid until the exception object from which -@@ -4108,7 +4099,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread. +@@ -4109,7 +4100,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread. \remarks When \tcode{uncaught_exceptions() > 0}, throwing an exception can result in a call of the function @@ -3517,7 +3508,7 @@ index 3620c7ad..8cef234d 100644 \end{itemdescr} \rSec2[propagation]{Exception propagation} -@@ -4172,8 +4163,9 @@ exception_ptr current_exception() noexcept; +@@ -4173,8 +4164,9 @@ exception_ptr current_exception() noexcept; \begin{itemdescr} \pnum \returns @@ -3529,7 +3520,7 @@ index 3620c7ad..8cef234d 100644 handled exception, or a null \tcode{exception_ptr} object if no exception is being handled. The referenced object shall remain valid at least as long as there is an \tcode{exception_ptr} object that refers to it. -@@ -4759,7 +4751,7 @@ constexpr bool empty() const noexcept; +@@ -4760,7 +4752,7 @@ constexpr bool empty() const noexcept; \pnum The header \libheaderdef{compare} specifies types, objects, and functions for use primarily in connection with @@ -3538,7 +3529,7 @@ index 3620c7ad..8cef234d 100644 \indexlibraryglobal{is_eq}% \indexlibraryglobal{is_neq}% -@@ -6353,7 +6345,7 @@ environment. +@@ -6354,7 +6346,7 @@ environment. \end{note} \pnum @@ -3548,7 +3539,7 @@ index 3620c7ad..8cef234d 100644 calls to the \tcode{setlocale} function or with calls to functions that are affected by the current C locale. The implementation shall behave as if no diff --git a/source/templates.tex b/source/templates.tex -index 92de24e0..f0a5071f 100644 +index 1a3b3d84..a7d3bdbd 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -715,7 +715,7 @@ struct A {}; @@ -3843,7 +3834,7 @@ index 92de24e0..f0a5071f 100644 a function declarator, the program is ill-formed. \begin{example} \begin{codeblock} -@@ -6890,7 +6890,7 @@ decltype(+X2::arr) r2; // OK, type of \tcode{arr} is complete and arr is no +@@ -6890,7 +6890,7 @@ decltype(+X2::arr) r2; // OK, type of \tcode{arr} is complete and \tcode{ar \end{example} \pnum @@ -3967,7 +3958,7 @@ index 92de24e0..f0a5071f 100644 allocation function\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index 1094c686..1abadbfa 100644 +index a898419c..cff3e3f8 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -3979,7 +3970,7 @@ index 1094c686..1abadbfa 100644 and values between threads, as summarized in \tref{thread.summary}. -@@ -7361,7 +7361,7 @@ namespace std { +@@ -7558,7 +7558,7 @@ namespace std { \pnum A mutex object facilitates protection against data races and allows safe synchronization of @@ -3988,7 +3979,7 @@ index 1094c686..1abadbfa 100644 An execution agent \term{owns} a mutex from the time it successfully calls one of the lock functions until it calls unlock. Mutexes can be either recursive or non-recursive, and can grant simultaneous ownership to one or many execution agents. Both -@@ -7405,7 +7405,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on +@@ -7602,7 +7602,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on a single mutex appear to occur in a single total order. \begin{note} This @@ -3997,7 +3988,7 @@ index 1094c686..1abadbfa 100644 mutex. \end{note} \begin{note} -@@ -7485,7 +7485,7 @@ in the absence of contending mutex acquisitions. +@@ -7682,7 +7682,7 @@ in the absence of contending mutex acquisitions. \pnum \sync If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations @@ -4006,7 +3997,7 @@ index 1094c686..1abadbfa 100644 \begin{note} Since \tcode{lock()} does not synchronize with a failed subsequent \tcode{try_lock()}, the visibility rules are weak enough that little would be -@@ -7521,7 +7521,7 @@ Releases the calling thread's ownership of the mutex. +@@ -7718,7 +7718,7 @@ Releases the calling thread's ownership of the mutex. \pnum \sync @@ -4015,7 +4006,7 @@ index 1094c686..1abadbfa 100644 lock operations that obtain ownership on the same object. \pnum -@@ -7942,7 +7942,7 @@ Releases a shared lock on the mutex held by the calling thread. +@@ -8139,7 +8139,7 @@ Releases a shared lock on the mutex held by the calling thread. \pnum \sync @@ -4024,7 +4015,7 @@ index 1094c686..1abadbfa 100644 \tcode{lock()} operations that obtain ownership on the same object. \pnum -@@ -8257,7 +8257,7 @@ namespace std { +@@ -8454,7 +8454,7 @@ namespace std { \pnum An object of type \tcode{lock_guard} controls the ownership of a lockable object within a scope. A \tcode{lock_guard} object maintains ownership of a lockable @@ -4033,7 +4024,7 @@ index 1094c686..1abadbfa 100644 The behavior of a program is undefined if the lockable object referenced by \exposid{pm} does not exist for the entire lifetime of the \tcode{lock_guard} object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} -@@ -8330,7 +8330,7 @@ namespace std { +@@ -8527,7 +8527,7 @@ namespace std { \pnum An object of type \tcode{scoped_lock} controls the ownership of lockable objects within a scope. A \tcode{scoped_lock} object maintains ownership of lockable @@ -4042,7 +4033,7 @@ index 1094c686..1abadbfa 100644 The behavior of a program is undefined if the lockable objects referenced by \exposid{pm} do not exist for the entire lifetime of the \tcode{scoped_lock} object. -@@ -9487,7 +9487,7 @@ earlier returning execution. +@@ -9684,7 +9684,7 @@ earlier returning execution. \pnum \sync For any given \tcode{once_flag}: all active executions occur in a total @@ -4051,7 +4042,7 @@ index 1094c686..1abadbfa 100644 the start of the next one in this total order; and the returning execution synchronizes with the return from all passive executions. -@@ -11462,22 +11462,21 @@ the state object. +@@ -11659,22 +11659,21 @@ the state object. \pnum Calls to functions that successfully set the stored result of a shared @@ -4078,7 +4069,7 @@ index 1094c686..1abadbfa 100644 \begin{note} This explicitly specifies that the result of the shared state is visible in the objects that reference this state in the sense of data race -@@ -11796,8 +11795,8 @@ The class template \tcode{future} defines a type for asynchronous return objects +@@ -11993,8 +11992,8 @@ The class template \tcode{future} defines a type for asynchronous return objects do not share their shared state with other asynchronous return objects. A default-constructed \tcode{future} object has no shared state. A \tcode{future} object with shared state can be created by @@ -4089,7 +4080,7 @@ index 1094c686..1abadbfa 100644 the original asynchronous provider. The result (value or exception) of a \tcode{future} object can be -@@ -12107,7 +12106,7 @@ object has no shared state. A \tcode{shared_future} object with +@@ -12304,7 +12303,7 @@ object has no shared state. A \tcode{shared_future} object with shared state can be created by conversion from a \tcode{future} object and shares its shared state with the @@ -4098,7 +4089,7 @@ index 1094c686..1abadbfa 100644 The result (value or exception) of a \tcode{shared_future} object can be set by calling a respective function on an -@@ -12556,7 +12555,7 @@ block until the associated thread has completed, as if joined, or else time +@@ -12753,7 +12752,7 @@ block until the associated thread has completed, as if joined, or else time out\iref{thread.thread.member}; \item the associated thread completion @@ -4157,7 +4148,7 @@ index 85696ba9..6be9e47e 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index 6936087f..1a4da8e8 100644 +index 363841ec..5ff59eb2 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -117,15 +117,15 @@ namespace std { @@ -4246,11 +4237,11 @@ index 6936087f..1a4da8e8 100644 2.43.0 -From fbef96ef3d80ee6c12a34b23fdbce396bdef68e7 Mon Sep 17 00:00:00 2001 +From 1f73bf8764cec1dbdd9d71c9a39d89980b420620 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 -Subject: [PATCH 03/10] Use cxxdraft-htmlgen macros to annotate non-C++ code - and literal fragments. +Subject: [PATCH 3/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and + literal fragments. --- source/exceptions.tex | 4 +- @@ -5703,10 +5694,10 @@ index 6be9e47e..3d6fb318 100644 2.43.0 -From d7efac8955ecbee7cc939432e7406275d6c1a048 Mon Sep 17 00:00:00 2001 +From 95041ced97f828659691312a4c4edb84d9c8b9df Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 -Subject: [PATCH 04/10] Remove more inappropriate paragraph breaks. +Subject: [PATCH 4/9] Remove more inappropriate paragraph breaks. --- source/algorithms.tex | 4 ---- @@ -5774,7 +5765,7 @@ index 450e1200..c9bac8f9 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index eeb815cc..a3b98a67 100644 +index 8e80092a..6a539945 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -312,7 +312,6 @@ int X::y = 1; // defines \tcode{X::y} @@ -5870,7 +5861,7 @@ index e41b209a..cf834a11 100644 \item If at least one $\tcode{T}_i$ is \tcode{std::partial_ordering}, diff --git a/source/compatibility.tex b/source/compatibility.tex -index 46dcbe79..ad4f4201 100644 +index 36345e89..17d5bcf0 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex @@ -2693,7 +2693,6 @@ Overspecification. @@ -6043,7 +6034,7 @@ index 42828a4b..3e64abc8 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index 862f2004..cb05d8bd 100644 +index c00c4c86..941ffa56 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6101,7 +6092,7 @@ index 862f2004..cb05d8bd 100644 \begin{codeblock} list::iterator it = begin(); advance(it, sz); -@@ -20450,7 +20443,6 @@ For each of +@@ -20447,7 +20440,6 @@ For each of \tcode{stack}, the library provides the following constexpr-enabled formatter specialization where \tcode{\placeholder{adaptor-type}} is the name of the template: @@ -6109,7 +6100,7 @@ index 862f2004..cb05d8bd 100644 \indexlibraryglobal{formatter}% \begin{codeblock} namespace std { -@@ -24713,7 +24705,6 @@ typename A::offset_policy +@@ -24710,7 +24702,6 @@ typename A::offset_policy \pnum \result A type \tcode{OP} such that: @@ -6117,7 +6108,7 @@ index 862f2004..cb05d8bd 100644 \begin{itemize} \item \tcode{OP} meets the accessor policy requirements, -@@ -26158,7 +26149,6 @@ for the $k^\text{th}$ extent of \tcode{src}. +@@ -26155,7 +26146,6 @@ for the $k^\text{th}$ extent of \tcode{src}. \pnum Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: @@ -6125,7 +6116,7 @@ index 862f2004..cb05d8bd 100644 \begin{itemize} \item \tcode{SubExtents::rank()} equals -@@ -26170,7 +26160,6 @@ the type of \tcode{slices...[$k$]} is not a collapsing slice type, +@@ -26167,7 +26157,6 @@ the type of \tcode{slices...[$k$]} is not a collapsing slice type, \tcode{SubExt\-ents::static_extent(\placeholder{MAP_RANK}(slices, $k$))} equals the following, where $\Sigma_k$ denotes the type of \tcode{slices...[$k$]}: @@ -6134,7 +6125,7 @@ index 862f2004..cb05d8bd 100644 \item \tcode{Extents::static_extent($k$)} diff --git a/source/declarations.tex b/source/declarations.tex -index bb44396c..112c5b77 100644 +index ea1cca57..ec72b88d 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1600,7 +1600,6 @@ a partial specialization\iref{temp.spec.partial}, @@ -6161,7 +6152,7 @@ index bb44396c..112c5b77 100644 \begin{codeblock} int a = 1; int f(int); -@@ -5131,7 +5128,6 @@ To +@@ -5132,7 +5129,6 @@ To an object of type \tcode{T} means: @@ -6169,7 +6160,7 @@ index bb44396c..112c5b77 100644 \begin{itemize} \item If -@@ -5341,7 +5337,6 @@ is sequenced before those associated with +@@ -5342,7 +5338,6 @@ is sequenced before those associated with the initialization of the $j^\text{th}$ element. \item Otherwise, if the destination type is a class type: @@ -6177,7 +6168,7 @@ index bb44396c..112c5b77 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -6356,7 +6351,6 @@ a program that necessitates such a binding is ill-formed. +@@ -6357,7 +6352,6 @@ a program that necessitates such a binding is ill-formed. A reference to type ``\cvqual{cv1} \tcode{T1}'' is initialized by an expression of type ``\cvqual{cv2} \tcode{T2}'' as follows:% \indextext{binding!reference} @@ -6185,7 +6176,7 @@ index bb44396c..112c5b77 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6837,7 +6831,6 @@ int j { 1 }; // initialize to 1 +@@ -6838,7 +6832,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -6193,7 +6184,7 @@ index bb44396c..112c5b77 100644 \end{itemize} \pnum -@@ -7933,7 +7926,6 @@ as $\tcode{T}_i$ if the initializer is a prvalue, +@@ -7934,7 +7927,6 @@ as $\tcode{T}_i$ if the initializer is a prvalue, as ``lvalue reference to $\tcode{T}_i$'' if the initializer is an lvalue, or as ``rvalue reference to $\tcode{T}_i$'' otherwise, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -6201,7 +6192,7 @@ index bb44396c..112c5b77 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -8065,7 +8057,6 @@ struct S { +@@ -8066,7 +8058,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6209,7 +6200,7 @@ index bb44396c..112c5b77 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -8161,7 +8152,6 @@ If the underlying +@@ -8162,7 +8153,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6217,7 +6208,7 @@ index bb44396c..112c5b77 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8620,7 +8610,6 @@ void h() { +@@ -8621,7 +8611,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} according to the following grammar: @@ -6225,7 +6216,7 @@ index bb44396c..112c5b77 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8794,7 +8783,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8795,7 +8784,6 @@ not declare functions or function templates, the use of the name is ill-formed\i In particular, the name of a variable, function or enumerator does not hide the name of a class or enumeration declared in a different namespace. For example, @@ -6233,7 +6224,7 @@ index bb44396c..112c5b77 100644 \begin{codeblock} namespace A { class X { }; -@@ -9357,7 +9345,6 @@ otherwise identical. +@@ -9358,7 +9346,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6241,7 +6232,7 @@ index bb44396c..112c5b77 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -10234,7 +10221,6 @@ may be applied to a function or a lambda call operator or +@@ -10235,7 +10222,6 @@ may be applied to a function or a lambda call operator or to the declaration of a class or enumeration. An \grammarterm{attribute-argument-clause} may be present and, if present, shall have the form: @@ -6662,7 +6653,7 @@ index c25de465..42906f91 100644 \item If there are no more entries at the current depth, then if \tcode{depth() != 0} iteration over the parent directory resumes; otherwise \tcode{*this = recursive_directory_iterator()}. diff --git a/source/iterators.tex b/source/iterators.tex -index 5483c764..7cfb8250 100644 +index fe0df33f..ca988324 100644 --- a/source/iterators.tex +++ b/source/iterators.tex @@ -963,7 +963,6 @@ may be declared as \keyword{void}. @@ -6713,7 +6704,7 @@ index 5483c764..7cfb8250 100644 \end{itemdescr} \indexlibrarymember{operator->}{reverse_iterator}% -@@ -4799,7 +4793,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 +@@ -4767,7 +4761,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 vector v2(make_move_iterator(s.begin()), make_move_iterator(s.end())); // moves strings into \tcode{v2} \end{codeblock} @@ -6721,7 +6712,7 @@ index 5483c764..7cfb8250 100644 \end{example} \rSec3[move.iterator]{Class template \tcode{move_iterator}} -@@ -6506,7 +6499,6 @@ partial_sum(istream_iterator(cin), +@@ -6412,7 +6405,6 @@ partial_sum(istream_iterator(cin), istream_iterator(), ostream_iterator(cout, "@\textbackslash@n")); \end{codeblock} @@ -6918,7 +6909,7 @@ index 08052036..2c8f245e 100644 \item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}. diff --git a/source/numerics.tex b/source/numerics.tex -index 4ca050f7..c2cec33b 100644 +index cdc2eb06..f3a7aefd 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); @@ -6945,7 +6936,7 @@ index 4ca050f7..c2cec33b 100644 \begin{itemize} \item By way of initialization, -@@ -8356,7 +8353,6 @@ A unique function with the indicated name can be applied (unqualified) +@@ -8402,7 +8399,6 @@ A unique function with the indicated name can be applied (unqualified) to an operand of type \tcode{T}. This function returns a value of type \tcode{T} or which can be unambiguously implicitly converted to type \tcode{T}. @@ -6953,7 +6944,7 @@ index 4ca050f7..c2cec33b 100644 \end{itemdescr} \rSec3[valarray.special]{Specialized algorithms} -@@ -8372,7 +8368,6 @@ template void swap(valarray& x, valarray& y) noexcept; +@@ -8418,7 +8414,6 @@ template void swap(valarray& x, valarray& y) noexcept; Equivalent to \tcode{x.swap(y)}. \end{itemdescr} @@ -6961,7 +6952,7 @@ index 4ca050f7..c2cec33b 100644 \rSec2[class.slice]{Class \tcode{slice}} \rSec3[class.slice.overview]{Overview} -@@ -8792,7 +8787,6 @@ namespace std { +@@ -8838,7 +8833,6 @@ namespace std { This template is a helper template used by the \tcode{gslice} subscript operator @@ -6969,7 +6960,7 @@ index 4ca050f7..c2cec33b 100644 \indexlibraryglobal{gslice_array}% \indexlibraryglobal{valarray}% \begin{itemdecl} -@@ -8918,7 +8912,6 @@ namespace std { +@@ -8964,7 +8958,6 @@ namespace std { \pnum This template is a helper template used by the mask subscript operator: @@ -6977,7 +6968,7 @@ index 4ca050f7..c2cec33b 100644 \indexlibrarymember{operator[]}{mask_array}% \begin{itemdecl} mask_array valarray::operator[](const valarray&); -@@ -9035,7 +9028,6 @@ namespace std { +@@ -9081,7 +9074,6 @@ namespace std { \pnum This template is a helper template used by the indirect subscript operator @@ -7161,7 +7152,7 @@ index ba13ba06..a4228a22 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 76ce039f..cd57cb1f 100644 +index 6c1b78f6..7ba2bc94 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7228,7 +7219,7 @@ index 76ce039f..cd57cb1f 100644 \begin{codeblock} template concept @\defexposconceptnc{simple-view}@ = // \expos -@@ -5986,7 +5978,6 @@ If \tcode{decltype((F))} does not model +@@ -5858,7 +5850,6 @@ If \tcode{decltype((F))} does not model \tcode{views::take(E, F)} is ill-formed. Otherwise, the expression \tcode{views::take(E, F)} is expression-equivalent to: @@ -7236,7 +7227,7 @@ index 76ce039f..cd57cb1f 100644 \begin{itemize} \item If \tcode{T} is a specialization -@@ -6012,7 +6003,6 @@ then +@@ -5884,7 +5875,6 @@ then ranges::be\-gin(E) + std::min(ranges::distance(E), F))}, except that \tcode{E} is evaluated only once, where \tcode{U} is a type determined as follows: @@ -7244,7 +7235,7 @@ index 76ce039f..cd57cb1f 100644 \begin{itemize} \item if \tcode{T} is a specialization of \tcode{span}, then \tcode{U} is \tcode{span}; -@@ -6474,7 +6464,6 @@ If \tcode{decltype((F))} does not model +@@ -6346,7 +6336,6 @@ If \tcode{decltype((F))} does not model \tcode{views::drop(E, F)} is ill-formed. Otherwise, the expression \tcode{views::drop(E, F)} is expression-equivalent to: @@ -7252,7 +7243,7 @@ index 76ce039f..cd57cb1f 100644 \begin{itemize} \item If \tcode{T} is a specialization of -@@ -7555,7 +7544,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and +@@ -7385,7 +7374,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and \exposid{Base} and \exposid{InnerBase} each model \libconcept{forward_range}. In that case, \tcode{\exposid{iterator}::iterator_category} is defined as follows: @@ -7260,7 +7251,7 @@ index 76ce039f..cd57cb1f 100644 \begin{itemize} \item Let \placeholder{OUTERC} denote -@@ -9881,7 +9869,6 @@ appears in the immediate context of a template instantiation. +@@ -9616,7 +9604,6 @@ appears in the immediate context of a template instantiation. \end{note} Otherwise, \tcode{views::counted(E, F)} is expression-equivalent to: @@ -7281,10 +7272,10 @@ index 7a81a873..ab070cf7 100644 \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are diff --git a/source/support.tex b/source/support.tex -index 8cef234d..ffcaa878 100644 +index 9c659d24..a2c2daac 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -2451,7 +2451,6 @@ This requirement is binding on any replacement versions of these functions. +@@ -2452,7 +2452,6 @@ This requirement is binding on any replacement versions of these functions. \pnum \default @@ -7292,7 +7283,7 @@ index 8cef234d..ffcaa878 100644 \begin{itemize} \item Executes a loop: -@@ -2930,7 +2929,6 @@ Intentionally performs no other action. +@@ -2931,7 +2930,6 @@ Intentionally performs no other action. \pnum \begin{example} This can be useful for constructing an object at a known address: @@ -7300,15 +7291,15 @@ index 8cef234d..ffcaa878 100644 \begin{codeblock} void* place = operator new(sizeof(Something)); Something* p = new (place) Something(); -@@ -4833,7 +4831,6 @@ are collectively termed the \defn{comparison category types}. +@@ -4834,7 +4832,6 @@ are collectively termed the \defn{comparison category types}. Each is specified in terms of an exposition-only data member named \tcode{value} whose value typically corresponds to that of an enumerator from one of the following exposition-only enumerations: - \begin{codeblock} - enum class @\placeholdernc{ord}@ { @\placeholdernc{equal}@ = 0, @\placeholdernc{equivalent}@ = @\placeholdernc{equal}@, @\placeholdernc{less}@ = -1, @\placeholdernc{greater}@ = 1 }; // \expos - enum class @\placeholdernc{ncmp}@ { @\placeholdernc{unordered}@ = -127 }; // \expos -@@ -5791,7 +5788,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and + enum class @\exposidnc{ord}@ { @\exposidnc{equal}@ = 0, @\exposidnc{equivalent}@ = @\exposidnc{equal}@, @\exposidnc{less}@ = -1, @\exposidnc{greater}@ = 1 }; // \expos + enum class @\exposidnc{ncmp}@ { @\exposidnc{unordered}@ = -127 }; // \expos +@@ -5792,7 +5789,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and denotes a type\iref{temp.deduct}, then \tcode{coroutine_traits} has the following publicly accessible member: @@ -7317,7 +7308,7 @@ index 8cef234d..ffcaa878 100644 using promise_type = R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index f0a5071f..a40183bd 100644 +index a7d3bdbd..84dc75d1 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -256,7 +256,6 @@ in some translation unit; no diagnostic is required\ifndrdef{temp.pre.reach.def} @@ -7609,10 +7600,10 @@ index f0a5071f..a40183bd 100644 template struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index 1abadbfa..f5f287c6 100644 +index cff3e3f8..df4e2aa7 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -7417,7 +7417,6 @@ and visible to other threads. +@@ -7614,7 +7614,6 @@ and visible to other threads. \pnum The expression \tcode{m.lock()} is well-formed and has the following semantics: @@ -7620,7 +7611,7 @@ index 1abadbfa..f5f287c6 100644 \begin{itemdescr} \pnum \expects -@@ -7460,7 +7459,6 @@ that a deadlock would occur. +@@ -7657,7 +7656,6 @@ that a deadlock would occur. \pnum The expression \tcode{m.try_lock()} is well-formed and has the following semantics: @@ -7628,7 +7619,7 @@ index 1abadbfa..f5f287c6 100644 \begin{itemdescr} \pnum \expects -@@ -7506,7 +7504,6 @@ Nothing. +@@ -7703,7 +7701,6 @@ Nothing. \pnum The expression \tcode{m.unlock()} is well-formed and has the following semantics: @@ -7636,7 +7627,7 @@ index 1abadbfa..f5f287c6 100644 \begin{itemdescr} \pnum \expects -@@ -7661,7 +7658,6 @@ requirements\iref{thread.req.lockable.timed}. +@@ -7858,7 +7855,6 @@ requirements\iref{thread.req.lockable.timed}. \pnum The expression \tcode{m.try_lock_for(rel_time)} is well-formed and has the following semantics: @@ -7644,7 +7635,7 @@ index 1abadbfa..f5f287c6 100644 \begin{itemdescr} \pnum \expects -@@ -7703,7 +7699,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -7900,7 +7896,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_until(abs_time)} is well-formed and has the following semantics: @@ -7652,7 +7643,7 @@ index 1abadbfa..f5f287c6 100644 \begin{itemdescr} \pnum \expects -@@ -7890,7 +7885,6 @@ shared lock. +@@ -8087,7 +8082,6 @@ shared lock. \pnum The expression \tcode{m.lock_shared()} is well-formed and has the following semantics: @@ -7660,7 +7651,7 @@ index 1abadbfa..f5f287c6 100644 \begin{itemdescr} \pnum \expects -@@ -7927,7 +7921,6 @@ The calling thread has a shared lock on the mutex. +@@ -8124,7 +8118,6 @@ The calling thread has a shared lock on the mutex. \pnum The expression \tcode{m.unlock_shared()} is well-formed and has the following semantics: @@ -7668,7 +7659,7 @@ index 1abadbfa..f5f287c6 100644 \begin{itemdescr} \pnum \expects -@@ -7952,7 +7945,6 @@ Nothing. +@@ -8149,7 +8142,6 @@ Nothing. \pnum The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: @@ -7676,7 +7667,7 @@ index 1abadbfa..f5f287c6 100644 \begin{itemdescr} \pnum \expects -@@ -8055,7 +8047,6 @@ requirements\iref{thread.req.lockable.shared.timed}. +@@ -8252,7 +8244,6 @@ requirements\iref{thread.req.lockable.shared.timed}. \pnum The expression \tcode{m.try_lock_shared_for(rel_time)} is well-formed and has the following semantics: @@ -7684,7 +7675,7 @@ index 1abadbfa..f5f287c6 100644 \begin{itemdescr} \pnum \expects -@@ -8100,7 +8091,6 @@ Timeout-related exceptions\iref{thread.req.timing}. +@@ -8297,7 +8288,6 @@ Timeout-related exceptions\iref{thread.req.timing}. \pnum The expression \tcode{m.try_lock_shared_until(abs_time)} is well-formed and has the following semantics: @@ -7692,7 +7683,7 @@ index 1abadbfa..f5f287c6 100644 \begin{itemdescr} \pnum \expects -@@ -10251,7 +10241,6 @@ template +@@ -10448,7 +10438,6 @@ template \begin{itemdescr} \pnum \effects @@ -7700,7 +7691,7 @@ index 1abadbfa..f5f287c6 100644 \begin{itemize} \item \indextext{block (execution)}% -@@ -11641,7 +11630,6 @@ shared state as \tcode{*this}. +@@ -11838,7 +11827,6 @@ shared state as \tcode{*this}. \pnum \errors @@ -7708,7 +7699,7 @@ index 1abadbfa..f5f287c6 100644 \begin{itemize} \item \tcode{future_already_retrieved} if \tcode{get_future} has already been called on a \tcode{promise} with the same shared state as \tcode{*this}. -@@ -11704,7 +11692,6 @@ already has a stored value or exception. +@@ -11901,7 +11889,6 @@ already has a stored value or exception. \pnum \errors @@ -7716,7 +7707,7 @@ index 1abadbfa..f5f287c6 100644 \begin{itemize} \item \tcode{promise_already_satisfied} if its shared state already has a stored value or exception. -@@ -12044,7 +12031,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e +@@ -12241,7 +12228,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e \pnum \returns @@ -7724,7 +7715,7 @@ index 1abadbfa..f5f287c6 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12388,7 +12374,6 @@ the relative timeout\iref{thread.req.timing} specified by +@@ -12585,7 +12571,6 @@ the relative timeout\iref{thread.req.timing} specified by \pnum \returns @@ -7732,7 +7723,7 @@ index 1abadbfa..f5f287c6 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12423,7 +12408,6 @@ absolute timeout\iref{thread.req.timing} specified by +@@ -12620,7 +12605,6 @@ absolute timeout\iref{thread.req.timing} specified by \pnum \returns @@ -7740,7 +7731,7 @@ index 1abadbfa..f5f287c6 100644 \begin{itemize} \item \tcode{future_status::deferred} if the shared state contains a deferred function. -@@ -12479,7 +12463,6 @@ The further behavior +@@ -12676,7 +12660,6 @@ The further behavior of the second function depends on the \tcode{policy} argument as follows (if more than one of these conditions applies, the implementation may choose any of the corresponding policies): @@ -7899,10 +7890,10 @@ index 3d6fb318..fa754085 100644 \fmtnontermdef{chrono-format-spec}\br \opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs} diff --git a/source/utilities.tex b/source/utilities.tex -index 1a4da8e8..45cc4ec4 100644 +index 5ff59eb2..b5bf1bbb 100644 --- a/source/utilities.tex +++ b/source/utilities.tex -@@ -286,7 +286,6 @@ Exchanges values stored in two locations. +@@ -286,7 +286,6 @@ Exchanges the values of \tcode{a} and \tcode{b}. \pnum \remarks The exception specification is equivalent to: @@ -7962,10 +7953,10 @@ index 1a4da8e8..45cc4ec4 100644 2.43.0 -From 4af424126ca2fb32126301a11debb7e69a55d119 Mon Sep 17 00:00:00 2001 +From 64ab190b04ccd9c732d1b09337f9485e5e543e2f Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 -Subject: [PATCH 05/10] Use monospace font for code in figures. +Subject: [PATCH 5/9] Use monospace font for code in figures. --- source/assets/figdag.dot | 8 ++++---- @@ -8109,22 +8100,22 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From b3d38b42d08ae489c027396b9a357f914f3c0c22 Mon Sep 17 00:00:00 2001 +From 520fc65c9d9503a060684e4eb9b4d250bf5023b0 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 -Subject: [PATCH 06/10] [uaxid] Mark code that's not to be highlighted. +Subject: [PATCH 6/9] [uaxid] Mark code that's not to be highlighted. --- source/uax31.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/uax31.tex b/source/uax31.tex -index 6a13e104..6263535e 100644 +index 6574a486..b500e410 100644 --- a/source/uax31.tex +++ b/source/uax31.tex @@ -35,8 +35,8 @@ where \tcode{} has the XID_Start property, - including the Mathematical Compatability Notation profile. - For \Cpp{} we apply the Mathematical Compatability Notation profile, + including the Mathematical Compatibility Notation profile. + For \Cpp{} we apply the Mathematical Compatibility Notation profile, and we add the character \unicode{005f}{low line}, or \tcode{_}, -to the set of permitted \tcode{} characters. -The \tcode{} set is empty. @@ -8137,10 +8128,10 @@ index 6a13e104..6263535e 100644 2.43.0 -From e0cf280142fe9046599b072d04a2d4953454dabb Mon Sep 17 00:00:00 2001 +From d4cf33790b2d9938861d77a208bc3366e9be21f2 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 -Subject: [PATCH 07/10] Use cxxdraft-htmlgen macros more. +Subject: [PATCH 7/9] Use cxxdraft-htmlgen macros more. --- source/algorithms.tex | 180 +++++++++++++-------------- @@ -8755,7 +8746,7 @@ index 3e64abc8..9efb5afa 100644 invocation of the destructor does not actually throw. \end{note} diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index 94d32dfb..f3b63bf4 100644 +index a0ff42d4..68acab16 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -761,9 +761,9 @@ namespace std { @@ -8821,7 +8812,7 @@ index 94d32dfb..f3b63bf4 100644 \pnum \effects diff --git a/source/exec.tex b/source/exec.tex -index 7ee54f91..3eb08725 100644 +index 2fd6f4f2..4acd1841 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -31,25 +31,25 @@ used in the execution control library. @@ -9868,7 +9859,7 @@ index 2c8f245e..c175f7f6 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index c2cec33b..93b65af3 100644 +index f3a7aefd..59fb4188 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul @@ -10005,10 +9996,10 @@ index 025af463..e7afd872 100644 meets the constexpr iterator requirements\iref{iterator.requirements.general}, whose \tcode{value_type} is the template parameter \tcode{charT}. diff --git a/source/support.tex b/source/support.tex -index ffcaa878..4b5e7791 100644 +index a2c2daac..8720d9ea 100644 --- a/source/support.tex +++ b/source/support.tex -@@ -4113,7 +4113,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. +@@ -4114,7 +4114,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. \pnum \tcode{exception_ptr} meets the requirements of @@ -10017,7 +10008,7 @@ index ffcaa878..4b5e7791 100644 \pnum Two non-null values of type \tcode{exception_ptr} are equivalent and compare equal if and -@@ -4337,7 +4337,7 @@ Let \tcode{U} be \tcode{decay_t}. +@@ -4338,7 +4338,7 @@ Let \tcode{U} be \tcode{decay_t}. \pnum \expects @@ -10027,7 +10018,7 @@ index ffcaa878..4b5e7791 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index f5f287c6..755ffdd6 100644 +index df4e2aa7..17f72189 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10090,7 +10081,7 @@ index f5f287c6..755ffdd6 100644 the following expressions are well-formed, have type \tcode{bool}, and have the specified semantics (\tcode{m} denotes a value of type \tcode{L}, -@@ -4527,7 +4527,7 @@ namespace std { +@@ -4724,7 +4724,7 @@ namespace std { \indexlibraryglobal{atomic}% \pnum The template argument for \tcode{T} shall meet the @@ -10099,7 +10090,7 @@ index f5f287c6..755ffdd6 100644 The program is ill-formed if any of \begin{itemize} \item \tcode{is_trivially_copyable_v}, -@@ -7378,11 +7378,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, +@@ -7575,11 +7575,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, They meet the requirements set out in \ref{thread.mutex.requirements.mutex}. In this description, \tcode{m} denotes an object of a mutex type. \begin{note} @@ -10113,7 +10104,7 @@ index f5f287c6..755ffdd6 100644 If initialization of an object of a mutex type fails, an exception of type \tcode{system_error} is thrown. The mutex types are neither copyable nor movable. -@@ -7651,7 +7651,7 @@ specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} den +@@ -7848,7 +7848,7 @@ specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} den object of a specialization of \tcode{time_point}\iref{time.point}. \begin{note} @@ -10122,7 +10113,7 @@ index f5f287c6..755ffdd6 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -7863,7 +7863,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally +@@ -8060,7 +8060,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally meet the requirements set out below. In this description, \tcode{m} denotes an object of a shared mutex type. \begin{note} @@ -10131,7 +10122,7 @@ index f5f287c6..755ffdd6 100644 requirements\iref{thread.req.lockable.shared}. \end{note} -@@ -8040,7 +8040,7 @@ meet the requirements set out below. In this description, +@@ -8237,7 +8237,7 @@ meet the requirements set out below. In this description, \tcode{abs_time} denotes an object of a specialization of \tcode{time_point}\iref{time.point}. \begin{note} @@ -10140,7 +10131,7 @@ index f5f287c6..755ffdd6 100644 requirements\iref{thread.req.lockable.shared.timed}. \end{note} -@@ -8250,7 +8250,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable +@@ -8447,7 +8447,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable object throughout the \tcode{lock_guard} object's \deflink{lifetime}{basic.life}. The behavior of a program is undefined if the lockable object referenced by \exposid{pm} does not exist for the entire lifetime of the \tcode{lock_guard} @@ -10149,7 +10140,7 @@ index f5f287c6..755ffdd6 100644 requirements\iref{thread.req.lockable.basic}. \indexlibraryctor{lock_guard}% -@@ -8329,12 +8329,12 @@ object. +@@ -8526,12 +8526,12 @@ object. If \tcode{sizeof...(MutexTypes)} is one, let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. \tcode{Mutex} @@ -10164,7 +10155,7 @@ index f5f287c6..755ffdd6 100644 and there is no member \tcode{mutex_type}. \end{itemize} -@@ -8449,17 +8449,17 @@ copyable but are movable. The behavior of a program is undefined if the containe +@@ -8646,17 +8646,17 @@ copyable but are movable. The behavior of a program is undefined if the containe \exposid{pm} is not null and the lockable object pointed to by \exposid{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied @@ -10188,7 +10179,7 @@ index f5f287c6..755ffdd6 100644 \end{note} \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} -@@ -8509,7 +8509,7 @@ unique_lock(mutex_type& m, try_to_lock_t); +@@ -8706,7 +8706,7 @@ unique_lock(mutex_type& m, try_to_lock_t); \begin{itemdescr} \pnum \expects @@ -10197,7 +10188,7 @@ index f5f287c6..755ffdd6 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8551,7 +8551,7 @@ template +@@ -8748,7 +8748,7 @@ template \pnum \expects The supplied \tcode{Mutex} type meets the @@ -10206,7 +10197,7 @@ index f5f287c6..755ffdd6 100644 \pnum \effects -@@ -8573,7 +8573,7 @@ template +@@ -8770,7 +8770,7 @@ template \begin{itemdescr} \pnum \expects @@ -10215,7 +10206,7 @@ index f5f287c6..755ffdd6 100644 \pnum \effects -@@ -8660,7 +8660,7 @@ bool try_lock(); +@@ -8857,7 +8857,7 @@ bool try_lock(); \begin{itemdescr} \pnum \expects @@ -10224,7 +10215,7 @@ index f5f287c6..755ffdd6 100644 requirements\iref{thread.req.lockable.req}. \pnum -@@ -8699,7 +8699,7 @@ template +@@ -8896,7 +8896,7 @@ template \begin{itemdescr} \pnum \expects @@ -10233,7 +10224,7 @@ index f5f287c6..755ffdd6 100644 requirements\iref{thread.req.lockable.timed}. \pnum -@@ -8738,7 +8738,7 @@ template +@@ -8935,7 +8935,7 @@ template \begin{itemdescr} \pnum \expects @@ -10242,7 +10233,7 @@ index f5f287c6..755ffdd6 100644 \pnum \effects -@@ -8931,16 +8931,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type +@@ -9128,16 +9128,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type is undefined if the contained pointer \exposid{pm} is not null and the lockable object pointed to by \exposid{pm} does not exist for the entire remaining lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied @@ -10263,7 +10254,7 @@ index f5f287c6..755ffdd6 100644 requirements\iref{thread.req.lockable.timed}. \end{note} -@@ -9025,7 +9025,7 @@ template +@@ -9222,7 +9222,7 @@ template \begin{itemdescr} \pnum \expects @@ -10272,7 +10263,7 @@ index f5f287c6..755ffdd6 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9049,7 +9049,7 @@ template +@@ -9246,7 +9246,7 @@ template \begin{itemdescr} \pnum \expects @@ -10281,7 +10272,7 @@ index f5f287c6..755ffdd6 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9174,7 +9174,7 @@ template +@@ -9371,7 +9371,7 @@ template \begin{itemdescr} \pnum \expects @@ -10290,7 +10281,7 @@ index f5f287c6..755ffdd6 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9214,7 +9214,7 @@ template +@@ -9411,7 +9411,7 @@ template \begin{itemdescr} \pnum \expects @@ -10299,7 +10290,7 @@ index f5f287c6..755ffdd6 100644 requirements\iref{thread.req.lockable.shared.timed}. \pnum -@@ -9353,7 +9353,7 @@ template int try_lock(L1&, L2&, L3&...); +@@ -9550,7 +9550,7 @@ template int try_lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10308,7 +10299,7 @@ index f5f287c6..755ffdd6 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -9382,7 +9382,7 @@ template void lock(L1&, L2&, L3&...); +@@ -9579,7 +9579,7 @@ template void lock(L1&, L2&, L3&...); \begin{itemdescr} \pnum \expects @@ -10317,7 +10308,7 @@ index f5f287c6..755ffdd6 100644 \begin{note} The \tcode{unique_lock} class template meets these requirements when suitably instantiated. -@@ -10061,7 +10061,7 @@ This can happen if the re-locking of the mutex throws an exception. +@@ -10258,7 +10258,7 @@ This can happen if the re-locking of the mutex throws an exception. \pnum In \ref{thread.condition.condvarany}, template arguments for template parameters named \tcode{Lock} @@ -10326,7 +10317,7 @@ index f5f287c6..755ffdd6 100644 requirements\iref{thread.req.lockable.basic}. \begin{note} All of the standard -@@ -10998,24 +10998,24 @@ execute atomically. +@@ -11195,24 +11195,24 @@ execute atomically. \pnum \tcode{CompletionFunction} shall meet the @@ -10357,7 +10348,7 @@ index f5f287c6..755ffdd6 100644 \indexlibrarymember{max}{barrier}% \begin{itemdecl} -@@ -11510,7 +11510,7 @@ namespace std { +@@ -11707,7 +11707,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10366,7 +10357,7 @@ index f5f287c6..755ffdd6 100644 \pnum The implementation provides the template \tcode{promise} and two specializations, -@@ -11842,7 +11842,7 @@ namespace std { +@@ -12039,7 +12039,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10375,7 +10366,7 @@ index f5f287c6..755ffdd6 100644 \pnum The implementation provides the template \tcode{future} and two specializations, -@@ -12148,7 +12148,7 @@ namespace std { +@@ -12345,7 +12345,7 @@ namespace std { \pnum For the primary template, \tcode{R} shall be an object type that @@ -10384,7 +10375,7 @@ index f5f287c6..755ffdd6 100644 \pnum The implementation provides the template \tcode{shared_future} and two -@@ -13086,7 +13086,7 @@ the expression \tcode{d(ptr)} is valid. +@@ -13283,7 +13283,7 @@ the expression \tcode{d(ptr)} is valid. \pnum \tcode{D} shall meet the requirements for @@ -10393,7 +10384,7 @@ index f5f287c6..755ffdd6 100644 \pnum If \tcode{D} is trivially copyable, -@@ -13144,7 +13144,7 @@ namespace std { +@@ -13341,7 +13341,7 @@ namespace std { \pnum This class meets the requirements of @@ -10402,7 +10393,7 @@ index f5f287c6..755ffdd6 100644 provides regions of RCU protection. \begin{example} \begin{codeblock} -@@ -13292,8 +13292,8 @@ the expression \tcode{d(p)} is well-formed. +@@ -13489,8 +13489,8 @@ the expression \tcode{d(p)} is well-formed. \pnum \expects @@ -10413,7 +10404,7 @@ index f5f287c6..755ffdd6 100644 \pnum \effects -@@ -13487,7 +13487,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. +@@ -13684,7 +13684,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. \pnum \tcode{D} shall meet the requirements for @@ -10636,7 +10627,7 @@ index fa754085..1c4e655a 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index 45cc4ec4..4302fdc4 100644 +index b5bf1bbb..992cd659 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -274,9 +274,9 @@ template @@ -11132,10 +11123,10 @@ index 45cc4ec4..4302fdc4 100644 2.43.0 -From 0a7518c947dde6d96c13b14655fe5bbc858157a7 Mon Sep 17 00:00:00 2001 +From 53640486203f84c898ead4fcbc085103cfdac3ff Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 -Subject: [PATCH 08/10] Remove awkward \linebreaks. +Subject: [PATCH 8/9] Remove awkward \linebreaks. --- source/algorithms.tex | 4 ++-- @@ -11171,7 +11162,7 @@ index b86bfc2a..5b4fb286 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index cb05d8bd..54046ba7 100644 +index 941ffa56..7f6e62cd 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -1461,7 +1461,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. @@ -11218,7 +11209,7 @@ index cb05d8bd..54046ba7 100644 \pnum \returns -@@ -10760,7 +10760,7 @@ template +@@ -10757,7 +10757,7 @@ template \pnum The expression \tcode{\exposid{is-vector-bool-reference}} is \tcode{true} @@ -11227,7 +11218,7 @@ index cb05d8bd..54046ba7 100644 for some type \tcode{Alloc} and \tcode{vector} is not a program-defined specialization. \end{itemdescr} -@@ -12175,7 +12175,7 @@ there is no effect. +@@ -12172,7 +12172,7 @@ there is no effect. Otherwise, let \tcode{r} be \tcode{equal_range(k)}. Constructs an object \tcode{u} of type \tcode{value_type} with \tcode{piecewise_construct, forward_as_tuple(std::forward(k)), @@ -11236,7 +11227,7 @@ index cb05d8bd..54046ba7 100644 If \tcode{equal_range(u.first) == r} is \tcode{false}, the behavior is undefined. Inserts \tcode{u} into \tcode{*this}. -@@ -17936,7 +17936,7 @@ template constexpr pair emplace(Args&&... args); +@@ -17933,7 +17933,7 @@ template constexpr pair emplace(Args&&... args); \pnum \effects Initializes an object \tcode{t} of type \tcode{pair} @@ -11245,7 +11236,7 @@ index cb05d8bd..54046ba7 100644 if the map already contains an element whose key is equivalent to \tcode{t.first}, \tcode{*this} is unchanged. -@@ -18208,7 +18208,7 @@ template +@@ -18205,7 +18205,7 @@ template \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11254,7 +11245,7 @@ index cb05d8bd..54046ba7 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18263,7 +18263,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. +@@ -18260,7 +18260,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. \effects If the map already contains an element \tcode{e} whose key is equivalent to \tcode{k}, @@ -11263,7 +11254,7 @@ index cb05d8bd..54046ba7 100644 Otherwise, equivalent to \begin{codeblock} try_emplace(std::forward(k), std::forward(obj)) -@@ -18893,14 +18893,14 @@ template +@@ -18890,14 +18890,14 @@ template \pnum \effects Equivalent to \tcode{flat_multimap(key_cont, mapped_cont)} and @@ -11280,7 +11271,7 @@ index cb05d8bd..54046ba7 100644 \end{itemdescr} \indexlibraryctor{flat_multimap}% -@@ -23588,7 +23588,7 @@ is representable as a value of type \tcode{index_type.} +@@ -23585,7 +23585,7 @@ is representable as a value of type \tcode{index_type.} \item If \exposid{rank_} is greater than one, then the product of @@ -11289,7 +11280,7 @@ index cb05d8bd..54046ba7 100644 all values \tcode{ext.extent($k$)} with $k$ in the range of \range{1}{\exposid{rank_}} is representable as a value of type \tcode{index_type}. -@@ -23667,7 +23667,7 @@ template +@@ -23664,7 +23664,7 @@ template \item If \exposid{rank_} is greater than \tcode{1} and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11298,7 +11289,7 @@ index cb05d8bd..54046ba7 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(0))) -@@ -23742,7 +23742,7 @@ is \tcode{true}. +@@ -23739,7 +23739,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11307,7 +11298,7 @@ index cb05d8bd..54046ba7 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(0))) -@@ -24150,7 +24150,7 @@ Implementations should not store this value +@@ -24147,7 +24147,7 @@ Implementations should not store this value if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. \begin{note} Using \tcode{extents} @@ -11316,7 +11307,7 @@ index cb05d8bd..54046ba7 100644 would achieve this. \end{note} \end{itemdescr} -@@ -24237,7 +24237,7 @@ is representable as a value of type \tcode{index_type}. +@@ -24234,7 +24234,7 @@ is representable as a value of type \tcode{index_type}. \item If \exposid{rank_} is greater than one, then the product of @@ -11325,7 +11316,7 @@ index cb05d8bd..54046ba7 100644 all values \tcode{ext.extent($k$)} with $k$ in the range of \range{0}{\exposid{rank_} - 1} is representable as a value of type \tcode{index_type}. -@@ -24316,7 +24316,7 @@ template +@@ -24313,7 +24313,7 @@ template \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11334,7 +11325,7 @@ index cb05d8bd..54046ba7 100644 \begin{codeblock} @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) -@@ -24391,7 +24391,7 @@ is \tcode{true}. +@@ -24388,7 +24388,7 @@ is \tcode{true}. \item If \exposid{rank_} is greater than 1 and \tcode{padding_value} does not equal \tcode{dynamic_extent}, @@ -11344,7 +11335,7 @@ index cb05d8bd..54046ba7 100644 @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) diff --git a/source/exec.tex b/source/exec.tex -index 3eb08725..f8d2c299 100644 +index 4acd1841..c6948141 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -3914,7 +3914,7 @@ otherwise, it is expression-equivalent to @@ -11428,7 +11419,7 @@ index c175f7f6..ccf7f156 100644 \item Otherwise, if diff --git a/source/ranges.tex b/source/ranges.tex -index cd57cb1f..0ba91b42 100644 +index 7ba2bc94..57f2c249 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -11440,7 +11431,7 @@ index cd57cb1f..0ba91b42 100644 For example, it is possible for \tcode{ranges::reserve_hint(t)} to be well-defined for an \libconceptx{approximate\-ly_sized_range}{approximately_sized_range} whose -@@ -3697,7 +3697,7 @@ constexpr explicit repeat_view(piecewise_construct_t, +@@ -3665,7 +3665,7 @@ constexpr explicit repeat_view(piecewise_construct_t, Initializes \exposid{value_} with \tcode{make_from_tuple(std::move(value_args))} and @@ -11449,7 +11440,7 @@ index cd57cb1f..0ba91b42 100644 \tcode{make_from_tuple(std::move(bound_args))}. The behavior is undefined if \tcode{Bound} is not \tcode{unreachable_sentinel_t} and -@@ -6018,7 +6018,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} +@@ -5890,7 +5890,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} that models \libconcept{random_access_range} and \libconcept{sized_range}, then \tcode{iota_view(*ranges::begin(E), @@ -11458,7 +11449,7 @@ index cd57cb1f..0ba91b42 100644 except that \tcode{E} is evaluated only once. \item -@@ -6499,7 +6499,7 @@ if \tcode{T} is +@@ -6371,7 +6371,7 @@ if \tcode{T} is a specialization of \tcode{subrange} that models \libconcept{random_access_range} and \libconcept{sized_range}, then @@ -11467,7 +11458,7 @@ index cd57cb1f..0ba91b42 100644 \exposid{to-unsigned-like}(ranges::distance(E) - std::min(ranges::distance(E), F)))}, except that \tcode{E} and \tcode{F} are each evaluated only once. -@@ -7551,7 +7551,7 @@ Let \placeholder{OUTERC} denote +@@ -7381,7 +7381,7 @@ Let \placeholder{OUTERC} denote let \placeholder{INNERC} denote \tcode{iterator_traits<\exposid{InnerIter}>::iterator_category}, and let \placeholder{PATTERNC} denote @@ -11476,7 +11467,7 @@ index cd57cb1f..0ba91b42 100644 \item If \begin{codeblock} -@@ -8062,7 +8062,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); +@@ -7857,7 +7857,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -11485,7 +11476,7 @@ index cd57cb1f..0ba91b42 100644 \end{itemdescr} \rSec3[range.lazy.split.outer]{Class template \tcode{lazy_split_view::\exposid{outer-iterator}}} -@@ -8375,7 +8375,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: +@@ -8162,7 +8162,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: \begin{itemize} \item \tcode{forward_iterator_tag} if @@ -11494,7 +11485,7 @@ index cd57cb1f..0ba91b42 100644 \tcode{\libconcept{derived_from}}; \item otherwise, \tcode{iterator_traits>::iterator_category}. \end{itemize} -@@ -8595,7 +8595,7 @@ constexpr explicit split_view(R&& r, range_value_t e); +@@ -8382,7 +8382,7 @@ constexpr explicit split_view(R&& r, range_value_t e); \pnum \effects Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and @@ -11503,7 +11494,7 @@ index cd57cb1f..0ba91b42 100644 \end{itemdescr} \indexlibrarymember{begin}{split_view} -@@ -9183,7 +9183,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. +@@ -8952,7 +8952,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. \item Otherwise, if \tcode{\exposconcept{all-forward}} is modeled, @@ -11512,7 +11503,7 @@ index cd57cb1f..0ba91b42 100644 \item Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. \end{itemize} -@@ -9209,14 +9209,14 @@ let \tcode{Cs} denote the pack of types +@@ -8978,14 +8978,14 @@ let \tcode{Cs} denote the pack of types \begin{itemize} \item If @@ -11530,7 +11521,7 @@ index cd57cb1f..0ba91b42 100644 \item Otherwise, if \tcode{(\libconcept{derived_from} \&\& ...)} -@@ -9668,11 +9668,11 @@ Let +@@ -9403,11 +9403,11 @@ Let %FIXME This is hard to parse. If \tcode{$i_\tcode{x}$ > $i_\tcode{y}$}, let \tcode{$d_\tcode{y}$} be @@ -11545,7 +11536,7 @@ index cd57cb1f..0ba91b42 100644 for every integer \tcode{$i$} in the range \range{$i_\tcode{y}$ + 1}{$i_\tcode{x}$} if there is any, and -@@ -9715,7 +9715,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul +@@ -9450,7 +9450,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul Let \tcode{$i_\tcode{x}$} denote \tcode{x.\exposid{it_}.index()}, \tcode{$d_\tcode{x}$} be @@ -11554,7 +11545,7 @@ index cd57cb1f..0ba91b42 100644 Let \tcode{$s$} denote the sum of the sizes of all the ranges \tcode{std::get<$i$>(x.\exposid{parent_}->\exposid{views_})} for every integer \tcode{$i$} in the range -@@ -9872,7 +9872,7 @@ is expression-equivalent to: +@@ -9607,7 +9607,7 @@ is expression-equivalent to: \begin{itemize} \item If \tcode{T} models \libconcept{contiguous_iterator}, @@ -11563,7 +11554,7 @@ index cd57cb1f..0ba91b42 100644 \item Otherwise, if \tcode{T} models \libconcept{random_access_iterator}, -@@ -13581,7 +13581,7 @@ is defined as follows: +@@ -13156,7 +13156,7 @@ is defined as follows: \item If \tcode{invoke_result_t<\exposid{maybe-const}\&, \exposid{REPEAT}(range_reference_t<\exposid{Base}>, N)...>} @@ -11572,7 +11563,7 @@ index cd57cb1f..0ba91b42 100644 \tcode{iterator_category} denotes \tcode{input_iterator_tag}. \item Otherwise, let \tcode{C} denote the type -@@ -14692,7 +14692,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ +@@ -14235,7 +14235,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ \effects Initializes \exposid{current_} with \tcode{current}, \exposid{end_} with \tcode{ranges::end(parent->\exposid{base_})}, @@ -11582,10 +11573,10 @@ index cd57cb1f..0ba91b42 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index 755ffdd6..6b4d53eb 100644 +index 17f72189..0f0980fa 100644 --- a/source/threads.tex +++ b/source/threads.tex -@@ -3513,7 +3513,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, +@@ -3710,7 +3710,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11594,7 +11585,7 @@ index 755ffdd6..6b4d53eb 100644 \pnum \effects -@@ -4820,7 +4820,7 @@ For the \tcode{volatile} overload of this function, +@@ -5017,7 +5017,7 @@ For the \tcode{volatile} overload of this function, \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11603,7 +11594,7 @@ index 755ffdd6..6b4d53eb 100644 \pnum \effects -@@ -6357,7 +6357,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de +@@ -6554,7 +6554,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11612,7 +11603,7 @@ index 755ffdd6..6b4d53eb 100644 \pnum \effects -@@ -6673,7 +6673,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire +@@ -6870,7 +6870,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire \tcode{failure} is \tcode{memory_order::relaxed}, \tcode{memory_order::acquire}, or @@ -11622,7 +11613,7 @@ index 755ffdd6..6b4d53eb 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index 4302fdc4..840f6d0f 100644 +index 992cd659..f66da74f 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -2354,7 +2354,7 @@ equals \tcode{tuple_size_v>}, @@ -11665,10 +11656,10 @@ index 4302fdc4..840f6d0f 100644 2.43.0 -From 427dc2cb2d3bd39484de96f26105ca772c421619 Mon Sep 17 00:00:00 2001 +From 67f3d50379d39456d20aafc52fd73cae208c96b3 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 25 Dec 2025 12:43:53 +0100 -Subject: [PATCH 09/10] Use \literalterminal more. +Subject: [PATCH 9/9] Use \literalterminal more. --- source/lex.tex | 22 +++++++++++----------- @@ -11748,30 +11739,3 @@ index ade495a0..04f25c1d 100644 -- 2.43.0 - -From 529f4081a310c72e8e31b6100c204f41f00d28f3 Mon Sep 17 00:00:00 2001 -From: Eisenwave -Date: Wed, 15 Jul 2026 21:34:34 +0200 -Subject: [PATCH 10/10] [syserr.fmt] Replace \unicode with \ucode to render - U+FFFD - ---- - source/diagnostics.tex | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index f3b63bf4..b93bb1dc 100644 ---- a/source/diagnostics.tex -+++ b/source/diagnostics.tex -@@ -1309,7 +1309,7 @@ If \tcode{charT} is \tcode{char} and the ordinary literal encoding is UTF-8, - then let \tcode{msg} be \tcode{ec.message()} transcoded to UTF-8 - with maximal subparts of ill-formed subsequences - substituted with \unicode{fffd}{replacement character} --per the Unicode Standard, Chapter 3.9 \unicode{fffd} Substi\-tution in Conversion. -+per the Unicode Standard, Chapter 3.9 \ucode{fffd} Substi\-tution in Conversion. - \item - Otherwise, let \tcode{msg} be \tcode{ec.message()} - transcoded to an --- -2.43.0 - diff --git a/lastbuild.sig b/lastbuild.sig index bfec191846..ec38c286da 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ htmlgen fa47c53345fbb32375bd3d54a1b64452cb5bbef4 -draft 254debad796f8f4a544b20561a14cf7630b8c69c -a23d324a4b920a0e9f83ddfc68842abf5b350897 htmlgen.patch +draft 85a72ebc3b426fc055303d6896a21c88c423552d +2a83c43c343aa28ffb65b8ca1322216c15d833f3 htmlgen.patch From 0607cd28cd860396cefb7a2d31c07e1cfc1d03fa Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Thu, 30 Jul 2026 23:40:18 -0500 Subject: [PATCH 33/36] Update --- cxxdraft-htmlgen | 2 +- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 321 ++++++++++++++++++++++++++--------------------- lastbuild.sig | 6 +- 5 files changed, 181 insertions(+), 152 deletions(-) diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen index fa47c53345..6cebd0499f 160000 --- a/cxxdraft-htmlgen +++ b/cxxdraft-htmlgen @@ -1 +1 @@ -Subproject commit fa47c53345fbb32375bd3d54a1b64452cb5bbef4 +Subproject commit 6cebd0499f9b9c423913e8e6aace8f63a7016b04 diff --git a/draft b/draft index 85a72ebc3b..594a0583bd 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 85a72ebc3b426fc055303d6896a21c88c423552d +Subproject commit 594a0583bdc3b2921b38dbb0e8186c819148ad7a diff --git a/gh-pages b/gh-pages index 2145e11a1b..c1a99f5fc0 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 2145e11a1b94ae722d45614083b1811a4a5d8f26 +Subproject commit c1a99f5fc0c84a926aff8f1d8826b5b25dd81955 diff --git a/htmlgen.patch b/htmlgen.patch index a728233f28..927cbf5392 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From aa9a838f0c15cd9c3ad933e79f72da31e8e96231 Mon Sep 17 00:00:00 2001 +From c982b3cac0792448de27dce5f58a85ddf9e3ef34 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on @@ -10,7 +10,7 @@ Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index 96e289ef..5d886599 100644 +index 7fa8b01b..839e6202 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -342,7 +342,7 @@ Given @@ -59,7 +59,7 @@ index 96e289ef..5d886599 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index 1047e1b9..00e1c3a9 100644 +index f1e33317..6be82426 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2989,7 +2989,7 @@ struct s2 { @@ -75,7 +75,7 @@ index 1047e1b9..00e1c3a9 100644 2.43.0 -From 8a2ed1ef7b746359e14ec89657e7d5d9710db431 Mon Sep 17 00:00:00 2001 +From ace6cd67567d398fa09fa10d236cc13d015565b1 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 Subject: [PATCH 2/9] Use new link macros. @@ -133,7 +133,7 @@ index 95b1a818..450e1200 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index 5d886599..8e80092a 100644 +index 839e6202..52b33d73 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -180,7 +180,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -396,7 +396,7 @@ index 5d886599..8e80092a 100644 \rSec2[basic.types.trivial]{Trivially copyable types} -@@ -5978,7 +5977,7 @@ ordinary pointers to objects or functions. +@@ -5973,7 +5972,7 @@ ordinary pointers to objects or functions. which identify members of a given type within objects of a given class, \ref{dcl.mptr}. Pointers to data members and pointers to member functions are collectively @@ -405,7 +405,7 @@ index 5d886599..8e80092a 100644 \end{itemize} \pnum -@@ -6056,7 +6055,7 @@ layout-compatible types shall +@@ -6051,7 +6050,7 @@ layout-compatible types shall have the same value representation and alignment requirements\iref{basic.align}. \begin{note} @@ -414,7 +414,7 @@ index 5d886599..8e80092a 100644 representation, but their range of valid values is restricted by the extended alignment requirement. \end{note} -@@ -6405,8 +6404,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. +@@ -6400,8 +6399,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. \indextext{program execution|(} \pnum @@ -425,7 +425,7 @@ index 5d886599..8e80092a 100644 block. Such an object exists and retains its last-stored value during the execution of the block and while the block is suspended (by a call of a function, suspension of a coroutine\iref{expr.await}, or receipt of a signal). -@@ -6451,7 +6450,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, +@@ -6446,7 +6445,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, the initialization of the entities captured by copy and the constituent expressions of the \grammarterm{initializer} of the \grammarterm{init-capture}{s}, \item @@ -434,7 +434,7 @@ index 5d886599..8e80092a 100644 the constituent expressions of each default argument\iref{dcl.fct.default} used in the call, and \item -@@ -6482,7 +6481,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope +@@ -6477,7 +6476,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope A \defn{full-expression} is \begin{itemize} \item @@ -444,7 +444,7 @@ index 5d886599..8e80092a 100644 a \grammarterm{constant-expression}\iref{expr.const.core}, \item diff --git a/source/classes.tex b/source/classes.tex -index 766503df..e41b209a 100644 +index 2349cbc8..f1fc3a66 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -188,10 +188,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: @@ -591,10 +591,10 @@ index d1e15a6e..42828a4b 100644 \rSec2[concept.default.init]{Concept \cname{default_initializable}} diff --git a/source/containers.tex b/source/containers.tex -index 67febde3..c00c4c86 100644 +index 5e4ba772..2d6290b2 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -6143,14 +6143,14 @@ namespace std { +@@ -6144,14 +6144,14 @@ namespace std { \indextext{\idxcode{array}!contiguous storage}% The header \libheader{array} defines a class template for storing fixed-size sequences of objects. @@ -611,7 +611,7 @@ index 67febde3..c00c4c86 100644 list-initialized with up to \tcode{N} elements whose types are convertible to \tcode{T}. -@@ -6161,8 +6161,8 @@ of a container\iref{container.reqmts} and +@@ -6162,8 +6162,8 @@ of a container\iref{container.reqmts} and of a reversible container\iref{container.rev.reqmts}, except that a default constructed \tcode{array} object is not empty if $\tcode{N} > 0$. @@ -622,7 +622,7 @@ index 67febde3..c00c4c86 100644 Descriptions are provided here only for operations on \tcode{array} that are not described in one of these tables and -@@ -6172,7 +6172,7 @@ for operations where there is additional semantic information. +@@ -6173,7 +6173,7 @@ for operations where there is additional semantic information. \tcode{array} is a structural type\iref{term.structural.type} if \tcode{T} is a structural type. Two values \tcode{a1} and \tcode{a2} of type \tcode{array} @@ -631,7 +631,7 @@ index 67febde3..c00c4c86 100644 each pair of corresponding elements in \tcode{a1} and \tcode{a2} are template-argument-equivalent. -@@ -6497,7 +6497,7 @@ namespace std { +@@ -6498,7 +6498,7 @@ namespace std { A \indexlibraryglobal{deque}% \tcode{deque} @@ -640,7 +640,7 @@ index 67febde3..c00c4c86 100644 In addition, it supports constant time insert and erase operations at the beginning or the end; insert and erase in the middle take linear time. That is, a deque is especially optimized for pushing and popping elements at the beginning and end. -@@ -7162,7 +7162,7 @@ namespace std { +@@ -7163,7 +7163,7 @@ namespace std { \pnum An incomplete type \tcode{T} may be used when instantiating \tcode{forward_list} if the allocator meets the @@ -649,7 +649,7 @@ index 67febde3..c00c4c86 100644 \tcode{T} shall be complete before any member of the resulting specialization of \tcode{forward_list} is referenced. -@@ -7746,7 +7746,7 @@ predicate. +@@ -7747,7 +7747,7 @@ predicate. \pnum \remarks @@ -658,7 +658,7 @@ index 67febde3..c00c4c86 100644 \end{itemdescr} \indexlibrarymember{unique}{forward_list}% -@@ -7851,7 +7851,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( +@@ -7852,7 +7852,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( \pnum \remarks @@ -776,7 +776,7 @@ index 67febde3..c00c4c86 100644 \rSec3[stack.defn]{Definition} diff --git a/source/declarations.tex b/source/declarations.tex -index 9fba8d40..ea1cca57 100644 +index d3821deb..7dd1bc59 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. @@ -867,7 +867,7 @@ index 9fba8d40..ea1cca57 100644 \end{codeblock} \end{example} A non-static member shall not be designated in a default argument unless -@@ -6380,15 +6379,15 @@ This requires a conversion +@@ -6379,15 +6378,15 @@ This requires a conversion function\iref{class.conv.fct} returning a reference type. \end{footnote} (this conversion is selected by enumerating the applicable conversion @@ -887,7 +887,7 @@ index 9fba8d40..ea1cca57 100644 conversions are not needed, and therefore are suppressed, when such direct bindings to lvalues are done. \end{note} -@@ -7924,7 +7923,7 @@ the initializer is +@@ -7927,7 +7926,7 @@ the initializer is where \tcode{get} undergoes argument-dependent lookup\iref{basic.lookup.argdep}. In either case, \tcode{get} is interpreted as a \grammarterm{template-id}. \begin{note} @@ -896,7 +896,7 @@ index 9fba8d40..ea1cca57 100644 \end{note} In either case, \exposid{e} is an lvalue if the type of the entity \exposid{e} is an lvalue reference and an xvalue otherwise. -@@ -8075,7 +8074,7 @@ is not looked up and is introduced by +@@ -8078,7 +8077,7 @@ is not looked up and is introduced by the \grammarterm{enum-specifier} or \grammarterm{opaque-enum-declaration}. If the \grammarterm{enum-head-name} of an \grammarterm{opaque-enum-declaration} contains a \grammarterm{nested-name-specifier}, @@ -905,7 +905,7 @@ index 9fba8d40..ea1cca57 100644 \pnum \indextext{constant!enumeration}% -@@ -8241,7 +8240,7 @@ and the same values. +@@ -8244,7 +8243,7 @@ and the same values. \pnum The value of an enumerator or an object of an unscoped enumeration type is @@ -914,7 +914,7 @@ index 9fba8d40..ea1cca57 100644 \begin{example} \begin{codeblock} enum color { red, yellow, green=20, blue }; -@@ -8524,7 +8523,7 @@ appertains to the namespace being defined or extended. +@@ -8527,7 +8526,7 @@ appertains to the namespace being defined or extended. Members of an inline namespace can be used in most respects as though they were members of the innermost enclosing namespace. Specifically, the inline namespace and its enclosing namespace are both added to the set of associated namespaces used in @@ -923,7 +923,7 @@ index 9fba8d40..ea1cca57 100644 and a \grammarterm{using-directive}\iref{namespace.udir} that names the inline namespace is implicitly inserted into the enclosing namespace as for an unnamed namespace\iref{namespace.unnamed}. Furthermore, each -@@ -9357,7 +9356,7 @@ different language linkages are distinct types even if they are +@@ -9360,7 +9359,7 @@ different language linkages are distinct types even if they are otherwise identical. \pnum @@ -932,7 +932,7 @@ index 9fba8d40..ea1cca57 100644 be achieved using a \grammarterm{linkage-specification}: \indextext{\idxgram{linkage-specification}}% -@@ -9687,18 +9686,18 @@ For each individual attribute, the form of the +@@ -9690,18 +9689,18 @@ For each individual attribute, the form of the \pnum In an \grammarterm{attribute-list}, an ellipsis may appear only if that \grammarterm{attribute}'s specification permits it. An \grammarterm{attribute} followed @@ -956,7 +956,7 @@ index 9fba8d40..ea1cca57 100644 \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional requirements on the \grammarterm{attribute-argument-clause} (if any). -@@ -9996,7 +9995,7 @@ unless the implementation can issue such diagnostic messages. +@@ -9999,7 +9998,7 @@ unless the implementation can issue such diagnostic messages. \pnum The \grammarterm{attribute-token} \tcode{fallthrough} @@ -966,7 +966,7 @@ index 9fba8d40..ea1cca57 100644 No \grammarterm{attribute-argument-clause} shall be present. A fallthrough statement may only appear within diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index 474319eb..a0ff42d4 100644 +index cd913a8e..89419def 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -508,13 +508,13 @@ the current state of \tcode{NDEBUG} each time that @@ -1135,7 +1135,7 @@ index 23e143e1..be584f9d 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index 00e1c3a9..19764696 100644 +index 6be82426..788a608b 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1884,19 +1884,19 @@ index 00e1c3a9..19764696 100644 \end{note} \pnum -@@ -9903,7 +9905,9 @@ A function or variable is +@@ -9904,7 +9906,9 @@ A function or variable is if it is: \begin{itemize} \item -a constexpr function that is named by an expression\iref{basic.def.odr} -+a constexpr function that -+\deflinkx{is named by}{function!named by expression or conversion}{basic.def.odr} ++a constexpr function that is ++\deflinkx{named by}{function!named by expression or conversion}{basic.def.odr} +an expression - that is potentially constant evaluated, or + that is potentially constant-evaluated, or \item diff --git a/source/future.tex b/source/future.tex -index 2c50628c..fc3ccf5a 100644 +index 38948be5..c594ef17 100644 --- a/source/future.tex +++ b/source/future.tex @@ -14,7 +14,7 @@ is defined as: @@ -1992,7 +1992,7 @@ index 3e24d06d..b5e513df 100644 translation units to form a complete \Cpp{} program\iref{lex.phases}.% \indextext{conformance requirements!library|)} diff --git a/source/iostreams.tex b/source/iostreams.tex -index e911e38d..c25de465 100644 +index fd97be24..63a429d3 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -558,7 +558,7 @@ is initialized, @@ -2626,7 +2626,7 @@ index e0596a32..877f21f3 100644 Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. diff --git a/source/numerics.tex b/source/numerics.tex -index b77ea2c6..cdc2eb06 100644 +index f228a4ed..935afa2b 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. @@ -2869,7 +2869,7 @@ index b77ea2c6..cdc2eb06 100644 Allowing arguments that can be promoted to \tcode{int} provides compatibility with C. diff --git a/source/overloading.tex b/source/overloading.tex -index d49ef098..a1fdfd80 100644 +index d25bf7fe..869dca71 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -74,7 +74,7 @@ Overload resolution selects the function to call in seven distinct @@ -3068,7 +3068,7 @@ index d49ef098..a1fdfd80 100644 \item the return value of a function, operator function, or conversion\iref{stmt.return}, \item -@@ -3403,8 +3403,8 @@ The operators +@@ -3407,8 +3407,8 @@ The operators and \tcode{[]} are formed from more than one token. @@ -3079,7 +3079,7 @@ index d49ef098..a1fdfd80 100644 \end{note} \indextext{operator!subscripting}% \indextext{operator!function call}% -@@ -3500,7 +3500,7 @@ this is not required by operator functions. +@@ -3504,7 +3504,7 @@ this is not required by operator functions. \pnum \indextext{argument!overloaded operator and default}% @@ -3088,7 +3088,7 @@ index d49ef098..a1fdfd80 100644 except where explicitly stated below. Operator functions cannot have more or fewer parameters than the -@@ -3945,7 +3945,7 @@ to not be included in the set of candidate functions. +@@ -3949,7 +3949,7 @@ to not be included in the set of candidate functions. In this subclause, the term \defn{promoted integral type} is used to refer to those cv-unqualified integral types which are preserved by @@ -3277,7 +3277,7 @@ index 1286a236..025af463 100644 \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index bf6d7fb8..9c659d24 100644 +index 9eeaba14..f77a170a 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3539,7 +3539,7 @@ index bf6d7fb8..9c659d24 100644 calls to the \tcode{setlocale} function or with calls to functions that are affected by the current C locale. The implementation shall behave as if no diff --git a/source/templates.tex b/source/templates.tex -index 1a3b3d84..a7d3bdbd 100644 +index e9dc7b7d..5e28e1d9 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -715,7 +715,7 @@ struct A {}; @@ -4148,7 +4148,7 @@ index 85696ba9..6be9e47e 100644 \pnum \returns diff --git a/source/utilities.tex b/source/utilities.tex -index 363841ec..5ff59eb2 100644 +index 0c500de2..68918746 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -117,15 +117,15 @@ namespace std { @@ -4237,7 +4237,7 @@ index 363841ec..5ff59eb2 100644 2.43.0 -From 1f73bf8764cec1dbdd9d71c9a39d89980b420620 Mon Sep 17 00:00:00 2001 +From 18ab81e191d3a401b9a61d8c631ac0c814ae7852 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 Subject: [PATCH 3/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and @@ -4245,9 +4245,9 @@ Subject: [PATCH 3/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and --- source/exceptions.tex | 4 +- - source/lex.tex | 182 +++++++-------- + source/lex.tex | 204 ++++++++--------- source/time.tex | 518 +++++++++++++++++++++--------------------- - 3 files changed, 352 insertions(+), 352 deletions(-) + 3 files changed, 363 insertions(+), 363 deletions(-) diff --git a/source/exceptions.tex b/source/exceptions.tex index be584f9d..bab8b5b0 100644 @@ -4268,7 +4268,7 @@ index be584f9d..bab8b5b0 100644 \pnum diff --git a/source/lex.tex b/source/lex.tex -index 3c9f22b7..ade495a0 100644 +index 3c9f22b7..2946bff3 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -336,43 +336,43 @@ the numerical value has no other meaning in this context. @@ -4580,6 +4580,35 @@ index 3c9f22b7..ade495a0 100644 \end{bnf} \begin{bnf} +@@ -1657,17 +1657,17 @@ is supported for compatibility with \CppXIV{} and C. + {lll} + \topline + \lhdrx{2}{character} & \rhdr{\grammarterm{simple-escape-sequence}} \\ \capsep +-\ucode{000a} & \uname{line feed} & \tcode{\textbackslash n} \\ +-\ucode{0009} & \uname{character tabulation} & \tcode{\textbackslash t} \\ +-\ucode{000b} & \uname{line tabulation} & \tcode{\textbackslash v} \\ +-\ucode{0008} & \uname{backspace} & \tcode{\textbackslash b} \\ +-\ucode{000d} & \uname{carriage return} & \tcode{\textbackslash r} \\ +-\ucode{000c} & \uname{form feed} & \tcode{\textbackslash f} \\ +-\ucode{0007} & \uname{alert} & \tcode{\textbackslash a} \\ +-\ucode{005c} & \uname{reverse solidus} & \tcode{\textbackslash\textbackslash} \\ +-\ucode{003f} & \uname{question mark} & \tcode{\textbackslash ?} \\ +-\ucode{0027} & \uname{apostrophe} & \tcode{\textbackslash '} \\ +-\ucode{0022} & \uname{quotation mark} & \tcode{\textbackslash "} \\ ++\ucode{000a} & \uname{line feed} & \literaltcode{\textbackslash n} \\ ++\ucode{0009} & \uname{character tabulation} & \literaltcode{\textbackslash t} \\ ++\ucode{000b} & \uname{line tabulation} & \literaltcode{\textbackslash v} \\ ++\ucode{0008} & \uname{backspace} & \literaltcode{\textbackslash b} \\ ++\ucode{000d} & \uname{carriage return} & \literaltcode{\textbackslash r} \\ ++\ucode{000c} & \uname{form feed} & \literaltcode{\textbackslash f} \\ ++\ucode{0007} & \uname{alert} & \literaltcode{\textbackslash a} \\ ++\ucode{005c} & \uname{reverse solidus} & \literaltcode{\textbackslash\textbackslash} \\ ++\ucode{003f} & \uname{question mark} & \literaltcode{\textbackslash ?} \\ ++\ucode{0027} & \uname{apostrophe} & \literaltcode{\textbackslash '} \\ ++\ucode{0022} & \uname{quotation mark} & \literaltcode{\textbackslash "} \\ + \end{floattable} + + \rSec2[lex.fcon]{Floating-point literals} @@ -1693,42 +1693,42 @@ is supported for compatibility with \CppXIV{} and C. \begin{bnf} @@ -5694,7 +5723,7 @@ index 6be9e47e..3d6fb318 100644 2.43.0 -From 95041ced97f828659691312a4c4edb84d9c8b9df Mon Sep 17 00:00:00 2001 +From 8edb03cb86411dd937dcc8900a59f27255acd559 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 Subject: [PATCH 4/9] Remove more inappropriate paragraph breaks. @@ -5765,7 +5794,7 @@ index 450e1200..c9bac8f9 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index 8e80092a..6a539945 100644 +index 52b33d73..65f7683d 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -312,7 +312,6 @@ int X::y = 1; // defines \tcode{X::y} @@ -5784,7 +5813,7 @@ index 8e80092a..6a539945 100644 \begin{itemize} \item If \tcode{D} is a class with an implicitly-declared constructor\iref{class.default.ctor,class.copy.ctor}, -@@ -6292,7 +6290,6 @@ has the top-level cv-qualifier \keyword{volatile}. +@@ -6287,7 +6285,6 @@ has the top-level cv-qualifier \keyword{volatile}. \pnum Every integer type has an \term{integer conversion rank} defined as follows: @@ -5793,7 +5822,7 @@ index 8e80092a..6a539945 100644 \item No two signed integer types have the same rank, even if they have diff --git a/source/classes.tex b/source/classes.tex -index e41b209a..cf834a11 100644 +index f1fc3a66..6bce9473 100644 --- a/source/classes.tex +++ b/source/classes.tex @@ -1640,7 +1640,6 @@ for each non-static data member of @@ -6034,7 +6063,7 @@ index 42828a4b..3e64abc8 100644 \item \tcode{comp(a, b) \&\& comp(b, c)} diff --git a/source/containers.tex b/source/containers.tex -index c00c4c86..941ffa56 100644 +index 2d6290b2..d8ea438f 100644 --- a/source/containers.tex +++ b/source/containers.tex @@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. @@ -6061,7 +6090,7 @@ index c00c4c86..941ffa56 100644 \begin{itemize} \item \tcode{T} is \defnx{\oldconcept{DefaultInsertable} into \tcode{X}} -@@ -4057,14 +4054,12 @@ such that distance from +@@ -4058,14 +4055,12 @@ such that distance from to \tcode{j} is positive, the following condition holds: @@ -6076,7 +6105,7 @@ index c00c4c86..941ffa56 100644 \begin{codeblock} value_comp(*i, *j) != false \end{codeblock} -@@ -6082,7 +6077,6 @@ define class templates that meet the requirements for sequence containers. +@@ -6083,7 +6078,6 @@ define class templates that meet the requirements for sequence containers. \pnum The following exposition-only alias template may appear in deduction guides for sequence containers: @@ -6125,7 +6154,7 @@ index c00c4c86..941ffa56 100644 \item \tcode{Extents::static_extent($k$)} diff --git a/source/declarations.tex b/source/declarations.tex -index ea1cca57..ec72b88d 100644 +index 7dd1bc59..0ae48b34 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1600,7 +1600,6 @@ a partial specialization\iref{temp.spec.partial}, @@ -6152,7 +6181,7 @@ index ea1cca57..ec72b88d 100644 \begin{codeblock} int a = 1; int f(int); -@@ -5132,7 +5129,6 @@ To +@@ -5131,7 +5128,6 @@ To an object of type \tcode{T} means: @@ -6160,7 +6189,7 @@ index ea1cca57..ec72b88d 100644 \begin{itemize} \item If -@@ -5342,7 +5338,6 @@ is sequenced before those associated with +@@ -5341,7 +5337,6 @@ is sequenced before those associated with the initialization of the $j^\text{th}$ element. \item Otherwise, if the destination type is a class type: @@ -6168,7 +6197,7 @@ index ea1cca57..ec72b88d 100644 \begin{itemize} \item If the initializer expression is a prvalue -@@ -6357,7 +6352,6 @@ a program that necessitates such a binding is ill-formed. +@@ -6356,7 +6351,6 @@ a program that necessitates such a binding is ill-formed. A reference to type ``\cvqual{cv1} \tcode{T1}'' is initialized by an expression of type ``\cvqual{cv2} \tcode{T2}'' as follows:% \indextext{binding!reference} @@ -6176,7 +6205,7 @@ index ea1cca57..ec72b88d 100644 \begin{itemize} \item If the reference is an lvalue reference and the initializer expression -@@ -6838,7 +6832,6 @@ int j { 1 }; // initialize to 1 +@@ -6841,7 +6835,6 @@ int j { 1 }; // initialize to 1 int k { }; // initialize to 0 \end{codeblock} \end{example} @@ -6184,7 +6213,7 @@ index ea1cca57..ec72b88d 100644 \end{itemize} \pnum -@@ -7934,7 +7927,6 @@ as $\tcode{T}_i$ if the initializer is a prvalue, +@@ -7937,7 +7930,6 @@ as $\tcode{T}_i$ if the initializer is a prvalue, as ``lvalue reference to $\tcode{T}_i$'' if the initializer is an lvalue, or as ``rvalue reference to $\tcode{T}_i$'' otherwise, variables are introduced with unique names $\tcode{r}_i$ as follows: @@ -6192,7 +6221,7 @@ index ea1cca57..ec72b88d 100644 \begin{ncbnf} \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} \end{ncbnf} -@@ -8066,7 +8058,6 @@ struct S { +@@ -8069,7 +8061,6 @@ struct S { enum E : int {}; // error: redeclaration of enumeration }; \end{codeblock} @@ -6200,7 +6229,7 @@ index ea1cca57..ec72b88d 100644 \end{example} \end{note} The \grammarterm{identifier} in an \grammarterm{enum-head-name} -@@ -8162,7 +8153,6 @@ If the underlying +@@ -8165,7 +8156,6 @@ If the underlying type is not fixed, the type of each enumerator prior to the closing brace is determined as follows: @@ -6208,7 +6237,7 @@ index ea1cca57..ec72b88d 100644 \begin{itemize} \item If an initializer is specified for an enumerator, the -@@ -8621,7 +8611,6 @@ void h() { +@@ -8624,7 +8614,6 @@ void h() { \pnum A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} according to the following grammar: @@ -6216,7 +6245,7 @@ index ea1cca57..ec72b88d 100644 \begin{bnf} \nontermdef{namespace-alias}\br identifier -@@ -8795,7 +8784,6 @@ not declare functions or function templates, the use of the name is ill-formed\i +@@ -8798,7 +8787,6 @@ not declare functions or function templates, the use of the name is ill-formed\i In particular, the name of a variable, function or enumerator does not hide the name of a class or enumeration declared in a different namespace. For example, @@ -6224,7 +6253,7 @@ index ea1cca57..ec72b88d 100644 \begin{codeblock} namespace A { class X { }; -@@ -9358,7 +9346,6 @@ otherwise identical. +@@ -9361,7 +9349,6 @@ otherwise identical. \pnum \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can be achieved using a \grammarterm{linkage-specification}: @@ -6232,7 +6261,7 @@ index ea1cca57..ec72b88d 100644 \indextext{\idxgram{linkage-specification}}% \indextext{specification!linkage!\idxcode{extern}}% % -@@ -10235,7 +10222,6 @@ may be applied to a function or a lambda call operator or +@@ -10238,7 +10225,6 @@ may be applied to a function or a lambda call operator or to the declaration of a class or enumeration. An \grammarterm{attribute-argument-clause} may be present and, if present, shall have the form: @@ -6266,7 +6295,7 @@ index bab8b5b0..cfebc253 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 19764696..ff0ff92b 100644 +index 788a608b..9c63d0c4 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -510,7 +510,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -6462,7 +6491,7 @@ index 19764696..ff0ff92b 100644 \rSec2[expr.yield]{Yielding a value}% diff --git a/source/future.tex b/source/future.tex -index fc3ccf5a..86a8449c 100644 +index c594ef17..68cdef6e 100644 --- a/source/future.tex +++ b/source/future.tex @@ -283,7 +283,6 @@ shown in the above synopsis. @@ -6530,7 +6559,7 @@ index fc3ccf5a..86a8449c 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index c25de465..42906f91 100644 +index 63a429d3..6019043b 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -2105,14 +2105,12 @@ does nothing. @@ -6869,7 +6898,7 @@ index 877f21f3..7fc0a416 100644 - \end{itemize} diff --git a/source/memory.tex b/source/memory.tex -index 4375357a..df34f301 100644 +index 2c68fbe7..e89f767b 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1525,7 +1525,6 @@ when considered as an unevaluated operand. @@ -6880,7 +6909,7 @@ index 4375357a..df34f301 100644 \begin{codeblock} class @\exposid{pair-constructor}@ { using @\exposid{pair-type}@ = remove_cv_t; // \expos -@@ -4087,7 +4086,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a); +@@ -4086,7 +4085,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a); \tcode{is_move_constructible_v} is \tcode{true}, and \tcode{d(p)} is a well-formed expression. For the first two overloads: @@ -6909,7 +6938,7 @@ index 08052036..2c8f245e 100644 \item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}. diff --git a/source/numerics.tex b/source/numerics.tex -index cdc2eb06..f3a7aefd 100644 +index 935afa2b..c79aa0d9 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); @@ -6977,7 +7006,7 @@ index cdc2eb06..f3a7aefd 100644 \begin{itemdecl} indirect_array valarray::operator[](const valarray&); diff --git a/source/overloading.tex b/source/overloading.tex -index a1fdfd80..0b95dbcd 100644 +index 869dca71..bf8063ae 100644 --- a/source/overloading.tex +++ b/source/overloading.tex @@ -103,7 +103,6 @@ the list of arguments in its own unique way. @@ -7060,7 +7089,7 @@ index a1fdfd80..0b95dbcd 100644 \begin{itemize} \item A conversion that does not convert a pointer or a pointer to member -@@ -4282,7 +4272,6 @@ is a \defnx{literal operator template}{literal!operator!template}. +@@ -4286,7 +4276,6 @@ is a \defnx{literal operator template}{literal!operator!template}. \pnum The declaration of a literal operator shall have a \grammarterm{parameter-declaration-clause} equivalent to one of the following: @@ -7152,7 +7181,7 @@ index ba13ba06..a4228a22 100644 \pnum diff --git a/source/ranges.tex b/source/ranges.tex -index 6c1b78f6..7ba2bc94 100644 +index 6a066e87..6305fe97 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -657,7 +657,6 @@ object\iref{customization.point.object}. @@ -7272,7 +7301,7 @@ index 7a81a873..ab070cf7 100644 \item if the type of \exposid{range} is a reference to an array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are diff --git a/source/support.tex b/source/support.tex -index 9c659d24..a2c2daac 100644 +index f77a170a..49fefaff 100644 --- a/source/support.tex +++ b/source/support.tex @@ -2452,7 +2452,6 @@ This requirement is binding on any replacement versions of these functions. @@ -7308,7 +7337,7 @@ index 9c659d24..a2c2daac 100644 using promise_type = R::promise_type; \end{codeblock} diff --git a/source/templates.tex b/source/templates.tex -index a7d3bdbd..84dc75d1 100644 +index 5e28e1d9..f77dba61 100644 --- a/source/templates.tex +++ b/source/templates.tex @@ -256,7 +256,6 @@ in some translation unit; no diagnostic is required\ifndrdef{temp.pre.reach.def} @@ -7890,7 +7919,7 @@ index 3d6fb318..fa754085 100644 \fmtnontermdef{chrono-format-spec}\br \opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs} diff --git a/source/utilities.tex b/source/utilities.tex -index 5ff59eb2..b5bf1bbb 100644 +index 68918746..0287e368 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -286,7 +286,6 @@ Exchanges the values of \tcode{a} and \tcode{b}. @@ -7917,7 +7946,7 @@ index 5ff59eb2..b5bf1bbb 100644 \begin{codeblock} noexcept(x.swap(y)) \end{codeblock} -@@ -11305,7 +11302,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; +@@ -11307,7 +11304,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -7925,7 +7954,7 @@ index 5ff59eb2..b5bf1bbb 100644 \begin{itemize} \item If \tcode{I < pos}, the new value is zero; -@@ -11330,7 +11326,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; +@@ -11332,7 +11328,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; Replaces each bit at position \tcode{I} in \tcode{*this} with a value determined as follows: @@ -7933,7 +7962,7 @@ index 5ff59eb2..b5bf1bbb 100644 \begin{itemize} \item If \tcode{pos >= N - I}, the new value is zero; -@@ -12059,7 +12054,6 @@ namespace std { +@@ -12061,7 +12056,6 @@ namespace std { If a \Cpp{} program wants to have a by-element addition of two vectors \tcode{a} and \tcode{b} containing \tcode{double} and put the result into \tcode{a}, it can do: @@ -7941,7 +7970,7 @@ index 5ff59eb2..b5bf1bbb 100644 \begin{codeblock} transform(a.begin(), a.end(), b.begin(), a.begin(), plus()); \end{codeblock} -@@ -15542,7 +15536,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; +@@ -15544,7 +15538,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; The header provides partial specializations of \tcode{function_ref} for each combination of the possible replacements of the placeholders \cv{} and \placeholder{noex} where: @@ -7953,7 +7982,7 @@ index 5ff59eb2..b5bf1bbb 100644 2.43.0 -From 64ab190b04ccd9c732d1b09337f9485e5e543e2f Mon Sep 17 00:00:00 2001 +From 2c481a964d4b35ec3222e591b5c97e48e052bc0e Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 Subject: [PATCH 5/9] Use monospace font for code in figures. @@ -8100,7 +8129,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From 520fc65c9d9503a060684e4eb9b4d250bf5023b0 Mon Sep 17 00:00:00 2001 +From ecab47c94e503768817dc37a23398503fc1fae87 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 Subject: [PATCH 6/9] [uaxid] Mark code that's not to be highlighted. @@ -8128,7 +8157,7 @@ index 6574a486..b500e410 100644 2.43.0 -From d4cf33790b2d9938861d77a208bc3366e9be21f2 Mon Sep 17 00:00:00 2001 +From 7cbcfffec8345628b40b463371b41a3ea66cbc62 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 Subject: [PATCH 7/9] Use cxxdraft-htmlgen macros more. @@ -8746,7 +8775,7 @@ index 3e64abc8..9efb5afa 100644 invocation of the destructor does not actually throw. \end{note} diff --git a/source/diagnostics.tex b/source/diagnostics.tex -index a0ff42d4..68acab16 100644 +index 89419def..15edbb54 100644 --- a/source/diagnostics.tex +++ b/source/diagnostics.tex @@ -761,9 +761,9 @@ namespace std { @@ -8851,7 +8880,7 @@ index 2fd6f4f2..4acd1841 100644 \\ \end{floattable} diff --git a/source/future.tex b/source/future.tex -index 86a8449c..4d529384 100644 +index 68cdef6e..02a76d83 100644 --- a/source/future.tex +++ b/source/future.tex @@ -359,7 +359,7 @@ template struct is_pod; @@ -8900,7 +8929,7 @@ index 86a8449c..4d529384 100644 \begin{itemize} \item for the first specialization, \tcode{volatile VA::type}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index 42906f91..8e600da9 100644 +index 6019043b..3e969f70 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -1684,10 +1684,10 @@ An \tcode{fpos} type specifies file position information. @@ -9090,7 +9119,7 @@ index 5597e57d..2149f97a 100644 dereferenceable pointer values for some integral value \tcode{n}, \begin{codeblock} diff --git a/source/memory.tex b/source/memory.tex -index df34f301..717ae306 100644 +index e89f767b..8fb09ade 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1227,7 +1227,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type @@ -9111,7 +9140,7 @@ index df34f301..717ae306 100644 requirements\iref{meta.rqmts}. The implementation shall provide a definition that is derived from \tcode{true_type} if the \grammarterm{qualified-id} \tcode{T::allocator_type} is valid and denotes a type\iref{temp.deduct} and -@@ -2615,8 +2615,8 @@ deleter before such replacement is considered completed. +@@ -2614,8 +2614,8 @@ deleter before such replacement is considered completed. Each object of a type \tcode{U} instantiated from the \tcode{unique_ptr} template specified in \ref{unique.ptr} has the strict ownership semantics, specified above, of a unique pointer. In partial satisfaction of these semantics, each such \tcode{U} @@ -9122,7 +9151,7 @@ index df34f301..717ae306 100644 The template parameter \tcode{T} of \tcode{unique_ptr} may be an incomplete type. \pnum -@@ -2803,7 +2803,7 @@ pointer as appropriate for that deleter. +@@ -2802,7 +2802,7 @@ pointer as appropriate for that deleter. \pnum If the deleter's type \tcode{D} is not a reference type, \tcode{D} shall meet @@ -9131,7 +9160,7 @@ index df34f301..717ae306 100644 \pnum If the \grammarterm{qualified-id} \tcode{remove_reference_t::pointer} is valid and denotes a -@@ -2811,7 +2811,7 @@ type\iref{temp.deduct}, then \tcode{unique_ptr::pointer} shall be a synonym for \tcode{remove_reference_t::pointer}. Otherwise \tcode{unique_ptr::pointer} shall be a synonym for \tcode{element_type*}. The type \tcode{unique_ptr::pointer} shall @@ -9140,7 +9169,7 @@ index df34f301..717ae306 100644 \pnum \begin{example} -@@ -2837,7 +2837,7 @@ constexpr unique_ptr(nullptr_t) noexcept; +@@ -2836,7 +2836,7 @@ constexpr unique_ptr(nullptr_t) noexcept; \pnum \expects @@ -9149,7 +9178,7 @@ index df34f301..717ae306 100644 and that construction does not throw an exception. \pnum -@@ -2864,7 +2864,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; +@@ -2863,7 +2863,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; \pnum \expects @@ -9158,7 +9187,7 @@ index df34f301..717ae306 100644 and that construction does not throw an exception. \pnum -@@ -2893,10 +2893,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex +@@ -2892,10 +2892,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex \pnum \expects For the first constructor, if \tcode{D} is not a reference type, @@ -9171,7 +9200,7 @@ index df34f301..717ae306 100644 such construction does not exit via an exception. \pnum -@@ -2921,8 +2921,8 @@ the second constructor is defined as deleted. +@@ -2920,8 +2920,8 @@ the second constructor is defined as deleted. \begin{example} \begin{codeblock} D d; @@ -9182,7 +9211,7 @@ index df34f301..717ae306 100644 unique_ptr p3(new int, d); // \tcode{p3} holds a reference to \tcode{d} unique_ptr p4(new int, D()); // error: rvalue deleter object combined // with reference deleter type -@@ -2943,7 +2943,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; +@@ -2942,7 +2942,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, @@ -9191,7 +9220,7 @@ index df34f301..717ae306 100644 requirements (\tref{cpp17.moveconstructible}). Construction of the deleter from an rvalue of type \tcode{D} does not -@@ -3052,10 +3052,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; +@@ -3051,10 +3051,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; \pnum \expects If \tcode{D} is not a reference type, \tcode{D} meets the @@ -9204,7 +9233,7 @@ index df34f301..717ae306 100644 requirements and assignment of the deleter from an lvalue of type \tcode{D} does not throw an exception. -@@ -3957,8 +3957,8 @@ namespace std { +@@ -3956,8 +3956,8 @@ namespace std { \end{codeblock} \pnum @@ -9215,7 +9244,7 @@ index df34f301..717ae306 100644 containers. Specializations of \tcode{shared_ptr} shall be contextually convertible to \tcode{bool}, allowing their use in boolean expressions and declarations in conditions. -@@ -4103,7 +4103,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. +@@ -4102,7 +4102,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. The expression \tcode{d(p)} has well-defined behavior and does not throw exceptions. \tcode{A} meets @@ -9224,7 +9253,7 @@ index df34f301..717ae306 100644 \pnum \effects -@@ -4623,7 +4623,7 @@ template +@@ -4622,7 +4622,7 @@ template \pnum \expects \tcode{A} meets @@ -9233,7 +9262,7 @@ index df34f301..717ae306 100644 \pnum \effects -@@ -5279,8 +5279,8 @@ namespace std { +@@ -5278,8 +5278,8 @@ namespace std { \end{codeblock} \pnum @@ -9244,7 +9273,7 @@ index df34f301..717ae306 100644 containers. The template parameter \tcode{T} of \tcode{weak_ptr} may be an incomplete type. -@@ -5859,7 +5859,7 @@ namespace std { +@@ -5858,7 +5858,7 @@ namespace std { \end{codeblock} \pnum @@ -9253,7 +9282,7 @@ index df34f301..717ae306 100644 If \tcode{Smart} is a specialization of \tcode{shared_ptr} and \tcode{sizeof...(Args) == 0}, the program is ill-formed. -@@ -6099,7 +6099,7 @@ namespace std { +@@ -6098,7 +6098,7 @@ namespace std { \end{codeblock} \pnum @@ -9859,7 +9888,7 @@ index 2c8f245e..c175f7f6 100644 \rSec2[meta.member]{Member relationships} diff --git a/source/numerics.tex b/source/numerics.tex -index f3a7aefd..59fb4188 100644 +index c79aa0d9..bf16ade5 100644 --- a/source/numerics.tex +++ b/source/numerics.tex @@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul @@ -9996,7 +10025,7 @@ index 025af463..e7afd872 100644 meets the constexpr iterator requirements\iref{iterator.requirements.general}, whose \tcode{value_type} is the template parameter \tcode{charT}. diff --git a/source/support.tex b/source/support.tex -index a2c2daac..8720d9ea 100644 +index 49fefaff..13a54121 100644 --- a/source/support.tex +++ b/source/support.tex @@ -4114,7 +4114,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. @@ -10627,7 +10656,7 @@ index fa754085..1c4e655a 100644 \end{note} \end{itemdescr} diff --git a/source/utilities.tex b/source/utilities.tex -index b5bf1bbb..992cd659 100644 +index 0287e368..bc5632a5 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -274,9 +274,9 @@ template @@ -10843,7 +10872,7 @@ index b5bf1bbb..992cd659 100644 \end{note} \pnum -@@ -9988,7 +9988,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. +@@ -9990,7 +9990,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. \pnum \tcode{E} shall meet the requirements of @@ -10852,7 +10881,7 @@ index b5bf1bbb..992cd659 100644 \rSec3[expected.void.cons]{Constructors} -@@ -12161,8 +12161,8 @@ is ill-formed. +@@ -12163,8 +12163,8 @@ is ill-formed. \indextext{call wrapper}% \indextext{call wrapper!simple}% \indextext{call wrapper!forwarding}% @@ -10863,7 +10892,7 @@ index b5bf1bbb..992cd659 100644 An \defn{argument forwarding call wrapper} is a call wrapper that can be called with an arbitrary argument list and delivers the arguments to the target object as references. -@@ -12202,7 +12202,7 @@ with references as described in the corresponding forwarding steps. +@@ -12204,7 +12204,7 @@ with references as described in the corresponding forwarding steps. \pnum \label{term.simple.call.wrapper}% A \defn{simple call wrapper} is a perfect forwarding call wrapper that meets @@ -10872,7 +10901,7 @@ index b5bf1bbb..992cd659 100644 and whose copy constructor, move constructor, and assignment operators are constexpr functions that do not throw exceptions. -@@ -12305,7 +12305,7 @@ namespace std { +@@ -12307,7 +12307,7 @@ namespace std { \end{codeblock} \pnum @@ -10881,7 +10910,7 @@ index b5bf1bbb..992cd659 100644 around a reference to an object or function of type \tcode{T}. \pnum -@@ -13759,7 +13759,7 @@ is \tcode{true}. +@@ -13761,7 +13761,7 @@ is \tcode{true}. \pnum \expects @@ -10890,7 +10919,7 @@ index b5bf1bbb..992cd659 100644 \pnum \returns -@@ -13845,10 +13845,10 @@ is \tcode{true}. +@@ -13847,10 +13847,10 @@ is \tcode{true}. \pnum \expects @@ -10903,7 +10932,7 @@ index b5bf1bbb..992cd659 100644 \pnum \returns -@@ -13914,7 +13914,7 @@ then \tcode{f != nullptr} is \tcode{true}. +@@ -13916,7 +13916,7 @@ then \tcode{f != nullptr} is \tcode{true}. \pnum \expects For each $\tcode{T}_i$ in \tcode{BoundArgs}, @@ -10912,7 +10941,7 @@ index b5bf1bbb..992cd659 100644 \pnum \returns -@@ -13960,7 +13960,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. +@@ -13962,7 +13962,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. \pnum Specializations of the \tcode{is_bind_expression} template shall meet @@ -10921,7 +10950,7 @@ index b5bf1bbb..992cd659 100644 provides a definition that has a base characteristic of \tcode{true_type} if \tcode{T} is a type returned from \tcode{bind}, otherwise it has a base characteristic of \tcode{false_type}. -@@ -13996,7 +13996,7 @@ The function template \tcode{bind} uses +@@ -13998,7 +13998,7 @@ The function template \tcode{bind} uses \pnum Specializations of the \tcode{is_placeholder} template shall meet @@ -10930,7 +10959,7 @@ index b5bf1bbb..992cd659 100644 provides a definition that has the base characteristic of \tcode{integral_constant} if \tcode{T} is the type of \tcode{std::placeholders::_\placeholder{J}}, otherwise it has a -@@ -14046,7 +14046,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> +@@ -14048,7 +14048,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> \pnum \expects \tcode{FD} and each $\tcode{TD}_i$ meet @@ -10939,7 +10968,7 @@ index b5bf1bbb..992cd659 100644 \tcode{\placeholdernc{INVOKE}(fd, $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc$, $\tcode{w}_N$)}\iref{func.require} is a valid expression for some values $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc{}$, $\tcode{w}_N$, where -@@ -14082,8 +14082,8 @@ the state entities of \tcode{g}. +@@ -14084,8 +14084,8 @@ the state entities of \tcode{g}. \pnum \begin{note} If all of \tcode{FD} and $\tcode{TD}_i$ meet @@ -10950,7 +10979,7 @@ index b5bf1bbb..992cd659 100644 \end{note} \end{itemdescr} -@@ -14152,13 +14152,13 @@ The number \tcode{\placeholder{M}} of placeholders is +@@ -14154,13 +14154,13 @@ The number \tcode{\placeholder{M}} of placeholders is \impldef{number of placeholders for bind expressions}. \pnum @@ -10967,7 +10996,7 @@ index b5bf1bbb..992cd659 100644 but if so, their copy assignment operators are constexpr functions that do not throw exceptions. -@@ -14428,7 +14428,7 @@ Let \tcode{FD} be \tcode{decay_t}. +@@ -14430,7 +14430,7 @@ Let \tcode{FD} be \tcode{decay_t}. \pnum \expects @@ -10976,7 +11005,7 @@ index b5bf1bbb..992cd659 100644 \pnum \ensures -@@ -14853,9 +14853,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14855,9 +14855,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -10988,7 +11017,7 @@ index b5bf1bbb..992cd659 100644 \pnum \ensures -@@ -14905,9 +14905,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14907,9 +14907,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11000,7 +11029,7 @@ index b5bf1bbb..992cd659 100644 \pnum \ensures -@@ -14947,9 +14947,9 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -14949,9 +14949,9 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11012,7 +11041,7 @@ index b5bf1bbb..992cd659 100644 \pnum \ensures -@@ -15271,8 +15271,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -15273,8 +15273,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11023,7 +11052,7 @@ index b5bf1bbb..992cd659 100644 \pnum \ensures -@@ -15327,8 +15327,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -15329,8 +15329,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11034,7 +11063,7 @@ index b5bf1bbb..992cd659 100644 \pnum \ensures -@@ -15373,8 +15373,8 @@ Let \tcode{VT} be \tcode{decay_t}. +@@ -15375,8 +15375,8 @@ Let \tcode{VT} be \tcode{decay_t}. \pnum \expects @@ -11045,7 +11074,7 @@ index b5bf1bbb..992cd659 100644 \pnum \ensures -@@ -15935,7 +15935,7 @@ provided to the function call operator. +@@ -15937,7 +15937,7 @@ provided to the function call operator. \pnum Each specialization of a class template specified in \ref{func.search} @@ -11054,7 +11083,7 @@ index b5bf1bbb..992cd659 100644 Template parameters named \begin{itemize} \item \tcode{ForwardIterator}, -@@ -15949,7 +15949,7 @@ Template parameters named +@@ -15951,7 +15951,7 @@ Template parameters named of templates specified in \ref{func.search} shall meet the same requirements and semantics as specified in \ref{algorithms.general}. @@ -11063,7 +11092,7 @@ index b5bf1bbb..992cd659 100644 requirements (\tref{cpp17.hash}). \pnum -@@ -16058,9 +16058,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, +@@ -16060,9 +16060,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, \pnum \expects The value type of \tcode{RandomAccessIterator1} meets @@ -11076,7 +11105,7 @@ index b5bf1bbb..992cd659 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -16159,8 +16159,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, +@@ -16161,8 +16161,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, \begin{itemdescr} \pnum \expects @@ -11087,7 +11116,7 @@ index b5bf1bbb..992cd659 100644 \pnum Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. -@@ -16233,7 +16233,7 @@ as the default hash function. +@@ -16235,7 +16235,7 @@ as the default hash function. Each specialization of \tcode{hash} is either enabled or disabled, as described below. \begin{note} @@ -11096,7 +11125,7 @@ index b5bf1bbb..992cd659 100644 disabled specializations do not. \end{note} Each header that declares the template \tcode{hash} -@@ -16260,17 +16260,17 @@ Disabled specializations of \tcode{hash} +@@ -16262,17 +16262,17 @@ Disabled specializations of \tcode{hash} are not function object types\iref{function.objects}. \begin{note} This means that the specialization of \tcode{hash} exists, but @@ -11123,7 +11152,7 @@ index b5bf1bbb..992cd659 100644 2.43.0 -From 53640486203f84c898ead4fcbc085103cfdac3ff Mon Sep 17 00:00:00 2001 +From 42e22b3b7f4e4f5832bb16c4ecc4d036123f334b Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 Subject: [PATCH 8/9] Remove awkward \linebreaks. @@ -11162,10 +11191,10 @@ index b86bfc2a..5b4fb286 100644 \pnum diff --git a/source/containers.tex b/source/containers.tex -index 941ffa56..7f6e62cd 100644 +index d8ea438f..4b76dafc 100644 --- a/source/containers.tex +++ b/source/containers.tex -@@ -1461,7 +1461,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. +@@ -1462,7 +1462,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. \pnum \recommended If \tcode{R} models \tcode{ranges::\libconcept{approximately_sized_range}} and @@ -11174,7 +11203,7 @@ index 941ffa56..7f6e62cd 100644 an implementation should not perform more than a single reallocation. \pnum -@@ -1836,7 +1836,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. +@@ -1837,7 +1837,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. \pnum \recommended If \tcode{R} models \tcode{ranges::\libconcept{approximately_sized_range}} and @@ -11183,7 +11212,7 @@ index 941ffa56..7f6e62cd 100644 an implementation should not perform any reallocation. \end{itemdescr} -@@ -2457,7 +2457,7 @@ Assigns \tcode{nh.\exposid{ptr_}} to \exposid{ptr_}. +@@ -2458,7 +2458,7 @@ Assigns \tcode{nh.\exposid{ptr_}} to \exposid{ptr_}. \item If \tcode{!\exposid{alloc_}} is \tcode{true} or \tcode{\exposid{ator-traits}::propagate_on_container_move_assignment::value} @@ -11192,7 +11221,7 @@ index 941ffa56..7f6e62cd 100644 move assigns \tcode{nh.\exposid{alloc_}} to \exposid{alloc_}. \item Assigns -@@ -7491,14 +7491,14 @@ template +@@ -7492,14 +7492,14 @@ template \pnum \expects \tcode{T} is \oldconcept{EmplaceConstructible} into \tcode{forward_list} @@ -11375,7 +11404,7 @@ index 4acd1841..c6948141 100644 the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; otherwise, it is equivalent to: diff --git a/source/memory.tex b/source/memory.tex -index 717ae306..7f0d47f5 100644 +index 8fb09ade..d4799964 100644 --- a/source/memory.tex +++ b/source/memory.tex @@ -1325,7 +1325,7 @@ A \tcode{tuple} value determined as follows: @@ -11387,7 +11416,7 @@ index 717ae306..7f0d47f5 100644 return \tcode{forward_as_tuple(std::forward(args)...)}. \item Otherwise, if \tcode{uses_allocator_v, Alloc>} is \tcode{true} and -@@ -4713,7 +4713,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje +@@ -4712,7 +4712,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje the allocator \tcode{a} passed to \tcode{allocate_shared}. \item When a (sub)object of non-array type \tcode{U} is initialized by @@ -11396,7 +11425,7 @@ index 717ae306..7f0d47f5 100644 \tcode{allocate_shared_for_overwrite}, it is initialized via the expression \tcode{::new(pv) U}, where \tcode{pv} has type \tcode{void*} and -@@ -5948,7 +5948,7 @@ if (p) { +@@ -5947,7 +5947,7 @@ if (p) { \end{codeblock} if the expression \tcode{s.reset(static_cast(p), std::forward(args)...)} @@ -11419,7 +11448,7 @@ index c175f7f6..ccf7f156 100644 \item Otherwise, if diff --git a/source/ranges.tex b/source/ranges.tex -index 7ba2bc94..57f2c249 100644 +index 6305fe97..58b567da 100644 --- a/source/ranges.tex +++ b/source/ranges.tex @@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, @@ -11613,7 +11642,7 @@ index 17f72189..0f0980fa 100644 \pnum \effects diff --git a/source/utilities.tex b/source/utilities.tex -index 992cd659..f66da74f 100644 +index bc5632a5..227adaa1 100644 --- a/source/utilities.tex +++ b/source/utilities.tex @@ -2354,7 +2354,7 @@ equals \tcode{tuple_size_v>}, @@ -11656,7 +11685,7 @@ index 992cd659..f66da74f 100644 2.43.0 -From 67f3d50379d39456d20aafc52fd73cae208c96b3 Mon Sep 17 00:00:00 2001 +From dcc9f5c4bbdcf523755918fcb121f487b2ff0055 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 25 Dec 2025 12:43:53 +0100 Subject: [PATCH 9/9] Use \literalterminal more. @@ -11666,7 +11695,7 @@ Subject: [PATCH 9/9] Use \literalterminal more. 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/source/lex.tex b/source/lex.tex -index ade495a0..04f25c1d 100644 +index 2946bff3..19211197 100644 --- a/source/lex.tex +++ b/source/lex.tex @@ -449,7 +449,7 @@ for the respective Unicode encoding form. diff --git a/lastbuild.sig b/lastbuild.sig index ec38c286da..221f27d4f0 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ -htmlgen fa47c53345fbb32375bd3d54a1b64452cb5bbef4 -draft 85a72ebc3b426fc055303d6896a21c88c423552d -2a83c43c343aa28ffb65b8ca1322216c15d833f3 htmlgen.patch +htmlgen 6cebd0499f9b9c423913e8e6aace8f63a7016b04 +draft 594a0583bdc3b2921b38dbb0e8186c819148ad7a +009b7becbebc2c2d964c7b932989ccba67b3f8d4 htmlgen.patch From b40d13618c0f2416f53cf8ecacfaa2f96adc8c5a Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Mon, 17 Aug 2026 20:59:01 -0500 Subject: [PATCH 34/36] Add N5050 --- README.md | 1 + gh-pages | 2 +- n5050.patch | 11765 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 11767 insertions(+), 1 deletion(-) create mode 100644 n5050.patch diff --git a/README.md b/README.md index a36339c514..54b20b51f7 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ Currently the following versions are available: * N4861 (March 2020 post-Prague working draft/C++20 DIS): [HTML](https://timsong-cpp.github.io/cppwp/n4861/) [Full PDF](https://timsong-cpp.github.io/cppwp/n4861/draft.pdf) * N4868 (October 2020 pre-virtual-plenary working draft/C++20 plus editorial changes): [HTML](https://timsong-cpp.github.io/cppwp/n4868/) [Full PDF](https://timsong-cpp.github.io/cppwp/n4868/draft.pdf) * N4950 with editorial changes (C++23 DIS): [HTML](https://timsong-cpp.github.io/cppwp/n4950/) [Full PDF](https://timsong-cpp.github.io/cppwp/n4950/draft.pdf) +* N5050 (C++26 DIS): [HTML](https://timsong-cpp.github.io/cppwp/n5050/) [Full PDF](https://timsong-cpp.github.io/cppwp/n5050/draft.pdf) The following TSes are also available: * Ranges: [HTML](https://timsong-cpp.github.io/cppwp/ranges-ts/) [Full PDF](https://timsong-cpp.github.io/cppwp/ranges-ts.pdf) diff --git a/gh-pages b/gh-pages index c1a99f5fc0..8e81bad434 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit c1a99f5fc0c84a926aff8f1d8826b5b25dd81955 +Subproject commit 8e81bad434db87f6bc4dc55bce15ac60f468ee18 diff --git a/n5050.patch b/n5050.patch new file mode 100644 index 0000000000..3159b49f21 --- /dev/null +++ b/n5050.patch @@ -0,0 +1,11765 @@ +From bd882a572ba79d75457cb0f76e0dd6f1688672c5 Mon Sep 17 00:00:00 2001 +From: Eelis van der Weegen +Date: Mon, 23 Jan 2017 06:58:26 +0100 +Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on + smaller (e.g. half-screen) window sizes. + +--- + source/basic.tex | 26 +++++++++++++------------- + source/expressions.tex | 2 +- + 2 files changed, 14 insertions(+), 14 deletions(-) + +diff --git a/source/basic.tex b/source/basic.tex +index c1f58de6..c3113a07 100644 +--- a/source/basic.tex ++++ b/source/basic.tex +@@ -342,7 +342,7 @@ Given + #include + + struct C { +- std::string s; // \tcode{std::string} is the standard library class\iref{string.classes} ++ std::string s; // \tcode{std::string} is the standard library class\iref{string.classes} + }; + + int main() { +@@ -2652,23 +2652,23 @@ namespace AB { + + void h() + { +- AB::g(); // \tcode{g} is declared directly in \tcode{AB}, therefore \tcode{S} is $\{ \tcode{AB::g()} \}$ and \tcode{AB::g()} is chosen ++ AB::g(); // \tcode{g} is declared directly in \tcode{AB}, therefore \tcode{S} is $\{ \tcode{AB::g()} \}$ and \tcode{AB::g()} is chosen + +- AB::f(1); // \tcode{f} is not declared directly in \tcode{AB} so the rules are applied recursively to \tcode{A} and \tcode{B}; +- // namespace \tcode{Y} is not searched and \tcode{Y::f(float)} is not considered; +- // \tcode{S} is $\{ \tcode{A::f(int)}, \tcode{B::f(char)} \}$ and overload resolution chooses \tcode{A::f(int)} ++ AB::f(1); // \tcode{f} is not declared directly in \tcode{AB} so the rules are applied recursively to \tcode{A} and \tcode{B}; ++ // namespace \tcode{Y} is not searched and \tcode{Y::f(float)} is not considered; ++ // \tcode{S} is $\{ \tcode{A::f(int)}, \tcode{B::f(char)} \}$ and overload resolution chooses \tcode{A::f(int)} + +- AB::f('c'); // as above but resolution chooses \tcode{B::f(char)} ++ AB::f('c'); // as above but resolution chooses \tcode{B::f(char)} + +- AB::x++; // \tcode{x} is not declared directly in \tcode{AB}, and is not declared in \tcode{A} or \tcode{B}, so the rules +- // are applied recursively to \tcode{Y} and \tcode{Z}, \tcode{S} is $\{ \}$ so the program is ill-formed ++ AB::x++; // \tcode{x} is not declared directly in \tcode{AB}, and is not declared in \tcode{A} or \tcode{B}, so the rules ++ // are applied recursively to \tcode{Y} and \tcode{Z}, \tcode{S} is $\{ \}$ so the program is ill-formed + +- AB::i++; // \tcode{i} is not declared directly in \tcode{AB} so the rules are applied recursively to \tcode{A} and \tcode{B}, +- // \tcode{S} is $\{ \tcode{A::i}, \tcode{B::i} \}$ so the use is ambiguous and the program is ill-formed ++ AB::i++; // \tcode{i} is not declared directly in \tcode{AB} so the rules are applied recursively to \tcode{A} and \tcode{B}, ++ // \tcode{S} is $\{ \tcode{A::i}, \tcode{B::i} \}$ so the use is ambiguous and the program is ill-formed + +- AB::h(16.8); // \tcode{h} is not declared directly in \tcode{AB} and not declared directly in \tcode{A} or \tcode{B} so the rules +- // are applied recursively to \tcode{Y} and \tcode{Z}, \tcode{S} is $\{ \tcode{Y::h(int)}, \tcode{Z::h(double)} \}$ and +- // overload resolution chooses \tcode{Z::h(double)} ++ AB::h(16.8); // \tcode{h} is not declared directly in \tcode{AB} and not declared directly in \tcode{A} or \tcode{B} so the rules ++ // are applied recursively to \tcode{Y} and \tcode{Z}, \tcode{S} is $\{ \tcode{Y::h(int)}, \tcode{Z::h(double)} \}$ and ++ // overload resolution chooses \tcode{Z::h(double)} + } + \end{codeblock} + \end{example} +diff --git a/source/expressions.tex b/source/expressions.tex +index eec3be90..0ea2a413 100644 +--- a/source/expressions.tex ++++ b/source/expressions.tex +@@ -2938,7 +2938,7 @@ struct s2 { + } + auto g() { + return [] { +- return [*this] { }; // error: \tcode{*this} not captured by outer \grammarterm{lambda-expression} ++ return [*this] { }; // error: \tcode{*this} not captured by outer \grammarterm{lambda-expression} + }(); + } + }; +-- +2.43.0 + + +From f6eb70fb0224ac76635bef932b9ee63b5302281f Mon Sep 17 00:00:00 2001 +From: Eelis van der Weegen +Date: Wed, 1 Feb 2017 03:24:29 +0100 +Subject: [PATCH 2/9] Use new link macros. + +--- + source/algorithms.tex | 4 +- + source/basic.tex | 93 +++++++------- + source/classes.tex | 22 ++-- + source/compatibility.tex | 4 +- + source/concepts.tex | 12 +- + source/containers.tex | 48 ++++---- + source/declarations.tex | 57 +++++---- + source/diagnostics.tex | 6 +- + source/exceptions.tex | 34 +++--- + source/expressions.tex | 258 ++++++++++++++++++++------------------- + source/future.tex | 10 +- + source/intro.tex | 19 +-- + source/iostreams.tex | 74 +++++------ + source/iterators.tex | 6 +- + source/lex.tex | 6 +- + source/lib-intro.tex | 69 +++++------ + source/limits.tex | 2 +- + source/numerics.tex | 55 ++++----- + source/overloading.tex | 64 +++++----- + source/preprocessor.tex | 12 +- + source/statements.tex | 30 ++--- + source/strings.tex | 8 +- + source/support.tex | 86 ++++++------- + source/templates.tex | 114 ++++++++--------- + source/threads.tex | 35 +++--- + source/time.tex | 10 +- + source/utilities.tex | 20 +-- + 27 files changed, 573 insertions(+), 585 deletions(-) + +diff --git a/source/algorithms.tex b/source/algorithms.tex +index 8b2f530d..cd4ba8fb 100644 +--- a/source/algorithms.tex ++++ b/source/algorithms.tex +@@ -5,7 +5,7 @@ + + \pnum + This Clause describes components that \Cpp{} programs may use to perform +-algorithmic operations on containers\iref{containers} and other sequences. ++algorithmic operations on \link{containers}{containers} and other sequences. + + \pnum + The following subclauses describe components for +@@ -10225,7 +10225,7 @@ In either case, twice as many projections as comparisons. + + \pnum + \remarks +-Stable\iref{algorithm.stable}. ++\link{Stable}{algorithm.stable}. + \end{itemdescr} + + \begin{itemdecl} +diff --git a/source/basic.tex b/source/basic.tex +index c3113a07..e820717d 100644 +--- a/source/basic.tex ++++ b/source/basic.tex +@@ -180,7 +180,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. + \indextext{linkage}% + A name used in more than one translation unit can potentially + refer to the same entity in these translation units depending on the +-linkage\iref{basic.link} of the name specified in each ++\link{linkage}{basic.link} of the name specified in each + translation unit. + + \rSec1[basic.def]{Declarations and definitions} +@@ -205,7 +205,7 @@ A declaration can also have effects including: + \item a static assertion\iref{dcl.pre}, + \item controlling template instantiation\iref{temp.explicit}, + \item guiding template argument deduction for constructors\iref{temp.deduct.guide}, +-\item use of attributes\iref{dcl.attr}, and ++\item use of \link{attributes}{dcl.attr}, and + \item nothing (in the case of an \grammarterm{empty-declaration}). + \end{itemize} + \end{note} +@@ -334,7 +334,7 @@ In some circumstances, \Cpp{} implementations implicitly define the + default constructor\iref{class.default.ctor}, + copy constructor, move constructor\iref{class.copy.ctor}, + copy assignment operator, move assignment operator\iref{class.copy.assign}, +-or destructor\iref{class.dtor} member functions. ++or \link{destructor}{class.dtor} member functions. + \end{note} + \begin{example} + Given +@@ -419,7 +419,7 @@ defined as follows: + an \grammarterm{id-expression}\iref{expr.prim.id} or + a \grammarterm{splice-expression}\iref{expr.prim.splice}, the set + contains only $E$. +-\item If $E$ is a subscripting operation\iref{expr.sub} with ++\item If $E$ is a \link{subscripting}{expr.sub} operation with + an array operand, the set contains the potential results of that operand. + \item If $E$ is a class member access + expression\iref{expr.ref} of the form +@@ -430,16 +430,15 @@ the set contains the potential results of $E_1$. + \item If $E$ is a class member access expression + naming a static data member, + the set contains the \grammarterm{id-expression} designating the data member. +-\item If $E$ is a pointer-to-member +-expression\iref{expr.mptr.oper} of the form ++\item If $E$ is a \link{pointer-to-member expression}{expr.mptr.oper} of the form + $E_1$ \tcode{.*} $E_2$, + the set contains the potential results of $E_1$. + \item If $E$ has the form \tcode{($E_1$)}, the set contains the + potential results of $E_1$. +-\item If $E$ is a glvalue conditional +-expression\iref{expr.cond}, the set is the union of the sets of ++\item If $E$ is a glvalue \link{conditional expression}{expr.cond}, ++the set is the union of the sets of + potential results of the second and third operands. +-\item If $E$ is a comma expression\iref{expr.comma}, the set ++\item If $E$ is a \link{comma expression}{expr.comma}, the set + contains the potential results of the right operand. + \item Otherwise, the set is empty. + \end{itemize} +@@ -601,8 +600,8 @@ implicitly-defined + copy assignment or move assignment function for another class as specified + in~\ref{class.copy.assign}. + A constructor for a class is odr-used as specified +-in~\ref{dcl.init}. A destructor for a class is odr-used if it is potentially +-invoked\iref{class.dtor}. ++in~\ref{dcl.init}. A destructor for a class is odr-used if it is ++\deflink{potentially invoked}{class.dtor}. + + \pnum + A local entity\iref{basic.pre} +@@ -674,7 +673,7 @@ void h() { + \pnum + Every program shall contain at least one definition of every + function or variable that is odr-used in that program +-outside of a discarded statement\iref{stmt.if}; no diagnostic required. ++outside of a \deflink{discarded statement}{stmt.if}; no diagnostic required. + The definition can appear explicitly in the program, it can be found in + the standard or a user-defined library, or (when appropriate) it is + implicitly defined (see~\ref{class.default.ctor}, \ref{class.copy.ctor}, +@@ -722,9 +721,9 @@ The rules for declarations and expressions + describe in which contexts complete class types are required. A class + type \tcode{T} must be complete if + \begin{itemize} +-\item an object of type \tcode{T} is defined\iref{basic.def}, or +-\item a non-static class data member of type \tcode{T} is +-declared\iref{class.mem}, or ++\item an object of type \tcode{T} is \link{defined}{basic.def}, or ++\item a non-static class \deflink{data member}{class.mem} of ++type \tcode{T} is declared, or + \item \tcode{T} is used as the allocated type or array element type in a + \grammarterm{new-expression}\iref{expr.new}, or + \item an lvalue-to-rvalue conversion is applied to +@@ -744,7 +743,7 @@ a \keyword{static_cast}\iref{expr.static.cast}, or + \keyword{sizeof} operator\iref{expr.sizeof} is applied to an operand of + type \tcode{T}, or + \item a function with a return type or argument type of type \tcode{T} +-is defined\iref{basic.def} or called\iref{expr.call}, or ++is defined\iref{basic.def} or \link{called}{expr.call}, or + \item a class with a base class of type \tcode{T} is + defined\iref{class.derived}, or + \item an lvalue of type \tcode{T} is assigned to\iref{expr.assign}, or +@@ -2945,7 +2944,7 @@ are attached to the same module. + \indextext{linkage!\idxcode{inline} and}% + \indextext{\idxcode{inline}!linkage of}% + The name of an entity +-that belongs to a namespace scope\iref{basic.scope.namespace} ++that belongs to a \link{namespace scope}{basic.scope.namespace} + has internal linkage if it is the name of + \begin{itemize} + \item +@@ -2986,7 +2985,7 @@ typedef declaration in which the class has the typedef name for linkage + purposes\iref{dcl.typedef}; or + \item + \indextext{enumeration!linkage of}% +-a named enumeration\iref{dcl.enum}, or an unnamed enumeration defined ++a named \link{enumeration}{dcl.enum}, or an unnamed enumeration defined + in a typedef declaration in which the enumeration has the typedef name + for linkage purposes\iref{dcl.typedef}; or + \item an unnamed enumeration +@@ -3062,7 +3061,7 @@ the declaration at line \#3 still redeclares \#1 and receives internal linkage. + \pnum + \indextext{linkage!no}% + Names not covered by these rules have no linkage. Moreover, except as +-noted, a name declared at block scope\iref{basic.scope.block} has no ++noted, a name declared at \deflinkx{block scope}{scope!block}{basic.scope.block} has no + linkage. + + \pnum +@@ -3421,8 +3420,8 @@ features of the language, such as references and virtual functions, might + involve additional memory locations that are not accessible to programs but are + managed by the implementation. + \end{note} +-Two or more threads of +-execution\iref{intro.multithread} can access separate memory ++Two or more \deflinkx{threads of ++execution}{thread of execution}{intro.multithread} can access separate memory + locations without interfering with each other. + + \pnum +@@ -3466,15 +3465,15 @@ bit-fields \tcode{b} and \tcode{c} cannot be concurrently modified, but + The constructs in a \Cpp{} program create, destroy, refer to, access, and + manipulate objects. + An \defn{object} is created +-by a definition\iref{basic.def}, ++by a \link{definition}{basic.def}, + by a \grammarterm{new-expression}\iref{expr.new}, + by an operation that implicitly creates objects (see below), +-when implicitly changing the active member of a union\iref{class.union}, ++when implicitly changing the active member of a \link{union}{class.union}, + or + when a temporary object is created\iref{conv.rval,class.temporary}. + An object occupies a region of storage + in its period of construction\iref{class.cdtor}, +-throughout its lifetime\iref{basic.life}, ++throughout its \link{lifetime}{basic.life}, + and + in its period of destruction\iref{class.cdtor}. + \begin{note} +@@ -3608,7 +3607,7 @@ A \defn{potentially-overlapping subobject} is either: + \begin{itemize} + \item a base class subobject, or + \item a non-static data member +-declared with the \tcode{no_unique_address} attribute\iref{dcl.attr.nouniqueaddr}. ++declared with the \link{\tcode{no_unique_address}}{dcl.attr.nouniqueaddr} attribute. + \end{itemize} + + \pnum +@@ -3629,7 +3628,7 @@ Otherwise, the circumstances under which the object has zero size + are \impldef{which non-standard-layout objects + containing no data are considered empty}. + \indextext{most derived object!bit-field}% +-Unless it is a bit-field\iref{class.bit}, ++Unless it is a \link{bit-field}{class.bit}, + an object with nonzero size + shall occupy one or more bytes of storage, + including every byte that is occupied in full or in part +@@ -4269,16 +4268,16 @@ the result of the evaluation is that erroneous value: + is produced by the evaluation of: + \begin{itemize} + \item +- the second or third operand of a conditional expression\iref{expr.cond}, ++ the second or third operand of a \link{conditional expression}{expr.cond}, + \item +- the right operand of a comma expression\iref{expr.comma}, ++ the right operand of a \link{comma expression}{expr.comma}, + \item + the operand of a cast or conversion\iref{conv.integral, + expr.type.conv,expr.static.cast,expr.cast} + to an unsigned ordinary character type + or \tcode{std::byte} type\iref{cstddef.syn}, or + \item +- a discarded-value expression\iref{expr.context}, ++ a \deflink{discarded-value expression}{expr.context}, + \end{itemize} + then the result of the operation is an indeterminate value or + that erroneous value, respectively. +@@ -4469,8 +4468,8 @@ specified in~\ref{class.copy.elision}. + \indextext{storage duration!dynamic|(} + + \pnum +-Objects can be created dynamically during program +-execution\iref{intro.execution}, using ++Objects can be created dynamically during \link{program ++execution}{intro.execution}, using + \indextext{\idxcode{new}}% + \grammarterm{new-expression}{s}\iref{expr.new}, and destroyed using + \indextext{\idxcode{delete}}% +@@ -4634,9 +4633,9 @@ that would match a handler\iref{except.handle} of type + \tcode{std::bad_alloc}\iref{bad.alloc}. + + \pnum +-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 to allocate storage for ++A global allocation function is only called as the result of a \link{new ++expression}{expr.new}, or called directly using the \link{function call}{expr.call} ++syntax, or called indirectly to allocate storage for + a coroutine state\iref{dcl.fct.def.coroutine}, + or called indirectly through calls to the + functions in the \Cpp{} standard library. +@@ -5161,9 +5160,9 @@ shall be destroyed before + impose requirements on implementations regarding the representation + of types. + There are two kinds of types: fundamental types and compound types. +-Types describe objects\iref{intro.object}, +-references\iref{dcl.ref}, +-or functions\iref{dcl.fct}. ++Types describe \link{objects}{intro.object}, ++\link{references}{dcl.ref}, ++or \link{functions}{dcl.fct}. + \end{note} + + \pnum +@@ -5337,7 +5336,7 @@ Arithmetic types\iref{basic.fundamental}, enumeration types, + pointer types, pointer-to-member types\iref{basic.compound}, + \tcode{std::meta::\brk{}info}, \tcode{std::nullptr_t}, + and +-cv-qualified\iref{basic.type.qualifier} versions of these ++\link{cv-qualified}{basic.type.qualifier} versions of these + types are collectively called + \defnadjx{scalar}{types}{type}. + \label{term.trivially.copyable.type}% +@@ -5362,7 +5361,7 @@ A type is a \defnadj{literal}{type} if it is: + \item a scalar type; or + \item a reference type; or + \item an array of literal type; or +-\item a possibly cv-qualified class type\iref{class} that ++\item a possibly cv-qualified \link{class type}{class} that + has all of the following properties: + \begin{itemize} + \item it has a constexpr destructor\iref{dcl.constexpr}, +@@ -5396,8 +5395,8 @@ will be usable in a constant expression. + Two types \cvqual{cv1} \tcode{T1} and \cvqual{cv2} \tcode{T2} are + \defnadjx{layout-compatible}{types}{type} + if \tcode{T1} and \tcode{T2} are the same type, +-layout-compatible enumerations\iref{dcl.enum}, or +-layout-compatible standard-layout class types\iref{class.mem}. ++\deflinkx{layout-compatible enumerations}{layout-compatible!enumeration}{dcl.enum}, or ++\deflinkx{layout-compatible standard-layout class types}{layout-compatible!class}{class.mem}. + + \pnum + A type is \defn{consteval-only} if it is +@@ -5971,7 +5970,7 @@ ordinary pointers to objects or functions. + which identify members of a given + type within objects of a given class, \ref{dcl.mptr}. + Pointers to data members and pointers to member functions are collectively +-called \term{pointer-to-member} types. ++called \defn{pointer-to-member} types. + \end{itemize} + + \pnum +@@ -6049,7 +6048,7 @@ 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 ++Pointers to \deflinkx{over-aligned types}{type!over-aligned}{basic.align} have no special + representation, but their range of valid values is restricted by the extended + alignment requirement. + \end{note} +@@ -6386,8 +6385,8 @@ the definition of the usual arithmetic conversions\iref{expr.arith.conv}. + \indextext{program execution|(} + + \pnum +-An instance of each object with automatic storage +-duration\iref{basic.stc.auto} is associated with each entry into its ++An instance of each object with \link{automatic storage ++duration}{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, suspension of a coroutine\iref{expr.await}, or receipt of a signal). +@@ -6432,7 +6431,7 @@ if $E$ is a \grammarterm{lambda-expression}\iref{expr.prim.lambda}, + the initialization of the entities captured by copy and + the constituent expressions of the \grammarterm{initializer} of the \grammarterm{init-capture}{s}, + \item +-if $E$ is a function call\iref{expr.call} or implicitly invokes a function, ++if $E$ is a \link{function call}{expr.call} or implicitly invokes a function, + the constituent expressions of each default argument\iref{dcl.fct.default} + used in the call, and + \item +@@ -6463,7 +6462,7 @@ are not subexpressions of a nested unevaluated operand\iref{term.unevaluated.ope + A \defn{full-expression} is + \begin{itemize} + \item +-an unevaluated operand\iref{expr.context}, ++an \deflink{unevaluated operand}{expr.context}, + \item + a \grammarterm{constant-expression}\iref{expr.const.core}, + \item +diff --git a/source/classes.tex b/source/classes.tex +index 6cd80b27..b1db5350 100644 +--- a/source/classes.tex ++++ b/source/classes.tex +@@ -188,10 +188,10 @@ A class \tcode{S} is a \defnadj{standard-layout}{class} if it: + \item has no non-static data members of type non-standard-layout class + (or array of such types) or reference, + +-\item has no virtual functions\iref{class.virtual} and no +-virtual base classes\iref{class.mi}, ++\item has no \link{virtual functions}{class.virtual} and no ++\link{virtual base classes}{class.mi}, + +-\item has the same access control\iref{class.access} ++\item has the same \link{access control}{class.access} + for all non-static data members, + + \item has no non-standard-layout base classes, +@@ -574,7 +574,7 @@ if it is + \end{itemize} + For any other \grammarterm{member-declaration}, + each declared entity +-that is not an unnamed bit-field\iref{class.bit} ++that is not an \deflinkx{unnamed bit-field}{bit-field!unnamed}{class.bit} + is a member of the class, + and each such \grammarterm{member-declaration} + shall either +@@ -593,7 +593,7 @@ Nested types are classes\iref{class.name,class.nest} and + enumerations\iref{dcl.enum} declared in the class and arbitrary types + declared as members by use of a typedef declaration\iref{dcl.typedef} + or \grammarterm{alias-declaration}. +-The enumerators of an unscoped enumeration\iref{dcl.enum} defined in the class ++The enumerators of an \link{unscoped enumeration}{dcl.enum} defined in the class + are members of the class. + + \pnum +@@ -739,9 +739,9 @@ shall contain a \grammarterm{type-specifier} that is not a \grammarterm{cv-quali + The + \grammarterm{member-declarator-list} can be omitted only after a + \grammarterm{class-specifier} or an \grammarterm{enum-specifier} or in a +-friend declaration\iref{class.friend}. A ++\link{friend declaration}{class.friend}. A + \grammarterm{pure-specifier} shall be used only in the declaration of a +-virtual function\iref{class.virtual} ++\link{virtual function}{class.virtual} + that is not a friend declaration. + + \pnum +@@ -844,7 +844,7 @@ unscoped enumeration type; and + + \pnum + In addition, if class \tcode{T} has a user-declared +-constructor\iref{class.ctor}, every non-static data member of class ++\link{constructor}{class.ctor}, every non-static data member of class + \tcode{T} shall have a name different from \tcode{T}. + + \pnum +@@ -894,7 +894,7 @@ non-static data members (in any order) have layout-compatible + types\iref{term.layout.compatible.type}. + + \pnum +-In a standard-layout union with an active member\iref{class.union} ++In a standard-layout union with an \deflinkx{active member}{active!union member}{class.union} + of struct type \tcode{T1}, it is permitted to read a non-static + data member \tcode{m} of another union member of struct type \tcode{T2} + provided \tcode{m} is part of the common initial sequence of \tcode{T1} and \tcode{T2}; +@@ -2236,7 +2236,7 @@ by a \grammarterm{new-expression}\iref{expr.new}; the context of the invocation + An array of class type contains several subobjects for each of which + the destructor is invoked. + \end{note} +-A destructor can also be invoked explicitly. A destructor is \term{potentially invoked} ++A destructor can also be invoked explicitly. A destructor is \defn{potentially invoked} + if it is invoked or as specified in~\ref{expr.new}, + \ref{stmt.return}, \ref{dcl.init.aggr}, + \ref{class.base.init}, and~\ref{except.throw}. +@@ -6344,7 +6344,7 @@ associated with a \grammarterm{try-block} (if there is one), + the copy-initialization of the exception object can be omitted by + constructing $o$ directly into the exception object; + +-\item in a coroutine\iref{dcl.fct.def.coroutine}, a copy of a coroutine parameter ++\item in a \link{coroutine}{dcl.fct.def.coroutine}, a copy of a coroutine parameter + can be omitted and references to that copy replaced with references to the + corresponding parameter if the meaning of the program will be unchanged except for + the execution of a constructor and destructor for the parameter copy object; +diff --git a/source/compatibility.tex b/source/compatibility.tex +index e3512400..cdca4c22 100644 +--- a/source/compatibility.tex ++++ b/source/compatibility.tex +@@ -1981,8 +1981,8 @@ deallocation functions\iref{expr.new}. + A conditional expression with a throw expression as its second or third + operand keeps the type and value category of the other operand. + \rationale +-Formerly mandated conversions (lvalue-to-rvalue\iref{conv.lval}, +-array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} ++Formerly mandated conversions (\link{lvalue-to-rvalue}{conv.lval}, ++\link{array-to-pointer}{conv.array}, and \link{function-to-pointer}{conv.func} + standard conversions), especially the creation of the temporary due to + lvalue-to-rvalue conversion, were considered gratuitous and surprising. + \effect +diff --git a/source/concepts.tex b/source/concepts.tex +index d1e15a6e..42828a4b 100644 +--- a/source/concepts.tex ++++ b/source/concepts.tex +@@ -300,7 +300,7 @@ classifications, and fundamental type properties. + + \begin{itemdecl} + template +- concept @\defexposconcept{same-as-impl}@ = is_same_v; // \expos ++ concept @\defexposconcept{same-as-impl}@ = @\libglobalref{is_same_v}@; // \expos + + template + concept @\deflibconcept{same_as}@ = @\exposconcept{same-as-impl}@ && @\exposconcept{same-as-impl}@; +@@ -493,13 +493,13 @@ Users can customize the behavior of \libconcept{common_with} by specializing the + + \begin{itemdecl} + template +- concept @\deflibconcept{integral}@ = is_integral_v; ++ concept @\deflibconcept{integral}@ = @\libglobalref{is_integral_v}@; + template +- concept @\deflibconcept{signed_integral}@ = @\libconcept{integral}@ && is_signed_v; ++ concept @\deflibconcept{signed_integral}@ = @\libconcept{integral}@ && @\libglobalref{is_signed_v}@; + template + concept @\deflibconcept{unsigned_integral}@ = @\libconcept{integral}@ && !@\libconcept{signed_integral}@; + template +- concept @\deflibconcept{floating_point}@ = is_floating_point_v; ++ concept @\deflibconcept{floating_point}@ = @\libglobalref{is_floating_point_v}@; + \end{itemdecl} + + \begin{itemdescr} +@@ -748,7 +748,7 @@ types. + + \begin{itemdecl} + template +- concept @\deflibconcept{destructible}@ = is_nothrow_destructible_v; ++ concept @\deflibconcept{destructible}@ = @\libglobalref{is_nothrow_destructible_v}@; + \end{itemdecl} + + \begin{itemdescr} +@@ -768,7 +768,7 @@ variable of a given type with a particular set of argument types. + + \begin{itemdecl} + template +- concept @\deflibconcept{constructible_from}@ = @\libconcept{destructible}@ && is_constructible_v; ++ concept @\deflibconcept{constructible_from}@ = @\libconcept{destructible}@ && @\libglobalref{is_constructible_v}@; + \end{itemdecl} + + \rSec2[concept.default.init]{Concept \cname{default_initializable}} +diff --git a/source/containers.tex b/source/containers.tex +index 8b043683..fe9418c0 100644 +--- a/source/containers.tex ++++ b/source/containers.tex +@@ -6143,14 +6143,14 @@ namespace std { + \indextext{\idxcode{array}!contiguous storage}% + The header \libheader{array} defines a class template for storing fixed-size + sequences of objects. +-An \tcode{array} is a contiguous container\iref{container.reqmts}. ++An \tcode{array} is a \deflinkx{contiguous container}{container!contiguous}{container.reqmts}. + An instance of \tcode{array} stores \tcode{N} elements of type \tcode{T}, + so that \tcode{size() == N} is an invariant. + + \pnum + \indextext{\idxcode{array}!initialization}% + \indextext{\idxcode{array}!as aggregate}% +-An \tcode{array} is an aggregate\iref{dcl.init.aggr} that can be ++An \tcode{array} is an \deflink{aggregate}{dcl.init.aggr} that can be + list-initialized with up + to \tcode{N} elements whose types are convertible to \tcode{T}. + +@@ -6161,8 +6161,8 @@ of a container\iref{container.reqmts} and + of a reversible container\iref{container.rev.reqmts}, + except that a default + constructed \tcode{array} object is not empty if $\tcode{N} > 0$. +-An \tcode{array} meets some of the requirements of a sequence +-container\iref{sequence.reqmts}. ++An \tcode{array} meets some of the requirements of a ++\link{sequence container}{sequence.reqmts}. + Descriptions are provided here + only for operations on \tcode{array} that are not described in + one of these tables and +@@ -6172,7 +6172,7 @@ for operations where there is additional semantic information. + \tcode{array} is a structural type\iref{term.structural.type} if + \tcode{T} is a structural type. + Two values \tcode{a1} and \tcode{a2} of type \tcode{array} +-are template-argument-equivalent\iref{temp.type} if and only if ++are \deflink{template-argument-equivalent}{temp.type} if and only if + each pair of corresponding elements in \tcode{a1} and \tcode{a2} + are template-argument-equivalent. + +@@ -6497,7 +6497,7 @@ namespace std { + A + \indexlibraryglobal{deque}% + \tcode{deque} +-is a sequence container that supports random access iterators\iref{random.access.iterators}. ++is a sequence container that supports \link{random access iterators}{random.access.iterators}. + In addition, it supports constant time insert and erase operations at the beginning or the end; + insert and erase in the middle take linear time. + That is, a deque is especially optimized for pushing and popping elements at the beginning and end. +@@ -7162,7 +7162,7 @@ namespace std { + \pnum + An incomplete type \tcode{T} may be used when instantiating \tcode{forward_list} + if the allocator meets the +-allocator completeness requirements\iref{allocator.requirements.completeness}. ++\link{allocator completeness requirements}{allocator.requirements.completeness}. + \tcode{T} shall be complete before any member of the resulting specialization + of \tcode{forward_list} is referenced. + +@@ -7746,7 +7746,7 @@ predicate. + + \pnum + \remarks +-Stable\iref{algorithm.stable}. ++\link{Stable}{algorithm.stable}. + \end{itemdescr} + + \indexlibrarymember{unique}{forward_list}% +@@ -7851,7 +7851,7 @@ Approximately $N \log N$ comparisons, where $N$ is \tcode{distance(begin(), end( + + \pnum + \remarks +-Stable\iref{algorithm.stable}. ++\link{Stable}{algorithm.stable}. + \end{itemdescr} + + \indexlibrarymember{reverse}{forward_list}% +@@ -9087,7 +9087,7 @@ A + is a sequence container that supports + bidirectional iterators and allows constant time insert and erase + operations anywhere within the sequence, with storage management handled +-automatically. Unlike vectors\iref{vector} and deques\iref{deque}, ++automatically. Unlike \link{vectors}{vector} and \link{deques}{deque}, + fast random access to list elements is not supported, but many + algorithms only need sequential access anyway. + +@@ -9263,7 +9263,7 @@ namespace std { + \pnum + An incomplete type \tcode{T} may be used when instantiating \tcode{list} + if the allocator meets the +-allocator completeness requirements\iref{allocator.requirements.completeness}. ++\link{allocator completeness requirements}{allocator.requirements.completeness}. + \tcode{T} shall be complete before any member of the resulting specialization + of \tcode{list} is referenced. + +@@ -9676,7 +9676,7 @@ applications of the corresponding predicate. + + \pnum + \remarks +-Stable\iref{algorithm.stable}. ++\link{Stable}{algorithm.stable}. + \end{itemdescr} + + \indexlibrarymember{unique}{list}% +@@ -9799,7 +9799,7 @@ comparisons, where $N$ is \tcode{size()}. + + \pnum + \remarks +-Stable\iref{algorithm.stable}. ++\link{Stable}{algorithm.stable}. + \end{itemdescr} + + \rSec3[list.erasure]{Erasure} +@@ -9907,7 +9907,7 @@ of an allocator-aware container\iref{container.alloc.reqmts}, + of a sequence container, including most of the optional sequence container + requirements\iref{sequence.reqmts}, + and, for an element type other than \tcode{bool}, +-of a contiguous container\iref{container.reqmts}. ++of a \deflinkx{contiguous container}{container!contiguous}{container.reqmts}. + The exceptions are the + \tcode{push_front}, \tcode{prepend_range}, \tcode{pop_front}, and \tcode{emplace_front} member functions, which are not + provided. Descriptions are provided here only for operations on \tcode{vector} +@@ -10045,7 +10045,7 @@ namespace std { + \pnum + An incomplete type \tcode{T} may be used when instantiating \tcode{vector} + if the allocator meets the +-allocator completeness requirements\iref{allocator.requirements.completeness}. ++\link{allocator completeness requirements}{allocator.requirements.completeness}. + \tcode{T} shall be complete before any member of the resulting specialization + of \tcode{vector} is referenced. + +@@ -10641,7 +10641,7 @@ Unless described below, all operations have the same requirements and + semantics as the \tcode{vector} primary template, except that operations + dealing with the \tcode{bool} value type map to bit values in the + container storage and +-\tcode{allocator_traits::construct}\iref{allocator.traits.members} ++\libmemberrefx{allocator_traits::construct}{allocator_traits}{construct} + is not used to construct these values. + + \pnum +@@ -15779,9 +15779,9 @@ and + can be used to instantiate + \tcode{queue}. + In particular, +-\tcode{list}\iref{list} ++\link{\tcode{list}}{list} + and +-\tcode{deque}\iref{deque} ++\link{\tcode{deque}}{deque} + can be used. + + \begin{codeblock} +@@ -16136,15 +16136,15 @@ and + can be used to instantiate + \tcode{priority_queue}. + In particular, +-\tcode{vector}\iref{vector} ++\link{\tcode{vector}}{vector} + and +-\tcode{deque}\iref{deque} ++\link{\tcode{deque}}{deque} + can be used. + Instantiating + \tcode{priority_queue} + also involves supplying a function or function object for making + priority comparisons; the library assumes that the function or function +-object defines a strict weak ordering\iref{alg.sorting}. ++object defines a \link{strict weak ordering}{alg.sorting}. + + \begin{codeblock} + namespace std { +@@ -16692,10 +16692,10 @@ and + can be used to instantiate + \tcode{stack}. + In particular, +-\tcode{vector}\iref{vector}, +-\tcode{list}\iref{list} ++\link{\tcode{vector}}{vector}, ++\link{\tcode{list}}{list} + and +-\tcode{deque}\iref{deque} ++\link{\tcode{deque}}{deque} + can be used. + + \rSec3[stack.defn]{Definition} +diff --git a/source/declarations.tex b/source/declarations.tex +index 627360a2..cea5493a 100644 +--- a/source/declarations.tex ++++ b/source/declarations.tex +@@ -547,7 +547,7 @@ in explicit specializations and explicit instantiations, respectively. + \begin{note} + A variable declared without a \grammarterm{storage-class-specifier} + at block scope or declared as a function parameter +-has automatic storage duration by default\iref{basic.stc.auto}. ++has \deflinkx{automatic storage duration}{storage duration!automatic}{basic.stc.auto} by default. + \end{note} + + \pnum +@@ -815,10 +815,10 @@ an alias template or a type template template parameter. + A \grammarterm{simple-template-id} that names a class template specialization + is a \grammarterm{class-name}\iref{class.name}. + If a \grammarterm{typedef-name} is used to identify the subject of an +-\grammarterm{elaborated-type-specifier}\iref{dcl.type.elab}, a class +-definition\iref{class}, a constructor +-declaration\iref{class.ctor}, or a destructor +-declaration\iref{class.dtor}, the program is ill-formed. ++\grammarterm{elaborated-type-specifier}\iref{dcl.type.elab}, a \link{class ++definition}{class}, a \link{constructor ++declaration}{class.ctor}, or a \link{destructor ++declaration}{class.dtor}, the program is ill-formed. + \end{note} + \begin{example} + \begin{codeblock} +@@ -1151,7 +1151,7 @@ If an inline function or variable that is attached to a named module + is declared in a definition domain, + it shall be defined in that domain. + \begin{note} +-A constexpr function\iref{dcl.constexpr} is implicitly inline. ++A \deflinkx{constexpr function}{specifier!\idxcode{constexpr}!function}{dcl.constexpr} is implicitly inline. + In the global module, a function defined within a class definition + is implicitly inline\iref{class.mfct,class.friend}. + \end{note} +@@ -1290,7 +1290,7 @@ the object referenced is a non-const object and can be modified through + some other access path. + \begin{note} + Cv-qualifiers are supported by the type system so that they cannot be +-subverted without casting\iref{expr.const.cast}. ++subverted without \link{casting}{expr.const.cast}. + \end{note} + + \pnum +@@ -1734,8 +1734,7 @@ is \tcode{T\&}, where \tcode{T} is the type of $E$; + \item otherwise, \tcode{decltype($E$)} is the type of $E$. + \end{itemize} + +-The operand of the \keyword{decltype} specifier is an unevaluated +-operand\iref{term.unevaluated.operand}. ++The operand of the \keyword{decltype} specifier is an \deflink{unevaluated operand}{expr.context}. + + \begin{example} + \begin{codeblock} +@@ -1934,7 +1933,7 @@ explicitly allowed in \ref{dcl.spec.auto} is ill-formed. + If the \grammarterm{init-declarator-list} contains more than one + \grammarterm{init-declarator}, they shall all form declarations of + variables. The type of each declared variable is determined +-by placeholder type deduction\iref{dcl.type.auto.deduct}, ++by \deflink{placeholder type deduction}{dcl.type.auto.deduct}, + and if the type that replaces the placeholder type is not the + same in each deduction, the program is ill-formed. + +@@ -2076,7 +2075,7 @@ A function declared with a return type that uses a placeholder type shall not + be a coroutine\iref{dcl.fct.def.coroutine}. + + \pnum +-An explicit instantiation declaration\iref{temp.explicit} does not cause the ++An \link{explicit instantiation declaration}{temp.explicit} does not cause the + instantiation of an entity declared using a placeholder type, but it also does + not prevent that entity from being instantiated as needed to determine its + type. +@@ -2291,7 +2290,7 @@ in the \grammarterm{type-specifier-seq} + in the \grammarterm{new-type-id} or \grammarterm{type-id} + of a \grammarterm{new-expression}\iref{expr.new}, + as the \grammarterm{simple-type-specifier} +-in an explicit type conversion (functional notation)\iref{expr.type.conv}, ++in an \link{explicit type conversion (functional notation)}{expr.type.conv}, + or + as the \grammarterm{type-specifier} in the \grammarterm{parameter-declaration} + of a \grammarterm{template-parameter}\iref{temp.param}. +@@ -4501,7 +4500,7 @@ int a; + int f(int a, int b = a); // error: parameter \tcode{a} used as default argument + typedef int I; + int g(float I, int b = I(2)); // error: parameter \tcode{I} found +-int h(int a, int b = sizeof(a)); // OK, unevaluated operand\iref{term.unevaluated.operand} ++int h(int a, int b = sizeof(a)); // OK, \deflink{unevaluated operand}{expr.context} + \end{codeblock} + \end{example} + A non-static member shall not be designated in a default argument unless +@@ -6226,15 +6225,15 @@ This requires a conversion + function\iref{class.conv.fct} returning a reference type. + \end{footnote} + (this conversion is selected by enumerating the applicable conversion +-functions\iref{over.match.ref} and choosing the best one through overload +-resolution\iref{over.match}), ++functions\iref{over.match.ref} and choosing the best one through \link{overload ++resolution}{over.match}), + \end{itemize} + then the reference binds to the initializer expression lvalue in the + first case and to the lvalue result of the conversion + in the second case (or, in either case, to the appropriate base class subobject of the object). + \begin{note} +-The usual lvalue-to-rvalue\iref{conv.lval}, array-to-pointer\iref{conv.array}, +-and function-to-pointer\iref{conv.func} standard ++The usual \link{lvalue-to-rvalue}{conv.lval}, \link{array-to-pointer}{conv.array}, ++and \link{function-to-pointer}{conv.func} standard + conversions are not needed, and therefore are suppressed, when such + direct bindings to lvalues are done. + \end{note} +@@ -7747,7 +7746,7 @@ the initializer is + where \tcode{get} undergoes argument-dependent lookup\iref{basic.lookup.argdep}. + In either case, \tcode{get} is interpreted as a \grammarterm{template-id}. + \begin{note} +-Ordinary unqualified lookup\iref{basic.lookup.unqual} is not performed. ++Ordinary \link{unqualified lookup}{basic.lookup.unqual} is not performed. + \end{note} + In either case, \exposid{e} is an lvalue if the type of the entity \exposid{e} + is an lvalue reference and an xvalue otherwise. +@@ -7898,7 +7897,7 @@ is not looked up and is introduced by + the \grammarterm{enum-specifier} or \grammarterm{opaque-enum-declaration}. + If the \grammarterm{enum-head-name} of an \grammarterm{opaque-enum-declaration} contains + a \grammarterm{nested-name-specifier}, +-the declaration shall be an explicit specialization\iref{temp.expl.spec}. ++the declaration shall be an \link{explicit specialization}{temp.expl.spec}. + + \pnum + \indextext{constant!enumeration}% +@@ -8063,7 +8062,7 @@ if they have the same underlying type. + + \pnum + The value of an enumerator or an object of an unscoped enumeration type is +-converted to an integer by integral promotion\iref{conv.prom}. ++converted to an integer by \deflinkx{integral promotion}{integral promotion}{conv.prom}. + \begin{example} + \begin{codeblock} + enum color { red, yellow, green=20, blue }; +@@ -8346,7 +8345,7 @@ appertains to the namespace being defined or extended. + Members of an inline namespace can be used in most respects as though they were members + of the innermost enclosing namespace. Specifically, the inline namespace and its enclosing + namespace are both added to the set of associated namespaces used in +-argument-dependent lookup\iref{basic.lookup.argdep} whenever one of them is, ++\link{argument-dependent lookup}{basic.lookup.argdep} whenever one of them is, + and a \grammarterm{using-directive}\iref{namespace.udir} that names the inline + namespace is implicitly inserted into the enclosing namespace as for an unnamed + namespace\iref{namespace.unnamed}. Furthermore, each +@@ -9179,7 +9178,7 @@ 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 ++\link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can + be achieved using a \grammarterm{linkage-specification}: + + \indextext{\idxgram{linkage-specification}}% +@@ -9509,18 +9508,18 @@ For each individual attribute, the form of the + \pnum + In an \grammarterm{attribute-list}, an ellipsis may appear only if that + \grammarterm{attribute}'s specification permits it. An \grammarterm{attribute} followed +-by an ellipsis is a pack expansion\iref{temp.variadic}. ++by an ellipsis is a \deflink{pack expansion}{temp.variadic}. + An \grammarterm{attribute-specifier} that contains + an \grammarterm{attribute-list} with no \grammarterm{attribute}s + has no effect. + The order in which the \grammarterm{attribute-token}{s} appear in an + \grammarterm{attribute-list} is not significant. If a +-keyword\iref{lex.key} +-or an alternative token\iref{lex.digraph} that satisfies the syntactic requirements ++\link{keyword}{lex.key} ++or an \link{alternative token}{lex.digraph} that satisfies the syntactic requirements + of an \grammarterm{identifier}\iref{lex.name} is + contained in +-an \grammarterm{attribute-token}, it is considered an identifier. No name +-lookup\iref{basic.lookup} is performed on any of the identifiers contained in an ++an \grammarterm{attribute-token}, it is considered an identifier. No ++\link{name lookup}{basic.lookup} is performed on any of the identifiers contained in an + \grammarterm{attribute-token}. The \grammarterm{attribute-token} determines additional + requirements on the \grammarterm{attribute-argument-clause} (if any). + +@@ -9638,7 +9637,7 @@ declaration, the program is ill-formed. + \pnum + An \grammarterm{alignment-specifier} of the form + \tcode{alignas(} \grammarterm{type-id} \tcode{)} has the same +-effect as \tcode{alignas(\brk{}alignof(} \grammarterm{type-id}~\tcode{))}\iref{expr.alignof}. ++effect as \tcode{alignas(\brk{}\link{alignof}{expr.alignof}(} \grammarterm{type-id}~\tcode{))}. + + \pnum + The alignment requirement of an entity is the strictest nonzero alignment +@@ -9818,7 +9817,7 @@ unless the implementation can issue such diagnostic messages. + + \pnum + The \grammarterm{attribute-token} \tcode{fallthrough} +-may be applied to a null statement\iref{stmt.expr}; ++may be applied to a \deflinkx{null statement}{statement!null}{stmt.expr}; + such a statement is a \defnadj{fallthrough}{statement}. + No \grammarterm{attribute-argument-clause} shall be present. + A fallthrough statement may only appear within +diff --git a/source/diagnostics.tex b/source/diagnostics.tex +index d842475b..eee2454e 100644 +--- a/source/diagnostics.tex ++++ b/source/diagnostics.tex +@@ -508,13 +508,13 @@ the current state of \tcode{NDEBUG} each time that + + \pnum + An expression \tcode{assert(E)} +-is a constant subexpression\iref{defns.const.subexpr}, if ++is a \link{constant subexpression}{defns.const.subexpr}, if + \begin{itemize} + \item + \tcode{NDEBUG} is defined at the point where \tcode{assert} + is last defined or redefined, or + \item +-\tcode{E} contextually converted to \tcode{bool}\iref{conv} ++\tcode{E} \deflinkx{contextually converted to \tcode{bool}}{conversion!contextual to \tcode{bool}}{conv} + is a constant subexpression that evaluates to the value \tcode{true}. + \end{itemize} + +@@ -1529,7 +1529,7 @@ application program interfaces. + \pnum + \begin{note} + If an error represents an out-of-memory condition, implementations are +-encouraged to throw an exception object of type \tcode{bad_alloc}\iref{bad.alloc} rather ++encouraged to throw an exception object of type \link{\tcode{bad_alloc}}{bad.alloc} rather + than \tcode{system_error}. + \end{note} + \indexlibraryglobal{system_error}% +diff --git a/source/exceptions.tex b/source/exceptions.tex +index df3b639d..abd4aef1 100644 +--- a/source/exceptions.tex ++++ b/source/exceptions.tex +@@ -184,7 +184,7 @@ try : i(f(ii)), d(id) { + + \pnum + In this Clause, ``before'' and ``after'' refer to the +-``sequenced before'' relation\iref{intro.execution}. ++\deflinkx{``sequenced before''}{sequenced before}{intro.execution} relation. + + \rSec1[except.throw]{Throwing an exception}% + \indextext{exception handling!throwing}% +@@ -285,7 +285,7 @@ immediately after the destruction of the object (if any) + declared in the \grammarterm{exception-declaration} in the handler; + + \item +-when an object of type \tcode{std::exception_ptr}\iref{propagation} ++when an object of type \libglobalrefx{std::exception_ptr}{exception_ptr} + that refers to the exception object is destroyed, + before the destructor of \tcode{std::exception_ptr} returns. + \end{itemize} +@@ -293,7 +293,7 @@ before the destructor of \tcode{std::exception_ptr} returns. + Among all points of potential destruction for the exception object, + there is an unspecified last one + where the exception object is destroyed. +-All other points happen before that last one\iref{intro.races}. ++All other points \deflinkx{happen before}{happens before}{intro.races} that last one. + \begin{note} + No other thread synchronization is implied in exception handling. + \end{note} +@@ -341,7 +341,7 @@ returns the number of uncaught exceptions in the current thread. + \indextext{exception handling!rethrow}% + \indextext{rethrow|see{exception handling, rethrow}}% + An exception is considered caught when a handler for that exception +-becomes active\iref{except.handle}. ++becomes \deflinkx{active}{exception handling!handler!active}{except.handle}. + \begin{note} + An exception can have active handlers and still be considered uncaught if + it is rethrown. +@@ -353,7 +353,7 @@ it is rethrown. + If the exception handling mechanism + handling an uncaught exception + directly invokes a function that exits via an +-exception, the function \tcode{std::terminate} is invoked\iref{except.terminate}. ++exception, the function \link{\tcode{std::terminate}}{except.terminate} is invoked. + \begin{example} + \begin{codeblock} + struct C { +@@ -490,7 +490,7 @@ Such destruction is sequenced before entering a handler of the + \pnum + \begin{note} + If the object was allocated by a \grammarterm{new-expression}\iref{expr.new}, +-the matching deallocation function\iref{basic.stc.dynamic.deallocation}, ++the matching \link{deallocation function}{basic.stc.dynamic.deallocation}, + if any, is called to free the storage occupied by the object. + \end{note} + +@@ -555,12 +555,12 @@ that can be converted to \tcode{T} by one or more of + \begin{itemize} + + \item% +-a standard pointer conversion\iref{conv.ptr} not involving conversions ++a standard \link{pointer conversion}{conv.ptr} not involving conversions + to pointers to private or protected or ambiguous classes, + \item% +-a function pointer conversion\iref{conv.fctptr}, ++a \link{function pointer conversion}{conv.fctptr}, + \item% +-a qualification conversion\iref{conv.qual}, or ++a \link{qualification conversion}{conv.qual}, or + + \end{itemize} + +@@ -697,7 +697,7 @@ Exceptions thrown in destructors of objects with static storage duration or in + constructors of objects associated with non-block variables with static storage duration are not caught by a + \grammarterm{function-try-block} + on +-the \tcode{main} function\iref{basic.start.main}. ++the \link{\tcode{main} function}{basic.start.main}. + Exceptions thrown in destructors of objects with thread storage duration or in constructors of objects associated with non-block variables with thread storage duration are not caught by a + \grammarterm{function-try-block} + on the initial function of the thread. +@@ -769,7 +769,7 @@ otherwise it has a + The exception specification is either defined implicitly, + or defined explicitly + by using a \grammarterm{noexcept-specifier} +-as a suffix of a function declarator\iref{dcl.fct}. ++as a suffix of a \link{function declarator}{dcl.fct}. + + \begin{bnf} + \nontermdef{noexcept-specifier}\br +@@ -809,7 +809,7 @@ in which cases the exception specification + is as specified below + and no other declaration for that function + shall have a \grammarterm{noexcept-specifier}. +-In an explicit instantiation\iref{temp.explicit} ++In an \link{explicit instantiation}{temp.explicit} + a \grammarterm{noexcept-specifier} may be specified, + but is not required. + If a \grammarterm{noexcept-specifier} is specified +@@ -858,7 +858,7 @@ An expression $E$ is + \defnx{potentially-throwing}{potentially-throwing!expression} if + \begin{itemize} + \item +-$E$ is a function call\iref{expr.call} ++$E$ is a \link{function call}{expr.call} + whose \grammarterm{postfix-expression} + has a function type, + or a pointer-to-function type, +@@ -939,7 +939,7 @@ the invocation of any assignment operator + in the implicit definition is potentially-throwing. + + \pnum +-A deallocation function\iref{basic.stc.dynamic.deallocation} ++A \link{deallocation function}{basic.stc.dynamic.deallocation} + with no explicit \grammarterm{noexcept-specifier} + has a non-throwing exception specification. + +@@ -1053,9 +1053,9 @@ via an exception, or + \item% + when the exception handling mechanism cannot find a handler for a thrown exception\iref{except.handle}, or + +-\item when the search for a handler\iref{except.handle} ++\item when the search for a \link{handler}{except.handle} + exits the function body of a function +-with a non-throwing exception specification\iref{except.spec}, ++with a non-throwing \link{exception specification}{except.spec}, + including when a contract-violation handler + invoked from an evaluation of + a function contract assertion\iref{basic.contract.eval} associated with the function +@@ -1063,7 +1063,7 @@ exits via an exception, + or + + \item% +-when the destruction of an object during stack unwinding\iref{except.ctor} ++when the destruction of an object during \deflink{stack unwinding}{except.ctor} + terminates by throwing an exception, or + + \item% +diff --git a/source/expressions.tex b/source/expressions.tex +index 0ea2a413..24af225d 100644 +--- a/source/expressions.tex ++++ b/source/expressions.tex +@@ -33,14 +33,14 @@ effects. + \indextext{operator!overloaded}% + \begin{note} + Operators can be overloaded, that is, given meaning when applied to +-expressions of class type\iref{class} or enumeration +-type\iref{dcl.enum}. Uses of overloaded operators are transformed into ++expressions of \link{class}{class} type or ++\link{enumeration}{dcl.enum} type. 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.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 +-operators\iref{over.oper}. ++\tcode{++a} meaning \tcode{a += 1}, are not guaranteed for \link{overloaded ++operators}{over.oper}. + \end{note} + + \pnum +@@ -216,7 +216,7 @@ xvalues; rvalue references to functions are treated as lvalues whether named or + \begin{example} + \begin{codeblock} + struct A { +- int m; ++int m; + }; + A&& operator+(A, A); + A&& f(); +@@ -272,7 +272,7 @@ Unless otherwise specified\iref{expr.reinterpret.cast, expr.const.cast}, + whenever a prvalue + that is not the result of the lvalue-to-rvalue conversion\iref{conv.lval} + appears as an operand of an operator, +-the temporary materialization conversion\iref{conv.rval} is ++the \link{temporary materialization conversion}{conv.rval} is + applied to convert the expression to an xvalue. + + \pnum +@@ -455,31 +455,31 @@ An unevaluated operand is not evaluated. + In an unevaluated operand, a non-static class member can be + named\iref{expr.prim.id} and naming of objects or functions does not, by + itself, require that a definition be provided\iref{basic.def.odr}. +-An unevaluated operand is considered a full-expression\iref{intro.execution}. ++An unevaluated operand is considered a \deflink{full-expression}{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 ++The \link{array-to-pointer}{conv.array} ++and \link{function-to-pointer}{conv.func} standard conversions are not ++applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied + if and only if + the expression is a glvalue of volatile-qualified type and it is one of the + following: + + \begin{itemize} + \item \tcode{(} \grammarterm{expression} \tcode{)}, where +- \grammarterm{expression} is one of these expressions, ++\grammarterm{expression} is one of these expressions, + \item \grammarterm{id-expression}\iref{expr.prim.id}, + \item \grammarterm{splice-expression}\iref{expr.prim.splice}, +-\item subscripting\iref{expr.sub}, +-\item class member access\iref{expr.ref}, +-\item indirection\iref{expr.unary.op}, +-\item pointer-to-member operation\iref{expr.mptr.oper}, +-\item conditional expression\iref{expr.cond} where both the second and the ++\item \link{subscripting}{expr.sub}, ++\item \link{class member access}{expr.ref}, ++\item \deflink{indirection}{expr.unary.op}, ++\item \link{pointer-to-member operation}{expr.mptr.oper}, ++\item \link{conditional expression}{expr.cond} where both the second and the + third operands are one of these expressions, or +-\item comma expression\iref{expr.comma} where the right operand is one of ++\item \link{comma expression}{expr.comma} where the right operand is one of + these expressions. + \end{itemize} + +@@ -618,7 +618,7 @@ descriptions of those operators and contexts. + \pnum + \indextext{conversion!lvalue-to-rvalue}% + \indextext{type!incomplete}% +-A glvalue\iref{basic.lval} of a non-function, non-array type \tcode{T} ++A \deflink{glvalue}{basic.lval} of a non-function, non-array type \tcode{T} + can be converted to + a prvalue. + \begin{footnote} +@@ -643,18 +643,18 @@ is applied to an expression $E$, and either + \begin{itemize} + \item $E$ is not potentially evaluated, or + \item the evaluation of $E$ results in the evaluation of a member +- $E_\tcode{x}$ of the set of potential results of $E$, and $E_\tcode{x}$ +- names a variable \tcode{x} that is not odr-used by +- $E_\tcode{x}$\iref{basic.def.odr}, ++ $E_\tcode{x}$ of the set of potential results of $E$, and $E_\tcode{x}$ ++ names a variable \tcode{x} that is not odr-used by ++ $E_\tcode{x}$\iref{basic.def.odr}, + \end{itemize} + the value contained in the referenced object is not accessed. + \begin{example} + \begin{codeblock} + struct S { int n; }; + auto f() { +- S x { 1 }; +- constexpr S y { 2 }; +- return [&](bool b) { return (b ? y : x).n; }; ++S x { 1 }; ++constexpr S y { 2 }; ++return [&](bool b) { return (b ? y : x).n; }; + } + auto g = f(); + int m = g(false); // undefined behavior: access of \tcode{x.n} outside its lifetime +@@ -826,11 +826,11 @@ allowed), a program could inadvertently modify a const object + (as it is done on line \#2). For example, + \begin{codeblock} + int main() { +- const char c = 'c'; +- char* pc; +- const char** pcc = &pc; // \#1: not allowed +- *pcc = &c; +- *pc = 'C'; // \#2: modifies a const object ++const char c = 'c'; ++char* pc; ++const char** pcc = &pc; // \#1: not allowed ++*pcc = &c; ++*pc = 'C'; // \#2: modifies a const object + } + \end{codeblock} + \end{note} +@@ -1088,7 +1088,7 @@ the derived class object. + \indextext{conversion!pointer-to-member}% + \indextext{null member pointer conversion|see{conversion, null member pointer}}% + \indextext{constant!null pointer}% +-A null pointer constant\iref{conv.ptr} can be converted to a ++A \deflinkx{null pointer constant}{constant!null pointer}{conv.ptr} can be converted to a + pointer-to-member + type; the result is the \defnx{null member pointer value}{value!null member pointer} + of that type and is distinguishable from any pointer to member not +@@ -1317,7 +1317,7 @@ occur until the complete declarator is known. + \begin{note} + In a \grammarterm{trailing-return-type}, + the class being defined is not required to be complete +-for purposes of class member access\iref{expr.ref}. ++for purposes of \link{class member access}{expr.ref}. + Class members declared later are not visible. + \begin{example} + \begin{codeblock} +@@ -1384,8 +1384,8 @@ meaning, except as otherwise indicated. + An \grammarterm{id-expression} is a restricted form of a + \grammarterm{primary-expression}. + \begin{note} +-An \grammarterm{id-expression} can appear after \tcode{.} and \tcode{->} +-operators\iref{expr.ref}. ++An \grammarterm{id-expression} can appear after ++\link{\tcode{.} and \tcode{->} operators}{expr.ref}. + \end{note} + + \pnum +@@ -1518,7 +1518,7 @@ In each case, the constraints of \tcode{f} are not satisfied. + In the declaration of \tcode{p2}, + those constraints need to be satisfied + even though +-\tcode{f} is an unevaluated operand\iref{term.unevaluated.operand}. ++\tcode{f} is an \deflink{unevaluated operand}{expr.context}. + \end{example} + \end{note} + +@@ -2140,8 +2140,8 @@ void abssort(float* x, unsigned N) { + A \grammarterm{lambda-expression} is a prvalue + whose result object is called the \defn{closure object}. + \begin{note} +-A closure object behaves like a function +-object\iref{function.objects}. ++A closure object behaves like a \link{function ++object}{function.objects}. + \end{note} + + \pnum +@@ -2475,7 +2475,7 @@ The closure type for a non-generic \grammarterm{lambda-expression} with no + and no explicit object parameter\iref{dcl.fct} + whose constraints (if any) are satisfied + has a conversion function to pointer to +-function with \Cpp{} language linkage\iref{dcl.link} having ++function with \Cpp{} language \link{linkage}{dcl.link} having + the same parameter and return types as the closure type's function call operator. + The conversion is to ``pointer to \keyword{noexcept} function'' + if the function call operator +@@ -2584,8 +2584,8 @@ GL_int(3); // OK, same as \tcode{GL(3)} + + \pnum + The conversion function or conversion function template is public, +-constexpr, non-virtual, non-explicit, const, and has a non-throwing exception +-specification\iref{except.spec}. ++constexpr, non-virtual, non-explicit, const, and has a non-throwing \link{exception ++specification}{except.spec}. + \begin{example} + \begin{codeblock} + auto Fwd = [](int (*fp)(int), auto a) { return fp(a); }; +@@ -2643,9 +2643,9 @@ implicitly-declared destructor\iref{class.dtor}. + + \pnum + A member of a closure type shall not be +-explicitly instantiated\iref{temp.explicit}, +-explicitly specialized\iref{temp.expl.spec}, or +-named in a friend declaration\iref{class.friend}. ++\link{explicitly instantiated}{temp.explicit}, ++\link{explicitly specialized}{temp.expl.spec}, or ++named in a \link{friend declaration}{class.friend}. + + \rSec3[expr.prim.lambda.capture]{Captures}% + +@@ -3215,7 +3215,7 @@ A fold expression is a pack expansion. + \pnum + A \grammarterm{requires-expression} provides a concise way to express + requirements on template arguments +-that can be checked by name lookup\iref{basic.lookup} ++that can be checked by \link{name lookup}{basic.lookup} + or by checking properties of types and expressions. + + \begin{bnf} +@@ -3813,7 +3813,7 @@ or a prvalue of function pointer type. + If the selected + function is non-virtual, or if the \grammarterm{id-expression} in the class + member access expression is a \grammarterm{qualified-id}, that function is +-called. Otherwise, its final overrider\iref{class.virtual} in the dynamic type ++called. Otherwise, its \deflink{final overrider}{class.virtual} in the dynamic type + of the object expression is called; such a call is referred to as a + \defnx{virtual function call}{function!virtual function call}. + \begin{note} +@@ -3826,8 +3826,8 @@ an object under construction or destruction. + + \pnum + \begin{note} +-If a function name is used, and name +-lookup\iref{basic.lookup} does not find a declaration of that name, ++If a function name is used, and \link{name ++lookup}{basic.lookup} does not find a declaration of that name, + the program is ill-formed. No function is implicitly declared by such a + call. + \end{note} +@@ -3894,7 +3894,7 @@ function, + the object expression of the class member access shall be a glvalue and + the implicit object parameter of the function\iref{over.match.funcs} + is initialized with that glvalue, +-converted as if by an explicit type conversion\iref{expr.cast}. ++converted as if by an \link{explicit type conversion}{expr.cast}. + \begin{note} + There is no access or ambiguity checking on this conversion; the access + checking and disambiguation are done as part of the (possibly implicit) +@@ -4031,10 +4031,10 @@ pointer parameters. + \pnum + \indextext{declaration!ellipsis in function}% + \indextext{parameter list!variable}% +-A function can be declared to accept fewer arguments (by declaring default +-arguments\iref{dcl.fct.default}) or more arguments (by using the ellipsis, ++A function can be declared to accept fewer arguments (by declaring \link{default ++arguments}{dcl.fct.default}) or more arguments (by using the ellipsis, + \tcode{...}, or a function parameter pack\iref{dcl.fct}) than the number of +-parameters in the function definition\iref{dcl.fct.def}. ++parameters in the \link{function definition}{dcl.fct.def}. + \begin{note} + This implies that, except where the ellipsis (\tcode{...}) or a function + parameter pack is used, a parameter is available for each argument. +@@ -4052,8 +4052,8 @@ thus each such argument has a corresponding parameter when a function template + specialization is actually called. + \end{note} + The +-lvalue-to-rvalue\iref{conv.lval}, array-to-pointer\iref{conv.array}, +-and function-to-pointer\iref{conv.func} standard conversions are ++\link{lvalue-to-rvalue}{conv.lval}, \link{array-to-pointer}{conv.array}, ++and \link{function-to-pointer}{conv.func} standard conversions are + performed on the argument expression. + An argument that has type \cv{}~\tcode{std::nullptr_t} is converted + to type \tcode{\keyword{void}*}\iref{conv.ptr}. +@@ -4068,16 +4068,16 @@ an eligible non-trivial move constructor, or + a non-trivial destructor\iref{class.dtor}, + with no corresponding parameter, is conditionally-supported with + \impldef{passing argument of class type through ellipsis} semantics. If the argument has +-integral or enumeration type that is subject to the integral +-promotions\iref{conv.prom}, or a floating-point type that is subject to the +-floating-point promotion\iref{conv.fpprom}, the value of the argument is converted to the ++integral or enumeration type that is subject to the \link{integral ++promotions}{conv.prom}, or a floating-point type that is subject to the ++\link{floating-point promotion}{conv.fpprom}, the value of the argument is converted to the + promoted type before the call. These promotions are referred to as + the \defnx{default argument promotions}{promotion!default argument promotion}. + + \pnum + \indextext{function call!recursive}% +-Recursive calls are permitted, except to the \tcode{main} +-function\iref{basic.start.main}. ++Recursive calls are permitted, except to the \link{\tcode{main} ++function}{basic.start.main}. + + \pnum + A function call is an lvalue +@@ -4096,8 +4096,8 @@ except as specified in \ref{dcl.type.decltype}. + \indextext{type conversion, explicit|see{casting}}% + \indextext{conversion explicit type|see{casting}}% + \indextext{casting}% +-A \grammarterm{simple-type-specifier}\iref{dcl.type.simple} or +-\grammarterm{typename-specifier}\iref{temp.res} followed ++A \link{\grammarterm{simple-type-specifier}}{dcl.type.simple} or ++\link{\grammarterm{typename-specifier}}{temp.res} followed + by a parenthesized optional \grammarterm{expression-list} or + by a \grammarterm{braced-init-list} + (the initializer) +@@ -4108,7 +4108,7 @@ If the type is a placeholder + for a deduced class type, + it is replaced by the return type + of the function selected by overload resolution +-for class template deduction\iref{over.match.class.deduct} ++for \link{class template deduction}{over.match.class.deduct} + for the remainder of this subclause. + Otherwise, if the type contains a placeholder type, + it is replaced by the type +@@ -4507,8 +4507,8 @@ void foo(D* dp) { + \end{example} + + \pnum +-Otherwise, \tcode{v} shall be a pointer to or a glvalue of a polymorphic +-type\iref{class.virtual}. ++Otherwise, \tcode{v} shall be a pointer to or a glvalue of a ++\deflinkx{polymorphic type}{class!polymorphic}{class.virtual}. + + \pnum + If \tcode{v} is a null pointer value, the result is a null pointer value. +@@ -4559,9 +4559,9 @@ runtime check \term{fails}. + + \pnum + The value of a failed cast to pointer type is the null pointer value of +-the required result type. A failed cast to reference type throws +-an exception\iref{except.throw} of a type that would match a +-handler\iref{except.handle} of type \tcode{std::bad_cast}\iref{bad.cast}. ++the required result type. A failed cast to reference type \link{throws ++an exception}{except.throw} of a type that would match a ++\link{handler}{except.handle} of type \link{\tcode{std::bad_cast}}{bad.cast}. + + \indextext{\idxcode{bad_cast}}% + \indexlibraryglobal{bad_cast}% +@@ -4650,13 +4650,13 @@ glvalue refers. + When \keyword{typeid} is applied to an expression other than a glvalue of + a polymorphic class type, the result refers to a \tcode{std::type_info} + object representing the static type of the expression. +-Lvalue-to-rvalue\iref{conv.lval}, array-to-pointer\iref{conv.array}, +-and function-to-pointer\iref{conv.func} conversions are not applied to ++\link{Lvalue-to-rvalue}{conv.lval}, \link{array-to-pointer}{conv.array}, ++and \link{function-to-pointer}{conv.func} conversions are not applied to + the expression. + If the expression is a prvalue, +-the temporary materialization conversion\iref{conv.rval} ++the \link{temporary materialization conversion}{conv.rval} + is applied. +-The expression is an unevaluated operand\iref{term.unevaluated.operand}. ++The expression is an \deflink{unevaluated operand}{expr.context}. + + \pnum + When \keyword{typeid} is applied to a \grammarterm{type-id}, the result +@@ -4750,7 +4750,7 @@ of type \tcode{T1} can be cast to type ``rvalue + reference to \tcode{T2}'' if \tcode{T2} is reference-compatible with + \tcode{T1}\iref{dcl.init.ref}. If the value is not a bit-field, + the result refers to the object or the specified base class subobject +-thereof; otherwise, the lvalue-to-rvalue conversion\iref{conv.lval} ++thereof; otherwise, the \link{lvalue-to-rvalue conversion}{conv.lval} + is applied to the bit-field and the resulting prvalue is used as the + operand of the \keyword{static_cast} for the remainder of this subclause. + If \tcode{T2} is an inaccessible\iref{class.access} or +@@ -4855,7 +4855,8 @@ Otherwise, the behavior is undefined. + A prvalue of type ``pointer to \cvqual{cv1} \tcode{B}'', where \tcode{B} + is a class type, can be converted to a prvalue of type ``pointer to + \cvqual{cv2} \tcode{D}'', +-where \tcode{D} is a complete class derived\iref{class.derived} ++where \tcode{D} is a complete class ++\link{derived}{class.derived} + from \tcode{B}, + if \cvqual{cv2} is the same cv-qualification as, + or greater cv-qualification than, \cvqual{cv1}. +@@ -4876,7 +4877,7 @@ A prvalue of type ``pointer to member of \tcode{D} of type \cvqual{cv1} + \tcode{T}'' can be converted to a prvalue of type ``pointer to member of + \tcode{B} of type \cvqual{cv2} \tcode{T}'', where + \tcode{D} is a complete class type and +-\tcode{B} is a base class\iref{class.derived} of \tcode{D}, ++\tcode{B} is a \link{base class}{class.derived} of \tcode{D}, + if \cvqual{cv2} is the same cv-qualification + as, or greater cv-qualification than, \cvqual{cv1}. + \begin{note} +@@ -4887,7 +4888,7 @@ If no valid standard conversion + from ``pointer to member of \tcode{B} of type \tcode{T}'' + to ``pointer to member of \tcode{D} of type \tcode{T}'' + exists\iref{conv.mem}, the program is ill-formed. +-The null member pointer value\iref{conv.mem} is converted to the null ++The \deflinkx{null member pointer value}{value!null member pointer}{conv.mem} is converted to the null + member pointer value of the destination type. If class \tcode{B} + contains the original member, or is a base class of the class + containing the original member, the resulting pointer to member points +@@ -4910,7 +4911,7 @@ If the original pointer value represents the address + then the resulting pointer value\iref{basic.compound} is unspecified. + Otherwise, if the original pointer value points to an object \placeholder{a}, + and there is an object \placeholder{b} of type similar to \tcode{T} +-that is pointer-interconvertible\iref{basic.compound} with \placeholder{a}, ++that is \deflink{pointer-interconvertible}{basic.compound} with \placeholder{a}, + the result is a pointer to \placeholder{b}. + Otherwise, the pointer value is unchanged by the conversion. + \begin{example} +@@ -4933,8 +4934,8 @@ result of converting the expression \tcode{v} to type \tcode{T}. + If \tcode{T} is an lvalue reference type or an rvalue reference to function type, the result is an lvalue; + if \tcode{T} is an rvalue reference to object type, the result is an xvalue; + otherwise, the result is a prvalue and the +-lvalue-to-rvalue\iref{conv.lval}, array-to-pointer\iref{conv.array}, +-and function-to-pointer\iref{conv.func} standard conversions are ++\link{lvalue-to-rvalue}{conv.lval}, \link{array-to-pointer}{conv.array}, ++and \link{function-to-pointer}{conv.func} standard conversions are + performed on the expression \tcode{v}. Conversions that can be performed explicitly + using \keyword{reinterpret_cast} are listed below. No other conversion can + be performed explicitly using \keyword{reinterpret_cast}. +@@ -5099,10 +5100,10 @@ The result of the expression \tcode{\keyword{const_cast}(v)} is of type + lvalue; + if \tcode{T} is an rvalue reference to object type, the result is an xvalue; + otherwise, the result is a prvalue and the +-lvalue-to-rvalue\iref{conv.lval}, array-to-pointer\iref{conv.array}, +-and function-to-pointer\iref{conv.func} standard conversions are ++\link{lvalue-to-rvalue}{conv.lval}, \link{array-to-pointer}{conv.array}, ++and \link{function-to-pointer}{conv.func} standard conversions are + performed on the expression \tcode{v}. +-The temporary materialization conversion\iref{conv.rval} is not ++The \link{temporary materialization conversion}{conv.rval} is not + performed on \tcode{v}, other than as specified below. + Conversions that can be performed explicitly using + \keyword{const_cast} are listed below. No other conversion shall be +@@ -5655,7 +5656,7 @@ int a[] = { co_await h() }; // error: \grammarterm{await-expression} outside + The \keyword{sizeof} operator yields the number of bytes + occupied by a non-potentially-overlapping object of the type + of its operand. The operand is either an expression, +-which is an unevaluated operand\iref{term.unevaluated.operand}, or a parenthesized ++which is an \deflink{unevaluated operand}{expr.context}, or a parenthesized + \grammarterm{type-id}. + \indextext{type!incomplete}% + The \keyword{sizeof} operator shall not be applied to an expression that +@@ -5712,7 +5713,7 @@ array-to-pointer\iref{conv.array}, and + function-to-pointer\iref{conv.func} standard conversions are not + applied to the operand of \keyword{sizeof}. + If the operand is a prvalue, +-the temporary materialization conversion\iref{conv.rval} ++the \link{temporary materialization conversion}{conv.rval} + is applied. + + \pnum +@@ -5857,7 +5858,7 @@ object created by the \grammarterm{new-expression} has a cv-qualified type. + \end{bnf} + + \pnum +-If a placeholder type\iref{dcl.spec.auto} or ++If a \link{placeholder type}{dcl.spec.auto} or + a placeholder for a deduced class type\iref{dcl.type.class.deduct} + appears in the + \grammarterm{type-specifier-seq} of a \grammarterm{new-type-id} or +@@ -5985,7 +5986,7 @@ is less than zero; + + \item + its value is such that the size of the allocated object would exceed the +-\impldef{maximum size of an allocated object} limit\iref{implimits}; or ++\impldef{maximum size of an allocated object} \link{limit}{implimits}; or + + \item + the \grammarterm{new-initializer} is a \grammarterm{braced-init-list} +@@ -6011,7 +6012,7 @@ is the null pointer value of the required result type; + \item + otherwise, the \grammarterm{new-expression} terminates by throwing an + exception of a type that would match a handler\iref{except.handle} of type +-\tcode{std::bad_array_new_length}\iref{new.badlength}. ++\link{\tcode{std::bad_array_new_length}}{new.badlength}. + \end{itemize} + \end{itemize} + When the value of the \grammarterm{expression} is zero, the allocation +@@ -6069,8 +6070,8 @@ the type of \tcode{\keyword{new} \keyword{int}[i][10]} is \tcode{\keyword{int} ( + A \grammarterm{new-expression} may obtain storage for the object by calling an + allocation function\iref{basic.stc.dynamic.allocation}. If + the \grammarterm{new-expression} terminates by throwing an exception, it +-may release storage by calling a deallocation +-function\iref{basic.stc.dynamic.deallocation}. If the allocated type ++may release storage by calling a \link{deallocation ++function}{basic.stc.dynamic.deallocation}. If the allocated type + is a non-array type, the allocation function's name is + \indextext{\idxcode{operator new}}% + \indextext{\idxcode{operator delete}}% +@@ -6181,7 +6182,7 @@ the difference between the + result of the \grammarterm{new-expression} and the address returned by the + allocation function shall be an integral multiple of the + strictest fundamental +-alignment requirement\iref{basic.align} of any object type whose size ++\link{alignment requirement}{basic.align} of any object type whose size + is no greater than the size of the array being created. + \begin{note} + \indextext{allocation!alignment storage}% +@@ -6272,7 +6273,7 @@ invocation of \keyword{new} to another. + \pnum + \begin{note} + Unless an allocation function has a non-throwing +-exception specification\iref{except.spec}, ++\link{exception specification}{except.spec}, + it indicates failure to allocate storage by throwing a + \indextext{\idxcode{bad_alloc}}% + \indexlibraryglobal{bad_alloc}% +@@ -6488,8 +6489,8 @@ to both the allocation and deallocation functions. + \pnum + \indextext{expression!\idxcode{delete}}% + \indextext{\idxcode{delete}}% +-The \grammarterm{delete-expression} operator destroys a most derived +-object\iref{intro.object} or array created by a ++The \grammarterm{delete-expression} operator destroys a ++\deflink{most derived object}{intro.object} or array created by a + \grammarterm{new-expression}. + + \begin{bnf} +@@ -6592,8 +6593,8 @@ null pointer value, then: + \item + If the allocation call for the \grammarterm{new-expression} for the object to + be deleted was not omitted and the allocation was not extended\iref{expr.new}, the +-\grammarterm{delete-expression} shall call a deallocation +-function\iref{basic.stc.dynamic.deallocation}. The value returned from the ++\grammarterm{delete-expression} shall call a \link{deallocation ++function}{basic.stc.dynamic.deallocation}. The value returned from the + allocation call of the \grammarterm{new-expression} shall be passed as the + first argument to the deallocation function. + +@@ -7178,8 +7179,8 @@ The result of a \tcode{.*} expression + whose second operand is a pointer to a data member is an lvalue if the first + operand is an lvalue and an xvalue otherwise. The result of a \tcode{.*} expression whose + second operand is a pointer to a member function is a prvalue. +-If the second operand is the null +-member pointer value\iref{conv.mem}, the behavior is undefined. ++If the second operand is the \deflinkx{null member pointer value}{value!null member pointer}{conv.mem}, ++the behavior is undefined. + + \rSec2[expr.mul]{Multiplicative operators}% + \indextext{expression!multiplicative operators}% +@@ -7208,7 +7209,7 @@ left-to-right. + \pnum + The operands of \tcode{*} and \tcode{/} shall have arithmetic or unscoped + enumeration type; the operands of \tcode{\%} shall have integral or unscoped +-enumeration type. The usual arithmetic conversions\iref{expr.arith.conv} are performed on the ++enumeration type. The \link{usual arithmetic conversions}{expr.arith.conv} are performed on the + operands and determine the type of the result. + + \pnum +@@ -7339,7 +7340,7 @@ the behavior is undefined\iref{expr.pre}. + \pnum + For addition or subtraction, if the expressions \tcode{P} or \tcode{Q} have + type ``pointer to \cv{}~\tcode{T}'', where \tcode{T} and the array element type +-are not similar\iref{conv.qual}, the behavior is undefined. ++are not \deflinkx{similar}{similar types}{conv.qual}, the behavior is undefined. + \begin{example} + \begin{codeblock} + int arr[5] = {1, 2, 3, 4, 5}; +@@ -7430,12 +7431,12 @@ and the other is not, the program is ill-formed. + If both operands have arithmetic types, + or one operand has integral type and + the other operand has unscoped enumeration type, +-the usual arithmetic conversions\iref{expr.arith.conv} are applied to the operands. ++the \link{usual arithmetic conversions}{expr.arith.conv} are applied to the operands. + Then: + + \begin{itemize} + \item +-If a narrowing conversion\iref{dcl.init.list} is required, ++If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, + other than from an integral type to a floating-point type, + the program is ill-formed. + +@@ -7477,13 +7478,13 @@ the other operand is of object pointer or array type, + array-to-pointer conversions\iref{conv.array}, + pointer conversions\iref{conv.ptr}, + and +-qualification conversions\iref{conv.qual} ++\link{qualification conversions}{conv.qual} + are performed on both operands + to bring them to their composite pointer type\iref{expr.type}. + 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. ++\link{array-to-pointer conversions}{conv.array} are not applied. + \end{note} + In this case, + \tcode{p <=> q} is of type \tcode{std::strong_ordering} and +@@ -7572,7 +7573,7 @@ pointer conversions\iref{conv.ptr}, + function pointer conversions\iref{conv.fctptr}, and + qualification conversions\iref{conv.qual} + are performed to bring +-them to their composite pointer type\iref{expr.type}. ++them to their \deflink{composite pointer type}{expr.type}. + After conversions, the operands shall have the same type. + + \pnum +@@ -7657,10 +7658,10 @@ same type after the specified conversions have been applied. + \indextext{comparison!pointer}% + \indextext{comparison!pointer to function}% + If at least one of the converted operands is a pointer, +-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}. ++\link{pointer conversions}{conv.ptr}, ++\link{function pointer conversions}{conv.fctptr}, and ++\link{qualification conversions}{conv.qual} ++are performed on both operands to bring them to their \deflink{composite pointer type}{expr.type}. + Comparing pointers is defined as follows: + + \begin{itemize} +@@ -7677,7 +7678,8 @@ the result of the comparison is unspecified. + \item + Otherwise, if the pointers are both null, both point to the same + \indextext{address}% +-function, or both represent the same address\iref{basic.compound}, ++function, or both ++\deflinkx{represent the same address}{represents the address}{basic.compound}, + they compare equal. + \item + Otherwise, the pointers compare unequal. +@@ -7722,12 +7724,12 @@ bool b1 = (bx == cx); // unspecified + \end{example} + + \item +-If both refer to (possibly different) members of the same union\iref{class.union}, ++If both refer to (possibly different) members of the same \link{union}{class.union}, + they compare equal. + + \item + Otherwise, two pointers to members compare equal if they would refer to the same member of +-the same most derived object\iref{intro.object} or the same subobject if ++the same \deflink{most derived object}{intro.object} or the same subobject if + indirection with a hypothetical object of the associated + class type were performed, otherwise they compare unequal. + \begin{example} +@@ -7967,7 +7969,7 @@ Otherwise, if the second and third operand have different types and + either has (possibly cv-qualified) class type, or if both + are glvalues of the same value category and the same type except for + cv-qualification, an attempt is made to +-form an implicit conversion sequence\iref{over.best.ics} from ++form an \link{implicit conversion sequence}{over.best.ics} from + each of those operands to the type of the other. + \begin{note} + Properties such as access, whether an operand is a bit-field, or whether +@@ -8009,9 +8011,9 @@ denotes the cv-qualifiers of \tcode{T1}; + + \item otherwise, the target type is the type that \tcode{E2} would have + after applying the +-lvalue-to-rvalue\iref{conv.lval}, +-array-to-pointer\iref{conv.array}, and +-function-to-pointer\iref{conv.func} ++\link{lvalue-to-rvalue}{conv.lval}, ++\link{array-to-pointer}{conv.array}, and ++\link{function-to-pointer}{conv.func} + standard conversions. + \end{itemize} + \end{itemize} +@@ -8052,8 +8054,8 @@ are used in place of the original operands for the remainder of this + subclause. + + \pnum +-Array-to-pointer\iref{conv.array} +-and function-to-pointer\iref{conv.func} standard conversions are ++\link{Array-to-pointer}{conv.array} ++and \link{function-to-pointer}{conv.func} standard conversions are + performed on the second and third operands. After those conversions, one + of the following shall hold: + +@@ -8062,16 +8064,16 @@ of the following shall hold: + that type and the result is copy-initialized using the selected operand. + + \item The second and third operands have arithmetic or enumeration type; +-the usual arithmetic conversions\iref{expr.arith.conv} are performed to bring them to a common ++the \link{usual arithmetic conversions}{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; +-lvalue-to-rvalue\iref{conv.lval}, +-pointer\iref{conv.ptr}, +-function pointer\iref{conv.fctptr}, and +-qualification conversions\iref{conv.qual} ++\link{lvalue-to-rvalue}{conv.lval}, ++\link{pointer}{conv.ptr}, ++\link{function pointer}{conv.fctptr}, and ++\link{qualification conversions}{conv.qual} + are performed to bring them to their +-composite pointer type\iref{expr.type}. The result is of the composite ++\deflink{composite pointer type}{expr.type}. The result is of the composite + pointer type. + + \item One or both of the second and third operands have pointer-to-member type; +@@ -8255,7 +8257,7 @@ with the value congruent\iref{basic.fundamental} to \tcode{V}. + \pnum + \indextext{assignment!conversion by}% + If the right operand is an expression, it is implicitly +-converted\iref{conv} to the cv-unqualified type of the left ++\link{converted}{conv} to the cv-unqualified type of the left + operand. + + \pnum +@@ -8269,7 +8271,7 @@ resulting value of the bit-field is + An assignment whose left operand is of + a volatile-qualified type is deprecated\iref{depr.volatile.type} + unless the (possibly parenthesized) assignment is a discarded-value expression or +-an unevaluated operand\iref{term.unevaluated.operand}. ++an \deflink{unevaluated operand}{expr.context}. + + \pnum + The behavior of an expression of the form \tcode{E1 \placeholder{op}= E2} +@@ -8341,7 +8343,7 @@ The comma operator groups left-to-right. + + A pair of expressions separated by a comma is evaluated left-to-right; + the left expression is +-a discarded-value expression\iref{expr.prop}. ++a \deflink{discarded-value expression}{expr.prop}. + The left expression is sequenced before + the right expression\iref{intro.execution}. + \indextext{operator!side effects and comma}% +@@ -8492,7 +8494,7 @@ zero\iref{expr.mul}, or certain shift operations\iref{expr.shift}. + \end{footnote} + + \item +-an lvalue-to-rvalue conversion\iref{conv.lval} unless ++an \link{lvalue-to-rvalue conversion}{conv.lval} unless + it is applied to + \begin{itemize} + \item +@@ -8514,7 +8516,7 @@ that refers to a non-active member of a union or a subobject thereof; + + \item + an lvalue-to-rvalue conversion that is applied to +-an object with an indeterminate value\iref{basic.indet}; ++an object with an \deflinkx{indeterminate value}{value!indeterminate}{basic.indet}; + + \item + an invocation of an implicitly-defined copy/move constructor or +@@ -8992,7 +8994,7 @@ unscoped enumeration type, implicitly converted to a prvalue, where the converte + Such expressions can be + used as bit-field lengths\iref{class.bit}, as enumerator + initializers if the underlying type is not fixed\iref{dcl.enum}, +-and as alignments\iref{dcl.align}. ++and as \link{alignments}{dcl.align}. + \end{note} + + \pnum +@@ -9680,7 +9682,9 @@ A function or variable is + if it is: + \begin{itemize} + \item +-a constexpr function that is named by an expression\iref{basic.def.odr} ++a constexpr function that ++\deflinkx{is named by}{function!named by expression or conversion}{basic.def.odr} ++an expression + that is potentially constant evaluated, or + + \item +diff --git a/source/future.tex b/source/future.tex +index 72dbeabb..dc26444a 100644 +--- a/source/future.tex ++++ b/source/future.tex +@@ -14,7 +14,7 @@ is defined as: + Normative for the current revision of \Cpp{}, + but having been identified as a candidate for removal from future revisions. + An implementation may declare library names and entities described in this Clause with the +-\tcode{deprecated} attribute\iref{dcl.attr.deprecated}. ++\link{\tcode{deprecated} attribute}{dcl.attr.deprecated}. + + \rSec1[depr.local]{Non-local use of TU-local entities} + +@@ -132,11 +132,11 @@ void h(auto......); // deprecated + \rSec1[depr.impldec]{Implicit declaration of copy functions} + + \pnum +-The implicit definition of a copy constructor\iref{class.copy.ctor} ++The implicit definition of a \link{copy constructor}{class.copy.ctor} + as defaulted is deprecated if the class has + a user-declared copy assignment operator or +-a user-declared destructor\iref{class.dtor}. +-The implicit definition of a copy assignment operator\iref{class.copy.assign} ++a user-declared \link{destructor}{class.dtor}. ++The implicit definition of a \link{copy assignment operator}{class.copy.assign} + as defaulted is deprecated if the class has + a user-declared copy constructor or + a user-declared destructor. +@@ -543,7 +543,7 @@ template struct tuple_size; + \pnum + Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. + If the expression \tcode{TS::value} is well-formed +-when treated as an unevaluated operand\iref{term.unevaluated.operand}, ++when treated as an \deflink{unevaluated operand}{expr.context}, + then specializations of each of the two templates meet + the \oldconcept{TransformationTrait} requirements with a base characteristic of + \tcode{integral_constant}. +diff --git a/source/intro.tex b/source/intro.tex +index 3e24d06d..b5e513df 100644 +--- a/source/intro.tex ++++ b/source/intro.tex +@@ -97,8 +97,8 @@ Reads of scalar objects are described in \ref{conv.lval} and + modifications of scalar objects are described in + \ref{expr.assign}, \ref{expr.post.incr}, and \ref{expr.pre.incr}. + Attempts to read or modify an object of class type +-typically invoke a constructor\iref{class.ctor} +-or assignment operator\iref{class.copy.assign}; ++typically invoke a \deflink{constructor}{class.ctor} ++or \link{assignment operator}{class.copy.assign}; + such invocations do not themselves constitute accesses, + although they may involve accesses of scalar subobjects. + \end{defnote} +@@ -246,11 +246,12 @@ implementation's output messages + glvalue refers + + \begin{example} +-If a pointer\iref{dcl.ptr} \tcode{p} whose type is ``pointer to ++If a \link{pointer}{dcl.ptr} \tcode{p} whose type is ``pointer to + class \tcode{B}'' is pointing to a base class subobject +-of class \tcode{B}, whose most derived object is of class \tcode{D}, derived +-from \tcode{B}\iref{class.derived}, the dynamic type of the +-expression \tcode{*p} is ``\tcode{D}''. References\iref{dcl.ref} are ++of class \tcode{B}, whose most derived object is of class \tcode{D}, ++\link{derived}{class.derived} ++from \tcode{B}, the dynamic type of the ++expression \tcode{*p} is ``\tcode{D}''. \link{References}{dcl.ref} are + treated similarly. + \end{example} + +@@ -318,7 +319,7 @@ handler functions (see \ref{support}). + + \indexdefn{program!ill-formed}% + \definition{ill-formed program}{defns.ill.formed} +-program that is not well-formed\iref{defns.well.formed} ++program that is not \link{well-formed}{defns.well.formed} + + \indexdefn{behavior!implementation-defined}% + \definition{implementation-defined behavior}{defns.impl.defined} +@@ -819,7 +820,7 @@ resulting in a contract violation. + \indextext{conformance requirements!classes}% + \indextext{conformance requirements!class templates}% + For classes and class templates, the library Clauses specify partial +-definitions. Private members\iref{class.access} are not ++definitions. \link{Private members}{class.access} are not + specified, but each implementation shall supply them to complete the + definitions according to the description in the library Clauses. + +@@ -836,7 +837,7 @@ the appropriate standard library named header unit\iref{using.headers}. + + \pnum + The templates, classes, functions, and objects in the library have +-external linkage\iref{basic.link}. The implementation provides ++external \link{linkage}{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}.% + \indextext{conformance requirements!library|)} +diff --git a/source/iostreams.tex b/source/iostreams.tex +index 615ea941..ad9e3afe 100644 +--- a/source/iostreams.tex ++++ b/source/iostreams.tex +@@ -558,7 +558,7 @@ is initialized, + returns + \tcode{\&cout}. + Its state is otherwise the same as required for +-\tcode{basic_ios::init}\iref{basic.ios.cons}. ++\libmemberrefx{basic_ios::init}{basic_ios}{init}. + \end{itemdescr} + + \indexlibraryglobal{cout}% +@@ -591,7 +591,7 @@ is initialized, + \tcode{cerr.flags() \& unitbuf} + is nonzero and \tcode{cerr.tie()} returns \tcode{\&cout}. + Its state is otherwise the same as required for +-\tcode{basic_ios::init}\iref{basic.ios.cons}. ++\libmemberrefx{basic_ios::init}{basic_ios}{init}. + \end{itemdescr} + + \indexlibraryglobal{clog}% +@@ -628,7 +628,7 @@ is initialized, + returns + \tcode{\&wcout}. + Its state is otherwise the same as required for +-\tcode{basic_ios::init}\iref{basic.ios.cons}. ++\libmemberrefx{basic_ios::init}{basic_ios}{init}. + \end{itemdescr} + + \indexlibraryglobal{wcout}% +@@ -661,7 +661,7 @@ is initialized, + \tcode{wcerr.flags() \& unitbuf} + is nonzero and \tcode{wcerr.tie()} returns \tcode{\&wcout}. + Its state is otherwise the same as required for +-\tcode{basic_ios::init}\iref{basic.ios.cons}. ++\libmemberrefx{basic_ios::init}{basic_ios}{init}. + \end{itemdescr} + + \indexlibraryglobal{wclog}% +@@ -1381,7 +1381,7 @@ operate independently of the standard C streams. + \pnum + \returns + \tcode{true} +-if the previous state of the standard iostream objects\iref{iostream.objects} ++if the previous state of the \link{standard iostream objects}{iostream.objects} + was synchronized and otherwise returns + \tcode{false}. + The first time it is called, +@@ -1440,8 +1440,8 @@ static int xalloc(); + + \pnum + \remarks +-Concurrent access to this function by multiple threads does not result in a data +-race\iref{intro.multithread}. ++Concurrent access to this function by multiple threads does not result in a ++\deflink{data race}{intro.multithread}. + \end{itemdescr} + + \indexlibrarymember{iword}{ios_base}% +@@ -2028,12 +2028,12 @@ locale imbue(const locale& loc); + \pnum + \effects + Calls +-\tcode{ios_base::imbue(loc)}\iref{ios.base.locales} ++\libmemberrefx{ios_base::imbue}{ios_base}{imbue}\tcode{(loc)} + and + if + \tcode{rdbuf() != 0} + then +-\tcode{rdbuf()->pubimbue(loc)}\iref{streambuf.locales}. ++\tcode{rdbuf()->}\libmemberrefx{pubimbue}{basic_streambuf}{pubimbue}\tcode{(loc)}. + + \pnum + \returns +@@ -3286,7 +3286,7 @@ streamsize in_avail(); + If a read position is available, returns + \tcode{egptr() - gptr()}. + Otherwise returns +-\tcode{showmanyc()}\iref{streambuf.virt.get}. ++\libmemberrefx{showmanyc()}{basic_streambuf}{showmanyc}. + \end{itemdescr} + + \indexlibrarymember{snextc}{basic_streambuf}% +@@ -4311,7 +4311,7 @@ namespace std { + template> + class basic_istream : virtual public basic_ios { + public: +- // types (inherited from \tcode{basic_ios}\iref{ios}) ++ // types (inherited from \link{\tcode{basic_ios}}{ios}) + using char_type = charT; + using int_type = traits::int_type; + using pos_type = traits::pos_type; +@@ -4718,7 +4718,7 @@ basic_istream& operator>>(void*& val); + \pnum + As in the case of the inserters, these extractors depend on the + locale's +-\tcode{num_get<>}\iref{locale.num.get} object to perform parsing the input ++\link{\tcode{num_get<>}}{locale.num.get} object to perform parsing the input + stream data. + These extractors behave as formatted input functions (as described in~\ref{istream.formatted.reqmts}). After a \tcode{sentry} object is constructed, the + conversion occurs as if performed by the following code fragment, +@@ -5005,7 +5005,7 @@ basic_istream& operator>>(basic_streambuf* sb); + \begin{itemdescr} + \pnum + \effects +-Behaves as an unformatted input function\iref{istream.unformatted}. ++Behaves as an \link{unformatted input function}{istream.unformatted}. + If \tcode{sb} is null, calls + \tcode{setstate(fail\-bit)}, + which may throw +@@ -5400,7 +5400,7 @@ characters and discards them. + Characters are extracted until any of the following occurs: + \begin{itemize} + \item +-\tcode{n != numeric_limits::max()}\iref{numeric.limits} ++\tcode{n != \libmemberrefx{numeric_limits::max()}{numeric_limits}{max}{numeric.limits}} + and + \tcode{n} characters have been extracted so far; + \item +@@ -5751,12 +5751,12 @@ template + \begin{itemdescr} + \pnum + \effects +-Behaves as an unformatted input function\iref{istream.unformatted}, except that it does not count the number of characters extracted and ++Behaves as an \link{unformatted input function}{istream.unformatted}, except that it does not count the number of characters extracted and + does not affect the value returned by subsequent calls to \tcode{is.gcount()}. After + constructing a \tcode{sentry} object extracts characters as long as the next available + character \tcode{c} is whitespace or until there are no more characters in the sequence. + Whitespace characters are distinguished with the same criterion as used by +-\tcode{sentry::sentry}\iref{istream.sentry}. ++\link{\tcode{sentry::sentry}}{istream.sentry}. + If + \tcode{ws} + stops extracting characters because there are no more available it sets +@@ -5781,7 +5781,7 @@ template + \pnum + \constraints + The expression \tcode{is >> std::forward(x)} is well-formed +-when treated as an unevaluated operand\iref{term.unevaluated.operand} and ++when treated as an \deflink{unevaluated operand}{expr.context} and + \tcode{Istream} is publicly and unambiguously derived from \tcode{ios_base}. + + \pnum +@@ -5849,7 +5849,7 @@ explicit basic_iostream(basic_streambuf* sb); + Initializes the base class subobjects with + \tcode{basic_istream(sb)}\iref{istream} + and +-\tcode{basic_ostream(sb)}\iref{ostream}. ++\link{\tcode{basic_ostream(sb)}}{ostream}. + + \pnum + \ensures +@@ -5935,7 +5935,7 @@ namespace std { + template> + class basic_ostream : virtual public basic_ios { + public: +- // types (inherited from \tcode{basic_ios}\iref{ios}) ++ // types (inherited from \link{\tcode{basic_ios}}{ios}) + using char_type = charT; + using int_type = traits::int_type; + using pos_type = traits::pos_type; +@@ -6705,7 +6705,7 @@ return *this << s; + \end{codeblock} + where \tcode{s} is an + \impldef{NTCTS in \tcode{basic_ostream\& op\-er\-ator<<(nullptr_t)}} +-NTCTS\iref{defns.ntcts}. ++\link{NTCTS}{defns.ntcts}. + \end{itemdescr} + + \rSec4[ostream.inserters.character]{Character inserter function templates} +@@ -6729,7 +6729,7 @@ template + \begin{itemdescr} + \pnum + \effects +-Behaves as a formatted output function\iref{ostream.formatted.reqmts} ++Behaves as a \link{formatted output function}{ostream.formatted.reqmts} + of \tcode{out}. Constructs a character sequence \tcode{seq}. + If \tcode{c} has type + \tcode{char} +@@ -7482,7 +7482,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. + \pnum + \effects + The expression \tcode{in >> get_money(mon, intl)} described below +-behaves as a formatted input function\iref{istream.formatted.reqmts}. ++behaves as a \link{formatted input function}{istream.formatted.reqmts}. + + \pnum + \returns +@@ -7527,7 +7527,7 @@ a specialization of the \tcode{basic_string} template\iref{strings}. + An object of unspecified type such that if + \tcode{out} is an object of type \tcode{basic_ostream} + then the expression \tcode{out << put_money(mon, intl)} behaves as a +-formatted output function\iref{ostream.formatted.reqmts} that calls ++\link{formatted output function}{ostream.formatted.reqmts} that calls + \tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as: + + \begin{codeblock} +@@ -7651,7 +7651,7 @@ of \tcode{basic_ostream} with member type \tcode{char_type} the same as + \tcode{charT} and with member type \tcode{traits_type}, which in the second and third + forms is the same as \tcode{traits}, then the expression + \tcode{out << quoted(s, delim, escape)} +-behaves as a formatted output function\iref{ostream.formatted.reqmts} ++behaves as a \link{formatted output function}{ostream.formatted.reqmts} + of \tcode{out}. This forms a character sequence \tcode{seq}, initially + consisting of the following elements: + \begin{itemize} +@@ -14130,7 +14130,7 @@ denotes a possibly const encoded character type\iref{temp.deduct}. + + \pnum + \begin{note} +-See path conversions\iref{fs.path.cvt} ++See \link{path conversions}{fs.path.cvt} + for how the value types above and their encodings convert to + \tcode{path::value_type} and its encoding. + \end{note} +@@ -14742,7 +14742,7 @@ and print functions\iref{print.fun}. + + \pnum + Generic format observer functions return strings formatted according to the +-generic pathname format\iref{fs.path.generic}. ++\link{generic pathname format}{fs.path.generic}. + A single slash (\tcode{'/'}) character is used as + the \grammarterm{directory-separator}. + +@@ -15298,11 +15298,11 @@ If normalization\iref{fs.path.generic} is needed + \indexlibrarymember{path}{iterator}% + \pnum + Path iterators iterate over the elements of the pathname +-in the generic format\iref{fs.path.generic}. ++in the \link{generic format}{fs.path.generic}. + + \pnum + A \tcode{path::iterator} is a constant iterator meeting all the +-requirements of a bidirectional iterator\iref{bidirectional.iterators} ++requirements of a \link{bidirectional iterator}{bidirectional.iterators} + except that, + for dereferenceable iterators \tcode{a} and \tcode{b} + of type \tcode{path::iterator} +@@ -16659,7 +16659,7 @@ If a file is removed from or added to a directory after the + construction of a \tcode{directory_iterator} for the directory, it is + unspecified whether or not subsequently incrementing the iterator will ever + result in an iterator referencing the removed or added directory entry. See +-POSIX \tcode{readdir}. ++POSIX \weblink{\tcode{readdir}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/readdir.html}. + \end{note} + + \rSec3[fs.dir.itr.members]{Members} +@@ -16751,7 +16751,7 @@ directory_iterator& increment(error_code& ec); + \pnum + \effects + As specified for the prefix increment operation of +-Input iterators\iref{input.iterators}. ++\link{Input iterators}{input.iterators}. + + \pnum + \returns +@@ -17063,7 +17063,7 @@ recursive_directory_iterator& increment(error_code& ec); + \pnum + \effects + As specified for the prefix increment operation of +-Input iterators\iref{input.iterators}, ++\link{Input iterators}{input.iterators}, + except that: + + \begin{itemize} +@@ -17654,7 +17654,7 @@ void filesystem::create_directory_symlink(const path& to, const path& new_symlin + \begin{itemdescr} + \pnum + \effects +-Establishes the postcondition, as if by POSIX \tcode{symlink}. ++Establishes the postcondition, as if by POSIX \weblink{\tcode{symlink}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/symlink.html}. + + \pnum + \ensures +@@ -17730,7 +17730,7 @@ void filesystem::create_symlink(const path& to, const path& new_symlink, + \begin{itemdescr} + \pnum + \effects +-Establishes the postcondition, as if by POSIX \tcode{symlink}. ++Establishes the postcondition, as if by POSIX \weblink{\tcode{symlink}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/symlink.html}. + + \pnum + \ensures +@@ -17763,7 +17763,7 @@ path filesystem::current_path(error_code& ec); + \returns + The absolute path of the current working directory, + whose pathname in the native format is +- obtained as if by POSIX \tcode{getcwd}. ++ obtained as if by POSIX \weblink{\tcode{getcwd}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/getcwd.html}. + The signature with argument \tcode{ec} returns \tcode{path()} if an + error occurs. + +@@ -17794,7 +17794,7 @@ void filesystem::current_path(const path& p, error_code& ec) noexcept; + \begin{itemdescr} + \pnum + \effects +-Establishes the postcondition, as if by POSIX \tcode{chdir}. ++Establishes the postcondition, as if by POSIX \weblink{\tcode{chdir}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/chdir.html}. + + \pnum + \ensures +@@ -17905,7 +17905,7 @@ If \tcode{exists(p)} is \tcode{false}, an error is reported\iref{fs.err.report}. + \item + If \tcode{is_regular_file(p)}, the size in bytes of the file + \tcode{p} resolves to, determined as if by the value of the POSIX \tcode{stat} +- class member \tcode{st_size} obtained as if by POSIX \tcode{stat}. ++ class member \tcode{st_size} obtained as if by POSIX \weblink{\tcode{stat}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html}. + \item + Otherwise, the result is \impldef{result of \tcode{filesystem::file_size}}. + \end{itemize} +@@ -18287,7 +18287,7 @@ void filesystem::last_write_time(const path& p, file_time_type new_time, + \pnum + \effects + Sets the time of last data modification of the file +- resolved to by \tcode{p} to \tcode{new_time}, as if by POSIX \tcode{futimens}. ++ resolved to by \tcode{p} to \tcode{new_time}, as if by POSIX \weblink{\tcode{futimens}}{http://pubs.opengroup.org/onlinepubs/9699919799/functions/futimens.html}. + + \pnum + \throws +diff --git a/source/iterators.tex b/source/iterators.tex +index ed599d97..46edb440 100644 +--- a/source/iterators.tex ++++ b/source/iterators.tex +@@ -6872,7 +6872,7 @@ ostream_iterator& operator++(int); + The + class template + \tcode{istreambuf_iterator} +-defines an input iterator\iref{input.iterators} that ++defines an \link{input iterator}{input.iterators} that + reads successive + \textit{characters} + from the streambuf for which it was constructed. +@@ -6997,7 +6997,6 @@ constexpr istreambuf_iterator(default_sentinel_t) noexcept; + Initializes \tcode{sbuf_} with \keyword{nullptr}. + \end{itemdescr} + +- + \indexlibraryctor{istreambuf_iterator}% + \begin{itemdecl} + istreambuf_iterator(istream_type& s) noexcept; +@@ -7009,7 +7008,6 @@ istreambuf_iterator(istream_type& s) noexcept; + Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. + \end{itemdescr} + +- + \indexlibraryctor{istreambuf_iterator}% + \begin{itemdecl} + istreambuf_iterator(streambuf_type* s) noexcept; +@@ -7021,7 +7019,6 @@ istreambuf_iterator(streambuf_type* s) noexcept; + Initializes \tcode{sbuf_} with \tcode{s}. + \end{itemdescr} + +- + \indexlibraryctor{istreambuf_iterator}% + \begin{itemdecl} + istreambuf_iterator(const @\placeholder{proxy}@& p) noexcept; +@@ -7172,7 +7169,6 @@ is not a null pointer. + Initializes \tcode{sbuf_} with \tcode{s.rdbuf()}. + \end{itemdescr} + +- + \indexlibraryctor{ostreambuf_iterator}% + \begin{itemdecl} + ostreambuf_iterator(streambuf_type* s) noexcept; +diff --git a/source/lex.tex b/source/lex.tex +index bfd55be5..5baaf9a1 100644 +--- a/source/lex.tex ++++ b/source/lex.tex +@@ -29,8 +29,8 @@ + \indextext{compilation!separate|(}% + The text of the program is kept in units called + \defnx{source files}{source file} in this document. +-A source file together with all the headers\iref{headers} +-and source files included\iref{cpp.include} via the preprocessing ++A source file together with all the \link{headers}{headers} ++and source files \link{included}{cpp.include} via the preprocessing + directive \tcode{\#include}, less any source lines skipped by any of the + conditional inclusion\iref{cpp.cond} preprocessing directives, + as modified by the implementation-defined behavior of any +@@ -2315,7 +2315,7 @@ operator ""@\placeholder{X}@(@\placeholder{str}{}@, @\placeholder{len}{}@) + \pnum + If \placeholder{L} is a \grammarterm{user-defined-character-literal}, let \placeholder{ch} be the + literal without its \grammarterm{ud-suffix}. +-\placeholder{S} shall contain a literal operator\iref{over.literal} whose only parameter has ++\placeholder{S} shall contain a \deflinkx{literal operator}{literal!operator}{over.literal} whose only parameter has + the type of \placeholder{ch} and the + literal \placeholder{L} is treated as a call + of the form +diff --git a/source/lib-intro.tex b/source/lib-intro.tex +index de00b5b2..39efa82c 100644 +--- a/source/lib-intro.tex ++++ b/source/lib-intro.tex +@@ -101,7 +101,7 @@ including formatting, internationalization support and + regular expression matching and searching. + + \pnum +-The numerics library\iref{numerics} provides ++The \link{numerics library}{numerics} provides + numeric algorithms and complex number components that extend support for numeric processing. + The + \tcode{valarray} +@@ -521,8 +521,8 @@ of other standards\iref{intro.refs}. + Subclause \ref{conventions} describes several editorial conventions used to describe the contents + of the \Cpp{} standard library. + These conventions are for describing +-implementation-defined types\iref{type.descriptions}, +-and member functions\iref{functions.within.classes}. ++\link{implementation-defined types}{type.descriptions}, ++and \link{member functions}{functions.within.classes}. + + \rSec3[expos.only.entity]{Exposition-only entities, etc.} + +@@ -651,7 +651,7 @@ and \ref{depr} are + Each bitmask type can be implemented as an + enumerated type that overloads certain operators, as an integer type, + or as a +-\tcode{bitset}\iref{template.bitset}. ++\link{\tcode{bitset}}{template.bitset}. + \indextext{type!enumerated}% + + \pnum +@@ -777,7 +777,7 @@ locale. + \item + A + \defn{character sequence} +-is an array object\iref{dcl.array} \tcode{\placeholdernc{A}} that ++is an \link{array object}{dcl.array} \tcode{\placeholdernc{A}} that + can be declared as + \tcode{\placeholdernc{T\;A}[\placeholder{N}]}, + where \tcode{\placeholder{T}} is any of the types +@@ -968,7 +968,7 @@ signatures, or for virtual destructors that can be generated by default. + \pnum + \ref{\firstlibchapter} through \ref{\lastlibchapter} and + \ref{depr} do not specify the representation of classes, and intentionally +-omit specification of class members\iref{class.mem}. An implementation may ++omit specification of \link{class members}{class.mem}. An implementation may + define static or non-static class members, or both, as needed to implement the + semantics of the member functions specified in \ref{\firstlibchapter} + through \ref{\lastlibchapter} and \ref{depr}. +@@ -1380,10 +1380,10 @@ std::vector vi; // OK + Except as noted in \ref{library} through \ref{\lastlibchapter} + and \ref{depr}, the contents of each header \tcode{c\placeholder{name}} is + the same as that of the corresponding header \tcode{\placeholder{name}.h} as +-specified in the C standard library\iref{intro.refs}. ++specified in the \deflinkx{C standard library}{C!standard library}{intro.refs}. + 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}. ++\link{namespace scope}{basic.scope.namespace} of the namespace \tcode{std}. + It is unspecified whether these names (including any overloads added in + \ref{\firstlibchapter} through \ref{\lastlibchapter} and \ref{depr}) + are first declared within the global namespace scope +@@ -1701,8 +1701,8 @@ a hosted implementation. + \pnum + Subclause \ref{using} describes how a \Cpp{} program gains access to the facilities of the + \Cpp{} standard library. \ref{using.headers} describes effects during translation +-phase 4, while~\ref{using.linkage} describes effects during phase +-8\iref{lex.phases}. ++phase 4, while~\ref{using.linkage} describes effects during \link{phase ++8}{lex.phases}. + + \rSec3[using.headers]{Headers} + +@@ -1745,7 +1745,7 @@ declared in that header. No diagnostic is required. + \rSec3[using.linkage]{Linkage} + + \pnum +-Entities in the \Cpp{} standard library have external linkage\iref{basic.link}. ++Entities in the \Cpp{} standard library have \link{external linkage}{basic.link}. + Unless otherwise specified, objects and functions have the default + \tcode{extern "C++"} + linkage\iref{dcl.link}. +@@ -1779,8 +1779,8 @@ the program prior to program startup. + \indextext{startup!program}% + \pnum + See also +-replacement functions\iref{replacement.functions}, +-runtime changes\iref{handler.functions}. ++\link{replacement functions}{replacement.functions}, ++\link{runtime changes}{handler.functions}. + + \rSec2[utility.requirements]{Requirements on types and expressions} + +@@ -1947,13 +1947,13 @@ evaluated in the context described below, and + + \pnum + The context in which \tcode{swap(t, u)} and \tcode{swap(u, t)} are evaluated shall +-ensure that a binary non-member function named ``swap'' is selected via overload +-resolution\iref{over.match} on a candidate set that includes: ++ensure that a binary non-member function named ``swap'' is selected via \link{overload ++resolution}{over.match} on a candidate set that includes: + \begin{itemize} + \item the two \tcode{swap} function templates defined in + \libheaderref{utility} and + +-\item the lookup set produced by argument-dependent lookup\iref{basic.lookup.argdep}. ++\item the lookup set produced by \link{argument-dependent lookup}{basic.lookup.argdep}. + \end{itemize} + \begin{note} + If \tcode{T} and \tcode{U} are both fundamental types or arrays of +@@ -2056,8 +2056,9 @@ operations involving erroneous values can cause erroneous behavior\iref{basic.in + \end{note} + + \pnum +-An object \tcode{p} of type \tcode{P} can be contextually converted to +-\tcode{bool}\iref{conv}. The effect shall be as if \tcode{p != nullptr} ++An object \tcode{p} of type \tcode{P} can be ++\deflinkx{contextually converted to \tcode{bool}}{conversion!contextual to \tcode{bool}}{conv}. ++The effect shall be as if \tcode{p != nullptr} + had been evaluated in place of \tcode{p}. + + \pnum +@@ -2160,7 +2161,7 @@ as the memory allocation and deallocation primitives for it. All of the + string types\iref{strings}, + containers\iref{containers} (except \tcode{array} and \tcode{inplace_vector}), + string buffers and string streams\iref{input.output}, and +-\tcode{match_results}\iref{re} are parameterized in terms of ++\link{\tcode{match_results}}{re} are parameterized in terms of + allocators. + + \pnum +@@ -2986,7 +2987,7 @@ If \tcode{X} is an allocator class for type \tcode{T}, + whether or not \tcode{T} is a complete type: + \begin{itemize} + \item \tcode{X} is a complete type, and +-\item all the member types of \tcode{allocator_traits}\iref{allocator.traits} ++\item all the member types of \link{\tcode{allocator_traits}}{allocator.traits} + other than \tcode{value_type} are complete types. + \end{itemize} + +@@ -2997,11 +2998,11 @@ whether or not \tcode{T} is a complete type: + \pnum + Subclause \ref{constraints} describes restrictions on \Cpp{} programs that use the facilities of + the \Cpp{} standard library. The following subclauses specify constraints on the +-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 ++program's use of \link{namespaces}{namespace.std}, its use of various \link{reserved ++names}{reserved.names}, its use of \link{headers}{alt.headers}, its use of + standard library classes as base classes\iref{derived.classes}, its +-definitions of replacement functions\iref{replacement.functions}, and its +-installation of handler functions during execution\iref{handler.functions}. ++definitions of \link{replacement functions}{replacement.functions}, and its ++installation of \link{handler functions}{handler.functions} during execution. + + \rSec3[namespace.constraints]{Namespace use} + +@@ -3412,7 +3413,7 @@ are reserved for use by \Cpp{} implementations. + If a file with a name + equivalent to the derived file name for one of the \Cpp{} standard library headers + is not provided as part of the implementation, and a file with that name +-is placed in any of the standard places for a source file to be included\iref{cpp.include}, ++is placed in any of the standard places for a source file to be \link{included}{cpp.include}, + the behavior is undefined.% + \indextext{source file}% + \indextext{undefined} +@@ -3583,7 +3584,7 @@ specified as being shareable without data races or the user supplies a locking m + + \pnum + If an object of a standard library type is accessed, and +-the beginning of the object's lifetime\iref{basic.life} ++the beginning of the object's \link{lifetime}{basic.life} + does not happen before the access, or + the access does not happen before the end of the object's lifetime, + the behavior is undefined unless otherwise specified. +@@ -3649,7 +3650,7 @@ Every such entity shall be defined such that any header that defines it may be + included after any other header that also defines it\iref{basic.def.odr}. + + \pnum +-The C standard library headers\iref{support.c.headers} ++The \link{C standard library headers}{support.c.headers} + shall include only their corresponding \Cpp{} standard library header, + as described in~\ref{headers}. + +@@ -3677,7 +3678,7 @@ explicitly stated otherwise. + It is unspecified whether any + non-member + functions in the \Cpp{} standard library are defined as +-inline\iref{dcl.inline}. ++\link{inline}{dcl.inline}. + + \pnum + A call to a non-member function signature +@@ -3705,7 +3706,7 @@ The phrase ``unless otherwise specified'' applies to cases such as + the swappable with requirements\iref{swappable.requirements}. + The exception for overloaded operators allows argument-dependent lookup + in cases like that of +-\tcode{ostream_iterator::operator=}\iref{ostream.iterator.ops}: ++\libmemberrefx{ostream_iterator::operator=}{ostream_iterator}{operator=}: + + \effects + \begin{codeblock} +@@ -3720,7 +3721,7 @@ return *this; + + \pnum + It is unspecified whether any member functions in the \Cpp{} standard library are defined as +-inline\iref{dcl.inline}. ++\link{inline}{dcl.inline}. + + \pnum + For a non-virtual member function described in the \Cpp{} standard library, +@@ -3809,8 +3810,8 @@ the behavior is undefined unless otherwise specified. + \rSec3[res.on.data.races]{Data race avoidance} + + \pnum +-This subclause specifies requirements that implementations shall meet to prevent data +-races\iref{intro.multithread}. ++This subclause specifies requirements that implementations shall meet to prevent ++\deflinkx{data races}{data race}{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. + +@@ -3853,7 +3854,7 @@ not visible to users and are protected against data races. + \pnum + Unless otherwise specified, \Cpp{} standard library functions shall perform all operations + solely within the current thread if those operations have effects that are +-visible\iref{intro.multithread} to users. ++\deflinkx{visible}{side effects!visible}{intro.multithread} to users. + + \pnum + \begin{note} +@@ -3968,7 +3969,7 @@ potentially-throwing exception specification} exceptions. + \begin{footnote} + In particular, they + can report a failure to allocate storage by throwing an exception of type +-\tcode{bad_alloc}, ++\link{\tcode{bad_alloc}}{bad.alloc}, + or a class derived from + \tcode{bad_alloc}\iref{bad.alloc}. + \end{footnote} +diff --git a/source/limits.tex b/source/limits.tex +index e0596a32..877f21f3 100644 +--- a/source/limits.tex ++++ b/source/limits.tex +@@ -120,7 +120,7 @@ during template argument deduction\iref{temp.deduct} [1\,024]. + \item% + Handlers per try block\iref{except.handle} [256]. + \item% +-Number of placeholders\iref{func.bind.place} [10]. ++Number of \link{placeholders}{func.bind.place} [10]. + \item% + Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. + +diff --git a/source/numerics.tex b/source/numerics.tex +index ae6be476..a304c838 100644 +--- a/source/numerics.tex ++++ b/source/numerics.tex +@@ -157,8 +157,8 @@ floating-point evaluation in constant expressions. + \rSec2[cfenv.thread]{Threads} + + \pnum +-The floating-point environment has thread storage +-duration\iref{basic.stc.thread}. The initial state for a thread's floating-point ++The floating-point environment has \deflinkx{thread storage duration}{storage duration!thread}{basic.stc.thread}. ++The initial state for a thread's floating-point + environment is the state of the floating-point environment of the thread that constructs + the corresponding \tcode{thread} object\iref{thread.thread.class} + or \tcode{jthread} object\iref{thread.jthread.class} +@@ -1571,17 +1571,17 @@ on an instantiated template $T$: + A template argument corresponding to a template parameter + named \tcode{Sseq} + shall meet the requirements +- of seed sequence\iref{rand.req.seedseq}. ++ of \link{seed sequence}{rand.req.seedseq}. + \item + A template argument corresponding to a template parameter + named \tcode{URBG} + shall meet the requirements +- of uniform random bit generator\iref{rand.req.urng}. ++ of \link{uniform random bit generator}{rand.req.urng}. + \item + A template argument corresponding to a template parameter + named \tcode{Engine} + shall meet the requirements +- of random number engine\iref{rand.req.eng}. ++ of \link{random number engine}{rand.req.eng}. + \item + If a template argument corresponding to a template parameter + named \tcode{RealType} +@@ -1702,7 +1702,7 @@ In \tref{rand.req.seedseq} and throughout this subclause: + \endhead + \tcode{S::result_type} + & \tcode{T} +- & \tcode{T} is an unsigned integer type\iref{basic.fundamental} ++ & \tcode{T} is an \deflinkx{unsigned integer type}{type!unsigned integer}{basic.fundamental} + of at least 32 bits. + & + \\ \rowsep +@@ -1867,7 +1867,7 @@ An engine's state may be established via + \pnum + A class \tcode{E} + that meets the requirements +-of a uniform random bit generator\iref{rand.req.urng} ++of a \link{uniform random bit generator}{rand.req.urng} + also meets the requirements + of a \term{random number engine} + if the expressions shown +@@ -1888,7 +1888,7 @@ In \tref{rand.req.eng} and throughout this subclause: + \tcode{s} is a value of \tcode{T}; + \item + \tcode{q} is an lvalue +- meeting the requirements of a seed sequence\iref{rand.req.seedseq}; ++ meeting the requirements of a \link{seed sequence}{rand.req.seedseq}; + \item + \tcode{z} is a value + of type \tcode{unsigned long long}; +@@ -2322,7 +2322,7 @@ In \tref{rand.req.dist} and throughout this subclause, + \item + \tcode{g}, \tcode{g1}, and \tcode{g2} are lvalues of a type + meeting the requirements +- of a uniform random bit generator\iref{rand.req.urng}; ++ of a \link{uniform random bit generator}{rand.req.urng}; + \item + \tcode{os} is an lvalue of the type of some class template specialization + \tcode{basic_ostream}; +@@ -2354,7 +2354,7 @@ according to \ref{strings} and \ref{input.output}. + \endhead + \tcode{D::result_type} + & \tcode{T} +- & \tcode{T} is an arithmetic type\iref{basic.fundamental}. ++ & \tcode{T} is an \deflinkx{arithmetic type}{type!arithmetic}{basic.fundamental}. + & + \\ \rowsep + \tcode{D::param_type} +@@ -2596,7 +2596,7 @@ reference to the type of \tcode{is}. + Each type instantiated + from a class template specified in \ref{rand.eng} + meets the requirements +-of a random number engine\iref{rand.req.eng} type. ++of a \link{random number engine}{rand.req.eng} type. + + \pnum + Except where specified otherwise, +@@ -3394,7 +3394,7 @@ The counter is the value $Z$ introduced at the beginning of this subclause. + Each type instantiated + from a class template specified in \ref{rand.adapt} + meets the requirements +-of a random number engine adaptor\iref{rand.req.adapt} type. ++of a \link{random number engine adaptor}{rand.req.adapt} type. + + \pnum + Except where specified otherwise, +@@ -4488,7 +4488,7 @@ than the output when computing $S$. + Each type instantiated + from a class template specified in \ref{rand.dist} + meets the requirements +-of a random number distribution\iref{rand.req.dist} type. ++of a \link{random number distribution}{rand.req.dist} type. + + \pnum + Descriptions are provided in \ref{rand.dist} +@@ -5342,6 +5342,7 @@ p(x\,|\,\alpha,\beta) = + + \indexlibraryglobal{gamma_distribution}% + \indexlibrarymember{result_type}{gamma_distribution}% ++\indexlibrary{\idxcode{gamma_distribution}}% + \begin{codeblock} + namespace std { + template +@@ -5385,7 +5386,6 @@ namespace std { + } + \end{codeblock} + +- + \indexlibraryctor{gamma_distribution}% + \begin{itemdecl} + explicit gamma_distribution(RealType alpha, RealType beta = 1.0); +@@ -5492,7 +5492,7 @@ namespace std { + \indexlibraryctor{weibull_distribution}% + \begin{itemdecl} + explicit weibull_distribution(RealType a, RealType b = 1.0); +-\end{itemdecl}% ++\end{itemdecl} + + \begin{itemdescr} + \pnum +@@ -5602,7 +5602,6 @@ namespace std { + } + \end{codeblock} + +- + \indexlibraryctor{extreme_value_distribution}% + \begin{itemdecl} + explicit extreme_value_distribution(RealType a, RealType b = 1.0); +@@ -5726,7 +5725,6 @@ namespace std { + } + \end{codeblock} + +- + \indexlibraryctor{normal_distribution}% + \begin{itemdecl} + explicit normal_distribution(RealType mean, RealType stddev = 1.0); +@@ -5930,7 +5928,6 @@ namespace std { + } + \end{codeblock} + +- + \indexlibraryctor{chi_squared_distribution}% + \begin{itemdecl} + explicit chi_squared_distribution(RealType n); +@@ -6124,7 +6121,6 @@ namespace std { + } + \end{codeblock} + +- + \indexlibraryctor{fisher_f_distribution}% + \begin{itemdecl} + explicit fisher_f_distribution(RealType m, RealType n = 1); +@@ -6227,7 +6223,6 @@ namespace std { + } + \end{codeblock} + +- + \indexlibraryctor{student_t_distribution}% + \begin{itemdecl} + explicit student_t_distribution(RealType n); +@@ -6343,7 +6338,7 @@ namespace std { + } + \end{codeblock} + +-\indexlibraryctor{discrete_distribution} ++\indexlibraryctor{discrete_distribution}% + \begin{itemdecl} + discrete_distribution(); + \end{itemdecl} +@@ -7194,7 +7189,7 @@ objects. + + \pnum + These library functions are permitted to throw a +-\tcode{bad_alloc}\iref{bad.alloc} exception if there are not sufficient resources available ++\link{\tcode{bad_alloc}}{bad.alloc} exception if there are not sufficient resources available + to carry out the operation. + Note that the exception is not mandated. + +@@ -7362,7 +7357,7 @@ explicit valarray(size_t n); + \pnum + \effects + Constructs a \tcode{valarray} that has length \tcode{n}. +-Each element of the array is value-initialized\iref{dcl.init}. ++Each element of the array is \deflinkx{value-initialized}{value-initialization}{dcl.init}. + \end{itemdescr} + + \indexlibraryctor{valarray}% +@@ -7622,7 +7617,7 @@ and other techniques to generate efficient + \pnum + The reference returned by the subscript operator for an array shall + be valid until the member function +-\tcode{resize(size_t, T)}\iref{valarray.members} is called for that array or until the lifetime of ++\libmemberrefx{resize(size_t, T)}{valarray}{resize} is called for that array or until the lifetime of + that array ends, whichever happens first. + \end{itemdescr} + +@@ -8048,7 +8043,7 @@ places, with zero fill. + \pnum + \begin{example} + If the argument has the value $-2$, +-the first two elements of the result will be value-initialized\iref{dcl.init}; the third element of the result will be assigned the value ++the first two elements of the result will be \deflinkx{value-initialized}{value-initialization}{dcl.init}; the third element of the result will be assigned the value + of the first element of \tcode{*this}; etc. + \end{example} + \end{itemdescr} +@@ -9173,7 +9168,7 @@ parameter \tcode{T} and its \tcode{reference} type is \tcode{const T\&}. + \pnum + The iterators returned by \tcode{begin} and \tcode{end} for an array + are guaranteed to be valid until the member function +-\tcode{resize(size_t, T)}\iref{valarray.members} is called for that ++\libmemberrefx{resize(size_t, T)}{valarray}{resize} is called for that + array or until the lifetime of that array ends, whichever happens + first. + +@@ -9814,12 +9809,12 @@ The contents and meaning of the header \libheader{cmath} + are a subset of the C standard library header \libheader{math.h} and + only the declarations shown in the synopsis above are present, + with the addition of +-a three-dimensional hypotenuse function\iref{c.math.hypot3}, +-a linear interpolation function\iref{c.math.lerp}, and ++a \link{three-dimensional hypotenuse function}{c.math.hypot3}, ++a \link{linear interpolation function}{c.math.lerp}, and + the mathematical special functions described in \ref{sf.cmath}. + \begin{note} + Several functions have additional overloads in this document, +-but they have the same behavior as in the C standard library\iref{library.c}. ++but they have the same behavior as in the \link{C standard library}{library.c}. + \end{note} + + \pnum +@@ -9883,7 +9878,7 @@ for the functions \tcode{abs}, \tcode{labs}, and \tcode{llabs}, respectively. + If \tcode{abs} is called with an argument of type \tcode{X} + for which \tcode{is_unsigned_v} is \tcode{true} and + if \tcode{X} cannot be converted to \tcode{int} +-by integral promotion\iref{conv.prom}, the program is ill-formed. ++by \link{integral promotion}{conv.prom}, the program is ill-formed. + \begin{note} + Allowing arguments that can be promoted to \tcode{int} + provides compatibility with C. +diff --git a/source/overloading.tex b/source/overloading.tex +index 52883f84..d3250f2d 100644 +--- a/source/overloading.tex ++++ b/source/overloading.tex +@@ -74,7 +74,7 @@ Overload resolution selects the function to call in seven distinct + contexts within the language: + \begin{itemize} + \item +-invocation of a function named in the function call syntax\iref{over.call.func}; ++invocation of a function named in the \link{function call syntax}{over.call.func}; + \item + invocation of a function call operator, a pointer-to-function + conversion function, a reference-to-pointer-to-function conversion +@@ -88,14 +88,14 @@ invocation of a constructor for default- or direct-initialization\iref{dcl.init} + of a class object\iref{over.match.ctor}; + \item + invocation of a user-defined conversion for +-copy-initialization\iref{dcl.init} of a class object\iref{over.match.copy}; ++\deflink{copy-initialization}{dcl.init} of a class object\iref{over.match.copy}; + \item + invocation of a conversion function for initialization of an object of a + non-class type from an expression of class type\iref{over.match.conv}; and + \item + invocation of a conversion function for conversion + in which a reference\iref{dcl.init.ref} +-will be directly bound\iref{over.match.ref}. ++will be \link{directly bound}{over.match.ref}. + \end{itemize} + + Each of these contexts defines the set of candidate functions and +@@ -113,7 +113,7 @@ conditions) is selected to form a set of + viable functions\iref{over.match.viable}. + \item + Then the best viable function is selected based on the +-implicit conversion sequences\iref{over.best.ics} needed to ++\link{implicit conversion sequences}{over.best.ics} needed to + match each argument to the corresponding parameter of each + viable function. + \end{itemize} +@@ -124,7 +124,7 @@ resolution succeeds and produces it as the result. + Otherwise + overload resolution fails and the invocation is ill-formed. + When overload resolution succeeds, +-and the best viable function is not accessible\iref{class.access} in the context ++and the best viable function is not \link{accessible}{class.access} in the context + in which it is used, + the program is ill-formed. + +@@ -238,7 +238,7 @@ as long as in all other respects the argument can be + converted to the type of the implicit object parameter. + \begin{note} + The fact that such an argument is an rvalue does not +-affect the ranking of implicit conversion sequences\iref{over.ics.rank}. ++affect the \link{ranking}{over.ics.rank} of implicit conversion sequences. + \end{note} + + \pnum +@@ -361,7 +361,7 @@ B b3 = C(); // calls \#4 + \indextext{overloading!resolution!function call syntax|(} + + \pnum +-In a function call\iref{expr.call} ++In a \link{function call}{expr.call} + \begin{ncsimplebnf} + postfix-expression \terminal{(} \opt{expression-list} \terminal{)} + \end{ncsimplebnf} +@@ -958,7 +958,7 @@ in each case using the selected rewritten \tcode{\keyword{operator}==} candidate + If a built-in candidate is selected by overload resolution, the + operands of class type are converted to the types of the corresponding parameters + of the selected operation function, except that the second standard conversion +-sequence of a user-defined conversion sequence\iref{over.ics.user} is not applied. ++sequence of a \link{user-defined conversion sequence}{over.ics.user} is not applied. + Then the operator is treated as the corresponding + built-in operator and interpreted according to \ref{expr.compound}. + \begin{example} +@@ -1041,10 +1041,10 @@ void B::f() { + \indextext{overloading!resolution!initialization} + + \pnum +-When objects of class type are direct-initialized\iref{dcl.init}, ++When objects of class type are \deflinkx{direct-initialized}{direct-initialization}{dcl.init}, + copy-initialized from an expression of the same or a + derived class type\iref{dcl.init}, +-or default-initialized\iref{dcl.init}, ++or \deflinkx{default-initialized}{default-initialization}{dcl.init}, + overload resolution selects the constructor. + For direct-initialization or default-initialization + (including default-initialization in the context of copy-list-initialization), +@@ -1836,7 +1836,7 @@ Third, for + \tcode{F} + to be a viable function, there shall exist for each + argument an +-implicit conversion sequence\iref{over.best.ics} that ++\deflinkx{implicit conversion sequence}{conversion sequence!implicit}{over.best.ics} that + converts that argument to the corresponding parameter of + \tcode{F}. + If the parameter has reference type, the implicit conversion sequence +@@ -1900,8 +1900,8 @@ float x = a; // ambiguous: both possibilities require conversions, + \end{example} + or, if not that, + +-\item the context is an initialization by conversion function for direct +-reference binding\iref{over.match.ref} of a reference to function type, the ++\item the context is an initialization by conversion function for \link{direct ++reference binding}{over.match.ref} of a reference to function type, the + return type of $\tcode{F}_1$ is the same kind of reference (lvalue or rvalue) + as the reference being initialized, and the return type of $\tcode{F}_2$ is not + \begin{example} +@@ -2031,7 +2031,7 @@ $\tcode{F}_1$ is generated from a + and $\tcode{F}_2$ is not, or, if not that, + + \item +-$\tcode{F}_1$ is the copy deduction candidate\iref{over.match.class.deduct} ++$\tcode{F}_1$ is the \deflink{copy deduction candidate}{over.match.class.deduct} + and $\tcode{F}_2$ is not, or, if not that, + + \item +@@ -2157,7 +2157,7 @@ parameter. + \begin{note} + Other properties, such as the lifetime, storage duration, linkage, + alignment, accessibility of the argument, whether the argument is a bit-field, +-and whether a function is deleted\iref{dcl.fct.def.delete}, are ignored. ++and whether a function is \link{deleted}{dcl.fct.def.delete}, are ignored. + So, although an implicit + conversion sequence can be defined for a given argument-parameter + pair, the conversion from the argument to the parameter might still +@@ -2170,11 +2170,11 @@ well-formed implicit conversion + sequence is one of the following forms: + \begin{itemize} + \item +-a standard conversion sequence\iref{over.ics.scs}, ++a \link{standard conversion sequence}{over.ics.scs}, + \item +-a user-defined conversion sequence\iref{over.ics.user}, or ++a \link{user-defined conversion sequence}{over.ics.user}, or + \item +-an ellipsis conversion sequence\iref{over.ics.ellipsis}. ++an \link{ellipsis conversion sequence}{over.ics.ellipsis}. + \end{itemize} + + \pnum +@@ -2352,10 +2352,10 @@ Each conversion in \tref{over.ics.scs} + also has an associated rank (Exact + Match, Promotion, or Conversion). + These are used +-to rank standard conversion sequences\iref{over.ics.rank}. ++to \link{rank standard conversion sequences}{over.ics.rank}. + The rank of a conversion sequence is determined by considering the +-rank of each conversion in the sequence and the rank of any reference +-binding\iref{over.ics.ref}. ++rank of each conversion in the sequence and the rank of any \link{reference ++binding}{over.ics.ref}. + If any of those has Conversion rank, the + sequence has Conversion rank; otherwise, if any of those has Promotion rank, + the sequence has Promotion rank; otherwise, the sequence has Exact +@@ -2392,7 +2392,7 @@ by a constructor\iref{class.conv.ctor}, the initial standard + conversion sequence converts the source type to the type of the + first parameter of that constructor. + If the user-defined +-conversion is specified by a conversion function\iref{class.conv.fct}, the ++conversion is specified by a \link{conversion function}{class.conv.fct}, the + initial standard conversion sequence + converts the source type to the type of the + object parameter of that conversion function. +@@ -2528,7 +2528,7 @@ the prohibition on binding a non-\keyword{const} lvalue reference to a bit-field + \rSec4[over.ics.list]{List-initialization sequence} + + \pnum +-When an argument is an initializer list\iref{dcl.init.list}, it is not an ++When an argument is an initializer list\iref{dcl.init.list}, it is not an % todo + expression and special rules apply for converting it to a parameter type. + + \pnum +@@ -2770,13 +2770,13 @@ When comparing the basic forms of implicit conversion sequences + (as defined in~\ref{over.best.ics}) + \begin{itemize} + \item +-a standard conversion sequence\iref{over.ics.scs} is a better ++a \link{standard conversion sequence}{over.ics.scs} is a better + conversion sequence than a user-defined conversion sequence + or an ellipsis conversion sequence, and + \item +-a user-defined conversion sequence\iref{over.ics.user} is a +-better conversion sequence than an ellipsis conversion +-sequence\iref{over.ics.ellipsis}. ++a \link{user-defined conversion sequence}{over.ics.user} is a ++better conversion sequence than an \link{ellipsis conversion ++sequence}{over.ics.ellipsis}. + \end{itemize} + + \pnum +@@ -3203,7 +3203,7 @@ the left side of an assignment\iref{expr.assign}, + \item + a parameter of a function\iref{expr.call}, + \item +-a parameter of a user-defined operator\iref{over.oper}, ++a parameter of a \link{user-defined operator}{over.oper}, + \item + the return value of a function, operator function, or conversion\iref{stmt.return}, + \item +@@ -3403,8 +3403,8 @@ The operators + and + \tcode{[]} + are formed from more than one token. +-The latter two operators are function call\iref{expr.call} +-and subscripting\iref{expr.sub}. ++The latter two operators are \link{function call}{expr.call} ++and \link{subscripting}{expr.sub}. + \end{note} + \indextext{operator!subscripting}% + \indextext{operator!function call}% +@@ -3500,7 +3500,7 @@ this is not required by operator functions. + + \pnum + \indextext{argument!overloaded operator and default}% +-An operator function cannot have default arguments\iref{dcl.fct.default}, ++An operator function cannot have \link{default arguments}{dcl.fct.default}, + except where explicitly stated below. + Operator + functions cannot have more or fewer parameters than the +@@ -3845,7 +3845,7 @@ to not be included in the set of candidate functions. + In this subclause, the term + \defn{promoted integral type} + is used to refer to those cv-unqualified integral types which are preserved by +-integral promotion\iref{conv.prom} (including e.g. ++\link{integral promotion}{conv.prom} (including e.g. + \tcode{int} + and + \tcode{long} +diff --git a/source/preprocessor.tex b/source/preprocessor.tex +index 0bfb7f19..b3cf7fc7 100644 +--- a/source/preprocessor.tex ++++ b/source/preprocessor.tex +@@ -551,8 +551,8 @@ are replaced with the \grammarterm{pp-number} + \tcode{0}, + and then each preprocessing token is converted into a token. + \begin{note} +-An alternative +-token\iref{lex.digraph} is not an identifier, ++An \link{alternative ++token}{lex.digraph} is not an identifier, + even when its spelling consists entirely of letters and underscores. + Therefore it is not subject to this replacement. + \end{note} +@@ -570,8 +570,8 @@ Thus on an + implementation where \tcode{std::numeric_limits::max()} is \tcode{0x7FFF} + and \tcode{std::numeric_limits::max()} is \tcode{0xFFFF}, + the integer literal \tcode{0x8000} is signed and positive within a \tcode{\#if} +-expression even though it is unsigned in translation phase +-7\iref{lex.phases}. ++expression even though it is unsigned in \link{translation phase ++7}{lex.phases}. + \end{note} + This includes interpreting \grammarterm{character-literal}s + according to the rules in \ref{lex.ccon}. +@@ -2126,7 +2126,7 @@ of the current source line is + the line number of the current physical source line, + i.e., it is one greater than + the number of new-line characters read or introduced +-in translation phase 1\iref{lex.phases} ++in \link{translation phase 1}{lex.phases} + while processing the source file to the current preprocessing token. + + \pnum +@@ -2489,7 +2489,7 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. + \indextext{__stdcpp_threads__@\mname{STDCPP_THREADS}}% + \mname{STDCPP_THREADS}\\ + Defined, and has the value integer literal \tcode{1}, if and only if a program +-can have more than one thread of execution\iref{intro.multithread}. ++can have more than one \link{thread of execution}{intro.multithread}. + + \end{description} + +diff --git a/source/statements.tex b/source/statements.tex +index fa6944b1..301d6304 100644 +--- a/source/statements.tex ++++ b/source/statements.tex +@@ -224,7 +224,7 @@ Expression statements have the form + \end{bnf} + + The expression is +-a discarded-value expression\iref{expr.context}. ++a \deflink{discarded-value expression}{expr.context}. + All + \indextext{side effects}% + side effects from an expression statement +@@ -452,10 +452,10 @@ the value of the condition is the value of the \grammarterm{expression}; + otherwise, it is the value of the decision variable. + The value of the condition shall be of integral type, enumeration type, or class + type. If of class type, the +-condition is contextually implicitly converted\iref{conv} to ++condition is \deflink{contextually implicitly converted}{conv} to + an integral or enumeration type. +-If the (possibly converted) type is subject to integral +-promotions\iref{conv.prom}, the condition is converted ++If the (possibly converted) type is subject to \link{integral ++promotions}{conv.prom}, the condition is converted + to the promoted type. + Any + statement within the \keyword{switch} statement can be labeled with one or +@@ -465,7 +465,7 @@ more case labels as follows: + \keyword{case} constant-expression \terminal{:} + \end{ncbnf} + where the \grammarterm{constant-expression} shall be +-a converted constant expression\iref{expr.const.const} of the ++a converted \link{constant expression}{expr.const.const} of the + adjusted type of the switch condition. No two of the case constants in + the same switch shall have the same value after conversion. + +@@ -551,7 +551,7 @@ An \grammarterm{init-statement} ends with a semicolon. + \pnum + \indextext{scope!\idxgram{iteration-statement}}% + The substatement in an \grammarterm{iteration-statement} implicitly defines +-a block scope\iref{basic.scope} which is entered and exited each time ++a block \link{scope}{basic.scope} which is entered and exited each time + through the loop. + If the substatement in an \grammarterm{iteration-statement} is + a single statement and not a \grammarterm{compound-statement}, +@@ -650,7 +650,7 @@ fails. + \indextext{statement!\idxcode{do}} + + \pnum +-The expression is contextually converted to \tcode{bool}\iref{conv}; ++The expression is \deflinkx{contextually converted to \tcode{bool}}{conversion!contextual to \tcode{bool}}{conv}; + if that conversion is ill-formed, the program is ill-formed. + + \pnum +@@ -1028,8 +1028,8 @@ Jump statements unconditionally transfer control. + \indextext{local variable!destruction of}% + \indextext{scope!destructor and exit from}% + \begin{note} +-On exit from a scope (however accomplished), objects with automatic storage +-duration\iref{basic.stc.auto} that have been constructed in that scope are destroyed ++On exit from a scope (however accomplished), objects with \link{automatic storage ++duration}{basic.stc.auto} that have been constructed in that scope are destroyed + in the reverse order of their construction\iref{stmt.dcl}. + For temporaries, see~\ref{class.temporary}. + However, the program can be terminated (by calling +@@ -1098,7 +1098,7 @@ in a function that has a return type other than \cv{}~\keyword{void}; + the \tcode{return} statement initializes the + returned reference or prvalue result object + of the (explicit or implicit) function call +-by copy-initialization\iref{dcl.init} from the operand. ++by \deflink{copy-initialization}{dcl.init} from the operand. + \begin{note} + A constructor or destructor does not have a return type. + \end{note} +@@ -1235,7 +1235,7 @@ results in undefined behavior. + The \tcode{goto} statement unconditionally transfers control to the + statement labeled by the identifier. The identifier shall be a + \indextext{label}% +-label\iref{stmt.label} located in the current function. ++\link{label}{stmt.label} located in the current function. + + \rSec1[stmt.contract.assert]{Assertion statement} + +@@ -1347,8 +1347,8 @@ lx: + \indextext{initialization!local \tcode{static}}% + \indextext{initialization!local \tcode{thread_local}}% + Dynamic initialization of a block variable with +-static storage duration\iref{basic.stc.static} or +-thread storage duration\iref{basic.stc.thread} is performed ++\link{static storage duration}{basic.stc.static} or ++\link{thread storage duration}{basic.stc.thread} is performed + the first time control passes through its declaration; such a variable is + considered initialized upon the completion of its initialization. If the + initialization exits by throwing an exception, the initialization is not +@@ -1391,8 +1391,8 @@ will be destroyed if and only if it was constructed. + \pnum + There is an ambiguity in the grammar involving + \grammarterm{expression-statement}{s} and \grammarterm{declaration}{s}: An +-\grammarterm{expression-statement} with a function-style explicit type +-conversion\iref{expr.type.conv} as its leftmost subexpression can be ++\grammarterm{expression-statement} with a \link{function-style explicit type ++conversion}{expr.type.conv} as its leftmost subexpression can be + indistinguishable from a \grammarterm{declaration} where the first + \grammarterm{declarator} starts with a \tcode{(}. In those cases the + \grammarterm{statement} is considered a \grammarterm{declaration}, +diff --git a/source/strings.tex b/source/strings.tex +index 1286a236..025af463 100644 +--- a/source/strings.tex ++++ b/source/strings.tex +@@ -5547,13 +5547,13 @@ The contents and meaning of the header \libheaderdef{cstring} + are the same as the C standard library header \libheader{string.h}. + + \pnum +-The functions \tcode{strerror} and \tcode{strtok} are not required to avoid data +-races\iref{res.on.data.races}. ++The functions \tcode{strerror} and \tcode{strtok} are not required to ++\link{avoid data races}{res.on.data.races}. + + \pnum + \indextext{signal-safe!\idxcode{memcpy}}% + \indextext{signal-safe!\idxcode{memmove}}% +-The functions \tcode{memcpy} and \tcode{memmove} are signal-safe\iref{support.signal}. ++The functions \tcode{memcpy} and \tcode{memmove} are \deflinkx{signal-safe}{evaluation!signal-safe}{support.signal}. + Each of these functions implicitly creates objects\iref{intro.object} + in the destination region of storage + immediately prior to copying the sequence of characters to the destination. +@@ -5565,7 +5565,7 @@ otherwise the value of the first parameter. + The functions + \tcode{strchr}, \tcode{strpbrk}, \tcode{strrchr}, \tcode{strstr}, and \tcode{memchr}, + have different signatures in this document, +-but they have the same behavior as in the C standard library\iref{library.c}. ++but they have the same behavior as in the \link{C standard library}{library.c}. + \end{note} + + \xrefc{7.26} +diff --git a/source/support.tex b/source/support.tex +index 70028e67..f49c677b 100644 +--- a/source/support.tex ++++ b/source/support.tex +@@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. + + \rSec2[cstddef.syn]{Header \tcode{} synopsis} + +-\indexlibraryglobal{NULL}% +-\indexlibraryglobal{offsetof}% +-\indexlibraryglobal{ptrdiff_t}% +-\indexlibraryglobal{size_t}% +-\indexlibraryglobal{max_align_t}% +-\indexlibraryglobal{nullptr_t}% +-\indexlibraryglobal{byte}% + \begin{codeblock} + // all freestanding + namespace std { +- using ptrdiff_t = @\seebelow@; +- using size_t = @\seebelow@; +- using max_align_t = @\seebelow@; +- using nullptr_t = decltype(nullptr); ++ using @\libglobal{ptrdiff_t}@ = @\seebelow@; ++ using @\libglobal{size_t}@ = @\seebelow@; ++ using @\libglobal{max_align_t}@ = @\seebelow@; ++ using @\libglobal{nullptr_t}@ = decltype(nullptr); + +- enum class byte : unsigned char {}; ++ enum class @\libglobal{byte}@ : unsigned char {}; + + // \ref{support.types.byteops}, \tcode{byte} type operations + template +@@ -82,8 +75,8 @@ namespace std { + constexpr IntType to_integer(byte b) noexcept; + } + +-#define NULL @\seebelow@ +-#define offsetof(P, D) @\seebelow@ ++#define @\libglobal{NULL}@ @\seebelow@ ++#define @\libglobal{offsetof}@(P, D) @\seebelow@ + \end{codeblock} + + \pnum +@@ -102,11 +95,6 @@ and as noted in + \rSec2[cstdlib.syn]{Header \tcode{} synopsis} + + \indexheader{cstdlib}% +-\indexlibraryglobal{EXIT_FAILURE}% +-\indexlibraryglobal{EXIT_SUCCESS}% +-\indexlibraryglobal{MB_CUR_MAX}% +-\indexlibraryglobal{NULL}% +-\indexlibraryglobal{RAND_MAX}% + \indexlibraryglobal{_Exit}% + \indexlibraryglobal{abort}% + \indexlibraryglobal{abs}% +@@ -123,7 +111,6 @@ and as noted in + \indexlibraryglobal{div_t}% + \indexlibraryglobal{exit}% + \indexlibraryglobal{free}% +-\indexlibraryglobal{getenv}% + \indexlibraryglobal{labs}% + \indexlibraryglobal{ldiv}% + \indexlibraryglobal{ldiv_t}% +@@ -158,11 +145,11 @@ namespace std { + using lldiv_t = @\seebelow@; // freestanding + } + +-#define NULL @\seebelow@ // freestanding +-#define EXIT_FAILURE @\seebelow@ // freestanding +-#define EXIT_SUCCESS @\seebelow@ // freestanding +-#define RAND_MAX @\seebelow@ +-#define MB_CUR_MAX @\seebelow@ ++#define @\libglobal{NULL}@ @\seebelow@ // freestanding ++#define @\libglobal{EXIT_FAILURE}@ @\seebelow@ // freestanding ++#define @\libglobal{EXIT_SUCCESS}@ @\seebelow@ // freestanding ++#define @\libglobal{RAND_MAX}@ @\seebelow@ ++#define @\libglobal{MB_CUR_MAX}@ @\seebelow@ + + namespace std { + // Exposition-only function type aliases +@@ -181,7 +168,7 @@ namespace std { + [[noreturn]] void _Exit(int status) noexcept; // freestanding + [[noreturn]] void quick_exit(int status) noexcept; // freestanding + +- char* getenv(const char* name); ++ char* @\libglobal{getenv}@(const char* name); + int system(const char* string); + + // \ref{c.malloc}, C library memory allocation +@@ -265,7 +252,7 @@ and except as noted in + \ref{c.math.abs}. + \begin{note} + Several functions have additional overloads in this document, +-but they have the same behavior as in the C standard library\iref{library.c}. ++but they have the same behavior as in the \link{C standard library}{library.c}. + \end{note} + + \xrefc{7.24} +@@ -319,8 +306,8 @@ is required to work as specified even if unary + is overloaded for any of the types involved. + \end{footnote} + The expression \tcode{offsetof(\placeholder{type}, \placeholder{member-designator})} +-is never type-dependent\iref{temp.dep.expr} and it is +-value-dependent\iref{temp.dep.constexpr} if and only if \tcode{\placeholder{type}} is ++is never \link{type-dependent}{temp.dep.expr} and it is ++\link{value-dependent}{temp.dep.constexpr} if and only if \tcode{\placeholder{type}} is + dependent. The result of applying the \tcode{offsetof} macro to + a static data member or a function member is undefined. + No operation invoked by the \tcode{offsetof} macro shall throw an exception and +@@ -1118,7 +1105,7 @@ the specialization on the unqualified type \tcode{T}. + + \pnum + Non-arithmetic standard types, such as +-\tcode{complex}\iref{complex}, shall not have specializations. ++\link{\tcode{complex}}{complex}, shall not have specializations. + + \rSec3[numeric.limits.members]{\tcode{numeric_limits} members} + +@@ -2122,7 +2109,7 @@ The program is terminated without executing destructors for objects with automat + thread, or static storage duration and without calling functions passed to + \tcode{atexit()}\iref{basic.start.term}. + \indextext{signal-safe!\idxcode{_Exit}}% +-The function \tcode{_Exit} is signal-safe\iref{support.signal}. ++The function \tcode{_Exit} is \deflinkx{signal-safe}{evaluation!signal-safe}{support.signal}. + \end{itemdescr} + + \indexlibraryglobal{abort}% +@@ -2142,7 +2129,7 @@ automatic, thread, or static storage + duration and without calling functions passed to + \tcode{atexit()}\iref{basic.start.term}. + \indextext{signal-safe!\idxcode{abort}}% +-The function \tcode{abort} is signal-safe\iref{support.signal}. ++The function \tcode{abort} is \deflinkx{signal-safe}{evaluation!signal-safe}{support.signal}. + \end{itemdescr} + + \indexlibraryglobal{atexit}% +@@ -2159,7 +2146,8 @@ The + functions register the function pointed to by \tcode{f} + to be called without arguments at normal program termination. + It is unspecified whether a call to \tcode{atexit()} that does not +-happen before\iref{intro.multithread} a call to \tcode{exit()} will succeed. ++\deflinkx{happen before}{happens before}{intro.multithread} ++a call to \tcode{exit()} will succeed. + \begin{note} + The \tcode{atexit()} functions do not introduce a data + race\iref{res.on.data.races}. +@@ -2253,7 +2241,8 @@ int at_quick_exit(@\placeholder{atexit-handler}@* f) noexcept; + The \tcode{at_quick_exit()} functions register the function pointed to by \tcode{f} + to be called without arguments when \tcode{quick_exit} is called. + It is unspecified whether a call to \tcode{at_quick_exit()} that does not +-happen before\iref{intro.multithread} all calls to \tcode{quick_exit} will succeed. ++\deflinkx{happen before}{happens before}{intro.multithread} ++all calls to \tcode{quick_exit} will succeed. + \begin{note} + The + \tcode{at_quick_exit()} functions do not introduce a +@@ -2305,7 +2294,7 @@ After calling registered functions, \tcode{quick_exit} shall call \tcode{_Exit(s + \pnum + \remarks + \indextext{signal-safe!\idxcode{quick_exit}}% +-The function \tcode{quick_exit} is signal-safe\iref{support.signal} ++The function \tcode{quick_exit} is \deflinkx{signal-safe}{evaluation!signal-safe}{support.signal} + when the functions registered with \tcode{at_quick_exit} are. + \end{itemdescr} + +@@ -2432,7 +2421,7 @@ void* operator new(std::size_t size, std::align_val_t alignment); + \pnum + \effects + The +-allocation functions\iref{basic.stc.dynamic.allocation} ++\link{allocation functions}{basic.stc.dynamic.allocation} + called by a + \grammarterm{new-expression}\iref{expr.new} + to allocate +@@ -2468,7 +2457,7 @@ a null pointer value, throws + \tcode{bad_alloc}. + \item + Otherwise, the function calls the current +-\tcode{new_handler} function\iref{new.handler}. ++\link{\tcode{new_handler}}{new.handler} function. + If the called function returns, the loop repeats. + \item + The loop terminates when an attempt to allocate the requested storage is +@@ -2690,7 +2679,7 @@ void* operator new[](std::size_t size, std::align_val_t alignment); + \pnum + \effects + The +-allocation functions\iref{basic.stc.dynamic.allocation} ++\link{allocation functions}{basic.stc.dynamic.allocation} + called by the array form of a + \grammarterm{new-expression}\iref{expr.new} + to allocate +@@ -3003,8 +2992,8 @@ versions of \tcode{operator delete}, the C standard library function + introduce a data race\iref{res.on.data.races}. + Calls to these functions that allocate or deallocate a particular unit + of storage shall occur in a single total order, and each such deallocation call +-shall happen before\iref{intro.multithread} the next allocation (if any) in +-this order. ++shall \deflinkx{happen before}{happens before}{intro.multithread} ++the next allocation (if any) in this order. + + \rSec2[alloc.errors]{Storage allocation errors} + +@@ -3375,7 +3364,8 @@ An \impldef{return value of \tcode{type_info::name()}} \ntbs{}. + + \pnum + \remarks +-The message may be a null-terminated multibyte string\iref{multibyte.strings}, ++The message may be a ++\deflinkx{null-terminated multibyte string}{NTMBS@\ntmbs{}}{multibyte.strings}, + suitable for conversion and display as a + \tcode{wstring}\iref{string.classes,locale.codecvt}. + \end{itemdescr} +@@ -3946,7 +3936,8 @@ the ordinary literal encoding\iref{lex.ccon}. + + \pnum + \remarks +-The message may be a null-terminated multibyte string\iref{multibyte.strings}, ++The message may be a ++\deflinkx{null-terminated multibyte string}{NTMBS@\ntmbs{}}{multibyte.strings}, + suitable for conversion and display as a + \tcode{wstring}\iref{string.classes,locale.codecvt}. + The return value remains valid until the exception object from which +@@ -4097,7 +4088,7 @@ The number of uncaught exceptions\iref{except.throw} in the current thread. + \remarks + When \tcode{uncaught_exceptions() > 0}, + throwing an exception can result in a call of the function +-\tcode{std::terminate}\iref{except.terminate}. ++\link{\tcode{std::terminate}}{except.terminate}. + \end{itemdescr} + + \rSec2[propagation]{Exception propagation} +@@ -4161,8 +4152,9 @@ exception_ptr current_exception() noexcept; + \begin{itemdescr} + \pnum + \returns +-An \tcode{exception_ptr} object that refers to +-the currently handled exception\iref{except.handle} or a copy of the currently ++An \tcode{exception_ptr} object that refers to the ++\deflinkx{currently handled exception}{exception handling!currently handled exception}{except.handle} ++or a copy of the currently + handled exception, or a null \tcode{exception_ptr} object if no exception is being + handled. The referenced object shall remain valid at least as long as there is an + \tcode{exception_ptr} object that refers to it. +@@ -4748,7 +4740,7 @@ constexpr bool empty() const noexcept; + \pnum + The header \libheaderdef{compare} specifies types, objects, and functions + for use primarily in connection with +-the three-way comparison operator\iref{expr.spaceship}. ++the \link{three-way comparison operator}{expr.spaceship}. + + \indexlibraryglobal{is_eq}% + \indexlibraryglobal{is_neq}% +@@ -6342,7 +6334,7 @@ environment. + \end{note} + + \pnum +-A call to the \tcode{setlocale} function\iref{c.locales} ++A call to the \libglobalref{setlocale} function + may introduce a data race with other + calls to the \tcode{setlocale} function or with calls to functions that are + affected by the current C locale. The implementation shall behave as if no +diff --git a/source/templates.tex b/source/templates.tex +index 36975546..ea6af80c 100644 +--- a/source/templates.tex ++++ b/source/templates.tex +@@ -716,7 +716,7 @@ struct A {}; + \rSec1[temp.names]{Names of template specializations} + + \pnum +-A template specialization\iref{temp.spec} can be referred to by a ++A \link{template specialization}{temp.spec} can be referred to by a + \grammarterm{template-id}: + + \begin{bnf} +@@ -1055,8 +1055,8 @@ in a \grammarterm{splice-specialization-specifier} + shall match the type and form specified for the corresponding + parameter declared by the template in its + \grammarterm{template-parameter-list}. +-When the parameter declared by the template is a template +-parameter pack\iref{temp.variadic}, it will correspond to zero or more ++When the parameter declared by the template is a ++\deflink{template parameter pack}{temp.variadic}, it will correspond to zero or more + \grammarterm{template-argument}{s}. + \begin{example} + \begin{codeblock} +@@ -1247,7 +1247,7 @@ When a \grammarterm{simple-template-id} or + \grammarterm{splice-specialization-specifier} + does not designate a function, + a default \grammarterm{template-argument} is +-implicitly instantiated\iref{temp.inst} ++\link{implicitly instantiated}{temp.inst} + when the value of that default argument is needed. + \begin{example} + \begin{codeblock} +@@ -1259,7 +1259,7 @@ The default argument for \tcode{U} is instantiated to form the type \tcode{S 1} is not satisfied; + the second operand is not checked for satisfaction. + \end{example} +@@ -1816,9 +1816,9 @@ in the declaration of a constrained entity (and, therefore, can involve the + unsubstituted template parameters of the constrained entity), + called the \defn{parameter mapping}\iref{temp.constr.decl}. + \begin{note} +-Atomic constraints are formed by constraint normalization\iref{temp.constr.normal}. +-\tcode{E} is never a logical \logop{and} expression\iref{expr.log.and} +-nor a logical \logop{or} expression\iref{expr.log.or}. ++Atomic constraints are formed by \link{constraint normalization}{temp.constr.normal}. ++\tcode{E} is never a \link{logical \logop{and} expression}{expr.log.and} ++nor a \link{logical \logop{or} expression}{expr.log.or}. + \end{note} + + \pnum +@@ -1895,7 +1895,7 @@ first substituted into its expression. + If substitution results in an invalid type or expression + in the immediate context of the atomic constraint\iref{temp.deduct.general}, + the constraint is not satisfied. +-Otherwise, the lvalue-to-rvalue conversion\iref{conv.lval} ++Otherwise, the \link{lvalue-to-rvalue conversion}{conv.lval} + is performed if necessary, + and \tcode{E} shall be a constant expression of type \tcode{bool}. + The constraint is satisfied if and only if evaluation of \tcode{E} +@@ -2057,11 +2057,11 @@ A declaration's \defn{associated constraints} are defined as follows: + the declaration has no associated constraints. + + \item Otherwise, if there is a single introduced \grammarterm{constraint-expression}, +-the associated constraints are the normal form\iref{temp.constr.normal} ++the associated constraints are the \deflinkx{normal form}{normal form!constraint}{temp.constr.normal} + of that expression. + +-\item Otherwise, the associated constraints are the normal form of a logical +-\logop{and} expression\iref{expr.log.and} whose operands are in the ++\item Otherwise, the associated constraints are the normal form of a \link{logical ++\logop{and} expression}{expr.log.and} whose operands are in the + following order: + \begin{itemize} + \item +@@ -2158,7 +2158,7 @@ so it does match \#2. + + \pnum + The \defnx{normal form}{normal form!constraint} of an \grammarterm{expression} \tcode{E} is +-a constraint\iref{temp.constr.constr} that is defined as follows: ++a \deflink{constraint}{temp.constr.constr} that is defined as follows: + % + \begin{itemize} + \item +@@ -2167,7 +2167,7 @@ the normal form of \tcode{E}. + + \item + The normal form of an expression \tcode{E1 || E2} is +-the disjunction\iref{temp.constr.op} of ++the \deflink{disjunction}{temp.constr.op} of + the normal forms of \tcode{E1} and \tcode{E2}. + + \item +@@ -2415,7 +2415,7 @@ the constraint of $A$ subsumes that of $B$. + \end{itemize} + % + \begin{example} +-Let $A$ and $B$ be atomic constraints\iref{temp.constr.atomic}. ++Let $A$ and $B$ be \deflinkx{atomic constraints}{constraint!atomic}{temp.constr.atomic}. + % + The constraint $A \land B$ subsumes $A$, but $A$ does not subsume $A \land B$. + % +@@ -2637,7 +2637,7 @@ declares \tcode{y} and \tcode{z} to be of the same type. + \end{example} + + \pnum +-If an expression $e$ is type-dependent\iref{temp.dep.expr}, ++If an expression $e$ is \link{type-dependent}{temp.dep.expr}, + \tcode{decltype($e$)} + denotes a unique dependent type. Two such \grammarterm{decltype-specifier}{s} + refer to the same type only if their \grammarterm{expression}{s} are +@@ -3064,7 +3064,7 @@ void S::g(U) { } // error: no matching function in \tcode{S} + + \pnum + A local class of non-closure type shall not have member templates. +-Access control rules\iref{class.access} ++\link{Access control rules}{class.access} + apply to member template names. + A destructor shall not be a member + template. +@@ -3291,7 +3291,7 @@ the \grammarterm{alignment-specifier} without the ellipsis. + \item In a \grammarterm{capture-list}\iref{expr.prim.lambda.capture}; the pattern is + the \grammarterm{capture} without the ellipsis. + +-\item In a \tcode{sizeof...} expression\iref{expr.sizeof}; the pattern is an ++\item In a \link{\tcode{sizeof...} expression}{expr.sizeof}; the pattern is an + \grammarterm{identifier}. + + \item In a \grammarterm{pack-index-expression}; +@@ -3914,9 +3914,9 @@ primary template. + \pnum + A partial specialization matches a given actual template argument + list if the template arguments of the partial specialization can be +-deduced from the actual template argument list\iref{temp.deduct}, +-and the deduced template arguments satisfy the associated constraints +-of the partial specialization, if any\iref{temp.constr.decl}. ++\link{deduced}{temp.deduct} from the actual template argument list, ++and the deduced template arguments satisfy the \deflink{associated constraints}{temp.constr.decl} ++of the partial specialization, if any. + \begin{example} + \begin{codeblock} + template class A { }; // \#1 +@@ -3978,14 +3978,14 @@ of the primary template. + For two partial specializations, + the first is \defn{more specialized} than the second if, given the following + rewrite to two function templates, the first function template is more +-specialized than the second according to the ordering rules for function +-templates\iref{temp.func.order}: ++specialized than the second according to the \link{ordering rules for function ++templates}{temp.func.order}: + + \begin{itemize} + \item + Each of the two + function templates has the same template parameters +-and associated constraints\iref{temp.constr.decl} ++and \deflink{associated constraints}{temp.constr.decl} + as the corresponding partial specialization. + \item + Each function template +@@ -4191,8 +4191,8 @@ void h(int* p) { + \end{example} + + \pnum +-Such specializations are distinct functions and do not violate the one-definition +-rule\iref{basic.def.odr}. ++Such specializations are distinct functions and do not violate the ++\link{one-definition rule}{basic.def.odr}. + + \pnum + The signature of a function template +@@ -4243,7 +4243,7 @@ For example, a template type parameter can be used in the + Two expressions involving template parameters are considered + \defnx{equivalent}{equivalent!expressions} + if two function definitions containing the expressions would satisfy +-the one-definition rule\iref{basic.def.odr}, except that the tokens used ++the \link{one-definition rule}{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. +@@ -4413,8 +4413,8 @@ function template + specialization + is selected to match a placement allocation function\iref{basic.stc.dynamic.deallocation,expr.new}; + \item +-when a friend function declaration\iref{temp.friend}, an +-explicit instantiation\iref{temp.explicit} or an explicit specialization\iref{temp.expl.spec} refers to ++when a \link{friend function declaration}{temp.friend}, an ++\link{explicit instantiation}{temp.explicit} or an \link{explicit specialization}{temp.expl.spec} refers to + a function template specialization. + \end{itemize} + +@@ -4807,7 +4807,7 @@ A \grammarterm{concept-definition} + shall inhabit a namespace scope\iref{basic.scope.namespace}. + + \pnum +-A concept shall not have associated constraints\iref{temp.constr.decl}. ++A concept shall not have \deflink{associated constraints}{temp.constr.decl}. + + \pnum + A concept is not instantiated\iref{temp.spec}. +@@ -5387,7 +5387,7 @@ any of the expressions + or \grammarterm{braced-init-list}{s} + in the + \grammarterm{expression-list} +-is type-dependent\iref{temp.dep.expr}, or ++is \link{type-dependent}{temp.dep.expr}, or + \item + the \grammarterm{unqualified-id} + is a \grammarterm{template-id} in which any of the template arguments depends +@@ -5447,7 +5447,7 @@ if it is + \item + in the definition of a class template, a nested class of a class template, + a member of a class template, or a member of a nested class of a class template, +-the injected-class-name\iref{class.pre} of the class template or nested class, ++the \deflink{injected-class-name}{class.pre} of the class template or nested class, + \item + in the definition of a primary class template + or a member of a primary class template, the name of the +@@ -5728,7 +5728,7 @@ used without a \grammarterm{template-argument-list}. + \end{footnote} + \item a \grammarterm{pack-index-specifier}, + \item denoted by \tcode{decltype(}\grammarterm{expression}{}\tcode{)}, +-where \grammarterm{expression} is type-dependent\iref{temp.dep.expr}, or ++where \grammarterm{expression} is \link{type-dependent}{temp.dep.expr}, or + \item denoted by a \grammarterm{splice-type-specifier} in which either + the \grammarterm{splice-specifier} or + \grammarterm{splice-specialization-specifier} +@@ -5880,7 +5880,7 @@ see~\ref{support.types}. + \end{note} + + \pnum +-A class member access expression\iref{expr.ref} is ++A \link{class member access expression}{expr.ref} is + type-dependent if + \begin{itemize} + \item +@@ -6260,7 +6260,7 @@ within a translation unit. + A specialization for any template may have points of instantiation in multiple + translation units. + If two different points of instantiation give a template specialization +-different meanings according to the one-definition rule\iref{basic.def.odr}, ++different meanings according to the \link{one-definition rule}{basic.def.odr}, + the program is ill-formed, no diagnostic required. + + \pnum +@@ -6571,7 +6571,7 @@ of type + + \pnum + If a function declaration acquired its function type through +-a dependent type\iref{temp.dep.type} without using the syntactic form of ++a \link{dependent type}{temp.dep.type} without using the syntactic form of + a function declarator, the program is ill-formed. + \begin{example} + \begin{codeblock} +@@ -6808,7 +6808,7 @@ void x() { + \end{example} + + \pnum +-If the function selected by overload resolution\iref{over.match} ++If the function selected by \link{overload resolution}{over.match} + can be determined without instantiating a class template definition, + it is unspecified whether that instantiation actually takes place. + \begin{example} +@@ -7165,7 +7165,7 @@ If an entity is the subject of both an explicit instantiation declaration + and an explicit instantiation definition in the same translation unit, the + definition shall follow the declaration. An entity that is the subject of an + explicit instantiation declaration and that is also used +-in a way that would otherwise cause an implicit instantiation\iref{temp.inst} ++in a way that would otherwise cause an \link{implicit instantiation}{temp.inst} + in the translation unit + shall be the subject of an explicit instantiation definition somewhere in the + program; otherwise the program is ill-formed, no diagnostic required. +@@ -8250,7 +8250,7 @@ a type not permitted for such\iref{expr.prim.lambda.closure}. + In the following example, + assuming a \tcode{signed char} + cannot represent the value 1000, +-a narrowing conversion\iref{dcl.init.list} ++a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} + would be required + to convert the \grammarterm{template-argument} + of type \tcode{int} to \tcode{signed char}, +@@ -8359,8 +8359,8 @@ is not a reference type: + \item + If + \tcode{A} +-is an array type, the pointer type produced by the array-to-pointer +-standard conversion\iref{conv.array} is used in place of ++is an array type, the pointer type produced by the \link{array-to-pointer ++standard conversion}{conv.array} is used in place of + \tcode{A} + for type deduction; + otherwise, +@@ -8368,7 +8368,7 @@ otherwise, + If + \tcode{A} + is a function type, the pointer type produced by the +-function-to-pointer standard conversion\iref{conv.func} is used in place ++\link{function-to-pointer standard conversion}{conv.func} is used in place + of + \tcode{A} + for type +@@ -8464,8 +8464,8 @@ The transformed \tcode{A} + can be another pointer or pointer-to-member type that can be converted + to the deduced + \tcode{A} +-via a function pointer conversion\iref{conv.fctptr} and/or +-qualification conversion\iref{conv.qual}. ++via a \link{function pointer conversion}{conv.fctptr} and/or ++\link{qualification conversion}{conv.qual}. + + \item + If +@@ -8598,7 +8598,7 @@ void test() { + + \pnum + Template arguments can be deduced from the type specified when taking +-the address of an overload set\iref{over.over}. ++the address of an \link{overload set}{over.over}. + If there is a target, + the function template's function type and the target type + are used as the types of +@@ -8645,7 +8645,7 @@ is not a reference type: + If + \tcode{P} + is an array type, the pointer type produced by the +-array-to-pointer standard conversion\iref{conv.array} is used in place of ++\link{array-to-pointer standard conversion}{conv.array} is used in place of + \tcode{P} + for type + deduction; otherwise, +@@ -8653,7 +8653,7 @@ deduction; otherwise, + If + \tcode{P} + is a function type, the pointer type produced by the +-function-to-pointer standard conversion\iref{conv.func} is used in place of ++\link{function-to-pointer standard conversion}{conv.func} is used in place of + \tcode{P} + for + type deduction; otherwise, +@@ -8744,7 +8744,7 @@ after a function has been selected. + In the context of a call to a conversion function, the return types of + the conversion function templates are used. + \item +-In other contexts\iref{temp.func.order} the function template's function ++In \link{other contexts}{temp.func.order} the function template's function + type is used. + \end{itemize} + +@@ -9258,7 +9258,7 @@ of $\texttt{P}_i$ is compared with each remaining argument in the + template argument list of \tcode{A}. Each comparison deduces + template arguments for subsequent positions in the template parameter + packs expanded by $\texttt{P}_i$. +-During partial ordering\iref{temp.deduct.partial}, if $\texttt{A}_i$ was ++During \link{partial ordering}{temp.deduct.partial}, if $\texttt{A}_i$ was + originally a pack expansion: + \begin{itemize} + \item if \tcode{P} does not contain a template argument corresponding to +@@ -9321,7 +9321,7 @@ each remaining parameter type in the parameter-type-list + of \tcode{A}. Each comparison deduces template arguments for + subsequent positions in the template parameter packs expanded by the + function parameter pack. +-During partial ordering\iref{temp.deduct.partial}, if $\texttt{A}_i$ was ++During \link{partial ordering}{temp.deduct.partial}, if $\texttt{A}_i$ was + originally a function parameter pack: + \begin{itemize} + \item if \tcode{P} does not contain a function parameter type corresponding to +@@ -9659,8 +9659,8 @@ int fv = f(g); // OK; \tcode{Types} contains \tcode{int}, \tcod + In a declaration whose \grammarterm{declarator-id} refers to a specialization + of a function template, template argument deduction is performed to identify + the specialization to which the declaration refers. Specifically, this is done +-for explicit instantiations\iref{temp.explicit}, explicit specializations\iref{temp.expl.spec}, +-and certain friend declarations\iref{temp.friend}. This is also done to ++for \link{explicit instantiations}{temp.explicit}, \link{explicit specializations}{temp.expl.spec}, ++and certain \link{friend declarations}{temp.friend}. This is also done to + determine whether a deallocation function template specialization matches a placement + allocation function\iref{basic.stc.dynamic.deallocation,expr.new}. + In all these cases, \tcode{P} is the type of the function template being considered +diff --git a/source/threads.tex b/source/threads.tex +index 53bec754..7a2d110e 100644 +--- a/source/threads.tex ++++ b/source/threads.tex +@@ -5,7 +5,7 @@ + + \pnum + The following subclauses describe components to create and manage +-threads\iref{intro.multithread}, perform mutual exclusion, and communicate conditions ++\deflinkx{threads}{thread}{intro.multithread}, perform mutual exclusion, and communicate conditions + and values + between threads, as summarized in \tref{thread.summary}. + +@@ -7309,7 +7309,7 @@ namespace std { + + \pnum + A mutex object facilitates protection against data races and allows safe synchronization of +-data between execution agents\iref{thread.req.lockable}. ++data between \deflinkx{execution agents}{execution agent}{thread.req.lockable}. + An execution agent \term{owns} a mutex from the time it successfully calls one of the + lock functions until it calls unlock. Mutexes can be either recursive or non-recursive, and can + grant simultaneous ownership to one or many execution agents. Both +@@ -7353,7 +7353,7 @@ atomic operations\iref{intro.multithread}. The lock and unlock operations on + a single mutex appear to occur in a single total order. + \begin{note} + This +-can be viewed as the modification order\iref{intro.multithread} of the ++can be viewed as the \deflink{modification order}{intro.multithread} of the + mutex. + \end{note} + \begin{note} +@@ -7433,7 +7433,7 @@ in the absence of contending mutex acquisitions. + \pnum + \sync + If \tcode{try_lock()} returns \tcode{true}, prior \tcode{unlock()} operations +-on the same object \term{synchronize with}\iref{intro.multithread} this operation. ++on the same object \deflink{synchronize with}{intro.multithread} this operation. + \begin{note} + Since \tcode{lock()} does not synchronize with a failed subsequent + \tcode{try_lock()}, the visibility rules are weak enough that little would be +@@ -7469,7 +7469,7 @@ Releases the calling thread's ownership of the mutex. + + \pnum + \sync +-This operation synchronizes with\iref{intro.multithread} subsequent ++This operation \deflinkx{synchronizes with}{synchronize with}{intro.multithread} subsequent + lock operations that obtain ownership on the same object. + + \pnum +@@ -7890,7 +7890,7 @@ Releases a shared lock on the mutex held by the calling thread. + + \pnum + \sync +-This operation synchronizes with\iref{intro.multithread} subsequent ++This operation \deflinkx{synchronizes with}{synchronize with}{intro.multithread} subsequent + \tcode{lock()} operations that obtain ownership on the same object. + + \pnum +@@ -8205,7 +8205,7 @@ namespace std { + \pnum + An object of type \tcode{lock_guard} controls the ownership of a lockable object + within a scope. A \tcode{lock_guard} object maintains ownership of a lockable +-object throughout the \tcode{lock_guard} object's lifetime\iref{basic.life}. ++object throughout the \tcode{lock_guard} object's \deflink{lifetime}{basic.life}. + The behavior of a program is undefined if the lockable object referenced by + \exposid{pm} does not exist for the entire lifetime of the \tcode{lock_guard} + object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} +@@ -8278,7 +8278,7 @@ namespace std { + \pnum + An object of type \tcode{scoped_lock} controls the ownership of lockable objects + within a scope. A \tcode{scoped_lock} object maintains ownership of lockable +-objects throughout the \tcode{scoped_lock} object's lifetime\iref{basic.life}. ++objects throughout the \tcode{scoped_lock} object's \deflink{lifetime}{basic.life}. + The behavior of a program is undefined if the lockable objects referenced by + \exposid{pm} do not exist for the entire lifetime of the \tcode{scoped_lock} + object. +@@ -9435,7 +9435,7 @@ earlier returning execution. + \pnum + \sync + For any given \tcode{once_flag}: all active executions occur in a total +-order; completion of an active execution synchronizes with\iref{intro.multithread} ++order; completion of an active execution \deflinkx{synchronizes with}{synchronize with}{intro.multithread} + the start of the next one in this total order; and the returning execution + synchronizes with the return from all passive executions. + +@@ -11410,22 +11410,21 @@ the state object. + + \pnum + Calls to functions that successfully set the stored result of a shared +-state synchronize +-with\iref{intro.multithread} calls to functions ++state \deflink{synchronize with}{intro.multithread} calls to functions + successfully detecting the ready state resulting from that setting. + The storage of the result + (whether normal or exceptional) into the shared state +-synchronizes with\iref{intro.multithread} ++\deflinkx{synchronizes with}{synchronize with}{intro.multithread} + the successful return from a call to a waiting function on the shared state. + + \pnum + Some functions (e.g., \tcode{promise::set_value_at_thread_exit}) delay making + the shared state ready until the calling thread exits. The destruction of +-each of that thread's objects with thread storage duration\iref{basic.stc.thread} ++each of that thread's objects with \link{thread storage duration}{basic.stc.thread} + is sequenced before making that shared state ready. + + \pnum +-Access to the result of the same shared state may conflict\iref{intro.multithread}. ++Access to the result of the same shared state may \deflink{conflict}{intro.multithread}. + \begin{note} + This explicitly specifies that the result of the shared state is + visible in the objects that reference this state in the sense of data race +@@ -11744,8 +11743,8 @@ The class template \tcode{future} defines a type for asynchronous return objects + do not share their shared state with other asynchronous return objects. + A default-constructed \tcode{future} object has no + shared state. A \tcode{future} object with shared state can be created by +-functions on asynchronous providers\iref{futures.state} or by the move constructor +-and shares its shared state with ++functions on \deflinkx{asynchronous providers}{asynchronous provider}{futures.state} ++or by the move constructor and shares its shared state with + the original asynchronous provider. The result (value or exception) of + a \tcode{future} object + can be +@@ -12055,7 +12054,7 @@ object has no shared state. A \tcode{shared_future} object with + shared state can + be created + by conversion from a \tcode{future} object and shares its shared state with the +-original asynchronous provider\iref{futures.state} of the shared state. ++original \deflink{asynchronous provider}{futures.state} of the shared state. + The result (value or exception) of a \tcode{shared_future} object + can be set by + calling a respective function on an +@@ -12504,7 +12503,7 @@ block until the associated thread has completed, as if joined, or else time + out\iref{thread.thread.member}; + \item + the associated thread completion +-synchronizes with\iref{intro.multithread} ++\deflinkx{synchronizes with}{synchronize with}{intro.multithread} + the return from + the first function + that successfully detects the ready status of the shared state or +diff --git a/source/time.tex b/source/time.tex +index dcbcd385..0d1ce7bf 100644 +--- a/source/time.tex ++++ b/source/time.tex +@@ -1216,7 +1216,7 @@ unless it meets all of the following conditions: + are valid and each denotes a type\iref{temp.deduct}, + \item the expression + \tcode{T::is_steady} +-is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand}, ++is well-formed when treated as an \deflink{unevaluated operand}{expr.context}, + \item the expression + \tcode{T::now()} + is well-formed when treated as an unevaluated operand. +@@ -11098,7 +11098,7 @@ The expression + \begin{codeblock} + from_stream(declval&>(), @$F$@, tp) + \end{codeblock} +-is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand}. ++is well-formed when treated as an \deflink{unevaluated operand}{expr.context}. + + \pnum + \returns +@@ -11131,7 +11131,7 @@ The expression + \begin{codeblock} + from_stream(declval&>(), @$F$@, tp, addressof(abbrev)) + \end{codeblock} +-is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand}. ++is well-formed when treated as an \deflink{unevaluated operand}{expr.context}. + + \pnum + \returns +@@ -11168,7 +11168,7 @@ from_stream(declval&>(), + declval*>(), + &offset) + \end{codeblock} +-is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand}. ++is well-formed when treated as an \deflink{unevaluated operand}{expr.context}. + + \pnum + \returns +@@ -11208,7 +11208,7 @@ The expression + from_stream(declval&>(), + @$F$@, tp, addressof(abbrev), &offset) + \end{codeblock} +-is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand}. ++is well-formed when treated as an \deflink{unevaluated operand}{expr.context}. + + \pnum + \returns +diff --git a/source/utilities.tex b/source/utilities.tex +index f3e66eb4..79866112 100644 +--- a/source/utilities.tex ++++ b/source/utilities.tex +@@ -120,15 +120,15 @@ namespace std { + template + struct integer_sequence; + template +- using index_sequence = integer_sequence; ++ using @\libglobal{index_sequence}@ = integer_sequence; + + template + using make_integer_sequence = integer_sequence; + template +- using make_index_sequence = make_integer_sequence; ++ using @\libglobal{make_index_sequence}@ = make_integer_sequence; + + template +- using index_sequence_for = make_index_sequence; ++ using @\libglobal{index_sequence_for}@ = make_index_sequence; + + // \ref{intseq.binding}, structured binding support + template struct tuple_size; +@@ -352,7 +352,7 @@ of forwarding functions. + \indextext{signal-safe!\idxcode{forward}}% + \indextext{signal-safe!\idxcode{move}}% + \indextext{signal-safe!\idxcode{move_if_noexcept}}% +-All functions specified in this subclause are signal-safe\iref{support.signal}. ++All functions specified in this subclause are \deflinkx{signal-safe}{evaluation!signal-safe}{support.signal}. + + \indexlibraryglobal{forward}% + \indextext{\idxcode{forward}}% +@@ -527,7 +527,7 @@ template constexpr add_const_t& as_const(T& t) noexcept; + + \pnum + The library provides the function template \tcode{declval} to simplify the definition of +-expressions which occur as unevaluated operands\iref{term.unevaluated.operand}. ++expressions which occur as \deflinkx{unevaluated operands}{unevaluated operand}{expr.context}. + + \indexlibraryglobal{declval}% + \begin{itemdecl} +@@ -1814,7 +1814,7 @@ inline constexpr piecewise_construct_t piecewise_construct{}; + The \keyword{struct} \tcode{piecewise_construct_t} is an empty class type + used as a unique type to disambiguate constructor and function overloading. Specifically, + \tcode{pair} has a constructor with \tcode{piecewise_construct_t} as the +-first argument, immediately followed by two \tcode{tuple}\iref{tuple} arguments used ++first argument, immediately followed by two \link{\tcode{tuple}}{tuple} arguments used + for piecewise construction of the elements of the \tcode{pair} object. + + \rSec1[tuple]{Tuples} +@@ -2464,7 +2464,7 @@ the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. + \pnum + \effects + Equivalent to the preceding constructors except that each element is constructed with +-uses-allocator construction\iref{allocator.uses.construction}. ++\deflink{uses-allocator construction}{allocator.uses.construction}. + \end{itemdescr} + + \rSec3[tuple.assign]{Assignment} +@@ -3122,7 +3122,7 @@ template struct tuple_size; + \pnum + Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. + If the expression \tcode{TS::value} is well-formed +-when treated as an unevaluated operand\iref{term.unevaluated.operand}, then ++when treated as an \deflink{unevaluated operand}{expr.context}, then + each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts} + with a base characteristic of + \begin{codeblock} +@@ -7355,6 +7355,7 @@ Equivalent to: \tcode{return std::visit(std::forward(vis), (V)self); + \rSec2[variant.monostate]{Class \tcode{monostate}}% + \indexlibraryglobal{monostate}% + ++\indexlibrary{\idxcode{monostate}}% + \begin{itemdecl} + struct monostate{}; + \end{itemdecl} +@@ -7526,7 +7527,8 @@ namespace std { + \end{codeblock} + + \pnum +-Objects of type \tcode{bad_any_cast} are thrown by a failed \tcode{any_cast}\iref{any.nonmembers}. ++Objects of type \tcode{bad_any_cast} are thrown by a failed ++\libglobalref{any_cast}. + + \indexlibrarymember{what}{bad_any_cast}% + \begin{itemdecl} +-- +2.43.0 + + +From a75e57d8b57b8b1f726bedabbdea932b6cfc8eaa Mon Sep 17 00:00:00 2001 +From: Eelis van der Weegen +Date: Sun, 11 Nov 2018 02:48:33 +0100 +Subject: [PATCH 3/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and + literal fragments. + +--- + source/exceptions.tex | 4 +- + source/lex.tex | 180 +++++++-------- + source/time.tex | 520 +++++++++++++++++++++--------------------- + 3 files changed, 352 insertions(+), 352 deletions(-) + +diff --git a/source/exceptions.tex b/source/exceptions.tex +index abd4aef1..ea065465 100644 +--- a/source/exceptions.tex ++++ b/source/exceptions.tex +@@ -135,11 +135,11 @@ does not declare a variable. + Any exception thrown while destroying + \tcode{t2} + will result in executing +-\tcode{handler 2}; ++\noncxxtcode{handler 2}; + any exception thrown while destroying + \tcode{t1} + will result in executing +-\tcode{handler 1}. ++\noncxxtcode{handler 1}. + \end{example} + + \pnum +diff --git a/source/lex.tex b/source/lex.tex +index 5baaf9a1..2e1da4ca 100644 +--- a/source/lex.tex ++++ b/source/lex.tex +@@ -336,43 +336,43 @@ the numerical value has no other meaning in this context. + \ucode{000c} & \uname{form feed} & \\ + \ucode{0020} & \uname{space} & \\ + \ucode{000a} & \uname{line feed} & new-line \\ +-\ucode{0021} & \uname{exclamation mark} & \tcode{!} \\ +-\ucode{0022} & \uname{quotation mark} & \tcode{"} \\ +-\ucode{0023} & \uname{number sign} & \tcode{\#} \\ +-\ucode{0024} & \uname{dollar sign} & \tcode{\$} \\ +-\ucode{0025} & \uname{percent sign} & \tcode{\%} \\ +-\ucode{0026} & \uname{ampersand} & \tcode{\&} \\ +-\ucode{0027} & \uname{apostrophe} & \tcode{'} \\ +-\ucode{0028} & \uname{left parenthesis} & \tcode{(} \\ +-\ucode{0029} & \uname{right parenthesis} & \tcode{)} \\ +-\ucode{002a} & \uname{asterisk} & \tcode{*} \\ +-\ucode{002b} & \uname{plus sign} & \tcode{+} \\ +-\ucode{002c} & \uname{comma} & \tcode{,} \\ +-\ucode{002d} & \uname{hyphen-minus} & \tcode{-} \\ +-\ucode{002e} & \uname{full stop} & \tcode{.} \\ +-\ucode{002f} & \uname{solidus} & \tcode{/} \\ +-\ucode{0030} .. \ucode{0039} & \uname{digit zero .. nine} & \tcode{0 1 2 3 4 5 6 7 8 9} \\ +-\ucode{003a} & \uname{colon} & \tcode{:} \\ +-\ucode{003b} & \uname{semicolon} & \tcode{;} \\ +-\ucode{003c} & \uname{less-than sign} & \tcode{<} \\ +-\ucode{003d} & \uname{equals sign} & \tcode{=} \\ +-\ucode{003e} & \uname{greater-than sign} & \tcode{>} \\ +-\ucode{003f} & \uname{question mark} & \tcode{?} \\ +-\ucode{0040} & \uname{commercial at} & \tcode{@} \\ +-\ucode{0041} .. \ucode{005a} & \uname{latin capital letter a .. z} & \tcode{A B C D E F G H I J K L M} \\ +- & & \tcode{N O P Q R S T U V W X Y Z} \\ +-\ucode{005b} & \uname{left square bracket} & \tcode{[} \\ +-\ucode{005c} & \uname{reverse solidus} & \tcode{\textbackslash} \\ +-\ucode{005d} & \uname{right square bracket} & \tcode{]} \\ +-\ucode{005e} & \uname{circumflex accent} & \tcode{\caret} \\ +-\ucode{005f} & \uname{low line} & \tcode{_} \\ +-\ucode{0060} & \uname{grave accent} & \tcode{\`} \\ +-\ucode{0061} .. \ucode{007a} & \uname{latin small letter a .. z} & \tcode{a b c d e f g h i j k l m} \\ +- & & \tcode{n o p q r s t u v w x y z} \\ +-\ucode{007b} & \uname{left curly bracket} & \tcode{\{} \\ +-\ucode{007c} & \uname{vertical line} & \tcode{|} \\ +-\ucode{007d} & \uname{right curly bracket} & \tcode{\}} \\ +-\ucode{007e} & \uname{tilde} & \tcode{\textasciitilde} \\ ++\ucode{0021} & \uname{exclamation mark} & \noncxxtcode{!} \\ ++\ucode{0022} & \uname{quotation mark} & \noncxxtcode{"} \\ ++\ucode{0023} & \uname{number sign} & \noncxxtcode{\#} \\ ++\ucode{0024} & \uname{dollar sign} & \noncxxtcode{\$} \\ ++\ucode{0025} & \uname{percent sign} & \noncxxtcode{\%} \\ ++\ucode{0026} & \uname{ampersand} & \noncxxtcode{\&} \\ ++\ucode{0027} & \uname{apostrophe} & \noncxxtcode{'} \\ ++\ucode{0028} & \uname{left parenthesis} & \noncxxtcode{(} \\ ++\ucode{0029} & \uname{right parenthesis} & \noncxxtcode{)} \\ ++\ucode{002a} & \uname{asterisk} & \noncxxtcode{*} \\ ++\ucode{002b} & \uname{plus sign} & \noncxxtcode{+} \\ ++\ucode{002c} & \uname{comma} & \noncxxtcode{,} \\ ++\ucode{002d} & \uname{hyphen-minus} & \noncxxtcode{-} \\ ++\ucode{002e} & \uname{full stop} & \noncxxtcode{.} \\ ++\ucode{002f} & \uname{solidus} & \noncxxtcode{/} \\ ++\ucode{0030} .. \ucode{0039} & \uname{digit zero .. nine} & \noncxxtcode{0 1 2 3 4 5 6 7 8 9} \\ ++\ucode{003a} & \uname{colon} & \noncxxtcode{:} \\ ++\ucode{003b} & \uname{semicolon} & \noncxxtcode{;} \\ ++\ucode{003c} & \uname{less-than sign} & \noncxxtcode{<} \\ ++\ucode{003d} & \uname{equals sign} & \noncxxtcode{=} \\ ++\ucode{003e} & \uname{greater-than sign} & \noncxxtcode{>} \\ ++\ucode{003f} & \uname{question mark} & \noncxxtcode{?} \\ ++\ucode{0040} & \uname{commercial at} & \noncxxtcode{@} \\ ++\ucode{0041} .. \ucode{005a} & \uname{latin capital letter a .. z} & \noncxxtcode{A B C D E F G H I J K L M} \\ ++ & & \noncxxtcode{N O P Q R S T U V W X Y Z} \\ ++\ucode{005b} & \uname{left square bracket} & \noncxxtcode{[} \\ ++\ucode{005c} & \uname{reverse solidus} & \noncxxtcode{\textbackslash} \\ ++\ucode{005d} & \uname{right square bracket} & \noncxxtcode{]} \\ ++\ucode{005e} & \uname{circumflex accent} & \noncxxtcode{\caret} \\ ++\ucode{005f} & \uname{low line} & \noncxxtcode{_} \\ ++\ucode{0060} & \uname{grave accent} & \noncxxtcode{\`} \\ ++\ucode{0061} .. \ucode{007a} & \uname{latin small letter a .. z} & \noncxxtcode{a b c d e f g h i j k l m} \\ ++ & & \noncxxtcode{n o p q r s t u v w x y z} \\ ++\ucode{007b} & \uname{left curly bracket} & \noncxxtcode{\{} \\ ++\ucode{007c} & \uname{vertical line} & \noncxxtcode{|} \\ ++\ucode{007d} & \uname{right curly bracket} & \noncxxtcode{\}} \\ ++\ucode{007e} & \uname{tilde} & \noncxxtcode{\textasciitilde} \\ + \end{floattable} + + \pnum +@@ -612,7 +612,7 @@ given character: + \item + \indextext{literal!string!raw}% + If the next character begins a sequence of characters that could be the prefix +-and initial double quote of a raw string literal, such as \tcode{R"}, the next preprocessing ++and initial double quote of a raw string literal, such as \literaltcode{R"}, the next preprocessing + token shall be a raw string literal. Between the initial and final + double quote characters of the raw string, any transformations performed in phase + 2 (line splicing) are reverted; this reversion +@@ -620,7 +620,7 @@ is applied before any \grammarterm{d-char}, \grammarterm{r-char}, or delimiting + parenthesis is identified. The raw string literal is defined as the shortest sequence + of characters that matches the raw-string pattern + \begin{ncbnf} +-\opt{encoding-prefix} \terminal{R} raw-string ++\opt{encoding-prefix} \literalterminal{R} raw-string + \end{ncbnf} + + \item Otherwise, if the next three characters are \tcode{<::} and the subsequent character +@@ -755,15 +755,15 @@ depending on the implementation. + \begin{bnf} + \nontermdef{pp-number}\br + digit\br +- \terminal{.} digit\br ++ \literalterminal{.} digit\br + pp-number identifier-continue\br +- pp-number \terminal{'} digit\br +- pp-number \terminal{'} nondigit\br +- pp-number \terminal{e} sign\br +- pp-number \terminal{E} sign\br +- pp-number \terminal{p} sign\br +- pp-number \terminal{P} sign\br +- pp-number \terminal{.} ++ pp-number \literalterminal{'} digit\br ++ pp-number \literalterminal{'} nondigit\br ++ pp-number \literalterminal{e} sign\br ++ pp-number \literalterminal{E} sign\br ++ pp-number \literalterminal{p} sign\br ++ pp-number \literalterminal{P} sign\br ++ pp-number \literalterminal{.} + \end{bnf} + + \pnum +@@ -1189,19 +1189,19 @@ a literal has a type and a value category\iref{expr.prim.literal}. + \nontermdef{binary-literal}\br + \terminal{0b} binary-digit\br + \terminal{0B} binary-digit\br +- binary-literal \opt{\terminal{'}} binary-digit ++ binary-literal \opt{\literalterminal{'}} binary-digit + \end{bnf} + + \begin{bnf} + \nontermdef{octal-literal}\br + \terminal{0}\br +- octal-literal \opt{\terminal{'}} octal-digit ++ octal-literal \opt{\literalterminal{'}} octal-digit + \end{bnf} + + \begin{bnf} + \nontermdef{decimal-literal}\br + nonzero-digit\br +- decimal-literal \opt{\terminal{'}} digit ++ decimal-literal \opt{\literalterminal{'}} digit + \end{bnf} + + \begin{bnf} +@@ -1232,14 +1232,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. + \begin{bnf} + \nontermdef{hexadecimal-digit-sequence}\br + hexadecimal-digit\br +- hexadecimal-digit-sequence \opt{\terminal{'}} hexadecimal-digit ++ hexadecimal-digit-sequence \opt{\literalterminal{'}} hexadecimal-digit + \end{bnf} + + \begin{bnf} + \nontermdef{hexadecimal-digit} \textnormal{one of}\br +- \terminal{0 1 2 3 4 5 6 7 8 9}\br +- \terminal{a b c d e f}\br +- \terminal{A B C D E F} ++ \literalterminal{0 1 2 3 4 5 6 7 8 9}\br ++ \literalterminal{a b c d e f}\br ++ \literalterminal{A B C D E F} + \end{bnf} + + \begin{bnf} +@@ -1254,17 +1254,17 @@ a literal has a type and a value category\iref{expr.prim.literal}. + + \begin{bnf} + \nontermdef{unsigned-suffix} \textnormal{one of}\br +- \terminal{u U} ++ \literalterminal{u U} + \end{bnf} + + \begin{bnf} + \nontermdef{long-suffix} \textnormal{one of}\br +- \terminal{l L} ++ \literalterminal{l L} + \end{bnf} + + \begin{bnf} + \nontermdef{long-long-suffix} \textnormal{one of}\br +- \terminal{ll LL} ++ \literalterminal{ll LL} + \end{bnf} + + \begin{bnf} +@@ -1303,7 +1303,7 @@ when determining the value. + + \pnum + The \grammarterm{hexadecimal-digit}s +-\tcode{a} through \tcode{f} and \tcode{A} through \tcode{F} ++\literaltcode{a} through \literaltcode{f} and \literaltcode{A} through \literaltcode{F} + have decimal values ten through fifteen. + \begin{example} + The number twelve can be written \tcode{12}, \tcode{014}, +@@ -1347,7 +1347,7 @@ none & + & + & + \tcode{unsigned long long int}\\\hline +-\tcode{u} or \tcode{U} & ++\literaltcode{u} or \literaltcode{U} & + \tcode{unsigned int} & + \tcode{unsigned int}\\ + & +@@ -1356,7 +1356,7 @@ none & + & + \tcode{unsigned long long int} & + \tcode{unsigned long long int}\\\hline +-\tcode{l} or \tcode{L} & ++\literaltcode{l} or \literaltcode{L} & + \tcode{long int} & + \tcode{long int}\\ + & +@@ -1368,22 +1368,22 @@ none & + & + & + \tcode{unsigned long long int}\\\hline +-Both \tcode{u} or \tcode{U} & ++Both \literaltcode{u} or \literaltcode{U} & + \tcode{unsigned long int} & + \tcode{unsigned long int}\\ +-and \tcode{l} or \tcode{L} & ++and \literaltcode{l} or \literaltcode{L} & + \tcode{unsigned long long int} & + \tcode{unsigned long long int}\\\hline +-\tcode{ll} or \tcode{LL} & ++\literaltcode{ll} or \literaltcode{LL} & + \tcode{long long int} & + \tcode{long long int}\\ + & + & + \tcode{unsigned long long int}\\\hline +-Both \tcode{u} or \tcode{U} & ++Both \literaltcode{u} or \literaltcode{U} & + \tcode{unsigned long long int} & + \tcode{unsigned long long int}\\ +-and \tcode{ll} or \tcode{LL} & ++and \literaltcode{ll} or \literaltcode{LL} & + & + \\\hline + \tcode{z} or \tcode{Z} & +@@ -1431,12 +1431,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. + \indextext{literal!character}% + \begin{bnf} + \nontermdef{character-literal}\br +- \opt{encoding-prefix} \terminal{'} c-char-sequence \terminal{'} ++ \opt{encoding-prefix} \literalterminal{'} c-char-sequence \literalterminal{'} + \end{bnf} + + \begin{bnf} + \nontermdef{encoding-prefix} \textnormal{one of}\br +- \terminal{u8}\quad\terminal{u}\quad\terminal{U}\quad\terminal{L} ++ \literalterminal{u8}\quad\literalterminal{u}\quad\literalterminal{U}\quad\literalterminal{L} + \end{bnf} + + \begin{bnf} +@@ -1466,12 +1466,12 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. + + \begin{bnf} + \nontermdef{simple-escape-sequence}\br +- \terminal{\textbackslash} simple-escape-sequence-char ++ \literalterminal{\textbackslash} simple-escape-sequence-char + \end{bnf} + + \begin{bnf} + \nontermdef{simple-escape-sequence-char} \textnormal{one of}\br +- \terminal{' " ? \textbackslash{} a b f n r t v} ++ \literalterminal{' " ? \textbackslash{} a b f n r t v} + \end{bnf} + + \begin{bnf} +@@ -1487,21 +1487,21 @@ is ill-formed if it cannot be represented by \tcode{std::size_t}. + + \begin{bnf} + \nontermdef{octal-escape-sequence}\br +- \terminal{\textbackslash} octal-digit\br +- \terminal{\textbackslash} octal-digit octal-digit\br +- \terminal{\textbackslash} octal-digit octal-digit octal-digit\br +- \terminal{\textbackslash o\{} simple-octal-digit-sequence \terminal{\}} ++ \literalterminal{\textbackslash} octal-digit\br ++ \literalterminal{\textbackslash} octal-digit octal-digit\br ++ \literalterminal{\textbackslash} octal-digit octal-digit octal-digit\br ++ \literalterminal{\textbackslash o\{} simple-octal-digit-sequence \literalterminal{\}} + \end{bnf} + + \begin{bnf} + \nontermdef{hexadecimal-escape-sequence}\br +- \terminal{\textbackslash x} simple-hexadecimal-digit-sequence\br +- \terminal{\textbackslash x\{} simple-hexadecimal-digit-sequence \terminal{\}} ++ \literalterminal{\textbackslash x} simple-hexadecimal-digit-sequence\br ++ \literalterminal{\textbackslash x\{} simple-hexadecimal-digit-sequence \literalterminal{\}} + \end{bnf} + + \begin{bnf} + \nontermdef{conditional-escape-sequence}\br +- \terminal{\textbackslash} conditional-escape-sequence-char ++ \literalterminal{\textbackslash} conditional-escape-sequence-char + \end{bnf} + + \begin{bnf} +@@ -1684,42 +1684,42 @@ is supported for compatibility with \CppXIV{} and C. + + \begin{bnf} + \nontermdef{fractional-constant}\br +- \opt{digit-sequence} \terminal{.} digit-sequence\br +- digit-sequence \terminal{.} ++ \opt{digit-sequence} \literalterminal{.} digit-sequence\br ++ digit-sequence \literalterminal{.} + \end{bnf} + + \begin{bnf} + \nontermdef{hexadecimal-fractional-constant}\br +- \opt{hexadecimal-digit-sequence} \terminal{.} hexadecimal-digit-sequence\br +- hexadecimal-digit-sequence \terminal{.} ++ \opt{hexadecimal-digit-sequence} \literalterminal{.} hexadecimal-digit-sequence\br ++ hexadecimal-digit-sequence \literalterminal{.} + \end{bnf} + + \begin{bnf} + \nontermdef{exponent-part}\br +- \terminal{e} \opt{sign} digit-sequence\br +- \terminal{E} \opt{sign} digit-sequence ++ \literalterminal{e} \opt{sign} digit-sequence\br ++ \literalterminal{E} \opt{sign} digit-sequence + \end{bnf} + + \begin{bnf} + \nontermdef{binary-exponent-part}\br +- \terminal{p} \opt{sign} digit-sequence\br +- \terminal{P} \opt{sign} digit-sequence ++ \literalterminal{p} \opt{sign} digit-sequence\br ++ \literalterminal{P} \opt{sign} digit-sequence + \end{bnf} + + \begin{bnf} + \nontermdef{sign} \textnormal{one of}\br +- \terminal{+ -} ++ \literalterminal{+ -} + \end{bnf} + + \begin{bnf} + \nontermdef{digit-sequence}\br + digit\br +- digit-sequence \opt{\terminal{'}} digit ++ digit-sequence \opt{\literalterminal{'}} digit + \end{bnf} + + \begin{bnf} + \nontermdef{floating-point-suffix} \textnormal{one of}\br +- \terminal{f l f16 f32 f64 f128 bf16 F L F16 F32 F64 F128 BF16} ++ \literalterminal{f l f16 f32 f64 f128 bf16 F L F16 F32 F64 F128 BF16} + \end{bnf} + + \pnum +@@ -1814,7 +1814,7 @@ std::float32_t z = 1e1000000000f32; // either greatest finite value or positive + \begin{bnf} + \nontermdef{string-literal}\br + \opt{encoding-prefix} plain-string-literal\br +- \opt{encoding-prefix} \terminal{R} raw-string ++ \opt{encoding-prefix} \literalterminal{R} raw-string + \end{bnf} + + \begin{bnf} +@@ -1842,7 +1842,7 @@ std::float32_t z = 1e1000000000f32; // either greatest finite value or positive + + \begin{bnf} + \nontermdef{raw-string}\br +- \terminal{"} \opt{d-char-sequence} \terminal{(} \opt{r-char-sequence} \terminal{)} \opt{d-char-sequence} \terminal{"} ++ \literalterminal{"} \opt{d-char-sequence} \literalterminal{(} \opt{r-char-sequence} \literalterminal{)} \opt{d-char-sequence} \literalterminal{"} + \end{bnf} + + \begin{bnf} +@@ -1928,7 +1928,7 @@ UTF-32 & + + \pnum + \indextext{literal!string!raw}% +-A \grammarterm{string-literal} that has an \tcode{R} ++A \grammarterm{string-literal} that has an \literaltcode{R} + \indextext{prefix!\idxcode{R}}% + in the prefix is a \defn{raw string literal}. The + \grammarterm{d-char-sequence} serves as a delimiter. The terminating +diff --git a/source/time.tex b/source/time.tex +index 0d1ce7bf..fd66d63d 100644 +--- a/source/time.tex ++++ b/source/time.tex +@@ -1,4 +1,4 @@ +-%!TEX root = std.tex ++%`!TEX root = std.tex + \rSec0[time]{Time library} + + \rSec1[time.general]{General} +@@ -2201,7 +2201,7 @@ If the parse fails to decode a valid duration, + \tcode{is.setstate(ios_base::failbit)} is called and \tcode{d} is not modified. + If \tcode{\%Z} is used and successfully parsed, + that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. +-If \tcode{\%z} (or a modified variant) is used and successfully parsed, ++If \noncxxtcode{\%z} (or a modified variant) is used and successfully parsed, + that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. + + \pnum +@@ -2793,9 +2793,9 @@ as specified in \ref{time.parse}. + If the parse fails to decode a valid date, + \tcode{is.setstate(ios_base::failbit)} is called and + \tcode{tp} is not modified. +-If \tcode{\%Z} is used and successfully parsed, ++If \noncxxtcode{\%Z} is used and successfully parsed, + that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. +-If \tcode{\%z} (or a modified variant) is used and successfully parsed, ++If \noncxxtcode{\%z} (or a modified variant) is used and successfully parsed, + that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. + Additionally, the parsed offset will be subtracted + from the successfully parsed timestamp +@@ -2986,9 +2986,9 @@ as specified in \ref{time.parse}. + If the parse fails to decode a valid date, + \tcode{is.setstate(ios_base::failbit)} is called and + \tcode{tp} is not modified. +-If \tcode{\%Z} is used and successfully parsed, ++If \noncxxtcode{\%Z} is used and successfully parsed, + that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. +-If \tcode{\%z} (or a modified variant) is used and successfully parsed, ++If \noncxxtcode{\%z} (or a modified variant) is used and successfully parsed, + that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. + Additionally, the parsed offset will be subtracted from + the successfully parsed timestamp +@@ -3185,9 +3185,9 @@ as specified in \ref{time.parse}. + If the parse fails to decode a valid date, + \tcode{is.setstate(ios_base::failbit)} is called and + \tcode{tp} is not modified. +-If \tcode{\%Z} is used and successfully parsed, ++If \noncxxtcode{\%Z} is used and successfully parsed, + that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. +-If \tcode{\%z} (or a modified variant) is used and successfully parsed, ++If \noncxxtcode{\%z} (or a modified variant) is used and successfully parsed, + that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. + Additionally, the parsed offset will be subtracted from + the successfully parsed timestamp prior to assigning that difference to \tcode{tp}. +@@ -3348,9 +3348,9 @@ as specified in \ref{time.parse}. + If the parse fails to decode a valid date, + \tcode{is.setstate(ios_base::failbit)} is called and + \tcode{tp} is not modified. +-If \tcode{\%Z} is used and successfully parsed, ++If \noncxxtcode{\%Z} is used and successfully parsed, + that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. +-If \tcode{\%z} (or a modified variant) is used and successfully parsed, ++If \noncxxtcode{\%z} (or a modified variant) is used and successfully parsed, + that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. + Additionally, the parsed offset will be subtracted from + the successfully parsed timestamp prior to assigning that difference to \tcode{tp}. +@@ -3455,9 +3455,9 @@ as specified in \ref{time.parse}. + If the parse fails to decode a valid date, + \tcode{is.setstate(ios_base::failbit)} is called and + \tcode{tp} is not modified. +-If \tcode{\%Z} is used and successfully parsed, ++If \noncxxtcode{\%Z} is used and successfully parsed, + that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. +-If \tcode{\%z} (or a modified variant) is used and successfully parsed, ++If \noncxxtcode{\%z} (or a modified variant) is used and successfully parsed, + that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. + Additionally, the parsed offset will be subtracted from + the successfully parsed timestamp prior to assigning that difference to \tcode{tp}. +@@ -3570,9 +3570,9 @@ as specified in \ref{time.parse}. + If the parse fails to decode a valid date, + \tcode{is.setstate(ios_base::failbit)} is called and + \tcode{tp} is not modified. +-If \tcode{\%Z} is used and successfully parsed, ++If \noncxxtcode{\%Z} is used and successfully parsed, + that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. +-If \tcode{\%z} (or a modified variant) is used and successfully parsed, ++If \noncxxtcode{\%z} (or a modified variant) is used and successfully parsed, + that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. + + \pnum +@@ -4223,9 +4223,9 @@ as specified in \ref{time.parse}. + If the parse fails to decode a valid day, + \tcode{is.setstate(ios_base::failbit)} is called and + \tcode{d} is not modified. +-If \tcode{\%Z} is used and successfully parsed, ++If \noncxxtcode{\%Z} is used and successfully parsed, + that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. +-If \tcode{\%z} (or a modified variant) is used and successfully parsed, ++If \noncxxtcode{\%z} (or a modified variant) is used and successfully parsed, + that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. + + \pnum +@@ -4537,9 +4537,9 @@ as specified in \ref{time.parse}. + If the parse fails to decode a valid month, + \tcode{is.setstate(ios_base::failbit)} is called and + \tcode{m} is not modified. +-If \tcode{\%Z} is used and successfully parsed, ++If \noncxxtcode{\%Z} is used and successfully parsed, + that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. +-If \tcode{\%z} (or a modified variant) is used and successfully parsed, ++If \noncxxtcode{\%z} (or a modified variant) is used and successfully parsed, + that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. + + \pnum +@@ -4881,9 +4881,9 @@ as specified in \ref{time.parse}. + If the parse fails to decode a valid year, + \tcode{is.setstate(ios_base::failbit)} is called and + \tcode{y} is not modified. +-If \tcode{\%Z} is used and successfully parsed, ++If \noncxxtcode{\%Z} is used and successfully parsed, + that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. +-If \tcode{\%z} (or a modified variant) is used and successfully parsed, ++If \noncxxtcode{\%z} (or a modified variant) is used and successfully parsed, + that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. + + \pnum +@@ -5264,9 +5264,9 @@ as specified in \ref{time.parse}. + If the parse fails to decode a valid weekday, + \tcode{is.setstate(ios_base::failbit)} is called and + \tcode{wd} is not modified. +-If \tcode{\%Z} is used and successfully parsed, ++If \noncxxtcode{\%Z} is used and successfully parsed, + that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. +-If \tcode{\%z} (or a modified variant) is used and successfully parsed, ++If \noncxxtcode{\%z} (or a modified variant) is used and successfully parsed, + that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. + + \pnum +@@ -5647,9 +5647,9 @@ as specified in \ref{time.parse}. + If the parse fails to decode a valid \tcode{month_day}, + \tcode{is.setstate(ios_base::failbit)} is called and + \tcode{md} is not modified. +-If \tcode{\%Z} is used and successfully parsed, ++If \noncxxtcode{\%Z} is used and successfully parsed, + that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. +-If \tcode{\%z} (or a modified variant) is used and successfully parsed, ++If \noncxxtcode{\%z} (or a modified variant) is used and successfully parsed, + that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. + + \pnum +@@ -6327,9 +6327,9 @@ as specified in \ref{time.parse}. + If the parse fails to decode a valid \tcode{year_month}, + \tcode{is.setstate(ios_base::failbit)} is called and + \tcode{ym} is not modified. +-If \tcode{\%Z} is used and successfully parsed, ++If \noncxxtcode{\%Z} is used and successfully parsed, + that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. +-If \tcode{\%z} (or a modified variant) is used and successfully parsed, ++If \noncxxtcode{\%z} (or a modified variant) is used and successfully parsed, + that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. + + \pnum +@@ -6791,9 +6791,9 @@ as specified in \ref{time.parse}. + If the parse fails to decode a valid \tcode{year_month_day}, + \tcode{is.setstate(ios_base::failbit)} is called and + \tcode{ymd} is not modified. +-If \tcode{\%Z} is used and successfully parsed, ++If \noncxxtcode{\%Z} is used and successfully parsed, + that value will be assigned to \tcode{*abbrev} if \tcode{abbrev} is non-null. +-If \tcode{\%z} (or a modified variant) is used and successfully parsed, ++If \noncxxtcode{\%z} (or a modified variant) is used and successfully parsed, + that value will be assigned to \tcode{*offset} if \tcode{offset} is non-null. + + \pnum +@@ -10486,23 +10486,23 @@ according to the following syntax: + + \begin{ncbnf} + \fmtnontermdef{literal-char}\br +- \textnormal{any character other than \tcode{\{}, \tcode{\}}, or \tcode{\%}} ++ \textnormal{any character other than \noncxxtcode{\{}, \noncxxtcode{\}}, or \noncxxtcode{\%}} + \end{ncbnf} + + \begin{ncbnf} + \fmtnontermdef{conversion-spec}\br +- \terminal{\%} \opt{modifier} type ++ \noncxxterminal{\%} \opt{modifier} type + \end{ncbnf} + + \begin{ncbnf} + \fmtnontermdef{modifier} \textnormal{one of}\br +- \terminal{E O} ++ \noncxxterminal{E O} + \end{ncbnf} + + \begin{ncbnf} + \fmtnontermdef{type} \textnormal{one of}\br +- \terminal{a A b B c C d D e F g G h H I j m M n}\br +- \terminal{p q Q r R S t T u U V w W x X y Y z Z \%} ++ \noncxxterminal{a A b B c C d D e F g G h H I j m M n}\br ++ \noncxxterminal{p q Q r R S t T u U V w W x X y Y z Z \%} + \end{ncbnf} + + The productions +@@ -10575,11 +10575,11 @@ the result of formatting a chrono type + does not contain time zone abbreviation + and time zone offset information. + If the information is available, +-the conversion specifiers \tcode{\%Z} and \tcode{\%z} ++the conversion specifiers \noncxxtcode{\%Z} and \noncxxtcode{\%z} + will format this information (respectively). + \begin{note} + If the information is not available and +-a \tcode{\%Z} or \tcode{\%z} ++a \noncxxtcode{\%Z} or \noncxxtcode{\%z} + conversion specifier appears in + the \fmtgrammarterm{chrono-format-spec}, + an exception of type \tcode{format_error} is thrown, +@@ -10595,7 +10595,7 @@ A \tcode{duration} does not contain enough information + to format as a \tcode{weekday}. + \end{example} + However, if a flag refers to a ``time of day'' +-(e.g., \tcode{\%H}, \tcode{\%I}, \tcode{\%p}, etc.), ++(e.g., \noncxxtcode{\%H}, \noncxxtcode{\%I}, \noncxxtcode{\%p}, etc.), + then a specialization of \tcode{duration} is interpreted as + the time of day elapsed since midnight. + +@@ -10607,57 +10607,57 @@ the time of day elapsed since midnight. + \hline + \lhdr{Specifier} & \rhdr{Replacement} \\ \capsep + \endhead +-\tcode{\%a} & ++\noncxxtcode{\%a} & + The locale's abbreviated weekday name. + If the value does not contain a valid weekday, + an exception of type \tcode{format_error} is thrown. + \\ \rowsep +-\tcode{\%A} & ++\noncxxtcode{\%A} & + The locale's full weekday name. + If the value does not contain a valid weekday, + an exception of type \tcode{format_error} is thrown. + \\ \rowsep +-\tcode{\%b} & ++\noncxxtcode{\%b} & + The locale's abbreviated month name. + If the value does not contain a valid month, + an exception of type \tcode{format_error} is thrown. + \\ \rowsep +-\tcode{\%B} & ++\noncxxtcode{\%B} & + The locale's full month name. + If the value does not contain a valid month, + an exception of type \tcode{format_error} is thrown. + \\ \rowsep +-\tcode{\%c} & ++\noncxxtcode{\%c} & + The locale's date and time representation. +-The modified command \tcode{\%Ec} produces ++The modified command \noncxxtcode{\%Ec} produces + the locale's alternate date and time representation. + \\ \rowsep +-\tcode{\%C} & ++\noncxxtcode{\%C} & + The year divided by 100 using floored division. + If the result is a single decimal digit, +-it is prefixed with \tcode{0}. +-The modified command \tcode{\%EC} produces ++it is prefixed with \noncxxtcode{0}. ++The modified command \noncxxtcode{\%EC} produces + the locale's alternative representation of the century. + \\ \rowsep +-\tcode{\%d} & ++\noncxxtcode{\%d} & + The day of month as a decimal number. + If the result is a single decimal digit, +-it is prefixed with \tcode{0}. +-The modified command \tcode{\%Od} produces ++it is prefixed with \noncxxtcode{0}. ++The modified command \noncxxtcode{\%Od} produces + the locale's alternative representation. + \\ \rowsep +-\tcode{\%D} & +-Equivalent to \tcode{\%m/\%d/\%y}. ++\noncxxtcode{\%D} & ++Equivalent to \noncxxtcode{\%m/\%d/\%y}. + \\ \rowsep +-\tcode{\%e} & ++\noncxxtcode{\%e} & + The day of month as a decimal number. + If the result is a single decimal digit, + it is prefixed with a space. +-The modified command \tcode{\%Oe} produces ++The modified command \noncxxtcode{\%Oe} produces + the locale's alternative representation. + \\ \rowsep +-\tcode{\%F} & +-Equivalent to \tcode{\%Y-\%m-\%d}. ++\noncxxtcode{\%F} & ++Equivalent to \noncxxtcode{\%Y-\%m-\%d}. + \\ \rowsep + \tcode{\%g} & + The last two decimal digits of the calendar year +@@ -10668,164 +10668,164 @@ If the result is a single digit it is prefixed by \tcode{0}. + The calendar year as a decimal number, + as specified in ISO 8601-1:2019 for the week calendar. + If the result is less than four digits +-it is left-padded with \tcode{0} to four digits. ++it is left-padded with \noncxxtcode{0} to four digits. + \\ \rowsep +-\tcode{\%h} & +-Equivalent to \tcode{\%b}. ++\noncxxtcode{\%h} & ++Equivalent to \noncxxtcode{\%b}. + \\ \rowsep +-\tcode{\%H} & ++\noncxxtcode{\%H} & + The hour (24-hour clock) as a decimal number. + If the result is a single digit, +-it is prefixed with \tcode{0}. +-The modified command \tcode{\%OH} produces ++it is prefixed with \noncxxtcode{0}. ++The modified command \noncxxtcode{\%OH} produces + the locale's alternative representation. + \\ \rowsep +-\tcode{\%I} & ++\noncxxtcode{\%I} & + The hour (12-hour clock) as a decimal number. + If the result is a single digit, +-it is prefixed with \tcode{0}. +-The modified command \tcode{\%OI} produces ++it is prefixed with \noncxxtcode{0}. ++The modified command \noncxxtcode{\%OI} produces + the locale's alternative representation. + \\ \rowsep +-\tcode{\%j} & ++\noncxxtcode{\%j} & + If the type being formatted is a specialization of \tcode{duration}, + the decimal number of \tcode{days} without padding. + Otherwise, + the day of the year as a decimal number. +-January 1 is \tcode{001}. ++January 1 is \noncxxtcode{001}. + If the result is less than three digits, +-it is left-padded with \tcode{0} to three digits. ++it is left-padded with \noncxxtcode{0} to three digits. + \\ \rowsep +-\tcode{\%m} & ++\noncxxtcode{\%m} & + The month as a decimal number. +-Jan is \tcode{01}. +-If the result is a single digit, it is prefixed with \tcode{0}. +-The modified command \tcode{\%Om} produces ++Jan is \noncxxtcode{01}. ++If the result is a single digit, it is prefixed with \noncxxtcode{0}. ++The modified command \noncxxtcode{\%Om} produces + the locale's alternative representation. + \\ \rowsep +-\tcode{\%M} & ++\noncxxtcode{\%M} & + The minute as a decimal number. +-If the result is a single digit, it is prefixed with \tcode{0}. +-The modified command \tcode{\%OM} produces ++If the result is a single digit, it is prefixed with \noncxxtcode{0}. ++The modified command \noncxxtcode{\%OM} produces + the locale's alternative representation. + \\ \rowsep +-\tcode{\%n} & ++\noncxxtcode{\%n} & + A new-line character. + \\ \rowsep +-\tcode{\%p} & ++\noncxxtcode{\%p} & + The locale's equivalent of the AM/PM designations associated with a 12-hour clock. + \\ \rowsep +-\tcode{\%q} & ++\noncxxtcode{\%q} & + The duration's unit suffix as specified in \ref{time.duration.io}. + \\ \rowsep +-\tcode{\%Q} & ++\noncxxtcode{\%Q} & + The duration's numeric value (as if extracted via \tcode{.count()}). + \\ \rowsep +-\tcode{\%r} & ++\noncxxtcode{\%r} & + The locale's 12-hour clock time. + \\ \rowsep +-\tcode{\%R} & +-Equivalent to \tcode{\%H:\%M}. ++\noncxxtcode{\%R} & ++Equivalent to \noncxxtcode{\%H:\%M}. + \\ \rowsep +-\tcode{\%S} & ++\noncxxtcode{\%S} & + Seconds as a decimal number. +-If the number of seconds is less than \tcode{10}, the result is prefixed with \tcode{0}. ++If the number of seconds is less than \noncxxtcode{10}, the result is prefixed with \noncxxtcode{0}. + If the precision of the input cannot be exactly represented with seconds, + then the format is a decimal floating-point number with a fixed format + and a precision matching that of the precision of the input + (or to a microseconds precision if the conversion to floating-point decimal seconds + cannot be made within 18 fractional digits). + The character for the decimal point is localized according to the locale. +-The modified command \tcode{\%OS} produces ++The modified command \noncxxtcode{\%OS} produces + the locale's alternative representation. + \\ \rowsep +-\tcode{\%t} & ++\noncxxtcode{\%t} & + A horizontal-tab character. + \\ \rowsep +-\tcode{\%T} & +-Equivalent to \tcode{\%H:\%M:\%S}. ++\noncxxtcode{\%T} & ++Equivalent to \noncxxtcode{\%H:\%M:\%S}. + \\ \rowsep +-\tcode{\%u} & +-The calendar day of week as a decimal number (\tcode{1}-\tcode{7}), ++\noncxxtcode{\%u} & ++The calendar day of week as a decimal number (\noncxxtcode{1}-\noncxxtcode{7}), + as specified in ISO 8601-1:2019, +-where Monday is \tcode{1}. +-The modified command \tcode{\%Ou} produces ++where Monday is \noncxxtcode{1}. ++The modified command \noncxxtcode{\%Ou} produces + the locale's alternative representation. + \\ \rowsep +-\tcode{\%U} & ++\noncxxtcode{\%U} & + The week number of the year as a decimal number. +-The first Sunday of the year is the first day of week \tcode{01}. +-Days of the same year prior to that are in week \tcode{00}. +-If the result is a single digit, it is prefixed with \tcode{0}. +-The modified command \tcode{\%OU} produces ++The first Sunday of the year is the first day of week \noncxxtcode{01}. ++Days of the same year prior to that are in week \noncxxtcode{00}. ++If the result is a single digit, it is prefixed with \noncxxtcode{0}. ++The modified command \noncxxtcode{\%OU} produces + the locale's alternative representation. + \\ \rowsep +-\tcode{\%V} & ++\noncxxtcode{\%V} & + The calendar week of year as a decimal number, + as specified in ISO 8601-1:2019 for the week calendar. +-If the result is a single digit, it is prefixed with \tcode{0}. +-The modified command \tcode{\%OV} produces ++If the result is a single digit, it is prefixed with \noncxxtcode{0}. ++The modified command \noncxxtcode{\%OV} produces + the locale's alternative representation. + \\ \rowsep +-\tcode{\%w} & +-The weekday as a decimal number (\tcode{0}-\tcode{6}), where Sunday is \tcode{0}. +-The modified command \tcode{\%Ow} produces ++\noncxxtcode{\%w} & ++The weekday as a decimal number (\noncxxtcode{0}-\noncxxtcode{6}), where Sunday is \noncxxtcode{0}. ++The modified command \noncxxtcode{\%Ow} produces + the locale's alternative representation. + \\ \rowsep +-\tcode{\%W} & ++\noncxxtcode{\%W} & + The week number of the year as a decimal number. +-The first Monday of the year is the first day of week \tcode{01}. +-Days of the same year prior to that are in week \tcode{00}. +-If the result is a single digit, it is prefixed with \tcode{0}. +-The modified command \tcode{\%OW} produces ++The first Monday of the year is the first day of week \noncxxtcode{01}. ++Days of the same year prior to that are in week \noncxxtcode{00}. ++If the result is a single digit, it is prefixed with \noncxxtcode{0}. ++The modified command \noncxxtcode{\%OW} produces + the locale's alternative representation. + \\ \rowsep +-\tcode{\%x} & ++\noncxxtcode{\%x} & + The locale's date representation. +-The modified command \tcode{\%Ex} produces ++The modified command \noncxxtcode{\%Ex} produces + the locale's alternate date representation. + \\ \rowsep +-\tcode{\%X} & ++\noncxxtcode{\%X} & + The locale's time representation. +-The modified command \tcode{\%EX} produces ++The modified command \noncxxtcode{\%EX} produces + the locale's alternate time representation. + \\ \rowsep +-\tcode{\%y} & ++\noncxxtcode{\%y} & + The last two decimal digits of the year, + regardless of the sign of the year. +-If the result is a single digit, it is prefixed by \tcode{0}. +-The modified command \tcode{\%Oy} produces the locale's alternative representation. +-The modified command \tcode{\%Ey} produces the locale's alternative representation +-of offset from \tcode{\%EC} (year only). ++If the result is a single digit, it is prefixed by \noncxxtcode{0}. ++The modified command \noncxxtcode{\%Oy} produces the locale's alternative representation. ++The modified command \noncxxtcode{\%Ey} produces the locale's alternative representation ++of offset from \noncxxtcode{\%EC} (year only). + \begin{tailexample} + \begin{codeblock} + cout << format("{:%C %y}", -1976y); // prints \tcode{-20 76} + \end{codeblock} + \end{tailexample} + \\ \rowsep +-\tcode{\%Y} & ++\noncxxtcode{\%Y} & + The year as a decimal number. + If the result is less than four digits, +-it is left-padded with \tcode{0} to four digits. +-The modified command \tcode{\%EY} produces ++it is left-padded with \noncxxtcode{0} to four digits. ++The modified command \noncxxtcode{\%EY} produces + the locale's alternative full year representation. + \\ \rowsep + \tcode{\%z} & + The offset from UTC as specified in ISO 8601-1:2019, 5.3.4.1. +-For example \tcode{-0430} refers to 4 hours 30 minutes behind UTC\@. +-If the offset is zero, \tcode{+0000} is used. +-The modified commands \tcode{\%Ez} and \tcode{\%Oz} +-insert a \tcode{:} between the hours and minutes: \tcode{-04:30}. ++For example \noncxxtcode{-0430} refers to 4 hours 30 minutes behind UTC\@. ++If the offset is zero, \noncxxtcode{+0000} is used. ++The modified commands \noncxxtcode{\%Ez} and \noncxxtcode{\%Oz} ++insert a \noncxxtcode{:} between the hours and minutes: \noncxxtcode{-04:30}. + If the offset information is not available, + an exception of type \tcode{format_error} is thrown. + \\ \rowsep +-\tcode{\%Z} & ++\noncxxtcode{\%Z} & + The time zone abbreviation. + If the time zone abbreviation is not available, + an exception of type \tcode{format_error} is thrown. + \\ \rowsep +-\tcode{\%\%} & +-A \tcode{\%} character. ++\noncxxtcode{\%\%} & ++A \noncxxtcode{\%} character. + \\ + \end{LongTable} + +@@ -10873,9 +10873,9 @@ template + \begin{itemdescr} + \pnum + \remarks +-If \tcode{\%Z} is used, ++If \noncxxtcode{\%Z} is used, + it is replaced with \tcode{\exposid{STATICALLY-WIDEN}("UTC")}. +-If \tcode{\%z} (or a modified variant of \tcode{\%z}) is used, ++If \noncxxtcode{\%z} (or a modified variant of \noncxxtcode{\%z}) is used, + an offset of \tcode{0min} is formatted. + \end{itemdescr} + +@@ -10888,9 +10888,9 @@ template + \begin{itemdescr} + \pnum + \remarks +-If \tcode{\%Z} is used, ++If \noncxxtcode{\%Z} is used, + it is replaced with \tcode{\exposid{STATICALLY-WIDEN}("UTC")}. +-If \tcode{\%z} (or a modified variant of \tcode{\%z}) is used, ++If \noncxxtcode{\%z} (or a modified variant of \noncxxtcode{\%z}) is used, + an offset of \tcode{0min} is formatted. + If the argument represents a time during a positive leap second insertion, + and if a seconds field is formatted, +@@ -10907,9 +10907,9 @@ template + \begin{itemdescr} + \pnum + \remarks +-If \tcode{\%Z} is used, ++If \noncxxtcode{\%Z} is used, + it is replaced with \tcode{\exposid{STATICALLY-WIDEN}("TAI")}. +-If \tcode{\%z} (or a modified variant of \tcode{\%z}) is used, ++If \noncxxtcode{\%z} (or a modified variant of \noncxxtcode{\%z}) is used, + an offset of \tcode{0min} is formatted. + The date and time formatted are equivalent to + those formatted by a \tcode{sys_time} initialized with +@@ -10928,9 +10928,9 @@ template + \begin{itemdescr} + \pnum + \remarks +-If \tcode{\%Z} is used, ++If \noncxxtcode{\%Z} is used, + it is replaced with \tcode{\exposid{STATICALLY-WIDEN}("GPS")}. +-If \tcode{\%z} (or a modified variant of \tcode{\%z}) is used, ++If \noncxxtcode{\%z} (or a modified variant of \noncxxtcode{\%z}) is used, + an offset of \tcode{0min} is formatted. + The date and time formatted are equivalent to + those formatted by a \tcode{sys_time} initialized with +@@ -10949,9 +10949,9 @@ template + \begin{itemdescr} + \pnum + \remarks +-If \tcode{\%Z} is used, ++If \noncxxtcode{\%Z} is used, + it is replaced with \tcode{\exposid{STATICALLY-WIDEN}("UTC")}. +-If \tcode{\%z} (or a modified variant of \tcode{\%z}) is used, ++If \noncxxtcode{\%z} (or a modified variant of \noncxxtcode{\%z}) is used, + an offset of \tcode{0min} is formatted. + The date and time formatted are equivalent to + those formatted +@@ -10969,7 +10969,7 @@ template + \begin{itemdescr} + \pnum + \remarks +-If \tcode{\%Z}, \tcode{\%z}, or a modified version of \tcode{\%z} is used, ++If \noncxxtcode{\%Z}, \noncxxtcode{\%z}, or a modified version of \noncxxtcode{\%z} is used, + an exception of type \tcode{format_error} is thrown. + \end{itemdescr} + +@@ -11010,18 +11010,18 @@ passed to \tcode{formatter::format}. + \pnum + \remarks + If the \fmtgrammarterm{chrono-specs} is omitted, +-the result is equivalent to using \tcode{\%F \%T \%Z} as ++the result is equivalent to using \noncxxtcode{\%F \%T \%Z} as + the \fmtgrammarterm{chrono-specs}. +-If \tcode{\%Z} is used, ++If \noncxxtcode{\%Z} is used, + it is replaced with \tcode{*f.\exposid{abbrev_}} + if \tcode{f.\exposid{abbrev_}} is not a null pointer value. +-If \tcode{\%Z} is used ++If \noncxxtcode{\%Z} is used + and \tcode{f.\exposid{abbrev_}} is a null pointer value, + an exception of type \tcode{format_error} is thrown. +-If \tcode{\%z} (or a modified variant of \tcode{\%z}) is used, ++If \noncxxtcode{\%z} (or a modified variant of \noncxxtcode{\%z}) is used, + it is formatted with the value of \tcode{*f.\exposid{offset-sec}} + if \tcode{f.\exposid{offset-sec}} is not a null pointer value. +-If \tcode{\%z} (or a modified variant of \tcode{\%z}) is used ++If \noncxxtcode{\%z} (or a modified variant of \noncxxtcode{\%z}) is used + and \tcode{f.\exposid{offset-sec}} is a null pointer value, + then an exception of type \tcode{format_error} is thrown. + \end{itemdescr} +@@ -11225,8 +11225,8 @@ except that they have an unspecified effect + on the value returned by subsequent calls to \tcode{basic_istream<>::gcount()}. + Each overload takes a format string containing ordinary characters + and flags which have special meaning. +-Each flag begins with a \tcode{\%}. +-Some flags can be modified by \tcode{E} or \tcode{O}. ++Each flag begins with a \noncxxtcode{\%}. ++Some flags can be modified by \noncxxtcode{E} or \noncxxtcode{O}. + During parsing each flag interprets characters as parts of date and time types + according to~\tref{time.parse.spec}. + Some flags can be modified by a width parameter +@@ -11244,7 +11244,7 @@ the information that the format flag refers to, + A \tcode{duration} cannot represent a \tcode{weekday}. + \end{example} + However, if a flag refers to a ``time of day'' +-(e.g., \tcode{\%H}, \tcode{\%I}, \tcode{\%p}, etc.), ++(e.g., \noncxxtcode{\%H}, \noncxxtcode{\%I}, \noncxxtcode{\%p}, etc.), + then a specialization of \tcode{duration} is parsed as + the time of day elapsed since midnight. + +@@ -11264,229 +11264,229 @@ is called on the \tcode{basic_istream}. + \hline + \lhdr{Flag} & \rhdr{Parsed value} \\ \capsep + \endhead +-\tcode{\%a} & ++\noncxxtcode{\%a} & + The locale's full or abbreviated case-insensitive weekday name. + \\ \rowsep +-\tcode{\%A} & +-Equivalent to \tcode{\%a}. ++\noncxxtcode{\%A} & ++Equivalent to \noncxxtcode{\%a}. + \\ \rowsep +-\tcode{\%b} & ++\noncxxtcode{\%b} & + The locale's full or abbreviated case-insensitive month name. + \\ \rowsep +-\tcode{\%B} & +-Equivalent to \tcode{\%b}. ++\noncxxtcode{\%B} & ++Equivalent to \noncxxtcode{\%b}. + \\ \rowsep +-\tcode{\%c} & ++\noncxxtcode{\%c} & + The locale's date and time representation. +-The modified command \tcode{\%Ec} interprets ++The modified command \noncxxtcode{\%Ec} interprets + the locale's alternate date and time representation. + \\ \rowsep +-\tcode{\%C} & ++\noncxxtcode{\%C} & + The century as a decimal number. +-The modified command \tcode{\%\placeholder{N}C} specifies ++The modified command \noncxxtcode{\%\placeholder{N}C} specifies + the maximum number of characters to read. +-If \tcode{\placeholder{N}} is not specified, the default is 2. ++If \noncxxtcode{\placeholder{N}} is not specified, the default is 2. + Leading zeroes are permitted but not required. +-The modified command \tcode{\%EC} interprets ++The modified command \noncxxtcode{\%EC} interprets + the locale's alternative representation of the century. + \\ \rowsep +-\tcode{\%d} & ++\noncxxtcode{\%d} & + The day of the month as a decimal number. +-The modified command \tcode{\%\placeholder{N}d} specifies ++The modified command \noncxxtcode{\%\placeholder{N}d} specifies + the maximum number of characters to read. +-If \tcode{\placeholder{N}} is not specified, the default is 2. ++If \noncxxtcode{\placeholder{N}} is not specified, the default is 2. + Leading zeroes are permitted but not required. +-The modified command \tcode{\%Od} interprets ++The modified command \noncxxtcode{\%Od} interprets + the locale's alternative representation of the day of the month. + \\ \rowsep +-\tcode{\%D} & +-Equivalent to \tcode{\%m/\%d/\%y}. ++\noncxxtcode{\%D} & ++Equivalent to \noncxxtcode{\%m/\%d/\%y}. + \\ \rowsep +-\tcode{\%e} & +-Equivalent to \tcode{\%d} and can be modified like \tcode{\%d}. ++\noncxxtcode{\%e} & ++Equivalent to \noncxxtcode{\%d} and can be modified like \noncxxtcode{\%d}. + \\ \rowsep +-\tcode{\%F} & +-Equivalent to \tcode{\%Y-\%m-\%d}. +-If modified with a width \tcode{\placeholder{N}}, +-the width is applied to only \tcode{\%Y}. ++\noncxxtcode{\%F} & ++Equivalent to \noncxxtcode{\%Y-\%m-\%d}. ++If modified with a width \noncxxtcode{\placeholder{N}}, ++the width is applied to only \noncxxtcode{\%Y}. + \\ \rowsep +-\tcode{\%g} & ++\noncxxtcode{\%g} & + The last two decimal digits of the calendar year, + as specified in ISO 8601-1:2019 for the week calendar. +-The modified command \tcode{\%\placeholder{N}g} specifies ++The modified command \noncxxtcode{\%\placeholder{N}g} specifies + the maximum number of characters to read. +-If \tcode{\placeholder{N}} is not specified, the default is 2. ++If \noncxxtcode{\placeholder{N}} is not specified, the default is 2. + Leading zeroes are permitted but not required. + \\ \rowsep +-\tcode{\%G} & ++\noncxxtcode{\%G} & + The calendar year as a decimal number, + as specified in ISO 8601-1:2019 for the week calendar. +-The modified command \tcode{\%\placeholder{N}G} specifies ++The modified command \noncxxtcode{\%\placeholder{N}G} specifies + the maximum number of characters to read. +-If \tcode{\placeholder{N}} is not specified, the default is 4. ++If \noncxxtcode{\placeholder{N}} is not specified, the default is 4. + Leading zeroes are permitted but not required. + \\ \rowsep +-\tcode{\%h} & +-Equivalent to \tcode{\%b}. ++\noncxxtcode{\%h} & ++Equivalent to \noncxxtcode{\%b}. + \\ \rowsep +-\tcode{\%H} & ++\noncxxtcode{\%H} & + The hour (24-hour clock) as a decimal number. +-The modified command \tcode{\%\placeholder{N}H} specifies ++The modified command \noncxxtcode{\%\placeholder{N}H} specifies + the maximum number of characters to read. +-If \tcode{\placeholder{N}} is not specified, the default is 2. ++If \noncxxtcode{\placeholder{N}} is not specified, the default is 2. + Leading zeroes are permitted but not required. +-The modified command \tcode{\%OH} interprets ++The modified command \noncxxtcode{\%OH} interprets + the locale's alternative representation. + \\ \rowsep +-\tcode{\%I} & ++\noncxxtcode{\%I} & + The hour (12-hour clock) as a decimal number. +-The modified command \tcode{\%\placeholder{N}I} specifies ++The modified command \noncxxtcode{\%\placeholder{N}I} specifies + the maximum number of characters to read. +-If \tcode{\placeholder{N}} is not specified, the default is 2. ++If \noncxxtcode{\placeholder{N}} is not specified, the default is 2. + Leading zeroes are permitted but not required. +-The modified command \tcode{\%OI} ++The modified command \noncxxtcode{\%OI} + interprets the locale's alternative representation. + \\ \rowsep +-\tcode{\%j} & ++\noncxxtcode{\%j} & + If the type being parsed is a specialization of \tcode{duration}, + a decimal number of \tcode{days}. + Otherwise, + the day of the year as a decimal number. +-January 1 is \tcode{1}. ++January 1 is \noncxxtcode{1}. + In either case, +-the modified command \tcode{\%\placeholder{N}j} specifies ++the modified command \noncxxtcode{\%\placeholder{N}j} specifies + the maximum number of characters to read. +-If \tcode{\placeholder{N}} is not specified, the default is 3. ++If \noncxxtcode{\placeholder{N}} is not specified, the default is 3. + Leading zeroes are permitted but not required. + \\ \rowsep +-\tcode{\%m} & ++\noncxxtcode{\%m} & + The month as a decimal number. +-January is \tcode{1}. +-The modified command \tcode{\%\placeholder{N}m} specifies ++January is \noncxxtcode{1}. ++The modified command \noncxxtcode{\%\placeholder{N}m} specifies + the maximum number of characters to read. +-If \tcode{\placeholder{N}} is not specified, the default is 2. ++If \noncxxtcode{\placeholder{N}} is not specified, the default is 2. + Leading zeroes are permitted but not required. +-The modified command \tcode{\%Om} interprets ++The modified command \noncxxtcode{\%Om} interprets + the locale's alternative representation. + \\ \rowsep +-\tcode{\%M} & ++\noncxxtcode{\%M} & + The minutes as a decimal number. +-The modified command \tcode{\%\placeholder{N}M} specifies ++The modified command \noncxxtcode{\%\placeholder{N}M} specifies + the maximum number of characters to read. +-If \tcode{\placeholder{N}} is not specified, the default is 2. ++If \noncxxtcode{\placeholder{N}} is not specified, the default is 2. + Leading zeroes are permitted but not required. +-The modified command \tcode{\%OM} interprets ++The modified command \noncxxtcode{\%OM} interprets + the locale's alternative representation. + \\ \rowsep +-\tcode{\%n} & ++\noncxxtcode{\%n} & + Matches one whitespace character. + \begin{tailnote} +-\tcode{\%n}, \tcode{\%t}, and a space ++\noncxxtcode{\%n}, \noncxxtcode{\%t}, and a space + can be combined to match a wide range of whitespace patterns. + For example, + \tcode{"\%n "} matches one or more whitespace characters, and + \tcode{"\%n\%t\%t"} matches one to three whitespace characters. + \end{tailnote} + \\ \rowsep +-\tcode{\%p} & ++\noncxxtcode{\%p} & + The locale's equivalent of the AM/PM designations associated with a 12-hour clock. + \\ \rowsep +-\tcode{\%r} & ++\noncxxtcode{\%r} & + The locale's 12-hour clock time. + \\ \rowsep +-\tcode{\%R} & +-Equivalent to \tcode{\%H:\%M}. ++\noncxxtcode{\%R} & ++Equivalent to \noncxxtcode{\%H:\%M}. + \\ \rowsep +-\tcode{\%S} & ++\noncxxtcode{\%S} & + The seconds as a decimal number. +-The modified command \tcode{\%\placeholder{N}S} specifies ++The modified command \noncxxtcode{\%\placeholder{N}S} specifies + the maximum number of characters to read. +-If \tcode{\placeholder{N}} is not specified, ++If \noncxxtcode{\placeholder{N}} is not specified, + the default is 2 if the input time has a precision convertible to seconds. + Otherwise the default width is determined by + the decimal precision of the input + and the field is interpreted as a \tcode{long double} in a fixed format. + If encountered, the locale determines the decimal point character. + Leading zeroes are permitted but not required. +-The modified command \tcode{\%OS} interprets ++The modified command \noncxxtcode{\%OS} interprets + the locale's alternative representation. + \\ \rowsep +-\tcode{\%t} & ++\noncxxtcode{\%t} & + Matches zero or one whitespace characters. + \\ \rowsep +-\tcode{\%T} & +-Equivalent to \tcode{\%H:\%M:\%S}. ++\noncxxtcode{\%T} & ++Equivalent to \noncxxtcode{\%H:\%M:\%S}. + \\ \rowsep +-\tcode{\%u} & +-The calendar day of week as a decimal number (\tcode{1}-\tcode{7}), ++\noncxxtcode{\%u} & ++The calendar day of week as a decimal number (\noncxxtcode{1}-\noncxxtcode{7}), + as specified in ISO 8601-1:2019, +-where Monday is \tcode{1}. +-The modified command \tcode{\%\placeholder{N}u} specifies ++where Monday is \noncxxtcode{1}. ++The modified command \noncxxtcode{\%\placeholder{N}u} specifies + the maximum number of characters to read. +-If \tcode{\placeholder{N}} is not specified, the default is \tcode{1}. ++If \noncxxtcode{\placeholder{N}} is not specified, the default is \noncxxtcode{1}. + Leading zeroes are permitted but not required. + \\ \rowsep +-\tcode{\%U} & ++\noncxxtcode{\%U} & + The week number of the year as a decimal number. +-The first Sunday of the year is the first day of week \tcode{01}. +-Days of the same year prior to that are in week \tcode{00}. +-The modified command \tcode{\%\placeholder{N}U} specifies ++The first Sunday of the year is the first day of week \noncxxtcode{01}. ++Days of the same year prior to that are in week \noncxxtcode{00}. ++The modified command \noncxxtcode{\%\placeholder{N}U} specifies + the maximum number of characters to read. +-If \tcode{\placeholder{N}} is not specified, the default is 2. ++If \noncxxtcode{\placeholder{N}} is not specified, the default is 2. + Leading zeroes are permitted but not required. +-The modified command \tcode{\%OU} interprets ++The modified command \noncxxtcode{\%OU} interprets + the locale's alternative representation. + \\ \rowsep +-\tcode{\%V} & ++\noncxxtcode{\%V} & + The calendar week of year as a decimal number, + as specified in ISO 8601-1:2019 for the week calendar. +-The modified command \tcode{\%\placeholder{N}V} specifies ++The modified command \noncxxtcode{\%\placeholder{N}V} specifies + the maximum number of characters to read. +-If \tcode{\placeholder{N}} is not specified, the default is 2. ++If \noncxxtcode{\placeholder{N}} is not specified, the default is 2. + Leading zeroes are permitted but not required. + \\ \rowsep +-\tcode{\%w} & +-The weekday as a decimal number (\tcode{0}-\tcode{6}), where Sunday is \tcode{0}. +-The modified command \tcode{\%\placeholder{N}w} specifies ++\noncxxtcode{\%w} & ++The weekday as a decimal number (\noncxxtcode{0}-\noncxxtcode{6}), where Sunday is \noncxxtcode{0}. ++The modified command \noncxxtcode{\%\placeholder{N}w} specifies + the maximum number of characters to read. +-If \tcode{\placeholder{N}} is not specified, the default is \tcode{1}. ++If \noncxxtcode{\placeholder{N}} is not specified, the default is \noncxxtcode{1}. + Leading zeroes are permitted but not required. +-The modified command \tcode{\%Ow} interprets ++The modified command \noncxxtcode{\%Ow} interprets + the locale's alternative representation. + \\ \rowsep +-\tcode{\%W} & ++\noncxxtcode{\%W} & + The week number of the year as a decimal number. +-The first Monday of the year is the first day of week \tcode{01}. +-Days of the same year prior to that are in week \tcode{00}. +-The modified command \tcode{\%\placeholder{N}W} specifies ++The first Monday of the year is the first day of week \noncxxtcode{01}. ++Days of the same year prior to that are in week \noncxxtcode{00}. ++The modified command \noncxxtcode{\%\placeholder{N}W} specifies + the maximum number of characters to read. +-If \tcode{\placeholder{N}} is not specified, the default is 2. ++If \noncxxtcode{\placeholder{N}} is not specified, the default is 2. + Leading zeroes are permitted but not required. +-The modified command \tcode{\%OW} interprets ++The modified command \noncxxtcode{\%OW} interprets + the locale's alternative representation. + \\ \rowsep +-\tcode{\%x} & ++\noncxxtcode{\%x} & + The locale's date representation. +-The modified command \tcode{\%Ex} interprets the locale's alternate date representation. ++The modified command \noncxxtcode{\%Ex} interprets the locale's alternate date representation. + \\ \rowsep +-\tcode{\%X} & ++\noncxxtcode{\%X} & + The locale's time representation. +-The modified command \tcode{\%EX} interprets the locale's alternate time representation. ++The modified command \noncxxtcode{\%EX} interprets the locale's alternate time representation. + \\ \rowsep +-\tcode{\%y} & ++\noncxxtcode{\%y} & + The last two decimal digits of the year, + regardless of the sign of the year. + If the century is not otherwise specified +-(e.g., with \tcode{\%C}), ++(e.g., with \noncxxtcode{\%C}), + values in the range \crange{69}{99} + are presumed to refer to the years 1969 to 1999, + and values in the range \crange{00}{68} + are presumed to refer to the years 2000 to 2068. +-The modified command \tcode{\%\placeholder{N}y} specifies ++The modified command \noncxxtcode{\%\placeholder{N}y} specifies + the maximum number of characters to read. +-If \tcode{\placeholder{N}} is not specified, the default is 2. ++If \noncxxtcode{\placeholder{N}} is not specified, the default is 2. + Leading zeroes are permitted but not required. +-The modified commands \tcode{\%Ey} and \tcode{\%Oy} interpret ++The modified commands \noncxxtcode{\%Ey} and \noncxxtcode{\%Oy} interpret + the locale's alternative representation. + \begin{tailexample} + \begin{codeblock} +@@ -11495,27 +11495,27 @@ istringstream{"-20 76"} >> parse("%3C %y", y); // \tcode{y == -1976y} is \tcode + \end{codeblock} + \end{tailexample} + \\ \rowsep +-\tcode{\%Y} & ++\noncxxtcode{\%Y} & + The year as a decimal number. +-The modified command \tcode{\%\placeholder{N}Y} specifies ++The modified command \noncxxtcode{\%\placeholder{N}Y} specifies + the maximum number of characters to read. +-If \tcode{\placeholder{N}} is not specified, the default is 4. ++If \noncxxtcode{\placeholder{N}} is not specified, the default is 4. + Leading zeroes are permitted but not required. +-The modified command \tcode{\%EY} interprets ++The modified command \noncxxtcode{\%EY} interprets + the locale's alternative representation. + \\ \rowsep +-\tcode{\%z} & +-The offset from UTC in the format \tcode{[+|-]hh[mm]}. +-For example \tcode{-0430} refers to 4 hours 30 minutes behind UTC, +-and \tcode{04} refers to 4 hours ahead of UTC\@. +-The modified commands \tcode{\%Ez} and \tcode{\%Oz} +-parse a \tcode{:} between the hours and minutes ++\noncxxtcode{\%z} & ++The offset from UTC in the format \noncxxtcode{[+|-]hh[mm]}. ++For example \noncxxtcode{-0430} refers to 4 hours 30 minutes behind UTC, ++and \noncxxtcode{04} refers to 4 hours ahead of UTC\@. ++The modified commands \noncxxtcode{\%Ez} and \noncxxtcode{\%Oz} ++parse a \noncxxtcode{:} between the hours and minutes + and render leading zeroes on the hour field optional: +-\tcode{[+|-]h[h][:mm]}. +-For example \tcode{-04:30} refers to 4 hours 30 minutes behind UTC, +-and \tcode{4} refers to 4 hours ahead of UTC. ++\noncxxtcode{[+|-]h[h][:mm]}. ++For example \noncxxtcode{-04:30} refers to 4 hours 30 minutes behind UTC, ++and \noncxxtcode{4} refers to 4 hours ahead of UTC. + \\ \rowsep +-\tcode{\%Z} & ++\noncxxtcode{\%Z} & + The time zone abbreviation or name. + A single word is parsed. + This word can only contain characters +@@ -11523,8 +11523,8 @@ from the basic character set\iref{lex.charset} + that are alphanumeric, or one of + \tcode{'_'}, \tcode{'/'}, \tcode{'-'}, or \tcode{'+'}. + \\ \rowsep +-\tcode{\%\%} & +-A \tcode{\%} character is extracted. ++\noncxxtcode{\%\%} & ++A \noncxxtcode{\%} character is extracted. + \\ + \end{LongTable} + +-- +2.43.0 + + +From 447831cf714a8b34f255eb56349233904698cfad Mon Sep 17 00:00:00 2001 +From: Eelis van der Weegen +Date: Sun, 31 May 2020 23:23:45 +0200 +Subject: [PATCH 4/9] Remove more inappropriate paragraph breaks. + +--- + source/algorithms.tex | 4 ---- + source/basic.tex | 3 --- + source/classes.tex | 8 -------- + source/compatibility.tex | 5 ----- + source/concepts.tex | 16 ---------------- + source/containers.tex | 11 ----------- + source/declarations.tex | 14 -------------- + source/exceptions.tex | 3 --- + source/expressions.tex | 24 ------------------------ + source/future.tex | 8 -------- + source/iostreams.tex | 15 --------------- + source/iterators.tex | 8 -------- + source/lib-intro.tex | 17 ----------------- + source/limits.tex | 1 - + source/memory.tex | 2 -- + source/meta.tex | 2 -- + source/numerics.tex | 8 -------- + source/overloading.tex | 11 ----------- + source/preprocessor.tex | 10 ---------- + source/ranges.tex | 13 ------------- + source/statements.tex | 1 - + source/support.tex | 4 ---- + source/templates.tex | 36 ------------------------------------ + source/threads.tex | 17 ----------------- + source/time.tex | 19 ------------------- + source/utilities.tex | 7 ------- + 26 files changed, 267 deletions(-) + +diff --git a/source/algorithms.tex b/source/algorithms.tex +index cd4ba8fb..6eaef6b7 100644 +--- a/source/algorithms.tex ++++ b/source/algorithms.tex +@@ -8698,7 +8698,6 @@ but stronger than those for a partial ordering. + If we define \tcode{equiv(a, b)} as \tcode{!comp(a, b) \&\& !comp(b, a)}, + then the requirements are that \tcode{comp} and \tcode{equiv} + both be transitive relations: +- + \begin{itemize} + \item \tcode{comp(a, b) \&\& comp(b, c)} implies \tcode{comp(a, c)} + \item \tcode{equiv(a, b) \&\& equiv(b, c)} implies \tcode{equiv(a, c)} +@@ -9750,7 +9749,6 @@ Let $N = \tcode{last - first}$: + For the parallel algorithm overloads, + \bigoh{N \log N} swaps and \bigoh{N} applications of the predicate. + \end{itemize} +- + \end{itemdescr} + + \indexlibraryglobal{stable_partition}% +@@ -10909,7 +10907,6 @@ A random access range \range{a}{b} is a + {heap with respect to comp and proj@heap with respect to \tcode{comp} and \tcode{proj}} + for a comparator and projection \tcode{comp} and \tcode{proj} + if its elements are organized such that: +- + \begin{itemize} + \item + With \tcode{$N$ = b - a}, for all $i$, $0 < i < N$, +@@ -13573,7 +13570,6 @@ template + \pnum + Some algorithms in this subclause are constrained with the following + exposition-only concepts: +- + \begin{itemdecl} + template + concept @\defexposconcept{nothrow-input-iterator}@ = // \expos +diff --git a/source/basic.tex b/source/basic.tex +index e820717d..83936b06 100644 +--- a/source/basic.tex ++++ b/source/basic.tex +@@ -312,7 +312,6 @@ int X::y = 1; // defines \tcode{X::y} + enum { up, down }; // defines \tcode{up} and \tcode{down} + namespace N { int d; } // defines \tcode{N} and \tcode{N::d} + X anX; // defines \tcode{anX} +- + \end{codeblock} + whereas these are just declarations: + \begin{codeblock} +@@ -850,7 +849,6 @@ compute equivalent values\iref{expr.eq}. + + \pnum + For the purposes of the preceding requirements: +- + \begin{itemize} + \item If \tcode{D} is a class with an implicitly-declared + constructor\iref{class.default.ctor,class.copy.ctor}, +@@ -6267,7 +6265,6 @@ has the top-level cv-qualifier \keyword{volatile}. + + \pnum + Every integer type has an \term{integer conversion rank} defined as follows: +- + \begin{itemize} + \item No two signed integer types other than \keyword{char} and \tcode{\keyword{signed} + \keyword{char}} (if \keyword{char} is signed) have the same rank, even if they have +diff --git a/source/classes.tex b/source/classes.tex +index b1db5350..07991b9d 100644 +--- a/source/classes.tex ++++ b/source/classes.tex +@@ -1640,7 +1640,6 @@ for each non-static data member of + that is of class type (or array thereof), + the constructor selected to copy/move that member is trivial; + \end{itemize} +- + \indextext{constructor!move!non-trivial}% + otherwise the copy/move constructor is + \defnx{non-trivial}{constructor!copy!nontrivial}. +@@ -3263,7 +3262,6 @@ Consider an object \tcode{u} of a \keyword{union} type \tcode{U} having non-stat + destructor and \tcode{N} has a non-trivial constructor (for instance, if they declare or inherit + virtual functions), the active member of \tcode{u} can be safely switched from \tcode{m} to + \tcode{n} using the destructor and placement \grammarterm{new-expression} as follows: +- + \begin{codeblock} + u.m.~M(); + new (&u.n) N; +@@ -3445,7 +3443,6 @@ A local class cannot have static data members\iref{class.static.data}. + \indextext{multiple inheritance}% + A list of base classes can be specified in a class definition using + the notation: +- + \begin{bnf} + \nontermdef{base-clause}\br + \terminal{:} base-specifier-list +@@ -5424,7 +5421,6 @@ initializers for direct and virtual base class subobjects and + non-static data members can be specified by a + \grammarterm{ctor-initializer}, + which has the form +- + \begin{bnf} + \nontermdef{ctor-initializer}\br + \terminal{:} mem-initializer-list +@@ -5895,7 +5891,6 @@ public: + X(const Mixins&... mixins) : Mixins(mixins)... { } + }; + \end{codeblock} +- + \end{example} + + \rSec2[class.inhctor.init]{Initialization by inherited constructor}% +@@ -6551,7 +6546,6 @@ any non-static data member of \tcode{C} is of reference type or + A binary operator expression \tcode{a @ b} is + \defnx{usable}{usable!binary operator expression} + if either +- + \begin{itemize} + \item + \tcode{a} or \tcode{b} is of class or enumeration type and +@@ -6672,7 +6666,6 @@ The \defnadj{synthesized}{three-way comparison} + of type \tcode{R}\iref{cmp.categories} + of glvalues \tcode{a} and \tcode{b} of the same type + is defined as follows: +- + \begin{itemize} + \item + If \tcode{a <=> b} is usable\iref{class.compare.default} and +@@ -6772,7 +6765,6 @@ The \defn{common comparison type} \tcode{U} + of a possibly-empty list of $n$ comparison category types + $\tcode{T}_0$, $\tcode{T}_1$, $\dotsc$, $\tcode{T}_{n-1}$ + is defined as follows: +- + \begin{itemize} + \item + If at least one $\tcode{T}_i$ is \tcode{std::partial_ordering}, +diff --git a/source/compatibility.tex b/source/compatibility.tex +index cdca4c22..74cce624 100644 +--- a/source/compatibility.tex ++++ b/source/compatibility.tex +@@ -2583,7 +2583,6 @@ Overspecification. + \effect + The signatures of the following member functions changed from taking an + \tcode{iterator} to taking a \tcode{const_iterator}: +- + \begin{itemize} + \item \tcode{insert(iter, val)} for \tcode{vector}, \tcode{deque}, \tcode{list}, + \tcode{set}, \tcode{multiset}, \tcode{map}, \tcode{multimap} +@@ -2655,7 +2654,6 @@ Clarify intentions, avoid workarounds. + Valid \CppIII{} code that relies on implicit boolean conversions will fail to + compile with this revision of \Cpp{}. Such conversions occur in the + following conditions: +- + \begin{itemize} + \item passing a value to a function that takes an argument of type \tcode{bool}; + \item using \tcode{operator==} to compare to \tcode{false} or \tcode{true}; +@@ -3773,7 +3771,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in + \pnum + Header \libheaderref{cstring}: + The following functions have different declarations: +- + \begin{itemize} + \item \tcode{strchr} + \item \tcode{strpbrk} +@@ -3787,7 +3784,6 @@ Subclause \ref{cstring.syn} describes the changes. + \pnum + Header \libheaderref{cwchar}: + The following functions have different declarations: +- + \begin{itemize} + \item \tcode{wcschr} + \item \tcode{wcspbrk} +@@ -3812,7 +3808,6 @@ in addition to the names declared in + \pnum + Header \libheaderref{cstdlib}: + The following functions have different behavior: +- + \begin{itemize} + \item \tcode{atexit} + \item \tcode{exit} +diff --git a/source/concepts.tex b/source/concepts.tex +index 42828a4b..3e64abc8 100644 +--- a/source/concepts.tex ++++ b/source/concepts.tex +@@ -150,7 +150,6 @@ already specifies exactly such an expression explicitly. + The following type \tcode{T} meets the explicitly stated syntactic requirements + of concept \tcode{C} above but does not meet the additional implicit + requirements: +- + \begin{codeblock} + struct T { + bool operator==(const T&) const { return true; } +@@ -365,7 +364,6 @@ and let \tcode{f} be a function with no arguments and return type \tcode{FromR} + such that \tcode{f()} is equality-preserving. + Types \tcode{From} and \tcode{To} model \tcode{\libconcept{convertible_to}} + only if: +- + \begin{itemize} + \item + \tcode{To} is not an object or reference-to-object type, or +@@ -373,7 +371,6 @@ only if: + + \item + \tcode{FromR} is not a reference-to-object type, or +- + \begin{itemize} + \item + If \tcode{FromR} is an rvalue reference to a non const-qualified type, the +@@ -486,7 +483,6 @@ only if + Users can customize the behavior of \libconcept{common_with} by specializing the + \tcode{common_type} class template\iref{meta.trans.other}. + \end{note} +- + \end{itemdescr} + + \rSec2[concepts.arithmetic]{Arithmetic concepts} +@@ -540,12 +536,10 @@ Let: + \end{itemize} + \tcode{LHS} and \tcode{RHS} model + \tcode{\libconcept{assignable_from}} only if +- + \begin{itemize} + \item \tcode{addressof(lhs = rhs) == addressof(lcopy)}. + + \item After evaluating \tcode{lhs = rhs}: +- + \begin{itemize} + \item \tcode{lhs} is equal to \tcode{rcopy}, unless \tcode{rhs} is a non-const + xvalue that refers to \tcode{lcopy}. +@@ -600,7 +594,6 @@ object\iref{customization.point.object}. The expression + \tcode{ranges::swap(E1, E2)} for subexpressions \tcode{E1} + and \tcode{E2} is expression-equivalent to an expression + \tcode{S} determined as follows: +- + \begin{itemize} + \item + \tcode{S} is \tcode{(void)swap(E1, E2)} +@@ -808,7 +801,6 @@ template + If \tcode{T} is an object type, then let \tcode{rv} be an rvalue of type + \tcode{T} and \tcode{u2} a distinct object of type \tcode{T} equal to + \tcode{rv}. \tcode{T} models \libconcept{move_constructible} only if +- + \begin{itemize} + \item After the definition \tcode{T u = rv;}, \tcode{u} is equal to \tcode{u2}. + +@@ -835,7 +827,6 @@ template + If \tcode{T} is an object type, then let \tcode{v} be an lvalue of type + \tcode{T} or \tcode{\keyword{const} T} or an rvalue of type \tcode{\keyword{const} T}. + \tcode{T} models \libconcept{copy_constructible} only if +- + \begin{itemize} + \item After the definition \tcode{T u = v;}, + \tcode{u} is equal to \tcode{v}\iref{concepts.equality} and +@@ -843,7 +834,6 @@ If \tcode{T} is an object type, then let \tcode{v} be an lvalue of type + + \item \tcode{T(v)} is equal to \tcode{v} and does not modify \tcode{v}. + \end{itemize} +- + \end{itemdescr} + + \rSec1[concepts.compare]{Comparison concepts} +@@ -882,7 +872,6 @@ template + Let \tcode{e} be an expression such that + \tcode{decltype((e))} is \tcode{T}. + \tcode{T} models \exposconcept{boolean-testable-impl} only if +- + \begin{itemize} + \item + either \tcode{remove_cvref_t} is not a class type, or +@@ -900,7 +889,6 @@ finds no disqualifying declaration (defined below). + \pnum + A \defnadj{disqualifying}{parameter} + is a function parameter whose declared type \tcode{P} +- + \begin{itemize} + \item + is not dependent on a template parameter, and +@@ -948,7 +936,6 @@ contains no key parameters. + + \pnum + A \defnadj{disqualifying}{declaration} is +- + \begin{itemize} + \item + a (non-template) function declaration that +@@ -1131,7 +1118,6 @@ template + Given a type \tcode{T}, let \tcode{a}, \tcode{b}, and \tcode{c} be + lvalues of type \tcode{const remove_reference_t}. + \tcode{T} models \libconcept{totally_ordered} only if +- + \begin{itemize} + \item Exactly one of \tcode{bool(a < b)}, \tcode{bool(a > b)}, or + \tcode{bool(a == b)} is \tcode{true}. +@@ -1140,7 +1126,6 @@ lvalues of type \tcode{const remove_reference_t}. + \item \tcode{bool(a <= b) == !bool(b < a)}. + \item \tcode{bool(a >= b) == !bool(a < b)}. + \end{itemize} +- + \end{itemdescr} + + \begin{itemdecl} +@@ -1339,7 +1324,6 @@ then the requirements are that + and + \tcode{equiv} + both be transitive relations: +- + \begin{itemize} + \item + \tcode{comp(a, b) \&\& comp(b, c)} +diff --git a/source/containers.tex b/source/containers.tex +index fe9418c0..e08718e5 100644 +--- a/source/containers.tex ++++ b/source/containers.tex +@@ -688,7 +688,6 @@ Unless otherwise specified (see~\ref{associative.reqmts.except}, \ref{unord.req. + \ref{vector.modifiers}) + all container types defined in this Clause meet + the following additional requirements: +- + \begin{itemize} + \item + If an exception is thrown by an +@@ -751,7 +750,6 @@ as input iterators. + Likewise, the extent to which an implementation determines that a type cannot be + an allocator is unspecified, except that as a minimum a type \tcode{A} shall not qualify + as an allocator unless it meets both of the following conditions: +- + \begin{itemize} + \item The \grammarterm{qualified-id} \tcode{A::value_type} + is valid and denotes a type\iref{temp.deduct}. +@@ -982,7 +980,6 @@ is not allocator-aware or is a specialization of \tcode{basic_string}, + the terms below are defined as if \tcode{A} were + \tcode{allocator} --- no allocator object needs to be created + and user specializations of \tcode{allocator} are not instantiated: +- + \begin{itemize} + \item + \tcode{T} is \defnx{\oldconcept{DefaultInsertable} into \tcode{X}} +@@ -4057,14 +4054,12 @@ such that distance from + to + \tcode{j} + is positive, the following condition holds: +- + \begin{codeblock} + value_comp(*j, *i) == false + \end{codeblock} + + \pnum + For associative containers with unique keys the stronger condition holds: +- + \begin{codeblock} + value_comp(*i, *j) != false + \end{codeblock} +@@ -6082,7 +6077,6 @@ define class templates that meet the requirements for sequence containers. + + \pnum + The following exposition-only alias template may appear in deduction guides for sequence containers: +- + \begin{codeblock} + template + using @\placeholdernc{iter-value-type}@ = iterator_traits::value_type; // \expos +@@ -9385,7 +9379,6 @@ If \tcode{size() < sz}, + appends \tcode{sz - size()} default-inserted elements to the + sequence. + If \tcode{sz <= size()}, equivalent to: +- + \begin{codeblock} + list::iterator it = begin(); + advance(it, sz); +@@ -20349,7 +20342,6 @@ For each of + \tcode{stack}, + the library provides the following constexpr-enabled formatter specialization + where \tcode{\placeholder{adaptor-type}} is the name of the template: +- + \indexlibraryglobal{formatter}% + \begin{codeblock} + namespace std { +@@ -24601,7 +24593,6 @@ typename A::offset_policy + \pnum + \result + A type \tcode{OP} such that: +- + \begin{itemize} + \item + \tcode{OP} meets the accessor policy requirements, +@@ -26046,7 +26037,6 @@ for the $k^\text{th}$ extent of \tcode{src}. + + \pnum + Let \tcode{SubExtents} be a specialization of \tcode{extents} such that: +- + \begin{itemize} + \item + \tcode{SubExtents::rank()} equals +@@ -26058,7 +26048,6 @@ the type of \tcode{slices...[$k$]} is not a collapsing slice type, + \tcode{SubExt\-ents::static_extent(\placeholder{MAP_RANK}(slices, $k$))} + equals the following, where $\Sigma_k$ + denotes the type of \tcode{slices...[$k$]}: +- + \begin{itemize} + \item + \tcode{Extents::static_extent($k$)} +diff --git a/source/declarations.tex b/source/declarations.tex +index cea5493a..38e1f367 100644 +--- a/source/declarations.tex ++++ b/source/declarations.tex +@@ -1594,7 +1594,6 @@ a partial specialization\iref{temp.spec.partial}, + an explicit + instantiation\iref{temp.explicit}, or it has one of the following + forms: +- + \begin{ncsimplebnf} + class-key \opt{attribute-specifier-seq} identifier \terminal{;}\br + class-key \opt{attribute-specifier-seq} simple-template-id \terminal{;} +@@ -2499,7 +2498,6 @@ the \grammarterm{declarator} declares a function. + + \pnum + Declarators have the syntax +- + \begin{bnf} + \nontermdef{declarator}\br + ptr-declarator\br +@@ -4405,7 +4403,6 @@ In the following code, + \tcode{g} + will be called with the value + \tcode{f(2)}: +- + \begin{codeblock} + int a = 1; + int f(int); +@@ -5075,7 +5072,6 @@ To + an object of type + \tcode{T} + means: +- + \begin{itemize} + \item + If +@@ -5285,7 +5281,6 @@ is sequenced before those associated with + the initialization of the $j^\text{th}$ element. + \item + Otherwise, if the destination type is a class type: +- + \begin{itemize} + \item + If the initializer expression is a prvalue +@@ -6203,7 +6198,6 @@ a program that necessitates such a binding is ill-formed. + A reference to type ``\cvqual{cv1} \tcode{T1}'' is initialized by + an expression of type ``\cvqual{cv2} \tcode{T2}'' as follows:% + \indextext{binding!reference} +- + \begin{itemize} + \item + If the reference is an lvalue reference and the initializer expression +@@ -6671,7 +6665,6 @@ int j { 1 }; // initialize to 1 + int k { }; // initialize to 0 + \end{codeblock} + \end{example} +- + \end{itemize} + + \pnum +@@ -7757,7 +7750,6 @@ as $\tcode{T}_i$ if the initializer is a prvalue, + as ``lvalue reference to $\tcode{T}_i$'' if the initializer is an lvalue, or + as ``rvalue reference to $\tcode{T}_i$'' otherwise, + variables are introduced with unique names $\tcode{r}_i$ as follows: +- + \begin{ncbnf} + \placeholder{S} \terminal{U$_i$ r$_i$ =} initializer \terminal{;} + \end{ncbnf} +@@ -7889,7 +7881,6 @@ struct S { + enum E : int {}; // error: redeclaration of enumeration + }; + \end{codeblock} +- + \end{example} + \end{note} + The \grammarterm{identifier} in an \grammarterm{enum-head-name} +@@ -7985,7 +7976,6 @@ If the underlying + type is not fixed, + the type of each enumerator prior to the closing brace is determined as + follows: +- + \begin{itemize} + \item If an + initializer is specified for an enumerator, the +@@ -8443,7 +8433,6 @@ void h() { + \pnum + A \grammarterm{namespace-alias-definition} declares a \defnadj{namespace}{alias} + according to the following grammar: +- + \begin{bnf} + \nontermdef{namespace-alias}\br + identifier +@@ -8617,7 +8606,6 @@ not declare functions or function templates, the use of the name is ill-formed\i + In particular, the name of a variable, function or enumerator does not + hide the name of a class or enumeration declared in a different + namespace. For example, +- + \begin{codeblock} + namespace A { + class X { }; +@@ -9180,7 +9168,6 @@ otherwise identical. + \pnum + \link{Linkage}{basic.link} between \Cpp{} and non-\Cpp{} code fragments can + be achieved using a \grammarterm{linkage-specification}: +- + \indextext{\idxgram{linkage-specification}}% + \indextext{specification!linkage!\idxcode{extern}}% + % +@@ -10057,7 +10044,6 @@ may be applied to a function or a lambda call operator or + to the declaration of a class or enumeration. + An \grammarterm{attribute-argument-clause} may be present + and, if present, shall have the form: +- + \begin{ncbnf} + \terminal{(} unevaluated-string \terminal{)} + \end{ncbnf} +diff --git a/source/exceptions.tex b/source/exceptions.tex +index ea065465..869f7588 100644 +--- a/source/exceptions.tex ++++ b/source/exceptions.tex +@@ -89,7 +89,6 @@ void f() { + goto l2; // OK + } + } +- + \end{codeblock} + \end{example} + \indextext{\idxcode{goto}!and try block}% +@@ -561,12 +560,10 @@ to pointers to private or protected or ambiguous classes, + a \link{function pointer conversion}{conv.fctptr}, + \item% + a \link{qualification conversion}{conv.qual}, or +- + \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}. +- + \end{itemize} + + \begin{note} +diff --git a/source/expressions.tex b/source/expressions.tex +index 24af225d..b23928b0 100644 +--- a/source/expressions.tex ++++ b/source/expressions.tex +@@ -467,7 +467,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied + 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, +@@ -511,7 +510,6 @@ Standard conversions are implicit conversions with built-in meaning. + \ref{conv} enumerates the full set of such conversions. A + \defnx{standard conversion sequence}{conversion sequence!standard} is a sequence of standard + conversions in the following order: +- + \begin{itemize} + \item Zero or one conversion from the following set: lvalue-to-rvalue + conversion, array-to-pointer conversion, and function-to-pointer +@@ -539,7 +537,6 @@ a required destination type and value category. + \begin{note} + Expressions with a given type will be implicitly converted to other + types in several contexts: +- + \begin{itemize} + \item When used as operands of operators. The operator's requirements + for its operands dictate the destination type\iref{expr.compound}. +@@ -665,7 +662,6 @@ int n = g(true); // OK, does not access \tcode{y.n} + \pnum + The result of the conversion is determined according to the + following rules: +- + \begin{itemize} + + \item If \tcode{T} is \cv{}~\tcode{std::nullptr_t}, the result is a +@@ -1176,7 +1172,6 @@ type cause conversions and yield result types in a similar way. The + purpose is to yield a common type, which is also the type of the result. + This pattern is called the \defnx{usual arithmetic conversions}{conversion!usual arithmetic}, + which are defined as follows: +- + \begin{itemize} + \item The lvalue-to-rvalue conversion\iref{conv.lval} + is applied to each operand and +@@ -1219,7 +1214,6 @@ As a consequence, operands of type \keyword{bool}, \keyword{char8_t}, \keyword{c + to some integral type. + \end{footnote} + Then the following rules are applied to determine \tcode{C}: +- + \begin{itemize} + + \item If \tcode{T1} and \tcode{T2} are the same type, \tcode{C} is that type. +@@ -2811,7 +2805,6 @@ auto counter = [i=0]() mutable -> decltype(i) { // OK, returns \tcode{int} + \pnum + For the purposes of lambda capture, + an expression potentially references local entities as follows: +- + \begin{itemize} + \item + An \grammarterm{id-expression} that names a local entity +@@ -3422,7 +3415,6 @@ The \grammarterm{expression} is an unevaluated operand. + Substitution + of template arguments (if any) and verification of + semantic properties proceed in the following order: +- + \begin{itemize} + \item + Substitution of template arguments (if any) +@@ -3434,7 +3426,6 @@ $E$ shall not be a potentially-throwing expression\iref{except.spec}. + + \item + If the \grammarterm{return-type-requirement} is present, then: +- + \begin{itemize} + \item + Substitution of template arguments (if any) +@@ -4539,7 +4530,6 @@ referred to by \tcode{T}. + \pnum + Let \tcode{C} be the class type to which \tcode{T} points or refers. The runtime + check logically executes as follows: +- + \begin{itemize} + \item If, in the most derived object pointed (referred) to by \tcode{v}, + \tcode{v} points (refers) to a public base class subobject of a +@@ -5053,7 +5043,6 @@ constness. + The null member pointer value\iref{conv.mem} is converted to the + null member pointer value of the destination type. The result of this + conversion is unspecified, except in the following cases: +- + \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 +@@ -5488,7 +5477,6 @@ is called a \term{suspension context} of the function. + \pnum + Evaluation of an \grammarterm{await-expression} involves the following + auxiliary types, expressions, and objects: +- + \begin{itemize} + \item + \placeholder{p} is an lvalue naming the promise +@@ -5871,7 +5859,6 @@ and + the \grammarterm{new-expression}, then the allocated type is the type + deduced for the variable \tcode{x} in the invented + declaration\iref{dcl.spec.auto}: +- + \begin{codeblock} + T x @\textrm{\placeholder{init}}@ ; + \end{codeblock} +@@ -6231,7 +6218,6 @@ the alignment argument is removed from the argument list; + otherwise, an argument that + is the type's alignment and has type \tcode{std::align_val_t} + is added into the argument list immediately after the first argument; +- + \end{itemize} + and then overload resolution is performed again. + +@@ -6309,7 +6295,6 @@ necessarily be the same as that of the block if the object is an array. + \indextext{\idxcode{new}!default constructor and}% + A \grammarterm{new-expression} that creates an object of type \tcode{T} + initializes that object as follows: +- + \begin{itemize} + \item If the \grammarterm{new-initializer} is omitted, the object is + default-initialized\iref{dcl.init}. +@@ -6588,7 +6573,6 @@ of their constructor; see~\ref{class.base.init}). + \pnum + If the value of the operand of the \grammarterm{delete-expression} is not a + null pointer value, then: +- + \begin{itemize} + \item + If the allocation call for the \grammarterm{new-expression} for the object to +@@ -7433,7 +7417,6 @@ or one operand has integral type and + the other operand has unscoped enumeration type, + the \link{usual arithmetic conversions}{expr.arith.conv} are applied to the operands. + Then: +- + \begin{itemize} + \item + If a \deflinkx{narrowing conversion}{conversion!narrowing}{dcl.init.list} is required, +@@ -7588,7 +7571,6 @@ is considered to be equivalent to a pointer to a hypothetical array element + $n$ for this purpose. + \end{footnote} + is defined in terms of a partial order consistent with the following rules: +- + \begin{itemize} + \item If two pointers point to different elements of the same array, or to + subobjects thereof, the pointer to the element with the higher subscript +@@ -7601,7 +7583,6 @@ neither member is a subobject of zero size + and their class is not a union. + + \item Otherwise, neither pointer is required to compare greater than the other. +- + \end{itemize} + + \pnum +@@ -7663,7 +7644,6 @@ If at least one of the converted operands is a pointer, + \link{qualification conversions}{conv.qual} + are performed on both operands to bring them to their \deflink{composite pointer type}{expr.type}. + Comparing pointers is defined as follows: +- + \begin{itemize} + \item + If one pointer represents the address of a complete object, and another +@@ -7693,7 +7673,6 @@ qualification conversions\iref{conv.qual} + are performed on both operands to bring them to + their composite pointer type\iref{expr.type}. + Comparing pointers to members is defined as follows: +- + \begin{itemize} + \item + If two pointers to members are both the null member pointer value, they compare +@@ -7979,7 +7958,6 @@ Attempts are made to form an implicit conversion sequence + from an operand expression \tcode{E1} of type \tcode{T1} + to a target type related to the type \tcode{T2} + of the operand expression \tcode{E2} as follows: +- + \begin{itemize} + \item If \tcode{E2} is an lvalue, the target type is + ``lvalue reference to \tcode{T2}'', +@@ -8058,7 +8036,6 @@ subclause. + and \link{function-to-pointer}{conv.func} standard conversions are + performed on the second and third operands. After those conversions, one + of the following shall hold: +- + \begin{itemize} + \item The second and third operands have the same type; the result is of + that type and the result is copy-initialized using the selected operand. +@@ -8088,7 +8065,6 @@ pointer type\iref{expr.type}. The result is of the composite pointer type. + Both the second and third operands have type \tcode{std::nullptr_t} or one has + that type and the other is a null pointer constant. The result is of type + \tcode{std::nullptr_t}. +- + \end{itemize} + + \rSec2[expr.yield]{Yielding a value}% +diff --git a/source/future.tex b/source/future.tex +index dc26444a..ac4ac504 100644 +--- a/source/future.tex ++++ b/source/future.tex +@@ -283,7 +283,6 @@ shown in the above synopsis. + \pnum + The header \libheaderrefx{type_traits}{meta.type.synop} + has the following addition: +- + \begin{codeblock} + namespace std { + template struct is_trivial; +@@ -523,7 +522,6 @@ template bool operator>=(const T& x, const T& y); + + \pnum + The header \libheaderref{tuple} has the following additions: +- + \begin{codeblock} + namespace std { + template struct tuple_size; +@@ -593,7 +591,6 @@ are included. + + \pnum + The header \libheaderref{variant} has the following additions: +- + \begin{codeblock} + namespace std { + template struct variant_size; +@@ -671,7 +668,6 @@ y = b; + + \pnum + The header \libheaderrefx{iterator}{iterator.synopsis} has the following addition: +- + \indexlibraryglobal{iterator}% + \begin{codeblock} + namespace std { +@@ -705,7 +701,6 @@ only to callers of that class. + If a \Cpp{} program wants to define a bidirectional iterator for some data + structure containing \tcode{double} and such that it works on a large memory + model of the implementation, it can do so with: +- + \begin{codeblock} + class MyIterator : + public iterator { +@@ -719,7 +714,6 @@ class MyIterator : + \pnum + The following member is declared in addition to those members + specified in \ref{move.iter.elem}: +- + \begin{codeblock} + namespace std { + template +@@ -829,7 +823,6 @@ are not required to avoid data races\iref{res.on.data.races}. + + \pnum + The header \libheaderrefx{filesystem}{fs.filesystem.syn} has the following additions: +- + \indexlibraryglobal{u8path}% + \begin{itemdecl} + template +@@ -949,7 +942,6 @@ std::string generic_string() const; + + \pnum + The header \libheaderrefx{atomic}{atomics.syn} has the following additions. +- + \begin{codeblock} + namespace std { + template +diff --git a/source/iostreams.tex b/source/iostreams.tex +index ad9e3afe..a046490d 100644 +--- a/source/iostreams.tex ++++ b/source/iostreams.tex +@@ -2105,14 +2105,12 @@ does nothing. + Otherwise assigns to the member objects of + \tcode{*this} + the corresponding member objects of \tcode{rhs} as follows: +- + \begin{itemize} + \item calls each registered callback pair \tcode{(fn, idx)} as + \tcode{(*fn)(erase_event, *this, idx)}; + + \item then, assigns to the member objects of \tcode{*this} the corresponding member objects of + \tcode{rhs}, except that +- + \begin{itemize} + \item \tcode{rdstate()}, \tcode{rdbuf()}, and \tcode{exceptions()} are left unchanged; + +@@ -7225,7 +7223,6 @@ clears \tcode{ios_base::skipws} in the format flags stored in the + format flags stored in the \tcode{basic_ostream} object + \tcode{cout} (the same as \tcode{cout << noshowbase}). + \end{footnote} +- + \begin{codeblock} + void f(ios_base& str, ios_base::fmtflags mask) { + // reset specified flags +@@ -7264,7 +7261,6 @@ then the expression + behaves as if it called + \tcode{f(in, mask)}, where the function \tcode{f} is defined as: + \indexlibrarymember{fmtflags}{ios_base}% +- + \begin{codeblock} + void f(ios_base& str, ios_base::fmtflags mask) { + // set specified flags +@@ -7310,7 +7306,6 @@ then the expression + \tcode{in >> setbase(base)} + behaves as if it called + \tcode{f(in, base)}, where the function \tcode{f} is defined as: +- + \begin{codeblock} + void f(ios_base& str, int base) { + // set \tcode{basefield} +@@ -7353,7 +7348,6 @@ then the expression + \tcode{out << setfill(c)} + behaves as if it called + \tcode{f(out, c)}, where the function \tcode{f} is defined as: +- + \begin{codeblock} + template + void f(basic_ios& str, charT c) { +@@ -7394,7 +7388,6 @@ then the expression + \tcode{in >> setprecision(n)} + behaves as if it called + \tcode{f(in, n)}, where the function \tcode{f} is defined as: +- + \begin{codeblock} + void f(ios_base& str, int n) { + // set precision +@@ -7440,7 +7433,6 @@ then the expression + \tcode{in >> setw(n)} + behaves as if it called + \tcode{f(in, n)}, where the function \tcode{f} is defined as: +- + \begin{codeblock} + void f(ios_base& str, int n) { + // set width +@@ -7490,7 +7482,6 @@ An object of unspecified type such that if + \tcode{in} is an object of type \tcode{basic_istream} + then the expression \tcode{in >> get_money(mon, intl)} behaves as if it called + \tcode{f(in, mon, intl)}, where the function \tcode{f} is defined as: +- + \begin{codeblock} + template + void f(basic_ios& str, moneyT& mon, bool intl) { +@@ -7529,7 +7520,6 @@ An object of unspecified type such that if + then the expression \tcode{out << put_money(mon, intl)} behaves as a + \link{formatted output function}{ostream.formatted.reqmts} that calls + \tcode{f(out, mon, intl)}, where the function \tcode{f} is defined as: +- + \begin{codeblock} + template + void f(basic_ios& str, const moneyT& mon, bool intl) { +@@ -7565,7 +7555,6 @@ An object of unspecified type such that if \tcode{in} is an object of type + \tcode{basic_istream} then the expression \tcode{in >> get_time(tmb, + fmt)} behaves as if it called \tcode{f(in, tmb, fmt)}, where the function \tcode{f} is + defined as: +- + \begin{codeblock} + template + void f(basic_ios& str, tm* tmb, const charT* fmt) { +@@ -7604,7 +7593,6 @@ An object of unspecified type such that if \tcode{out} is an object of + type \tcode{basic_ostream} then the expression + \tcode{out << put_time(tmb, fmt)} behaves as if it called \tcode{f(out, tmb, fmt)}, + where the function \tcode{f} is defined as: +- + \begin{codeblock} + template + void f(basic_ios& str, const tm* tmb, const charT* fmt) { +@@ -11432,7 +11420,6 @@ with the specialization that a sequence of characters is read from the input + sequence as if by reading from the associated file + into an internal buffer (\tcode{extern_buf}) + and then as if by doing: +- + \begin{codeblock} + char extern_buf[XSIZE]; + const char* extern_end; +@@ -13923,7 +13910,6 @@ without an intervening \grammarterm{root-directory} element. + \pnum + \indextext{path!normalization|(}% + \defnx{Normalization}{normalization!path|see{path, normalization}} of a generic format pathname means: +- + \begin{enumerate} + \item If the path is empty, stop. + \item Replace each slash character in the \grammarterm{root-name} with a \grammarterm{preferred-separator}. +@@ -17065,7 +17051,6 @@ recursive_directory_iterator& increment(error_code& ec); + As specified for the prefix increment operation of + \link{Input iterators}{input.iterators}, + except that: +- + \begin{itemize} + \item If there are no more entries at the current depth, then if \tcode{depth() != 0} + iteration over the parent directory resumes; otherwise \tcode{*this = recursive_directory_iterator()}. +diff --git a/source/iterators.tex b/source/iterators.tex +index 46edb440..b083ad28 100644 +--- a/source/iterators.tex ++++ b/source/iterators.tex +@@ -963,7 +963,6 @@ may be declared as \keyword{void}. + \pnum + The definitions in this subclause make use of the following + exposition-only concepts: +- + \begin{codeblock} + template + concept @\defexposconcept{cpp17-iterator}@ = +@@ -1021,7 +1020,6 @@ concept @\defexposconcept{cpp17-random-access-iterator}@ = + \pnum + The members of a specialization \tcode{iterator_traits} generated from the + \tcode{iterator_traits} primary template are computed as follows: +- + \begin{itemize} + \item + If \tcode{I} has valid\iref{temp.deduct} member +@@ -1168,7 +1166,6 @@ The name \tcode{ranges::iter_move} denotes + a customization point object\iref{customization.point.object}. + The expression \tcode{ranges::\-iter_move(E)} for a subexpression \tcode{E} is + expression-equivalent to: +- + \begin{itemize} + \item \tcode{iter_move(E)}, if + \tcode{E} has class or enumeration type and +@@ -2811,7 +2808,6 @@ namespace std { + A program-defined iterator \tcode{BinaryTreeIterator} + can be included into the bidirectional iterator category by + specializing the \tcode{iterator_traits} template: +- + \begin{codeblock} + template struct iterator_traits> { + using iterator_category = bidirectional_iterator_tag; +@@ -2829,7 +2825,6 @@ If + \tcode{evolve()} + is well-defined for bidirectional iterators, but can be implemented more + efficiently for random access iterators, then the implementation is as follows: +- + \begin{codeblock} + template + inline void +@@ -3416,7 +3411,6 @@ As if by: + Iterator tmp = current; + return *--tmp; + \end{codeblock} +- + \end{itemdescr} + + \indexlibrarymember{operator->}{reverse_iterator}% +@@ -4799,7 +4793,6 @@ vector v1(s.begin(), s.end()); // copies strings into \tcode{v1 + vector v2(make_move_iterator(s.begin()), + make_move_iterator(s.end())); // moves strings into \tcode{v2} + \end{codeblock} +- + \end{example} + + \rSec3[move.iterator]{Class template \tcode{move_iterator}} +@@ -6518,7 +6511,6 @@ partial_sum(istream_iterator(cin), + istream_iterator(), + ostream_iterator(cout, "@\textbackslash@n")); + \end{codeblock} +- + reads a file containing floating-point numbers from + \tcode{cin}, + and prints the partial sums onto +diff --git a/source/lib-intro.tex b/source/lib-intro.tex +index 39efa82c..6cb3cbba 100644 +--- a/source/lib-intro.tex ++++ b/source/lib-intro.tex +@@ -196,7 +196,6 @@ save space, items that do not apply to a Clause are omitted. + For example, if a Clause does not specify any requirements, + there will be no ``Requirements'' subclause. + \end{footnote} +- + \begin{itemize} + \item Summary + \item Requirements +@@ -213,7 +212,6 @@ subclause and the library entities provided in each header. + + \pnum + The contents of the summary and the detailed specifications include: +- + \begin{itemize} + \item macros + \item values +@@ -230,7 +228,6 @@ The contents of the summary and the detailed specifications include: + \indextext{requirements}% + 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} + \item Template arguments + \item Derived classes +@@ -305,7 +302,6 @@ are additionally imposed on the use of the declaration. + + \pnum + The detailed specifications each contain the following elements:% +- + \begin{itemize} + \item name and brief description + \item synopsis (class definition or function declaration, as appropriate) +@@ -322,7 +318,6 @@ To save space, items that do not apply to a class are omitted. + For example, if a class does not specify any comparison operator functions, there + will be no ``Comparison operator functions'' subclause. + \end{footnote} +- + \begin{itemize} + \item constructor(s) and destructor + \item copying, moving \& assignment functions +@@ -340,7 +335,6 @@ To save space, elements that do not apply to a function are omitted. + For example, if a function specifies no + preconditions, there will be no \expects element. + \end{footnote} +- + \begin{itemize} + \item + \constraints +@@ -623,7 +617,6 @@ values\iref{basic.fundamental}. + + \pnum + The enumerated type \tcode{\placeholder{enumerated}} can be written: +- + \begin{codeblock} + enum @\placeholder{enumerated}@ { @$\tcode{\placeholder{V}}_{0}$@, @$\tcode{\placeholder{V}}_{1}$@, @$\tcode{\placeholder{V}}_{2}$@, @$\tcode{\placeholder{V}}_{3}$@, @$\ldots$@ }; + +@@ -656,7 +649,6 @@ or as a + + \pnum + The bitmask type \tcode{\placeholder{bitmask}} can be written: +- + \begin{codeblock} + // For exposition only. + // \tcode{int_type} is an integral type capable of representing all values of the bitmask type. +@@ -733,7 +725,6 @@ The value \textit{Y} \defnx{is set}{bitmask!value!is set} in the object + The C standard library makes widespread use + \indextext{library!C standard}% + of characters and character sequences that follow a few uniform conventions: +- + \begin{itemize} + \item + Properties specified as \defn{locale-specific} +@@ -979,7 +970,6 @@ some subclauses provide representative declarations, and semantic requirements, + private members of classes that meet the external specifications of the classes. + The declarations for such members are + followed by a comment that ends with \expos, as in: +- + \begin{codeblock} + streambuf* sb; // \expos + \end{codeblock} +@@ -1938,7 +1928,6 @@ An object \tcode{t} is \defn{swappable with} an object \tcode{u} if and only if + evaluated in the context described below, and + + \item these expressions have the following effects: +- + \begin{itemize} + \item the object referred to by \tcode{t} has the value originally held by \tcode{u} and + \item the object referred to by \tcode{u} has the value originally held by \tcode{t}. +@@ -2944,7 +2933,6 @@ for that type can fail by throwing an object of type + \begin{example} + The following is an allocator class template supporting the minimal + interface that meets the requirements of \ref{allocator.requirements.general}: +- + \begin{codeblock} + template + struct SimpleAllocator { +@@ -3438,13 +3426,11 @@ the description of function semantics apply + to both the default version defined by the \Cpp{} standard library and + the replacement function defined by the program. + +- + \rSec3[handler.functions]{Handler functions} + + \pnum + The \Cpp{} standard library provides a default version of the following handler + function\iref{support}: +- + \begin{itemize} + \item + \tcode{terminate_handler} +@@ -3465,7 +3451,6 @@ Exception handling. + \pnum + A \Cpp{} program can get a pointer to the current handler function by calling the following + functions: +- + \begin{itemize} + \item + \indexlibraryglobal{get_new_handler}% +@@ -3491,7 +3476,6 @@ on the implementation. + + \pnum + In particular, the behavior is undefined in the following cases: +- + \begin{itemize} + \item + For replacement functions\iref{replacement.functions}, if the installed replacement function does not +@@ -3776,7 +3760,6 @@ functions an implementation shall provide corresponding definitions. + \indextext{stable algorithm}% + When the requirements for an algorithm state that it is ``stable'' without further elaboration, + it means: +- + \begin{itemize} + \item For the sort algorithms the relative order of equivalent + elements is preserved. +diff --git a/source/limits.tex b/source/limits.tex +index 877f21f3..7fc0a416 100644 +--- a/source/limits.tex ++++ b/source/limits.tex +@@ -123,5 +123,4 @@ Handlers per try block\iref{except.handle} [256]. + Number of \link{placeholders}{func.bind.place} [10]. + \item% + Number of hazard-protectable possibly-reclaimable objects\iref{saferecl.hp.general} [256]. +- + \end{itemize} +diff --git a/source/memory.tex b/source/memory.tex +index eb593459..9056b38e 100644 +--- a/source/memory.tex ++++ b/source/memory.tex +@@ -1481,7 +1481,6 @@ when considered as an unevaluated operand. + + \pnum + Let \exposid{pair-constructor} be an exposition-only class defined as follows: +- + \begin{codeblock} + class @\exposid{pair-constructor}@ { + using @\exposid{pair-type}@ = remove_cv_t; // \expos +@@ -3620,7 +3619,6 @@ template constexpr shared_ptr(nullptr_t p, D d, A a); + \tcode{is_move_constructible_v} is \tcode{true}, and + \tcode{d(p)} is a well-formed expression. + For the first two overloads: +- + \begin{itemize} + \item + If \tcode{T} is an array type, then either +diff --git a/source/meta.tex b/source/meta.tex +index 09b71fa4..78c07a37 100644 +--- a/source/meta.tex ++++ b/source/meta.tex +@@ -1684,7 +1684,6 @@ The predicate condition for a template specialization \tcode{is_convertible(); +@@ -2194,7 +2193,6 @@ If any of the types computed above is ill-formed, then + \pnum + For the \tcode{common_type} trait applied to a template parameter pack \tcode{T} of types, + the member \tcode{type} shall be either declared or not present as follows: +- + \begin{itemize} + \item If \tcode{sizeof...(T)} is zero, there shall be no member \tcode{type}. + +diff --git a/source/numerics.tex b/source/numerics.tex +index a304c838..bb1836c8 100644 +--- a/source/numerics.tex ++++ b/source/numerics.tex +@@ -606,7 +606,6 @@ template constexpr complex operator+(const complex& lhs); + \pnum + \returns + \tcode{complex(lhs)}. +- + \end{itemdescr} + + \begin{itemdecl} +@@ -745,7 +744,6 @@ template + \effects + Inserts the complex number \tcode{x} + onto the stream \tcode{o} as if it were implemented as follows: +- + \begin{codeblock} + basic_ostringstream s; + s.flags(o.flags()); +@@ -4275,7 +4273,6 @@ template + each operation is to be carried out modulo $2^{32}$, + each indexing operator applied to \tcode{begin} is to be taken modulo $n$, + and $T(x)$ is defined as $x \xor (x \rightshift 27)$: +- + \begin{itemize} + \item + By way of initialization, +@@ -8356,7 +8353,6 @@ A unique function with the indicated name can be applied (unqualified) + to an operand of type \tcode{T}. + This function returns a value of type \tcode{T} + or which can be unambiguously implicitly converted to type \tcode{T}. +- + \end{itemdescr} + + \rSec3[valarray.special]{Specialized algorithms} +@@ -8372,7 +8368,6 @@ template void swap(valarray& x, valarray& y) noexcept; + Equivalent to \tcode{x.swap(y)}. + \end{itemdescr} + +- + \rSec2[class.slice]{Class \tcode{slice}} + + \rSec3[class.slice.overview]{Overview} +@@ -8792,7 +8787,6 @@ namespace std { + This template is a helper template used by the + \tcode{gslice} + subscript operator +- + \indexlibraryglobal{gslice_array}% + \indexlibraryglobal{valarray}% + \begin{itemdecl} +@@ -8918,7 +8912,6 @@ namespace std { + + \pnum + This template is a helper template used by the mask subscript operator: +- + \indexlibrarymember{operator[]}{mask_array}% + \begin{itemdecl} + mask_array valarray::operator[](const valarray&); +@@ -9035,7 +9028,6 @@ namespace std { + + \pnum + This template is a helper template used by the indirect subscript operator +- + \indexlibrarymember{operator[]}{indirect_array}% + \begin{itemdecl} + indirect_array valarray::operator[](const valarray&); +diff --git a/source/overloading.tex b/source/overloading.tex +index d3250f2d..c5328c3c 100644 +--- a/source/overloading.tex ++++ b/source/overloading.tex +@@ -103,7 +103,6 @@ the list of arguments in its own unique way. + But, once the + candidate functions and argument lists have been identified, the + selection of the best function is the same in all cases: +- + \begin{itemize} + \item + First, a subset of the candidate functions (those that have +@@ -396,7 +395,6 @@ Such a + \grammarterm{postfix-expression}, + perhaps nested arbitrarily deep in + parentheses, has one of the following forms: +- + \begin{ncbnf} + postfix-expression:\br + postfix-expression \terminal{.} id-expression\br +@@ -1018,7 +1016,6 @@ The lookup rules for operators in expressions are different than + the lookup + rules for operator function names in a function call, as shown in the following + example: +- + \begin{codeblock} + struct A { }; + void operator + (A, A); +@@ -1081,7 +1078,6 @@ Assuming that + \tcode{T} + a class type, + the candidate functions are selected as follows: +- + \begin{itemize} + \item + The non-explicit constructors\iref{class.conv.ctor} of +@@ -1127,7 +1123,6 @@ conversion function to be invoked. + Assuming that ``\cv{} \tcode{T}'' is the + type of the object being initialized, + the candidate functions are selected as follows: +- + \begin{itemize} + \item + The permissible types for non-explicit conversion functions are +@@ -1199,7 +1194,6 @@ list-initialized such that \ref{dcl.init.list} specifies that overload resolutio + is performed according to the rules in this subclause + or when forming a list-initialization sequence according to \ref{over.ics.list}, + overload resolution selects the constructor in two phases: +- + \begin{itemize} + \item + If the initializer list is not empty or \tcode{T} has no default constructor, +@@ -1281,7 +1275,6 @@ called the \defn{copy deduction candidate}. + For each \grammarterm{deduction-guide}, + a function or function template + with the following properties: +- + \begin{itemize} + \item + The \grammarterm{template-head}, if any, +@@ -2783,7 +2776,6 @@ sequence}{over.ics.ellipsis}. + Two implicit conversion sequences of the same form are + indistinguishable conversion sequences unless one of the + following rules applies: +- + \begin{itemize} + \item + List-initialization sequence \tcode{L1} is a better conversion sequence than +@@ -3015,7 +3007,6 @@ int i = f(a); // calls \tcode{f(int)}, because \tcode{short} $ + // better than \tcode{short} $\to$ \tcode{float}. + \end{codeblock} + \end{example} +- + \end{itemize} + + \pnum +@@ -3024,7 +3015,6 @@ better conversion than a Promotion, which is a better conversion than + a Conversion. + Two conversion sequences with the same rank are indistinguishable unless + one of the following rules applies: +- + \begin{itemize} + \item + A conversion that does not convert a pointer or a pointer to member +@@ -4182,7 +4172,6 @@ is a \defnx{literal operator template}{literal!operator!template}. + \pnum + The declaration of a literal operator shall have a + \grammarterm{parameter-declaration-clause} equivalent to one of the following: +- + \begin{codeblock} + const char* + unsigned long long int +diff --git a/source/preprocessor.tex b/source/preprocessor.tex +index b3cf7fc7..cd5f8947 100644 +--- a/source/preprocessor.tex ++++ b/source/preprocessor.tex +@@ -199,7 +199,6 @@ begins with the first character in the source file + (optionally after whitespace containing no new-line characters) or + follows whitespace containing at least one new-line character, + and is +- + \begin{itemize} + \item + a \tcode{\#} preprocessing token, or +@@ -645,7 +644,6 @@ including within a preprocessing directive. + \begin{example} + This demonstrates a way to include a library \tcode{optional} facility + only if it is available: +- + \begin{codeblock} + #if __has_include() + # include +@@ -806,14 +804,12 @@ However, using the \tcode{< >} form for headers provided + with the implementation and the \tcode{" "} form for sources + outside the control of the implementation + achieves wider portability. For instance: +- + \begin{codeblock} + #include + #include + #include "usefullib.h" + #include "myprog.h" + \end{codeblock} +- + \end{note} + + \pnum +@@ -821,7 +817,6 @@ achieves wider portability. For instance: + This illustrates macro-replaced + \tcode{\#include} + directives: +- + \begin{codeblock} + #if VERSION == 1 + #define INCFILE "vers1.h" +@@ -1975,7 +1970,6 @@ is optional. + \pnum + \begin{example} + In the following fragment: +- + \begin{codeblock} + #define hash_hash # ## # + #define mkstr(a) # a +@@ -1985,7 +1979,6 @@ char p[] = join(x, y); // equivalent to \tcode{char p[] = "x \#\# y";} + \end{codeblock} + + The expansion produces, at various stages: +- + \begin{codeblock} + join(x, y) + in_between(x hash_hash y) +@@ -2221,7 +2214,6 @@ has no effect. + + \pnum + The following macro names shall be defined by the implementation: +- + \begin{description} + + \item +@@ -2455,7 +2447,6 @@ an \impldef{text of \mname{TIME} when time of translation is not available} vali + + \pnum + The following macro names are conditionally defined by the implementation: +- + \begin{description} + \item + \indextext{__stdc__@\mname{STDC}}% +@@ -2490,7 +2481,6 @@ are \impldef{presence and value of \mname{STDC_ISO_10646}}. + \mname{STDCPP_THREADS}\\ + Defined, and has the value integer literal \tcode{1}, if and only if a program + can have more than one \link{thread of execution}{intro.multithread}. +- + \end{description} + + \pnum +diff --git a/source/ranges.tex b/source/ranges.tex +index 29b5ae53..912546d8 100644 +--- a/source/ranges.tex ++++ b/source/ranges.tex +@@ -657,7 +657,6 @@ object\iref{customization.point.object}. + Given a subexpression \tcode{E} with type \tcode{T}, + let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. + Then: +- + \begin{itemize} + \item + If \tcode{E} is an rvalue and +@@ -718,7 +717,6 @@ object\iref{customization.point.object}. + Given a subexpression \tcode{E} with type \tcode{T}, + let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. + Then: +- + \begin{itemize} + \item + If \tcode{E} is an rvalue and +@@ -844,7 +842,6 @@ object\iref{customization.point.object}. + Given a subexpression \tcode{E} with type \tcode{T}, + let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. + Then: +- + \begin{itemize} + \item + If \tcode{E} is an rvalue and +@@ -908,7 +905,6 @@ object\iref{customization.point.object}. + Given a subexpression \tcode{E} with type \tcode{T}, + let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. + Then: +- + \begin{itemize} + \item + If \tcode{E} is an rvalue and +@@ -1033,7 +1029,6 @@ object\iref{customization.point.object}. + Given a subexpression \tcode{E} with type \tcode{T}, + let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. + Then: +- + \begin{itemize} + \item + If \tcode{T} is an array of unknown bound\iref{term.array.type}, +@@ -1163,7 +1158,6 @@ object\iref{customization.point.object}. + Given a subexpression \tcode{E} with type \tcode{T}, + let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. + Then: +- + \begin{itemize} + \item + If \tcode{T} is an array of unknown bound\iref{term.array.type}, +@@ -1214,7 +1208,6 @@ object\iref{customization.point.object}. + Given a subexpression \tcode{E} with type \tcode{T}, + let \tcode{t} be an lvalue that denotes the reified object for \tcode{E}. + Then: +- + \begin{itemize} + \item + If \tcode{E} is an rvalue and +@@ -1755,7 +1748,6 @@ manipulating ranges. + \pnum + Many of the types in \ref{range.utility} are specified in terms of + the following exposition-only concepts: +- + \begin{codeblock} + template + concept @\defexposconceptnc{simple-view}@ = // \expos +@@ -5962,7 +5954,6 @@ If \tcode{decltype((F))} does not model + \tcode{views::take(E, F)} is ill-formed. + Otherwise, the expression \tcode{views::take(E, F)} + is expression-equivalent to: +- + \begin{itemize} + \item + If \tcode{T} is a specialization +@@ -5988,7 +5979,6 @@ then + ranges::be\-gin(E) + std::min(ranges::distance(E), F))}, + except that \tcode{E} is evaluated only once, + where \tcode{U} is a type determined as follows: +- + \begin{itemize} + \item if \tcode{T} is a specialization of \tcode{span}, + then \tcode{U} is \tcode{span}; +@@ -6450,7 +6440,6 @@ If \tcode{decltype((F))} does not model + \tcode{views::drop(E, F)} is ill-formed. + Otherwise, the expression \tcode{views::drop(E, F)} + is expression-equivalent to: +- + \begin{itemize} + \item + If \tcode{T} is a specialization of +@@ -7531,7 +7520,6 @@ if and only if \exposid{ref-is-glvalue} is \tcode{true}, and + \exposid{Base} and \exposid{InnerBase} each model \libconcept{forward_range}. + In that case, + \tcode{\exposid{iterator}::iterator_category} is defined as follows: +- + \begin{itemize} + \item + Let \placeholder{OUTERC} denote +@@ -9855,7 +9843,6 @@ appears in the immediate context of a template instantiation. + \end{note} + Otherwise, \tcode{views::counted(E, F)} + is expression-equivalent to: +- + \begin{itemize} + \item + If \tcode{T} models \libconcept{contiguous_iterator}, +diff --git a/source/statements.tex b/source/statements.tex +index 301d6304..65faf674 100644 +--- a/source/statements.tex ++++ b/source/statements.tex +@@ -731,7 +731,6 @@ exposition only; and + + \item + \exposid{begin-expr} and \exposid{end-expr} are determined as follows: +- + \begin{itemize} + \item if the type of \exposid{range} is a reference to an + array type \tcode{R}, \exposid{begin-expr} and \exposid{end-expr} are +diff --git a/source/support.tex b/source/support.tex +index f49c677b..99049b67 100644 +--- a/source/support.tex ++++ b/source/support.tex +@@ -2440,7 +2440,6 @@ This requirement is binding on any replacement versions of these functions. + + \pnum + \default +- + \begin{itemize} + \item + Executes a loop: +@@ -2919,7 +2918,6 @@ Intentionally performs no other action. + \pnum + \begin{example} + This can be useful for constructing an object at a known address: +- + \begin{codeblock} + void* place = operator new(sizeof(Something)); + Something* p = new (place) Something(); +@@ -4822,7 +4820,6 @@ are collectively termed the \defn{comparison category types}. + Each is specified in terms of an exposition-only data member named \tcode{value} + whose value typically corresponds to that of an enumerator + from one of the following exposition-only enumerations: +- + \begin{codeblock} + enum class @\placeholdernc{ord}@ { @\placeholdernc{equal}@ = 0, @\placeholdernc{equivalent}@ = @\placeholdernc{equal}@, @\placeholdernc{less}@ = -1, @\placeholdernc{greater}@ = 1 }; // \expos + enum class @\placeholdernc{ncmp}@ { @\placeholdernc{unordered}@ = -127 }; // \expos +@@ -5780,7 +5777,6 @@ if the \grammarterm{qualified-id} \tcode{R::promise_type} is valid and + denotes a type\iref{temp.deduct}, + then \tcode{coroutine_traits} has the following publicly + accessible member: +- + \begin{codeblock} + using promise_type = R::promise_type; + \end{codeblock} +diff --git a/source/templates.tex b/source/templates.tex +index ea6af80c..23c257ac 100644 +--- a/source/templates.tex ++++ b/source/templates.tex +@@ -257,7 +257,6 @@ in some translation unit; no diagnostic is required. + The syntax for + \grammarterm{template-parameter}{s} + is: +- + \begin{bnf} + \nontermdef{template-parameter}\br + type-parameter\br +@@ -1638,7 +1637,6 @@ for function templates}{temp.func.order}. + Given an invented class template \tcode{X} + with the \grammarterm{template-head} of \tcode{A} (including default arguments + and \grammarterm{requires-clause}, if any): +- + \begin{itemize} + \item + Each of the two function templates has the same template parameters +@@ -2035,7 +2033,6 @@ or templated function declaration\iref{dcl.fct} + can be constrained by the use of a \grammarterm{requires-clause}. + This allows the specification of constraints for that declaration as + an expression: +- + \begin{bnf} + \nontermdef{constraint-expression}\br + logical-or-expression +@@ -2051,7 +2048,6 @@ that are used to constrain the declaration. + \pnum + \indextext{constraint!associated|see{associated constraints}}% + A declaration's \defn{associated constraints} are defined as follows: +- + \begin{itemize} + \item If there are no introduced \grammarterm{constraint-expression}{s}, + the declaration has no associated constraints. +@@ -2842,7 +2838,6 @@ public: + + declares three member functions of a class template. + The subscript function can be defined like this: +- + \begin{codeblock} + template T& Array::operator[](int i) { + if (i<0 || sz<=i) error("Array: range error"); +@@ -3234,7 +3229,6 @@ produces zero or more instantiations of the pattern in a list (described below). + The form of the pattern + depends on the context in which the expansion occurs. Pack + expansions can occur in the following contexts: +- + \begin{itemize} + \item In a function parameter pack\iref{dcl.fct}; the pattern is the + \grammarterm{parameter-declaration} without the ellipsis. +@@ -3840,7 +3834,6 @@ All other constant template arguments are specialized. + \pnum + Within the argument list of a partial specialization, + the following restrictions apply: +- + \begin{itemize} + \item + The type of a template parameter corresponding to a specialized constant template +@@ -3854,7 +3847,6 @@ template< int X, int (*array_ptr)[X] > class A {}; + int array[5]; + template< int X > class A { }; // error + \end{codeblock} +- + \end{example} + \item + The partial specialization shall be more specialized than the primary +@@ -3980,7 +3972,6 @@ the first is \defn{more specialized} than the second if, given the following + rewrite to two function templates, the first function template is more + specialized than the second according to the \link{ordering rules for function + templates}{temp.func.order}: +- + \begin{itemize} + \item + Each of the two +@@ -4132,7 +4123,6 @@ A::B abci; // uses \#1 + A function template defines an unbounded set of related functions. + \begin{example} + A family of sort functions can be declared like this: +- + \begin{codeblock} + template class Array { }; + template void sort(Array&); +@@ -4187,7 +4177,6 @@ void h(int* p) { + } + \end{codeblock} + \end{minipage} +- + \end{example} + + \pnum +@@ -4373,7 +4362,6 @@ to guarantee that functionally equivalent declarations will be treated + as distinct. + For example, the last two declarations are functionally + equivalent and would cause a program to be ill-formed: +- + \begin{codeblock} + // guaranteed to be the same + template void f(A, A); +@@ -4464,7 +4452,6 @@ then the order of the function parameters in its transformed template + is reversed. + For a function template $M$ with cv-qualifiers \cv{} + that is a member of a class $A$: +- + \begin{itemize} + \item + The type $X(M)$ is ``rvalue reference to \cv{}~$A$'' +@@ -4722,7 +4709,6 @@ template class TT> + void g(TT>); + g(v); // OK, \tcode{TT} = \tcode{vector} + \end{codeblock} +- + \end{example} + + \pnum +@@ -5588,7 +5574,6 @@ of a class that is the current instantiation. + + \pnum + A qualified name\iref{basic.lookup.qual} is dependent if +- + \begin{itemize} + \item + it is a \grammarterm{conversion-function-id} +@@ -5839,7 +5824,6 @@ specified by the + or + \grammarterm{new-type-id} + is dependent, even if any subexpression is type-dependent: +- + \begin{ncsimplebnf} + simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br + simple-type-specifier braced-init-list\br +@@ -5857,7 +5841,6 @@ typename-specifier braced-init-list\br + \pnum + Expressions of the following forms are never type-dependent (because the type + of the expression cannot be dependent): +- + \begin{ncsimplebnf} + literal\br + \keyword{sizeof} unary-expression\br +@@ -5968,7 +5951,6 @@ Expressions of the following form are value-dependent if the + is type-dependent or the + \grammarterm{type-id} + is dependent: +- + \begin{ncsimplebnf} + \keyword{sizeof} unary-expression\br + \keyword{sizeof} \terminal{(} type-id \terminal{)}\br +@@ -5996,7 +5978,6 @@ any \grammarterm{expression} in the \grammarterm{expression-list} + is value-dependent or + any \grammarterm{assignment-expression} in the \grammarterm{braced-init-list} + is value-dependent: +- + \begin{ncsimplebnf} + simple-type-specifier \terminal{(} \opt{expression-list} \terminal{)}\br + typename-specifier \terminal{(} \opt{expression-list} \terminal{)}\br +@@ -6011,7 +5992,6 @@ typename-specifier braced-init-list\br + + \pnum + Expressions of the following form are value-dependent: +- + \begin{ncsimplebnf} + \keyword{sizeof} \terminal{...} \terminal{(} identifier \terminal{)}\br + fold-expression +@@ -7018,7 +6998,6 @@ template. + + \pnum + The syntax for explicit instantiation is: +- + \begin{bnf} + \nontermdef{explicit-instantiation}\br + \opt{\keyword{extern}} \keyword{template} declaration +@@ -7493,7 +7472,6 @@ otherwise, it is a declaration. + The definition of a static data member of a template + for which default-initialization is desired + can use functional cast notation\iref{expr.type.conv}: +- + \begin{codeblock} + template<> X Q::x; // declaration + template<> X Q::x (); // error: declares a function +@@ -7752,7 +7730,6 @@ An empty template argument list can be used to indicate that a given + use refers to a specialization of a function template even when a + non-template function\iref{dcl.fct} is visible that would otherwise be used. + For example: +- + \begin{codeblock} + template int f(T); // \#1 + int f(int); // \#2 +@@ -8354,7 +8331,6 @@ void h(int x, float& y) { + If + \tcode{P} + is not a reference type: +- + \begin{itemize} + \item + If +@@ -8449,7 +8425,6 @@ the type + is transformed as described above). + However, there are + three cases that allow a difference: +- + \begin{itemize} + \item + If the original +@@ -8639,7 +8614,6 @@ of \tcode{P} for type deduction and for any further references to or transformat + If + \tcode{A} + is not a reference type: +- + \begin{itemize} + \item + If +@@ -8685,7 +8659,6 @@ values that will make the deduced + identical to + \tcode{A}. + However, certain attributes of \tcode{A} may be ignored: +- + \begin{itemize} + \item + If the original \tcode{A} is a reference type, +@@ -8730,7 +8703,6 @@ the argument template and template-1 as the parameter template. + \pnum + The types used to determine the ordering depend on the context in which + the partial ordering is done: +- + \begin{itemize} + \item + In the context of a function call, the types used are those function parameter types +@@ -8758,7 +8730,6 @@ and + \pnum + Before the partial ordering is done, certain transformations are performed + on the types used for partial ordering: +- + \begin{itemize} + \item + If +@@ -8962,7 +8933,6 @@ A given type + \tcode{P} + can be composed from a number of other + types, templates, and constant template argument values: +- + \begin{itemize} + \item + A function type includes the types of each of the function parameters, +@@ -9004,7 +8974,6 @@ need not have the same form. + + \pnum + The non-deduced contexts are: +- + \indextext{context!non-deduced}% + \begin{itemize} + \item +@@ -9099,7 +9068,6 @@ is deduced. + \begin{example} + Here is an example in which different parameter/argument pairs produce + inconsistent template argument deductions: +- + \begin{codeblock} + template void f(T x, T y) { @\commentellip@ } + struct A { @\commentellip@ }; +@@ -9116,7 +9084,6 @@ Here is an example where two template arguments are deduced from a + single function parameter/argument pair. + This can lead to conflicts + that cause type deduction to fail: +- + \begin{codeblock} + template void f(T (*)(T, U, U)); + +@@ -9133,7 +9100,6 @@ void r() { + + Here is an example where the exception specification of a function type + is deduced: +- + \begin{codeblock} + template void f1(void (*)() noexcept(E)); + template struct A { }; +@@ -9152,7 +9118,6 @@ void h() { + + Here is an example where a qualification conversion applies between the + argument type on the function call and the deduced template argument type: +- + \begin{codeblock} + template void f(const T*) { } + int* p; +@@ -9163,7 +9128,6 @@ void s() { + + Here is an example where the template argument is used to instantiate + a derived class type of the corresponding function parameter type: +- + \begin{codeblock} + template struct B { }; + template struct D : public B {}; +diff --git a/source/threads.tex b/source/threads.tex +index 7a2d110e..6b8778ac 100644 +--- a/source/threads.tex ++++ b/source/threads.tex +@@ -7365,7 +7365,6 @@ and visible to other threads. + + \pnum + The expression \tcode{m.lock()} is well-formed and has the following semantics: +- + \begin{itemdescr} + \pnum + \expects +@@ -7408,7 +7407,6 @@ that a deadlock would occur. + + \pnum + The expression \tcode{m.try_lock()} is well-formed and has the following semantics: +- + \begin{itemdescr} + \pnum + \expects +@@ -7454,7 +7452,6 @@ Nothing. + + \pnum + The expression \tcode{m.unlock()} is well-formed and has the following semantics: +- + \begin{itemdescr} + \pnum + \expects +@@ -7609,7 +7606,6 @@ requirements\iref{thread.req.lockable.timed}. + \pnum + The expression \tcode{m.try_lock_for(rel_time)} is well-formed + and has the following semantics: +- + \begin{itemdescr} + \pnum + \expects +@@ -7651,7 +7647,6 @@ Timeout-related exceptions\iref{thread.req.timing}. + \pnum + The expression \tcode{m.try_lock_until(abs_time)} is well-formed + and has the following semantics: +- + \begin{itemdescr} + \pnum + \expects +@@ -7838,7 +7833,6 @@ shared lock. + \pnum + The expression \tcode{m.lock_shared()} is well-formed and has the + following semantics: +- + \begin{itemdescr} + \pnum + \expects +@@ -7875,7 +7869,6 @@ The calling thread has a shared lock on the mutex. + + \pnum + The expression \tcode{m.unlock_shared()} is well-formed and has the following semantics: +- + \begin{itemdescr} + \pnum + \expects +@@ -7900,7 +7893,6 @@ Nothing. + + \pnum + The expression \tcode{m.try_lock_shared()} is well-formed and has the following semantics: +- + \begin{itemdescr} + \pnum + \expects +@@ -8003,7 +7995,6 @@ requirements\iref{thread.req.lockable.shared.timed}. + \pnum + The expression \tcode{m.try_lock_shared_for(rel_time)} is well-formed and + has the following semantics: +- + \begin{itemdescr} + \pnum + \expects +@@ -8048,7 +8039,6 @@ Timeout-related exceptions\iref{thread.req.timing}. + \pnum + The expression \tcode{m.try_lock_shared_until(abs_time)} is well-formed + and has the following semantics: +- + \begin{itemdescr} + \pnum + \expects +@@ -10199,7 +10189,6 @@ template + \begin{itemdescr} + \pnum + \effects +- + \begin{itemize} + \item + \indextext{block (execution)}% +@@ -11589,7 +11578,6 @@ shared state as \tcode{*this}. + + \pnum + \errors +- + \begin{itemize} + \item \tcode{future_already_retrieved} if \tcode{get_future} has already been called on + a \tcode{promise} with the same shared state as \tcode{*this}. +@@ -11652,7 +11640,6 @@ already has a stored value or exception. + + \pnum + \errors +- + \begin{itemize} + \item \tcode{promise_already_satisfied} if its shared state + already has a stored value or exception. +@@ -11992,7 +11979,6 @@ the relative timeout\iref{thread.req.timing} specified by \tcode{rel_time} has e + + \pnum + \returns +- + \begin{itemize} + \item \tcode{future_status::deferred} if the shared state contains a deferred + function. +@@ -12336,7 +12322,6 @@ the relative timeout\iref{thread.req.timing} specified by + + \pnum + \returns +- + \begin{itemize} + \item \tcode{future_status::deferred} if the shared state contains a deferred + function. +@@ -12371,7 +12356,6 @@ absolute timeout\iref{thread.req.timing} specified by + + \pnum + \returns +- + \begin{itemize} + \item \tcode{future_status::deferred} if the shared state contains a deferred + function. +@@ -12427,7 +12411,6 @@ The further behavior + of the second function depends on the \tcode{policy} argument as follows (if + more than one of these conditions applies, the implementation may choose any of + the corresponding policies): +- + \begin{itemize} + \item + If \tcode{launch::async} is set in \tcode{policy}, calls +diff --git a/source/time.tex b/source/time.tex +index fd66d63d..7321f172 100644 +--- a/source/time.tex ++++ b/source/time.tex +@@ -2075,7 +2075,6 @@ return os << s.str(); + \end{codeblock} + where \tcode{\placeholder{units-suffix}} + depends on the type \tcode{Period::type} as follows: +- + \begin{itemize} + \item + If \tcode{Period::type} is \tcode{atto}, +@@ -2953,7 +2952,6 @@ for (auto i = 0; i < 8; ++i, u += 250ms) + \end{codeblock} + + Produces this output: +- + \begin{outputblock} + 2015-06-30 23:59:59.500 UTC + 2015-06-30 23:59:59.750 UTC +@@ -3159,7 +3157,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, tt); + \end{codeblock} + + Produces this output: +- + \begin{outputblock} + 2000-01-01 00:00:00 UTC == 2000-01-01 00:00:32 TAI + \end{outputblock} +@@ -3322,7 +3319,6 @@ cout << format("{0:%F %T %Z} == {1:%F %T %Z}\n", st, gt); + \end{codeblock} + + Produces this output: +- + \begin{outputblock} + 2000-01-01 00:00:00 UTC == 2000-01-01 00:00:13 GPS + \end{outputblock} +@@ -3391,7 +3387,6 @@ such as \tcode{std::file\-sys\-tem}. + \pnum + The type denoted by \tcode{file_clock} provides + precisely one of the following two sets of static member functions: +- + \begin{codeblock} + template + static sys_time<@\seebelow@> +@@ -3400,9 +3395,7 @@ template + static file_time<@\seebelow@> + from_sys(const sys_time&); + \end{codeblock} +- + or: +- + \begin{codeblock} + template + static utc_time<@\seebelow@> +@@ -3875,7 +3868,6 @@ template + \constraints + At least one of the following clock time conversion expressions + is well-formed: +- + \begin{itemize} + \item + \begin{codeblock} +@@ -7921,7 +7913,6 @@ a conventional syntax for the creation of civil calendar dates. + \pnum + \begin{note} + The year, month, and day are accepted in any of the following 3 orders: +- + \begin{codeblock} + @\tcode{\placeholder{year}}@/@\tcode{\placeholder{month}}@/@\tcode{\placeholder{day}}@ + @\tcode{\placeholder{month}}@/@\tcode{\placeholder{day}}@/@\tcode{\placeholder{year}}@ +@@ -7929,7 +7920,6 @@ The year, month, and day are accepted in any of the following 3 orders: + \end{codeblock} + + Anywhere a \tcode{\placeholder{day}} is needed, any of the following can also be specified: +- + \begin{codeblock} + last + @\tcode{\placeholder{weekday}}@[@\tcode{\placeholder{i}}@] +@@ -7942,7 +7932,6 @@ last + Partial-date types such as \tcode{year_month} and \tcode{month_day} + can be created by not applying the second division operator + for any of the three orders. For example: +- + \begin{codeblock} + year_month ym = 2015y/April; + month_day md1 = April/4; +@@ -9134,7 +9123,6 @@ template + Initializes the base class with a sequence of \tcode{char} + equivalent to that produced by \tcode{os.str()} + initialized as shown below: +- + \begin{codeblock} + ostringstream os; + os << tp << " is in a gap between\n" +@@ -9164,7 +9152,6 @@ int main() { + \end{codeblock} + + Produces the output: +- + \begin{outputblock} + 2016-03-13 02:30:00 is in a gap between + 2016-03-13 02:00:00 EST and +@@ -9209,7 +9196,6 @@ template + Initializes the base class with a sequence of \tcode{char} + equivalent to that produced by \tcode{os.str()} + initialized as shown below: +- + \begin{codeblock} + ostringstream os; + os << tp << " is ambiguous. It could be\n" +@@ -9237,7 +9223,6 @@ int main() { + \end{codeblock} + + Produces the output: +- + \begin{outputblock} + 2016-11-06 01:30:00 is ambiguous. It could be + 2016-11-06 01:30:00 EDT == 2016-11-06 05:30:00 UTC or +@@ -9291,7 +9276,6 @@ The \tcode{offset} data member indicates + the UTC offset in effect + for the associated \tcode{time_zone} and \tcode{time_point}. + The relationship between \tcode{local_time} and \tcode{sys_time} is: +- + \begin{codeblock} + offset = local_time - sys_time + \end{codeblock} +@@ -9596,7 +9580,6 @@ the behavior of \tcode{zoned_time} + for the \tcode{zoned_time} default constructor, + and constructors taking \tcode{string_view}. + A specialization for \tcode{const time_zone*} is provided by the implementation: +- + \begin{codeblock} + namespace std::chrono { + template<> struct zoned_traits { +@@ -10172,7 +10155,6 @@ for (auto& l : get_tzdb().leap_seconds) + \end{codeblock} + + Produces the output: +- + \begin{outputblock} + 1972-07-01 00:00:00: 1s + 1973-01-01 00:00:00: 1s +@@ -10471,7 +10453,6 @@ The \tcode{parse} member functions of these formatters + interpret the format specification + as a \fmtgrammarterm{chrono-format-spec} + according to the following syntax: +- + \begin{ncbnf} + \fmtnontermdef{chrono-format-spec}\br + \opt{fill-and-align} \opt{width} \opt{precision} \opt{\terminal{L}} \opt{chrono-specs} +diff --git a/source/utilities.tex b/source/utilities.tex +index 79866112..6fd17813 100644 +--- a/source/utilities.tex ++++ b/source/utilities.tex +@@ -289,7 +289,6 @@ Exchanges values stored in two locations. + \pnum + \remarks + The exception specification is equivalent to: +- + \begin{codeblock} + is_nothrow_move_constructible_v && is_nothrow_move_assignable_v + \end{codeblock} +@@ -2540,7 +2539,6 @@ For all $i$, assigns \tcode{std::forward<$\tcode{T}_i$>(get<$i$>(u))} to + \remarks + The exception specification is equivalent to the logical \logop{and} of the + following expressions: +- + \begin{codeblock} + is_nothrow_move_assignable_v<@$\mathtt{T}_i$@> + \end{codeblock} +@@ -3486,7 +3484,6 @@ As if by \tcode{x.swap(y)}. + \pnum + \remarks + The exception specification is equivalent to: +- + \begin{codeblock} + noexcept(x.swap(y)) + \end{codeblock} +@@ -11305,7 +11302,6 @@ constexpr bitset& operator<<=(size_t pos) noexcept; + Replaces each bit at position \tcode{I} in + \tcode{*this} + with a value determined as follows: +- + \begin{itemize} + \item + If \tcode{I < pos}, the new value is zero; +@@ -11330,7 +11326,6 @@ constexpr bitset& operator>>=(size_t pos) noexcept; + Replaces each bit at position \tcode{I} in + \tcode{*this} + with a value determined as follows: +- + \begin{itemize} + \item + If \tcode{pos >= N - I}, the new value is zero; +@@ -12059,7 +12054,6 @@ namespace std { + If a \Cpp{} program wants to have a by-element addition of two vectors \tcode{a} + and \tcode{b} containing \tcode{double} and put the result into \tcode{a}, + it can do: +- + \begin{codeblock} + transform(a.begin(), a.end(), b.begin(), a.begin(), plus()); + \end{codeblock} +@@ -15542,7 +15536,6 @@ friend bool operator==(const copyable_function& f, nullptr_t) noexcept; + The header provides partial specializations of \tcode{function_ref} + for each combination of the possible replacements of + the placeholders \cv{} and \placeholder{noex} where: +- + \begin{itemize} + \item \cv{} is either const or empty, and + \item \placeholder{noex} is either \tcode{true} or \tcode{false}. +-- +2.43.0 + + +From 1b14bc4a1b29d88aea160c27a85dfda8e2f487e5 Mon Sep 17 00:00:00 2001 +From: Eelis van der Weegen +Date: Thu, 17 Sep 2020 10:17:47 +0200 +Subject: [PATCH 5/9] Use monospace font for code in figures. + +--- + source/assets/figdag.dot | 8 ++++---- + source/assets/figname.dot | 14 +++++++------- + source/assets/fignonvirt.dot | 12 ++++++------ + source/assets/figvirt.dot | 10 +++++----- + source/assets/figvirtnonvirt.dot | 14 +++++++------- + 5 files changed, 29 insertions(+), 29 deletions(-) + +diff --git a/source/assets/figdag.dot b/source/assets/figdag.dot +index b29593a9..797d8f2b 100644 +--- a/source/assets/figdag.dot ++++ b/source/assets/figdag.dot +@@ -1,10 +1,10 @@ + digraph dag { + graph [nodesep=1.5, rankdir=BT]; + +- Base [shape=plaintext, height=.1, fontsize=24]; +- Derived1 [shape=plaintext, height=.1, fontsize=24]; +- Derived2 [shape=plaintext, height=.1, fontsize=24]; ++ Base [shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ Derived1 [shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ Derived2 [shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; + + Derived2 -> Derived1; + Derived1 -> Base; +-} +\ No newline at end of file ++} +diff --git a/source/assets/figname.dot b/source/assets/figname.dot +index 8cb94e93..9878984d 100644 +--- a/source/assets/figname.dot ++++ b/source/assets/figname.dot +@@ -1,12 +1,12 @@ + digraph virt { + graph [nodesep=1.5, rankdir=BT]; + +- W1 [label = "W", shape=plaintext, height=.1, fontsize=24]; +- V [shape=plaintext, height=.1, fontsize=24]; +- W2 [label = "W", shape=plaintext, height=.1, fontsize=24]; +- B [shape=plaintext, height=.1, fontsize=24]; +- C [shape=plaintext, height=.1, fontsize=24]; +- D [shape=plaintext, height=.1, fontsize=24]; ++ W1 [label = "W", shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ V [shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ W2 [label = "W", shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ B [shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ C [shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ D [shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; + + D -> B; + D -> C; +@@ -14,4 +14,4 @@ digraph virt { + C -> V; + B -> W1; + C -> W2; +-} +\ No newline at end of file ++} +diff --git a/source/assets/fignonvirt.dot b/source/assets/fignonvirt.dot +index fac23dcf..ee3a3d9b 100644 +--- a/source/assets/fignonvirt.dot ++++ b/source/assets/fignonvirt.dot +@@ -1,14 +1,14 @@ + digraph nonvirt { + graph [nodesep=1.5, rankdir=BT]; + +- L1 [label = "L", shape=plaintext, height=.1, fontsize=24]; +- L2 [label = "L", shape=plaintext, height=.1, fontsize=24]; +- A [shape=plaintext, height=.1, fontsize=24]; +- B [shape=plaintext, height=.1, fontsize=24]; +- C [shape=plaintext, height=.1, fontsize=24]; ++ L1 [label = "L", shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ L2 [label = "L", shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ A [shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ B [shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ C [shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; + + C -> B; + C -> A; + B -> L2; + A -> L1; +-} +\ No newline at end of file ++} +diff --git a/source/assets/figvirt.dot b/source/assets/figvirt.dot +index 4c9fa775..e1caa157 100644 +--- a/source/assets/figvirt.dot ++++ b/source/assets/figvirt.dot +@@ -1,13 +1,13 @@ + digraph virt { + graph [nodesep=1.5, rankdir=BT]; + +- V [shape=plaintext, height=.1, fontsize=24]; +- A [shape=plaintext, height=.1, fontsize=24]; +- B [shape=plaintext, height=.1, fontsize=24]; +- C [shape=plaintext, height=.1, fontsize=24]; ++ V [shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ A [shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ B [shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ C [shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; + + C -> B; + C -> A; + B -> V; + A -> V; +-} +\ No newline at end of file ++} +diff --git a/source/assets/figvirtnonvirt.dot b/source/assets/figvirtnonvirt.dot +index b3c04d48..1ab8e364 100644 +--- a/source/assets/figvirtnonvirt.dot ++++ b/source/assets/figvirtnonvirt.dot +@@ -1,12 +1,12 @@ + digraph virtnonvirt { + graph [nodesep=1.5, rankdir=BT]; + +- B1 [label = "B", shape=plaintext, height=.1, fontsize=24]; +- B2 [label = "B", shape=plaintext, height=.1, fontsize=24]; +- AA [shape=plaintext, height=.1, fontsize=24]; +- X [shape=plaintext, height=.1, fontsize=24]; +- Y [shape=plaintext, height=.1, fontsize=24]; +- Z [shape=plaintext, height=.1, fontsize=24]; ++ B1 [label = "B", shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ B2 [label = "B", shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ AA [shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ X [shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ Y [shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; ++ Z [shape=plaintext, height=.1, fontsize=11, fontname="Courier New"]; + + subgraph { + AA -> X; +@@ -17,4 +17,4 @@ digraph virtnonvirt { + + AA -> Z [weight=0]; + Z -> B2; +-} +\ No newline at end of file ++} +-- +2.43.0 + + +From 1786b5a246815e78983c2e1503c3dc916de30ffb Mon Sep 17 00:00:00 2001 +From: Eelis van der Weegen +Date: Wed, 23 Jun 2021 20:54:27 +0200 +Subject: [PATCH 6/9] Mark code that's not to be highlighted. + +--- + source/uax31.tex | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/source/uax31.tex b/source/uax31.tex +index 79f0f7d0..80b2d666 100644 +--- a/source/uax31.tex ++++ b/source/uax31.tex +@@ -33,8 +33,8 @@ where \tcode{} has the XID_Start property, + \tcode{} is a list of characters permitted between continue characters. + For \Cpp{} we add the character \unicode{005f}{low line}, or \tcode{_}, + to the set of permitted \tcode{} characters, +-the \tcode{} set is empty, and +-the \tcode{} characters are unmodified. ++the \noncxxtcode{} set is empty, and ++the \noncxxtcode{} characters are unmodified. + In the grammar used in \UAX{31}, this is + \begin{outputblock} + := * +-- +2.43.0 + + +From 69b76dd22ec654a5db1633d60e7bbb57d8a1bcca Mon Sep 17 00:00:00 2001 +From: Eelis van der Weegen +Date: Sun, 28 Jul 2024 10:22:07 +0200 +Subject: [PATCH 7/9] Use cxxdraft-htmlgen macros more. + +--- + source/algorithms.tex | 180 +++++++++++++-------------- + source/concepts.tex | 4 +- + source/diagnostics.tex | 18 ++- + source/exec.tex | 18 +-- + source/future.tex | 10 +- + source/iostreams.tex | 28 ++--- + source/lib-intro.tex | 28 ++--- + source/memory.tex | 46 +++---- + source/meta.tex | 268 ++++++++++++++++++++--------------------- + source/numerics.tex | 34 +++--- + source/strings.tex | 10 +- + source/support.tex | 4 +- + source/threads.tex | 110 ++++++++--------- + source/time.tex | 66 +++++----- + source/utilities.tex | 136 ++++++++++----------- + 15 files changed, 476 insertions(+), 484 deletions(-) + +diff --git a/source/algorithms.tex b/source/algorithms.tex +index 6eaef6b7..b7fd050e 100644 +--- a/source/algorithms.tex ++++ b/source/algorithms.tex +@@ -62,14 +62,14 @@ the names of template parameters are used to express type requirements. + \tcode{InputIterator1}, or + \tcode{Input\-Iterator2}, + the template argument shall meet the +- \oldconcept{InputIterator} requirements\iref{input.iterators}. ++ \oldconceptref{InputIterator} requirements\iref{input.iterators}. + \item + If an algorithm's template parameter is named + \tcode{OutputIterator}, + \tcode{OutputIterator1}, or + \tcode{Output\-Iterator2}, + the template argument shall meet the +- \oldconcept{OutputIterator} requirements\iref{output.iterators}. ++ \oldconceptref{OutputIterator} requirements\iref{output.iterators}. + \item + If an algorithm's template parameter is named + \tcode{ForwardIterator}, +@@ -77,7 +77,7 @@ the names of template parameters are used to express type requirements. + \tcode{ForwardItera\-tor2}, or + \tcode{NoThrowForwardIterator}, + the template argument shall meet the +- \oldconcept{ForwardIterator} requirements\iref{forward.iterators} ++ \oldconceptref{ForwardIterator} requirements\iref{forward.iterators} + if it is required to be a mutable iterator, or + model \libconcept{forward_iterator}\iref{iterator.concept.forward} otherwise. + \item +@@ -93,7 +93,7 @@ the names of template parameters are used to express type requirements. + \tcode{Bidirectional\-Iterator1}, or + \tcode{BidirectionalIterator2}, + the template argument shall meet the +- \oldconcept{BidirectionalIterator} requirements\iref{bidirectional.iterators} ++ \oldconceptref{BidirectionalIterator} requirements\iref{bidirectional.iterators} + if it is required to be a mutable iterator, or model + \libconcept{bidirectional_iterator}\iref{iterator.concept.bidir} otherwise. + \item +@@ -102,7 +102,7 @@ the names of template parameters are used to express type requirements. + \tcode{Random\-AccessIterator1}, or + \tcode{RandomAccessIterator2}, + the template argument shall meet the +- \oldconcept{RandomAccessIterator} requirements\iref{random.access.iterators} ++ \oldconceptref{RandomAccessIterator} requirements\iref{random.access.iterators} + if it is required to be a mutable iterator, or model + \libconcept{random_access_iterator}\iref{iterator.concept.random.access} otherwise. + \end{itemize} +@@ -4619,10 +4619,10 @@ template + \pnum + \expects + \tcode{Function} meets +-the \oldconcept{MoveConstructible} requirements (\tref{cpp17.moveconstructible}). ++the \oldconceptref{MoveConstructible} requirements (\tref{cpp17.moveconstructible}). + \begin{note} + \tcode{Function} need not meet the requirements of +-\oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}). ++\oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}). + \end{note} + + \pnum +@@ -4659,7 +4659,7 @@ template + \begin{itemdescr} + \pnum + \expects +-\tcode{Function} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{Function} meets the \oldconceptref{CopyConstructible} requirements. + + \pnum + \effects +@@ -4793,10 +4793,10 @@ to an integral type\iref{conv.integral,class.conv}. + \pnum + \expects + \tcode{n >= 0} is \tcode{true}. +-\tcode{Function} meets the \oldconcept{MoveConstructible} requirements. ++\tcode{Function} meets the \oldconceptref{MoveConstructible} requirements. + \begin{note} + \tcode{Function} need not meet +-the requirements of \oldconcept{CopyConstructible}. ++the requirements of \oldconceptref{CopyConstructible}. + \end{note} + + \pnum +@@ -4833,7 +4833,7 @@ to an integral type\iref{conv.integral,class.conv}. + \pnum + \expects + \tcode{n >= 0} is \tcode{true}. +-\tcode{Function} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{Function} meets the \oldconceptref{CopyConstructible} requirements. + + \pnum + \effects +@@ -5681,7 +5681,7 @@ If + \item + the types of \tcode{first1}, \tcode{last1}, \tcode{first2}, and \tcode{last2} + meet the +- \oldconcept{RandomAccessIterator} requirements\iref{random.access.iterators} ++ \oldconceptref{RandomAccessIterator} requirements\iref{random.access.iterators} + and \tcode{last1 - first1 != last2 - first2} + for the overloads in namespace \tcode{std}; + \item +@@ -6025,7 +6025,7 @@ Equivalent to: \tcode{return searcher(first, last).first;} + + \pnum + \remarks +-\tcode{Searcher} need not meet the \oldconcept{CopyConstructible} requirements. ++\tcode{Searcher} need not meet the \oldconceptref{CopyConstructible} requirements. + \end{itemdescr} + + \rSec2[alg.starts.with]{Starts with} +@@ -7598,7 +7598,7 @@ Let $E(\tcode{i})$ be + \expects + For the algorithms in namespace \tcode{std}, + the type of \tcode{*first} +-meets the \oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}). ++meets the \oldconceptref{MoveAssignable} requirements (\tref{cpp17.moveassignable}). + + \pnum + \effects +@@ -7849,7 +7849,7 @@ let $E(\tcode{i})$ be + For the overloads in namespace \tcode{std}, + \tcode{pred} is an equivalence relation and + the type of \tcode{*first} meets +-the \oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}). ++the \oldconceptref{MoveAssignable} requirements (\tref{cpp17.moveassignable}). + + \pnum + \effects +@@ -7980,10 +7980,10 @@ Let: + \libconcept{forward_iterator}\iref{iterator.concept.forward}, + then there are no additional requirements for \tcode{T}. + Otherwise, if \tcode{OutputIterator} meets +- the \oldconcept{ForwardIterator} requirements and ++ the \oldconceptref{ForwardIterator} requirements and + its value type is the same as \tcode{T}, + then \tcode{T} meets +- the \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. ++ the \oldconceptref{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. + Otherwise, \tcode{T} meets both + the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and + \oldconcept{CopyAssignable} requirements. +@@ -8062,7 +8062,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces + \expects + For the overloads in namespace \tcode{std}, + \tcode{BidirectionalIterator} meets +-the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements}. ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements}. + + \pnum + \effects +@@ -8197,10 +8197,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\libconcept{random_access_iterat + \range{first}{middle} and \range{middle}{last} are valid ranges. + For the overloads in namespace \tcode{std}, + \tcode{ForwardIterator} meets +-the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements}, and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements}, and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. + + \pnum + \effects +@@ -8420,13 +8420,13 @@ For the overload in namespace \tcode{std}: + \begin{itemize} + \item + \tcode{PopulationIterator} meets +- the \oldconcept{InputIterator} requirements\iref{input.iterators}. ++ the \oldconceptref{InputIterator} requirements\iref{input.iterators}. + \item + \tcode{SampleIterator} meets +- the \oldconcept{OutputIterator} requirements\iref{output.iterators}. ++ the \oldconceptref{OutputIterator} requirements\iref{output.iterators}. + \item + \tcode{SampleIterator} meets +- the \oldconcept{RandomAccessIterator} requirements\iref{random.access.iterators} ++ the \oldconceptref{RandomAccessIterator} requirements\iref{random.access.iterators} + unless \tcode{Pop\-ulat\-ion\-Iter\-ator} + models \libconcept{forward_iterator}\iref{iterator.concept.forward}. + \item +@@ -8494,7 +8494,7 @@ For the overload in namespace \tcode{std}: + \begin{itemize} + \item + \tcode{RandomAccessIterator} meets +- the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements}. ++ the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements}. + \item + The type \tcode{remove_reference_t} meets + the uniform random bit generator\iref{rand.req.urng} requirements. +@@ -8555,7 +8555,7 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces + \expects + \tcode{n >= 0} is \tcode{true}. + For the overloads in namespace \tcode{std}, +-the type of \tcode{*first} meets the \oldconcept{MoveAssignable} requirements. ++the type of \tcode{*first} meets the \oldconceptref{MoveAssignable} requirements. + + \pnum + \effects +@@ -8619,10 +8619,10 @@ template<@\exposconcept{execution-policy}@ Ep, @\exposconcept{sized-random-acces + \expects + \tcode{n >= 0} is \tcode{true}. + For the overloads in namespace \tcode{std}, +-the type of \tcode{*first} meets the \oldconcept{MoveAssignable} requirements, ++the type of \tcode{*first} meets the \oldconceptref{MoveAssignable} requirements, + and \tcode{ForwardIterator} meets +-the \oldconcept{BidirectionalIterator} requirements\iref{bidirectional.iterators} or +-the \oldconcept{ValueSwap\-pable} requirements. ++the \oldconceptref{BidirectionalIterator} requirements\iref{bidirectional.iterators} or ++the \oldconceptref{ValueSwappable} requirements. + + \pnum + \effects +@@ -8801,10 +8801,10 @@ for the overloads with no parameters by those names. + \expects + For the overloads in namespace \tcode{std}, + \tcode{RandomAccessIterator} meets +-the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements} and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. + + \pnum + \effects +@@ -8869,10 +8869,10 @@ for the overloads with no parameters by those names. + \expects + For the overloads in namespace \tcode{std}, + \tcode{RandomAccessIterator} meets +-the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements} and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. + + \pnum + \effects +@@ -8943,10 +8943,10 @@ for the overloads with no parameters by those names. + \range{first}{middle} and \range{middle}{last} are valid ranges. + For the overloads in namespace \tcode{std}, + \tcode{RandomAccessIterator} meets +-the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements} and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. + + \pnum + \effects +@@ -9090,10 +9090,10 @@ is writable\iref{iterator.requirements.general} to \tcode{result_first}. + \expects + For the overloads in namespace \tcode{std}, + \tcode{RandomAccessIterator} meets +-the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements}, ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements}, + the type of \tcode{*result_first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{\-Move\-Assignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. + + \pnum + For iterators \tcode{a1} and \tcode{b1} in \range{first}{last}, and +@@ -9328,10 +9328,10 @@ for the overloads with no parameters by those names. + \range{first}{nth} and \range{nth}{last} are valid ranges. + For the overloads in namespace \tcode{std}, + \tcode{RandomAccessIterator} meets +-the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements}, and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements}, and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. + + \pnum + \effects +@@ -9713,7 +9713,7 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. + \expects + For the overloads in namespace \tcode{std}, + \tcode{ForwardIterator} meets +-the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements}. ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements}. + + \pnum + \effects +@@ -9740,7 +9740,7 @@ Let $N = \tcode{last - first}$: + For the non-parallel algorithm overloads, + exactly $N$ applications of the predicate and projection. + At most $N / 2$ swaps if the type of \tcode{first} meets +- the \oldconcept{BidirectionalIterator} requirements ++ the \oldconceptref{BidirectionalIterator} requirements + for the overloads in namespace \tcode{std} or + models \libconcept{bidirectional_iterator} + for the overloads in namespace \tcode{ranges}, +@@ -9793,10 +9793,10 @@ and let $E(x)$ be \tcode{bool(invoke(\brk{}pred, invoke(proj, $x$)))}. + \expects + For the overloads in namespace \tcode{std}, + \tcode{BidirectionalIterator} meets +-the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements} and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. + + \pnum + \effects +@@ -10193,10 +10193,10 @@ for the overloads with no parameters by those names. + sorted with respect to \tcode{comp} and \tcode{proj}. + For the overloads in namespace \tcode{std}, + \tcode{BidirectionalIterator} meets +-the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements} and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements} and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. + + \pnum + \effects +@@ -10959,10 +10959,10 @@ The range \range{first}{last - 1} + is a valid heap with respect to \tcode{comp} and \tcode{proj}. + For the overloads in namespace \tcode{std}, + \tcode{RandomAccessIterator} meets +-the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements} and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} requirements (\tref{cpp17.moveconstructible}) and +-the \oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}). ++the \oldconceptref{MoveConstructible} requirements (\tref{cpp17.moveconstructible}) and ++the \oldconceptref{MoveAssignable} requirements (\tref{cpp17.moveassignable}). + + \pnum + \effects +@@ -11012,10 +11012,10 @@ The range \range{first}{last} + is a valid non-empty heap with respect to \tcode{comp} and \tcode{proj}. + For the overloads in namespace \tcode{std}, + \tcode{RandomAccessIterator} meets +-the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements} and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. + + \pnum + \effects +@@ -11068,10 +11068,10 @@ for the overloads with no parameters by those names. + \expects + For the overloads in namespace \tcode{std}, + \tcode{RandomAccessIterator} meets +-the \oldconcept{ValueSwap\-pable} requirements\iref{swappable.requirements} and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements} and + the type of \tcode{*first} meets +-the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. + + \pnum + \effects +@@ -11121,10 +11121,10 @@ The range \range{first}{last} is + a valid heap with respect to \tcode{comp} and \tcode{proj}. + For the overloads in namespace \tcode{std}, + \tcode{RandomAccessIterator} meets +-the \oldconcept{ValueSwappable} requirements\iref{swappable.requirements} and ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements} and + the type of \tcode{*first} meets +-the \oldconcept{MoveConst\-ruct\-ible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{Move\-Assign\-able} (\tref{cpp17.moveassignable}) requirements. ++the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) requirements. + + \pnum + \effects +@@ -11311,7 +11311,7 @@ template 0}. + For the overloads in namespace \tcode{std}, +-\tcode{T} meets the \oldconcept{\-Copy\-Constructible} requirements. +-For the first form, \tcode{T} meets the \oldconcept{LessThanComparable} ++\tcode{T} meets the \oldconceptref{CopyConstructible} requirements. ++For the first form, \tcode{T} meets the \oldconceptref{LessThanComparable} + requirements (\tref{cpp17.lessthancomparable}). + + \pnum +@@ -11394,7 +11394,7 @@ template 0}. + For the overloads in namespace \tcode{std}, +-\tcode{T} meets the \oldconcept{\-Copy\-Constructible} requirements. +-For the first form, \tcode{T} meets the \oldconcept{LessThanComparable} ++\tcode{T} meets the \oldconceptref{CopyConstructible} requirements. ++For the first form, \tcode{T} meets the \oldconceptref{LessThanComparable} + requirements (\tref{cpp17.lessthancomparable}). + + \pnum +@@ -11479,7 +11479,7 @@ template 0}. + For the overloads in namespace \tcode{std}, +-\tcode{T} meets the \oldconcept{\-Copy\-Constructible} requirements. +-For the first form, type \tcode{T} meets the \oldconcept{LessThanComparable} ++\tcode{T} meets the \oldconceptref{CopyConstructible} requirements. ++For the first form, type \tcode{T} meets the \oldconceptref{LessThanComparable} + requirements (\tref{cpp17.lessthancomparable}). + + \pnum +@@ -11748,7 +11748,7 @@ for the overloads with no parameter \tcode{proj}. + \expects + \tcode{bool(invoke(comp, invoke(proj, hi), invoke(proj, lo)))} is \tcode{false}. + For the first form, type \tcode{T} +-meets the \oldconcept{LessThan\-Comparable} ++meets the \oldconceptref{LessThanComparable} + requirements (\tref{cpp17.lessthancomparable}). + + \pnum +@@ -11951,7 +11951,7 @@ for overloads with no parameters by those names. + \expects + For the overloads in namespace \tcode{std}, + \tcode{BidirectionalIterator} meets +-the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements}. ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements}. + + \pnum + \effects +@@ -12010,7 +12010,7 @@ for overloads with no parameters by those names. + \expects + For the overloads in namespace \tcode{std}, + \tcode{BidirectionalIterator} meets +-the \oldconcept{Value\-Swappable} requirements\iref{swappable.requirements}. ++the \oldconceptref{ValueSwappable} requirements\iref{swappable.requirements}. + + \pnum + \effects +@@ -12329,8 +12329,8 @@ template + \pnum + \expects + \tcode{T} meets +-the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) +-and \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. ++the \oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}) ++and \oldconceptref{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. + In the range \crange{first}{last}, + \tcode{binary_op} neither modifies elements + nor invalidates iterators or subranges. +@@ -12452,7 +12452,7 @@ are convertible to \tcode{T}. + \expects + \begin{itemize} + \item +- \tcode{T} meets the \oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements. ++ \tcode{T} meets the \oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) requirements. + \item + \tcode{binary_op} neither invalidates iterators or subranges, + nor modifies elements in the range \crange{first}{last}. +@@ -12496,8 +12496,8 @@ template}. + \begin{itemize} + \item + For the overloads with no \tcode{ExecutionPolicy}, +- \tcode{T} meets the \oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) ++ \tcode{T} meets the \oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) + requirements. + \item + For all overloads, in the ranges \crange{first}{last} +diff --git a/source/concepts.tex b/source/concepts.tex +index 3e64abc8..9efb5afa 100644 +--- a/source/concepts.tex ++++ b/source/concepts.tex +@@ -495,7 +495,7 @@ template + template + concept @\deflibconcept{unsigned_integral}@ = @\libconcept{integral}@ && !@\libconcept{signed_integral}@; + template +- concept @\deflibconcept{floating_point}@ = @\libglobalref{is_floating_point_v}@; ++ concept @\deflibconcept{floating_point}@ = is_floating_point_v; + \end{itemdecl} + + \begin{itemdescr} +@@ -747,7 +747,7 @@ template + \begin{itemdescr} + \pnum + \begin{note} +-Unlike the \oldconcept{Destructible} requirements~(\tref{cpp17.destructible}), this ++Unlike the \oldconceptref{Destructible} requirements~(\tref{cpp17.destructible}), this + concept forbids destructors that are potentially throwing, even if a particular + invocation of the destructor does not actually throw. + \end{note} +diff --git a/source/diagnostics.tex b/source/diagnostics.tex +index eee2454e..267f428b 100644 +--- a/source/diagnostics.tex ++++ b/source/diagnostics.tex +@@ -761,9 +761,9 @@ namespace std { + + // \ref{syserr}, system error support + template +- constexpr bool @\libglobal{is_error_code_enum_v}@ = is_error_code_enum::value; ++ constexpr bool @\libglobal{is_error_code_enum_v}@ = @\libglobalref{is_error_code_enum}@::value; + template +- constexpr bool @\libglobal{is_error_condition_enum_v}@ = is_error_condition_enum::value; ++ constexpr bool @\libglobal{is_error_condition_enum_v}@ = @\libglobalref{is_error_condition_enum}@::value; + } + \end{codeblock} + +@@ -774,9 +774,9 @@ Whether or not the \libheader{system_error} implementation + exposes the \libheader{cerrno} macros is unspecified. + + \pnum +-The \tcode{is_error_code_enum} and \tcode{is_error_condition_enum} templates may be ++The \libglobalref{is_error_code_enum} and \libglobalref{is_error_condition_enum} templates may be + specialized for program-defined types to indicate that such types are eligible +-for \tcode{class error_code} and \tcode{class error_condition} implicit ++for \tcode{class \libglobalref{error_code}} and \tcode{class \libglobalref{error_condition}} implicit + conversions, respectively. + + \rSec2[syserr.errcat]{Class \tcode{error_category}} +@@ -801,8 +801,6 @@ even for objects holding the same value. + \indexlibraryglobal{error_category}% + \indexlibraryctor{error_category}% + \indexlibrarydtor{error_category}% +-\indexlibraryglobal{generic_category}% +-\indexlibraryglobal{system_category}% + \begin{codeblock} + namespace std { + class error_category { +@@ -821,8 +819,8 @@ namespace std { + strong_ordering operator<=>(const error_category& rhs) const noexcept; + }; + +- const error_category& generic_category() noexcept; +- const error_category& system_category() noexcept; ++ const error_category& @\libglobal{generic_category}@() noexcept; ++ const error_category& @\libglobal{system_category}@() noexcept; + } + \end{codeblock} + +@@ -1093,7 +1091,7 @@ template + \begin{itemdescr} + \pnum + \constraints +-\tcode{is_error_code_enum_v} is \tcode{true}. ++\tcode{\libglobalref{is_error_code_enum_v}} is \tcode{true}. + + \pnum + \effects +@@ -1126,7 +1124,7 @@ template + \begin{itemdescr} + \pnum + \constraints +-\tcode{is_error_code_enum_v} is \tcode{true}. ++\tcode{\libglobalref{is_error_code_enum_v}} is \tcode{true}. + + \pnum + \effects +diff --git a/source/exec.tex b/source/exec.tex +index 4f7f72b0..4bf25bbd 100644 +--- a/source/exec.tex ++++ b/source/exec.tex +@@ -31,25 +31,25 @@ used in the execution control library. + \capsep + core & + provide core execution functionality, and connection between core components & +- e.g., \tcode{connect}, \tcode{start} \\ ++ e.g., \libglobalref{connect}, \libglobalref{start} \\ + completion functions & + called by senders to announce the completion of the work (success, error, or cancellation) & +- \tcode{set_value}, \tcode{set_error}, \tcode{set_stopped} \\ ++ \libglobalref{set_value}, \libglobalref{set_error}, \libglobalref{set_stopped} \\ + senders & + allow the specialization of the provided sender algorithms & + \begin{itemize} +- \item sender factories (e.g., \tcode{schedule}, \tcode{just}, \tcode{read_env}) +- \item sender adaptors (e.g., \tcode{continues_on}, \tcode{then}, \tcode{let_value}) +- \item sender consumers (e.g., \tcode{sync_wait}) ++ \item sender factories (e.g., \libglobalref{schedule}, \libglobalref{just}, \libglobalref{read_env}) ++ \item sender adaptors (e.g., \libglobalref{continues_on}, \libglobalref{then}, \libglobalref{let_value}) ++ \item sender consumers (e.g., \libglobalref{sync_wait}) + \end{itemize} + \\ + queries & + allow querying different properties of objects & + \begin{itemize} +- \item general queries (e.g., \tcode{get_allocator}, \tcode{get_stop_token}) +- \item environment queries (e.g., \tcode{get_scheduler}, \tcode{get_delegation_scheduler}) +- \item scheduler queries (e.g., \tcode{get_forward_progress_guarantee}) +- \item sender attribute queries (e.g., \tcode{get_completion_scheduler}) ++ \item general queries (e.g., \libglobalref{get_allocator}, \libglobalref{get_stop_token}) ++ \item environment queries (e.g., \tcode{get_scheduler}, \libglobalref{get_delegation_scheduler}) ++ \item scheduler queries (e.g., \libglobalref{get_forward_progress_guarantee}) ++ \item sender attribute queries (e.g., \libglobalref{get_completion_scheduler}) + \end{itemize} + \\ + \end{floattable} +diff --git a/source/future.tex b/source/future.tex +index ac4ac504..dffbe172 100644 +--- a/source/future.tex ++++ b/source/future.tex +@@ -359,7 +359,7 @@ template struct is_pod; + + \pnum + \remarks +-\tcode{is_pod} is a \oldconcept{UnaryTypeTrait}\iref{meta.rqmts} ++\tcode{is_pod} is a \oldconceptref{UnaryTypeTrait}\iref{meta.rqmts} + with a base characteristic of \tcode{true_type} + if \tcode{T} is a POD type, + and \tcode{false_type} otherwise. +@@ -543,7 +543,7 @@ Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T} + If the expression \tcode{TS::value} is well-formed + when treated as an \deflink{unevaluated operand}{expr.context}, + then specializations of each of the two templates meet +-the \oldconcept{TransformationTrait} requirements with a base characteristic of ++the \oldconceptref{TransformationTrait} requirements with a base characteristic of + \tcode{integral_constant}. + Otherwise, they have no member \tcode{value}. + +@@ -571,7 +571,7 @@ template struct tuple_element; + Let \tcode{TE} denote \tcode{tuple_element_t} + of the cv-unqualified type \tcode{T}. + Then specializations of each of the two templates meet +-the \oldconcept{TransformationTrait} requirements ++the \oldconceptref{TransformationTrait} requirements + with a member typedef \tcode{type} that names the following type: + \begin{itemize} + \item for the first specialization, \tcode{volatile TE}, and +@@ -611,7 +611,7 @@ template struct variant_size; + Let \tcode{VS} denote \tcode{variant_size} + of the cv-unqualified type \tcode{T}. + Then specializations of each of the two templates meet +-the \oldconcept{UnaryTypeTrait} requirements ++the \oldconceptref{UnaryTypeTrait} requirements + with a base characteristic of \tcode{integral_constant}. + \end{itemdescr} + +@@ -625,7 +625,7 @@ template struct variant_alternative; + Let \tcode{VA} denote \tcode{variant_alternative} + of the cv-unqualified type \tcode{T}. + Then specializations of each of the two templates meet +-the \oldconcept{TransformationTrait} requirements ++the \oldconceptref{TransformationTrait} requirements + with a member typedef \tcode{type} that names the following type: + \begin{itemize} + \item for the first specialization, \tcode{volatile VA::type}, and +diff --git a/source/iostreams.tex b/source/iostreams.tex +index a046490d..11bf87e7 100644 +--- a/source/iostreams.tex ++++ b/source/iostreams.tex +@@ -1684,10 +1684,10 @@ An \tcode{fpos} type specifies file position information. + It holds a state object + whose type is equal to the template parameter \tcode{stateT}. + Type \tcode{stateT} shall meet +-the \oldconcept{DefaultConstructible} (\tref{cpp17.defaultconstructible}), +-\oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}), +-\oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}), and +-\oldconcept{Destructible} (\tref{cpp17.destructible}) requirements. ++the \oldconceptref{DefaultConstructible} (\tref{cpp17.defaultconstructible}), ++\oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}), ++\oldconceptref{CopyAssignable} (\tref{cpp17.copyassignable}), and ++\oldconceptref{Destructible} (\tref{cpp17.destructible}) requirements. + If \tcode{is_trivially_copy_constructible_v} is \tcode{true}, + then \tcode{fpos} has a trivial copy constructor. + If \tcode{is_trivially_copy_assignable_v} is \tcode{true}, +@@ -1695,11 +1695,11 @@ then \tcode{fpos} has a trivial copy assignment operator. + If \tcode{is_trivially_destructible_v} is \tcode{true}, + then \tcode{fpos} has a trivial destructor. + All specializations of \tcode{fpos} meet +-the \oldconcept{DefaultConstructible}, +-\oldconcept{CopyConstructible}, +-\oldconcept{CopyAssignable}, +-\oldconcept{Destructible}, +-and \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) requirements. ++the \oldconceptref{DefaultConstructible}, ++\oldconceptref{CopyConstructible}, ++\oldconceptref{CopyAssignable}, ++\oldconceptref{Destructible}, ++and \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) requirements. + In addition, the expressions shown in \tref{fpos.operations} + are valid and have the indicated semantics. + In that table, +@@ -12960,7 +12960,7 @@ namespace std { + + \pnum + \tcode{Allocator} shall meet +-the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. ++the \oldconceptref{Allocator} requirements\iref{allocator.requirements.general}. + + \pnum + \begin{example} +@@ -13253,7 +13253,7 @@ unless \tcode{EcharT} is one of the encoded character types. + + \pnum + Template parameters named \tcode{InputIterator} shall meet the +-\oldconcept{InputIterator} requirements\iref{input.iterators} and shall ++\oldconceptref{InputIterator} requirements\iref{input.iterators} and shall + have a value type that is one of the encoded character types. + + \pnum +@@ -13267,7 +13267,7 @@ they are not included as permitted types. + + \pnum + Template parameters named \tcode{Allocator} shall meet +-the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. ++the \oldconceptref{Allocator} requirements\iref{allocator.requirements.general}. + + \rSec2[fs.filesystem.syn]{Header \tcode{} synopsis} + +@@ -14086,7 +14086,7 @@ shall be one of: + \item \tcode{basic_string_view}. A function + argument \tcode{const Source\&} \tcode{source} shall have an + effective range \range{source.begin()}{source.end()}. +-\item A type meeting the \oldconcept{InputIterator} requirements that iterates over an NTCTS\@. ++\item A type meeting the \oldconceptref{InputIterator} requirements that iterates over an NTCTS\@. + The value type shall be an encoded character type. A function argument + \tcode{const Source\&} \tcode{source} shall have an effective range + \range{source}{end} where \tcode{end} is the first +@@ -16591,7 +16591,7 @@ namespace std::filesystem { + + \pnum + \tcode{directory_iterator} meets the +-\oldconcept{InputIterator} requirements\iref{input.iterators}. ++\oldconceptref{InputIterator} requirements\iref{input.iterators}. + + \pnum + If an iterator of type \tcode{directory_iterator} reports an error or +diff --git a/source/lib-intro.tex b/source/lib-intro.tex +index 6cb3cbba..57d15fbb 100644 +--- a/source/lib-intro.tex ++++ b/source/lib-intro.tex +@@ -1868,7 +1868,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. + }\\ + \end{oldconcepttable} + +-\begin{oldconcepttable}{CopyConstructible}{ (in addition to \oldconcept{MoveConstructible})}{cpp17.copyconstructible} ++\begin{oldconcepttable}{CopyConstructible}{ (in addition to \oldconceptref{MoveConstructible})}{cpp17.copyconstructible} + {p{1in}p{4.15in}} + \topline + \hdstyle{Expression} & \hdstyle{Post-condition} \\ \capsep +@@ -1895,7 +1895,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. + }\\ + \end{oldconcepttable} + +-\begin{oldconcepttable}{CopyAssignable}{ (in addition to \oldconcept{MoveAssignable})}{cpp17.copyassignable} ++\begin{oldconcepttable}{CopyAssignable}{ (in addition to \oldconceptref{MoveAssignable})}{cpp17.copyassignable} + {p{1in}p{1in}p{1in}p{1.9in}} + \topline + \hdstyle{Expression} & \hdstyle{Return type} & \hdstyle{Return value} & \hdstyle{Post-condition} \\ \capsep +@@ -1909,7 +1909,7 @@ If \tcode{a == b} and \tcode{b == c}, then \tcode{a == c}. + \tcode{a.\~T()} & No exception is propagated. \\ \rowsep + \multicolumn{2}{|l|}{ + \begin{tailnote} +- Array types and non-object types are not \oldconcept{Destructible}. ++ Array types and non-object types are not \oldconceptref{Destructible}. + \end{tailnote} + } \\ + \end{oldconcepttable} +@@ -1988,7 +1988,7 @@ void value_swap(T&& t, U&& u) { + // for rvalues and lvalues + } + +-// Preconditions: \tcode{T} meets the \oldconcept{Swappable} requirements. ++// Preconditions: \tcode{T} meets the \oldconceptref{Swappable} requirements. + template + void lv_swap(T& t1, T& t2) { + using std::swap; +@@ -2025,9 +2025,9 @@ int main() { + A \oldconcept{NullablePointer} type is a pointer-like type that supports null values. + A type \tcode{P} meets the \oldconcept{\-Nullable\-Pointer} requirements if + \begin{itemize} +-\item \tcode{P} meets the \oldconcept{EqualityComparable}, +-\oldconcept{DefaultConstructible}, \oldconcept{CopyConstructible}, \oldconcept{\-Copy\-Assign\-able}, +-\oldconcept{Swappable}, and \oldconcept{Destructible} requirements, ++\item \tcode{P} meets the \oldconceptref{EqualityComparable}, ++\oldconceptref{DefaultConstructible}, \oldconceptref{CopyConstructible}, \oldconcept{\-Copy\-Assign\-able}, ++\oldconceptref{Swappable}, and \oldconceptref{Destructible} requirements, + + \item the expressions shown in \tref{cpp17.nullablepointer} are + valid and have the indicated semantics, and +@@ -2103,8 +2103,8 @@ a value of type (possibly const) \tcode{std::nullptr_t}. + A type \tcode{H} meets the \defnoldconcept{Hash} requirements if + \begin{itemize} + \item it is a function object type\iref{function.objects}, +-\item it meets the \oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) and +- \oldconcept{Destructible} (\tref{cpp17.destructible}) requirements, and ++\item it meets the \oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}) and ++ \oldconceptref{Destructible} (\tref{cpp17.destructible}) requirements, and + \item the expressions shown in \tref{cpp17.hash} + are valid and have the indicated semantics. + \end{itemize} +@@ -2788,7 +2788,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. + \tcode{true_type} only if an allocator of type \tcode{X} should be copied + when the client container is copy-assigned; + if so, \tcode{X} shall meet +-the \oldconcept{CopyAssignable} requirements (\tref{cpp17.copyassignable}) and ++the \oldconceptref{CopyAssignable} requirements (\tref{cpp17.copyassignable}) and + the copy operation shall not throw exceptions. + + \pnum +@@ -2810,7 +2810,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. + \tcode{true_type} only if an allocator of type \tcode{X} should be moved + when the client container is move-assigned; + if so, \tcode{X} shall meet +-the \oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}) and ++the \oldconceptref{MoveAssignable} requirements (\tref{cpp17.moveassignable}) and + the move operation shall not throw exceptions. + + \pnum +@@ -2832,7 +2832,7 @@ Identical to or derived from \tcode{true_type} or \tcode{false_type}. + \tcode{true_type} only if an allocator of type \tcode{X} should be swapped + when the client container is swapped; + if so, +-\tcode{X} shall meet the \oldconcept{Swappable} requirements\iref{swappable.requirements} and ++\tcode{X} shall meet the \oldconceptref{Swappable} requirements\iref{swappable.requirements} and + the \tcode{swap} operation shall not throw exceptions. + + \pnum +@@ -2862,7 +2862,7 @@ Default: \tcode{is_empty::type} + + \pnum + An allocator type \tcode{X} shall meet the +-\oldconcept{CopyConstructible} requirements (\tref{cpp17.copyconstructible}). ++\oldconceptref{CopyConstructible} requirements (\tref{cpp17.copyconstructible}). + The \tcode{XX::pointer}, \tcode{XX::const_pointer}, \tcode{XX::void_pointer}, and + \tcode{XX::const_void_pointer} types shall meet the + \oldconcept{Nullable\-Pointer} requirements (\tref{cpp17.nullablepointer}). +@@ -2870,7 +2870,7 @@ No constructor, + comparison operator function, copy operation, move operation, or swap operation on + these pointer types shall exit via an exception. \tcode{XX::pointer} and \tcode{XX::const_pointer} shall also + meet the requirements for +-a \oldconcept{RandomAccessIterator}\iref{random.access.iterators} and ++a \oldconceptref{RandomAccessIterator}\iref{random.access.iterators} and + the additional requirement that, when \tcode{p} and \tcode{(p + n)} are + dereferenceable pointer values for some integral value \tcode{n}, + \begin{codeblock} +diff --git a/source/memory.tex b/source/memory.tex +index 9056b38e..ceb201b5 100644 +--- a/source/memory.tex ++++ b/source/memory.tex +@@ -1183,7 +1183,7 @@ The \tcode{allocator_arg_t} struct is an empty class type used as a unique type + disambiguate constructor and function overloading. Specifically, several types (see + \tcode{tuple}~\ref{tuple}) have constructors with \tcode{allocator_arg_t} as the first + argument, immediately followed by an argument of a type that meets the +-\oldconcept{Allocator} requirements\iref{allocator.requirements.general}. ++\oldconceptref{Allocator} requirements\iref{allocator.requirements.general}. + + \rSec2[allocator.uses]{\tcode{uses_allocator}} + +@@ -1198,7 +1198,7 @@ template struct uses_allocator; + \pnum + \remarks + Automatically detects whether \tcode{T} has a nested \tcode{allocator_type} that +-is convertible from \tcode{Alloc}. Meets the \oldconcept{BinaryTypeTrait} ++is convertible from \tcode{Alloc}. Meets the \oldconceptref{BinaryTypeTrait} + requirements\iref{meta.rqmts}. The implementation shall provide a definition that is + derived from \tcode{true_type} if the \grammarterm{qualified-id} \tcode{T::allocator_type} + is valid and denotes a type\iref{temp.deduct} and +@@ -2148,8 +2148,8 @@ deleter before such replacement is considered completed. + Each object of a type \tcode{U} instantiated from the \tcode{unique_ptr} template + specified in \ref{unique.ptr} has the strict ownership semantics, specified above, + of a unique pointer. In partial satisfaction of these semantics, each such \tcode{U} +-is \oldconcept{MoveConstructible} and \oldconcept{MoveAssignable}, but is not +-\oldconcept{CopyConstructible} nor \oldconcept{CopyAssignable}. ++is \oldconceptref{MoveConstructible} and \oldconceptref{MoveAssignable}, but is not ++\oldconceptref{CopyConstructible} nor \oldconceptref{CopyAssignable}. + The template parameter \tcode{T} of \tcode{unique_ptr} may be an incomplete type. + + \pnum +@@ -2336,7 +2336,7 @@ pointer as appropriate for that deleter. + + \pnum + If the deleter's type \tcode{D} is not a reference type, \tcode{D} shall meet +-the \oldconcept{Destructible} requirements (\tref{cpp17.destructible}). ++the \oldconceptref{Destructible} requirements (\tref{cpp17.destructible}). + + \pnum + If the \grammarterm{qualified-id} \tcode{remove_reference_t::pointer} is valid and denotes a +@@ -2344,7 +2344,7 @@ type\iref{temp.deduct}, then \tcode{unique_ptr::pointer} shall be a synonym for \tcode{remove_reference_t::pointer}. Otherwise + \tcode{unique_ptr::pointer} shall be a synonym for \tcode{element_type*}. The type \tcode{unique_ptr::pointer} shall +-meet the \oldconcept{NullablePointer} requirements (\tref{cpp17.nullablepointer}). ++meet the \oldconceptref{NullablePointer} requirements (\tref{cpp17.nullablepointer}). + + \pnum + \begin{example} +@@ -2370,7 +2370,7 @@ constexpr unique_ptr(nullptr_t) noexcept; + + \pnum + \expects +-\tcode{D} meets the \oldconcept{DefaultConstructible} requirements (\tref{cpp17.defaultconstructible}), ++\tcode{D} meets the \oldconceptref{DefaultConstructible} requirements (\tref{cpp17.defaultconstructible}), + and that construction does not throw an exception. + + \pnum +@@ -2397,7 +2397,7 @@ constexpr explicit unique_ptr(type_identity_t p) noexcept; + + \pnum + \expects +-\tcode{D} meets the \oldconcept{DefaultConstructible} requirements (\tref{cpp17.defaultconstructible}), ++\tcode{D} meets the \oldconceptref{DefaultConstructible} requirements (\tref{cpp17.defaultconstructible}), + and that construction does not throw an exception. + + \pnum +@@ -2426,10 +2426,10 @@ constexpr unique_ptr(type_identity_t p, remove_reference_t&& d) noex + \pnum + \expects + For the first constructor, if \tcode{D} is not a reference type, +-\tcode{D} meets the \oldconcept{CopyConstructible} requirements and ++\tcode{D} meets the \oldconceptref{CopyConstructible} requirements and + such construction does not exit via an exception. + For the second constructor, if \tcode{D} is not a reference type, +-\tcode{D} meets the \oldconcept{MoveConstructible} requirements and ++\tcode{D} meets the \oldconceptref{MoveConstructible} requirements and + such construction does not exit via an exception. + + \pnum +@@ -2454,8 +2454,8 @@ the second constructor is defined as deleted. + \begin{example} + \begin{codeblock} + D d; +-unique_ptr p1(new int, D()); // \tcode{D} must be \oldconcept{MoveConstructible} +-unique_ptr p2(new int, d); // \tcode{D} must be \oldconcept{CopyConstructible} ++unique_ptr p1(new int, D()); // \tcode{D} must be \oldconceptref{MoveConstructible} ++unique_ptr p2(new int, d); // \tcode{D} must be \oldconceptref{CopyConstructible} + unique_ptr p3(new int, d); // \tcode{p3} holds a reference to \tcode{d} + unique_ptr p4(new int, D()); // error: rvalue deleter object combined + // with reference deleter type +@@ -2476,7 +2476,7 @@ constexpr unique_ptr(unique_ptr&& u) noexcept; + \pnum + \expects + If \tcode{D} is not a reference type, +-\tcode{D} meets the \oldconcept{MoveConstructible} ++\tcode{D} meets the \oldconceptref{MoveConstructible} + requirements (\tref{cpp17.moveconstructible}). + Construction + of the deleter from an rvalue of type \tcode{D} does not +@@ -2585,10 +2585,10 @@ constexpr unique_ptr& operator=(unique_ptr&& u) noexcept; + \pnum + \expects + If \tcode{D} is not a reference type, \tcode{D} meets the +-\oldconcept{MoveAssignable} requirements (\tref{cpp17.moveassignable}) and assignment ++\oldconceptref{MoveAssignable} requirements (\tref{cpp17.moveassignable}) and assignment + of the deleter from an rvalue of type \tcode{D} does not throw an exception. + Otherwise, \tcode{D} is a reference type; +-\tcode{remove_reference_t} meets the \oldconcept{CopyAssignable} ++\tcode{remove_reference_t} meets the \oldconceptref{CopyAssignable} + requirements and assignment of the deleter from an + lvalue of type \tcode{D} does not throw an exception. + +@@ -3490,8 +3490,8 @@ namespace std { + \end{codeblock} + + \pnum +-Specializations of \tcode{shared_ptr} shall be \oldconcept{CopyConstructible}, +-\oldconcept{CopyAssignable}, and \oldconcept{\-Less\-Than\-Comparable}, allowing their use in standard ++Specializations of \tcode{shared_ptr} shall be \oldconceptref{CopyConstructible}, ++\oldconceptref{CopyAssignable}, and \oldconceptref{LessThanComparable}, allowing their use in standard + containers. Specializations of \tcode{shared_ptr} shall be + contextually convertible to \tcode{bool}, + allowing their use in boolean expressions and declarations in conditions. +@@ -3636,7 +3636,7 @@ initialized with \tcode{std::move(d)} do not throw exceptions. + The expression \tcode{d(p)} + has well-defined behavior and does not throw exceptions. + \tcode{A} meets +-the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. ++the \oldconceptref{Allocator} requirements\iref{allocator.requirements.general}. + + \pnum + \effects +@@ -4156,7 +4156,7 @@ template + \pnum + \expects + \tcode{A} meets +-the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. ++the \oldconceptref{Allocator} requirements\iref{allocator.requirements.general}. + + \pnum + \effects +@@ -4812,8 +4812,8 @@ namespace std { + \end{codeblock} + + \pnum +-Specializations of \tcode{weak_ptr} shall be \oldconcept{CopyConstructible} and +-\oldconcept{CopyAssignable}, allowing their use in standard ++Specializations of \tcode{weak_ptr} shall be \oldconceptref{CopyConstructible} and ++\oldconceptref{CopyAssignable}, allowing their use in standard + containers. The template parameter \tcode{T} of \tcode{weak_ptr} may be an + incomplete type. + +@@ -5392,7 +5392,7 @@ namespace std { + \end{codeblock} + + \pnum +-\tcode{Pointer} shall meet the \oldconcept{NullablePointer} requirements. ++\tcode{Pointer} shall meet the \oldconceptref{NullablePointer} requirements. + If \tcode{Smart} is a specialization of \tcode{shared_ptr} and + \tcode{sizeof...(Args) == 0}, + the program is ill-formed. +@@ -5632,7 +5632,7 @@ namespace std { + \end{codeblock} + + \pnum +-\tcode{Pointer} shall meet the \oldconcept{NullablePointer} requirements. ++\tcode{Pointer} shall meet the \oldconceptref{NullablePointer} requirements. + If \tcode{Smart} is a specialization of \tcode{shared_ptr}, + the program is ill-formed. + \begin{note} +diff --git a/source/meta.tex b/source/meta.tex +index 78c07a37..e9244962 100644 +--- a/source/meta.tex ++++ b/source/meta.tex +@@ -136,12 +136,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal + A \defnoldconcept{UnaryTypeTrait} describes a property + of a type. It shall be a class template that takes one template type + argument and, optionally, additional arguments that help define the +-property being described. It shall be \oldconcept{DefaultConstructible}, +-\oldconcept{CopyConstructible}, ++property being described. It shall be \oldconceptref{DefaultConstructible}, ++\oldconceptref{CopyConstructible}, + and publicly and unambiguously derived, directly or indirectly, from + its \defn{base characteristic}, which is + a specialization of the template +-\tcode{integral_constant}\iref{meta.help}, with ++\libglobalref{integral_constant}, with + the arguments to the template \tcode{integral_constant} determined by the + requirements for the particular property being described. + The member names of the base characteristic shall not be hidden and shall be +@@ -152,12 +152,12 @@ A \defnoldconcept{BinaryTypeTrait} describes a + relationship between two types. It shall be a class template that + takes two template type arguments and, optionally, additional + arguments that help define the relationship being described. It shall +-be \oldconcept{DefaultConstructible}, \oldconcept{CopyConstructible}, ++be \oldconceptref{DefaultConstructible}, \oldconceptref{CopyConstructible}, + and publicly and unambiguously derived, directly or + indirectly, from + its \term{base characteristic}, which is a specialization + of the template +-\tcode{integral_constant}\iref{meta.help}, with ++\libglobalref{integral_constant}, with + the arguments to the template \tcode{integral_constant} determined by the + requirements for the particular relationship being described. + The member names of the base characteristic shall not be hidden and shall be +@@ -328,17 +328,17 @@ namespace std { + template struct add_cv; + + template +- using @\libglobal{remove_const_t}@ = remove_const::type; ++ using @\libglobal{remove_const_t}@ = @\libglobalref{remove_const}@::type; + template +- using @\libglobal{remove_volatile_t}@ = remove_volatile::type; ++ using @\libglobal{remove_volatile_t}@ = @\libglobalref{remove_volatile}@::type; + template +- using @\libglobal{remove_cv_t}@ = remove_cv::type; ++ using @\libglobal{remove_cv_t}@ = @\libglobalref{remove_cv}@::type; + template +- using @\libglobal{add_const_t}@ = add_const::type; ++ using @\libglobal{add_const_t}@ = @\libglobalref{add_const}@::type; + template +- using @\libglobal{add_volatile_t}@ = add_volatile::type; ++ using @\libglobal{add_volatile_t}@ = @\libglobalref{add_volatile}@::type; + template +- using @\libglobal{add_cv_t}@ = add_cv::type; ++ using @\libglobal{add_cv_t}@ = @\libglobalref{add_cv}@::type; + + // \ref{meta.trans.ref}, reference modifications + template struct remove_reference; +@@ -346,38 +346,38 @@ namespace std { + template struct add_rvalue_reference; + + template +- using @\libglobal{remove_reference_t}@ = remove_reference::type; ++ using @\libglobal{remove_reference_t}@ = @\libglobalref{remove_reference}@::type; + template +- using @\libglobal{add_lvalue_reference_t}@ = add_lvalue_reference::type; ++ using @\libglobal{add_lvalue_reference_t}@ = @\libglobalref{add_lvalue_reference}@::type; + template +- using @\libglobal{add_rvalue_reference_t}@ = add_rvalue_reference::type; ++ using @\libglobal{add_rvalue_reference_t}@ = @\libglobalref{add_rvalue_reference}@::type; + + // \ref{meta.trans.sign}, sign modifications + template struct make_signed; + template struct make_unsigned; + + template +- using @\libglobal{make_signed_t}@ = make_signed::type; ++ using @\libglobal{make_signed_t}@ = @\libglobalref{make_signed}@::type; + template +- using @\libglobal{make_unsigned_t}@ = make_unsigned::type; ++ using @\libglobal{make_unsigned_t}@ = @\libglobalref{make_unsigned}@::type; + + // \ref{meta.trans.arr}, array modifications + template struct remove_extent; + template struct remove_all_extents; + + template +- using @\libglobal{remove_extent_t}@ = remove_extent::type; ++ using @\libglobal{remove_extent_t}@ = @\libglobalref{remove_extent}@::type; + template +- using @\libglobal{remove_all_extents_t}@ = remove_all_extents::type; ++ using @\libglobal{remove_all_extents_t}@ = @\libglobalref{remove_all_extents}@::type; + + // \ref{meta.trans.ptr}, pointer modifications + template struct remove_pointer; + template struct add_pointer; + + template +- using @\libglobal{remove_pointer_t}@ = remove_pointer::type; ++ using @\libglobal{remove_pointer_t}@ = @\libglobalref{remove_pointer}@::type; + template +- using @\libglobal{add_pointer_t}@ = add_pointer::type; ++ using @\libglobal{add_pointer_t}@ = @\libglobalref{add_pointer}@::type; + + // \ref{meta.trans.other}, other transformations + template struct type_identity; +@@ -396,29 +396,29 @@ namespace std { + template struct unwrap_ref_decay; + + template +- using @\libglobal{type_identity_t}@ = type_identity::type; ++ using @\libglobal{type_identity_t}@ = @\libglobalref{type_identity}@::type; + template +- using @\libglobal{remove_cvref_t}@ = remove_cvref::type; ++ using @\libglobal{remove_cvref_t}@ = @\libglobalref{remove_cvref}@::type; + template +- using @\libglobal{decay_t}@ = decay::type; ++ using @\libglobal{decay_t}@ = @\libglobalref{decay}@::type; + template +- using @\libglobal{enable_if_t}@ = enable_if::type; ++ using @\libglobal{enable_if_t}@ = @\libglobalref{enable_if}@::type; + template +- using @\libglobal{conditional_t}@ = conditional::type; ++ using @\libglobal{conditional_t}@ = @\libglobalref{conditional}@::type; + template +- using @\libglobal{common_type_t}@ = common_type::type; ++ using @\libglobal{common_type_t}@ = @\libglobalref{common_type}@::type; + template +- using @\libglobal{common_reference_t}@ = common_reference::type; ++ using @\libglobal{common_reference_t}@ = @\libglobalref{common_reference}@::type; + template +- using @\libglobal{underlying_type_t}@ = underlying_type::type; ++ using @\libglobal{underlying_type_t}@ = @\libglobalref{underlying_type}@::type; + template +- using @\libglobal{invoke_result_t}@ = invoke_result::type; ++ using @\libglobal{invoke_result_t}@ = @\libglobalref{invoke_result}@::type; + template +- using @\libglobal{apply_result_t}@ = apply_result::type; ++ using @\libglobal{apply_result_t}@ = @\libglobalref{apply_result}@::type; + template +- using @\libglobal{unwrap_reference_t}@ = unwrap_reference::type; ++ using @\libglobal{unwrap_reference_t}@ = @\libglobalref{unwrap_reference}@::type; + template +- using @\libglobal{unwrap_ref_decay_t}@ = unwrap_ref_decay::type; ++ using @\libglobal{unwrap_ref_decay_t}@ = @\libglobalref{unwrap_ref_decay}@::type; + template + using @\libglobal{void_t}@ = void; + +@@ -429,185 +429,185 @@ namespace std { + + // \ref{meta.unary.cat}, primary type categories + template +- constexpr bool @\libglobal{is_void_v}@ = is_void::value; ++ constexpr bool @\libglobal{is_void_v}@ = @\libglobalref{is_void}@::value; + template +- constexpr bool @\libglobal{is_null_pointer_v}@ = is_null_pointer::value; ++ constexpr bool @\libglobal{is_null_pointer_v}@ = @\libglobalref{is_null_pointer}@::value; + template +- constexpr bool @\libglobal{is_integral_v}@ = is_integral::value; ++ constexpr bool @\libglobal{is_integral_v}@ = @\libglobalref{is_integral}@::value; + template +- constexpr bool @\libglobal{is_floating_point_v}@ = is_floating_point::value; ++ constexpr bool @\libglobal{is_floating_point_v}@ = @\libglobalref{is_floating_point}@::value; + template +- constexpr bool @\libglobal{is_array_v}@ = is_array::value; ++ constexpr bool @\libglobal{is_array_v}@ = @\libglobalref{is_array}@::value; + template +- constexpr bool @\libglobal{is_pointer_v}@ = is_pointer::value; ++ constexpr bool @\libglobal{is_pointer_v}@ = @\libglobalref{is_pointer}@::value; + template +- constexpr bool @\libglobal{is_lvalue_reference_v}@ = is_lvalue_reference::value; ++ constexpr bool @\libglobal{is_lvalue_reference_v}@ = @\libglobalref{is_lvalue_reference}@::value; + template +- constexpr bool @\libglobal{is_rvalue_reference_v}@ = is_rvalue_reference::value; ++ constexpr bool @\libglobal{is_rvalue_reference_v}@ = @\libglobalref{is_rvalue_reference}@::value; + template +- constexpr bool @\libglobal{is_member_object_pointer_v}@ = is_member_object_pointer::value; ++ constexpr bool @\libglobal{is_member_object_pointer_v}@ = @\libglobalref{is_member_object_pointer}@::value; + template +- constexpr bool @\libglobal{is_member_function_pointer_v}@ = is_member_function_pointer::value; ++ constexpr bool @\libglobal{is_member_function_pointer_v}@ = @\libglobalref{is_member_function_pointer}@::value; + template +- constexpr bool @\libglobal{is_enum_v}@ = is_enum::value; ++ constexpr bool @\libglobal{is_enum_v}@ = @\libglobalref{is_enum}@::value; + template +- constexpr bool @\libglobal{is_union_v}@ = is_union::value; ++ constexpr bool @\libglobal{is_union_v}@ = @\libglobalref{is_union}@::value; + template +- constexpr bool @\libglobal{is_class_v}@ = is_class::value; ++ constexpr bool @\libglobal{is_class_v}@ = @\libglobalref{is_class}@::value; + template +- constexpr bool @\libglobal{is_function_v}@ = is_function::value; ++ constexpr bool @\libglobal{is_function_v}@ = @\libglobalref{is_function}@::value; + template +- constexpr bool @\libglobal{is_reflection_v}@ = is_reflection::value; ++ constexpr bool @\libglobal{is_reflection_v}@ = @\libglobalref{is_reflection}@::value; + + // \ref{meta.unary.comp}, composite type categories + template +- constexpr bool @\libglobal{is_reference_v}@ = is_reference::value; ++ constexpr bool @\libglobal{is_reference_v}@ = @\libglobalref{is_reference}@::value; + template +- constexpr bool @\libglobal{is_arithmetic_v}@ = is_arithmetic::value; ++ constexpr bool @\libglobal{is_arithmetic_v}@ = @\libglobalref{is_arithmetic}@::value; + template +- constexpr bool @\libglobal{is_fundamental_v}@ = is_fundamental::value; ++ constexpr bool @\libglobal{is_fundamental_v}@ = @\libglobalref{is_fundamental}@::value; + template +- constexpr bool @\libglobal{is_object_v}@ = is_object::value; ++ constexpr bool @\libglobal{is_object_v}@ = @\libglobalref{is_object}@::value; + template +- constexpr bool @\libglobal{is_scalar_v}@ = is_scalar::value; ++ constexpr bool @\libglobal{is_scalar_v}@ = @\libglobalref{is_scalar}@::value; + template +- constexpr bool @\libglobal{is_compound_v}@ = is_compound::value; ++ constexpr bool @\libglobal{is_compound_v}@ = @\libglobalref{is_compound}@::value; + template +- constexpr bool @\libglobal{is_member_pointer_v}@ = is_member_pointer::value; ++ constexpr bool @\libglobal{is_member_pointer_v}@ = @\libglobalref{is_member_pointer}@::value; + + // \ref{meta.unary.prop}, type properties + template +- constexpr bool @\libglobal{is_const_v}@ = is_const::value; ++ constexpr bool @\libglobal{is_const_v}@ = @\libglobalref{is_const}@::value; + template +- constexpr bool @\libglobal{is_volatile_v}@ = is_volatile::value; ++ constexpr bool @\libglobal{is_volatile_v}@ = @\libglobalref{is_volatile}@::value; + template +- constexpr bool @\libglobal{is_trivially_copyable_v}@ = is_trivially_copyable::value; ++ constexpr bool @\libglobal{is_trivially_copyable_v}@ = @\libglobalref{is_trivially_copyable}@::value; + template +- constexpr bool @\libglobal{is_standard_layout_v}@ = is_standard_layout::value; ++ constexpr bool @\libglobal{is_standard_layout_v}@ = @\libglobalref{is_standard_layout}@::value; + template + constexpr bool @\libglobal{is_empty_v}@ = is_empty::value; + template +- constexpr bool @\libglobal{is_polymorphic_v}@ = is_polymorphic::value; ++ constexpr bool @\libglobal{is_polymorphic_v}@ = @\libglobalref{is_polymorphic}@::value; + template +- constexpr bool @\libglobal{is_abstract_v}@ = is_abstract::value; ++ constexpr bool @\libglobal{is_abstract_v}@ = @\libglobalref{is_abstract}@::value; + template +- constexpr bool @\libglobal{is_final_v}@ = is_final::value; ++ constexpr bool @\libglobal{is_final_v}@ = @\libglobalref{is_final}@::value; + template +- constexpr bool @\libglobal{is_aggregate_v}@ = is_aggregate::value; ++ constexpr bool @\libglobal{is_aggregate_v}@ = @\libglobalref{is_aggregate}@::value; + template +- constexpr bool @\libglobal{is_structural_v}@ = is_structural::value; ++ constexpr bool @\libglobal{is_structural_v}@ = @\libglobalref{is_structural}@::value; + template + constexpr bool @\libglobal{is_signed_v}@ = is_signed::value; + template +- constexpr bool @\libglobal{is_unsigned_v}@ = is_unsigned::value; ++ constexpr bool @\libglobal{is_unsigned_v}@ = @\libglobalref{is_unsigned}@::value; + template +- constexpr bool @\libglobal{is_bounded_array_v}@ = is_bounded_array::value; ++ constexpr bool @\libglobal{is_bounded_array_v}@ = @\libglobalref{is_bounded_array}@::value; + template +- constexpr bool @\libglobal{is_unbounded_array_v}@ = is_unbounded_array::value; ++ constexpr bool @\libglobal{is_unbounded_array_v}@ = @\libglobalref{is_unbounded_array}@::value; + template +- constexpr bool @\libglobal{is_scoped_enum_v}@ = is_scoped_enum::value; ++ constexpr bool @\libglobal{is_scoped_enum_v}@ = @\libglobalref{is_scoped_enum}@::value; + template +- constexpr bool @\libglobal{is_constructible_v}@ = is_constructible::value; ++ constexpr bool @\libglobal{is_constructible_v}@ = @\libglobalref{is_constructible}@::value; + template +- constexpr bool @\libglobal{is_default_constructible_v}@ = is_default_constructible::value; ++ constexpr bool @\libglobal{is_default_constructible_v}@ = @\libglobalref{is_default_constructible}@::value; + template +- constexpr bool @\libglobal{is_copy_constructible_v}@ = is_copy_constructible::value; ++ constexpr bool @\libglobal{is_copy_constructible_v}@ = @\libglobalref{is_copy_constructible}@::value; + template +- constexpr bool @\libglobal{is_move_constructible_v}@ = is_move_constructible::value; ++ constexpr bool @\libglobal{is_move_constructible_v}@ = @\libglobalref{is_move_constructible}@::value; + template +- constexpr bool @\libglobal{is_assignable_v}@ = is_assignable::value; ++ constexpr bool @\libglobal{is_assignable_v}@ = @\libglobalref{is_assignable}@::value; + template +- constexpr bool @\libglobal{is_copy_assignable_v}@ = is_copy_assignable::value; ++ constexpr bool @\libglobal{is_copy_assignable_v}@ = @\libglobalref{is_copy_assignable}@::value; + template +- constexpr bool @\libglobal{is_move_assignable_v}@ = is_move_assignable::value; ++ constexpr bool @\libglobal{is_move_assignable_v}@ = @\libglobalref{is_move_assignable}@::value; + template +- constexpr bool @\libglobal{is_swappable_with_v}@ = is_swappable_with::value; ++ constexpr bool @\libglobal{is_swappable_with_v}@ = @\libglobalref{is_swappable_with}@::value; + template +- constexpr bool @\libglobal{is_swappable_v}@ = is_swappable::value; ++ constexpr bool @\libglobal{is_swappable_v}@ = @\libglobalref{is_swappable}@::value; + template +- constexpr bool @\libglobal{is_destructible_v}@ = is_destructible::value; ++ constexpr bool @\libglobal{is_destructible_v}@ = @\libglobalref{is_destructible}@::value; + template + constexpr bool @\libglobal{is_trivially_constructible_v}@ = is_trivially_constructible::value; + template + constexpr bool @\libglobal{is_trivially_default_constructible_v}@ +- = is_trivially_default_constructible::value; ++ = @\libglobalref{is_trivially_default_constructible}@::value; + template + constexpr bool @\libglobal{is_trivially_copy_constructible_v}@ = is_trivially_copy_constructible::value; + template + constexpr bool @\libglobal{is_trivially_move_constructible_v}@ = is_trivially_move_constructible::value; + template +- constexpr bool @\libglobal{is_trivially_assignable_v}@ = is_trivially_assignable::value; ++ constexpr bool @\libglobal{is_trivially_assignable_v}@ = @\libglobalref{is_trivially_assignable}@::value; + template + constexpr bool @\libglobal{is_trivially_copy_assignable_v}@ = is_trivially_copy_assignable::value; + template + constexpr bool @\libglobal{is_trivially_move_assignable_v}@ = is_trivially_move_assignable::value; + template +- constexpr bool @\libglobal{is_trivially_destructible_v}@ = is_trivially_destructible::value; ++ constexpr bool @\libglobal{is_trivially_destructible_v}@ = @\libglobalref{is_trivially_destructible}@::value; + template + constexpr bool @\libglobal{is_nothrow_constructible_v}@ = is_nothrow_constructible::value; + template + constexpr bool @\libglobal{is_nothrow_default_constructible_v}@ +- = is_nothrow_default_constructible::value; ++ = @\libglobalref{is_nothrow_default_constructible}@::value; + template + constexpr bool is_nothrow_copy_constructible_v = is_nothrow_copy_constructible::value; + template + constexpr bool @\libglobal{is_nothrow_move_constructible_v}@ = is_nothrow_move_constructible::value; + template +- constexpr bool @\libglobal{is_nothrow_assignable_v}@ = is_nothrow_assignable::value; ++ constexpr bool @\libglobal{is_nothrow_assignable_v}@ = @\libglobalref{is_nothrow_assignable}@::value; + template +- constexpr bool @\libglobal{is_nothrow_copy_assignable_v}@ = is_nothrow_copy_assignable::value; ++ constexpr bool @\libglobal{is_nothrow_copy_assignable_v}@ = @\libglobalref{is_nothrow_copy_assignable}@::value; + template +- constexpr bool @\libglobal{is_nothrow_move_assignable_v}@ = is_nothrow_move_assignable::value; ++ constexpr bool @\libglobal{is_nothrow_move_assignable_v}@ = @\libglobalref{is_nothrow_move_assignable}@::value; + template +- constexpr bool @\libglobal{is_nothrow_swappable_with_v}@ = is_nothrow_swappable_with::value; ++ constexpr bool @\libglobal{is_nothrow_swappable_with_v}@ = @\libglobalref{is_nothrow_swappable_with}@::value; + template +- constexpr bool @\libglobal{is_nothrow_swappable_v}@ = is_nothrow_swappable::value; ++ constexpr bool @\libglobal{is_nothrow_swappable_v}@ = @\libglobalref{is_nothrow_swappable}@::value; + template +- constexpr bool @\libglobal{is_nothrow_destructible_v}@ = is_nothrow_destructible::value; ++ constexpr bool @\libglobal{is_nothrow_destructible_v}@ = @\libglobalref{is_nothrow_destructible}@::value; + template +- constexpr bool @\libglobal{is_implicit_lifetime_v}@ = is_implicit_lifetime::value; ++ constexpr bool @\libglobal{is_implicit_lifetime_v}@ = @\libglobalref{is_implicit_lifetime}@::value; + template +- constexpr bool @\libglobal{has_virtual_destructor_v}@ = has_virtual_destructor::value; ++ constexpr bool @\libglobal{has_virtual_destructor_v}@ = @\libglobalref{has_virtual_destructor}@::value; + template + constexpr bool @\libglobal{has_unique_object_representations_v}@ +- = has_unique_object_representations::value; ++ = @\libglobalref{has_unique_object_representations}@::value; + template + constexpr bool @\libglobal{reference_constructs_from_temporary_v}@ +- = reference_constructs_from_temporary::value; ++ = @\libglobalref{reference_constructs_from_temporary}@::value; + template + constexpr bool @\libglobal{reference_converts_from_temporary_v}@ +- = reference_converts_from_temporary::value; ++ = @\libglobalref{reference_converts_from_temporary}@::value; + + // \ref{meta.unary.prop.query}, type property queries + template +- constexpr size_t @\libglobal{alignment_of_v}@ = alignment_of::value; ++ constexpr size_t @\libglobal{alignment_of_v}@ = @\libglobalref{alignment_of}@::value; + template +- constexpr size_t @\libglobal{rank_v}@ = rank::value; ++ constexpr size_t @\libglobal{rank_v}@ = @\libglobalref{rank}@::value; + template +- constexpr size_t @\libglobal{extent_v}@ = extent::value; ++ constexpr size_t @\libglobal{extent_v}@ = @\libglobalref{extent}@::value; + + // \ref{meta.rel}, type relations + template +- constexpr bool @\libglobal{is_same_v}@ = is_same::value; ++ constexpr bool @\libglobal{is_same_v}@ = @\libglobalref{is_same}@::value; + template +- constexpr bool @\libglobal{is_base_of_v}@ = is_base_of::value; ++ constexpr bool @\libglobal{is_base_of_v}@ = @\libglobalref{is_base_of}@::value; + template +- constexpr bool @\libglobal{is_virtual_base_of_v}@ = is_virtual_base_of::value; ++ constexpr bool @\libglobal{is_virtual_base_of_v}@ = @\libglobalref{is_virtual_base_of}@::value; + template +- constexpr bool @\libglobal{is_convertible_v}@ = is_convertible::value; ++ constexpr bool @\libglobal{is_convertible_v}@ = @\libglobalref{is_convertible}@::value; + template +- constexpr bool @\libglobal{is_nothrow_convertible_v}@ = is_nothrow_convertible::value; ++ constexpr bool @\libglobal{is_nothrow_convertible_v}@ = @\libglobalref{is_nothrow_convertible}@::value; + template +- constexpr bool @\libglobal{is_layout_compatible_v}@ = is_layout_compatible::value; ++ constexpr bool @\libglobal{is_layout_compatible_v}@ = @\libglobalref{is_layout_compatible}@::value; + template + constexpr bool @\libglobal{is_pointer_interconvertible_base_of_v}@ +- = is_pointer_interconvertible_base_of::value; ++ = @\libglobalref{is_pointer_interconvertible_base_of}@::value; + template +- constexpr bool @\libglobal{is_invocable_v}@ = is_invocable::value; ++ constexpr bool @\libglobal{is_invocable_v}@ = @\libglobalref{is_invocable}@::value; + template +- constexpr bool @\libglobal{is_invocable_r_v}@ = is_invocable_r::value; ++ constexpr bool @\libglobal{is_invocable_r_v}@ = @\libglobalref{is_invocable_r}@::value; + template +- constexpr bool @\libglobal{is_nothrow_invocable_v}@ = is_nothrow_invocable::value; ++ constexpr bool @\libglobal{is_nothrow_invocable_v}@ = @\libglobalref{is_nothrow_invocable}@::value; + template + constexpr bool @\libglobal{is_nothrow_invocable_r_v}@ = is_nothrow_invocable_r::value; + template +@@ -617,11 +617,11 @@ namespace std { + + // \ref{meta.logical}, logical operator traits + template +- constexpr bool @\libglobal{conjunction_v}@ = conjunction::value; ++ constexpr bool @\libglobal{conjunction_v}@ = @\libglobalref{conjunction}@::value; + template +- constexpr bool @\libglobal{disjunction_v}@ = disjunction::value; ++ constexpr bool @\libglobal{disjunction_v}@ = @\libglobalref{disjunction}@::value; + template +- constexpr bool @\libglobal{negation_v}@ = negation::value; ++ constexpr bool @\libglobal{negation_v}@ = @\libglobalref{negation}@::value; + + // \ref{meta.member}, member relationships + template +@@ -674,7 +674,7 @@ properties of a type at compile time. + + \pnum + Each of these templates shall be a +-\oldconcept{UnaryTypeTrait}\iref{meta.rqmts} ++\oldconceptref{UnaryTypeTrait} + with a base characteristic of + \tcode{true_type} if the corresponding condition is \tcode{true}, otherwise + \tcode{false_type}. +@@ -704,17 +704,14 @@ has a \tcode{value} member that evaluates to \tcode{true}. + \topline + \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep + \endhead +-\indexlibraryglobal{is_void}% + \tcode{template}\br +- \tcode{struct is_void;} & ++ \tcode{struct \libglobal{is_void};} & + \tcode{T} is \keyword{void} & \\ \rowsep +-\indexlibraryglobal{is_null_pointer}% + \tcode{template}\br +- \tcode{struct is_null_pointer;} & ++ \tcode{struct \libglobal{is_null_pointer};} & + \tcode{T} is \tcode{nullptr_t}\iref{basic.fundamental} & \\ \rowsep +-\indexlibraryglobal{is_integral}% + \tcode{template}\br +- \tcode{struct is_integral;} & ++ \tcode{struct \libglobal{is_integral};} & + \tcode{T} is an integral type\iref{basic.fundamental} & \\ \rowsep + \indexlibraryglobal{is_floating_point}% + \tcode{template}\br +@@ -929,9 +926,8 @@ A union is a class type that + & + If \tcode{T} is a class type, \tcode{T} shall be a complete type. \\ \rowsep + +-\indexlibraryglobal{is_aggregate}% + \tcode{template}\br +- \tcode{struct is_aggregate;} & ++ \tcode{struct \libglobal{is_aggregate};} & + \tcode{T} is an aggregate type\iref{dcl.init.aggr} & + \tcode{T} shall be an array type, a complete type, or \cv~\keyword{void}. \\ \rowsep + +@@ -948,16 +944,14 @@ A union is a class type that + \tcode{T(-1) < T(0)}; + otherwise, \tcode{false} & \\ \rowsep + +-\indexlibraryglobal{is_unsigned}% + \tcode{template}\br +- \tcode{struct is_unsigned;} & ++ \tcode{struct \libglobal{is_unsigned};} & + If \tcode{is_arithmetic_v} is \tcode{true}, the same result as + \tcode{T(0) < T(-1)}; + otherwise, \tcode{false} & \\ \rowsep + +-\indexlibraryglobal{is_bounded_array}% + \tcode{template}\br +- \tcode{struct is_bounded_array;} & ++ \tcode{struct \libglobal{is_bounded_array};} & + \tcode{T} is an array type of known bound\iref{dcl.array} + & \\ \rowsep + +@@ -1457,7 +1451,7 @@ may be used to query properties of types at compile time. + \end{libreqtab2a} + + \pnum +-Each of these templates shall be a \oldconcept{UnaryTypeTrait}\iref{meta.rqmts} with a ++Each of these templates shall be a \oldconceptref{UnaryTypeTrait}\iref{meta.rqmts} with a + base characteristic of \tcode{integral_constant}. + + \pnum +@@ -1493,7 +1487,7 @@ may be used to query relationships between types at compile time. + + \pnum + Each of these templates shall be a +-\oldconcept{BinaryTypeTrait}\iref{meta.rqmts} ++\oldconceptref{BinaryTypeTrait}\iref{meta.rqmts} + with a base characteristic of + \tcode{true_type} if the corresponding condition is true, otherwise + \tcode{false_type}. +@@ -1514,7 +1508,7 @@ Let \tcode{\placeholdernc{ELEMS-OF}(T)} be the parameter pack + \lhdr{Template} & \chdr{Condition} & \rhdr{Comments} \\ \capsep + \endhead + \tcode{template}\br +- \tcode{struct is_same;} & ++ \tcode{struct \libglobal{is_same};} & + \tcode{T} and \tcode{U} name the same type with the same cv-qualifications & \\ \rowsep + + \indexlibraryglobal{is_base_of}% +@@ -1718,7 +1712,7 @@ type to another following some predefined rule. + + \pnum + Each of the templates in \ref{meta.trans} shall be a +-\oldconcept{TransformationTrait}\iref{meta.rqmts}. ++\oldconceptref{TransformationTrait}\iref{meta.rqmts}. + + \rSec3[meta.trans.cv]{Const-volatile modifications} + +@@ -2005,16 +1999,16 @@ perform other modifications of a type. + \tcode{template\br struct \libglobal{remove_cvref};} + & + The member typedef \tcode{type} denotes +- \tcode{remove_cv_t>}. ++ \tcode{\libglobalref{remove_cv_t}<\libglobalref{remove_reference_t}>}. + \\ \rowsep + + \tcode{template\br struct \libglobal{decay};} + & +- Let \tcode{U} be \tcode{remove_reference_t}. If \tcode{is_array_v} is ++ Let \tcode{U} be \tcode{\libglobalref{remove_reference_t}}. If \tcode{\libglobalref{is_array_v}} is + \tcode{true}, the member typedef \tcode{type} denotes +- \tcode{remove_extent_t*}. If \tcode{is_function_v} is \tcode{true}, +- the member typedef \tcode{type} denotes \tcode{add_pointer_t}. Otherwise +- the member typedef \tcode{type} denotes \tcode{remove_cv_t}. ++ \tcode{\libglobalref{remove_extent_t}*}. If \tcode{\libglobalref{is_function_v}} is \tcode{true}, ++ the member typedef \tcode{type} denotes \tcode{\libglobalref{add_pointer_t}}. Otherwise ++ the member typedef \tcode{type} denotes \tcode{\libglobalref{remove_cv_t}}. + \begin{tailnote} + This behavior is similar to the lvalue-to-rvalue\iref{conv.lval}, + array-to-pointer\iref{conv.array}, and function-to-pointer\iref{conv.func} +@@ -2120,7 +2114,7 @@ argument passing. + \tcode{template} \tcode{struct \libglobal{unwrap_reference};} + & + If \tcode{T} is +- a specialization \tcode{reference_wrapper} for some type \tcode{X}, ++ a specialization \tcode{\libglobalref{reference_wrapper}} for some type \tcode{X}, + the member typedef \tcode{type} of \tcode{unwrap_reference} + denotes \tcode{X\&}, + otherwise \tcode{type} denotes \tcode{T}. \\ \rowsep +@@ -2128,7 +2122,7 @@ argument passing. + \tcode{template} \tcode{\libglobal{unwrap_ref_decay};} + & + The member typedef \tcode{type} of \tcode{unwrap_ref_decay} +- denotes the type \tcode{unwrap_reference_t>}.\\ ++ denotes the type \tcode{\libglobalref{unwrap_reference_t}<\libglobalref{decay_t}>}.\\ + \end{libreqtab2a} + + \pnum +@@ -2146,7 +2140,7 @@ when the header \tcode{}\iref{functional.syn} is included. + Let: + \begin{itemize} + \item \tcode{\placeholdernc{CREF}(A)} be +- \tcode{add_lvalue_reference_t{}>}, ++ \tcode{\libglobalref{add_lvalue_reference_t}{}>}, + \item \tcode{\placeholdernc{XREF}(A)} denote a unary alias template \tcode{T} + such that \tcode{T} denotes the same type as \tcode{U} with the addition + of \tcode{A}'s cv and reference qualifiers, for a non-reference cv-unqualified +@@ -2171,15 +2165,15 @@ let \tcode{\placeholdernc{COMMON-\brk{}REF}(A, B)} be: + \placeholdernc{COPYCV}(\brk{}Y, X) \&)} if that type exists + and is a reference type. + \item Otherwise, let \tcode{C} be +- \tcode{remove_reference_t<\placeholdernc{COMMON-REF}(X\&, Y\&)>\&\&}. ++ \tcode{\libglobalref{remove_reference_t}<\placeholdernc{COMMON-REF}(X\&, Y\&)>\&\&}. + If \tcode{A} and \tcode{B} are both rvalue reference types, + \tcode{C} is well-formed, and +- \tcode{is_convertible_v \&\& is_convertible_v} is \tcode{true}, ++ \tcode{\libglobalref{is_convertible_v} \&\& \libglobalref{is_convertible_v}} is \tcode{true}, + then \tcode{\placeholdernc{COMMON-REF}(A, B)} is \tcode{C}. + \item Otherwise, let \tcode{D} be + \tcode{\placeholdernc{COMMON-REF}(const X\&, Y\&)}. If \tcode{A} is an rvalue + reference and \tcode{B} is an lvalue reference and \tcode{D} is +- well-formed and \tcode{is_convertible_v} is ++ well-formed and \tcode{\libglobalref{is_convertible_v}} is + \tcode{true}, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is \tcode{D}. + \item Otherwise, if \tcode{A} is an lvalue reference and \tcode{B} + is an rvalue reference, then \tcode{\placeholdernc{COMMON-REF}(A, B)} is +@@ -2478,7 +2472,7 @@ template struct negation : @\seebelow@ { }; + The class template \tcode{negation} + forms the logical negation of its template type argument. + The type \tcode{negation} +-is a \oldconcept{UnaryTypeTrait} with a base characteristic of \tcode{bool_constant}. ++is a \oldconceptref{UnaryTypeTrait} with a base characteristic of \tcode{bool_constant}. + \end{itemdescr} + + \rSec2[meta.member]{Member relationships} +diff --git a/source/numerics.tex b/source/numerics.tex +index bb1836c8..d7f7ecc6 100644 +--- a/source/numerics.tex ++++ b/source/numerics.tex +@@ -41,10 +41,10 @@ components are parameterized by the type of information they contain and manipul + A \Cpp{} program shall instantiate these components only with a numeric type. + A \defnadj{numeric}{type} is a cv-unqualified object type \tcode{T} + that meets the +-\oldconcept{DefaultConstructible}, +-\oldconcept{CopyConstructible}, +-\oldconcept{CopyAssignable}, and +-\oldconcept{Destructible} ++\oldconceptref{DefaultConstructible}, ++\oldconceptref{CopyConstructible}, ++\oldconceptref{CopyAssignable}, and ++\oldconceptref{Destructible} + requirements\iref{utility.arg.requirements}. + \begin{footnote} + In other words, value types. +@@ -2023,8 +2023,8 @@ according to \ref{strings} and \ref{input.output}. + + \pnum + \tcode{E} shall meet the +-\oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) +-and \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. ++\oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}) ++and \oldconceptref{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. + These operations shall each be of complexity + no worse than \bigoh{\text{size of state}}. + +@@ -2452,8 +2452,8 @@ according to \ref{strings} and \ref{input.output}. + + \pnum + \tcode{D} shall meet the +-\oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}) +-and \oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. ++\oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}) ++and \oldconceptref{CopyAssignable} (\tref{cpp17.copyassignable}) requirements. + + \pnum + The sequence of numbers +@@ -2484,10 +2484,10 @@ for convenience of exposition only. + + \pnum + \tcode{P} shall meet the +-\oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}), +-\oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}), ++\oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}), ++\oldconceptref{CopyAssignable} (\tref{cpp17.copyassignable}), + and +-\oldconcept{Equality\-Comp\-arable} (\tref{cpp17.equalitycomparable}) requirements. ++\oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) requirements. + + \pnum + For each of the constructors of \tcode{D} +@@ -4231,7 +4231,7 @@ template + \pnum + \expects + \tcode{InputIterator} meets the +- \oldconcept{InputIterator} requirements\iref{input.iterators}. ++ \oldconceptref{InputIterator} requirements\iref{input.iterators}. + + \pnum + \effects +@@ -4258,7 +4258,7 @@ template + \pnum + \expects + \tcode{RandomAccessIterator} meets the +- \oldconcept{RandomAccessIterator} requirements\iref{random.access.iterators} ++ \oldconceptref{RandomAccessIterator} requirements\iref{random.access.iterators} + and the requirements of a mutable iterator. + + \pnum +@@ -4371,7 +4371,7 @@ template + \pnum + \expects + \tcode{OutputIterator} meets the +- \oldconcept{OutputIterator} requirements\iref{output.iterators}. ++ \oldconceptref{OutputIterator} requirements\iref{output.iterators}. + + \pnum + \effects +@@ -6366,7 +6366,7 @@ double>} is \tcode{true}. + \pnum + \expects + \tcode{InputIterator} meets the +- \oldconcept{InputIterator} requirements\iref{input.iterators}. ++ \oldconceptref{InputIterator} requirements\iref{input.iterators}. + If \tcode{firstW == lastW}, + let $n = 1$ and $w_0 = 1$. + Otherwise, +@@ -6564,7 +6564,7 @@ are \tcode{true}. + \expects + \tcode{InputIteratorB} and \tcode{InputIteratorW} + each meet the +- \oldconcept{InputIterator} requirements\iref{input.iterators}. ++ \oldconceptref{InputIterator} requirements\iref{input.iterators}. + If \tcode{firstB == lastB} + or \tcode{++firstB == lastB}, + let $n = 1$, +@@ -6799,7 +6799,7 @@ are \tcode{true}. + \expects + \tcode{InputIteratorB} and \tcode{InputIteratorW} + each meet the +- \oldconcept{InputIterator} requirements\iref{input.iterators}. ++ \oldconceptref{InputIterator} requirements\iref{input.iterators}. + If \tcode{firstB == lastB} + or \tcode{++firstB == lastB}, + let $n = 1$, +diff --git a/source/strings.tex b/source/strings.tex +index 025af463..e7afd872 100644 +--- a/source/strings.tex ++++ b/source/strings.tex +@@ -238,10 +238,10 @@ using state_type = @\seebelow@; + \pnum + \expects + \tcode{state_type} meets the +-\oldconcept{Destructible} (\tref{cpp17.destructible}), +-\oldconcept{CopyAssignable} (\tref{cpp17.copyassignable}), +-\oldconcept{CopyConstructible} (\tref{cpp17.copyconstructible}), and +-\oldconcept{DefaultConstructible} (\tref{cpp17.defaultconstructible}) requirements. ++\oldconceptref{Destructible} (\tref{cpp17.destructible}), ++\oldconceptref{CopyAssignable} (\tref{cpp17.copyassignable}), ++\oldconceptref{CopyConstructible} (\tref{cpp17.copyconstructible}), and ++\oldconceptref{DefaultConstructible} (\tref{cpp17.defaultconstructible}) requirements. + \end{itemdescr} + + \rSec2[char.traits.specializations]{\tcode{char_traits} specializations} +@@ -935,7 +935,7 @@ using const_iterator = @\impdefx{type of \tcode{basic_string_view::const_iterato + \pnum + A type that meets the requirements + of a constant +-\oldconcept{RandomAccessIterator}\iref{random.access.iterators}, ++\oldconceptref{RandomAccessIterator}\iref{random.access.iterators}, + models \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, and + meets the constexpr iterator requirements\iref{iterator.requirements.general}, + whose \tcode{value_type} is the template parameter \tcode{charT}. +diff --git a/source/support.tex b/source/support.tex +index 99049b67..4cf3af8a 100644 +--- a/source/support.tex ++++ b/source/support.tex +@@ -4102,7 +4102,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. + + \pnum + \tcode{exception_ptr} meets the requirements of +-\oldconcept{NullablePointer} (\tref{cpp17.nullablepointer}). ++\oldconceptref{NullablePointer} (\tref{cpp17.nullablepointer}). + + \pnum + Two non-null values of type \tcode{exception_ptr} are equivalent and compare equal if and +@@ -4326,7 +4326,7 @@ Let \tcode{U} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{U} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{U} meets the \oldconceptref{CopyConstructible} requirements. + + \pnum + \throws +diff --git a/source/threads.tex b/source/threads.tex +index 6b8778ac..693a8b4c 100644 +--- a/source/threads.tex ++++ b/source/threads.tex +@@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and + \tcode{false} otherwise. + If a template parameter is named \tcode{Clock}, + the corresponding template argument shall be a type \tcode{C} +-that meets the \oldconcept{Clock} requirements\iref{time.clock.req}; ++that meets the \oldconceptref{Clock} requirements\iref{time.clock.req}; + the program is ill-formed if \tcode{is_clock_v} is \tcode{false}. + + \rSec2[thread.req.exception]{Exceptions} +@@ -156,7 +156,7 @@ and hardware. The finest resolution provided by an implementation is called the + + \pnum + Implementation-provided clocks that are used for these functions meet the +-\oldconcept{TrivialClock} requirements\iref{time.clock.req}. ++\oldconceptref{TrivialClock} requirements\iref{time.clock.req}. + + \pnum + A function that takes an argument which specifies a timeout will throw if, +@@ -195,10 +195,10 @@ The standard library templates \tcode{unique_lock}\iref{thread.lock.unique}, + \tcode{lock_guard}\iref{thread.lock.guard}, \tcode{lock}, + \tcode{try_lock}\iref{thread.lock.algorithm}, and + \tcode{condition_variable_any}\iref{thread.condition.condvarany} all operate on user-supplied +-lockable objects. The \oldconcept{BasicLockable} requirements, the \oldconcept{Lockable} requirements, +-the \oldconcept{TimedLockable} requirements, +-the \oldconcept{SharedLockable} requirements, and +-the \oldconcept{SharedTimedLock\-able} requirements ++lockable objects. The \oldconceptref{BasicLockable} requirements, the \oldconceptref{Lockable} requirements, ++the \oldconceptref{TimedLockable} requirements, ++the \oldconceptref{SharedLockable} requirements, and ++the \oldconceptref{SharedTimedLockable} requirements + list the requirements imposed by these library types + in order to acquire or release ownership of a \tcode{lock} by a given execution agent. + \begin{note} +@@ -266,7 +266,7 @@ Nothing. + \rSec3[thread.req.lockable.req]{\oldconcept{Lockable} requirements} + + \pnum +-A type \tcode{L} meets the \defnoldconcept{Lockable} requirements if it meets the \oldconcept{BasicLockable} ++A type \tcode{L} meets the \defnoldconcept{Lockable} requirements if it meets the \oldconceptref{BasicLockable} + requirements and the following expressions are well-formed and have the specified semantics + (\tcode{m} denotes a value of type \tcode{L}). + +@@ -291,7 +291,7 @@ exception is thrown then a lock shall not have been acquired for the current exe + \rSec3[thread.req.lockable.timed]{\oldconcept{TimedLockable} requirements} + + \pnum +-A type \tcode{L} meets the \defnoldconcept{TimedLockable} requirements if it meets the \oldconcept{Lockable} ++A type \tcode{L} meets the \defnoldconcept{TimedLockable} requirements if it meets the \oldconceptref{Lockable} + requirements and the following expressions are well-formed and have the specified semantics + (\tcode{m} denotes a value of type \tcode{L}, \tcode{rel_time} denotes a value of a + specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} denotes a value +@@ -397,7 +397,7 @@ Nothing. + + \pnum + A type \tcode{L} meets the \defnoldconcept{SharedTimedLockable} requirements if +-it meets the \oldconcept{SharedLockable} requirements, and ++it meets the \oldconceptref{SharedLockable} requirements, and + the following expressions are well-formed, have type \tcode{bool}, and + have the specified semantics + (\tcode{m} denotes a value of type \tcode{L}, +@@ -4498,7 +4498,7 @@ namespace std { + \indexlibraryglobal{atomic}% + \pnum + The template argument for \tcode{T} shall meet the +-\oldconcept{CopyConstructible} and \oldconcept{CopyAssignable} requirements. ++\oldconceptref{CopyConstructible} and \oldconceptref{CopyAssignable} requirements. + The program is ill-formed if any of + \begin{itemize} + \item \tcode{is_trivially_copyable_v}, +@@ -7326,11 +7326,11 @@ The \defn{mutex types} are the standard library types \tcode{mutex}, + They meet the requirements set out in \ref{thread.mutex.requirements.mutex}. + In this description, \tcode{m} denotes an object of a mutex type. + \begin{note} +-The mutex types meet the \oldconcept{Lockable} requirements\iref{thread.req.lockable.req}. ++The mutex types meet the \oldconceptref{Lockable} requirements\iref{thread.req.lockable.req}. + \end{note} + + \pnum +-The mutex types meet \oldconcept{DefaultConstructible} and \oldconcept{Destructible}. ++The mutex types meet \oldconceptref{DefaultConstructible} and \oldconceptref{Destructible}. + If initialization of an object of a mutex type fails, + an exception of type \tcode{system_error} is thrown. + The mutex types are neither copyable nor movable. +@@ -7599,7 +7599,7 @@ specialization of \tcode{duration}\iref{time.duration}, and \tcode{abs_time} den + object of a + specialization of \tcode{time_point}\iref{time.point}. + \begin{note} +-The timed mutex types meet the \oldconcept{TimedLockable} ++The timed mutex types meet the \oldconceptref{TimedLockable} + requirements\iref{thread.req.lockable.timed}. + \end{note} + +@@ -7811,7 +7811,7 @@ mutex types\iref{thread.mutex.requirements.mutex} and additionally + meet the requirements set out below. In this description, + \tcode{m} denotes an object of a shared mutex type. + \begin{note} +-The shared mutex types meet the \oldconcept{SharedLockable} ++The shared mutex types meet the \oldconceptref{SharedLockable} + requirements\iref{thread.req.lockable.shared}. + \end{note} + +@@ -7988,7 +7988,7 @@ meet the requirements set out below. In this description, + \tcode{abs_time} denotes an object of a specialization of + \tcode{time_point}\iref{time.point}. + \begin{note} +-The shared timed mutex types meet the \oldconcept{SharedTimedLockable} ++The shared timed mutex types meet the \oldconceptref{SharedTimedLockable} + requirements\iref{thread.req.lockable.shared.timed}. + \end{note} + +@@ -8198,7 +8198,7 @@ within a scope. A \tcode{lock_guard} object maintains ownership of a lockable + object throughout the \tcode{lock_guard} object's \deflink{lifetime}{basic.life}. + The behavior of a program is undefined if the lockable object referenced by + \exposid{pm} does not exist for the entire lifetime of the \tcode{lock_guard} +-object. The supplied \tcode{Mutex} type shall meet the \oldconcept{BasicLockable} ++object. The supplied \tcode{Mutex} type shall meet the \oldconceptref{BasicLockable} + requirements\iref{thread.req.lockable.basic}. + + \indexlibraryctor{lock_guard}% +@@ -8277,12 +8277,12 @@ object. + If \tcode{sizeof...(MutexTypes)} is one, + let \tcode{Mutex} denote the sole type constituting the pack \tcode{MutexTypes}. + \tcode{Mutex} +-shall meet the \oldconcept{BasicLockable} requirements\iref{thread.req.lockable.basic}. ++shall meet the \oldconceptref{BasicLockable} requirements\iref{thread.req.lockable.basic}. + The member \grammarterm{typedef-name} \tcode{mutex_type} + denotes the same type as \tcode{Mutex}. + \item + Otherwise, all types in the template parameter pack \tcode{MutexTypes} +-shall meet the \oldconcept{Lockable} requirements\iref{thread.req.lockable.req} ++shall meet the \oldconceptref{Lockable} requirements\iref{thread.req.lockable.req} + and there is no member \tcode{mutex_type}. + \end{itemize} + +@@ -8397,17 +8397,17 @@ copyable but are movable. The behavior of a program is undefined if the containe + \exposid{pm} is not null and the lockable object pointed + to by \exposid{pm} does not exist for the entire remaining + lifetime\iref{basic.life} of the \tcode{unique_lock} object. The supplied +-\tcode{Mutex} type shall meet the \oldconcept{BasicLockable} ++\tcode{Mutex} type shall meet the \oldconceptref{BasicLockable} + requirements\iref{thread.req.lockable.basic}. + + \pnum + \begin{note} +-\tcode{unique_lock} meets the \oldconcept{BasicLockable} requirements. If \tcode{Mutex} +-meets the \oldconcept{Lockable} requirements\iref{thread.req.lockable.req}, +-\tcode{unique_lock} also meets the \oldconcept{Lockable} requirements; ++\tcode{unique_lock} meets the \oldconceptref{BasicLockable} requirements. If \tcode{Mutex} ++meets the \oldconceptref{Lockable} requirements\iref{thread.req.lockable.req}, ++\tcode{unique_lock} also meets the \oldconceptref{Lockable} requirements; + if \tcode{Mutex} +-meets the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}, +-\tcode{unique_lock} also meets the \oldconcept{TimedLockable} requirements. ++meets the \oldconceptref{TimedLockable} requirements\iref{thread.req.lockable.timed}, ++\tcode{unique_lock} also meets the \oldconceptref{TimedLockable} requirements. + \end{note} + + \rSec4[thread.lock.unique.cons]{Constructors, destructor, and assignment} +@@ -8457,7 +8457,7 @@ unique_lock(mutex_type& m, try_to_lock_t); + \begin{itemdescr} + \pnum + \expects +-The supplied \tcode{Mutex} type meets the \oldconcept{Lockable} ++The supplied \tcode{Mutex} type meets the \oldconceptref{Lockable} + requirements\iref{thread.req.lockable.req}. + + \pnum +@@ -8499,7 +8499,7 @@ template + \pnum + \expects + The supplied \tcode{Mutex} type meets the +-\oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. ++\oldconceptref{TimedLockable} requirements\iref{thread.req.lockable.timed}. + + \pnum + \effects +@@ -8521,7 +8521,7 @@ template + \begin{itemdescr} + \pnum + \expects +-The supplied \tcode{Mutex} type meets the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. ++The supplied \tcode{Mutex} type meets the \oldconceptref{TimedLockable} requirements\iref{thread.req.lockable.timed}. + + \pnum + \effects +@@ -8608,7 +8608,7 @@ bool try_lock(); + \begin{itemdescr} + \pnum + \expects +-The supplied \tcode{Mutex} meets the \oldconcept{Lockable} ++The supplied \tcode{Mutex} meets the \oldconceptref{Lockable} + requirements\iref{thread.req.lockable.req}. + + \pnum +@@ -8647,7 +8647,7 @@ template + \begin{itemdescr} + \pnum + \expects +-The supplied \tcode{Mutex} type meets the \oldconcept{TimedLockable} ++The supplied \tcode{Mutex} type meets the \oldconceptref{TimedLockable} + requirements\iref{thread.req.lockable.timed}. + + \pnum +@@ -8686,7 +8686,7 @@ template + \begin{itemdescr} + \pnum + \expects +-The supplied \tcode{Mutex} type meets the \oldconcept{TimedLockable} requirements\iref{thread.req.lockable.timed}. ++The supplied \tcode{Mutex} type meets the \oldconceptref{TimedLockable} requirements\iref{thread.req.lockable.timed}. + + \pnum + \effects +@@ -8879,16 +8879,16 @@ acquisition, to another \tcode{shared_lock} object. Objects of type + is undefined if the contained pointer \exposid{pm} is not null and the lockable + object pointed to by \exposid{pm} does not exist for the entire remaining + lifetime\iref{basic.life} of the \tcode{shared_lock} object. The supplied +-\tcode{Mutex} type shall meet the \oldconcept{SharedLockable} ++\tcode{Mutex} type shall meet the \oldconceptref{SharedLockable} + requirements\iref{thread.req.lockable.shared}. + + \pnum + \begin{note} +-\tcode{shared_lock} meets the \oldconcept{Lockable} ++\tcode{shared_lock} meets the \oldconceptref{Lockable} + requirements\iref{thread.req.lockable.req}. +-If \tcode{Mutex} meets the \oldconcept{Shared\-TimedLockable} ++If \tcode{Mutex} meets the \oldconceptref{SharedTimedLockable} + requirements\iref{thread.req.lockable.shared.timed}, +-\tcode{shared_lock} also meets the \oldconcept{TimedLockable} ++\tcode{shared_lock} also meets the \oldconceptref{TimedLockable} + requirements\iref{thread.req.lockable.timed}. + \end{note} + +@@ -8973,7 +8973,7 @@ template + \begin{itemdescr} + \pnum + \expects +-\tcode{Mutex} meets the \oldconcept{SharedTimedLockable} ++\tcode{Mutex} meets the \oldconceptref{SharedTimedLockable} + requirements\iref{thread.req.lockable.shared.timed}. + + \pnum +@@ -8997,7 +8997,7 @@ template + \begin{itemdescr} + \pnum + \expects +-\tcode{Mutex} meets the \oldconcept{SharedTimedLockable} ++\tcode{Mutex} meets the \oldconceptref{SharedTimedLockable} + requirements\iref{thread.req.lockable.shared.timed}. + + \pnum +@@ -9122,7 +9122,7 @@ template + \begin{itemdescr} + \pnum + \expects +-\tcode{Mutex} meets the \oldconcept{SharedTimedLockable} ++\tcode{Mutex} meets the \oldconceptref{SharedTimedLockable} + requirements\iref{thread.req.lockable.shared.timed}. + + \pnum +@@ -9162,7 +9162,7 @@ template + \begin{itemdescr} + \pnum + \expects +-\tcode{Mutex} meets the \oldconcept{SharedTimedLockable} ++\tcode{Mutex} meets the \oldconceptref{SharedTimedLockable} + requirements\iref{thread.req.lockable.shared.timed}. + + \pnum +@@ -9301,7 +9301,7 @@ template int try_lock(L1&, L2&, L3&...); + \begin{itemdescr} + \pnum + \expects +-Each template parameter type meets the \oldconcept{Lockable} requirements. ++Each template parameter type meets the \oldconceptref{Lockable} requirements. + \begin{note} + The + \tcode{unique_lock} class template meets these requirements when suitably instantiated. +@@ -9330,7 +9330,7 @@ template void lock(L1&, L2&, L3&...); + \begin{itemdescr} + \pnum + \expects +-Each template parameter type meets the \oldconcept{Lockable} requirements. ++Each template parameter type meets the \oldconceptref{Lockable} requirements. + \begin{note} + The + \tcode{unique_lock} class template meets these requirements when suitably instantiated. +@@ -10009,7 +10009,7 @@ This can happen if the re-locking of the mutex throws an exception. + \pnum + In \ref{thread.condition.condvarany}, + template arguments for template parameters named \tcode{Lock} +-shall meet the \oldconcept{Basic\-Lockable} ++shall meet the \oldconceptref{BasicLockable} + requirements\iref{thread.req.lockable.basic}. + \begin{note} + All of the standard +@@ -10946,24 +10946,24 @@ execute atomically. + + \pnum + \tcode{CompletionFunction} shall meet the +-\oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) and +-\oldconcept{Destructible} (\tref{cpp17.destructible}) requirements. ++\oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) and ++\oldconceptref{Destructible} (\tref{cpp17.destructible}) requirements. + \tcode{is_nothrow_invocable_v} shall be \tcode{true}. + + \pnum + The default value of the \tcode{CompletionFunction} template parameter is + an unspecified type, such that, + in addition to satisfying the requirements of \tcode{CompletionFunction}, +-it meets the \oldconcept{DefaultConstructible} ++it meets the \oldconceptref{DefaultConstructible} + requirements (\tref{cpp17.defaultconstructible}) and + \tcode{\exposid{completion}()} has no effects. + + \pnum + \tcode{barrier::arrival_token} is an unspecified type, + such that it meets the +-\oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}), +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}), and +-\oldconcept{Destructible} (\tref{cpp17.destructible}) requirements. ++\oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}), ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}), and ++\oldconceptref{Destructible} (\tref{cpp17.destructible}) requirements. + + \indexlibrarymember{max}{barrier}% + \begin{itemdecl} +@@ -11458,7 +11458,7 @@ namespace std { + + \pnum + For the primary template, \tcode{R} shall be an object type that +-meets the \oldconcept{Destructible} requirements. ++meets the \oldconceptref{Destructible} requirements. + + \pnum + The implementation provides the template \tcode{promise} and two specializations, +@@ -11790,7 +11790,7 @@ namespace std { + + \pnum + For the primary template, \tcode{R} shall be an object type that +-meets the \oldconcept{Destructible} requirements. ++meets the \oldconceptref{Destructible} requirements. + + \pnum + The implementation provides the template \tcode{future} and two specializations, +@@ -12096,7 +12096,7 @@ namespace std { + + \pnum + For the primary template, \tcode{R} shall be an object type that +-meets the \oldconcept{Destructible} requirements. ++meets the \oldconceptref{Destructible} requirements. + + \pnum + The implementation provides the template \tcode{shared_future} and two +@@ -13034,7 +13034,7 @@ the expression \tcode{d(ptr)} is valid. + + \pnum + \tcode{D} shall meet the requirements for +-\oldconcept{DefaultConstructible} and \oldconcept{MoveAssignable}. ++\oldconceptref{DefaultConstructible} and \oldconceptref{MoveAssignable}. + + \pnum + If \tcode{D} is trivially copyable, +@@ -13092,7 +13092,7 @@ namespace std { + + \pnum + This class meets the requirements of +-\oldconcept{Lockable}\iref{thread.req.lockable.req} and ++\oldconceptref{Lockable}\iref{thread.req.lockable.req} and + provides regions of RCU protection. + \begin{example} + \begin{codeblock} +@@ -13240,8 +13240,8 @@ the expression \tcode{d(p)} is well-formed. + + \pnum + \expects +-\tcode{D} meets the \oldconcept{MoveConstructible} and +-\oldconcept{Destructible} requirements. ++\tcode{D} meets the \oldconceptref{MoveConstructible} and ++\oldconceptref{Destructible} requirements. + + \pnum + \effects +@@ -13433,7 +13433,7 @@ that adds specializations for \tcode{hazard_pointer_obj_base} is undefined. + + \pnum + \tcode{D} shall meet the requirements for +-\oldconcept{DefaultConstructible} and \oldconcept{MoveAssignable}. ++\oldconceptref{DefaultConstructible} and \oldconceptref{MoveAssignable}. + + \pnum + \tcode{T} may be an incomplete type. +diff --git a/source/time.tex b/source/time.tex +index 7321f172..4507fcb4 100644 +--- a/source/time.tex ++++ b/source/time.tex +@@ -1033,13 +1033,13 @@ SI definition is a measure of the quality of implementation. + A type \tcode{TC} meets the \defnoldconcept{TrivialClock} requirements if + \begin{itemize} + \item +-\tcode{TC} meets the \oldconcept{Clock} requirements, ++\tcode{TC} meets the \oldconceptref{Clock} requirements, + + \item + the types \tcode{TC::rep}, \tcode{TC::duration}, and \tcode{TC::time_point} +-meet the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) and +-\oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}) +-and \oldconcept{Swappable}\iref{swappable.requirements} ++meet the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) and ++\oldconceptref{LessThanComparable} (\tref{cpp17.lessthancomparable}) ++and \oldconceptref{Swappable}\iref{swappable.requirements} + requirements and the requirements of + numeric types\iref{numeric.requirements}, + \begin{note} +@@ -1197,15 +1197,15 @@ template struct is_clock; + \end{itemdecl} + + \pnum +-\tcode{is_clock} is a \oldconcept{UnaryTypeTrait}\iref{meta.rqmts} ++\tcode{is_clock} is a \oldconceptref{UnaryTypeTrait}\iref{meta.rqmts} + with a base characteristic of \tcode{true_type} +-if \tcode{T} meets the \oldconcept{Clock} requirements\iref{time.clock.req}, ++if \tcode{T} meets the \oldconceptref{Clock} requirements\iref{time.clock.req}, + otherwise \tcode{false_type}. + For the purposes of the specification of this trait, + the extent to which an implementation determines +-that a type cannot meet the \oldconcept{Clock} requirements is unspecified, ++that a type cannot meet the \oldconceptref{Clock} requirements is unspecified, + except that as a minimum +-a type \tcode{T} shall not qualify as a \oldconcept{Clock} ++a type \tcode{T} shall not qualify as a \oldconceptref{Clock} + unless it meets all of the following conditions: + \begin{itemize} + \item the \grammarterm{qualified-id}s +@@ -2633,7 +2633,7 @@ template + + \pnum + The types defined in \ref{time.clock} meet the +-\oldconcept{TrivialClock} ++\oldconceptref{TrivialClock} + requirements\iref{time.clock.req} + unless otherwise specified. + +@@ -2851,7 +2851,7 @@ which is \tcode{10'957 * 86'400s + 22s}. \\ + \end{example} + + \pnum +-\tcode{utc_clock} is not a \oldconcept{TrivialClock} ++\tcode{utc_clock} is not a \oldconceptref{TrivialClock} + unless the implementation can guarantee that \tcode{utc_clock::now()} + does not propagate an exception. + \begin{note} +@@ -3070,7 +3070,7 @@ so 2000-01-01 00:00:00 UTC is equivalent to 2000-01-01 00:00:32 TAI + (22s plus the initial 10s offset). + + \pnum +-\tcode{tai_clock} is not a \oldconcept{TrivialClock} ++\tcode{tai_clock} is not a \oldconceptref{TrivialClock} + unless the implementation can guarantee that \tcode{tai_clock::now()} + does not propagate an exception. + \begin{note} +@@ -3232,7 +3232,7 @@ GPS is behind TAI by 19s due to the 10s offset between 1958 and 1970 + and the additional 9 leap seconds inserted between 1970 and 1980. + + \pnum +-\tcode{gps_clock} is not a \oldconcept{TrivialClock} ++\tcode{gps_clock} is not a \oldconceptref{TrivialClock} + unless the implementation can guarantee that + \tcode{gps_clock::now()} does not propagate an exception. + \begin{note} +@@ -3369,7 +3369,7 @@ namespace std::chrono { + + \pnum + \tcode{file_clock} is an alias for a type +-meeting the \oldconcept{TrivialClock} requirements\iref{time.clock.req}, and ++meeting the \oldconceptref{TrivialClock} requirements\iref{time.clock.req}, and + using a signed arithmetic type for \tcode{file_clock::rep}. + \tcode{file_clock} is used to create the \tcode{time_point} system + used for \tcode{file_time_type}\iref{filesystems}. +@@ -3976,8 +3976,8 @@ It normally holds values in the range 1 to 31, + but may hold non-negative values outside this range. + It can be constructed with any \tcode{unsigned} value, + which will be subsequently truncated to fit into \tcode{day}'s unspecified internal storage. +-\tcode{day} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) +-and \oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements, ++\tcode{day} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) ++and \oldconceptref{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements, + and participates in basic arithmetic with \tcode{days} objects, + which represent a difference between two \tcode{day} objects. + +@@ -4269,8 +4269,8 @@ It normally holds values in the range 1 to 12, + but may hold non-negative values outside this range. + It can be constructed with any \tcode{unsigned} value, + which will be subsequently truncated to fit into \tcode{month}'s unspecified internal storage. +-\tcode{month} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) +-and \oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements, ++\tcode{month} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) ++and \oldconceptref{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements, + and participates in basic arithmetic with \tcode{months} objects, + which represent a difference between two \tcode{month} objects. + +@@ -4579,8 +4579,8 @@ namespace std::chrono { + It can represent values in the range \crange{min()}{max()}. + It can be constructed with any \tcode{int} value, + which will be subsequently truncated to fit into \tcode{year}'s unspecified internal storage. +-\tcode{year} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) +-and \oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements, ++\tcode{year} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) ++and \oldconceptref{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements, + and participates in basic arithmetic with \tcode{years} objects, + which represent a difference between two \tcode{year} objects. + +@@ -4934,10 +4934,10 @@ corresponding to Sunday through Saturday, but + it may hold non-negative values outside this range. + It can be constructed with any \tcode{unsigned} value, + which will be subsequently truncated to fit into \tcode{weekday}'s unspecified internal storage. +-\tcode{weekday} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) requirements. ++\tcode{weekday} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) requirements. + \begin{note} + \tcode{weekday} is not +-\oldconcept{LessThanComparable} ++\oldconceptref{LessThanComparable} + because there is no universal consensus on which day is the first day of the week. + \tcode{weekday}'s arithmetic operations treat the days of the week as a circular range, + with no beginning and no end. +@@ -5517,8 +5517,8 @@ namespace std::chrono { + \pnum + \tcode{month_day} represents a specific day of a specific month, + but with an unspecified year. +-\tcode{month_day} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) +-and \oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements. ++\tcode{month_day} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) ++and \oldconceptref{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements. + + \pnum + \tcode{month_day} is a trivially copyable and standard-layout class type. +@@ -6018,8 +6018,8 @@ namespace std::chrono { + \tcode{year_month} represents a specific month of a specific year, + but with an unspecified day. + \tcode{year_month} is a field-based time point with a resolution of \tcode{months}. +-\tcode{year_month} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) +-and \oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements. ++\tcode{year_month} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) ++and \oldconceptref{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements. + + \pnum + \tcode{year_month} is a trivially copyable and standard-layout class type. +@@ -6374,8 +6374,8 @@ but not \tcode{days}-oriented arithmetic. + For the latter, there is a conversion to \tcode{sys_days}, + which efficiently supports \tcode{days}-oriented arithmetic. + \end{note} +-\tcode{year_month_day} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) +-and \oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements. ++\tcode{year_month_day} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) ++and \oldconceptref{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements. + + \pnum + \tcode{year_month_day} is a trivially copyable and standard-layout class type. +@@ -6835,8 +6835,8 @@ but not \tcode{days}-oriented arithmetic. + For the latter, there is a conversion to \tcode{sys_days}, + which efficiently supports \tcode{days}-oriented arithmetic. + \end{note} +-\tcode{year_month_day_last} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) +-and \oldconcept{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements. ++\tcode{year_month_day_last} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) ++and \oldconceptref{LessThanComparable} (\tref{cpp17.lessthancomparable}) requirements. + + \pnum + \tcode{year_month_day_last} is a trivially copyable and standard-layout class type. +@@ -7206,7 +7206,7 @@ but not \tcode{days}-oriented arithmetic. + For the latter, there is a conversion to \tcode{sys_days}, + which efficiently supports \tcode{days}-oriented arithmetic. + \end{note} +-\tcode{year_month_weekday} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) requirements. ++\tcode{year_month_weekday} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) requirements. + + \pnum + \tcode{year_month_weekday} is a trivially copyable and standard-layout class type. +@@ -7599,7 +7599,7 @@ but not \tcode{days}-oriented arithmetic. + For the latter, there is a conversion to \tcode{sys_days}, + which efficiently supports \tcode{days}-oriented arithmetic. + \end{note} +-\tcode{year_month_weekday_last} meets the \oldconcept{EqualityComparable} (\tref{cpp17.equalitycomparable}) requirements. ++\tcode{year_month_weekday_last} meets the \oldconceptref{EqualityComparable} (\tref{cpp17.equalitycomparable}) requirements. + + \pnum + \tcode{year_month_weekday_last} is a trivially copyable and standard-layout class type. +@@ -8852,7 +8852,7 @@ The \tcode{tzdb_list} object contains a list of \tcode{tzdb} objects. + + \pnum + \tcode{tzdb_list::const_iterator} is a constant iterator +-which meets the \oldconcept{ForwardIterator} requirements ++which meets the \oldconceptref{ForwardIterator} requirements + and has a value type of \tcode{tzdb}. + + \indexlibrarymember{front}{tzdb_list}% +@@ -11576,7 +11576,7 @@ template<> struct hash; + The specializations are enabled\iref{unord.hash}. + \begin{note} + All the \tcode{hash} specializations listed above meet the +-\oldconcept{Hash} requirements, even when called on objects \tcode{k} ++\oldconceptref{Hash} requirements, even when called on objects \tcode{k} + of type \tcode{Key} such that \tcode{k.ok()} is \tcode{false}. + \end{note} + \end{itemdescr} +diff --git a/source/utilities.tex b/source/utilities.tex +index 6fd17813..e15e0fbf 100644 +--- a/source/utilities.tex ++++ b/source/utilities.tex +@@ -277,9 +277,9 @@ template + Type + \tcode{T} + meets the +-\oldconcept{MoveConstructible} (\tref{cpp17.moveconstructible}) ++\oldconceptref{MoveConstructible} (\tref{cpp17.moveconstructible}) + and +-\oldconcept{MoveAssignable} (\tref{cpp17.moveassignable}) ++\oldconceptref{MoveAssignable} (\tref{cpp17.moveassignable}) + requirements. + + \pnum +@@ -2458,7 +2458,7 @@ template + \pnum + \expects + \tcode{Alloc} meets +-the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. ++the \oldconceptref{Allocator} requirements\iref{allocator.requirements.general}. + + \pnum + \effects +@@ -3080,7 +3080,7 @@ template struct tuple_size; + \pnum + Except where specified otherwise, + all specializations of \tcode{tuple_size} meet the +-\oldconcept{UnaryTypeTrait} requirements\iref{meta.rqmts} with a ++\oldconceptref{UnaryTypeTrait} requirements\iref{meta.rqmts} with a + base characteristic of \tcode{integral_constant} + for some \tcode{N}. + \end{itemdescr} +@@ -3121,7 +3121,7 @@ template struct tuple_size; + Let \tcode{TS} denote \tcode{tuple_size} of the cv-unqualified type \tcode{T}. + If the expression \tcode{TS::value} is well-formed + when treated as an \deflink{unevaluated operand}{expr.context}, then +-each specialization of the template meets the \oldconcept{Unary\-Type\-Trait} requirements\iref{meta.rqmts} ++each specialization of the template meets the \oldconceptref{UnaryTypeTrait} requirements\iref{meta.rqmts} + with a base characteristic of + \begin{codeblock} + integral_constant +@@ -3159,7 +3159,7 @@ template struct tuple_element; + \begin{itemdescr} + \pnum + Let \tcode{TE} denote \tcode{tuple_element_t} of the cv-unqualified type \tcode{T}. Then +-each specialization of the template meets the \oldconcept{TransformationTrait} requirements\iref{meta.rqmts} ++each specialization of the template meets the \oldconceptref{TransformationTrait} requirements\iref{meta.rqmts} + with a member typedef \tcode{type} that names the type \tcode{const TE}. + + \pnum +@@ -3445,7 +3445,7 @@ template + \pnum + \expects + \tcode{Alloc} meets +-the \oldconcept{Allocator} requirements\iref{allocator.requirements.general}. ++the \oldconceptref{Allocator} requirements\iref{allocator.requirements.general}. + + \pnum + \begin{note} +@@ -4341,7 +4341,7 @@ constexpr void swap(optional& rhs) noexcept(@\seebelow@); + + \pnum + \expects +-\tcode{T} meets the \oldconcept{Swappable} requirements\iref{swappable.requirements}. ++\tcode{T} meets the \oldconceptref{Swappable} requirements\iref{swappable.requirements}. + + \pnum + \effects +@@ -4398,7 +4398,7 @@ using const_iterator = @\impdef@; + \pnum + These types + model \libconcept{contiguous_iterator}\iref{iterator.concept.contiguous}, +-meet the \oldconcept{RandomAccessIterator} requirements\iref{random.access.iterators}, and ++meet the \oldconceptref{RandomAccessIterator} requirements\iref{random.access.iterators}, and + meet the requirements for constexpr iterators\iref{iterator.requirements.general}, + with value type \tcode{remove_cv_t}. + The reference type is \tcode{T\&} for \tcode{iterator} and +@@ -5417,7 +5417,7 @@ template constexpr bool operator==(const optional& x, const + The expression \tcode{*x == *y} is well-formed and + its result is convertible to \tcode{bool}. + \begin{note} +-\tcode{T} need not be \oldconcept{EqualityComparable}. ++\tcode{T} need not be \oldconceptref{EqualityComparable}. + \end{note} + + \pnum +@@ -5608,7 +5608,7 @@ template constexpr bool operator==(const optional& x, const + The expression \tcode{*x == v} is well-formed and + its result is convertible to \tcode{bool}. + \begin{note} +-\tcode{T} need not be \oldconcept{EqualityComparable}. ++\tcode{T} need not be \oldconceptref{EqualityComparable}. + \end{note} + + \pnum +@@ -6163,7 +6163,7 @@ is nested within\iref{intro.object} the + + \pnum + All types in \tcode{Types} shall meet +-the \oldconcept{Destructible} requirements (\tref{cpp17.destructible}). ++the \oldconceptref{Destructible} requirements (\tref{cpp17.destructible}). + + \pnum + A program that instantiates the definition of \tcode{variant} with +@@ -6856,7 +6856,7 @@ constexpr void swap(variant& rhs) noexcept(@\seebelow@); + + \pnum + \expects +-Each $\tcode{T}_i$ meets the \oldconcept{Swappable} requirements\iref{swappable.requirements}. ++Each $\tcode{T}_i$ meets the \oldconceptref{Swappable} requirements\iref{swappable.requirements}. + + \pnum + \effects +@@ -6901,7 +6901,7 @@ template struct variant_size; + \begin{itemdescr} + \pnum + All specializations of \tcode{variant_size} meet the +-\oldconcept{UnaryTypeTrait} requirements\iref{meta.rqmts} ++\oldconceptref{UnaryTypeTrait} requirements\iref{meta.rqmts} + with a base characteristic of \tcode{integral_constant} for some \tcode{N}. + \end{itemdescr} + +@@ -6914,7 +6914,7 @@ template struct variant_size; + \pnum + Let \tcode{VS} denote \tcode{variant_size} of the cv-unqualified + type \tcode{T}. Then each specialization of the template meets the +-\oldconcept{UnaryTypeTrait} requirements\iref{meta.rqmts} with a ++\oldconceptref{UnaryTypeTrait} requirements\iref{meta.rqmts} with a + base characteristic of \tcode{integral_constant}. + \end{itemdescr} + +@@ -6934,7 +6934,7 @@ template struct variant_alternative; + \pnum + Let \tcode{VA} denote \tcode{variant_alternative} of the + cv-unqualified type \tcode{T}. Then each specialization of the template +-meets the \oldconcept{TransformationTrait} requirements\iref{meta.rqmts} with a ++meets the \oldconceptref{TransformationTrait} requirements\iref{meta.rqmts} with a + member typedef \tcode{type} that names the type \tcode{const VA::type}. + \end{itemdescr} + +@@ -7665,7 +7665,7 @@ and \tcode{is_copy_constructible_v} is \tcode{true}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{CopyConstructible} requirements. + + \pnum + \effects +@@ -7693,7 +7693,7 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{CopyConstructible} requirements. + + \pnum + \effects +@@ -7726,7 +7726,7 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{CopyConstructible} requirements. + + \pnum + \effects +@@ -7811,7 +7811,7 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{CopyConstructible} requirements. + + \pnum + \effects +@@ -7846,7 +7846,7 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{CopyConstructible} requirements. + + \pnum + \effects +@@ -7890,7 +7890,7 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{CopyConstructible} requirements. + + \pnum + \effects +@@ -8596,9 +8596,9 @@ that is not a valid template argument for \tcode{unexpected} is ill-formed. + + \pnum + When \tcode{T} is not \cv{} \tcode{void}, it shall meet +-the \oldconcept{Destructible} requirements (\tref{cpp17.destructible}). ++the \oldconceptref{Destructible} requirements (\tref{cpp17.destructible}). + \tcode{E} shall meet +-the \oldconcept{Destructible} requirements. ++the \oldconceptref{Destructible} requirements. + + \rSec3[expected.object.cons]{Constructors} + +@@ -9860,7 +9860,7 @@ template friend constexpr bool operator==(const expected& x, const T2& + The expression \tcode{*x == v} is well-formed and + its result is convertible to \tcode{bool}. + \begin{note} +-\tcode{T} need not be \oldconcept{EqualityComparable}. ++\tcode{T} need not be \oldconceptref{EqualityComparable}. + \end{note} + + \pnum +@@ -10000,7 +10000,7 @@ is not a valid template argument for \tcode{unexpected} is ill-formed. + + \pnum + \tcode{E} shall meet the requirements of +-\oldconcept{Destructible} (\tref{cpp17.destructible}). ++\oldconceptref{Destructible} (\tref{cpp17.destructible}). + + \rSec3[expected.void.cons]{Constructors} + +@@ -12161,8 +12161,8 @@ is ill-formed. + \indextext{call wrapper}% + \indextext{call wrapper!simple}% + \indextext{call wrapper!forwarding}% +-Every call wrapper\iref{func.def} meets the \oldconcept{MoveConstructible} +-and \oldconcept{Destructible} requirements. ++Every call wrapper\iref{func.def} meets the \oldconceptref{MoveConstructible} ++and \oldconceptref{Destructible} requirements. + An \defn{argument forwarding call wrapper} is a + call wrapper that can be called with an arbitrary argument list + and delivers the arguments to the target object as references. +@@ -12202,7 +12202,7 @@ with references as described in the corresponding forwarding steps. + \pnum + \label{term.simple.call.wrapper}% + A \defn{simple call wrapper} is a perfect forwarding call wrapper that meets +-the \oldconcept{CopyConstructible} and \oldconcept{CopyAssignable} requirements ++the \oldconceptref{CopyConstructible} and \oldconceptref{CopyAssignable} requirements + and whose copy constructor, move constructor, and assignment operators + are constexpr functions that do not throw exceptions. + +@@ -12305,7 +12305,7 @@ namespace std { + \end{codeblock} + + \pnum +-\tcode{reference_wrapper} is a \oldconcept{CopyConstructible} and \oldconcept{CopyAssignable} wrapper ++\tcode{reference_wrapper} is a \oldconceptref{CopyConstructible} and \oldconceptref{CopyAssignable} wrapper + around a reference to an object or function of type \tcode{T}. + + \pnum +@@ -13759,7 +13759,7 @@ is \tcode{true}. + + \pnum + \expects +-\tcode{FD} meets the \oldconcept{MoveConstructible} requirements. ++\tcode{FD} meets the \oldconceptref{MoveConstructible} requirements. + + \pnum + \returns +@@ -13845,10 +13845,10 @@ is \tcode{true}. + + \pnum + \expects +-\tcode{FD} meets the \oldconcept{MoveConstructible} requirements. ++\tcode{FD} meets the \oldconceptref{MoveConstructible} requirements. + For each $\tcode{T}_i$ in \tcode{BoundArgs}, + if $\tcode{T}_i$ is an object type, +-$\tcode{T}_i$ meets the \oldconcept{MoveConstructible} requirements. ++$\tcode{T}_i$ meets the \oldconceptref{MoveConstructible} requirements. + + \pnum + \returns +@@ -13914,7 +13914,7 @@ then \tcode{f != nullptr} is \tcode{true}. + \pnum + \expects + For each $\tcode{T}_i$ in \tcode{BoundArgs}, +-$\tcode{T}_i$ meets the \oldconcept{MoveConstructible} requirements. ++$\tcode{T}_i$ meets the \oldconceptref{MoveConstructible} requirements. + + \pnum + \returns +@@ -13960,7 +13960,7 @@ uses \tcode{is_bind_expression} to detect subexpressions. + + \pnum + Specializations of the \tcode{is_bind_expression} template shall meet +-the \oldconcept{UnaryTypeTrait} requirements\iref{meta.rqmts}. The implementation ++the \oldconceptref{UnaryTypeTrait} requirements\iref{meta.rqmts}. The implementation + provides a definition that has a base characteristic of + \tcode{true_type} if \tcode{T} is a type returned from \tcode{bind}, + otherwise it has a base characteristic of \tcode{false_type}. +@@ -13996,7 +13996,7 @@ The function template \tcode{bind} uses + + \pnum + Specializations of the \tcode{is_placeholder} template shall meet +-the \oldconcept{UnaryTypeTrait} requirements\iref{meta.rqmts}. The implementation ++the \oldconceptref{UnaryTypeTrait} requirements\iref{meta.rqmts}. The implementation + provides a definition that has the base characteristic of + \tcode{integral_constant} if \tcode{T} is the type of + \tcode{std::placeholders::_\placeholder{J}}, otherwise it has a +@@ -14046,7 +14046,7 @@ in \tcode{BoundArgs}, \tcode{is_cons\-tructible_v<$\tcode{TD}_i$, $\tcode{T}_i$> + \pnum + \expects + \tcode{FD} and each $\tcode{TD}_i$ meet +-the \oldconcept{MoveConstructible} and \oldconcept{Destructible} requirements. ++the \oldconceptref{MoveConstructible} and \oldconceptref{Destructible} requirements. + \tcode{\placeholdernc{INVOKE}(fd, $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc$, + $\tcode{w}_N$)}\iref{func.require} is a valid expression for some + values $\tcode{w}_1$, $\tcode{w}_2$, $\dotsc{}$, $\tcode{w}_N$, where +@@ -14082,8 +14082,8 @@ the state entities of \tcode{g}. + \pnum + \begin{note} + If all of \tcode{FD} and $\tcode{TD}_i$ meet +-the requirements of \oldconcept{CopyConstructible}, then +-the return type meets the requirements of \oldconcept{CopyConstructible}. ++the requirements of \oldconceptref{CopyConstructible}, then ++the return type meets the requirements of \oldconceptref{CopyConstructible}. + \end{note} + \end{itemdescr} + +@@ -14152,13 +14152,13 @@ The number \tcode{\placeholder{M}} of placeholders is + \impldef{number of placeholders for bind expressions}. + + \pnum +-All placeholder types meet the \oldconcept{DefaultConstructible} and +-\oldconcept{CopyConstructible} requirements, and ++All placeholder types meet the \oldconceptref{DefaultConstructible} and ++\oldconceptref{CopyConstructible} requirements, and + their default constructors and copy/move + constructors are constexpr functions that + do not throw exceptions. It is \impldef{assignability of placeholder + objects} whether +-placeholder types meet the \oldconcept{CopyAssignable} requirements, ++placeholder types meet the \oldconceptref{CopyAssignable} requirements, + but if so, their copy assignment operators are + constexpr functions that do not throw exceptions. + +@@ -14428,7 +14428,7 @@ Let \tcode{FD} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{FD} meets the \oldconcept{CopyConstructible} requirements. ++\tcode{FD} meets the \oldconceptref{CopyConstructible} requirements. + + \pnum + \ensures +@@ -14853,9 +14853,9 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{Destructible} requirements, and ++\tcode{VT} meets the \oldconceptref{Destructible} requirements, and + if \tcode{is_move_constructible_v} is \tcode{true}, +-\tcode{VT} meets the \oldconcept{MoveConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{MoveConstructible} requirements. + + \pnum + \ensures +@@ -14905,9 +14905,9 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{Destructible} requirements, and ++\tcode{VT} meets the \oldconceptref{Destructible} requirements, and + if \tcode{is_move_constructible_v} is \tcode{true}, +-\tcode{VT} meets the \oldconcept{MoveConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{MoveConstructible} requirements. + + \pnum + \ensures +@@ -14947,9 +14947,9 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{Destructible} requirements, and ++\tcode{VT} meets the \oldconceptref{Destructible} requirements, and + if \tcode{is_move_constructible_v} is \tcode{true}, +-\tcode{VT} meets the \oldconcept{MoveConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{MoveConstructible} requirements. + + \pnum + \ensures +@@ -15271,8 +15271,8 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{Destructible} and +-\oldconcept{CopyConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{Destructible} and ++\oldconceptref{CopyConstructible} requirements. + + \pnum + \ensures +@@ -15327,8 +15327,8 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{Destructible} and +-\oldconcept{CopyConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{Destructible} and ++\oldconceptref{CopyConstructible} requirements. + + \pnum + \ensures +@@ -15373,8 +15373,8 @@ Let \tcode{VT} be \tcode{decay_t}. + + \pnum + \expects +-\tcode{VT} meets the \oldconcept{Destructible} and +-\oldconcept{CopyConstructible} requirements. ++\tcode{VT} meets the \oldconceptref{Destructible} and ++\oldconceptref{CopyConstructible} requirements. + + \pnum + \ensures +@@ -15935,7 +15935,7 @@ provided to the function call operator. + + \pnum + Each specialization of a class template specified in \ref{func.search} +-shall meet the \oldconcept{CopyConst\-ruct\-ible} and \oldconcept{CopyAssignable} requirements. ++shall meet the \oldconceptref{CopyConstructible} and \oldconceptref{CopyAssignable} requirements. + Template parameters named + \begin{itemize} + \item \tcode{ForwardIterator}, +@@ -15949,7 +15949,7 @@ Template parameters named + of templates specified in + \ref{func.search} shall meet the same requirements and semantics as + specified in \ref{algorithms.general}. +-Template parameters named \tcode{Hash} shall meet the \oldconcept{Hash} ++Template parameters named \tcode{Hash} shall meet the \oldconceptref{Hash} + requirements (\tref{cpp17.hash}). + + \pnum +@@ -16058,9 +16058,9 @@ boyer_moore_searcher(RandomAccessIterator1 pat_first, + \pnum + \expects + The value type of \tcode{RandomAccessIterator1} meets +-the \oldconcept{DefaultConstructible}, +-\oldconcept{CopyConstructible}, and +-\oldconcept{CopyAssignable} requirements. ++the \oldconceptref{DefaultConstructible}, ++\oldconceptref{CopyConstructible}, and ++\oldconceptref{CopyAssignable} requirements. + + \pnum + Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. +@@ -16159,8 +16159,8 @@ boyer_moore_horspool_searcher(RandomAccessIterator1 pat_first, + \begin{itemdescr} + \pnum + \expects +-The value type of \tcode{RandomAccessIterator1} meets the \oldconcept{DefaultConstructible}, +-\oldconcept{Copy\-Constructible}, and \oldconcept{CopyAssignable} requirements. ++The value type of \tcode{RandomAccessIterator1} meets the \oldconceptref{DefaultConstructible}, ++\oldconceptref{CopyConstructible}, and \oldconceptref{CopyAssignable} requirements. + + \pnum + Let \tcode{V} be \tcode{iterator_traits::val\-ue_type}. +@@ -16233,7 +16233,7 @@ as the default hash function. + Each specialization of \tcode{hash} is either enabled or disabled, + as described below. + \begin{note} +-Enabled specializations meet the \oldconcept{Hash} requirements, and ++Enabled specializations meet the \oldconceptref{Hash} requirements, and + disabled specializations do not. + \end{note} + Each header that declares the template \tcode{hash} +@@ -16260,17 +16260,17 @@ Disabled specializations of \tcode{hash} + are not function object types\iref{function.objects}. + \begin{note} + This means that the specialization of \tcode{hash} exists, but +-any attempts to use it as a \oldconcept{Hash} will be ill-formed. ++any attempts to use it as a \oldconceptref{Hash} will be ill-formed. + \end{note} + + \pnum + An enabled specialization \tcode{hash} will: + \begin{itemize} +-\item meet the \oldconcept{Hash} requirements (\tref{cpp17.hash}), ++\item meet the \oldconceptref{Hash} requirements (\tref{cpp17.hash}), + with \tcode{Key} as the function +-call argument type, the \oldconcept{Default\-Constructible} requirements (\tref{cpp17.defaultconstructible}), +-the \oldconcept{CopyAssignable} requirements (\tref{cpp17.copyassignable}), +-the \oldconcept{Swappable} requirements\iref{swappable.requirements}, ++call argument type, the \oldconceptref{DefaultConstructible} requirements (\tref{cpp17.defaultconstructible}), ++the \oldconceptref{CopyAssignable} requirements (\tref{cpp17.copyassignable}), ++the \oldconceptref{Swappable} requirements\iref{swappable.requirements}, + \item meet the requirement that if \tcode{k1 == k2} is \tcode{true}, \tcode{h(k1) == h(k2)} is + also \tcode{true}, where \tcode{h} is an object of type \tcode{hash} and \tcode{k1} and \tcode{k2} + are objects of type \tcode{Key}; +-- +2.43.0 + + +From bdd2930418ed48654903765e805743ca4e0b8d2b Mon Sep 17 00:00:00 2001 +From: Eelis van der Weegen +Date: Sun, 28 Jul 2024 11:08:01 +0200 +Subject: [PATCH 8/9] Remove awkward \linebreaks. + +--- + source/algorithms.tex | 4 ++-- + source/containers.tex | 38 +++++++++++++++++++------------------- + source/exec.tex | 8 ++++---- + source/memory.tex | 6 +++--- + source/meta.tex | 2 +- + source/ranges.tex | 38 +++++++++++++++++++------------------- + source/threads.tex | 8 ++++---- + source/utilities.tex | 8 ++++---- + 8 files changed, 56 insertions(+), 56 deletions(-) + +diff --git a/source/algorithms.tex b/source/algorithms.tex +index b7fd050e..8cbeb8e6 100644 +--- a/source/algorithms.tex ++++ b/source/algorithms.tex +@@ -7073,7 +7073,7 @@ Let: + \tcode{invoke(op, invoke(proj, *(first1 + (i - result))))} + for unary transforms defined in namespace \tcode{ranges}; + \item +- \tcode{invoke(binary_op, invoke(proj1, *(first1 + (i - result))), invoke(proj2,\linebreak *(first2 + (i - result))))} ++ \tcode{invoke(binary_op, invoke(proj1, *(first1 + (i - result))), invoke(proj2, *(first2 + (i - result))))} + for binary transforms defined in namespace \tcode{ranges}. + \end{itemize} + \end{itemize} +@@ -14212,7 +14212,7 @@ namespace ranges { + \pnum + \constraints + \tcode{is_unbounded_array_v} is \tcode{false}. +-The expression \tcode{::new (declval()) T(\linebreak{}declval()...)} ++The expression \tcode{::new (declval()) T(declval()...)} + is well-formed when treated as an unevaluated operand\iref{term.unevaluated.operand}. + + \pnum +diff --git a/source/containers.tex b/source/containers.tex +index e08718e5..642f747e 100644 +--- a/source/containers.tex ++++ b/source/containers.tex +@@ -1461,7 +1461,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. + \pnum + \recommended + If \tcode{R} models \tcode{ranges::\libconcept{approximately_sized_range}} and +-\tcode{ranges::distance(\linebreak{}rg) <= ranges::reserve_hint(rg)} is \tcode{true}, ++\tcode{ranges::distance(rg) <= ranges::reserve_hint(rg)} is \tcode{true}, + an implementation should not perform more than a single reallocation. + + \pnum +@@ -1836,7 +1836,7 @@ Each iterator in the range \tcode{rg} is dereferenced exactly once. + \pnum + \recommended + If \tcode{R} models \tcode{ranges::\libconcept{approximately_sized_range}} and +-\tcode{ranges::distance(\linebreak{}rg) <= ranges::reserve_hint(rg)} is \tcode{true}, ++\tcode{ranges::distance(rg) <= ranges::reserve_hint(rg)} is \tcode{true}, + an implementation should not perform any reallocation. + \end{itemdescr} + +@@ -2457,7 +2457,7 @@ Assigns \tcode{nh.\exposid{ptr_}} to \exposid{ptr_}. + \item + If \tcode{!\exposid{alloc_}} is \tcode{true} or + \tcode{\exposid{ator-traits}::propagate_on_container_move_assignment::value} +-is \tcode{true}, \linebreak ++is \tcode{true}, + move assigns \tcode{nh.\exposid{alloc_}} to \exposid{alloc_}. + \item + Assigns +@@ -7491,14 +7491,14 @@ template + \pnum + \expects + \tcode{T} is \oldconcept{EmplaceConstructible} into \tcode{forward_list} +-from \tcode{std::forward(\linebreak args)...}. ++from \tcode{std::forward(args)...}. + \tcode{position} is \tcode{before_begin()} or is a dereferenceable + iterator in the range \range{begin()}{end()}. + + \pnum + \effects + Inserts an object of type \tcode{value_type} direct-non-list-initialized with +-\tcode{std::forward(\linebreak args)...} after \tcode{position}. ++\tcode{std::forward(args)...} after \tcode{position}. + + \pnum + \returns +@@ -10760,7 +10760,7 @@ template + \pnum + The expression + \tcode{\exposid{is-vector-bool-reference}} is \tcode{true} +-if \tcode{T} denotes the type \tcode{vector::\linebreak{}reference} ++if \tcode{T} denotes the type \tcode{vector::reference} + for some type \tcode{Alloc} and + \tcode{vector} is not a program-defined specialization. + \end{itemdescr} +@@ -12142,7 +12142,7 @@ there is no effect. + Otherwise, let \tcode{r} be \tcode{equal_range(k)}. + Constructs an object \tcode{u} of type \tcode{value_type} with + \tcode{piecewise_construct, forward_as_tuple(std::forward(k)), +-forward_as_tuple(std::forward(args)...)}.\linebreak ++forward_as_tuple(std::forward(args)...)}. + If \tcode{equal_range(u.first) == r} is \tcode{false}, + the behavior is undefined. + Inserts \tcode{u} into \tcode{*this}. +@@ -17835,7 +17835,7 @@ template constexpr pair emplace(Args&&... args); + \pnum + \effects + Initializes an object \tcode{t} of type \tcode{pair} +-with \tcode{std::forward(\linebreak args)...}; ++with \tcode{std::forward(args)...}; + if the map already contains an element + whose key is equivalent to \tcode{t.first}, + \tcode{*this} is unchanged. +@@ -18107,7 +18107,7 @@ template + \effects + If the map already contains an element \tcode{e} + whose key is equivalent to \tcode{k}, +-assigns \tcode{std::forward<\linebreak M>(obj)} to \tcode{e.second}. ++assigns \tcode{std::forward(obj)} to \tcode{e.second}. + Otherwise, equivalent to + \begin{codeblock} + try_emplace(std::forward(k), std::forward(obj)) +@@ -18162,7 +18162,7 @@ an object \tcode{u}, for which \tcode{find(k) == find(u)} is \tcode{true}. + \effects + If the map already contains an element \tcode{e} + whose key is equivalent to \tcode{k}, +-assigns \tcode{std::forward<\linebreak M>(obj)} to \tcode{e.second}. ++assigns \tcode{std::forward(obj)} to \tcode{e.second}. + Otherwise, equivalent to + \begin{codeblock} + try_emplace(std::forward(k), std::forward(obj)) +@@ -18792,14 +18792,14 @@ template + \pnum + \effects + Equivalent to \tcode{flat_multimap(key_cont, mapped_cont)} and +-\tcode{flat_multimap(key_cont, \linebreak{}mapped_cont, comp)}, respectively, ++\tcode{flat_multimap(key_cont, mapped_cont, comp)}, respectively, + except that \tcode{\exposid{c}.keys} and \tcode{\exposid{c}.values} are constructed + with uses-allocator construction\iref{allocator.uses.construction}. + + \pnum + \complexity + Same as \tcode{flat_multimap(key_cont, mapped_cont)} and +-\tcode{flat_multimap(key_cont, \linebreak{}mapped_cont, comp)}, respectively. ++\tcode{flat_multimap(key_cont, mapped_cont, comp)}, respectively. + \end{itemdescr} + + \indexlibraryctor{flat_multimap}% +@@ -23476,7 +23476,7 @@ is representable as a value of type \tcode{index_type.} + \item + If \exposid{rank_} is greater than one, + then the product of +-\tcode{\exposid{LEAST-MULTIPLE-AT-LEAST}(pad, ext.extent(\linebreak 0))} and ++\tcode{\exposid{LEAST-MULTIPLE-AT-LEAST}(pad, ext.extent(0))} and + all values \tcode{ext.extent($k$)} + with $k$ in the range of \range{1}{\exposid{rank_}} + is representable as a value of type \tcode{index_type}. +@@ -23555,7 +23555,7 @@ template + \item + If \exposid{rank_} is greater than \tcode{1} and + \tcode{padding_value} does not equal \tcode{dynamic_extent}, +-then \tcode{other.\linebreak stride(1)} equals ++then \tcode{other.stride(1)} equals + \begin{codeblock} + @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, + extents_type::@\exposid{index-cast}@(other.extents().extent(0))) +@@ -23630,7 +23630,7 @@ is \tcode{true}. + \item + If \exposid{rank_} is greater than 1 and + \tcode{padding_value} does not equal \tcode{dynamic_extent}, +-then \tcode{other.\linebreak stride(1)} equals ++then \tcode{other.stride(1)} equals + \begin{codeblock} + @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, + extents_type::@\exposid{index-cast}@(other.extent(0))) +@@ -24038,7 +24038,7 @@ Implementations should not store this value + if \exposid{static-padding-stride} is not \tcode{dynamic_extent}. + \begin{note} + Using \tcode{extents} +-instead of \tcode{index_type} as the type of \exposid{stride-\linebreak rm2} ++instead of \tcode{index_type} as the type of \exposid{stride-rm2} + would achieve this. + \end{note} + \end{itemdescr} +@@ -24125,7 +24125,7 @@ is representable as a value of type \tcode{index_type}. + \item + If \exposid{rank_} is greater than one, + then the product of +-\tcode{\exposid{LEAST-MULTIPLE-AT-LEAST}(pad, ext.extent(\exposid{\linebreak rank_} - 1))} and ++\tcode{\exposid{LEAST-MULTIPLE-AT-LEAST}(pad, ext.extent(\exposid{rank_} - 1))} and + all values \tcode{ext.extent($k$)} + with $k$ in the range of \range{0}{\exposid{rank_} - 1} + is representable as a value of type \tcode{index_type}. +@@ -24204,7 +24204,7 @@ template + \item + If \exposid{rank_} is greater than 1 and + \tcode{padding_value} does not equal \tcode{dynamic_extent}, +-then \tcode{other.\linebreak stride(\exposid{rank_} - 2)} equals ++then \tcode{other.stride(\exposid{rank_} - 2)} equals + \begin{codeblock} + @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, + extents_type::@\exposid{index-cast}@(other.extents().extent(@\exposid{rank_}@ - 1))) +@@ -24279,7 +24279,7 @@ is \tcode{true}. + \item + If \exposid{rank_} is greater than 1 and + \tcode{padding_value} does not equal \tcode{dynamic_extent}, +-then \tcode{other.\linebreak stride(\exposid{rank_} - 2)} equals ++then \tcode{other.stride(\exposid{rank_} - 2)} equals + \begin{codeblock} + @\exposid{LEAST-MULTIPLE-AT-LEAST}@(padding_value, + extents_type::@\exposid{index-cast}@(other.extent(@\exposid{rank_}@ - 1))) +diff --git a/source/exec.tex b/source/exec.tex +index 4bf25bbd..98317a73 100644 +--- a/source/exec.tex ++++ b/source/exec.tex +@@ -3914,7 +3914,7 @@ otherwise, it is expression-equivalent to + \pnum + Let \tcode{out_sndr} and \tcode{env} be subexpressions, + let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and +-let \tcode{Env} be \tcode{decltype((\linebreak env))}. ++let \tcode{Env} be \tcode{decltype((env))}. + If \tcode{\exposconcept{sender-for}} is \tcode{false}, + then the expression \tcode{on.transform_sender(set_value, out_sndr, env)} is ill-formed. + +@@ -4019,7 +4019,7 @@ Let the expression \exposid{then-cpo} be one of + For subexpressions \tcode{sndr} and \tcode{f}, + if \tcode{decltype((sndr))} does not satisfy \libconcept{sender}, or + \tcode{decltype((f))} does not satisfy \exposconcept{movable-value}, +-\tcode{\exposid{then-cpo}(\linebreak sndr, f) }is ill-formed. ++\tcode{\exposid{then-cpo}(sndr, f) }is ill-formed. + + \pnum + Otherwise, +@@ -4980,7 +4980,7 @@ try { + \end{codeblock} + if the expression \tcode{\exposid{decayed-tuple}\{as...\}} + is potentially throwing; +-otherwise, \tcode{o.emplace(\linebreak as...)}. ++otherwise, \tcode{o.emplace(as...)}. + + \pnum + The expression \tcode{when_all_with_variant(sndrs...)} +@@ -6150,7 +6150,7 @@ Equivalent to \tcode{\exposid{state}->\exposid{loop}.finish()}. + + \pnum + For a subexpression \tcode{sndr}, let \tcode{Sndr} be \tcode{decltype((sndr))}. +-If \tcode{\exposconcept{sender-to}>} ++If \tcode{\exposconcept{sender-to}>} + is \tcode{false}, + the expression \tcode{sync_wait.apply_sender(sndr)} is ill-formed; + otherwise, it is equivalent to: +diff --git a/source/memory.tex b/source/memory.tex +index ceb201b5..a008469d 100644 +--- a/source/memory.tex ++++ b/source/memory.tex +@@ -1281,7 +1281,7 @@ A \tcode{tuple} value determined as follows: + \begin{itemize} + \item + If \tcode{uses_allocator_v, Alloc>} is \tcode{false} and +- \tcode{is_constructible_v} is \tcode{true}, ++ \tcode{is_constructible_v} is \tcode{true}, + return \tcode{forward_as_tuple(std::forward(args)...)}. + \item + Otherwise, if \tcode{uses_allocator_v, Alloc>} is \tcode{true} and +@@ -4246,7 +4246,7 @@ an exception thrown from \tcode{allocate} or from the initialization of the obje + the allocator \tcode{a} passed to \tcode{allocate_shared}. + \item + When a (sub)object of non-array type \tcode{U} is initialized by +- \tcode{make_shared_for_overwrite} or\linebreak % avoid Overfull ++ \tcode{make_shared_for_overwrite} or + \tcode{allocate_shared_for_overwrite}, + it is initialized via the expression \tcode{::new(pv) U}, + where \tcode{pv} has type \tcode{void*} and +@@ -5481,7 +5481,7 @@ if (p) { + \end{codeblock} + if the expression + \tcode{s.reset(static_cast(p), std::forward(args)...)} +-is well-\linebreak formed; ++is well-formed; + \item + otherwise, + \begin{codeblock} +diff --git a/source/meta.tex b/source/meta.tex +index e9244962..5d03bddb 100644 +--- a/source/meta.tex ++++ b/source/meta.tex +@@ -2273,7 +2273,7 @@ present as follows: + \item Let \tcode{R} be \tcode{\placeholdernc{COMMON-REF}(T1, T2)}. + If \tcode{T1} and \tcode{T2} are reference types, + \tcode{R} is well-formed, and +- \tcode{is_convertible_v, add_pointer_t> \&\& is_convertible_v, add_pointer_t>} is \tcode{true}, ++ \tcode{is_convertible_v, add_pointer_t> \&\& is_convertible_v, add_pointer_t>} is \tcode{true}, + then the member typedef \tcode{type} denotes \tcode{R}. + + \item Otherwise, if +diff --git a/source/ranges.tex b/source/ranges.tex +index 912546d8..ec7898d1 100644 +--- a/source/ranges.tex ++++ b/source/ranges.tex +@@ -1452,7 +1452,7 @@ if \tcode{iterator_t} models \libconcept{forward_iterator}, + regardless of the evaluation of \tcode{ranges::begin(t)}. + \begin{note} + \tcode{ranges::reserve_hint(t)} is otherwise not required to be well-defined +-after evaluating \tcode{ranges::\linebreak begin(t)}. ++after evaluating \tcode{ranges::begin(t)}. + For example, + it is possible for \tcode{ranges::reserve_hint(t)} to be well-defined for + an \libconceptx{approximate\-ly_sized_range}{approximately_sized_range} whose +@@ -3673,7 +3673,7 @@ constexpr explicit repeat_view(piecewise_construct_t, + Initializes \exposid{value_} with + \tcode{make_from_tuple(std::move(value_args))} + and +-initializes\linebreak{} \exposid{bound_} with ++initializes \exposid{bound_} with + \tcode{make_from_tuple(std::move(bound_args))}. + The behavior is undefined if + \tcode{Bound} is not \tcode{unreachable_sentinel_t} and +@@ -5994,7 +5994,7 @@ a specialization of \tcode{iota_view}\iref{range.iota.view} + that models \libconcept{random_access_range} and \libconcept{sized_range}, + then + \tcode{iota_view(*ranges::begin(E), +-*(ranges::begin(E) + std::\linebreak{}min(ranges::distance(E), F)))}, ++*(ranges::begin(E) + std::min(ranges::distance(E), F)))}, + except that \tcode{E} is evaluated only once. + + \item +@@ -6475,7 +6475,7 @@ if \tcode{T} is + a specialization of \tcode{subrange} + that models \libconcept{random_access_range} and \libconcept{sized_range}, + then +-\tcode{T(ranges::begin(E) + std::min(ranges::distance(E), F), ranges::\linebreak{}end(E), ++\tcode{T(ranges::begin(E) + std::min(ranges::distance(E), F), ranges::end(E), + \exposid{to-unsigned-like}(ranges::distance(E) - + std::min(ranges::distance(E), F)))}, + except that \tcode{E} and \tcode{F} are each evaluated only once. +@@ -7527,7 +7527,7 @@ Let \placeholder{OUTERC} denote + let \placeholder{INNERC} denote + \tcode{iterator_traits<\exposid{InnerIter}>::iterator_category}, and + let \placeholder{PATTERNC} denote +-\tcode{iterator_-\linebreak traits<\exposid{PatternIter}>::iterator_category}. ++\tcode{iterator_traits<\exposid{PatternIter}>::iterator_category}. + \item + If + \begin{codeblock} +@@ -8038,7 +8038,7 @@ constexpr explicit lazy_split_view(R&& r, range_value_t e); + \pnum + \effects + Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and +-\exposid{pattern_} with \tcode{views::\linebreak single(std::move(e))}. ++\exposid{pattern_} with \tcode{views::single(std::move(e))}. + \end{itemdescr} + + \rSec3[range.lazy.split.outer]{Class template \tcode{lazy_split_view::\exposid{outer-iterator}}} +@@ -8349,7 +8349,7 @@ Otherwise, the \grammarterm{typedef-name} \tcode{iterator_category} denotes: + \begin{itemize} + \item + \tcode{forward_iterator_tag} if +-\tcode{iterator_traits>::iterator_category} models \linebreak ++\tcode{iterator_traits>::iterator_category} models + \tcode{\libconcept{derived_from}}; + \item otherwise, \tcode{iterator_traits>::iterator_category}. + \end{itemize} +@@ -8569,7 +8569,7 @@ constexpr explicit split_view(R&& r, range_value_t e); + \pnum + \effects + Initializes \exposid{base_} with \tcode{views::all(std::forward(r))}, and +-\exposid{pattern_} with \tcode{views::\linebreak single(std::move(e))}. ++\exposid{pattern_} with \tcode{views::single(std::move(e))}. + \end{itemdescr} + + \indexlibrarymember{begin}{split_view} +@@ -9157,7 +9157,7 @@ then \tcode{iterator_concept} denotes \tcode{bidirectional_iterator_tag}. + \item + Otherwise, if + \tcode{\exposconcept{all-forward}} is modeled, +-then \tcode{iterator_concept} denotes \tcode{for\-ward_iterator_tag}. ++then \tcode{iterator_concept} denotes \tcode{forward_iterator_tag}. + \item + Otherwise, \tcode{iterator_concept} denotes \tcode{input_iterator_tag}. + \end{itemize} +@@ -9183,14 +9183,14 @@ let \tcode{Cs} denote the pack of types + \begin{itemize} + \item + If +-\tcode{(\libconcept{derived_from} \&\& ...) \&\& \exposconceptx{concat-is-random-ac-\linebreak{}cess}{concat-is-random-access}} ++\tcode{(\libconcept{derived_from} \&\& ...) \&\& \exposconceptx{concat-is-random-access}{concat-is-random-access}} + is \tcode{true}, + \tcode{iterator_category} denotes \tcode{random_access_iterator_tag}. + \item + Otherwise, if +-\tcode{(\libconcept{derived_from} \&\& ...) \&\& \exposconceptx{concat-is-\linebreak{}bidirectional}{concat-is-bidirectional}} ++\tcode{(\libconcept{derived_from} \&\& ...) \&\& \exposconceptx{concat-is-bidirectional}{concat-is-bidirectional}} + is \tcode{true}, +-\tcode{iterator_category} denotes \tcode{bidirectional_iter\-ator_tag}. ++\tcode{iterator_category} denotes \tcode{bidirectional_iterator_tag}. + \item + Otherwise, if + \tcode{(\libconcept{derived_from} \&\& ...)} +@@ -9642,11 +9642,11 @@ Let + %FIXME This is hard to parse. + If \tcode{$i_\tcode{x}$ > $i_\tcode{y}$}, let + \tcode{$d_\tcode{y}$} be +-\tcode{ranges::distance(std::get<$i_\tcode{y}$>(y.\exposid{it_}), ranges::end(std::get<$i_\tcode{y}$>(y.\linebreak{}\exposid{parent_}->\exposid{views_})))}, ++\tcode{ranges::distance(std::get<$i_\tcode{y}$>(y.\exposid{it_}), ranges::end(std::get<$i_\tcode{y}$>(y.\exposid{parent_}->\exposid{views_})))}, + \tcode{$d_\tcode{x}$} be +-\tcode{ranges::distance(ranges::begin(std::get<$i_\tcode{x}$>(x.\exposid{parent_}->\linebreak{}\exposid{views_})), std::get<$i_\tcode{x}$>(x.\exposid{it_}))}. ++\tcode{ranges::distance(ranges::begin(std::get<$i_\tcode{x}$>(x.\exposid{parent_}->\exposid{views_})), std::get<$i_\tcode{x}$>(x.\exposid{it_}))}. + Let \tcode{$s$} denote the sum of the sizes of all the ranges +-\tcode{std::get<\linebreak{}$i$>(x.\exposid{parent_}->\exposid{views_})} ++\tcode{std::get<$i$>(x.\exposid{parent_}->\exposid{views_})} + for every integer \tcode{$i$} in the range + \range{$i_\tcode{y}$ + 1}{$i_\tcode{x}$} + if there is any, and +@@ -9689,7 +9689,7 @@ friend constexpr difference_type operator-(const @\exposid{iterator}@& x, defaul + Let + \tcode{$i_\tcode{x}$} denote \tcode{x.\exposid{it_}.index()}, + \tcode{$d_\tcode{x}$} be +-\tcode{ranges::distance(std::get<$i_\tcode{x}$>(x.\exposid{it_}), ranges::\linebreak{}end(std::get<$i_\tcode{x}$>(x.\exposid{parent_}->\exposid{views_})))}. ++\tcode{ranges::distance(std::get<$i_\tcode{x}$>(x.\exposid{it_}), ranges::end(std::get<$i_\tcode{x}$>(x.\exposid{parent_}->\exposid{views_})))}. + Let \tcode{$s$} denote the sum of the sizes of all the ranges + \tcode{std::get<$i$>(x.\exposid{parent_}->\exposid{views_})} + for every integer \tcode{$i$} in the range +@@ -9846,7 +9846,7 @@ is expression-equivalent to: + \begin{itemize} + \item + If \tcode{T} models \libconcept{contiguous_iterator}, +-then \tcode{span(to_address(E), static_cast(static_-\linebreak{}cast(F)))}. ++then \tcode{span(to_address(E), static_cast(static_cast(F)))}. + + \item + Otherwise, if \tcode{T} models \libconcept{random_access_iterator}, +@@ -13555,7 +13555,7 @@ is defined as follows: + \item + If \tcode{invoke_result_t<\exposid{maybe-const}\&, + \exposid{REPEAT}(range_reference_t<\exposid{Base}>, N)...>} +-is\linebreak not a reference, ++is not a reference, + \tcode{iterator_category} denotes \tcode{input_iterator_tag}. + \item + Otherwise, let \tcode{C} denote the type +@@ -14666,7 +14666,7 @@ constexpr @\exposid{iterator}@(@\exposid{Parent}@* parent, iterator_t<@\exposid{ + \effects + Initializes \exposid{current_} with \tcode{current}, + \exposid{end_} with \tcode{ranges::end(parent->\exposid{base_})}, +-\exposid{n_} with \tcode{parent\linebreak ->\exposid{n_}}, and ++\exposid{n_} with \tcode{parent->\exposid{n_}}, and + \exposid{missing_} with \tcode{missing}. + \end{itemdescr} + +diff --git a/source/threads.tex b/source/threads.tex +index 693a8b4c..9a4c2a31 100644 +--- a/source/threads.tex ++++ b/source/threads.tex +@@ -3492,7 +3492,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, + \tcode{failure} is + \tcode{memory_order::relaxed}, + \tcode{memory_order::acquire}, or +-\tcode{memory_order::\linebreak seq_cst}. ++\tcode{memory_order::seq_cst}. + + \pnum + \effects +@@ -4791,7 +4791,7 @@ For the \tcode{volatile} overload of this function, + \tcode{failure} is + \tcode{memory_order::relaxed}, + \tcode{memory_order::acquire}, or +-\tcode{memory_order::\linebreak seq_cst}. ++\tcode{memory_order::seq_cst}. + + \pnum + \effects +@@ -6305,7 +6305,7 @@ constexpr bool compare_exchange_strong(shared_ptr& expected, shared_ptr de + \tcode{failure} is + \tcode{memory_order::relaxed}, + \tcode{memory_order::acquire}, or +-\tcode{memory_order::\linebreak seq_cst}. ++\tcode{memory_order::seq_cst}. + + \pnum + \effects +@@ -6621,7 +6621,7 @@ constexpr bool compare_exchange_strong(weak_ptr& expected, weak_ptr desire + \tcode{failure} is + \tcode{memory_order::relaxed}, + \tcode{memory_order::acquire}, or +-\tcode{memory_order::\linebreak seq_cst}. ++\tcode{memory_order::seq_cst}. + + \pnum + \effects +diff --git a/source/utilities.tex b/source/utilities.tex +index e15e0fbf..9c3d1f36 100644 +--- a/source/utilities.tex ++++ b/source/utilities.tex +@@ -2381,7 +2381,7 @@ equals \tcode{tuple_size_v>}, + + \item + \tcode{(is_constructible_v(std::forward(u)))> \&\& ...)} +-is\linebreak{} % Overfull ++is + \tcode{true}, and + + \item +@@ -3399,7 +3399,7 @@ denotes a type. + \pnum + \result + The member \grammarterm{typedef-name} \tcode{type} denotes the type +-\tcode{tuple, \linebreak{}UQual>...>}. ++\tcode{tuple, UQual>...>}. + \end{itemdescr} + + \indexlibrarymember{common_type}{tuple}% +@@ -4406,7 +4406,7 @@ The reference type is \tcode{T\&} for \tcode{iterator} and + + \pnum + All requirements on container iterators\iref{container.reqmts} apply to +-\tcode{optional::iterator} and \tcode{optional::\linebreak{}const_iterator} as well. ++\tcode{optional::iterator} and \tcode{optional::const_iterator} as well. + + \pnum + Any operation that initializes or destroys the contained value of an optional object invalidates all iterators into that object. +@@ -9446,7 +9446,7 @@ constexpr const T&& value() const &&; + \pnum + \mandates + \tcode{is_copy_constructible_v} is \tcode{true} and +-\tcode{is_constructible_v} is \tcode{true}. ++\tcode{is_constructible_v} is \tcode{true}. + + \pnum + \returns +-- +2.43.0 + + +From 312459dc6fd3ede5e4ac973d64b5c92cc27624ec Mon Sep 17 00:00:00 2001 +From: Eelis van der Weegen +Date: Thu, 25 Dec 2025 12:43:53 +0100 +Subject: [PATCH 9/9] Use \literalterminal more. + +--- + source/lex.tex | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +diff --git a/source/lex.tex b/source/lex.tex +index 2e1da4ca..23ea54ce 100644 +--- a/source/lex.tex ++++ b/source/lex.tex +@@ -449,7 +449,7 @@ for the respective Unicode encoding form. + + \begin{bnf} + \nontermdef{named-universal-character}\br +- \terminal{\textbackslash N\{} n-char-sequence \terminal{\}} ++ \literalterminal{\textbackslash N\{} n-char-sequence \literalterminal{\}} + \end{bnf} + + \begin{bnf} +@@ -464,9 +464,9 @@ for the respective Unicode encoding form. + + \begin{bnf} + \nontermdef{universal-character-name}\br +- \terminal{\textbackslash u} hex-quad\br +- \terminal{\textbackslash U} hex-quad hex-quad\br +- \terminal{\textbackslash u\{} simple-hexadecimal-digit-sequence \terminal{\}}\br ++ \literalterminal{\textbackslash u} hex-quad\br ++ \literalterminal{\textbackslash U} hex-quad hex-quad\br ++ \literalterminal{\textbackslash u\{} simple-hexadecimal-digit-sequence \literalterminal{\}}\br + named-universal-character + \end{bnf} + +@@ -1187,14 +1187,14 @@ a literal has a type and a value category\iref{expr.prim.literal}. + + \begin{bnf} + \nontermdef{binary-literal}\br +- \terminal{0b} binary-digit\br +- \terminal{0B} binary-digit\br ++ \literalterminal{0b} binary-digit\br ++ \literalterminal{0B} binary-digit\br + binary-literal \opt{\literalterminal{'}} binary-digit + \end{bnf} + + \begin{bnf} + \nontermdef{octal-literal}\br +- \terminal{0}\br ++ \literalterminal{0}\br + octal-literal \opt{\literalterminal{'}} octal-digit + \end{bnf} + +@@ -1211,22 +1211,22 @@ a literal has a type and a value category\iref{expr.prim.literal}. + + \begin{bnf} + \nontermdef{binary-digit} \textnormal{one of}\br +- \terminal{0 1} ++ \literalterminal{0 1} + \end{bnf} + + \begin{bnf} + \nontermdef{octal-digit} \textnormal{one of}\br +- \terminal{0 1 2 3 4 5 6 7} ++ \literalterminal{0 1 2 3 4 5 6 7} + \end{bnf} + + \begin{bnf} + \nontermdef{nonzero-digit} \textnormal{one of}\br +- \terminal{1 2 3 4 5 6 7 8 9} ++ \literalterminal{1 2 3 4 5 6 7 8 9} + \end{bnf} + + \begin{bnf} + \nontermdef{hexadecimal-prefix} \textnormal{one of}\br +- \terminal{0x 0X} ++ \literalterminal{0x 0X} + \end{bnf} + + \begin{bnf} +-- +2.43.0 + From 4108dace350a416d862e486608624c50e78072c1 Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Mon, 17 Aug 2026 21:04:13 -0500 Subject: [PATCH 35/36] Update --- cxxdraft-htmlgen | 2 +- draft | 2 +- gh-pages | 2 +- htmlgen.patch | 88 ++++++++++++++++++++++++------------------------ lastbuild.sig | 6 ++-- 5 files changed, 50 insertions(+), 50 deletions(-) diff --git a/cxxdraft-htmlgen b/cxxdraft-htmlgen index 6cebd0499f..e91ccb5500 160000 --- a/cxxdraft-htmlgen +++ b/cxxdraft-htmlgen @@ -1 +1 @@ -Subproject commit 6cebd0499f9b9c423913e8e6aace8f63a7016b04 +Subproject commit e91ccb5500bb427e4a19dfb42b2023c2b75783fe diff --git a/draft b/draft index 594a0583bd..3c89c0b99f 160000 --- a/draft +++ b/draft @@ -1 +1 @@ -Subproject commit 594a0583bdc3b2921b38dbb0e8186c819148ad7a +Subproject commit 3c89c0b99f57d02f320aae4c831a0eea5b3f5bb7 diff --git a/gh-pages b/gh-pages index 8e81bad434..b97083faf0 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit 8e81bad434db87f6bc4dc55bce15ac60f468ee18 +Subproject commit b97083faf0d607759f17474feeacb3bd587b720a diff --git a/htmlgen.patch b/htmlgen.patch index 927cbf5392..5a5b17ff39 100644 --- a/htmlgen.patch +++ b/htmlgen.patch @@ -1,4 +1,4 @@ -From c982b3cac0792448de27dce5f58a85ddf9e3ef34 Mon Sep 17 00:00:00 2001 +From 03a6b34783a158d7a17bda6bd327e0d5ffdef975 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on @@ -10,7 +10,7 @@ Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/basic.tex b/source/basic.tex -index 7fa8b01b..839e6202 100644 +index 516161ea..a94d3538 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -342,7 +342,7 @@ Given @@ -59,7 +59,7 @@ index 7fa8b01b..839e6202 100644 \end{codeblock} \end{example} diff --git a/source/expressions.tex b/source/expressions.tex -index f1e33317..6be82426 100644 +index fb3c8c03..6029d91a 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2989,7 +2989,7 @@ struct s2 { @@ -75,7 +75,7 @@ index f1e33317..6be82426 100644 2.43.0 -From ace6cd67567d398fa09fa10d236cc13d015565b1 Mon Sep 17 00:00:00 2001 +From 432bdba579a9a1a6a711cfb86b84eb3f0a848093 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 Subject: [PATCH 2/9] Use new link macros. @@ -133,7 +133,7 @@ index 95b1a818..450e1200 100644 \begin{itemdecl} diff --git a/source/basic.tex b/source/basic.tex -index 839e6202..52b33d73 100644 +index a94d3538..19a1b025 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -180,7 +180,7 @@ or the \tcode{*\keyword{this}} object\iref{expr.prim.this}. @@ -528,10 +528,10 @@ index 2349cbc8..f1fc3a66 100644 corresponding parameter if the meaning of the program will be unchanged except for the execution of a constructor and destructor for the parameter copy object; diff --git a/source/compatibility.tex b/source/compatibility.tex -index 95ce2830..36345e89 100644 +index f5910a9d..03244784 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -2091,8 +2091,8 @@ deallocation functions\iref{expr.new}. +@@ -2092,8 +2092,8 @@ deallocation functions\iref{expr.new}. A conditional expression with a throw expression as its second or third operand keeps the type and value category of the other operand. \rationale @@ -1135,7 +1135,7 @@ index 23e143e1..be584f9d 100644 \item% diff --git a/source/expressions.tex b/source/expressions.tex -index 6be82426..788a608b 100644 +index 6029d91a..343e8173 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -33,14 +33,14 @@ effects. @@ -1992,7 +1992,7 @@ index 3e24d06d..b5e513df 100644 translation units to form a complete \Cpp{} program\iref{lex.phases}.% \indextext{conformance requirements!library|)} diff --git a/source/iostreams.tex b/source/iostreams.tex -index fd97be24..63a429d3 100644 +index e517bbcc..a25f980c 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -558,7 +558,7 @@ is initialized, @@ -3142,7 +3142,7 @@ index 39cd5e50..ba13ba06 100644 \end{description} diff --git a/source/statements.tex b/source/statements.tex -index f0344937..7a81a873 100644 +index 846b203c..dbcc0a09 100644 --- a/source/statements.tex +++ b/source/statements.tex @@ -224,7 +224,7 @@ Expression statements have the form @@ -3247,7 +3247,7 @@ index f0344937..7a81a873 100644 \grammarterm{declarator} starts with a \tcode{(}. In those cases the \grammarterm{statement} is considered a \grammarterm{declaration}, diff --git a/source/strings.tex b/source/strings.tex -index 1286a236..025af463 100644 +index bff4b1ab..87703e3e 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -5547,13 +5547,13 @@ The contents and meaning of the header \libheaderdef{cstring} @@ -3277,7 +3277,7 @@ index 1286a236..025af463 100644 \xrefc{7.26} diff --git a/source/support.tex b/source/support.tex -index 9eeaba14..f77a170a 100644 +index 9abc9919..65206777 100644 --- a/source/support.tex +++ b/source/support.tex @@ -45,22 +45,15 @@ as summarized in \tref{support.summary}. @@ -3958,7 +3958,7 @@ index e9dc7b7d..5e28e1d9 100644 allocation function\iref{basic.stc.dynamic.deallocation,expr.new}. In all these cases, \tcode{P} is the type of the function template being considered diff --git a/source/threads.tex b/source/threads.tex -index a898419c..cff3e3f8 100644 +index 14c5aa42..838d2254 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -5,7 +5,7 @@ @@ -4099,7 +4099,7 @@ index a898419c..cff3e3f8 100644 the first function that successfully detects the ready status of the shared state or diff --git a/source/time.tex b/source/time.tex -index 85696ba9..6be9e47e 100644 +index 981798e5..174c5a45 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1217,7 +1217,7 @@ unless it meets all of the following conditions: @@ -4237,7 +4237,7 @@ index 0c500de2..68918746 100644 2.43.0 -From 18ab81e191d3a401b9a61d8c631ac0c814ae7852 Mon Sep 17 00:00:00 2001 +From 260ec0414a19670b3570a9419d05a71c5961c881 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 Subject: [PATCH 3/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and @@ -4691,7 +4691,7 @@ index 3c9f22b7..2946bff3 100644 in the prefix is a \defn{raw string literal}. The \grammarterm{d-char-sequence} serves as a delimiter. The terminating diff --git a/source/time.tex b/source/time.tex -index 6be9e47e..3d6fb318 100644 +index 174c5a45..3f52ae04 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2202,7 +2202,7 @@ If the parse fails to decode a valid duration, @@ -5723,7 +5723,7 @@ index 6be9e47e..3d6fb318 100644 2.43.0 -From 8edb03cb86411dd937dcc8900a59f27255acd559 Mon Sep 17 00:00:00 2001 +From d991ba7c996fe1cb0a59c9c154bb5199bb3bd1f5 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 Subject: [PATCH 4/9] Remove more inappropriate paragraph breaks. @@ -5794,7 +5794,7 @@ index 450e1200..c9bac8f9 100644 template concept @\defexposconcept{nothrow-input-iterator}@ = // \expos diff --git a/source/basic.tex b/source/basic.tex -index 52b33d73..65f7683d 100644 +index 19a1b025..ff8a1a07 100644 --- a/source/basic.tex +++ b/source/basic.tex @@ -312,7 +312,6 @@ int X::y = 1; // defines \tcode{X::y} @@ -5890,10 +5890,10 @@ index f1fc3a66..6bce9473 100644 \item If at least one $\tcode{T}_i$ is \tcode{std::partial_ordering}, diff --git a/source/compatibility.tex b/source/compatibility.tex -index 36345e89..17d5bcf0 100644 +index 03244784..85d9897a 100644 --- a/source/compatibility.tex +++ b/source/compatibility.tex -@@ -2693,7 +2693,6 @@ Overspecification. +@@ -2694,7 +2694,6 @@ Overspecification. \effect The signatures of the following member functions changed from taking an \tcode{iterator} to taking a \tcode{const_iterator}: @@ -5901,7 +5901,7 @@ index 36345e89..17d5bcf0 100644 \begin{itemize} \item \tcode{insert(iter, val)} for \tcode{vector}, \tcode{deque}, \tcode{list}, \tcode{set}, \tcode{multiset}, \tcode{map}, \tcode{multimap} -@@ -2765,7 +2764,6 @@ Clarify intentions, avoid workarounds. +@@ -2766,7 +2765,6 @@ Clarify intentions, avoid workarounds. Valid \CppIII{} code that relies on implicit boolean conversions will fail to compile with this revision of \Cpp{}. Such conversions occur in the following conditions: @@ -5909,7 +5909,7 @@ index 36345e89..17d5bcf0 100644 \begin{itemize} \item passing a value to a function that takes an argument of type \tcode{bool}; \item using \tcode{operator==} to compare to \tcode{false} or \tcode{true}; -@@ -3920,7 +3918,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in +@@ -3921,7 +3919,6 @@ is an \impldef{definition of \tcode{NULL}} null pointer constant in \pnum Header \libheaderref{cstring}: The following functions have different declarations: @@ -5917,7 +5917,7 @@ index 36345e89..17d5bcf0 100644 \begin{itemize} \item \tcode{strchr} \item \tcode{strpbrk} -@@ -3934,7 +3931,6 @@ Subclause \ref{cstring.syn} describes the changes. +@@ -3935,7 +3932,6 @@ Subclause \ref{cstring.syn} describes the changes. \pnum Header \libheaderref{cwchar}: The following functions have different declarations: @@ -5925,7 +5925,7 @@ index 36345e89..17d5bcf0 100644 \begin{itemize} \item \tcode{wcschr} \item \tcode{wcspbrk} -@@ -3959,7 +3955,6 @@ in addition to the names declared in +@@ -3960,7 +3956,6 @@ in addition to the names declared in \pnum Header \libheaderref{cstdlib}: The following functions have different behavior: @@ -6295,7 +6295,7 @@ index bab8b5b0..cfebc253 100644 \begin{note} diff --git a/source/expressions.tex b/source/expressions.tex -index 788a608b..9c63d0c4 100644 +index 343e8173..19c5f0a2 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -510,7 +510,6 @@ applied. The \link{lvalue-to-rvalue}{conv.lval} conversion is applied @@ -6559,7 +6559,7 @@ index c594ef17..68cdef6e 100644 namespace std { template diff --git a/source/iostreams.tex b/source/iostreams.tex -index 63a429d3..6019043b 100644 +index a25f980c..297a4fcb 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -2105,14 +2105,12 @@ does nothing. @@ -6918,7 +6918,7 @@ index 2c68fbe7..e89f767b 100644 \item If \tcode{T} is an array type, then either diff --git a/source/meta.tex b/source/meta.tex -index 08052036..2c8f245e 100644 +index 836ccd95..880b68a7 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -1684,7 +1684,6 @@ The predicate condition for a template specialization \tcode{is_convertible struct B { }; template struct D : public B {}; diff --git a/source/threads.tex b/source/threads.tex -index cff3e3f8..df4e2aa7 100644 +index 838d2254..9ea022ab 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -7614,7 +7614,6 @@ and visible to other threads. @@ -7769,7 +7769,7 @@ index cff3e3f8..df4e2aa7 100644 \item If \tcode{launch::async} is set in \tcode{policy}, calls diff --git a/source/time.tex b/source/time.tex -index 3d6fb318..fa754085 100644 +index 3f52ae04..f75f6adb 100644 --- a/source/time.tex +++ b/source/time.tex @@ -2076,7 +2076,6 @@ return os << s.str(); @@ -7982,7 +7982,7 @@ index 68918746..0287e368 100644 2.43.0 -From 2c481a964d4b35ec3222e591b5c97e48e052bc0e Mon Sep 17 00:00:00 2001 +From bb467b40d3d872e8814b31fc1aa9832d651e497a Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 Subject: [PATCH 5/9] Use monospace font for code in figures. @@ -8129,7 +8129,7 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From ecab47c94e503768817dc37a23398503fc1fae87 Mon Sep 17 00:00:00 2001 +From 387317dfd04550872195a9814e2ca9abfeb4894e Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 Subject: [PATCH 6/9] [uaxid] Mark code that's not to be highlighted. @@ -8157,7 +8157,7 @@ index 6574a486..b500e410 100644 2.43.0 -From 7cbcfffec8345628b40b463371b41a3ea66cbc62 Mon Sep 17 00:00:00 2001 +From ac3ba32afd33bc4834da156aa2c3210261a8df70 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 Subject: [PATCH 7/9] Use cxxdraft-htmlgen macros more. @@ -8929,7 +8929,7 @@ index 68cdef6e..02a76d83 100644 \begin{itemize} \item for the first specialization, \tcode{volatile VA::type}, and diff --git a/source/iostreams.tex b/source/iostreams.tex -index 6019043b..3e969f70 100644 +index 297a4fcb..3eb7d9ee 100644 --- a/source/iostreams.tex +++ b/source/iostreams.tex @@ -1684,10 +1684,10 @@ An \tcode{fpos} type specifies file position information. @@ -9292,7 +9292,7 @@ index e89f767b..8fb09ade 100644 the program is ill-formed. \begin{note} diff --git a/source/meta.tex b/source/meta.tex -index 2c8f245e..c175f7f6 100644 +index 880b68a7..9975819b 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -136,12 +136,12 @@ All functions specified in \ref{type.traits} are signal-safe\iref{support.signal @@ -9997,7 +9997,7 @@ index c79aa0d9..bf16ade5 100644 or \tcode{++firstB == lastB}, let $n = 1$, diff --git a/source/strings.tex b/source/strings.tex -index 025af463..e7afd872 100644 +index 87703e3e..ca7a2e67 100644 --- a/source/strings.tex +++ b/source/strings.tex @@ -238,10 +238,10 @@ using state_type = @\seebelow@; @@ -10025,7 +10025,7 @@ index 025af463..e7afd872 100644 meets the constexpr iterator requirements\iref{iterator.requirements.general}, whose \tcode{value_type} is the template parameter \tcode{charT}. diff --git a/source/support.tex b/source/support.tex -index 49fefaff..13a54121 100644 +index 0a30bcb5..9d3be7f0 100644 --- a/source/support.tex +++ b/source/support.tex @@ -4114,7 +4114,7 @@ The type \tcode{exception_ptr} can be used to refer to an exception object. @@ -10047,7 +10047,7 @@ index 49fefaff..13a54121 100644 \pnum \throws diff --git a/source/threads.tex b/source/threads.tex -index df4e2aa7..17f72189 100644 +index 9ea022ab..f301c230 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -41,7 +41,7 @@ yields \tcode{true} if the corresponding test condition is satisfied, and @@ -10443,7 +10443,7 @@ index df4e2aa7..17f72189 100644 \pnum \tcode{T} may be an incomplete type. diff --git a/source/time.tex b/source/time.tex -index fa754085..1c4e655a 100644 +index f75f6adb..9b9cdf63 100644 --- a/source/time.tex +++ b/source/time.tex @@ -1034,13 +1034,13 @@ SI definition is a measure of the quality of implementation. @@ -11152,7 +11152,7 @@ index 0287e368..bc5632a5 100644 2.43.0 -From 42e22b3b7f4e4f5832bb16c4ecc4d036123f334b Mon Sep 17 00:00:00 2001 +From 054d99887cef53f7417a1df5cf826f61f52ed7d5 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 Subject: [PATCH 8/9] Remove awkward \linebreaks. @@ -11435,7 +11435,7 @@ index 8fb09ade..d4799964 100644 otherwise, \begin{codeblock} diff --git a/source/meta.tex b/source/meta.tex -index c175f7f6..ccf7f156 100644 +index 9975819b..32203914 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -2273,7 +2273,7 @@ present as follows: @@ -11602,7 +11602,7 @@ index 6305fe97..58b567da 100644 \end{itemdescr} diff --git a/source/threads.tex b/source/threads.tex -index 17f72189..0f0980fa 100644 +index f301c230..d96ac081 100644 --- a/source/threads.tex +++ b/source/threads.tex @@ -3710,7 +3710,7 @@ constexpr bool compare_exchange_strong(value_type& expected, value_type desired, @@ -11685,7 +11685,7 @@ index bc5632a5..227adaa1 100644 2.43.0 -From dcc9f5c4bbdcf523755918fcb121f487b2ff0055 Mon Sep 17 00:00:00 2001 +From ae95d2208203e117d3e61c8e1cb176242d2127f1 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 25 Dec 2025 12:43:53 +0100 Subject: [PATCH 9/9] Use \literalterminal more. diff --git a/lastbuild.sig b/lastbuild.sig index 221f27d4f0..6bb8d82b92 100644 --- a/lastbuild.sig +++ b/lastbuild.sig @@ -1,3 +1,3 @@ -htmlgen 6cebd0499f9b9c423913e8e6aace8f63a7016b04 -draft 594a0583bdc3b2921b38dbb0e8186c819148ad7a -009b7becbebc2c2d964c7b932989ccba67b3f8d4 htmlgen.patch +htmlgen e91ccb5500bb427e4a19dfb42b2023c2b75783fe +draft 3c89c0b99f57d02f320aae4c831a0eea5b3f5bb7 +dea493e09999c65d0ae06ae4e75bbffa17aa9a34 htmlgen.patch From 21af01fe9802e15d34888c0cb28ba4fe7704420a Mon Sep 17 00:00:00 2001 From: timsong-cpp Date: Mon, 17 Aug 2026 21:28:00 -0500 Subject: [PATCH 36/36] Add an indexing fix to N5050 --- gh-pages | 2 +- n5050.patch | 68 +++++++++++++++++++++++++++++++++++++---------------- 2 files changed, 49 insertions(+), 21 deletions(-) diff --git a/gh-pages b/gh-pages index b97083faf0..05ae3070d8 160000 --- a/gh-pages +++ b/gh-pages @@ -1 +1 @@ -Subproject commit b97083faf0d607759f17474feeacb3bd587b720a +Subproject commit 05ae3070d884b14c7e6eaa38d8621ff25b47374a diff --git a/n5050.patch b/n5050.patch index 3159b49f21..a980c206b9 100644 --- a/n5050.patch +++ b/n5050.patch @@ -1,8 +1,8 @@ -From bd882a572ba79d75457cb0f76e0dd6f1688672c5 Mon Sep 17 00:00:00 2001 +From 08ed392990847876aab16d8c1ea3852cb36f35d8 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Mon, 23 Jan 2017 06:58:26 +0100 -Subject: [PATCH 1/9] Reduce excessive indentation of comments. Helps layout on - smaller (e.g. half-screen) window sizes. +Subject: [PATCH 01/10] Reduce excessive indentation of comments. Helps layout + on smaller (e.g. half-screen) window sizes. --- source/basic.tex | 26 +++++++++++++------------- @@ -75,10 +75,10 @@ index eec3be90..0ea2a413 100644 2.43.0 -From f6eb70fb0224ac76635bef932b9ee63b5302281f Mon Sep 17 00:00:00 2001 +From cb8c607df8916d9e7e48773bfa6ae0e6ffbd8ac0 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 1 Feb 2017 03:24:29 +0100 -Subject: [PATCH 2/9] Use new link macros. +Subject: [PATCH 02/10] Use new link macros. --- source/algorithms.tex | 4 +- @@ -4264,11 +4264,11 @@ index f3e66eb4..79866112 100644 2.43.0 -From a75e57d8b57b8b1f726bedabbdea932b6cfc8eaa Mon Sep 17 00:00:00 2001 +From 02620e651e80157a4c07c2f0d748c6e90751a600 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 11 Nov 2018 02:48:33 +0100 -Subject: [PATCH 3/9] Use cxxdraft-htmlgen macros to annotate non-C++ code and - literal fragments. +Subject: [PATCH 03/10] Use cxxdraft-htmlgen macros to annotate non-C++ code + and literal fragments. --- source/exceptions.tex | 4 +- @@ -5718,10 +5718,10 @@ index 0d1ce7bf..fd66d63d 100644 2.43.0 -From 447831cf714a8b34f255eb56349233904698cfad Mon Sep 17 00:00:00 2001 +From 2758659c90b1e0904423f75fa588192f00b85664 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 31 May 2020 23:23:45 +0200 -Subject: [PATCH 4/9] Remove more inappropriate paragraph breaks. +Subject: [PATCH 04/10] Remove more inappropriate paragraph breaks. --- source/algorithms.tex | 4 ---- @@ -7977,10 +7977,10 @@ index 79866112..6fd17813 100644 2.43.0 -From 1b14bc4a1b29d88aea160c27a85dfda8e2f487e5 Mon Sep 17 00:00:00 2001 +From 4974d2f59515ac7cd4455b53b2eb5ac2b5ca6538 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 17 Sep 2020 10:17:47 +0200 -Subject: [PATCH 5/9] Use monospace font for code in figures. +Subject: [PATCH 05/10] Use monospace font for code in figures. --- source/assets/figdag.dot | 8 ++++---- @@ -8124,10 +8124,10 @@ index b3c04d48..1ab8e364 100644 2.43.0 -From 1786b5a246815e78983c2e1503c3dc916de30ffb Mon Sep 17 00:00:00 2001 +From e412b4c5975e03792d2fc19aa9ae926fb1f7a3f1 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Wed, 23 Jun 2021 20:54:27 +0200 -Subject: [PATCH 6/9] Mark code that's not to be highlighted. +Subject: [PATCH 06/10] Mark code that's not to be highlighted. --- source/uax31.tex | 4 ++-- @@ -8152,10 +8152,10 @@ index 79f0f7d0..80b2d666 100644 2.43.0 -From 69b76dd22ec654a5db1633d60e7bbb57d8a1bcca Mon Sep 17 00:00:00 2001 +From 471b4b2a8d50ab688d10fe9897b43be547aa7bfb Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 10:22:07 +0200 -Subject: [PATCH 7/9] Use cxxdraft-htmlgen macros more. +Subject: [PATCH 07/10] Use cxxdraft-htmlgen macros more. --- source/algorithms.tex | 180 +++++++++++++-------------- @@ -11147,10 +11147,10 @@ index 6fd17813..e15e0fbf 100644 2.43.0 -From bdd2930418ed48654903765e805743ca4e0b8d2b Mon Sep 17 00:00:00 2001 +From 54602ee152a089de43f4c32ed35333e06f4f5dd8 Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Sun, 28 Jul 2024 11:08:01 +0200 -Subject: [PATCH 8/9] Remove awkward \linebreaks. +Subject: [PATCH 08/10] Remove awkward \linebreaks. --- source/algorithms.tex | 4 ++-- @@ -11680,10 +11680,10 @@ index e15e0fbf..9c3d1f36 100644 2.43.0 -From 312459dc6fd3ede5e4ac973d64b5c92cc27624ec Mon Sep 17 00:00:00 2001 +From 49fdc3e8836d83d918585d0daec9a20a84be064f Mon Sep 17 00:00:00 2001 From: Eelis van der Weegen Date: Thu, 25 Dec 2025 12:43:53 +0100 -Subject: [PATCH 9/9] Use \literalterminal more. +Subject: [PATCH 09/10] Use \literalterminal more. --- source/lex.tex | 22 +++++++++++----------- @@ -11763,3 +11763,31 @@ index 2e1da4ca..23ea54ce 100644 -- 2.43.0 + +From 13b195b2dc81b891e8f3c52278474437320a8b54 Mon Sep 17 00:00:00 2001 +From: Eelis +Date: Sat, 1 Aug 2026 19:40:39 +0200 +Subject: [PATCH 10/10] [basic.contract.eval] Fix index redirects (#9240) + +--- + source/basic.tex | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/source/basic.tex b/source/basic.tex +index 83936b06..055908d5 100644 +--- a/source/basic.tex ++++ b/source/basic.tex +@@ -7806,8 +7806,8 @@ if a \grammarterm{result-name-introducer}\iref{dcl.contract.res} has been specif + + \pnum + \indexdefn{evaluation semantics|see{contract evaluation semantics}}% +-\indexdefn{checking semantics|see{contract evaluation semantics!checking}}% +-\indexdefn{terminating semantics|see{contract evaluation semantics!terminating}}% ++\indexdefn{checking semantics|see{contract evaluation semantics, checking}}% ++\indexdefn{terminating semantics|see{contract evaluation semantics, terminating}}% + An evaluation of a contract assertion + uses one of the following four \defn{evaluation semantics}: + \defnx{ignore}{contract evaluation semantics!ignore}, +-- +2.43.0 +