Конструирует экземпляр 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
, если не удалось выделить память для нового асинхронного результата.