thread() noexcept;
template <class F, class... Args> explicit thread(F&& f, Args&&... args);
Requires: F и каждый Ti в Args должны удовлетворять MoveConstructible требованиям. INVOKE(DECAY_COPY(std::forward<F>(f)), DECAY_COPY(std::forward<Args>(args))...) ([func.require]) должно быть допустимым выражением.
Remarks: Этот конструктор не должен участвовать в разрешении перегрузки, если decay_t<F> он того же типа, что и std::thread.
Effects: Создает объект типа thread. Новый поток выполнения выполняется INVOKE(DECAY_COPY(std::forward<F>(f)), DECAY_COPY(std::forward<Args>(args))...) с вызовами, DECAY_COPY которые оцениваются в потоке построения. Любое возвращаемое значение из этого вызова игнорируется. [ Note: Это означает, что любые исключения, не возникшие при вызове копии, f будут выброшены в потоке построения, а не в новом потоке. ] Если вызов завершается неперехваченным исключением, должен вызываться. — end note INVOKE(DECAY_COPY(std::forward<F>(f)), DECAY_COPY(std::forward<Args>(args))...) terminate
thread(thread&& x) noexcept;
Effects: Создает объект типа thread из xи устанавливает x в сконструированное состояние по умолчанию.