This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of New status.
Section: 33.9.1 [exec.snd.general] Status: New Submitter: Eric Niebler Opened: 2025-02-03 Last modified: 2025-02-07
Priority: 1
View all issues with New status.
Discussion:
Imported from cplusplus/sender-receiver #308.
33.9.1 [exec.snd.general]/p1 reads:
Subclauses 33.9.11 [exec.factories] and 33.9.12 [exec.adapt] define customizable algorithms that return senders. Each algorithm has a default implementation. LetThe emphasized sentence is the problem. Since P2300 got lazy customization, the expressionsndr
be the result of an invocation of such an algorithm or an object equal to the result (18.2 [concepts.equality]), and letSndr
bedecltype((sndr))
. Letrcvr
be a receiver of typeRcvr
with associated environmentenv
of typeEnv
such thatsender_to<Sndr, Rcvr>
istrue
. For the default implementation of the algorithm that producedsndr
, connectingsndr
torcvr
and starting the resulting operation state (33.3 [exec.async.ops]) necessarily results in the potential evaluation (6.3 [basic.def.odr]) of a set of completion operations whose first argument is a subexpression equal torcvr
. LetSigs
be a pack of completion signatures corresponding to this set of completion operations. Then the type of the expressionget_completion_signatures(sndr, env)
is a specialization of the class templatecompletion_signatures
(33.10.1 [exec.util.cmplsig]), the set of whose template arguments isSigs
. If a user-provided implementation of the algorithm that producedsndr
is selected instead of the default, any completion signature that is in the set of types denoted bycompletion_signatures_of_t<Sndr, Env>
and that is not part ofSigs
shall correspond to error or stopped completion operations, unless otherwise specified.
get_completion_signatures(snd, env)
could dispatch to a customization.
We should define a low-level exposition-only
get-completion-signatures
function that does the same as get_completion_signatures
except without the sender transformation.
Then we can express get_completion_signatures
in terms of that.
[2025-02-07; Reflector poll]
Set priority to 1 after reflector poll.
Proposed resolution: