packaged_task() noexcept;
template <class F>
packaged_task(F&& f);
Requires: INVOKE<R>(f, t1, t2, ..., tN), где t1, t2, ..., tN - значения соответствующих типов в ArgTypes..., должно быть допустимым выражением. Вызов копии f должен вести себя так же, как и вызов f.
Remarks: Этот конструктор не должен участвовать в разрешении перегрузки, если decay_t<F> он того же типа, что и packaged_task<R(ArgTypes...)>.
Effects: Создает новый packaged_task объект с общим состоянием и инициализирует сохраненную задачу объекта с помощью std::forward<F>(f).
Throws:
Любые исключения, создаваемые конструктором копирования или перемещения f.
Для первой версии, bad_alloc если не удалось выделить память для внутренних структур данных.
Для второй версии любые исключения, созданные allocator_traits<Allocator>::template rebind_traits<unspecified>::allocate.
packaged_task(packaged_task&& rhs) noexcept;
Effects: Создает новый packaged_task объект и передает владение rhsобщим состоянием *this, оставив его rhs без общего состояния. Перемещает сохраненную задачу из rhs в *this.
packaged_task& operator=(packaged_task&& rhs) noexcept;
Effects:
Освобождает любое разделяемое состояние ([futures.state]);
звонки packaged_task(std::move(rhs)).swap(*this).
~packaged_task();
Effects: Отменяет любое общее состояние ([futures.state]).
void swap(packaged_task& other) noexcept;
Postconditions: *this имеет такое же общее состояние и сохраненную задачу (если есть), что и other до вызова swap. other имеет такое же общее состояние и сохраненную задачу (если есть), что и *this до вызова swap.
bool valid() const noexcept;
future<R> get_future();
void operator()(ArgTypes... args);
Effects: Как будто по INVOKE<R>(f, t1, t2, ..., tN), где f хранится задача *this и t1, t2, ..., tN значения в args.... Если задача возвращается нормально, возвращаемое значение сохраняется как асинхронный результат в общем состоянии *this, в противном случае сохраняется исключение, созданное задачей. Общее состояние *this готово, и все потоки, заблокированные в функции, ожидающие *this готовности общего состояния , разблокируются.
Throws: future_error объект исключения , если нет общегосударственных или сохраненное задание уже вызван.
void make_ready_at_thread_exit(ArgTypes... args);
Effects: Как будто по INVOKE<R>(f, t1, t2, ..., tN), где f хранится задача, а t1, t2, ..., tN какие - значения в args.... Если задача возвращается нормально, возвращаемое значение сохраняется как асинхронный результат в общем состоянии *this, в противном случае сохраняется исключение, созданное задачей. В любом случае это должно быть сделано без[futures.state]немедленного преобразования этого состояния в состояние ready ( ). Планирует подготовить общее состояние к моменту выхода из текущего потока после того, как все объекты продолжительности хранения потока, связанные с текущим потоком, будут уничтожены.
void reset();
Effects: Как будто *this = packaged_task(std::move(f)), где f хранится задача *this. [ Note: Это создает новое общее состояние для *this. Старое состояние заброшено ([futures.state]). ] — end note