-
Notifications
You must be signed in to change notification settings - Fork 5
Description
[exec.snd.expos]/p24 reads:
For a subexpression
sndrletSndrbedecltype((sndr)). Letrcvrbe a
receiver with an associated environment of typeEnvsuch 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 connectingsndrandrcvr. 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.