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