task::promise_type::return_void/value lack a specificationSection: 33.13.6.5 [task.promise] Status: New Submitter: Dietmar Kühl Opened: 2025-09-01 Last modified: 2025-09-01
Priority: Not Prioritized
View other active issues in [task.promise].
View all other issues in [task.promise].
View all issues with New status.
Discussion:
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.
Proposed resolution:
Insert the following paragraphs in 33.13.6.5 [task.promise]
after the specification of unhandled_stopped:
coroutine_handle<> unhandled_stopped();-13- Effects: Completes the asynchronous operation associated with
STATE(*this)by invokingset_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;-1
57- Returns: An objectenvsuch that queries are forwarded as follows: