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