namespace std::execution {
template<completion-signature... Fns>
struct completion_signatures {
template<class Tag>
static constexpr size_t count-of(Tag) { return see below; }
template<class Fn>
static constexpr void for-each(Fn&& fn) { // exposition only
(std::forward<Fn>(fn)(static_cast<Fns*>(nullptr)), ...);
}
};
}
概要
completion_signaturesクラステンプレートは、完了シグネチャの集合をテンプレートパラメータとして表現する。
式tagのdecayed型をTagとしたとき、説明専用のメンバ関数count-ofはFns中のTag(Ts...)形式で表される関数型の個数を返す。
説明専用のコンセプト valid-completion-signatures
template<class Sigs>
concept valid-completion-signatures = see below;
Sigsがcompletion_signaturesクラステンプレートの特殊化であるとき、Sigsは説明専用コンセプトvalid-completion-signaturesのモデルである。
テンプレートパラメータ制約
Fnsの各要素Fnが、下記の説明専用コンセプトcompletion-signatureを満たすこと。
template<class Fn>
concept completion-signature = see below;
型Fnが下記いずれかを満たす関数型であるとき、Fnはコンセプトcompletion-signatureを満たす。
set_value_t(Vs...)(Vsはオブジェクト型または参照型のパック)set_error_t(Err)(Errはオブジェクト型または参照型)set_stopped_t()
例
#include <execution>
namespace ex = std::execution;
int main()
{
// 下記の完了操作をサポートする完了シグネチャ集合型
// 値完了 set_value(int), set_value(int, int)
// エラー完了 set_error(std::exception_ptr)
// 停止完了 set_stopped()
using Sigs = ex::completion_signatures<
ex::set_value_t(int),
ex::set_value_t(int, int),
ex::set_error_t(std::exception_ptr),
ex::set_stopped_t()
>;
}
出力
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??
関連項目
execution::get_completion_signaturesexecution::set_value_texecution::set_error_texecution::set_stopped_t