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.