Init
This commit is contained in:
53
cppdraft/exec/just.md
Normal file
53
cppdraft/exec/just.md
Normal file
@@ -0,0 +1,53 @@
|
||||
[exec.just]
|
||||
|
||||
# 33 Execution control library [[exec]](./#exec)
|
||||
|
||||
## 33.9 Senders [[exec.snd]](exec.snd#exec.just)
|
||||
|
||||
### 33.9.11 Sender factories [[exec.factories]](exec.factories#exec.just)
|
||||
|
||||
#### 33.9.11.2 execution::just, execution::just_error, execution::just_stopped [exec.just]
|
||||
|
||||
[1](#1)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L2901)
|
||||
|
||||
just, just_error, and just_stopped are sender factories
|
||||
whose asynchronous operations complete synchronously in their start operation
|
||||
with a value completion operation,
|
||||
an error completion operation, or
|
||||
a stopped completion operation, respectively[.](#1.sentence-1)
|
||||
|
||||
[2](#2)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L2908)
|
||||
|
||||
The names just, just_error, and just_stopped denote
|
||||
customization point objects[.](#2.sentence-1)
|
||||
|
||||
Let *just-cpo* be one ofjust, just_error, or just_stopped[.](#2.sentence-2)
|
||||
|
||||
For a pack of subexpressions ts,
|
||||
let Ts be the pack of types decltype((ts))[.](#2.sentence-3)
|
||||
|
||||
The expression *just-cpo*(ts...) is ill-formed if
|
||||
|
||||
- [(2.1)](#2.1)
|
||||
|
||||
([*movable-value*](exec.general#concept:movable-value "33.1 General [exec.general]")<Ts> &&...) is false, or
|
||||
|
||||
- [(2.2)](#2.2)
|
||||
|
||||
*just-cpo* is just_error andsizeof...(ts) == 1 is false, or
|
||||
|
||||
- [(2.3)](#2.3)
|
||||
|
||||
*just-cpo* is just_stopped andsizeof...(ts) == 0 is false[.](#2.sentence-4)
|
||||
|
||||
Otherwise, it is expression-equivalent to*make-sender*(*just-cpo*, *product-type*{ts...})[.](#2.sentence-5)
|
||||
|
||||
For just, just_error, and just_stopped,
|
||||
let *set-cpo* beset_value, set_error, and set_stopped, respectively[.](#2.sentence-6)
|
||||
|
||||
The exposition-only class template *impls-for* ([[exec.snd.expos]](exec.snd.expos "33.9.2 Exposition-only entities"))
|
||||
is specialized for *just-cpo* as follows:namespace std::execution {template<>struct *impls-for*<*decayed-typeof*<*just-cpo*>> : *default-impls* {static constexpr auto *start* =[](auto& state, auto& rcvr) noexcept -> void {auto& [...ts] = state; *set-cpo*(std::move(rcvr), std::move(ts)...); }; };}
|
||||
Reference in New Issue
Block a user