https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100186
--- Comment #5 from David Edelsohn <dje at gcc dot gnu.org> --- For example, in GCC 6: #if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION /** * @defgroup threads Threads * @ingroup concurrency * * Classes for thread support. * @{ */ /// thread class thread { If we are going to support bootstrap with releases of GCC back to GCC 6 or GCC 4.8, the source code cannot assume that std::thread exists. However, it's probably reasonable to assume hardware_concurrency of 1 when compiling in a mode without GTHREADS.