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

履歴 編集

class template
<execution>

std::execution::basic-sender(C++26)

namespace std::execution {
  template<class Tag, class Data, class... Child>
  struct basic-sender : product-type<Tag, Data, Child...> {  // exposition only
    using sender_concept = sender_t;
    using indices-for = index_sequence_for<Child...>;        // exposition only

    decltype(auto) get_env() const noexcept {
      auto& [_, data, ...child] = *this;
      return impls-for<Tag>::get-attrs(data, child...);
    }

    template<decays-to<basic-sender> Self, receiver Rcvr>
    auto connect(this Self&& self, Rcvr rcvr) noexcept(see below)
      -> basic-operation<Self, Rcvr> {
      return {std::forward<Self>(self), std::move(rcvr)};
    }

    template<decays-to<basic-sender> Self, class Env>
    auto get_completion_signatures(this Self&& self, Env&& env) noexcept
      -> completion-signatures-for<Self, Env> {
      return {};
    }
  };
}

概要

basic-senderは、Senderアルゴリズム動作仕様定義で用いられる説明専用のクラステンプレートである。

basic-sender<Tag, Data, Child...>senderのモデルであり、Senderアルゴリズム構築の結果型として利用される。

  • Tag : Senderアルゴリズムタグ(例:just, then
  • Data : Senderアルゴリズムに指定された追加の引数。複数個の引数はproduct-type型を用いて単一値として保持する。
  • Child : 子Senderのリスト。Senderファクトリでは0個、Senderアダプタでは通常1個の子Senderを保持する。

クラス仕様

basic-senderの特殊化が集成体となるか否かは未規定である。 basic-sender型の式は構造化束縛における初期化子として利用できる。

basic-sender::connectメンバ関数noexcept節の式は下記の通り。

説明専用のエイリアステンプレートcompletion-signatures-forは、下記の通り定義される。

template<class Sndr, class Env>
using completion-signatures-for = see below;  // exposition only

説明用のsndrdecltype((sndr))Sndr型となる式、rcvrsender_in<Sndr, Env> == trueとなる環境Envに関連付けられたReceiverとする。

completion-signatures-for<Sndr, Env>completion_signaturesの特殊化であり、そのテンプレート引数は sndrrcvrとの接続(connect)結果Operation State開始(start)して得られる可能性のある結果の完了シグネチャ集合となる。

sender_in<Sndr, Env> == falseとなる場合、completion-signatures-for<Sndr, Env>completion_signaturesの特殊化ではない別の型となる。 処理系(標準ライブラリ実装者)は、この型を用いてユーザにエラー理由を通知することが推奨される。

バージョン

言語

  • C++26

関連項目

参照