namespace std::execution {
template<class Sndr, class Rcvr>
concept sender_to =
sender_in<Sndr, env_of_t<Rcvr>> &&
receiver_of<Rcvr, completion_signatures_of_t<Sndr, env_of_t<Rcvr>>> &&
requires (Sndr&& sndr, Rcvr&& rcvr) {
connect(std::forward<Sndr>(sndr), std::forward<Rcvr>(rcvr));
};
}
概要
sender_to
は、Sender型Sndr
がReceiver型Rcvr
と接続可能であることを表すコンセプトである。
例
#include <print>
#include <execution>
namespace ex = std::execution;
struct ValueReceiver {
using receiver_concept = ex::receiver_t;
void set_value(int v) && noexcept
{
std::println("{}", v);
}
};
int main()
{
// 値42を送信するSender
ex::sender auto sndr = ex::just(42);
static_assert(ex::sender_to<decltype(sndr), ValueReceiver>);
// int値を受信して表示するReceiver
ValueReceiver rcvr;
// SenderとReceiverを接続
ex::operation_state auto op = ex::connect(sndr, rcvr);
// Operation Stateを開始
ex::start(op);
}
出力
42
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??