最終更新日時: 2024年02月24日 16時17分09秒 (JST)
yoh が更新

履歴 編集

function
<generator>

# std::generator::promise_type::final_suspend(C++23)

    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++: ??