Skip to content

Commit 15f6f21

Browse files
authored
Merge pull request #250 from cplusplus/integrate-P3303
integrate P3303R1
2 parents 119a1a2 + adafd74 commit 15f6f21

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

execution.bs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7233,22 +7233,24 @@ namespace std::execution {
72337233

72347234
1. `get_completion_signatures` is a customization point object. Let `sndr` be an
72357235
expression such that `decltype((sndr))` is `Sndr`, and let `env` be an
7236-
expression such that `decltype((env))` is `Env`. Then
7237-
`get_completion_signatures(sndr, env)` is expression-equivalent to
7236+
expression such that `decltype((env))` is `Env`. Let `new_sndr` be the
7237+
expression <code>transform_sender(decltype(<i>get-domain-late</i>(sndr,
7238+
env)){}, sndr, env)</code>, and let `NewSndr` be `decltype((new_sndr))`.
7239+
Then `get_completion_signatures(sndr, env)` is expression-equivalent to
72387240
<code>(void(sndr), void(env), <i>CS</i>())</code> except that `void(sndr)`
72397241
and `void(env)` are indeterminately sequenced, where <i>`CS`</i> is:
72407242

7241-
1. `decltype(sndr.get_completion_signatures(env))` if that
7243+
1. `decltype(new_sndr.get_completion_signatures(env))` if that
72427244
type is well-formed,
72437245

7244-
2. Otherwise, `remove_cvref_t<Sndr>::completion_signatures` if that type is well-formed,
7246+
2. Otherwise, `remove_cvref_t<NewSndr>::completion_signatures` if that type is well-formed,
72457247

7246-
3. Otherwise, if <code><i>is-awaitable</i>&lt;Sndr, <i>env-promise</i>&lt;Env>></code>
7248+
3. Otherwise, if <code><i>is-awaitable</i>&lt;NewSndr, <i>env-promise</i>&lt;Env>></code>
72477249
is `true`, then:
72487250

72497251
<pre highlight="c++">
72507252
completion_signatures<
7251-
<i>SET-VALUE-SIG</i>(<i>await-result-type</i>&lt;Sndr,
7253+
<i>SET-VALUE-SIG</i>(<i>await-result-type</i>&lt;NewSndr,
72527254
<i>env-promise</i>&lt;Env>>), <i>// see [exec.snd.concepts]</i>
72537255
set_error_t(exception_ptr),
72547256
set_stopped_t()>
@@ -7274,8 +7276,10 @@ namespace std::execution {
72747276

72757277
2. The name `connect` denotes a customization point object. For subexpressions
72767278
`sndr` and `rcvr`, let `Sndr` be `decltype((sndr))` and `Rcvr` be
7277-
`decltype((rcvr))`, and let `DS` and `DR` be `decay_t<Sndr>` and
7278-
`decay_t<Rcvr>`, respectively.
7279+
`decltype((rcvr))`, let `new_sndr` be the expression
7280+
<code>transform_sender(decltype(<i>get-domain-late</i>(sndr,
7281+
get_env(rcvr))){}, sndr, get_env(rcvr))</code>, and let `DS` and `DR` be
7282+
`decay_t<decltype((new_sndr))>` and `decay_t<Rcvr>`, respectively.
72797283

72807284
3. Let <i>`connect-awaitable-promise`</i> be the following exposition-only class:
72817285

@@ -7383,12 +7387,12 @@ namespace std::execution {
73837387
6. The expression `connect(sndr, rcvr)` is
73847388
expression-equivalent to:
73857389

7386-
1. `sndr.connect(rcvr)` if that expression is well-formed.
7390+
1. `new_sndr.connect(rcvr)` if that expression is well-formed.
73877391

73887392
* <i>Mandates:</i> The type of the expression above satisfies
73897393
`operation_state`.
73907394

7391-
2. Otherwise, <code><i>connect-awaitable</i>(sndr, rcvr)</code>.
7395+
2. Otherwise, <code><i>connect-awaitable</i>(new_sndr, rcvr)</code>.
73927396

73937397
3. *Mandates:* `sender<Sndr> && receiver<Rcvr>` is `true`.
73947398

0 commit comments

Comments
 (0)