Created on 2025-02-03.00:00:00 last changed 3 months ago
Proposed resolution:
This wording is relative to N5001.
-5- Letwith-await-transform
be the exposition-only class template:namespace std::execution { template<class T, class Promise> concept has-as-awaitable = // exposition only requires (T&& t, Promise& p) { { std::forward<T>(t).as_awaitable(p) } -> is-awaitable<Promise&>; }; template<class Derived> struct with-await-transform { // exposition only template<class T> T&& await_transform(T&& value) noexcept { return std::forward<T>(value); } template<has-as-awaitable<Derived> T>
decltype(auto)auto await_transform(T&& value) noexcept(noexcept(std::forward<T>(value).as_awaitable(declval<Derived&>()))) -> decltype(std::forward<T>(value).as_awaitable(declval<Derived&>())) { return std::forward<T>(value).as_awaitable(static_cast<Derived&>(*this)); } }; }
[ 2025-02-07; Reflector poll ]
Set status to Tentatively Ready after five votes in favour during reflector poll.
[ Eric provides wording ]
Imported from cplusplus/sender-receiver #309.
[exec.awaitable]/p5
The use of the deduced return type causes the definition of the sender's `as_awaitable` method to be instantiated too early, e.g., when the sender is passed to `get_completion_signatures`.
History | |||
---|---|---|---|
Date | User | Action | Args |
2025-02-07 22:54:03 | admin | set | messages: + msg14624 |
2025-02-07 22:54:03 | admin | set | status: new -> ready |
2025-02-03 14:00:44 | admin | set | messages: + msg14561 |
2025-02-03 14:00:44 | admin | set | messages: + msg14560 |
2025-02-03 00:00:00 | admin | create |