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

履歴 編集

customization point object
<execution>

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

namespace std::execution {
  template<class CPO = void>
  struct get_completion_domain_t { unspecified };

  template<class CPO = void>
  inline constexpr get_completion_domain_t<CPO> get_completion_domain{};
}

概要

get_completion_domain<completion-tag>は、Sender属性から指定完了タグに関連付けられた完了ドメインを取得するクエリオブジェクトである。

コア定数式forwarding_query(get_completion_domain<completion-tag>)true値を返す。

効果

attrsとパックenvsに対して、完了タグcompletion-tagset_value_tset_error_tset_stopped_tのいずれでもなければ、呼び出し式get_completion_domain<completion-tag>(attrs, envs...)不適格となる。 そうでなければ、型Dを下記の通りとして、呼び出し式はMANDATE-NOTHROW(D())と等価である。

  • 式が適格ならばTRY-QUERY(attrs, get_completion_domain<completion-tag>, envs...)の型。
  • そうではなく、completion-tagvoidのとき、式get_completion_domain<set_value_t>(attrs, envs...)の型。
  • そうではなく、下記の式が適格ならばその型。

    TRY-QUERY(get_completion_scheduler<completion-tag>(attrs, envs...),
              get_completion_domain<set_value_t>, envs...)
    

  • そうではなく、scheduler<decltype((attrs))>trueかつenvsが空のパックではないとき、default_domain

  • そうでなければ、呼び出し式get_completion_domain<completion-tag>(attrs, envs...)不適格となる。

例外

投げない

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

クエリ可能オブジェクトqattrsとしたとき、式AS-CONST(q).query(get_completion_domain<completion-tag>, envs...)適格ならば呼び出される。 そうでなければ、qget_completion_schedulerで取得される完了Schedulerとして、同様に式が適格ならば呼び出す。

Tag、式sndr、パックenvsに対して、CScompletion_signatures_of_t<decay_t<decltype((sndr))>, decltype((envs))...>とする。get_completion_domain<Tag>(get_env(sndr), envs...)CSが両者とも適格、かつCS().count-of(Tag()) == 0trueのとき、プログラムは不適格となる。

completion-fnを完了関数、completion-tagを完了関数に関連付けられた完了タグ、argsenvsを部分式のパック、式sndrsender<decltype((sndr))>trueかつget_completion_domain<completion-tag>(get_env(sndr), envs...)となる式、Dをドメインタグとする。sndrReceiverrcvrを接続して作成された非同期操作が完了関数completion-fn(rcvr, args...)を評価するとき、その評価が実行ドメインタグDに関連付けられた実行リソースの実行エージェント上で行われない場合、動作は未定義となる。

バージョン

言語

  • C++26

処理系

関連項目

参照