Передает владение ассоциированным асинхронным результатом от одного объекта 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 get_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
, если не удалось выделить память для нового асинхронного результата.
STD::PACKAGED_TASK::VALID
, ФУНКЦИЯ-ЧЛЕН
Проверяет, ассоциированы ли с *this
задача и асинхронный результат.
Объявление
bool valid() const noexcept;
Возвращаемое значение
true
, если с *this
ассоциированы задача и асинхронный результат, иначе false
.
Исключения
Нет.
STD::PACKAGED_TASK::OPERATOR()
, ОПЕРАТОР ВЫЗОВА
Вызывает задачу, ассоциированную с экземпляром std::packaged_task
, и сохраняет возвращенное ей значение или исключение в ассоциированном асинхронном результате.
Объявление
void operator()(ArgTypes... args);
Предусловия
С *this
ассоциирована задача.
Результат
Вызывает ассоциированную задачу, как если бы было выполнено предложение INVOKE(func, args...)
. Если вызов завершается нормально, то сохраняет возвращенное значение в асинхронном результате, ассоциированном с *this
. Если задача возбуждает исключение, то сохраняет это исключение в асинхронном результате, ассоциированном с *this
.
Постусловия
Асинхронный результат, ассоциированный с *this
, готов и содержит значение или исключение. Все потоки, ожидающие асинхронного результата, разблокируются.
Исключения
Исключение типа std::future_error
с кодом ошибки std::future_errc::promise_already_satisfied
, если в асинхронном результате уже находится значение или исключение.
Читать дальше