Namespaces
Variants

std::experimental::packaged_task<R(Args...)>:: packaged_task (library fundamentals TS)

From cppreference.net
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) (нет)