From Jason Turner

[exec.get.compl.sched]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp7muyxsqq/{from.md → to.md} +35 -0
tmp/tmp7muyxsqq/{from.md → to.md} RENAMED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### `execution::get_completion_scheduler` <a id="exec.get.compl.sched">[[exec.get.compl.sched]]</a>
2
+
3
+ `get_completion_scheduler<completion-tag>` obtains the completion
4
+ scheduler associated with a completion tag from a sender’s attributes.
5
+
6
+ The name `get_completion_scheduler` denotes a query object template. For
7
+ a subexpression `q`, the expression
8
+ `get_completion_scheduler<completion-tag>(q)` is ill-formed if
9
+ *`completion-tag`* is not one of `set_value_t`, `set_error_t`, or
10
+ `set_stopped_t`. Otherwise,
11
+ `get_completion_scheduler<completion-tag>(q)` is expression-equivalent
12
+ to
13
+
14
+ ``` cpp
15
+ MANDATE-NOTHROW(AS-CONST(q).query(get_completion_scheduler<completion-tag>))
16
+ ```
17
+
18
+ *Mandates:* If the expression above is well-formed, its type satisfies
19
+ `scheduler`.
20
+
21
+ Let *`completion-fn`* be a completion function [[exec.async.ops]]; let
22
+ *`completion-tag`* be the associated completion tag of
23
+ *`completion-fn`*; let `args` be a pack of subexpressions; and let
24
+ `sndr` be a subexpression such that `sender<decltype((sndr))>` is `true`
25
+ and `get_completion_scheduler<completion-tag>(get_env(sndr))` is
26
+ well-formed and denotes a scheduler `sch`. If an asynchronous operation
27
+ created by connecting `sndr` with a receiver `rcvr` causes the
28
+ evaluation of `completion-fn(rcvr, args...)`, the behavior is undefined
29
+ unless the evaluation happens on an execution agent that belongs to
30
+ `sch`’s associated execution resource.
31
+
32
+ The expression
33
+ `forwarding_query(get_completion_scheduler<completion-tag>)` is a core
34
+ constant expression and has value `true`.
35
+