Namespaces
Variants

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

From cppreference.net
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)