最終更新日時: 2026年04月23日 20時23分26秒 (JST)
yoh が更新

履歴 編集

function
<execution>

# std::execution::task::promise_type::final_suspend(C++26)

    auto final_suspend() noexcept;

## 概要

タスクコルーチンの最終サスペンドポイントを制御するAwaitableオブジェクトを返す。 プログラマが本関数を直接利用することは想定されていない。

## 戻り値

`STATE(*this)`に関連付けられた非同期操作を完了するメンバ関数を持つ、未規定のAwaitableオブジェクトを返す。`st`を`STATE(*this)`への参照とする。非同期完了は最初に`st.handle.destroy()`によってコルーチンフレームを破棄し、続いて下記を呼び出す。

- `bool(st.error)`が`true`のとき、`set_error(std::move(st.rcvr), std::move(st.error))`。そうでなければ、
- `is_void_v<T>`が`true`のとき、`set_value(std::move(st.rcvr))`。そうでなければ、
- `set_value(std::move(st.rcvr), *std::move(st.result))`

## 例外

投げない

## バージョン

### 言語

- C++26

### 処理系

- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??

## 参照

- P3552R3 Add a Coroutine Task Type
- LWG4525. `task`'s `final_suspend` should `move` the result
- LWG4339. `task`'s coroutine frame may be released late