Namespaces
Variants

std::experimental::packaged_task<R(Args...)>:: packaged_task (library fundamentals TS)

From cppreference.net
packaged_task ( ) noexcept ;
(1) (biblioteca fundamentals TS)
template < class F >
explicit packaged_task ( F && f ) ;
(2) (biblioteca fundamentals TS)
template < class F, class Allocator >
explicit packaged_task ( std:: allocator_arg_t , const Allocator & alloc, F && f ) ;
(3) (biblioteca fundamentals TS)
packaged_task ( const packaged_task & ) = delete ;
(4) (biblioteca fundamentals TS)
packaged_task ( packaged_task && rhs ) noexcept ;
(5) (biblioteca fundamentals TS)

Construye un nuevo std::experimental::packaged_task objeto.

1) Construye un objeto std::experimental::packaged_task sin tarea y sin estado compartido.
2) Construye un objeto std::experimental::packaged_task con un estado compartido y una copia de la tarea, inicializado con std:: forward < F > ( f ) . Este constructor no participa en la resolución de sobrecarga si std:: decay < F > :: type es el mismo tipo que std:: packaged_task < R ( ArgTypes... ) > .
3) Construye un objeto std::experimental::packaged_task con un estado compartido y una copia de la tarea, inicializado con std:: forward < F > ( f ) . Utiliza el asignador proporcionado para asignar la memoria necesaria para almacenar la tarea, que se trata como un asignador con tipo borrado (véase más abajo). Este constructor no participa en la resolución de sobrecarga si std:: decay < F > :: type es del mismo tipo que std:: packaged_task < R ( ArgTypes... ) > .
4) El constructor de copia está eliminado, std::experimental::packaged_task es solo de movimiento.
5) Construye un std::experimental::packaged_task con el estado compartido y la tarea previamente propiedad de rhs , dejando a rhs sin estado compartido y con una tarea en estado movido.

Asignador con borrado de tipo

Los constructores de packaged_task que toman un argumento de asignador alloc tratan ese argumento como un asignador con borrado de tipo. El puntero de recurso de memoria utilizado por packaged_task para asignar memoria se determina usando el argumento del asignador (si se especifica) de la siguiente manera:

Tipo de alloc Valor del puntero al recurso de memoria
No existente (sin especificar asignador en el momento de la construcción) El valor de std:: experimental :: pmr :: get_default_resource ( ) en el momento de la construcción.
std::nullptr_t El valor de std:: experimental :: pmr :: get_default_resource ( ) en el momento de la construcción.
Un tipo puntero convertible a
std:: experimental :: pmr :: memory_resource *
static_cast < std:: experimental :: pmr :: memory_resource * > ( alloc )
Una especialización de
std::experimental::pmr::polymorphic_allocator
alloc. resource ( )
Cualquier otro tipo que cumpla con los requisitos de Asignador Un puntero a un valor de tipo std:: experimental :: pmr :: resource_adaptor < A > ( alloc ) , donde A es el tipo de alloc . El puntero permanece válido solo durante la vida útil del objeto packaged_task .
Ninguno de los anteriores El programa está mal formado.

Parámetros

f - el objetivo invocable (función, función miembro, expresión lambda, functor) a ejecutar
alloc - el asignador de memoria a utilizar al almacenar la tarea
rhs - el std::experimental::packaged_task desde el cual mover

Excepciones

2,3) Cualquier excepción lanzada por el constructor de copia/movimiento de f y posiblemente std::bad_alloc si la asignación de memoria falla.
4) (ninguno)