tmp/tmpadx46bog/{from.md → to.md}
RENAMED
|
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
### `execution::get_completion_signatures` <a id="exec.getcomplsigs">[[exec.getcomplsigs]]</a>
|
| 2 |
+
|
| 3 |
+
``` cpp
|
| 4 |
+
template<class Sndr, class... Env>
|
| 5 |
+
consteval auto get_completion_signatures() -> valid-completion-signatures auto;
|
| 6 |
+
```
|
| 7 |
+
|
| 8 |
+
Let except be an rvalue subexpression of an unspecified class type
|
| 9 |
+
Except such that `<`Except`> && derived_from<`Except`, exception>` is
|
| 10 |
+
`true`. Let *`CHECKED-COMPLSIGS`*`(`e`)` be e if e is a core constant
|
| 11 |
+
expression whose type satisfies `valid-completion-signatures`;
|
| 12 |
+
otherwise, it is the following expression:
|
| 13 |
+
|
| 14 |
+
``` cpp
|
| 15 |
+
(e, throw except, completion_signatures())
|
| 16 |
+
```
|
| 17 |
+
|
| 18 |
+
Let *`get-complsigs`*`<Sndr, Env...>()` be expression-equivalent to
|
| 19 |
+
`remove_reference_t<Sndr>::template get_completion_signatures<Sndr, Env...>()`.
|
| 20 |
+
Let `NewSndr` be `Sndr` if `sizeof...(Env) == 0` is `true`; otherwise,
|
| 21 |
+
`decltype(`s`)` where s is the following expression:
|
| 22 |
+
|
| 23 |
+
``` cpp
|
| 24 |
+
transform_sender(
|
| 25 |
+
get-domain-late(declval<Sndr>(), declval<Env>()...),
|
| 26 |
+
declval<Sndr>(),
|
| 27 |
+
declval<Env>()...)
|
| 28 |
+
```
|
| 29 |
+
|
| 30 |
+
*Constraints:* `sizeof...(Env) <= 1` is `true`.
|
| 31 |
+
|
| 32 |
+
*Effects:* Equivalent to: `return `e`;` where e is expression-equivalent
|
| 33 |
+
to the following:
|
| 34 |
+
|
| 35 |
+
- *`CHECKED-COMPLSIGS`*`(`*`get-complsigs`*`<NewSndr, Env...>())` if
|
| 36 |
+
*`get-complsigs`*`<NewSndr, Env...>()` is a well-formed expression.
|
| 37 |
+
- Otherwise, *`CHECKED-COMPLSIGS`*`(`*`get-complsigs`*`<NewSndr>())` if
|
| 38 |
+
*`get-complsigs`*`<NewSndr>()` is a well-formed expression.
|
| 39 |
+
- Otherwise,
|
| 40 |
+
``` cpp
|
| 41 |
+
completion_signatures<
|
| 42 |
+
SET-VALUE-SIG(await-result-type<NewSndr, env-promise<Env>...>), // [exec.snd.concepts]
|
| 43 |
+
set_error_t(exception_ptr),
|
| 44 |
+
set_stopped_t()>
|
| 45 |
+
```
|
| 46 |
+
|
| 47 |
+
if `is-awaitable<NewSndr, `*`env-promise`*`<Env>...>` is `true`.
|
| 48 |
+
- Otherwise,
|
| 49 |
+
`(throw `*`dependent-sender-error`*`(), completion_signatures())` if
|
| 50 |
+
`sizeof...(Env) == 0` is `true`, where *`dependent-sender-error`* is
|
| 51 |
+
`dependent_sender_error` or an unspecified type derived publicly and
|
| 52 |
+
unambiguously from `dependent_sender_error`.
|
| 53 |
+
- Otherwise, `(throw `except`, completion_signatures())`.
|
| 54 |
+
|
| 55 |
+
Given a type `Env`, if `completion_signatures_of_t<Sndr>` and
|
| 56 |
+
`completion_signatures_of_t<Sndr, Env>` are both well-formed, they shall
|
| 57 |
+
denote the same type.
|
| 58 |
+
|
| 59 |
+
Let `rcvr` be an rvalue whose type `Rcvr` models `receiver`, and let
|
| 60 |
+
`Sndr` be the type of a sender such that
|
| 61 |
+
`sender_in<Sndr, env_of_t<Rcvr>>` is `true`. Let `Sigs...` be the
|
| 62 |
+
template arguments of the `completion_signatures` specialization named
|
| 63 |
+
by `completion_signatures_of_t<Sndr, env_of_t<Rcvr>>`. Let `CSO` be a
|
| 64 |
+
completion function. If sender `Sndr` or its operation state cause the
|
| 65 |
+
expression `CSO(rcvr, args...)` to be potentially evaluated
|
| 66 |
+
[[basic.def.odr]] then there shall be a signature `Sig` in `Sigs...`
|
| 67 |
+
such that
|
| 68 |
+
|
| 69 |
+
``` cpp
|
| 70 |
+
MATCHING-SIG(decayed-typeof<CSO>(decltype(args)...), Sig)
|
| 71 |
+
```
|
| 72 |
+
|
| 73 |
+
is `true` [[exec.general]].
|
| 74 |
+
|