auto final_suspend() noexcept;
概要
ジェネレータコルーチンの最終サスペンドポイントを制御するAwaitableオブジェクトを返す。 プログラマが本関数を直接利用することは想定されていない。
事前条件
Promiseオブジェクトが*this
となるコルーチンへのハンドルが、あるgenerator
オブジェクトx
のアクティブスタック(*active_
)のトップにあること。
この関数はコルーチン実行が最終サスペンドポイントに到達したときに呼び出される。
戻り値
下記動作を行うメンバ関数をもつ、未規定の型のAwaitableオブジェクト。
- コルーチンの中断(suspend)時に、ジェネレータ
x
のアクティブスタック(*x.active_
)のトップからコルーチンハンドルをpopし、- アクティブスタックが空でなければトップ要素(
*x.active_->top()
)が指すコルーチンを再開(resume)する。 - アクティブスタックが空の場合は、現在のコルーチンの呼び出し元もしくは再開元(resumer)へ制御フローを戻す。
- アクティブスタックが空でなければトップ要素(
例外
投げない
バージョン
言語
- C++23
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??