namespace std::execution {
template<class Sndr, class... Env>
concept sender_in =
sender<Sndr> &&
(sizeof...(Env) <= 1) &&
(queryable<Env> && ...) &&
is-constant<get_completion_signatures<Sndr, Env...>()>;
}
概要
sender_inは、Sender型Sndrが環境Envにおいて非同期操作を作成できることを表すコンセプトである。
説明用のコンセプトis-constantを下記の通り定義する。
template <auto>
concept is-constant = true; // exposition only
モデル
説明用にsndrをdecltype((sndr))がSndr型となる式、rcvrを環境Envに関連付けられたReceiverとする。
ある完了操作の完了シグネチャがcompletion_signatures_of_t<Sndr, Env>で取得されるcompletion_signaturesリストに含まれるとき、SndrとEnvにおける許容可能完了(permissible completion)となる。
sndrとrcvrの接続(connect)後にOperation Stateを開始することで評価されうる完了操作が、全て許容可能完了(permissible completion)である場合、SndrとEnvはsender_in<Sndr, Env>のモデルとなる。
例
#include <execution>
namespace ex = std::execution;
int main()
{
ex::sender auto sndr = ex::just(42);
static_assert(ex::sender_in<decltype(sndr)>);
}
出力
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??