Title
task::promise_type::return_void/value lack a specification
Status
new
Section
[task.promise]
Submitter
Dietmar Kühl

Created on 2025-09-01.00:00:00 last changed 2 weeks ago

Messages

Date: 2025-09-01.20:27:17

Proposed resolution:

Insert the following paragraphs in [task.promise] after the specification of unhandled_stopped:

coroutine_handle<> unhandled_stopped();

-13- Effects: Completes the asynchronous operation associated with STATE(*this) by invoking set_stopped(std::move(RCVR(*this))).

-14- Returns: noop_coroutine().

void return_void();

-15- Effects: does nothing.


template<class V>
  void return_value(V&& v);

-16- Effects: Equivalent to result.emplace(std::forward<V>(v)).

unspecified get_env() const noexcept;

-157- Returns: An object env such that queries are forwarded as follows:

Date: 2025-09-01.00:00:00

The synopsis for std::execution::task<T, E>::promise_type declares return_void() or return_value(V&&). However, there is no specification of what these functions actually do. return_void() doesn’t need to do anything at all. return_value(V&& v) needs to store v into the result.

History
Date User Action Args
2025-09-01 20:27:17adminsetmessages: + msg15006
2025-09-01 00:00:00admincreate