名稱空間
變體
操作

std::execution::read_env

來自 cppreference.com
< cpp‎ | execution
 
 
執行控制庫
執行概念
執行元件
執行上下文
執行域
前進保證
環境
查詢
完成簽名
傳送器介面卡閉包
協程工具
核心操作
操作狀態
完成
變換
傳送器演算法
傳送器工廠
read_env (讀取環境)
傳送器介面卡
傳送器消費者

 
定義於標頭檔案 <execution>
inline constexpr /*unspecified*/ read_env{};
(C++26 起)
(定製點物件)
呼叫簽名 (Call signature)
execution::sender auto read_env( auto&& query );
(C++26 起)

一個傳送者工廠,它返回一個傳送者,該傳送者會深入接收器的環境並提取與給定查詢物件關聯的當前值。

對於任何查詢物件q,表示式read_env(q)/*make-sender*/(read_env, q)表示式等價的

自定義點物件

名稱execution::read_env表示一個定製點物件,它是一個const函式物件,屬於字面量半規則類型別。為了便於說明,其型別的不帶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