|
1030 | 1030 | \rSec2[exec.get.compl.sched]{\tcode{execution::get_completion_scheduler}} |
1031 | 1031 |
|
1032 | 1032 | \pnum |
1033 | | -\tcode{get_completion_scheduler<\exposid{completion-tag>}} obtains |
| 1033 | +The name \tcode{get_completion_scheduler} denotes a query object template. |
| 1034 | + |
| 1035 | +\pnum |
| 1036 | +Let \exposid{completion-fn} be a completion function\iref{exec.async.ops}; |
| 1037 | +let \exposid{completion-fn-tag} be |
| 1038 | +the associated completion tag of \exposid{completion-fn}; |
| 1039 | +let \tcode{args} be a pack of subexpressions; and |
| 1040 | +let \tcode{sndr} be a subexpression |
| 1041 | +such that \tcode{\libconcept{sender}<decltype((sndr))>} is \tcode{true} and |
| 1042 | +\tcode{get_completion_scheduler<\exposid{completion-fn-tag}>(get_env(sndr))} |
| 1043 | +is well-formed and denotes a scheduler \tcode{sch}. |
| 1044 | + |
| 1045 | +\pnum |
| 1046 | +\tcode{get_completion_scheduler<\exposid{completion-fn-tag>}} obtains |
1034 | 1047 | the completion scheduler associated with a completion tag |
1035 | 1048 | from a sender's attributes. |
1036 | 1049 |
|
1037 | 1050 | \pnum |
1038 | | -The name \tcode{get_completion_scheduler} denotes a query object template. |
1039 | 1051 | For a subexpression \tcode{q}, |
1040 | | -the expression \tcode{get_completion_scheduler<\exposid{completion-tag}>(q)} |
1041 | | -is ill-formed if \exposid{completion-tag} is not one of |
| 1052 | +the expression \tcode{get_completion_scheduler<\exposid{completion-fn-tag}>(q)} |
| 1053 | +is ill-formed if \exposid{completion-fn-tag} is not one of |
1042 | 1054 | \tcode{set_value_t}, \tcode{set_error_t}, or \tcode{set_stopped_t}. |
1043 | | -Otherwise, \tcode{get_completion_scheduler<\exposid{completion-tag}>(q)} |
| 1055 | +Otherwise, \tcode{get_completion_scheduler<\exposid{completion-fn-tag}>(q)} |
1044 | 1056 | is expression-equivalent to |
1045 | 1057 | \begin{codeblock} |
1046 | | -@\exposid{MANDATE-NOTHROW}@(@\exposid{AS-CONST}@(q).query(get_completion_scheduler<@\exposid{completion-tag}@>)) |
| 1058 | +@\exposid{MANDATE-NOTHROW}@(@\exposid{AS-CONST}@(q).query(get_completion_scheduler<@\exposid{completion-fn-tag}@>)) |
1047 | 1059 | \end{codeblock} |
1048 | 1060 | \mandates |
1049 | 1061 | If the expression above is well-formed, |
1050 | 1062 | its type satisfies \libconcept{scheduler}. |
1051 | 1063 |
|
1052 | 1064 | \pnum |
1053 | | -Let \exposid{completion-fn} be a completion function\iref{exec.async.ops}; |
1054 | | -let \exposid{completion-tag} be |
1055 | | -the associated completion tag of \exposid{completion-fn}; |
1056 | | -let \tcode{args} be a pack of subexpressions; and |
1057 | | -let \tcode{sndr} be a subexpression |
1058 | | -such that \tcode{\libconcept{sender}<decltype((sndr))>} is \tcode{true} and |
1059 | | -\tcode{get_completion_scheduler<\exposid{completion-tag}>(get_env(sndr))} |
1060 | | -is well-formed and denotes a scheduler \tcode{sch}. |
1061 | 1065 | If an asynchronous operation |
1062 | 1066 | created by connecting \tcode{sndr} with a receiver \tcode{rcvr} |
1063 | 1067 | causes the evaluation of \tcode{\exposid{completion-fn}(rcvr, args...)}, |
|
1067 | 1071 |
|
1068 | 1072 | \pnum |
1069 | 1073 | The expression |
1070 | | -\tcode{forwarding_query(get_completion_scheduler<\exposid{completion-tag}>)} |
| 1074 | +\tcode{forwarding_query(get_completion_scheduler<\exposid{completion-fn-tag}>)} |
1071 | 1075 | is a core constant expression and has value \tcode{true}. |
1072 | 1076 |
|
1073 | 1077 | \rSec2[exec.get.await.adapt]{\tcode{execution::get_await_completion_adaptor}} |
|
0 commit comments