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

履歴 編集

function template
<execution>

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

    template<class Err>
    auto yield_value(with_error<Err> err);

## 概要

タスクコルーチンにおけるco_yield式の動作を制御する。 プログラマが本関数を直接利用することは想定されていない。

## 適格要件

`std::move(err.error)`が、`error_types`の`set_error_t`引数型のうち正確に1つに変換可能であること。そのような型を`Cerr`とする。

## 戻り値

呼び出し元コルーチンをサスペンドし、`STATE(*this)`に関連付けられた非同期操作を完了させるメンバ関数をもつ、未規定な型のAwaitableオブジェクトを返す。`st`を`STATE(*this)`への参照とする。非同期完了は最初に`st.handle.destroy()`によってコルーチンフレームを破棄し、続いて`set_error(std::move(st.rcvr), Cerr(std::move(err.error)))`を呼び出す。

## バージョン

### 言語

- C++26

### 処理系

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

## 関連項目

- `execution::with_error`

## 参照

- P3552R3 Add a Coroutine Task Type
- LWG4339. `task`'s coroutine frame may be released late