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

履歴 編集

type-alias
<execution>

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

namespace std::execution {
  template<class Sndr, class Env = env<>,
           template<class...> class Tuple = decayed-tuple,
           template<class...> class Variant = variant-or-empty>
    requires sender_in<Sndr, Env>
  using value_types_of_t =
    gather-signatures<set_value_t, completion_signatures_of_t<Sndr, Env>, Tuple, Variant>;
}

概要

Sender型Sndr環境Envにおいて非同期操作を作成できるとき、完了シグネチャ集合のうち値完了シグネチャの引数型リスト集合に対して型情報の変換操作を適用し、新たな型を取得する。

値完了シグネチャの引数型リスト集合を{Ts0..., Ts1..., ... TsN...}としたとき、2段階の型変換操作をテンプレートパラメータTuple, Variantで指定する。

  • Tuple : それぞれの引数型リストTs...に適用する型変換操作。
  • Variant : 上記変換後に、引数型リスト集合に適用する型変換操作。

value_types_of_tのデフォルト動作では、引数型リストtuplevariantに変換される。

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

int main()
{
  // 値完了シグネチャ set_value_t(int, char)
  ex::sender auto snd1 = ex::just(123, 'X');
  using Types1 = ex::value_types_of_t<decltype(snd1)>;
  static_assert(std::same_as<Types1, std::variant<std::tuple<int, char>>>);

  // 値完了シグネチャを持たないSender
  ex::sender auto snd2 = ex::just_error(42);
  using Types2 = ex::value_types_of_t<decltype(snd2)>;
  // Type2 == 有効だがオブジェクト構築不可な型
}

出力

バージョン

言語

  • C++26

処理系

関連項目

参照