std::experimental::packaged_task<R(Args...)>:: packaged_task (library fundamentals TS)
From cppreference.net
<
cpp
|
experimental
|
lib extensions
|
packaged task
|
packaged_task
(
)
noexcept
;
|
(1) | (spécifications techniques des bibliothèques fondamentales) |
|
template
<
class
F
>
explicit packaged_task ( F && f ) ; |
(2) | (spécifications techniques des bibliothèques fondamentales) |
|
template
<
class
F,
class
Allocator
>
explicit packaged_task ( std:: allocator_arg_t , const Allocator & alloc, F && f ) ; |
(3) | (spécifications techniques des bibliothèques fondamentales) |
|
packaged_task
(
const
packaged_task
&
)
=
delete
;
|
(4) | (spécifications techniques des bibliothèques fondamentales) |
|
packaged_task
(
packaged_task
&&
rhs
)
noexcept
;
|
(5) | (spécifications techniques des bibliothèques fondamentales) |
Construit un nouvel objet
std::experimental::packaged_task
.
1)
Construit un objet
std::experimental::packaged_task
sans tâche et sans état partagé.
2)
Construit un objet
std::experimental::packaged_task
avec un état partagé et une copie de la tâche, initialisé avec
std::
forward
<
F
>
(
f
)
. Ce constructeur ne participe pas à la résolution de surcharge si
std::
decay
<
F
>
::
type
est du même type que
std::
packaged_task
<
R
(
ArgTypes...
)
>
.
3)
Construit un objet
std::experimental::packaged_task
avec un état partagé et une copie de la tâche, initialisé avec
std::
forward
<
F
>
(
f
)
. Utilise l'allocateur fourni pour allouer la mémoire nécessaire au stockage de la tâche, qui est traitée comme un allocateur à type effacé (voir ci-dessous). Ce constructeur ne participe pas à la résolution de surcharge si
std::
decay
<
F
>
::
type
est du même type que
std::
packaged_task
<
R
(
ArgTypes...
)
>
.
4)
Le constructeur de copie est supprimé,
std::experimental::packaged_task
est uniquement déplaçable.
5)
Construit un
std::experimental::packaged_task
avec l'état partagé et la tâche précédemment détenus par
rhs
, laissant
rhs
sans état partagé et avec une tâche déplacée.
Allocateur à effacement de type
Les constructeurs de
packaged_task
prenant un argument d'allocateur
alloc
traitent cet argument comme un allocateur à effacement de type. Le pointeur de ressource mémoire utilisé par
packaged_task
pour allouer de la mémoire est déterminé en utilisant l'argument d'allocateur (s'il est spécifié) comme suit :
Type de
alloc
|
Valeur du pointeur de ressource mémoire |
| Inexistant (aucun allocateur spécifié lors de la construction) | La valeur de std:: experimental :: pmr :: get_default_resource ( ) au moment de la construction. |
| std::nullptr_t | La valeur de std:: experimental :: pmr :: get_default_resource ( ) au moment de la construction. |
|
Un type de pointeur convertible en
std:: experimental :: pmr :: memory_resource * |
static_cast < std:: experimental :: pmr :: memory_resource * > ( alloc ) |
|
Une spécialisation de
std::experimental::pmr::polymorphic_allocator |
alloc. resource ( ) |
| Tout autre type satisfaisant aux exigences Allocator |
Un pointeur vers une valeur de type
std::
experimental
::
pmr
::
resource_adaptor
<
A
>
(
alloc
)
, où
A
est le type de
alloc
. Le pointeur reste valide uniquement pendant la durée de vie de l'objet
packaged_task
.
|
| Aucun des cas ci-dessus | Le programme est mal formé. |
Paramètres
| f | - | la cible appelable (fonction, fonction membre, expression lambda, foncteur) à exécuter |
| alloc | - | l'allocateur à utiliser pour stocker la tâche |
| rhs | - |
le
std::experimental::packaged_task
dont le contenu est déplacé
|
Exceptions
2,3)
Toute exception levée par le constructeur de copie/déplacement de
f
et éventuellement
std::bad_alloc
si l'allocation échoue.
4)
(aucun)