std::experimental::packaged_task<R(Args...)>::packaged_task (ライブラリ機能 TS)
From cppreference.com
< cpp | experimental | lib extensions | packaged task
| 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>::type が std::packaged_task<R(ArgTypes...)> と同じ型の場合、このコンストラクタはオーバーロード解決に参加しません。3) 共有状態とタスクのコピー (
std::forward<F>(f) で初期化) を持つ std::experimental::packaged_task オブジェクトを構築します。タスクを格納するために必要なメモリを割り当てるために、指定されたアロケータを使用します。このアロケータは、(下記参照) 型消去されたアロケータとして扱われます。std::decay<F>::type が std::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 要件を満たす型 | A が alloc の型である std::experimental::pmr::resource_adaptor<A>(alloc) の値へのポインタ。このポインタは、packaged_task オブジェクトの生存期間中のみ有効です。 |
| 上記以外の場合 | プログラムは不正形式です。 |
[編集] パラメータ
| f | - | 実行する呼び出し可能ターゲット (関数、メンバ関数、ラムダ式、ファンクタ) |
| alloc | - | タスクを格納する際に使用するアロケータ |
| rhs | - | 移動元となる std::experimental::packaged_task |
[編集] 例外
4) (なし)