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

履歴 編集

customization point object
<execution>

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

namespace std::execution {
  struct get_completion_signatures_t;
  inline constexpr get_completion_signatures_t get_completion_signatures{};
}

概要

get_completion_signaturesは、Sender完了シグネチャ集合を取得するカスタマイゼーションポイントオブジェクトである。

効果

説明用のsndrdecltype((sndr))Sndr型となる式、envdecltype((env))Env型となる式とする。 式new_sndrtransform_sender(decltype(get-domain-late(sndr, env)){}, sndr, env)とし、型NewSndrdecltype((new_sndr))とする。

get_completion_signatures(sndr, env)は、void(sndr)void(env)が不定順で序列化(indeterminately sequenced)されることを除いて(void(sndr), void(env), CS())と等価である。

ここで、説明用の型CSは下記の通り定義される。

カスタマイゼーションポイント

  • Sendersndr変換後new_sndrに対して、new_sndr.get_completion_signatures(env)が返す型。
  • 変換後Senderの型NewSndrに対して、メンバ型NewSndr::completion_signatures

説明用の式rcvrreceiverのモデルである型Rcvrの右辺値、型Sndrsender_in<Sndr, env_of_t<Rcvr>> == trueとなる型とする。 Sigs...completion_signatures_of_t<Sndr, env_of_t<Rcvr>>によるcompletion_signatures特殊化のテンプレートパラメータと定義する。 CSOを完了関数とする。

Sender型Sndr、もしくは式CSO(rcvr, args...)を呼び出すOperation Stateが潜在的に例外送出するならば、Sigs...の完了シグネチャSigは次の式がtrueとなるべき。

MATCHING-SIG(decayed-typeof<CSO>(decltype(args)...), Sig)

説明用の関数型F1, F2をそれぞれR1(Args1...), R2(Args2...)としたとき、説明専用の式MATCHING-SIG(F1, F2)は、same_as<R1(Args1&&...), R2(Args&&...)> == trueとなる場合にかぎってtrueとなる。

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

int main()
{
  // 値42を送信するSender
  ex::sender auto sndr = ex::just(42);

  // 値完了シグネチャ set_value_t(int)
  auto sigs = ex::get_completion_signatures(sndr, ex::env<>{});
  static_assert(std::same_as<decltype(sigs),
    ex::completion_signatures<ex::set_value_t(int)>>);
}

出力

バージョン

言語

  • C++26

処理系

関連項目

参照