Espacios de nombres
Variantes
Acciones

std::execution::read_env

De cppreference.com
< cpp‎ | execution
 
 
 
Definido en el archivo de encabezado <execution>
inlineconstexpr/*no especificado*/ read_env{};
(desde C++26)
(objeto punto de personalización)
Signatura de la llamada
execution::senderauto read_env(auto&& query );
(desde C++26)

Una fábrica de emisores que devuelve un emisor que llega al entorno de un receptor y extrae el valor actual asociado con un determinado objeto de consulta.

Para cualquier objeto de consulta q, la expresión read_env(q) es de expresión equivalente a /*crear-emisor*/(read_env, q).

Objetos punto de personalización

El nombre execution::read_env denota un objeto punto de personalización, que es un objeto funciónconst de un tipo clase literalsemiregular. Para fines de exposición, la versión no calificada constvolatile de su tipo se denota como __read_env_fn.

Todas los ejemplares de __read_env_fn son iguales. Los efectos de invocar diferentes ejemplares del tipo __read_env_fn sobre los mismos argumentos son equivalentes, independientemente de si la expresión que denota el ejemplar es un l-valor o un r-valor, y está calificada const o no (sin embargo, no se requiere que un ejemplar calificado volatile sea invocable). Por lo tanto, execution::read_env se puede copiar libremente y sus copias se pueden usar indistintamente.

Dado un conjunto de tipos Args..., si std::declval<Args>()... cumple con los requisitos para los argumentos a execution::read_env arriba, __read_env_fn modela

De lo contrario, ningún operador de llamada a función de __read_env_fn participa en la resolución de sobrecargas.

[editar]Ejemplo

Un ejemplo de uso de esta fábrica es planificar trabajo dependiente del planificador del receptor, que se puede obtener con read_env(get_scheduler):

std::execution::senderauto task = std::execution::read_env(std::execution::get_scheduler)| std::execution::let_value([](auto sched){return std::execution::starts_on(sched, /*algo de trabajo anidado aquí*/);});   std::this_thread::sync_wait( std::move(task));// esperar a que termine
close