Espacios de nombres
Variantes
Acciones

Archivo de encabezado de la biblioteca estándar <execution> (C++17)

De cppreference.com
< cpp‎ | header
 
 
Archivos de encabezado de la biblioteca estándar
 

Este archivo de encabezado es parte de las bibliotecas de ejecución y algoritmos.

Contenido

Clases

Comprueba si una clase representa una política de ejecución.
(plantilla de clase)[editar]
Definido en el espacio de nombres std::execution
Tipos de políticas de ejecución.
(clase)[editar]

Constantes

Definido en el espacio de nombres std::execution
(C++17)(C++17)(C++17)(C++20)
Objetos de políticas de ejecución globales.
(constante)[editar]

[editar]Sinopsis

namespace std {// rasgo de tipo de política de ejecucióntemplate<class T>struct is_execution_policy;template<class T>constexprbool is_execution_policy_v = is_execution_policy<T>::value;}   namespace std::execution{// política de ejecución secuenciadaclass sequenced_policy;   // política de ejecución paralelaclass parallel_policy;   // política de ejecución paralela y no secuenciadaclass parallel_unsequenced_policy;   // unsequenced execution policyclass unsequenced_policy;   // objetos de política de ejecucióninlineconstexpr sequenced_policy seq{/* no especificado */};inlineconstexpr parallel_policy par{/* no especificado */};inlineconstexpr parallel_unsequenced_policy par_unseq{/* no especificado */};inlineconstexpr unsequenced_policy unseq{/* no especificado */};}   namespace std {// conceptos auxiliarestemplate<class T> concept /*valor-movible*/=/* véase descripción */;// solo de exposición   template<class From, class To> concept /*decae-a*/= same_as<decay_t<From>, To>;// solo de exposición   template<class T> concept /*tipo-clase*/=/*decae-a*/<T, T>&& is_class_v<T>;// solo de exposición   // objetos consultablestemplate<class T> concept /*consultable*/=/* véase descripción */;// solo de exposición   // consultasstruct forwarding_query_t {/* no especificado */};struct get_allocator_t {/* no especificado */};struct get_stop_token_t {/* no especificado */};   inlineconstexpr forwarding_query_t forwarding_query{};inlineconstexpr get_allocator_t get_allocator{};inlineconstexpr get_stop_token_t get_stop_token{};   template<class T>using stop_token_of_t = remove_cvref_t<decltype(get_stop_token(declval<T>()))>;   template<class T> concept /*consulta-de-reenvío*/= forwarding_query(T{});// solo de exposición}   namespace std::execution{// consultasstruct get_domain_t {/* no especificado */};struct get_scheduler_t {/* no especificado */};struct get_delegation_scheduler_t {/* no especificado */};struct get_forward_progress_guarantee_t {/* no especificado */};template<class CPO>struct get_completion_scheduler_t {/* no especificado */};   inlineconstexpr get_domain_t get_domain{};inlineconstexpr get_scheduler_t get_scheduler{};inlineconstexpr get_delegation_scheduler_t get_delegation_scheduler{};enumclass forward_progress_guarantee;inlineconstexpr get_forward_progress_guarantee_t get_forward_progress_guarantee{};template<class CPO>constexpr get_completion_scheduler_t<CPO> get_completion_scheduler{};   struct empty_env {};struct get_env_t {/* no especificado */};inlineconstexpr get_env_t get_env{};   template<class T>using env_of_t = decltype(get_env(declval<T>()));   // dominios de ejecuciónstruct default_domain;   // planificadoresstruct scheduler_t {};   template<class Sch> concept scheduler =/* véase descripción */;   // receptoresstruct receiver_t {};   template<class Rcvr> concept receiver =/* véase descripción */;   template<class Rcvr, class Completions> concept receiver_of =/* véase descripción */;   struct set_value_t {/* no especificado */};struct set_error_t {/* no especificado */};struct set_stopped_t {/* no especificado */};   inlineconstexpr set_value_t set_value{};inlineconstexpr set_error_t set_error{};inlineconstexpr set_stopped_t set_stopped{};   // estados de operaciónstruct operation_state_t {};   template<class O> concept operation_state =/* véase descripción */;   struct start_t;inlineconstexpr start_t start{};   // emisoresstruct sender_t {};   template<class Sndr> concept sender =/* véase descripción */;   template<class Sndr, class Env = empty_env> concept sender_in =/* véase descripción */;   template<class Sndr, class Rcvr> concept sender_to =/* véase descripción */;   template<class... Ts>struct/*lista-de-tipos*/;// solo de exposición   // signaturas de terminaciónstruct get_completion_signatures_t;inlineconstexpr get_completion_signatures_t get_completion_signatures{};   template<class Sndr, class Env = empty_env> requires sender_in<Sndr, Env>using completion_signatures_of_t =/*tipo-resultado-de-llamada*/<get_completion_signatures_t, Sndr, Env>;   template<class... Ts>using/*tupla-decaída*/= tuple<decay_t<Ts>...>;// solo de exposición   template<class... Ts>using/*variante-o-vacío*/=/* véase descripción */;// solo de exposición   template<class Sndr, class Env = empty_env, template<class...>class Tuple =/*tupla-decaída*/, template<class...>class Variant =/*variante-o-vacío*/> requires sender_in<Sndr, Env>using value_types_of_t =/* véase descripción */;   template<class Sndr, class Env = empty_env, template<class...>class Variant =/*variante-o-vacío*/> requires sender_in<Sndr, Env>using error_types_of_t =/* véase descripción */;   template<class Sndr, class Env = empty_env> requires sender_in<Sndr, Env>constexprbool sends_stopped =/* véase descripción */;   template<class Sndr, class Env>using/*tipo-valor-de-emisor-único*/=/* véase descripción */;// solo de exposición   template<class Sndr, class Env> concept /*emisor-único*/=/* véase descripción */;// solo de exposición   template<sender Sndr>using tag_of_t =/* véase descripción */;   // transformaciones de emisorestemplate<class Domain, sender Sndr, /*consultable*/... Env> requires(sizeof...(Env)<=1)constexpr sender decltype(auto) transform_sender( Domain dom, Sndr&& sndr, const Env&... env)noexcept(/* véase descripción */);   // transformaciones de entornotemplate<class Domain, sender Sndr, /*consultable*/ Env>constexpr/*consultable*/ decltype(auto) transform_env(Domain dom, Sndr&& sndr, Env&& env)noexcept;   // aplicación de algoritmo de emisortemplate<class Domain, class Tag, sender Sndr, class... Args>constexpr decltype(auto) apply_sender(Domain dom, Tag, Sndr&& sndr, Args&&... args)noexcept(/* véase descripción */);   // el algoritmo conectar emisorstruct connect_t;inlineconstexpr connect_t connect{};   template<class Sndr, class Rcvr>using connect_result_t = decltype(connect(declval<Sndr>(), declval<Rcvr>()));   // fábricas de emisoresstruct just_t {/* no especificado */};struct just_error_t {/* no especificado */};struct just_stopped_t {/* no especificado */};struct schedule_t {/* no especificado */};   inlineconstexpr just_t just{};inlineconstexpr just_error_t just_error{};inlineconstexpr just_stopped_t just_stopped{};inlineconstexpr schedule_t schedule{};inlineconstexpr/* no especificado */ read_env{};   template<scheduler Sndr>using schedule_result_t = decltype(schedule(declval<Sndr>()));   // adaptadores de emisorestemplate</*tipo-clase*/ D>struct sender_adaptor_closure {};   struct starts_on_t {/* no especificado */};struct continues_on_t {/* no especificado */};struct on_t {/* no especificado */};struct schedule_from_t {/* no especificado */};struct then_t {/* no especificado */};struct upon_error_t {/* no especificado */};struct upon_stopped_t {/* no especificado */};struct let_value_t {/* no especificado */};struct let_error_t {/* no especificado */};struct let_stopped_t {/* no especificado */};struct bulk_t {/* no especificado */};struct split_t {/* no especificado */};struct when_all_t {/* no especificado */};struct when_all_with_variant_t {/* no especificado */};struct into_variant_t {/* no especificado */};struct stopped_as_optional_t {/* no especificado */};struct stopped_as_error_t {/* no especificado */};   inlineconstexpr starts_on_t starts_on{};inlineconstexpr continues_on_t continues_on{};inlineconstexpr on_t on{};inlineconstexpr schedule_from_t schedule_from{};inlineconstexpr then_t then{};inlineconstexpr upon_error_t upon_error{};inlineconstexpr upon_stopped_t upon_stopped{};inlineconstexpr let_value_t let_value{};inlineconstexpr let_error_t let_error{};inlineconstexpr let_stopped_t let_stopped{};inlineconstexpr bulk_t bulk{};inlineconstexpr split_t split{};inlineconstexpr when_all_t when_all{};inlineconstexpr when_all_with_variant_t when_all_with_variant{};inlineconstexpr into_variant_t into_variant{};inlineconstexpr stopped_as_optional_t stopped_as_optional{};inlineconstexpr stopped_as_error_t stopped_as_error{};   // servicios de emisores y receptores   template<class Fn> concept /*signatura-de-terminación*/=/* véase descripción */;// solo de exposición   template</*signatura-de-terminación*/... Fns>struct completion_signatures {};   template<class Sigs> concept /*signaturas-de-terminación-válidas*/=/* véase descripción */;// solo de exposición   template</*signaturas-de-terminación-válidas*/ InputSignatures, /*signaturas-de-terminación-válidas*/ AdditionalSignatures = completion_signatures<>, template<class...>class SetValue =/* véase descripción */, template<class>class SetError =/* véase descripción */, /*signaturas-de-terminación-válidas*/ SetStopped = completion_signatures<set_stopped_t()>>using transform_completion_signatures = completion_signatures</* véase descripción */>;   template<sender Sndr, class Env = empty_env, /*signaturas-de-terminación-válidas*/ AdditionalSignatures = completion_signatures<>, template<class...>class SetValue =/* véase descripción */, template<class>class SetError =/* véase descripción */, /*signaturas-de-terminación-válidas*/ SetStopped = completion_signatures<set_stopped_t()>> requires sender_in<Sndr, Env>using transform_completion_signatures_of = transform_completion_signatures<completion_signatures_of_t<Sndr, Env>, AdditionalSignatures, SetValue, SetError, SetStopped>;   // bucle de ejecuciónclass run_loop;}   namespace std::this_thread{// consumidoresstruct sync_wait_t {/* no especificado */};struct sync_wait_with_variant_t {/* no especificado */};   inlineconstexpr sync_wait_t sync_wait{};inlineconstexpr sync_wait_with_variant_t sync_wait_with_variant{};}   namespace std::execution{struct as_awaitable_t {/* no especificado */};inlineconstexpr as_awaitable_t as_awaitable{};   template</*tipo-clase*/ Promise>struct with_awaitable_senders;}

[editar]Conceptos auxiliares

namespace std {template<class T> concept /*valor-movible*/=// solo de exposición move_constructible<decay_t<T>>&& constructible_from<decay_t<T>, T>&&(!is_array_v<remove_reference_t<T>>);}   namespace std {template<class T> concept /*consultable*/= destructible<T>;// solo de exposición}   namespace std::execution{template<class Sndr, class Env> concept /*emisor-único*/= sender_in<Sndr, Env>&& requires {typename/*tipo-valor-de-emisor-único*/<Sndr, Env>;};}

[editar]Clases auxiliares

namespace std::execution{struct/*variante-vació*/{// solo de exposición/*variante-vació*/()= delete;};}

[editar]enumstd::forward_progress_guarantee

namespace std::execution{enumclass forward_progress_guarantee { concurrent, parallel, weakly_parallel };}

[editar]Concepto scheduler

namespace std::execution{template<class Sch> concept scheduler = derived_from<typename remove_cvref_t<Sch>::scheduler_concept, scheduler_t>&&/*consultable*/<Sch>&& requires(Sch&& sch){{ schedule(std::forward<Sch>(sch))}-> sender;{auto(get_completion_scheduler<set_value_t>( get_env(schedule(std::forward<Sch>(sch)))))}-> same_as<remove_cvref_t<Sch>>;}&& equality_comparable<remove_cvref_t<Sch>>&& copy_constructible<remove_cvref_t<Sch>>;}

[editar]Concepto receiver

namespace std::execution{template<class Rcvr> concept receiver = derived_from<typename remove_cvref_t<Rcvr>::receiver_concept, receiver_t>&& requires(const remove_cvref_t<Rcvr>& rcvr){{ get_env(rcvr)}->/*consultable*/;}&& move_constructible<remove_cvref_t<Rcvr>>&&// r-valores son movibles, y constructible_from<remove_cvref_t<Rcvr>, Rcvr>;// l-valores son copiables   template<class Signature, class Rcvr> concept /*terminación-válida-para*/= requires(Signature* sig){[]<class Tag, class... Args>(Tag(*)(Args...)) requires /*invocable*/<Tag, remove_cvref_t<Rcvr>, Args...>{}(sig);};   template<class Rcvr, class Completions> concept /*tiene-terminaciones*/= requires(Completions* completions){[]</*terminación-válida-para*/<Rcvr>... Sigs>(completion_signatures<Sigs...>*){}(completions);};   template<class Rcvr, class Completions> concept receiver_of = receiver<Rcvr>&&/*tiene-terminaciones*/<Rcvr, Completions>;}

[editar]Concepto operation_state

namespace std::execution{template<class O> concept operation_state = derived_from<typename O::operation_state_concept, operation_state_t>&& is_object_v<O>&& requires(O& o){{ start(o)}noexcept;};}
close