Skip to content

specification of completion-signatures-for in [exec.snd.expos]/p39 is recursive #307

Open
@ericniebler

Description

@ericniebler

[exec.snd.expos]/p24 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 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P0bugSomething isn't workingpending-wg21A paper or an LWG issue exits

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions