#
id() noexcept;
bool operator=(thread::id x, thread::id y) noexcept;
strong_ordering operator<=>(thread::id x, thread::id y) noexcept;
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<(basic_ostream<charT, traits>& out, thread::id id);
template<class charT> struct formatter<thread::id, charT>;
template<> struct hash<thread::id>;
thread() noexcept;
template<class F, class. Args> explicit thread(F&& f, Args&&. args);
thread(thread&& x) noexcept;
~thread();
thread& operator=(thread&& x) noexcept;
void swap(thread& x) noexcept;
bool joinable() const noexcept;
void join();
void detach();
id get_id() const noexcept;
unsigned hardware_concurrency() noexcept;