最終更新日時(UTC):
が更新

履歴 編集

customization point object
<execution>

std::execution::write_env(C++26)

namespace std::execution {
  inline constexpr unspecified write_env{};
}

概要

write_envは、入力Senderクエリ可能オブジェクトを受け取り、Receiverrcvr接続(connect)される際に、クエリ可能オブジェクトとget_env(rcvr)を合成した環境に関連付けられたReceiverと接続されるSenderを生成するSenderアダプタである。

効果

説明用の式sndrenvに対して、decltype((sndr))senderを満たさない、もしくはdecltype((env))queryableを満たさないとき、呼び出し式write_env(sndr, env)不適格となる。

そうでなければ、呼び出し式write_env(sndr, env)は式make-sender(write_env, env, sndr)と等価。

Senderアルゴリズムタグ

説明用のwrite-env-tdecltype(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に対して、型Statedata-type<Sndr>とし、パックJoinEnvdecltype(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

処理系

関連項目

参照