Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:30:07

0001 //  (C) Copyright John Maddock 2001.
0002 //  (C) Copyright Jens Maurer 2001.
0003 //  Use, modification and distribution are subject to the
0004 //  Boost Software License, Version 1.0. (See accompanying file
0005 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0006 
0007 //  See http://www.boost.org for most recent version.
0008 
0009 //  config for libstdc++ v3
0010 //  not much to go in here:
0011 
0012 #define BOOST_GNU_STDLIB 1
0013 
0014 #ifdef __GLIBCXX__
0015 #define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCXX__)
0016 #else
0017 #define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCPP__)
0018 #endif
0019 
0020 #if !defined(_GLIBCPP_USE_WCHAR_T) && !defined(_GLIBCXX_USE_WCHAR_T)
0021 #  define BOOST_NO_CWCHAR
0022 #  define BOOST_NO_CWCTYPE
0023 #  define BOOST_NO_STD_WSTRING
0024 #  define BOOST_NO_STD_WSTREAMBUF
0025 #endif
0026 
0027 #if defined(__osf__) && !defined(_REENTRANT) \
0028   && ( defined(_GLIBCXX_HAVE_GTHR_DEFAULT) || defined(_GLIBCPP_HAVE_GTHR_DEFAULT) )
0029 // GCC 3 on Tru64 forces the definition of _REENTRANT when any std lib header
0030 // file is included, therefore for consistency we define it here as well.
0031 #  define _REENTRANT
0032 #endif
0033 
0034 #ifdef __GLIBCXX__ // gcc 3.4 and greater:
0035 #  if defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
0036         || defined(_GLIBCXX__PTHREADS) \
0037         || defined(_GLIBCXX_HAS_GTHREADS) \
0038         || defined(_WIN32) \
0039         || defined(_AIX) \
0040         || defined(__HAIKU__)
0041       //
0042       // If the std lib has thread support turned on, then turn it on in Boost
0043       // as well.  We do this because some gcc-3.4 std lib headers define _REENTANT
0044       // while others do not...
0045       //
0046 #     define BOOST_HAS_THREADS
0047 #  else
0048 #     define BOOST_DISABLE_THREADS
0049 #  endif
0050 #elif defined(__GLIBCPP__) \
0051         && !defined(_GLIBCPP_HAVE_GTHR_DEFAULT) \
0052         && !defined(_GLIBCPP__PTHREADS)
0053    // disable thread support if the std lib was built single threaded:
0054 #  define BOOST_DISABLE_THREADS
0055 #endif
0056 
0057 #if (defined(linux) || defined(__linux) || defined(__linux__)) && defined(__arm__) && defined(_GLIBCPP_HAVE_GTHR_DEFAULT)
0058 // linux on arm apparently doesn't define _REENTRANT
0059 // so just turn on threading support whenever the std lib is thread safe:
0060 #  define BOOST_HAS_THREADS
0061 #endif
0062 
0063 #if !defined(_GLIBCPP_USE_LONG_LONG) \
0064     && !defined(_GLIBCXX_USE_LONG_LONG)\
0065     && defined(BOOST_HAS_LONG_LONG)
0066 // May have been set by compiler/*.hpp, but "long long" without library
0067 // support is useless.
0068 #  undef BOOST_HAS_LONG_LONG
0069 #endif
0070 
0071 // Apple doesn't seem to reliably defined a *unix* macro
0072 #if !defined(CYGWIN) && (  defined(__unix__)  \
0073                         || defined(__unix)    \
0074                         || defined(unix)      \
0075                         || defined(__APPLE__) \
0076                         || defined(__APPLE)   \
0077                         || defined(APPLE))
0078 #  include <unistd.h>
0079 #endif
0080 
0081 #ifndef __VXWORKS__ // VxWorks uses Dinkum, not GNU STL with GCC 
0082 #if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0
0083 #  define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx
0084 #  define BOOST_HAS_SLIST
0085 #  define BOOST_HAS_HASH
0086 #  define BOOST_SLIST_HEADER <ext/slist>
0087 # if !defined(__GNUC__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)
0088 #   define BOOST_HASH_SET_HEADER <ext/hash_set>
0089 #   define BOOST_HASH_MAP_HEADER <ext/hash_map>
0090 # else
0091 #   define BOOST_HASH_SET_HEADER <backward/hash_set>
0092 #   define BOOST_HASH_MAP_HEADER <backward/hash_map>
0093 # endif
0094 #endif
0095 #endif
0096 
0097 #if defined(__has_include)
0098 #if defined(BOOST_HAS_HASH)
0099 #if !__has_include(BOOST_HASH_SET_HEADER) || (__GNUC__ >= 10)
0100 #undef BOOST_HAS_HASH
0101 #undef BOOST_HAS_SET_HEADER
0102 #undef BOOST_HAS_MAP_HEADER
0103 #endif
0104 #if !__has_include(BOOST_SLIST_HEADER)
0105 #undef BOOST_HAS_SLIST
0106 #undef BOOST_HAS_SLIST_HEADER
0107 #endif
0108 #endif
0109 #endif
0110 
0111 //
0112 // Decide whether we have C++11 support turned on:
0113 //
0114 #if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103)
0115 #  define BOOST_LIBSTDCXX11
0116 #endif
0117 
0118 //
0119 //  Decide which version of libstdc++ we have, normally
0120 //  libstdc++ C++0x support is detected via __GNUC__, __GNUC_MINOR__, and possibly
0121 //  __GNUC_PATCHLEVEL__ at the suggestion of Jonathan Wakely, one of the libstdc++
0122 //  developers. He also commented:
0123 //
0124 //       "I'm not sure how useful __GLIBCXX__ is for your purposes, for instance in
0125 //       GCC 4.2.4 it is set to 20080519 but in GCC 4.3.0 it is set to 20080305.
0126 //       Although 4.3.0 was released earlier than 4.2.4, it has better C++0x support
0127 //       than any release in the 4.2 series."
0128 //
0129 //  Another resource for understanding libstdc++ features is:
0130 //  http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#manual.intro.status.standard.200x
0131 //
0132 //  However, using the GCC version number fails when the compiler is clang since this
0133 //  only ever claims to emulate GCC-4.2, see https://svn.boost.org/trac/boost/ticket/7473
0134 //  for a long discussion on this issue.  What we can do though is use clang's __has_include
0135 //  to detect the presence of a C++11 header that was introduced with a specific GCC release.
0136 //  We still have to be careful though as many such headers were buggy and/or incomplete when
0137 //  first introduced, so we only check for headers that were fully featured from day 1, and then
0138 //  use that to infer the underlying GCC version:
0139 //
0140 #ifdef __clang__
0141 
0142 #ifdef _GLIBCXX_RELEASE
0143 #  define BOOST_LIBSTDCXX_VERSION (_GLIBCXX_RELEASE * 10000 + 100)
0144 #else
0145 //
0146 // We figure out which gcc version issued this std lib
0147 // by checking which headers are available:
0148 //
0149 #if __has_include(<expected>)
0150 #  define BOOST_LIBSTDCXX_VERSION 120100
0151 #elif __has_include(<source_location>)
0152 #  define BOOST_LIBSTDCXX_VERSION 110100
0153 #elif __has_include(<compare>)
0154 #  define BOOST_LIBSTDCXX_VERSION 100100
0155 #elif __has_include(<memory_resource>)
0156 #  define BOOST_LIBSTDCXX_VERSION 90100
0157 #elif __has_include(<charconv>)
0158 #  define BOOST_LIBSTDCXX_VERSION 80100
0159 #elif __has_include(<variant>)
0160 #  define BOOST_LIBSTDCXX_VERSION 70100
0161 #elif __has_include(<experimental/memory_resource>)
0162 #  define BOOST_LIBSTDCXX_VERSION 60100
0163 #elif __has_include(<experimental/any>)
0164 #  define BOOST_LIBSTDCXX_VERSION 50100
0165 #elif __has_include(<shared_mutex>)
0166 #  define BOOST_LIBSTDCXX_VERSION 40900
0167 #elif __has_include(<ext/cmath>)
0168 #  define BOOST_LIBSTDCXX_VERSION 40800
0169 #elif __has_include(<scoped_allocator>)
0170 #  define BOOST_LIBSTDCXX_VERSION 40700
0171 #elif __has_include(<typeindex>)
0172 #  define BOOST_LIBSTDCXX_VERSION 40600
0173 #elif __has_include(<future>)
0174 #  define BOOST_LIBSTDCXX_VERSION 40500
0175 #elif  __has_include(<ratio>)
0176 #  define BOOST_LIBSTDCXX_VERSION 40400
0177 #elif __has_include(<array>)
0178 #  define BOOST_LIBSTDCXX_VERSION 40300
0179 #endif
0180 #endif
0181 //
0182 // If BOOST_HAS_FLOAT128 is set, now that we know the std lib is libstdc++3, check to see if the std lib is
0183 // configured to support this type.  If not disable it:
0184 //
0185 #if defined(BOOST_HAS_FLOAT128) && !defined(_GLIBCXX_USE_FLOAT128)
0186 #  undef BOOST_HAS_FLOAT128
0187 #endif
0188 
0189 #if (BOOST_LIBSTDCXX_VERSION >= 100000) && defined(BOOST_HAS_HASH)
0190 //
0191 // hash_set/hash_map deprecated and have terminal bugs:
0192 //
0193 #undef BOOST_HAS_HASH
0194 #undef BOOST_HAS_SET_HEADER
0195 #undef BOOST_HAS_MAP_HEADER
0196 #endif
0197 
0198 
0199 #if (BOOST_LIBSTDCXX_VERSION >= 100000) && defined(BOOST_HAS_HASH)
0200 //
0201 // hash_set/hash_map deprecated and have terminal bugs:
0202 //
0203 #undef BOOST_HAS_HASH
0204 #undef BOOST_HAS_SET_HEADER
0205 #undef BOOST_HAS_MAP_HEADER
0206 #endif
0207 
0208 
0209 #if (BOOST_LIBSTDCXX_VERSION < 50100)
0210 // libstdc++ does not define this function as it's deprecated in C++11, but clang still looks for it,
0211 // defining it here is a terrible cludge, but should get things working:
0212 extern "C" char *gets (char *__s);
0213 #endif
0214 //
0215 // clang is unable to parse some GCC headers, add those workarounds here:
0216 //
0217 #if BOOST_LIBSTDCXX_VERSION < 50000
0218 #  define BOOST_NO_CXX11_HDR_REGEX
0219 #endif
0220 //
0221 // GCC 4.7.x has no __cxa_thread_atexit which
0222 // thread_local objects require for cleanup:
0223 //
0224 #if BOOST_LIBSTDCXX_VERSION < 40800
0225 #  define BOOST_NO_CXX11_THREAD_LOCAL
0226 #endif
0227 //
0228 // Early clang versions can handle <chrono>, not exactly sure which versions
0229 // but certainly up to clang-3.8 and gcc-4.6:
0230 //
0231 #if (__clang_major__ < 5)
0232 #  if BOOST_LIBSTDCXX_VERSION < 40800
0233 #     define BOOST_NO_CXX11_HDR_FUTURE
0234 #     define BOOST_NO_CXX11_HDR_MUTEX
0235 #     define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
0236 #     define BOOST_NO_CXX11_HDR_CHRONO
0237 #  endif
0238 #endif
0239 
0240 //
0241 //  GCC 4.8 and 9 add working versions of <atomic> and <regex> respectively.
0242 //  However, we have no test for these as the headers were present but broken
0243 //  in early GCC versions.
0244 //
0245 #endif
0246 
0247 #if defined(__SUNPRO_CC) && (__SUNPRO_CC >= 0x5130) && (__cplusplus >= 201103L)
0248 //
0249 // Oracle Solaris compiler uses it's own verison of libstdc++ but doesn't 
0250 // set __GNUC__
0251 //
0252 #if __SUNPRO_CC >= 0x5140
0253 #define BOOST_LIBSTDCXX_VERSION 50100
0254 #else
0255 #define BOOST_LIBSTDCXX_VERSION 40800
0256 #endif
0257 #endif
0258 
0259 #if !defined(BOOST_LIBSTDCXX_VERSION)
0260 #  define BOOST_LIBSTDCXX_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
0261 #endif
0262 
0263 // std::auto_ptr isn't provided with _GLIBCXX_DEPRECATED=0 (GCC 4.5 and earlier)
0264 // or _GLIBCXX_USE_DEPRECATED=0 (GCC 4.6 and later).
0265 #if defined(BOOST_LIBSTDCXX11)
0266 #  if BOOST_LIBSTDCXX_VERSION < 40600
0267 #     if !_GLIBCXX_DEPRECATED
0268 #        define BOOST_NO_AUTO_PTR
0269 #     endif
0270 #  elif !defined(_GLIBCXX_USE_DEPRECATED) || !_GLIBCXX_USE_DEPRECATED
0271 #     define BOOST_NO_AUTO_PTR
0272 #     define BOOST_NO_CXX98_BINDERS
0273 #  endif
0274 #endif
0275 
0276 //  C++0x headers in GCC 4.3.0 and later
0277 //
0278 #if (BOOST_LIBSTDCXX_VERSION < 40300) || !defined(BOOST_LIBSTDCXX11)
0279 #  define BOOST_NO_CXX11_HDR_ARRAY
0280 #  define BOOST_NO_CXX11_HDR_TUPLE
0281 #  define BOOST_NO_CXX11_HDR_UNORDERED_MAP
0282 #  define BOOST_NO_CXX11_HDR_UNORDERED_SET
0283 #  define BOOST_NO_CXX11_HDR_FUNCTIONAL
0284 #endif
0285 
0286 //  C++0x headers in GCC 4.4.0 and later
0287 //
0288 #if (BOOST_LIBSTDCXX_VERSION < 40400) || !defined(BOOST_LIBSTDCXX11)
0289 #  define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
0290 #  define BOOST_NO_CXX11_HDR_FORWARD_LIST
0291 #  define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
0292 #  define BOOST_NO_CXX11_HDR_MUTEX
0293 #  define BOOST_NO_CXX11_HDR_RATIO
0294 #  define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
0295 #  define BOOST_NO_CXX11_SMART_PTR
0296 #  define BOOST_NO_CXX11_HDR_EXCEPTION
0297 #else
0298 #  define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG 
0299 #  define BOOST_HAS_TR1_COMPLEX_OVERLOADS 
0300 #endif
0301 
0302 //  C++0x features in GCC 4.5.0 and later
0303 //
0304 #if (BOOST_LIBSTDCXX_VERSION < 40500) || !defined(BOOST_LIBSTDCXX11)
0305 #  define BOOST_NO_CXX11_NUMERIC_LIMITS
0306 #  define BOOST_NO_CXX11_HDR_FUTURE
0307 #  define BOOST_NO_CXX11_HDR_RANDOM
0308 #endif
0309 
0310 //  C++0x features in GCC 4.6.0 and later
0311 //
0312 #if (BOOST_LIBSTDCXX_VERSION < 40600) || !defined(BOOST_LIBSTDCXX11)
0313 #  define BOOST_NO_CXX11_HDR_TYPEINDEX
0314 #  define BOOST_NO_CXX11_ADDRESSOF
0315 #  define BOOST_NO_CXX17_ITERATOR_TRAITS
0316 #endif
0317 
0318 //  C++0x features in GCC 4.7.0 and later
0319 //
0320 #if (BOOST_LIBSTDCXX_VERSION < 40700) || !defined(BOOST_LIBSTDCXX11)
0321 // Note that although <chrono> existed prior to 4.7, "steady_clock" is spelled "monotonic_clock"
0322 // so 4.7.0 is the first truly conforming one.
0323 #  define BOOST_NO_CXX11_HDR_CHRONO
0324 #  define BOOST_NO_CXX11_ALLOCATOR
0325 #  define BOOST_NO_CXX11_POINTER_TRAITS
0326 #endif
0327 //  C++0x features in GCC 4.8.0 and later
0328 //
0329 #if (BOOST_LIBSTDCXX_VERSION < 40800) || !defined(BOOST_LIBSTDCXX11)
0330 // Note that although <atomic> existed prior to gcc 4.8 it was largely unimplemented for many types:
0331 #  define BOOST_NO_CXX11_HDR_ATOMIC
0332 #  define BOOST_NO_CXX11_HDR_THREAD
0333 #endif
0334 //  C++0x features in GCC 4.9.0 and later
0335 //
0336 #if (BOOST_LIBSTDCXX_VERSION < 40900) || !defined(BOOST_LIBSTDCXX11)
0337 // Although <regex> is present and compilable against, the actual implementation is not functional
0338 // even for the simplest patterns such as "\d" or "[0-9]". This is the case at least in gcc up to 4.8, inclusively.
0339 #  define BOOST_NO_CXX11_HDR_REGEX
0340 #endif
0341 #if (BOOST_LIBSTDCXX_VERSION < 40900) || (__cplusplus <= 201103)
0342 #  define BOOST_NO_CXX14_STD_EXCHANGE
0343 #endif
0344 
0345 //
0346 //  C++0x features in GCC 5.1 and later
0347 //
0348 #if (BOOST_LIBSTDCXX_VERSION < 50100) || !defined(BOOST_LIBSTDCXX11)
0349 #  define BOOST_NO_CXX11_HDR_TYPE_TRAITS
0350 #  define BOOST_NO_CXX11_HDR_CODECVT
0351 #  define BOOST_NO_CXX11_ATOMIC_SMART_PTR
0352 #  define BOOST_NO_CXX11_STD_ALIGN
0353 #endif
0354 
0355 //
0356 //  C++17 features in GCC 7.1 and later
0357 //
0358 #if (BOOST_LIBSTDCXX_VERSION < 70100) || (__cplusplus <= 201402L)
0359 #  define BOOST_NO_CXX17_STD_INVOKE
0360 #  define BOOST_NO_CXX17_STD_APPLY
0361 #  define BOOST_NO_CXX17_HDR_OPTIONAL
0362 #  define BOOST_NO_CXX17_HDR_STRING_VIEW
0363 #  define BOOST_NO_CXX17_HDR_VARIANT
0364 #endif
0365 
0366 #if defined(__has_include)
0367 #if !__has_include(<shared_mutex>)
0368 #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
0369 #elif __cplusplus <= 201103
0370 #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
0371 #endif
0372 //
0373 // <execution> has a dependency to Intel's thread building blocks:
0374 // unless these are installed seperately, including <execution> leads
0375 // to inscrutable errors inside libstdc++'s own headers.
0376 //
0377 #if (BOOST_LIBSTDCXX_VERSION < 100100)
0378 #if !__has_include(<tbb/tbb.h>)
0379 #define BOOST_NO_CXX17_HDR_EXECUTION
0380 #endif
0381 #endif
0382 #elif __cplusplus < 201402 || (BOOST_LIBSTDCXX_VERSION < 40900) || !defined(BOOST_LIBSTDCXX11)
0383 #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
0384 #endif
0385 
0386 #if BOOST_LIBSTDCXX_VERSION < 100100
0387 //
0388 // The header may be present but is incomplete:
0389 //
0390 #  define BOOST_NO_CXX17_HDR_CHARCONV
0391 #endif
0392 
0393 #if BOOST_LIBSTDCXX_VERSION < 110000
0394 //
0395 // Header <bit> may be present but lacks std::bit_cast:
0396 //
0397 #define BOOST_NO_CXX20_HDR_BIT
0398 #endif
0399 
0400 #if BOOST_LIBSTDCXX_VERSION >= 120000
0401 //
0402 // Unary function is now deprecated in C++11 and later:
0403 //
0404 #if __cplusplus >= 201103L
0405 #define BOOST_NO_CXX98_FUNCTION_BASE
0406 #endif
0407 #endif
0408 
0409 #ifndef __cpp_impl_coroutine
0410 #  define BOOST_NO_CXX20_HDR_COROUTINE
0411 #endif
0412 
0413 //
0414 // These next defines are mostly for older clang versions with a newer libstdc++ :
0415 //
0416 #if !defined(__cpp_lib_concepts)
0417 #if !defined(BOOST_NO_CXX20_HDR_COMPARE)
0418 #  define BOOST_NO_CXX20_HDR_COMPARE
0419 #endif
0420 #if !defined(BOOST_NO_CXX20_HDR_CONCEPTS)
0421 #  define BOOST_NO_CXX20_HDR_CONCEPTS
0422 #endif
0423 #if !defined(BOOST_NO_CXX20_HDR_SPAN)
0424 #  define BOOST_NO_CXX20_HDR_SPAN
0425 #endif
0426 #if !defined(BOOST_NO_CXX20_HDR_RANGES)
0427 #  define BOOST_NO_CXX20_HDR_RANGES
0428 #endif
0429 #endif
0430 
0431 #if defined(__clang__)
0432 #if (__clang_major__ < 11) && !defined(BOOST_NO_CXX20_HDR_RANGES)
0433 #  define BOOST_NO_CXX20_HDR_RANGES
0434 #endif
0435 #if (__clang_major__ < 10) && (BOOST_LIBSTDCXX_VERSION >= 110000) && !defined(BOOST_NO_CXX11_HDR_CHRONO)
0436 // Old clang can't parse <chrono>:
0437 #  define BOOST_NO_CXX11_HDR_CHRONO
0438 #  define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
0439 #endif
0440 #endif
0441 
0442 #if defined(__clang__) && (BOOST_LIBSTDCXX_VERSION < 40300) && !defined(BOOST_NO_CXX11_NULLPTR)
0443 #  define BOOST_NO_CXX11_NULLPTR
0444 #endif
0445 #if defined(__clang__) && (BOOST_LIBSTDCXX_VERSION < 40300) && defined(BOOST_HAS_INT128) && defined(__APPLE_CC__)
0446 #undef BOOST_HAS_INT128
0447 #endif
0448 
0449 //
0450 // Headers not present on Solaris with the Oracle compiler:
0451 #if defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x5140)
0452 #define BOOST_NO_CXX11_HDR_FUTURE
0453 #define BOOST_NO_CXX11_HDR_FORWARD_LIST 
0454 #define BOOST_NO_CXX11_HDR_ATOMIC
0455 // shared_ptr is present, but is not convertible to bool
0456 // which causes all kinds of problems especially in Boost.Thread
0457 // but probably elsewhere as well.
0458 #define BOOST_NO_CXX11_SMART_PTR
0459 #endif
0460 
0461 #if (!defined(_GLIBCXX_HAS_GTHREADS) || !defined(_GLIBCXX_USE_C99_STDINT_TR1))
0462    // Headers not always available:
0463 #  ifndef BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
0464 #     define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
0465 #  endif
0466 #  ifndef BOOST_NO_CXX11_HDR_MUTEX
0467 #     define BOOST_NO_CXX11_HDR_MUTEX
0468 #  endif
0469 #  ifndef BOOST_NO_CXX11_HDR_THREAD
0470 #     define BOOST_NO_CXX11_HDR_THREAD
0471 #  endif
0472 #  ifndef BOOST_NO_CXX14_HDR_SHARED_MUTEX
0473 #     define BOOST_NO_CXX14_HDR_SHARED_MUTEX
0474 #  endif
0475 #endif
0476 
0477 #if (!defined(_GTHREAD_USE_MUTEX_TIMEDLOCK) || (_GTHREAD_USE_MUTEX_TIMEDLOCK == 0)) && !defined(BOOST_NO_CXX11_HDR_MUTEX) && (__GNUC__ < 6)
0478 // Timed mutexes are not always available:
0479 #  define BOOST_NO_CXX11_HDR_MUTEX
0480 #endif
0481 
0482 //  --- end ---