const error_category& future_category();
error_code make_error_code(future_errc e);
error_condition make_error_condition(future_errc e);
template
class future;
template
class shared_future;
template
class promise;
template
class packaged_task; // определение не предоставляется
template
class packaged_task
enum class launch {
async, deferred
};
template
future
async(FunctionType&& func, Args&& ... args);
template
future
async(std::launch policy, FunctionType&& func, Args&& ... args);
}
D.4.1. Шаблон класса std::future
Шаблон класса std::future
предоставляет средства для ожидания результата асинхронной операции, начатой в другом потоке, и используется в сочетании с шаблонами классов std::promise
и std::packaged_task
и шаблоном функции std::async
, которая применяется для возврата асинхронного результата. В каждый момент времени только один экземпляр std::future
может ссылаться на данный асинхронный результат.
Экземпляры std::future
удовлетворяют требованиям концепций MoveConstructible
и MoveAssignable
, но не концепций CopyConstructible
и CopyAssignable
.
template
class future {
public:
future() noexcept;
future(future&&) noexcept;
future& operator=(future&&) noexcept;
~future();
future(future const&) = delete;
future& operator=(future const&) = delete;
shared_future
bool valid() const noexcept;
void wait();
template
future_status wait_for(
std::chrono::duration
template
future_status wait_until(
std::chrono::time_point
};
STD::FUTURE
, КОНСТРУКТОР ПО УМОЛЧАНИЮ
Конструирует объект std::future
, с которым не связан асинхронный результат.
future() noexcept;
Конструирует новый экземпляр std::future
.
valid()
возвращает false
.
Нет.
STD::FUTURE
, ПЕРЕМЕЩАЮЩИЙ КОНСТРУКТОР
Конструирует объект std::future
, передавая владение асинхронным результатом от другого объекта std::future
вновь сконструированному.
future(future&& other) noexcept;
Конструирует новый экземпляр std::future
путем перемещения содержимого объекта other
.
Асинхронный результат, ассоциированный с объектом other
перед вызовом конструктора, ассоциируется с вновь сконструированным объектом std::future
. С объектом other
больше не ассоциирован никакой асинхронный результат. Функция this->valid()
возвращает то же значение, которое возвращала функция other.valid()
перед вызовом конструктора. Функция other.valid()
возвращает false
.
Нет.
STD::FUTURE
, ПЕРЕМЕЩАЮЩИЙ ОПЕРАТОР ПРИСВАИВАНИЯ
Передает владение асинхронным результатом, ассоциированным с объектом std::future
, другому объекту.
future(future&& other) noexcept;
Передает владение асинхронным состоянием между экземплярами std::future
.
Асинхронный результат, ассоциированный с объектом other перед вызовом оператора, ассоциируется с *this
. Объект *this
перестаёт быть владельцем своего прежнего асинхронного состояния (если оно было с ним ассоциировано), и если эта ссылка на асинхронное состояние была последней, то оно уничтожается. Функция this->valid()
возвращает то же значение, которое возвращала функция other
, valid()
перед вызовом оператора. Функция other.valid()
возвращает false
.
Нет.
STD::FUTURE
, ДЕСТРУКТОР
Уничтожает объект std::future
.
~future();