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

履歴 編集

concept
<execution>

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

namespace std::execution {
  template<class Sndr, class... Env>
  concept sender_in =
    sender<Sndr> &&
    (sizeof...(Env) <= 1) &&
    (queryable<Env> && ...) &&
    is-constant<get_completion_signatures<Sndr, Env...>()>;
}

概要

sender_inは、Sender型Sndr環境Envにおいて非同期操作を作成できることを表すコンセプトである。

説明用のコンセプトis-constantを下記の通り定義する。

template <auto>
concept is-constant = true;  // exposition only

モデル

説明用にsndrdecltype((sndr))Sndr型となる式、rcvrを環境Envに関連付けられたReceiverとする。

ある完了操作の完了シグネチャがcompletion_signatures_of_t<Sndr, Env>で取得されるcompletion_signaturesリストに含まれるとき、SndrEnvにおける許容可能完了(permissible completion)となる。

sndrrcvr接続(connect)後にOperation Stateを開始することで評価されうる完了操作が、全て許容可能完了(permissible completion)である場合、SndrEnvsender_in<Sndr, Env>のモデルとなる。

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

int main()
{
  ex::sender auto sndr = ex::just(42);
  static_assert(ex::sender_in<decltype(sndr)>);
}

出力

バージョン

言語

  • C++26

処理系

関連項目

参照