最終更新日時(UTC):
が更新

履歴 編集

customization point object
<execution>

std::execution::set_value(C++26)

namespace std::execution {
  struct set_value_t { unspecified };  // タグ型

  inline constexpr set_value_t set_value{};
}

概要

set_valueは、非同期操作の正常完了を表現する値(value)完了関数である。完了関数の呼び出しは完了操作と呼ばれる。

値完了関数には完了タグset_value_tが関連付けられ、完了操作の値完了シグネチャは戻り値set_value_tと任意個の引数を持つ関数型として表現される。

効果

  • 引数rcvrが左辺値またはconst右辺値の場合、式set_value(rcvr, vs...)不適格となる。
  • そうでなければ、rcvr.set_value(vs...)と等価である。

例外

投げない

カスタマイゼーションポイント

Receiver型の非const右辺値rcvrに対して式rcvr.set_value(vs...)が呼び出される。 このとき、noexcept(rcvr.set_value(vs...)) == trueであること。

説明専用エンティティ

SET-VALUE

説明用の式rcvr, exprに対して、説明専用の式SET-VALUE(rcvr, expr)は下記と等価である。

  • exprの型がvoidのとき、式(expr, set_value(std::move(rcvr)))
  • そうでなければ、式set_value(std::move(rcvr), expr)

TRY-EVAL

説明用の式rcvr, exprに対して、説明専用の式TRY-EVAL(rcvr, expr)は下記と等価である。

TRY-SET-VALUE

説明用の式rcvr, exprに対して、説明専用の式TRY-SET-VALUE(rcvr, expr)rcvrが1回だけ評価されることを除いて、下記と等価。

TRY-EVAL(rcvr, SET-VALUE(rcvr, expr))

SET-VALUE-SIG

説明用の型Tに対して、説明専用の型SET-VALUE-SIG(T)を下記の通り定義する。

  • TCV修飾されたvoidならば、型set_value_t()
  • そうでなければ、型set_value_t(T)

備考

完了関数set_valueSender内部実装から呼び出される想定であり、実行制御ライブラリ利用者が直接利用する必要はない。

#include <execution>
namespace ex = std::execution;

struct ValueReceiver {
  using receiver_concept = ex::receiver_t;

  // 値完了シグネチャ set_value_t(int, int)
  void set_value(int, int) && noexcept {}
};

int main()
{
  ValueReceiver rcvr;
  ex::set_value(std::move(rcvr), 1, 2);
}

出力

バージョン

言語

  • C++26

処理系

関連項目

参照