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.

4419. let_value/error/stopped should specify the attributes of their senders

Section: 33.9.12.10 [exec.let] Status: New Submitter: Eric Niebler Opened: 2025-10-16 Last modified: 2025-10-23

Priority: 1

View all other issues in [exec.let].

View all issues with New status.

Discussion:

Imported from https://github.com/cplusplus/sender-receiver/issues/346.

let_value(sndr, fn) returns make-sender(let-tag, fn, sndr), which means that the let_value sender has one child. 33.9.12.1 [exec.adapt.general] bullet (3.2) says:

A parent sender with a single child sender sndr has an associated attribute object equal to FWD-ENV(get_env(sndr)).

However, let_value(sndr, fn) does not know where it will be started or where it will complete in the general case. The function fn could return schedule(some-scheduler), making the let_value operation complete on some-scheduler. It would be wrong for the let_value(sndr, fn) sender to have sndr's completion schedulers or domains.

let_value/error/stopped must define impls-for<let_xxx_t>::get-attrs to return FWD-ENV(get_env(sndr)) except that it handles the get_completion_scheduler_t<Tag> (for any completion tag Tag) and get_domain_t queries specially.

[2025-10-23; Reflector poll.]

Set priority to 1 after reflector poll.

"Looks like a special case of the problem that P3826 addresses."

Proposed resolution: