std::execution::read_env
來自 cppreference.com
定義於標頭檔案 <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
模型
- 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