namespace std::execution {
struct start_t;
inline constexpr start_t start{};
}
概要
start
は、Operation State関連付けられた非同期操作(asynchronous operation)を開始するカスタマイゼーションポイントオブジェクトである。
効果
式start(op)
は、op
が右辺値の場合は不適格となる。
そうでなければ、op.start()
と等価。
op.start()
がOperation Stateに関連付けられた非同期操作を開始しない場合、式start(op)
の動作は未定義となる。
カスタマイゼーションポイント
Operation Stateop
に対して式op.start()
が呼び出される。
このときnoexcept(op.start()) == true
であること。
備考
start
はSender内部実装から呼び出される想定であり、実行制御ライブラリ利用者が直接利用する必要はない。
例
#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);
// 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++: ??