std::execution::read_env
来自 cppreference.cn
定义于头文件 <execution> |
||
inline constexpr /*unspecified*/ read_env{}; |
(since C++26) (定制点对象) |
|
调用签名 |
||
execution::sender auto read_env( auto&& query ); |
(since C++26) | |
一个发送器工厂,它返回一个发送器,该发送器深入接收器的环境并提取与给定查询对象关联的当前值。
对于任何查询对象 q
,表达式 read_env(q) 与 表达式等价 于 /*make-sender*/(read_env, q)。
定制点对象
名称 execution::read_env
表示一个定制点对象,它是一个常量 函数对象,其类型为 字面量 semiregular
类类型。为了说明目的,其类型的非 cv 限定版本表示为 __read_env_fn
。
__read_env_fn
的所有实例均相等。在相同参数上调用 __read_env_fn
类型的不同实例的效果是等效的,无论表示实例的表达式是左值还是右值,以及是否具有 const 限定符(但是,不要求可调用 volatile 限定的实例)。因此,execution::read_env
可以自由复制,并且其副本可以互换使用。
给定一组类型 Args...
,如果 std::declval<Args>()... 满足上述 execution::read_env
参数的要求,则 __read_env_fn
建模
- std::invocable<__read_env_fn, Args...>,
- std::invocable<const __read_env_fn, Args...>,
- std::invocable<__read_env_fn&, Args...>,和
- std::invocable<const __read_env_fn&, Args...>.
否则,__read_env_fn
的函数调用运算符不参与重载解析。
[编辑] 示例
此工厂的一个示例用法是在接收器的调度器上调度依赖工作,这可以使用 read_env(get_scheduler) 获得
std::execution::sender auto task = std::execution::read_env(std::execution::get_scheduler) | std::execution::let_value([](auto sched) { return std::execution::starts_on(sched, /*some nested work here*/); }); std::this_thread::sync_wait( std::move(task) ); // wait for it to finish