Блокирует поток, пока не будет готов асинхронный результат, ассоциированный с *this. Если в результате хранится исключение, возбуждает его, иначе возвращает хранящееся значение.
Если ResultType — void, то функция просто возвращает управление. Если ResultType — R& для некоторого типа R, то возвращает хранящуюся ссылку. Иначе возвращает константную ссылку на хранящееся значение.
Хранящееся исключение, если таковое имеется.
D.4.3. Шаблон класса std::packaged_task
Шаблон класса std::packaged_task упаковывает функцию или другой допускающий вызов объект, так что при вызове функции через экземпляр std::packaged_task результат сохраняется в виде асинхронного результата, который может быть получен с помощью объекта std::future.
Экземпляры std::packaged_task удовлетворяют требованиям концепций MoveConstructible и MoveAssignable, но не CopyConstructible и CopyAssignable.
template
class packaged_task; // не определен
template
class packaged_task
public:
packaged_task() noexcept;
packaged_task(packaged_task&&) noexcept;
~packaged_task();
packaged_task& operator=(packaged_task&&) noexcept;
packaged_task(packaged_task const&) = delete;
packaged_task& operator=(packaged_task const&) = delete;
void swap(packaged_task&) noexcept;
template
explicit packaged_task(Callable&& func);
template
packaged_task(
std::allocator_arg_t, const Allocator&, Callable&&);
bool valid() const noexcept;
std::future
void operator()(ArgTypes...);
void make_ready_at_thread_exit(ArgTypes...); void reset();
};
STD::PACKAGED_TASK, КОНСТРУКТОР ПО УМОЛЧАНИЮ
Конструирует объект std::packaged_task.
packaged_task() noexcept;
Конструирует экземпляр std::packaged_task, с которым не ассоциировала ни задача, ни асинхронный результат.
Нет.
STD::PACKAGED_TASK, КОНСТРУИРОВАНИЕ ИЗ ДОПУСКАЮЩЕГО ВЫЗОВ ОБЪЕКТА
Конструирует экземпляр std::packaged_task, с которым ассоциированы задача и асинхронный результат.
template
packaged_task(Callable&& func);
Должно быть допустимо выражение func(args...), где каждый элемент args- в списке args... должен быть значением соответственного типа ArgTypes- в списке ArgTypes.... Возвращаемое значение должно допускать преобразование в тип ResultType.
Конструирует экземпляр std::packaged_task, с которым ассоциированы еще ResultType и задача типа Callable, полученная копированием func.
Исключение типа std::bad_alloc, если конструктор не смог выделить память для асинхронного результата. Любое исключение, возбуждаемое копирующим или перемещающим конструктором Callable.
STD::PACKAGED_TASK, КОНСТРУИРОВАНИЕ ИЗ ДОПУСКАЮЩЕГО ВЫЗОВ ОБЪЕКТА С РАСПРЕДЕЛИТЕЛЕМ
Конструирует экземпляр std::packaged_task, с которым ассоциированы задача и асинхронный результат, применяя предоставленный распределитель для выделения памяти под асинхронный результат и задачу
template
packaged_task(
std::allocator_arg_t, Allocator const& alloc, Callable&& func);
Должно быть допустимо выражение func(args...), где каждый элемент args- в списке args... должен быть значением соответственного типа ArgTypes- в списке ArgTypes.... Возвращаемое значение должно допускать преобразование в тип ResultType.