[coroutine.handle.noop] (original) (raw)

17 Language support library [support]

17.13 Coroutines [support.coroutine]

17.13.5 No-op coroutines [coroutine.noop]

17.13.5.2 Class coroutine_handle<noop_coroutine_promise> [coroutine.handle.noop]

17.13.5.2.1 General [coroutine.handle.noop.general]

namespace std { template<> struct coroutine_handle<noop_coroutine_promise> { constexpr operator coroutine_handle<>() const noexcept;constexpr explicit operator bool() const noexcept;constexpr bool done() const noexcept;constexpr void operator()() const noexcept;constexpr void resume() const noexcept;constexpr void destroy() const noexcept; noop_coroutine_promise& promise() const noexcept;constexpr void* address() const noexcept;private: coroutine_handle(unspecified);void* ptr; };}

17.13.5.2.2 Conversion [coroutine.handle.noop.conv]

constexpr operator coroutine_handle<>() const noexcept;

Effects: Equivalent to: return coroutine_handle<>​::​from_address(address());

17.13.5.2.4 Resumption [coroutine.handle.noop.resumption]

constexpr void operator()() const noexcept;constexpr void resume() const noexcept;constexpr void destroy() const noexcept;

Remarks: If noop_coroutine_handle is converted to coroutine_handle<>, calls to operator(), resume and destroy on that handle will also have no observable effects.

17.13.5.2.5 Promise access [coroutine.handle.noop.promise]

noop_coroutine_promise& promise() const noexcept;

Returns: A reference to the promise object associated with this coroutine handle.