Created on 2025-01-02.00:00:00 last changed 3 days ago
Proposed resolution:
This wording is relative to N5001.
Modify [exec.snd.expos] as indicated:
-39- Let type `Sndr` be a (possibly `const`-qualified) specialization of basic-sender or an lvalue reference of such, and let `Rcvr` be the type of a receiver with an associated environment of type `Env`. If the type basic-operation<Sndr, Rcvr> is well-formed, let `op` be an lvalue subexpression of that type.
Recommended practice: When the type basic-operation<Sndr, Rcvr> is ill-formedFor a subexpression `sndr` let `Sndr` be `decltype((sndr))`. Let `rcvr` be a receiver with an associated environment of type `Env` such that sender_in<Sndr, Env> is `true`.completion-signatures-for<Sndr, Env> denotes a specialization of `completion_signatures`, the set of whose template arguments correspond to the set of completion operations that are potentially evaluated ([basic.def.odr]) as a result of evaluating `op.start()`.starting ([exec.async.ops]) the operation state that results from connecting `sndr` and `rcvr`. When sender_in<Sndr, Env> is `false`Otherwise, the type denoted by completion-signatures-for<Sndr, Env>, if any, is not a specialization of `completion_signatures`.sender_in<Sndr, Env> is `false`, implementations are encouraged to use the type denoted by completion-signatures-for<Sndr, Env> to communicate to users why.
[ 2025-02-07; Reflector poll ]
Set priority to 2 after reflector poll.
First sentence of p39 should be either "Let the type `Sndr` be ..." or "Let `Sndr` be ...", but not "Let type `Sndr` be ...".
[exec.snd.expos]/p39 reads:
For a subexpression `sndr` let `Sndr` be `decltype((sndr))`. Let `rcvr` be a receiver with an associated environment of type `Env` such that sender_in<Sndr, Env> is `true`. completion-signatures-for<Sndr, Env> denotes a specialization of `completion_signatures`, the set of whose template arguments correspond to the set of completion operations that are potentially evaluated as a result of starting ([exec.async.ops]) the operation state that results from connecting `sndr` and `rcvr`. When sender_in<Sndr, Env> is `false`, the type denoted by completion-signatures-for<Sndr, Env>, if any, is not a specialization of `completion_signatures`.
This paragraph is trying to specify the return type of basic-sender::get_completion_signatures, but it immediately goes off the rails when it tests for the satisfaction of sender_in<Sndr, Env>. The sender_in<Sndr, Env> concept requires that get_completion_signatures(sndr, env) is well-formed and that its type is a specialization of completion_signatures. But the return type of `get_completion_signatures(sndr, env)` is exactly the thing this para is trying to define!
History | |||
---|---|---|---|
Date | User | Action | Args |
2025-02-07 20:50:56 | admin | set | messages: + msg14593 |
2025-01-18 14:56:23 | admin | set | messages: + msg14537 |
2025-01-02 00:00:00 | admin | create |