Created on 2025-03-17.00:00:00 last changed 5 days ago
Proposed resolution:
This wording is relative to N5008.
Modify [exec.when.all] as indicated:
-7- The member impls-for<when_all_t>::get-state is initialized with a callable object equivalent to the following lambda expression:
[]<class Sndr, class Rcvr>(Sndr&& sndr, Rcvr& rcvr) noexcept(noexcept(e)) -> decltype(e) { return e; }
[ Sofia 2025-06-21; Status changed: Voting → WP. ]
[ 2025-06-13; Reflector poll ]
Set status to Tentatively Ready after seven votes in favour during reflector poll.
In [exec.when.all] p7, the impls-for<when_all_t>::get-state member is defined to be equivalent to the following lambda:
[]<class Sndr, class Rcvr>(Sndr&& sndr, Rcvr& rcvr) noexcept(e) -> decltype(e) { return e; }
and e is later defined to be:
std::forward<Sndr>(sndr).apply(make-state<Rcvr>())
Together, the two definitions imply that the `noexcept` clause on the provided lambda is:
noexcept(std::forward<Sndr>(sndr).apply(make-state<Rcvr>()))
which is invalid.
Presumably, the lambda should be defined like so (with an extra `noexcept` operator in the `noexcept` clause):
[]<class Sndr, class Rcvr>(Sndr&& sndr, Rcvr& rcvr) noexcept(noexcept(e)) -> decltype(e) { return e; }
History | |||
---|---|---|---|
Date | User | Action | Args |
2025-06-23 16:37:24 | admin | set | messages: + msg14855 |
2025-06-23 16:37:24 | admin | set | status: voting -> wp |
2025-06-13 11:44:36 | admin | set | status: ready -> voting |
2025-06-13 11:26:30 | admin | set | messages: + msg14824 |
2025-06-13 11:26:30 | admin | set | status: new -> ready |
2025-03-22 11:27:28 | admin | set | messages: + msg14691 |
2025-03-17 00:00:00 | admin | create |