名前空間
変種
操作

std::experimental::packaged_task<R(Args...)>::packaged_task (ライブラリ機能 TS)

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

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

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

[編集] 型消去アロケータ

アロケータ引数 alloc を取る packaged_task のコンストラクタは、その引数を型消去されたアロケータとして扱います。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::allocator_traits<Alloc>::resource の特殊化
std::experimental::pmr::polymorphic_allocator
alloc.resource()
上記以外の Allocator 要件を満たす型 Aalloc の型である std::experimental::pmr::resource_adaptor<A>(alloc) の値へのポインタ。このポインタは、packaged_task オブジェクトの生存期間中のみ有効です。
上記以外の場合 プログラムは不正形式です。

[編集] パラメータ

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

[編集] 例外

2,3) f のコピー/ムーブコンストラクタによってスローされる例外、およびメモリ割り当てに失敗した場合の std::bad_alloc
4) (なし)
English 日本語 中文(简体) 中文(繁體)