namespace std::execution {
template<class Domain, sender Sndr, queryable... Env>
requires (sizeof...(Env) <= 1)
constexpr sender decltype(auto) transform_sender(Domain dom, Sndr&& sndr, const Env&... env)
noexcept(see below);
}
概要
実行ドメインに応じてSenderを変換する。 Senderオブジェクトの構築時、SenderとReceiver間接続(connect)時のカスタマイゼーションポイントとして機能する。
型変換ではSender型の変換が行われなくなる(恒等変換となる)まで、下記のカスタマイゼーションポイントを再帰的に呼び出す。
- 定義されていれば、
dom.transform_sender
メンバ関数に変換動作を委譲する。 - そうでなければ、デフォルト実行ドメイン
transform_sender
に変換動作を委譲する。
戻り値
説明用の式transformed-sndr
を次の通りとする。
- 適格であるならば、式
dom.transform_sender(std::forward<Sndr>(sndr), env...)
- そうでなければ、
default_domain().transform_sender(std::forward<Sndr>(sndr), env...)
説明用の式final-sndr
を次の通りとする。
sndr
とtransformed-sndr
の型がCV修飾を無視して同一ならば、transformed-sndr
- そうでなければ、式
transform_sender(dom, transformed-sndr, env...)
(再帰適用)
final-sndr
を返す。
例外
noexcept(final-sndr) == true
ならば、例外を投げない。
そうでなければ、Sender変換過程で送出される例外。
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??