Init
This commit is contained in:
59
cppdraft/exec/snd/general.md
Normal file
59
cppdraft/exec/snd/general.md
Normal file
@@ -0,0 +1,59 @@
|
||||
[exec.snd.general]
|
||||
|
||||
# 33 Execution control library [[exec]](./#exec)
|
||||
|
||||
## 33.9 Senders [[exec.snd]](exec.snd#general)
|
||||
|
||||
### 33.9.1 General [exec.snd.general]
|
||||
|
||||
[1](#1)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L1325)
|
||||
|
||||
Subclauses [[exec.factories]](exec.factories "33.9.11 Sender factories") and [[exec.adapt]](exec.adapt "33.9.12 Sender adaptors") define
|
||||
customizable algorithms that return senders[.](#1.sentence-1)
|
||||
|
||||
Each algorithm has a default implementation[.](#1.sentence-2)
|
||||
|
||||
Let sndr be the result of an invocation of such an algorithm or
|
||||
an object equal to the result ([[concepts.equality]](concepts.equality "18.2 Equality preservation")), and
|
||||
let Sndr be decltype((sndr))[.](#1.sentence-3)
|
||||
|
||||
Let rcvr be a receiver of type Rcvr with associated environment env of type Env such that [sender_to](exec.snd.concepts#concept:sender_to "33.9.3 Sender concepts [exec.snd.concepts]")<Sndr, Rcvr> is true[.](#1.sentence-4)
|
||||
|
||||
For the default implementation of the algorithm that produced sndr,
|
||||
connecting sndr to rcvr and
|
||||
starting the resulting operation state ([[exec.async.ops]](exec.async.ops "33.3 Asynchronous operations"))
|
||||
necessarily results in the potential evaluation ([[basic.def.odr]](basic.def.odr "6.3 One-definition rule")) of
|
||||
a set of completion operations
|
||||
whose first argument is a subexpression equal to rcvr[.](#1.sentence-5)
|
||||
|
||||
Let Sigs be a pack of completion signatures corresponding to
|
||||
this set of completion operations, and
|
||||
let CS be
|
||||
the type of the expression get_completion_signatures<Sndr, Env>()[.](#1.sentence-6)
|
||||
|
||||
Then CS is
|
||||
a specialization of
|
||||
the class template completion_signatures ([[exec.cmplsig]](exec.cmplsig "33.10 Completion signatures")),
|
||||
the set of whose template arguments is Sigs[.](#1.sentence-7)
|
||||
|
||||
If none of the types in Sigs are dependent on the type Env, then
|
||||
the expression get_completion_signatures<Sndr>() is well-formed and
|
||||
its type is CS[.](#1.sentence-8)
|
||||
|
||||
If a user-provided implementation of the algorithm
|
||||
that produced sndr is selected instead of the default:
|
||||
|
||||
- [(1.1)](#1.1)
|
||||
|
||||
Any completion signature
|
||||
that is in the set of types
|
||||
denoted by completion_signatures_of_t<Sndr, Env> and
|
||||
that is not part of Sigs shall correspond to
|
||||
error or stopped completion operations,
|
||||
unless otherwise specified[.](#1.1.sentence-1)
|
||||
|
||||
- [(1.2)](#1.2)
|
||||
|
||||
If none of the types in Sigs are dependent on the type Env, thencompletion_signatures_of_t<Sndr> andcompletion_signatures_of_t<Sndr, Env> shall denote the same type[.](#1.2.sentence-1)
|
||||
Reference in New Issue
Block a user