std::experimental::packaged_task<R(Args...)>:: packaged_task (library fundamentals TS)
From cppreference.net
<
cpp
|
experimental
|
lib extensions
|
packaged task
|
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)