Конструирует экземпляр std::packaged_task, с которым ассоциированы еще ResultType и задача типа Callable, полученная копированием func. Память под асинхронный результат и задачу выделяется с помощью распределителя alloc или его копии.
Любое исключение, возбуждаемое распределителем в случае неудачной попытки выделить память под асинхронный результат или задачу. Любое исключение, возбуждаемое копирующим или перемещающим конструктором Callable.
STD::PACKAGED_TASK, ПЕРЕМЕЩАЮЩИЙ КОНСТРУКТОР
Конструирует один объект std::packaged_task из другого, передавая владение асинхронным результатом и задачей, ассоциированными с объектом other, вновь сконструированному.
packaged_task(packaged_task&& other) noexcept;
Конструирует новый экземпляр std::packaged_task.
Асинхронный результат и задача, которые были ассоциированы с объектом other до вызова конструктора, ассоциируются со вновь сконструированным объектом std::packaged_task. С объектом other больше не связан никакой асинхронный результат.
Нет.
STD::PACKAGED_TASK, ПЕРЕМЕЩАЮЩИЙ ОПЕРАТОР ПРИСВАИВАНИЯ
Передает владение ассоциированным асинхронным результатом от одного объекта std::packaged_task другому.
packaged_task& operator=(packaged_task&& other) noexcept;
Передает владение асинхронным результатом и задачей, ассоциированными с объектом other, объекту *this и отбрасывает ранее ассоциированный асинхронный результат, как если бы было выполнено предложение std::packaged_task(other).swap(*this).
Асинхронный результат и задача, которые были ассоциированы с объектом other до вызова перемещающего оператора присваивания, ассоциируются с *this. С объектом other больше не связан никакой асинхронный результат.
*this
Нет.
STD::PACKAGED_TASK::SWAP, ФУНКЦИЯ-ЧЛЕН
Обменивает владение асинхронными результатами, ассоциированными с двумя объектами std::packaged_task.
void swap(packaged_task& other) noexcept;
Обменивает владение асинхронными результатами и задачами, ассоциированными с объектами other и *this.
Асинхронный результат и задача, которые были ассоциированы с объектом other до вызова swap (если таковые действительно были), ассоциируются с *this. Асинхронный результат и задача, которые были ассоциировать с объектом *this до вызова swap (если таковые действительно были), ассоциируются с other.
Нет.
STD::PACKAGED_TASK, ДЕСТРУКТОР
Уничтожает объект std::packaged_task.
~packaged_task();
Уничтожает *this. Если с *this ассоциирован асинхронный результат и в этом результате не хранится задача или исключение, то результат становится std::future_error с кодом ошибки std::future_errc::broken_promise.
Нет.
STD::PACKAGED_TASK::GET_FUTURE, ФУНКЦИЯ-ЧЛЕН
Извлекает экземпляр std::future для асинхронного результата, ассоциированного с *this.
std::future
С *this ассоциирован асинхронный результат.
Экземпляр std::future для асинхронного результата, ассоциированного с *this.
Исключение типа std::future_error с кодом ошибки std::future_errc::future_already_retrieved, если объект std::future уже был получен для этого асинхронного результата с помощью предшествующего обращения к get_future().
STD::PACKAGED_TASK::RESET, ФУНКЦИЯ-ЧЛЕН
Ассоциирует экземпляр std::packaged_task с новым асинхронным результатом для той же задачи.
void reset();
С *this ассоциирована асинхронная задача.
Эквивалентно *this = packaged_task(std::move(f)), где f ― хранимая задача, ассоциированная с *this.
Исключение типа std::bad_alloc, если не удалось выделить память для нового асинхронного результата.