Content-Length: 9211 | pFad | https://cplusplus.github.io/LWG/issue4190

Issue 4190: Specification of completion-signatures-for in [exec.snd.expos]/p39 is recursive

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.

4190. Specification of completion-signatures-for in [exec.snd.expos]/p39 is recursive

Section: 33.9.2 [exec.snd.expos] Status: New Submitter: Eric Niebler Opened: 2025-01-02 Last modified: 2025-02-07

Priority: 2

View all issues with New status.

Discussion:

33.9.2 [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 (33.3 [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!

[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 ...".

Proposed resolution:

This wording is relative to N5001.

  1. Modify 33.9.2 [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.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 (6.3 [basic.def.odr]) as a result of evaluating op.start().starting (33.3 [exec.async.ops]) the operation state that results from connecting sndr and rcvr. When sender_in<Sndr, Env> is falseOtherwise, the type denoted by completion-signatures-for<Sndr, Env>, if any, is not a specialization of completion_signatures.

    Recommended practice: When the type basic-operation<Sndr, Rcvr> is ill-formedsender_in<Sndr, Env> is false, implementations are encouraged to use the type denoted by completion-signatures-for<Sndr, Env> to communicate to users why.









ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: https://cplusplus.github.io/LWG/issue4190

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy