You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The current wording of connect(sndr, rcvr) defines the new_sndr expression as transform_sender(decltype(get-domain-late(sndr, get_env(rcvr))){}, sndr, get_env(rcvr)).
It then defines connect(sndr, rcvr) as expression equivalent to new_sndr.connect(rcvr).
As currently worded, this requires evaluating the rcvr expression twice. Note that the first usage in the new_sndr expression is unevaluated, but the second usage in get_env(rcvr) is evaluated.
I think we need to add an extra sentence at the end of this section saying "Where the expression rcvr is only evaluated once." or similar.
The expression connect(sndr, rcvr) is expression-equivalent to:
- (6.1) new_sndr.connect(rcvr) if that expression is well-formed
Mandates: The type of the expression above satisfies operation_state.
- (6.2) Otherwise, connect-awaitable(new_sndr, rcvr)
+except that `rcvr` is evaluated only once.+
Mandates: sender<Sndr> && receiver<Rcvr> is true.
[exec.connect] wording needs to ensure that in `connect(sndr, rcvr)` that `rcvr` expression is only evaluated once · Issue #325 · cplusplus/sender-receiver
Activity
ericniebler commentedon Feb 7, 2025
Proposed resolution
Change [exec.connect] p6 as follows:
ericniebler commentedon Feb 9, 2025
https://cplusplus.github.io/LWG/issue4208