Skip to content

Commit fb3befc

Browse files
authored
final edits maybe? (#259)
1 parent 59268fa commit fb3befc

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

execution.bs

+19-9
Original file line numberDiff line numberDiff line change
@@ -5491,7 +5491,10 @@ template<class Initializer>
54915491
associated environment is equal to the environment associated with the
54925492
receiver used to create it. The lifetime of an asynchronous operation's
54935493
associated operation state does not depend on the lifetimes of either the
5494-
sender or the receiver from which it was created. A sender <dfn lt="send"
5494+
sender or the receiver from which it was created. A sender is started when
5495+
it is connected to a receiver and the resulting asynchronous operation is
5496+
started. A sender's async result is the async result of an asynchronous
5497+
operation created by connecting it to a receiver. A sender <dfn lt="send"
54955498
export=true>sends</dfn> its results by way of the asynchronous operation(s)
54965499
it produces, and a receiver <dfn lt="receive" export=true>receives</dfn>
54975500
those results. A sender is either valid or invalid; it becomes invalid
@@ -7847,12 +7850,19 @@ namespace std::execution {
78477850
execution back to the execution resource on which `sndr` completed.
78487851

78497852
2. The name `on` denotes a pipeable sender adaptor object. For subexpressions
7850-
`sch` and `sndr`, if `decltype((sch))` does not satisfy `scheduler`, or
7851-
`decltype((sndr))` does not satisfy `sender`, `on(sch, sndr)` is ill-formed.
7852-
If `sndr` is a pipeable sender adaptor closure object, `on(sch, sndr)` is
7853-
ambiguous with the partial application of the overload described below.
7853+
`sch` and `sndr`, `on(sch, sndr)` is ill-formed if any of the following
7854+
are `true`:
7855+
7856+
* If `decltype((sch))` does not satisfy `scheduler`, or
7857+
7858+
* If `decltype((sndr))` does not satisfy `sender` and `sndr` is not
7859+
a pipeable sender adaptor closure object ([exec.adapt.objects]), or
7860+
7861+
* If `decltype((sndr))` satisfies `sender` and `sndr` is also
7862+
a pipeable sender adaptor closure object.
78547863

7855-
3. Otherwise, the expression `on(sch, sndr)` is expression-equivalent to:
7864+
3. Otherwise, if `decltype((sndr))` satisfies `sender`, the expression `on(sch,
7865+
sndr)` is expression-equivalent to:
78567866

78577867
<pre highlight="c++">
78587868
transform_sender(
@@ -9467,7 +9477,7 @@ namespace std::execution {
94679477

94689478
## Execution contexts <b>[exec.ctx]</b> ## {#spec-execution.contexts}
94699479

9470-
### `run_loop` <b>[exec.run.loop]</b> ### {#spec-execution.contexts.run_loop}
9480+
### `execution::run_loop` <b>[exec.run.loop]</b> ### {#spec-execution.contexts.run_loop}
94719481

94729482
1. A `run_loop` is an execution resource on which work can be scheduled. It
94739483
maintains a thread-safe first-in-first-out queue of work. Its `run()`
@@ -9822,7 +9832,7 @@ void finish();
98229832
* <i>Mandates:</i> <code><i>is-awaitable</i>&lt;A, Promise></code> is
98239833
`true`, where `A` is the type of the expression above.
98249834

9825-
2. Otherwise, `void(p), expr` if <code><i>is-awaitable</i>&lt;Expr, <i>U</i>></code>
9835+
2. Otherwise, `(void(p), expr)` if <code><i>is-awaitable</i>&lt;Expr, <i>U</i>></code>
98269836
is `true`, where <i>`U`</i> is an unspecified class type that
98279837
is not `Promise` and that lacks a member named `await_transform`.
98289838

@@ -9835,7 +9845,7 @@ void finish();
98359845
3. Otherwise, <code><i>sender-awaitable</i>{expr, p}</code> if
98369846
<code><i>awaitable-sender</i>&lt;Expr, Promise></code> is `true`.
98379847

9838-
4. Otherwise, `void(p), expr`.
9848+
4. Otherwise, `(void(p), expr)`.
98399849

98409850
except that the evaluations of `expr` and `p` are indeterminately sequenced.
98419851

0 commit comments

Comments
 (0)