std::coroutine_handle::done - cppreference.com (original) (raw)

Member of other specializations
bool done() const; (1) (since C++20)
Member of specialization std::coroutine_handlestd::noop\_coroutine\_promise
constexpr bool done() const noexcept; (2) (since C++20)

Checks if a suspended coroutine is suspended at its final suspend point.

  1. Returns true if the coroutine to which *this refers is suspended at its final suspend point, or false if the coroutine is suspended at other suspend points. The behavior is undefined if *this does not refer to a suspended coroutine.

  2. Always returns false.

[edit] Parameters

(none)

[edit] Return value

  1. true if the coroutine is suspended at its final suspend point, false if the coroutine is suspended at other suspend points.

  2. false

[edit] Notes

A no-op coroutine is never considered to be suspended at its final suspend point.

A coroutine with promise object p is considered to be suspended at its final suspend point only if, let e be the result of p.final_suspend(), e.await_ready() returns false. In particular, if p.final_suspend() returns std::suspend_never, then done() never returns true.

[edit] Example