Title
`with-await-transform::await_transform` should not use a deduced return type
Status
ready
Section
[exec.awaitable]
Submitter
Brian Bi

Created on 2025-02-03.00:00:00 last changed 3 months ago

Messages

Date: 2025-02-07.22:54:03

Proposed resolution:

This wording is relative to N5001.

  1. Modify [exec.awaitable] as indicated:
    -5- Let with-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));
            }
        };
    }
    
Date: 2025-02-15.00:00:00

[ 2025-02-07; Reflector poll ]

Set status to Tentatively Ready after five votes in favour during reflector poll.

Date: 2025-02-03.14:00:44

[ Eric provides wording ]

Date: 2025-02-03.00:00:00

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:03adminsetmessages: + msg14624
2025-02-07 22:54:03adminsetstatus: new -> ready
2025-02-03 14:00:44adminsetmessages: + msg14561
2025-02-03 14:00:44adminsetmessages: + msg14560
2025-02-03 00:00:00admincreate