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

履歴 編集

concept
<execution>

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

namespace std::execution {
  template<class Rcvr>
  concept receiver =
    derived_from<typename remove_cvref_t<Rcvr>::receiver_concept, receiver_t> &&
    requires(const remove_cvref_t<Rcvr>& rcvr) {
      { get_env(rcvr) } -> queryable;
    } &&
    move_constructible<remove_cvref_t<Rcvr>> &&
    constructible_from<remove_cvref_t<Rcvr>, Rcvr>;

  struct receiver_t {};  // タグ型
}

概要

receiverは、型RcvrがReceiver型の要件を満たすことを表すコンセプトである。

下記をみたすクラス型はReceiverとみなせる。

  • receiver_tをメンバ型Rcvr::receiver_conceptとして定義する
  • get_env環境を取得できる
  • ムーブ可能

モデル

final指定されたクラス型はreceiverのモデルではない。

#include <execution>
namespace ex = std::execution;

struct SinkReceiver {
  using receiver_concept = ex::receiver_t;

  void set_value(auto&&...) noexcept {}
  void set_error(auto&&) noexcept {}
  void set_stopped() noexcept {}
};

int main()
{
  static_assert(ex::receiver<SinkReceiver>);
}

出力

バージョン

言語

  • C++26

処理系

関連項目

参照