std::experimental::packaged_task<R(Args...)>:: packaged_task (library fundamentals TS)
From cppreference.net
<
cpp
|
experimental
|
lib extensions
|
packaged task
|
packaged_task
(
)
noexcept
;
|
(1) | (библиотека fundamentals TS) |
|
template
<
class
F
>
explicit packaged_task ( F && f ) ; |
(2) | (библиотека fundamentals TS) |
|
template
<
class
F,
class
Allocator
>
explicit packaged_task ( std:: allocator_arg_t , const Allocator & alloc, F && f ) ; |
(3) | (библиотека fundamentals TS) |
|
packaged_task
(
const
packaged_task
&
)
=
delete
;
|
(4) | (библиотека fundamentals TS) |
|
packaged_task
(
packaged_task
&&
rhs
)
noexcept
;
|
(5) | (библиотека fundamentals 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)
Создает объект
std::experimental::packaged_task
с состоянием разделения и задачей, ранее принадлежавшими
rhs
, оставляя
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
.
|
| Ни один из вышеперечисленных | Программа некорректна. |
Параметры
| f | - | вызываемая цель (функция, метод класса, лямбда-выражение, функтор) для выполнения |
| alloc | - | аллокатор для использования при хранении задачи |
| rhs | - |
объект
std::experimental::packaged_task
для перемещения
|
Исключения
2,3)
Любые исключения, выбрасываемые конструктором копирования/перемещения
f
и возможно
std::bad_alloc
при неудачном выделении памяти.
4)
(нет)