58 lines
2.1 KiB
Markdown
58 lines
2.1 KiB
Markdown
[exec.read.env]
|
||
|
||
# 33 Execution control library [[exec]](./#exec)
|
||
|
||
## 33.9 Senders [[exec.snd]](exec.snd#exec.read.env)
|
||
|
||
### 33.9.11 Sender factories [[exec.factories]](exec.factories#exec.read.env)
|
||
|
||
#### 33.9.11.3 execution::read_env [exec.read.env]
|
||
|
||
[1](#1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L2950)
|
||
|
||
read_env is a sender factory for a sender
|
||
whose asynchronous operation completes synchronously in its start operation
|
||
with a value completion result equal to
|
||
a value read from the receiver's associated environment[.](#1.sentence-1)
|
||
|
||
[2](#2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L2956)
|
||
|
||
read_env is a customization point object[.](#2.sentence-1)
|
||
|
||
For some query object q,
|
||
the expression read_env(q) is expression-equivalent to*make-sender*(read_env, q)[.](#2.sentence-2)
|
||
|
||
[3](#3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L2962)
|
||
|
||
The exposition-only class template *impls-for* ([[exec.snd.expos]](exec.snd.expos "33.9.2 Exposition-only entities"))
|
||
is specialized for read_env as follows:
|
||
|
||
[ð](#lib:impls-for%3cdecayed-typeof%3cread_env%3e%3e)
|
||
|
||
namespace std::execution {template<>struct *impls-for*<*decayed-typeof*<read_env>> : *default-impls* {static constexpr auto start =[](auto query, auto& rcvr) noexcept -> void {*TRY-SET-VALUE*(rcvr, query(get_env(rcvr))); }; }; template<class Sndr, class Env>static consteval void *check-types*();}
|
||
|
||
[ð](#lib:check-types,impls-for%3cdecayed-typeof%3cread_env%3e%3e)
|
||
|
||
`template<class Sndr, class Env>
|
||
static consteval void check-types();
|
||
`
|
||
|
||
[4](#4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L2988)
|
||
|
||
Let Q be decay_t<*data-type*<Sndr>>[.](#4.sentence-1)
|
||
|
||
[5](#5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/exec.tex#L2991)
|
||
|
||
*Throws*: An exception of an unspecified type derived from exception if
|
||
the expression Q()(env) is ill-formed or has type void, whereenv is an lvalue subexpression whose type is Env[.](#5.sentence-1)
|