std::experimental::packaged_task<R(Args...)>:: packaged_task (library fundamentals TS)
From cppreference.net
<
cpp
|
experimental
|
lib extensions
|
packaged task
|
packaged_task
(
)
noexcept
;
|
(1) | (库基础技术规范) |
|
template
<
class
F
>
explicit packaged_task ( F && f ) ; |
(2) | (库基础技术规范) |
|
template
<
class
F,
class
Allocator
>
explicit packaged_task ( std:: allocator_arg_t , const Allocator & alloc, F && f ) ; |
(3) | (库基础技术规范) |
|
packaged_task
(
const
packaged_task
&
)
=
delete
;
|
(4) | (库基础技术规范) |
|
packaged_task
(
packaged_task
&&
rhs
)
noexcept
;
|
(5) | (库基础技术规范) |
构造一个新的
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)
构造一个
std::experimental::packaged_task
,其共享状态和任务原先由
rhs
拥有,使
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::experimental::pmr::polymorphic_allocator 的特化 |
alloc. resource ( ) |
| 满足 Allocator 要求的任何其他类型 |
指向
std::
experimental
::
pmr
::
resource_adaptor
<
A
>
(
alloc
)
类型值的指针,其中
A
是
alloc
的类型。该指针仅在
packaged_task
对象的生命周期内有效。
|
| 以上皆不符合 | 程序非良构。 |
参数
| f | - | 可调用目标(函数、成员函数、lambda表达式、函数对象)用于执行 |
| alloc | - | 存储任务时使用的分配器 |
| rhs | - |
要从中移动的
std::experimental::packaged_task
|
异常
4)
(无)