Title
`let_[*].transform_env` is specified in terms of the `let_*` sender itself instead of its child
Status
ready
Section
[exec.let]
Submitter
Eric Niebler

Created on 2025-02-04.00:00:00 last changed 2 months ago

Messages

Date: 2025-02-11.17:35:18

Proposed resolution:

This wording is relative to N5001.

  1. Modify [exec.let] as indicated:
    -13- Let `sndr` and `env` be subexpressions, and let `Sndr` be `decltype((sndr))`. If sender-for<Sndr, decayed-typeof<let-cpo>> is false, then the expression let-cpo.transform_env(sndr, env) is ill-formed. Otherwise, it is equal to JOIN-ENV(let-env(sndr), FWD-ENV(env)).
      auto& [_, _, child] = sndr;
      return JOIN-ENV(let-env(child), FWD-ENV(env));
    
Date: 2025-02-11.17:35:18

[ Hagenberg 2025-02-11; move to Ready ]

Date: 2025-02-15.00:00:00

[ 2025-02-07; Reflector poll ]

Set priority to 1 after reflector poll.

"We seem to be missing a guarantee that `auto [_,_,child] = sndr;` works. We guarantee that it can be used in a structured binding, but not that it must work with a size of three."

Date: 2025-02-04.00:00:00

Imported from cplusplus/sender-receiver #319.

[exec.let] para 13 reads:

13. Let `sndr` and `env` be subexpressions, and let `Sndr` be `decltype((sndr))`. If sender-for<Sndr, decayed-typeof<let-cpo>> is false, then the expression let-cpo.transform_env(sndr, env) is ill-formed. Otherwise, it is equal to JOIN-ENV(let-env(sndr), FWD-ENV(env)).
The sender passed to `let-env` here should be the child of `sndr`.

History
Date User Action Args
2025-02-11 17:35:18adminsetmessages: + msg14635
2025-02-11 17:35:18adminsetstatus: new -> ready
2025-02-07 22:17:52adminsetmessages: + msg14613
2025-02-04 22:20:22adminsetmessages: + msg14573
2025-02-04 00:00:00admincreate