Namespaces
Variants

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

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

新しい std::experimental::packaged_task オブジェクトを構築します。

1) タスクと共有状態を持たない std::experimental::packaged_task オブジェクトを構築します。
2) 共有状態とタスクのコピーを持つ std::experimental::packaged_task オブジェクトを構築します。タスクは std:: forward < F > ( f ) で初期化されます。このコンストラクタは、 std:: decay < F > :: type の型が std:: packaged_task < R ( ArgTypes... ) > と同じ型である場合、オーバーロード解決に参加しません。
3) 共有状態とタスクのコピーを持つ std::experimental::packaged_task オブジェクトを構築します。タスクは std:: forward < F > ( f ) で初期化されます。提供されたアロケータを使用して、タスクを格納するために必要なメモリを割り当てます。これは型消去されたアロケータとして扱われます(下記参照)。 std:: decay < F > :: type の型が std:: packaged_task < R ( ArgTypes... ) > と同じ型である場合、このコンストラクタはオーバーロード解決に参加しません。
4) コピーコンストラクタは削除されており、 std::experimental::packaged_task はムーブのみ可能です。
5) rhs が以前所有していた共有状態とタスクを持つ std::experimental::packaged_task を構築し、 rhs は共有状態を持たず、ムーブされたタスクを持つ状態となる。

タイプ消去アロケータ

packaged_task のコンストラクタがアロケータ引数 alloc を受け取る場合、その引数をタイプ消去されたアロケータとして扱います。 packaged_task がメモリ確保に使用するメモリリソースポインタは、以下のようにアロケータ引数(指定された場合)を使用して決定されます:

alloc の型 メモリリソースポインタの値
存在しない(構築時にアロケータが指定されていない場合) 構築時の std:: experimental :: pmr :: get_default_resource ( ) の値
std::nullptr_t 構築時の std:: experimental :: pmr :: get_default_resource ( ) の値
std:: experimental :: pmr :: memory_resource * に変換可能なポインタ型 static_cast < std:: experimental :: pmr :: memory_resource * > ( alloc )
std::experimental::pmr::polymorphic_allocator の特殊化 alloc. resource ( )
Allocator 要件を満たすその他の型 std:: experimental :: pmr :: resource_adaptor < A > ( alloc ) 型の値へのポインタ( A alloc の型)。このポインタは packaged_task オブジェクトの生存期間中のみ有効
上記のいずれにも該当しない場合 プログラムは不適格(ill-formed)

パラメータ

f - 実行する呼び出し可能ターゲット(関数、メンバー関数、ラムダ式、ファンクタ)
alloc - タスクを格納する際に使用するアロケータ
rhs - 移動元の std::experimental::packaged_task

例外

2,3) f のコピー/ムーブコンストラクタによってスローされるあらゆる例外、およびメモリ確保が失敗した場合の std::bad_alloc の可能性。
4) (なし)