Namespaces
Variants

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

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

Konstruiert ein neues std::experimental::packaged_task Objekt.

1) Konstruiert ein std::experimental::packaged_task -Objekt ohne Task und ohne gemeinsamen Zustand.
2) Konstruiert ein std::experimental::packaged_task -Objekt mit einem gemeinsamen Zustand und einer Kopie der Aufgabe, initialisiert mit std:: forward < F > ( f ) . Dieser Konstruktor nimmt nicht an der Überladungsauflösung teil, wenn std:: decay < F > :: type denselben Typ hat wie std:: packaged_task < R ( ArgTypes... ) > .
3) Konstruiert ein std::experimental::packaged_task -Objekt mit einem gemeinsamen Zustand und einer Kopie der Aufgabe, initialisiert mit std:: forward < F > ( f ) . Verwendet den bereitgestellten Allokator zur Speicherallokation für die Aufgabe, der als typloser Allokator behandelt wird (siehe unten). Dieser Konstruktor nimmt nicht an der Überladungsauflösung teil, wenn std:: decay < F > :: type denselben Typ wie std:: packaged_task < R ( ArgTypes... ) > hat.
4) Der Kopierkonstruktor ist gelöscht, std::experimental::packaged_task ist nur verschiebbar.
5) Konstruiert einen std::experimental::packaged_task mit dem gemeinsam genutzten Zustand und der Aufgabe, die zuvor von rhs besessen wurden, wobei rhs ohne gemeinsamen Zustand und mit einer verschobenen Aufgabe zurückbleibt.

Typgelöschter Allokator

Die Konstruktoren von packaged_task , die ein Allokator-Argument alloc entgegennehmen, behandeln dieses Argument als einen typgelöschten Allokator. Der vom packaged_task zur Speicherallokation verwendete Zeiger auf die Speicherressource wird unter Verwendung des Allokator-Arguments (falls angegeben) wie folgt bestimmt:

Typ von alloc Wert des Memory-Resource-Zeigers
Nicht vorhanden (kein Allokator bei Konstruktion angegeben) Der Wert von std:: experimental :: pmr :: get_default_resource ( ) zum Zeitpunkt der Konstruktion.
std::nullptr_t Der Wert von std:: experimental :: pmr :: get_default_resource ( ) zum Zeitpunkt der Konstruktion.
Ein Zeigertyp konvertierbar zu
std:: experimental :: pmr :: memory_resource *
static_cast < std:: experimental :: pmr :: memory_resource * > ( alloc )
Eine Spezialisierung von
std::experimental::pmr::polymorphic_allocator
alloc. resource ( )
Jeder andere Typ, der die Allocator Anforderungen erfüllt Ein Zeiger auf einen Wert vom Typ std:: experimental :: pmr :: resource_adaptor < A > ( alloc ) , wobei A der Typ von alloc ist. Der Zeiger bleibt nur für die Lebensdauer des packaged_task Objekts gültig.
Keiner der oben genannten Das Programm ist fehlerhaft.

Parameter

f - das aufrufbare Ziel (Funktion, Member-Funktion, Lambda-Ausdruck, Funktor), das ausgeführt werden soll
alloc - der Allokator, der bei der Speicherung der Aufgabe verwendet werden soll
rhs - der std::experimental::packaged_task , von dem verschoben werden soll

Ausnahmen

2,3) Alle Ausnahmen, die vom Kopier-/Verschiebekonstruktor von f und möglicherweise std::bad_alloc geworfen werden, falls die Speicherreservierung fehlschlägt.
4) (keine)