|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Coroutine traits | ||||
(C++20) | ||||
| Coroutine handle | ||||
(C++20) | ||||
| No-op coroutines | ||||
(C++20) | ||||
(C++20) | ||||
| Trivial awaitables | ||||
(C++20) | ||||
(C++20) | ||||
| Range generators | ||||
(C++23) |
| Member functions | ||||
| Conversion | ||||
| Observers | ||||
| Control | ||||
coroutine_handle::operator()coroutine_handle::resume | ||||
| Promise access | ||||
| Export/import | ||||
| Non-member functions | ||||
| Helper classes | ||||
Member of other specializations | ||
void operator()()const; void resume()const; | (1) | (since C++20) |
Member of specialization std::coroutine_handle<std::noop_coroutine_promise> | ||
constexprvoid operator()()constnoexcept; constexprvoid resume()constnoexcept; | (2) | (since C++20) |
The behavior is undefined if*this does not refer to suspended coroutine, or the coroutine is not a no-op coroutine and suspended at its final suspend point. A concurrent resumption of the coroutine may result in a data race.
Resumption of a coroutine on an execution agent other than the one on which it was suspended has implementation-defined behavior unless each execution agent either is a thread represented bystd::thread orstd::jthread, or is the thread executingmain.
Contents |
(none)
(none)
If an exception is thrown from the execution of the coroutine, the exception is caught andunhandled_exception is called on the coroutine's promise object. If the call tounhandled_exception throws or rethrows an exception, that exception is propagated.
A coroutine that is resumed on a different execution agent should avoid relying on consistent thread identity throughout, such as holding a mutex object across a suspend point.
| This section is incomplete Reason: no example |
| destroys a coroutine (public member function)[edit] |