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

履歴 編集

type-alias
<execution>

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

namespace std::exectution {
  template<
    valid-completion-signatures InputSignatures,
    valid-completion-signatures AdditionalSignatures = completion_signatures<>,
    template<class...> class SetValue = default-set-value,
    template<class> class SetError = default-set-error,
    valid-completion-signatures SetStopped = completion_signatures<set_stopped_t()>>
  using transform_completion_signatures = completion_signatures<see below>;
}

概要

完了シグネチャ集合から別の完了シグネチャ集合へ変換するエイリアステンプレート。

テンプレートパラメータとして完了シグネチャ集合と、各完了シグネチャに対して型変更を適用する複数のテンプレート引数をとり、completion_signaturesの新しい特殊化を生成する。

  • InputSignatures : 変換元の入力完了シグネチャ集合
  • AdditionalSignatures : 追加される完了シグネチャ集合(下記3種の変換適用後に追加される)
  • SetValue : 値完了シグネチャ集合に適用する型変換メタ操作
  • SetError : エラー完了シグネチャ集合に適用する型変換メタ操作
  • SetStopped : 停止完了シグネチャを置換する完了シグネチャ集合

詳細仕様

説明専用のエイリアステンプレートdefault-set-value, default-set-errorを次の通り定義する。

template<class... As>
using default-set-value =
  completion_signatures<set_value_t(As...)>;

template<class Err>
using default-set-error =
  completion_signatures<set_error_t(Err)>;

説明用のパック型Asに対して、エイリアステンプレートSetValue<As...>不適格、もしくはvalid-completion-signatures<SetValue<As...>>を満たす型とする。 説明用の型Errに対して、エイリアステンプレートSetError<Err>不適格、もしくはvalid-completion-signatures<SetError<Error>>を満たす型とする。

説明用のパックVsを、gather-signatures<set_value_t, InputSignatures, SetValue, type-list>で得られるtype-listの型パラメータパックとする。

説明用のパックEsを、gather-signatures<set_error_t, InputSignatures, type_identity_t, error-list>で得られるtype-listの型パラメータパックとする。ここでエイリアステンプレートerror-list<Ts...>type-list<SetError<Ts>...>とする。

gather-signatures<set_stopped_t, InputSignatures, type-list, type-list>type-list<>となるならば、説明用のパックSscompletion_signatures<>とする。そうでなければ、SsSetStoppedとする。

上記いずれかの型が不適格となる場合、下記は不適格となる。

transform_completion_signatures<
  InputSignatures, AdditionalSignatures,
  SetValue, SetError, SetStopped>

そうでなければ、集合AdditionalSignatures, Vs..., Es..., Ssに含まれるcompletion_signatures特殊化のテンプレート引数型の一意な集合をSig...としたとき、transform_completion_signaturescompletion_signatures<Sigs...>のエイリアスとなる。

バージョン

言語

  • C++26

処理系

関連項目

参照