@@ -7233,22 +7233,24 @@ namespace std::execution {
7233
7233
7234
7234
1. `get_completion_signatures` is a customization point object. Let `sndr` be an
7235
7235
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
7238
7240
<code> (void(sndr), void(env), <i> CS</i> ())</code> except that `void(sndr)`
7239
7241
and `void(env)` are indeterminately sequenced, where <i> `CS`</i> is:
7240
7242
7241
- 1. `decltype(sndr .get_completion_signatures(env))` if that
7243
+ 1. `decltype(new_sndr .get_completion_signatures(env))` if that
7242
7244
type is well-formed,
7243
7245
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,
7245
7247
7246
- 3. Otherwise, if <code><i> is-awaitable</i> <Sndr , <i> env-promise</i> <Env>></code>
7248
+ 3. Otherwise, if <code><i> is-awaitable</i> <NewSndr , <i> env-promise</i> <Env>></code>
7247
7249
is `true`, then:
7248
7250
7249
7251
<pre highlight="c++">
7250
7252
completion_signatures<
7251
- <i> SET-VALUE-SIG</i> (<i> await-result-type</i> <Sndr ,
7253
+ <i> SET-VALUE-SIG</i> (<i> await-result-type</i> <NewSndr ,
7252
7254
<i> env-promise</i> <Env>>), <i> // see [exec.snd.concepts] </i>
7253
7255
set_error_t(exception_ptr),
7254
7256
set_stopped_t()>
@@ -7274,8 +7276,10 @@ namespace std::execution {
7274
7276
7275
7277
2. The name `connect` denotes a customization point object. For subexpressions
7276
7278
`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.
7279
7283
7280
7284
3. Let <i> `connect-awaitable-promise`</i> be the following exposition-only class:
7281
7285
@@ -7383,12 +7387,12 @@ namespace std::execution {
7383
7387
6. The expression `connect(sndr, rcvr)` is
7384
7388
expression-equivalent to:
7385
7389
7386
- 1. `sndr .connect(rcvr)` if that expression is well-formed.
7390
+ 1. `new_sndr .connect(rcvr)` if that expression is well-formed.
7387
7391
7388
7392
* <i> Mandates:</i> The type of the expression above satisfies
7389
7393
`operation_state`.
7390
7394
7391
- 2. Otherwise, <code><i> connect-awaitable</i> (sndr , rcvr)</code> .
7395
+ 2. Otherwise, <code><i> connect-awaitable</i> (new_sndr , rcvr)</code> .
7392
7396
7393
7397
3. *Mandates:* `sender<Sndr> && receiver<Rcvr>` is `true`.
7394
7398
0 commit comments