Files
cppdraft_translate/cppdraft/exec/snd/general.md
2025-10-25 03:02:53 +03:00

60 lines
2.5 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[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.11Sender factories") and [[exec.adapt]](exec.adapt "33.9.12Sender 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.2Equality 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.3Sender 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.3Asynchronous operations"))
necessarily results in the potential evaluation ([[basic.def.odr]](basic.def.odr "6.3One-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.10Completion 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)