[coroutine.handle.general] (original) (raw)
17 Language support library [support]
17.13 Coroutines [support.coroutine]
17.13.4 Class template coroutine_handle [coroutine.handle]
17.13.4.1 General [coroutine.handle.general]
namespace std { template<> struct coroutine_handle<void> { constexpr coroutine_handle() noexcept;constexpr coroutine_handle(nullptr_t) noexcept; coroutine_handle& operator=(nullptr_t) noexcept;constexpr void* address() const noexcept;static constexpr coroutine_handle from_address(void* addr);constexpr explicit operator bool() const noexcept;bool done() const;void operator()() const;void resume() const;void destroy() const;private: void* ptr; };template<class Promise> struct coroutine_handle{ constexpr coroutine_handle() noexcept;constexpr coroutine_handle(nullptr_t) noexcept;static coroutine_handle from_promise(Promise&); coroutine_handle& operator=(nullptr_t) noexcept;constexpr void* address() const noexcept;static constexpr coroutine_handle from_address(void* addr);constexpr operator coroutine_handle<>() const noexcept;constexpr explicit operator bool() const noexcept;bool done() const;void operator()() const;void resume() const;void destroy() const; Promise& promise() const;private: void* ptr; };}
An object of typecoroutine_handle<T> is called a coroutine handleand can be used to refer to a suspended or executing coroutine.
A coroutine_handle object whose member address() returns a null pointer value does not refer to any coroutine.
Two coroutine_handle objects refer to the same coroutine if and only if their member address() returns the same non-null value.
If a program declares an explicit or partial specialization ofcoroutine_handle, the behavior is undefined.