Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/coroutine/coroutine handle/done"

From cppreference.com
m (fmt)
(note that `done()` is useless if `final_suspend()` returns `suspend_never`)
Line 12: Line 12:
 
{{dcl end}}
 
{{dcl end}}
  
Checks if a suspended coroutine is suspended at its final suspended point.
+
Checks if a suspended coroutine is suspended at its final suspend point.
  
 
@1@ Returns {{c|true}} if the coroutine to which {{c|*this}} refers is suspended at its final suspend point, or {{c|false}} if the coroutine is suspended at other suspend points. The behavior is undefined if {{c|*this}} does not refer to a suspended coroutine.
 
@1@ Returns {{c|true}} if the coroutine to which {{c|*this}} refers is suspended at its final suspend point, or {{c|false}} if the coroutine is suspended at other suspend points. The behavior is undefined if {{c|*this}} does not refer to a suspended coroutine.
Line 27: Line 27:
  
 
===Notes===
 
===Notes===
A no-op coroutine is always considered not suspended at its final suspended point.
+
A no-op coroutine is never considered to be suspended at its final suspend point.
 +
 
 +
A coroutine with promise object {{c|p}} is considered to be suspended at its final suspend point only if, let {{c|e}} be the result of {{c|p.final_suspend()}}, {{c|e.await_ready()}} returns {{c/core|true}}. In particular, if {{c|p.final_suspend()}} returns {{ltt|cpp/coroutine/suspend_never|std::suspend_never}}, then {{c|done()}} never returns {{c|true}}.
  
 
===Example===
 
===Example===

Revision as of 08:16, 27 October 2024

 
 
Utilities library
General utilities
Relational operators (deprecated in C++20)
 
Coroutine support
Coroutine traits
Coroutine handle
No-op coroutines
Trivial awaitables
Range generators
(C++23)
 
 
Member of other specializations
bool done() const;
(1) (since C++20)
Member of specialization std::coroutine_handle<std::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.

Contents

Parameters

(none)

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

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 true. In particular, if p.final_suspend() returns std::suspend_never, then done() never returns true.

Example