|
1098 | 1098 |
|
1099 | 1099 | \pnum
|
1100 | 1100 | The \libconcept{operation_state} concept defines
|
1101 |
| -the requirements of an operation state type\iref{async.ops}. |
| 1101 | +the requirements of an operation state type\iref{exec.async.ops}. |
1102 | 1102 | \begin{codeblock}
|
1103 | 1103 | namespace std::execution {
|
1104 | 1104 | template<class O>
|
|
1113 | 1113 |
|
1114 | 1114 | \pnum
|
1115 | 1115 | If an \libconcept{operation_state} object is destroyed
|
1116 |
| -during the lifetime of its asynchronous operation\iref{async.ops}, |
| 1116 | +during the lifetime of its asynchronous operation\iref{exec.async.ops}, |
1117 | 1117 | the behavior is undefined.
|
1118 | 1118 | \begin{note}
|
1119 | 1119 | The \libconcept{operation_state} concept does not impose requirements
|
|
1132 | 1132 |
|
1133 | 1133 | \pnum
|
1134 | 1134 | The name \tcode{start} denotes a customization point object
|
1135 |
| -that starts\iref{async.ops} |
| 1135 | +that starts\iref{exec.async.ops} |
1136 | 1136 | the asynchronous operation associated with the operation state object.
|
1137 | 1137 | For a subexpression \tcode{op},
|
1138 | 1138 | the expression \tcode{start(op)} is ill-formed
|
|
1141 | 1141 | \tcode{\exposid{MANDATE-NOTHROW}(op.start())}.
|
1142 | 1142 |
|
1143 | 1143 | \pnum
|
1144 |
| -If \tcode{op.start()} does not start\iref{async.ops} |
| 1144 | +If \tcode{op.start()} does not start\iref{exec.async.ops} |
1145 | 1145 | the asynchronous operation associated with the operation state \tcode{op},
|
1146 | 1146 | the behavior of calling \tcode{start(op)} is undefined.
|
1147 | 1147 |
|
|
1151 | 1151 |
|
1152 | 1152 | \pnum
|
1153 | 1153 | For the purposes of this subclause,
|
1154 |
| -a sender is an object whose type satisfies the sender concept\iref{async.ops}. |
| 1154 | +a sender is an object |
| 1155 | +whose type satisfies the sender concept\iref{exec.async.ops}. |
1155 | 1156 |
|
1156 | 1157 | \pnum
|
1157 | 1158 | Subclauses \ref{exec.factories} and \ref{exec.adapt} define
|
|
1173 | 1174 | this set of completion operations.
|
1174 | 1175 | Then the type of the expression \tcode{get_completion_signatures(sndr, env)} is
|
1175 | 1176 | a specialization of
|
1176 |
| -the class template \tcode{completion_signatures}\iref{exec.utils.cmplsigs}, |
| 1177 | +the class template \tcode{completion_signatures}\iref{exec.util.cmplsigs}, |
1177 | 1178 | the set of whose template arguments is \tcode{Sigs}.
|
1178 | 1179 | If a user-provided implementation of the algorithm
|
1179 | 1180 | that produced \tcode{sndr} is selected instead of the default,
|
|
1845 | 1846 | template<class Sndr>
|
1846 | 1847 | concept @\defexposconcept{enable-sender}@ = // \expos
|
1847 | 1848 | @\exposconcept{is-sender}@<Sndr> ||
|
1848 |
| - @\exposconcept{is-awaitable}@<Sndr, @\exposconcept{env-promise}@<empty_env>>; // \ref{exec.awaitables} |
| 1849 | + @\exposconcept{is-awaitable}@<Sndr, @\exposconcept{env-promise}@<empty_env>>; // \ref{exec.awaitable} |
1849 | 1850 |
|
1850 | 1851 | template<class Sndr>
|
1851 | 1852 | concept @\deflibconcept{sender}@ =
|
|
2132 | 2133 | otherwise, \tcode{static_cast<Env>(std::forward<Env>(env))}.
|
2133 | 2134 |
|
2134 | 2135 | \pnum
|
2135 |
| -\mandates \tcode{noexcept(e)} is \tcode{true}. |
| 2136 | +\mandates |
| 2137 | +\tcode{noexcept(e)} is \tcode{true}. |
2136 | 2138 |
|
2137 | 2139 | \pnum
|
2138 | 2140 | \returns
|
|
2707 | 2709 | \pnum
|
2708 | 2710 | The name \tcode{starts_on} denotes a customization point object.
|
2709 | 2711 | For subexpressions \tcode{sch} and \tcode{sndr},
|
2710 |
| -if \tcode{decltype((sch))} does not satisfy \libconcept{scheduler}, or |
| 2712 | +if \tcode{decltype((\newline sch))} does not satisfy \libconcept{scheduler}, or |
2711 | 2713 | \tcode{decltype((sndr))} does not satisfy \libconcept{sender},
|
2712 | 2714 | \tcode{starts_on(sch, sndr)} is ill-formed.
|
2713 | 2715 |
|
|
2724 | 2726 | \pnum
|
2725 | 2727 | Let \tcode{out_sndr} and \tcode{env} be subexpressions
|
2726 | 2728 | such that \tcode{OutSndr} is \tcode{decltype((out_sndr))}.
|
2727 |
| -If \tcode{\exposconcept{sender-for}<OutSndr, starts_on_t>} is \tcode{false}, |
2728 |
| -then the expressions \tcode{starts_on.transform_env(out_sndr, env)} and |
| 2729 | +If \tcode{\exposconcept{sender-for}<Out\-Sndr, starts_on_t>} is \tcode{false}, |
| 2730 | +then the expressions \tcode{starts_on.transform_env(out_sndr, env)} and\linebreak |
2729 | 2731 | \tcode{starts_on.transform_sender(out_sndr, env)} are ill-formed; otherwise
|
2730 | 2732 | \begin{itemize}
|
2731 | 2733 | \item
|
|
2801 | 2803 | \pnum
|
2802 | 2804 | Let \tcode{sndr} and \tcode{env} be subexpressions
|
2803 | 2805 | such that \tcode{Sndr} is \tcode{decltype((sndr))}.
|
2804 |
| -If \tcode{\exposconcept{sender-for}<Sndr, continues_on_t>} is \tcode{false}, |
| 2806 | +If \tcode{\exposconcept{sender-for}<Sndr, continues\-_on_t>} is \tcode{false}, |
2805 | 2807 | then
|
2806 | 2808 | the expression \tcode{continues_on.transform_sender(sndr, env)} is ill-formed;
|
2807 | 2809 | otherwise, it is equal to:
|
|
2933 | 2935 | namespace std::execution {
|
2934 | 2936 | struct @\exposid{receiver-type}@ {
|
2935 | 2937 | using receiver_concept = receiver_t;
|
2936 |
| - @\exposid{state-type}@* @\exposid{state}@; // exposition only |
| 2938 | + @\exposid{state-type}@* @\exposid{state}@; // \expos |
2937 | 2939 |
|
2938 | 2940 | void set_value() && noexcept {
|
2939 | 2941 | visit(
|
|
2972 | 2974 | The member \tcode{\exposid{impls-for}<schedule_from_t>::\exposid{complete}}
|
2973 | 2975 | is initialized with a callable object equivalent to the following lambda:
|
2974 | 2976 | \begin{codeblock}
|
2975 |
| -[]<class Tag, class... Args>(auto, auto& state, auto& rcvr, Tag, Args&&... args) noexcept -> void { |
| 2977 | +[]<class Tag, class... Args>(auto, auto& state, auto& rcvr, Tag, Args&&... args) noexcept |
| 2978 | + -> void { |
2976 | 2979 | using result_t = @\exposid{decayed-tuple}@<Tag, Args...>;
|
2977 | 2980 | constexpr bool nothrow = is_nothrow_constructible_v<result_t, Tag, Args...>;
|
2978 | 2981 |
|
|
3039 | 3042 | \item
|
3040 | 3043 | \tcode{decltype((sndr))} does not satisfy \libconcept{sender} and
|
3041 | 3044 | \tcode{sndr} is not
|
3042 |
| -a pipeable sender adaptor closure object\iref{exec.adapt.objects}, or |
| 3045 | +a pipeable sender adaptor closure object\iref{exec.adapt.obj}, or |
3043 | 3046 | \item
|
3044 | 3047 | \tcode{decltype((sndr))} satisfies \libconcept{sender} and
|
3045 | 3048 | \tcode{sndr }is also a pipeable sender adaptor closure object.
|
|
3063 | 3066 | \item
|
3064 | 3067 | \tcode{decltype((sndr))} does not satisfy \libconcept{sender}, or
|
3065 | 3068 | \item
|
3066 |
| -\tcode{closure} is not a pipeable sender adaptor closure object\iref{exec.adapt.objects}, |
| 3069 | +\tcode{closure} is not a pipeable sender adaptor closure object\iref{exec.adapt.obj}, |
3067 | 3070 | \end{itemize}
|
3068 | 3071 | the expression \tcode{on(sndr, sch, closure)} is ill-formed;
|
3069 | 3072 | otherwise, it is expression-equivalent to:
|
|
3077 | 3080 | \pnum
|
3078 | 3081 | Let \tcode{out_sndr} and \tcode{env} be subexpressions,
|
3079 | 3082 | let \tcode{OutSndr} be \tcode{decltype((out_sndr))}, and
|
3080 |
| -let \tcode{Env} be \tcode{decltype((env))}. |
| 3083 | +let \tcode{Env} be \tcode{decltype((\linebreak env))}. |
3081 | 3084 | If \tcode{\exposconcept{sender-for}<OutSndr, on_t>} is \tcode{false},
|
3082 | 3085 | then the expressions \tcode{on.transform_env(out_sndr, env)} and
|
3083 | 3086 | \tcode{on.transform_sender(out_sndr, env)} are ill-formed.
|
|
3239 | 3242 | For subexpressions \tcode{sndr} and \tcode{f},
|
3240 | 3243 | if \tcode{decltype((sndr))} does not satisfy \libconcept{sender}, or
|
3241 | 3244 | \tcode{decltype((f))} does not satisfy \exposid{movable-value},
|
3242 |
| -\tcode{\exposid{then-cpo}(sndr, f) }is ill-formed. |
| 3245 | +\tcode{\exposid{then-cpo}(\linebreak sndr, f) }is ill-formed. |
3243 | 3246 |
|
3244 | 3247 | \pnum
|
3245 | 3248 | Otherwise,
|
|
3374 | 3377 | return @\exposid{JOIN-ENV}@(@\exposid{env}@, @\exposid{FWD-ENV}@(execution::get_env(@\exposid{rcvr}@)));
|
3375 | 3378 | }
|
3376 | 3379 |
|
3377 |
| - Rcvr& @\exposid{rcvr}@; // exposition only |
3378 |
| - Env @\exposid{env}@; // exposition only |
| 3380 | + Rcvr& @\exposid{rcvr}@; // \expos |
| 3381 | + Env @\exposid{env}@; // \expos |
3379 | 3382 | };
|
3380 | 3383 | }
|
3381 | 3384 | \end{codeblock}
|
|
3392 | 3395 | using ops2_variant_t = @\seebelow@;
|
3393 | 3396 |
|
3394 | 3397 | struct @\exposid{state-type}@ {
|
3395 |
| - fn_t @\exposid{fn}@; // exposition only |
3396 |
| - env_t @\exposid{env}@; // exposition only |
3397 |
| - args_variant_t @\exposid{args}@; // exposition only |
3398 |
| - ops2_variant_t @\exposid{ops2}@; // exposition only |
| 3398 | + fn_t @\exposid{fn}@; // \expos |
| 3399 | + env_t @\exposid{env}@; // \expos |
| 3400 | + args_variant_t @\exposid{args}@; // \expos |
| 3401 | + ops2_variant_t @\exposid{ops2}@; // \expos |
3399 | 3402 | };
|
3400 | 3403 | return @\exposid{state-type}@{std::forward_like<Sndr>(fn), @\exposid{let-env}@(child), {}, {}};
|
3401 | 3404 | }
|
|
3408 | 3411 | Let \tcode{LetSigs} be a pack of those types in \tcode{Sigs}
|
3409 | 3412 | with a return type of \tcode{\exposid{decayed-typeof}<\exposid{set-cpo}>}.
|
3410 | 3413 | Let \exposid{as-tuple} be an alias template
|
3411 |
| -such that \tcode{\exposid{as-tuple}<Tag(Args...)>} denotes |
| 3414 | +such that \tcode{\exposid{as-tuple}<\linebreak Tag(Args...)>} denotes |
3412 | 3415 | the type \tcode{\exposid{decayed-tuple}<Args...>}.
|
3413 | 3416 | Then \tcode{args_variant_t} denotes
|
3414 | 3417 | the type \tcode{variant<monostate, \exposid{as-tuple}<LetSigs>...>}
|
|
3420 | 3423 | such that \tcode{\exposid{as-sndr2}<Tag(Args...)>} denotes
|
3421 | 3424 | the type \tcode{\exposid{call-result-t}<Fn, decay_t<Args>\&...>}.
|
3422 | 3425 | Then \tcode{ops2_variant_t} denotes
|
3423 |
| -the type \tcode{variant<monostate, connect_result_t<\exposid{as-sndr2}<LetSigs>, \exposid{receiver2}<Rcvr, Env>>...>} |
| 3426 | +the type |
| 3427 | +\begin{codeblock} |
| 3428 | +variant<monostate, connect_result_t<@\exposid{as-sndr2}@<LetSigs>, @\exposid{receiver2}@<Rcvr, Env>>...> |
| 3429 | +\end{codeblock} |
3424 | 3430 | except with duplicate types removed.
|
3425 | 3431 |
|
3426 | 3432 | \pnum
|
|
3460 | 3466 | Let \tcode{sndr} and \tcode{env} be subexpressions, and
|
3461 | 3467 | let \tcode{Sndr} be \tcode{decltype((sndr))}.
|
3462 | 3468 | If
|
3463 |
| -\tcode{\exposconcept{sender-for<}Sndr, \exposid{decayed-typeof}<\exposid{let-cpo}>>} |
| 3469 | +\tcode{\exposconcept{sender-for<}Sndr, \exposid{decayed-\linebreak typeof}<\exposid{let-cpo}>>} |
3464 | 3470 | is \tcode{false},
|
3465 | 3471 | then the expression \tcode{\exposid{let-cpo}.transform_env(sndr, env)}
|
3466 | 3472 | is ill-formed.
|
|
3770 | 3776 | such that \tcode{\exposid{as-tuple}<Tag(Args...)>} denotes
|
3771 | 3777 | the type \tcode{\exposid{decayed-tuple}<Tag, Args...>}.
|
3772 | 3778 | Then \exposid{variant-type} denotes the type
|
3773 |
| -\tcode{variant<tuple<set_stopped_t>, tuple<set_error_t, exception_ptr>, \exposid{as-tuple}<Sigs>...>}, |
| 3779 | +\begin{codeblock} |
| 3780 | +variant<tuple<set_stopped_t>, tuple<set_error_t, exception_ptr>, @\exposid{as-tuple}@<Sigs>...> |
| 3781 | +\end{codeblock} |
3774 | 3782 | but with duplicate types removed.
|
3775 | 3783 |
|
3776 | 3784 | \pnum
|
|
3786 | 3794 | \pnum
|
3787 | 3795 | \effects
|
3788 | 3796 | Initializes \exposid{op_state} with the result of
|
3789 |
| -\tcode{connect(std::forward<Sndr>(sndr), \exposid{split-receiver}\{this\})}. |
| 3797 | +\tcode{connect(std::forward<Sndr>(sndr), \exposid{split-re\-ceiver}\{this\})}. |
3790 | 3798 |
|
3791 | 3799 | \pnum
|
3792 | 3800 | \ensures
|
|
4083 | 4091 |
|
4084 | 4092 | \pnum
|
4085 | 4093 | The alias \tcode{values_tuple} denotes the type
|
4086 |
| -\tcode{tuple<value_types_of_t<Sndrs, env_of_t<Rcvr>, decayed-tuple, optional>...>} |
| 4094 | +\begin{codeblock} |
| 4095 | +tuple<value_types_of_t<Sndrs, env_of_t<Rcvr>, decayed-tuple, optional>...> |
| 4096 | +\end{codeblock} |
4087 | 4097 | if that type is well-formed; otherwise, \tcode{tuple<>}.
|
4088 | 4098 |
|
4089 | 4099 | \pnum
|
4090 | 4100 | The alias \tcode{errors_variant} denotes
|
4091 |
| -the type \tcode{variant<none-such, copy-fail, Es...>} |
| 4101 | +the type \tcode{variant<\exposid{none-such}, \exposid{copy-fail}, Es...>} |
4092 | 4102 | with duplicate types removed,
|
4093 | 4103 | where \tcode{Es} is the pack of the decayed types
|
4094 | 4104 | of all the child senders' possible error result datums.
|
|
4189 | 4199 | }
|
4190 | 4200 | \end{codeblock}
|
4191 | 4201 | if the expression \tcode{decltype(auto(e))(e)} is potentially throwing;
|
4192 |
| -otherwise, \tcode{v.template emplace<decltype(auto(e))>(e)}; |
| 4202 | +otherwise, \tcode{v.template emplace<decl\-type(auto(e))>(e)}; |
4193 | 4203 | and where \tcode{\exposid{TRY-EMPLACE-VALUE}(c, o, as...)},
|
4194 | 4204 | for subexpressions \tcode{c}, \tcode{o}, and pack of subexpressions \tcode{as},
|
4195 | 4205 | is equivalent to:
|
|
4203 | 4213 | \end{codeblock}
|
4204 | 4214 | if the expression \tcode{decayed-tuple<decltype(as)...>\{as...\}}
|
4205 | 4215 | is potentially throwing;
|
4206 |
| -otherwise, \tcode{o.emplace(as...)}. |
| 4216 | +otherwise, \tcode{o.emplace(\linebreak as...)}. |
4207 | 4217 |
|
4208 | 4218 | \pnum
|
4209 | 4219 | The expression \tcode{when_all_with_variant(sndrs...)}
|
|
0 commit comments