namespace std::execution {
template<class Sndr, class Env = env<>>
concept sender_in =
sender<Sndr> &&
queryable<Env> &&
requires (Sndr&& sndr, Env&& env) {
{ get_completion_signatures(std::forward<Sndr>(sndr), std::forward<Env>(env)) }
-> valid-completion-signatures;
};
}
概要
sender_in
は、Sender型Sndr
が環境Env
において非同期操作を作成できることを表すコンセプトである。
モデル
説明用に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), ex::env<>>);
}
出力
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??