std::experi...future::then(3)
π¦ std::experi...future::then π¦
okay bestie, this page is from the C++ Standard Libary manual (yes, that spelling is literally on the page, iykyk), and it's all about attaching a continuation to a std::experimental::future. no cap.
π NAME π
std::experimental::future::then β std::experimental::future::then
β¨ Synopsis β¨
here's the signature, exactly as it appears:
template< class F >
future</* see below */> then( F&& func ) ;
Attach the continuation func to *this.
β οΈ the behavior is undefined if*thishas no associated shared state (i.e.,valid() == false). like, do not play with that, bestie.
Creates a shared state associated with the future object to be returned, and a copy fd of func constructed as if by DECAY_COPY(std::forward<F>(func)) evaluated in the thread calling then, where DECAY_COPY is defined as:
template<class T>
std::decay_t<T> DECAY_COPY(T&& v)
{
return std::forward<T>(v);
}
When the shared state currently associated with *this is ready, the continuation INVOKE(std::move(fd), std::move(*this)) is called on an unspecified thread of execution, where INVOKE is the operation defined in Callable. If that expression is invalid, the behavior is undefined.
Any value returned from the continuation is stored as the result in the shared state of the returned future object. Any exception propagated from the execution of the continuation is stored as the exceptional result in the shared state of the returned future object.
Let U be the return type of the continuation (i.e. std::result_of_t<std::decay_t<F>(std::experimental::future<T>)>). If U is std::experimental::future<T2> for some type T2, then the return type of then is std::experimental::future<T2>, otherwise it is std::experimental::future<U>. This is known as implicit unwrapping.
If implicit unwrapping takes place and the continuation returns an invalid future, then the shared state is made ready with an exception of type std::future_error with an error condition of std::future_errc::broken_promise.
After this function returns, valid() is false.
πΈ Parameters πΈ
funcβ a continuation to be attached
π Return value π
A std::experimental::future object associated with the shared state created by this object. valid() == true for the returned object.
π Example π
This section is incomplete Reason: no example
π Category π
- Todo no example
kisses bestie, this was served fresh from http://cppreference.com π
version/date 2024.06.10, page std::experi...future::then(3) π«Άβ¨
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms