namespace std::execution {
template<class Sndr, class Env = env<>,
template<class...> class Variant = variant-or-empty>
requires sender_in<Sndr, Env>
using error_types_of_t =
gather-signatures<set_error_t, completion_signatures_of_t<Sndr, Env>, type_identity_t, Variant>;
}
概要
Sender型Sndr
が環境Env
において非同期操作を作成できるとき、完了シグネチャ集合のうちエラー完了シグネチャの引数型集合に対して型情報の変換操作を適用し、新たな型を取得する。
エラー完了シグネチャの引数型集合を{E0, E1, ... EN}
としたとき、変換操作をテンプレートパラメータVariant
で指定する。
Variant
: 引数型集合に適用する型変換操作。
error_types_of_t
のデフォルト動作では、引数型集合のvariant
に変換される。
例
#include <concepts>
#include <execution>
namespace ex = std::execution;
int main()
{
// エラー完了シグネチャを持たないSender
ex::sender auto snd1 = ex::just(123, 'X');
using Types1 = ex::error_types_of_t<decltype(snd1)>;
// Type1 == 有効だがオブジェクト構築不可な型
// エラー完了シグネチャ set_error_t(int)
ex::sender auto snd2 = ex::just_error(42);
using Types2 = ex::error_types_of_t<decltype(snd2)>;
static_assert(std::same_as<Types2, std::variant<int>>);
}
出力
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??