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-tagがset_value_t/set_error_t/ set_stopped_tのいずれでもなければ、呼び出し式get_completion_domain<completion-tag>(attrs, envs...)は不適格となる。
そうでなければ、型Dを下記の通りとして、呼び出し式はMANDATE-NOTHROW(D())と等価である。
- 式が適格ならば
TRY-QUERY(attrs, get_completion_domain<completion-tag>, envs...)の型。 - そうではなく、
completion-tagがvoidのとき、式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...)は不適格となる。
例外
投げない
カスタマイゼーションポイント
クエリ可能オブジェクトqをattrsとしたとき、式AS-CONST(q).query(get_completion_domain<completion-tag>, envs...)が適格ならば呼び出される。
そうでなければ、qをget_completion_schedulerで取得される完了Schedulerとして、同様に式が適格ならば呼び出す。
型Tag、式sndr、パックenvsに対して、CSをcompletion_signatures_of_t<decay_t<decltype((sndr))>, decltype((envs))...>とする。get_completion_domain<Tag>(get_env(sndr), envs...)とCSが両者とも適格、かつCS().count-of(Tag()) == 0がtrueのとき、プログラムは不適格となる。
completion-fnを完了関数、completion-tagを完了関数に関連付けられた完了タグ、argsとenvsを部分式のパック、式sndrをsender<decltype((sndr))>がtrueかつget_completion_domain<completion-tag>(get_env(sndr), envs...)となる式、Dをドメインタグとする。sndrとReceiverrcvrを接続して作成された非同期操作が完了関数completion-fn(rcvr, args...)を評価するとき、その評価が実行ドメインタグDに関連付けられた実行リソースの実行エージェント上で行われない場合、動作は未定義となる。
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??