Description
[exec.snd.expos]/p24 reads:
For a subexpression
sndr
letSndr
bedecltype((sndr))
. Letrcvr
be a
receiver with an associated environment of typeEnv
such that
sender_in<Sndr, Env>
istrue
.completion-signatures-for<Sndr, Env>
denotes a specialization ofcompletion_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 connectingsndr
andrcvr
. Whensender_in<Sndr, Env>
is
false
, the type denoted bycompletion-signatures-for<Sndr,
, if any, is not a specialization of
Env>completion_signatures
.
This para 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!
I think that we need to add a impls-for<Tag>::get-completion-signatures
hook and define it for all the algorithms. which would be a large change. i'm not sure if there is an easier way.