From 12682b8aed7013bfa6fb59fc4d93541af4333e51 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Mon, 3 Nov 2025 16:09:06 +0100 Subject: [PATCH] [execution.syn] Reorder entries to match subclause order Fixes NB US 201-322 (C++26 CD). --- source/exec.tex | 108 +++++++++++++++++++++++------------------------- 1 file changed, 52 insertions(+), 56 deletions(-) diff --git a/source/exec.tex b/source/exec.tex index f038209b1b..66837dd454 100644 --- a/source/exec.tex +++ b/source/exec.tex @@ -484,14 +484,6 @@ template using @\libglobal{env_of_t}@ = decltype(get_env(declval())); - // \ref{exec.prop}, class template \tcode{prop} - template - struct prop; - - // \ref{exec.env}, class template \tcode{env} - template<@\exposconcept{queryable}@... Envs> - struct env; - // \ref{exec.domain.default}, execution domains struct default_domain; @@ -594,6 +586,14 @@ constexpr decltype(auto) apply_sender( Domain dom, Tag, Sndr&& sndr, Args&&... args) noexcept(@\seebelow@); + // \ref{exec.getcomplsigs}, get completion signatures + template + consteval auto get_completion_signatures() -> @\exposconcept{valid-completion-signatures}@ auto; + + template + requires @\libconcept{sender_in}@ + using completion_signatures_of_t = decltype(get_completion_signatures()); + // \ref{exec.connect}, the connect sender algorithm struct @\libglobal{connect_t}@; inline constexpr connect_t @\libglobal{connect}@{}; @@ -664,6 +664,21 @@ inline constexpr stopped_as_error_t @\libglobal{stopped_as_error}@{}; inline constexpr associate_t @\libglobal{associate}@{}; inline constexpr spawn_future_t @\libglobal{spawn_future}@{}; +} + +namespace std::this_thread { + // \ref{exec.consumers}, consumers + struct @\libglobal{sync_wait_t}@ { @\unspec@ }; + struct @\libglobal{sync_wait_with_variant_t}@ { @\unspec@ }; + + 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.consumers}, consumers + struct @\libglobal{spawn_t}@ { @\unspec@ }; + inline constexpr spawn_t spawn{}; // \ref{exec.cmplsig}, completion signatures template @@ -677,31 +692,16 @@ struct dependent_sender_error : exception {}; - // \ref{exec.getcomplsigs}, get completion signatures - template - consteval auto get_completion_signatures() -> @\exposconcept{valid-completion-signatures}@ auto; + // \ref{exec.prop}, class template \tcode{prop} + template + struct prop; - template - requires @\libconcept{sender_in}@ - using completion_signatures_of_t = decltype(get_completion_signatures()); + // \ref{exec.env}, class template \tcode{env} + template<@\exposconcept{queryable}@... Envs> + struct env; // \ref{exec.run.loop}, run_loop class run_loop; -} - -namespace std::this_thread { - // \ref{exec.consumers}, consumers - struct @\libglobal{sync_wait_t}@ { @\unspec@ }; - struct @\libglobal{sync_wait_with_variant_t}@ { @\unspec@ }; - - 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.consumers}, consumers - struct @\libglobal{spawn_t}@ { @\unspec@ }; - inline constexpr spawn_t spawn{}; // \ref{exec.as.awaitable}, coroutine utility \tcode{as_awaitable} struct @\libglobal{as_awaitable_t}@ { @\unspec@ }; @@ -711,33 +711,6 @@ template<@\exposconcept{class-type}@ Promise> struct with_awaitable_senders; - // \ref{exec.scope.concepts}, scope concepts - template - concept @\libconcept{scope_token}@ = @\seebelow@; - - // \ref{exec.scope.simple.counting}, simple counting scope - class simple_counting_scope; - - // \ref{exec.scope.counting}, counting scope - class counting_scope; -} - -namespace std::execution { - // \ref{exec.par.scheduler}, parallel scheduler - class @\libglobal{parallel_scheduler}@; - parallel_scheduler get_parallel_scheduler(); -} - -// \ref{exec.sysctxrepl}, namespace \tcode{system_context_replaceability} -namespace std::execution::@\libglobal{system_context_replaceability}@ { - struct receiver_proxy; - struct bulk_item_receiver_proxy; - struct parallel_scheduler_backend; - - shared_ptr query_parallel_scheduler_backend(); -} - -namespace std::execution { // \ref{exec.affine.on}, coroutine utility \tcode{affine_on} struct @\libglobal{affine_on_t}@ { @\unspec@ }; inline constexpr affine_on_t @\libglobal{affine_on}@{}; @@ -767,6 +740,29 @@ // \ref{exec.task}, class template \tcode{task} template class @\libglobal{task}@; + + // \ref{exec.scope.concepts}, scope concepts + template + concept @\libconcept{scope_token}@ = @\seebelow@; + + // \ref{exec.scope.simple.counting}, simple counting scope + class simple_counting_scope; + + // \ref{exec.scope.counting}, counting scope + class counting_scope; + + // \ref{exec.par.scheduler}, parallel scheduler + class @\libglobal{parallel_scheduler}@; + parallel_scheduler get_parallel_scheduler(); + + // \ref{exec.sysctxrepl}, namespace \tcode{system_context_replaceability} + namespace @\libglobal{system_context_replaceability}@ { + struct receiver_proxy; + struct bulk_item_receiver_proxy; + struct parallel_scheduler_backend; + + shared_ptr query_parallel_scheduler_backend(); + } } \end{codeblock}