diff --git a/execution.bs b/execution.bs index 10182e9..9c7c331 100644 --- a/execution.bs +++ b/execution.bs @@ -5585,10 +5585,7 @@ template <class E> // arguments are not associated entities ([lib.tmpl-heads 1. `execution::when_all` is used to join multiple sender chains and create a sender whose execution is dependent on all of the input senders that only send a single set of values. `execution::when_all_with_variant` is used to join multiple sender chains and create a sender whose execution is dependent on all of the input senders, each of which may have one or more sets of sent values. -2. The name `execution::when_all` denotes a customization point object. For some subexpressions si..., let Si... be decltype((si)).... The expression execution::when_all(si...) is ill-formed if any of the following is true: - - * If the number of subexpressions si... is 0, or - * If any type Si does not satisfy `execution::sender`. +2. The name `execution::when_all` denotes a customization point object. For some subexpressions si..., let Si... be decltype((si)).... The expression execution::when_all(si...) is ill-formed if any type Si does not satisfy `execution::sender`. Otherwise, the expression execution::when_all(si...) is expression-equivalent to: @@ -5607,7 +5604,7 @@ template <class E> // arguments are not associated entities ([lib.tmpl-heads 1. For each sender si, constructs a receiver ri such that: - 1. If execution::set_value(ri, ti...) is called for every ri, `op_state`'s associated stop callback optional is reset and execution::set_value(out_r, t0..., t1..., ..., tn-1...) is called, where `n` the number of subexpressions in si.... + 1. If execution::set_value(ri, ti...) is called for every ri, or if the number of subexpressions in si... is 0, `op_state`'s associated stop callback optional is reset and execution::set_value(out_r, t0..., t1..., ..., tn-1...) is called, where `n` is the number of subexpressions in si.... 2. Otherwise, `execution::set_error` or `execution::set_stopped` was called for at least one receiver ri. If the first such to complete did so with the call execution::set_error(ri, e), `request_stop` is called on `op_state`'s associated stop source. When all child operations have completed, `op_state`'s associated stop callback optional is reset and `execution::set_error(out_r, e)` is called.