命名空间
变体
操作

std::execution::read_env

来自 cppreference.cn
< cpp‎ | execution
 
 
 
定义于头文件 <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 建模

否则,__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