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.

4456. Decay Data and Child in make-sender

Section: 33.9.2 [exec.snd.expos] Status: New Submitter: Jonathan Wakely Opened: 2025-11-06 Last modified: 2025-11-06

Priority: Not Prioritized

View other active issues in [exec.snd.expos].

View all other issues in [exec.snd.expos].

View all issues with New status.

Discussion:

Addresses US 211-351

The Mandates: for make-sender defines Sndr as a type that is different from what the Returns: element uses.

Proposed resolution:

This wording is relative to N5014.

  1. Modify 33.9.2 [exec.snd.expos], as indicated:

    template<class Tag, class Data = see below, class... Child>
      constexpr auto make-sender(Tag tag, Data&& data, Child&&... child);
    

    -24- Mandates: The following expressions are true:

    • (24.1) — semiregular<Tag>
    • (24.2) — movable-value<Data>
    • (24.3) — (sender<Child> && ...)
    • (24.4) — dependent_sender<Sndr> || sender_in<Sndr>, where Sndr is basic-sender<Tag, Data, Child decay_t<Data>, decay_t<Child>...> as defined below.
      Recommended practice: If evaluation of sender_in<Sndr> results in an uncaught exception from the evaluation of get_completion_signatures<Sndr>(), the implementation should include information about that exception in the resulting diagnostic.

    -25- Returns: A prvalue of type basic-sender<Tag, decay_t<Data>, decay_t<Child>...> that has been direct-list-initialized with the forwarded arguments, where basic-sender is the following exposition-only class template except as noted below.