This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of New status.
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 objectenv
such that queries are forwarded as follows: