namespace std::execution {
inline constexpr unspecified write_env{};
}
概要
write_envは、入力Senderとクエリ可能オブジェクトを受け取り、Receiverrcvrと接続(connect)される際に、クエリ可能オブジェクトとget_env(rcvr)を合成した環境に関連付けられたReceiverと接続されるSenderを生成するSenderアダプタである。
効果
説明用の式sndrとenvに対して、decltype((sndr))がsenderを満たさない、もしくはdecltype((env))がqueryableを満たさないとき、呼び出し式write_env(sndr, env)は不適格となる。
そうでなければ、呼び出し式write_env(sndr, env)は式make-sender(write_env, env, sndr)と等価。
Senderアルゴリズムタグ
説明用のwrite-env-tをdecltype(auto(write_env))とする。
Senderアルゴリズム動作説明用のクラステンプレートimpls-forに対して、下記の特殊化が定義される。
template<>
struct impls-for<write-env-t> : default-impls {
static constexpr auto join-env(const auto& state, const auto& env) noexcept {
return see below;
}
static constexpr auto get-env =
[](auto, const auto& state, const auto& rcvr) noexcept {
return join-env(state, FWD-ENV(get_env(rcvr)));
};
template<class Sndr, class... Env>
static consteval void check-types();
};
impls-for<write-env-t>::join-envメンバの呼び出しは下記を満たすオブジェクトeを返す。
- 型
decltype(e)がqueryableのモデルであり、かつ - 与えられたクエリオブジェクト
qに対して、式e.query(q)は式state.query(q)が有効ならばその式と等価。そうでなければ、式e.query(q)はenv.query(q)と等価。 - 型
Sndrと型パックEnvに対して、型Stateをdata-type<Sndr>とし、パックJoinEnvをdecltype(join-env(declval<State>(), FWD-ENV(declval<Env>())))とする。式impls-for<write-env-t>::check-types<Sndr, Env...>()はget_completion_signatures<child-type<Sndr>, JoinEnv...>()と等価。
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??