text: //  (C) Copyright Christopher Jefferson 2011.
  //  Use, modification and distribution are subject to the
  //  Boost Software License, Version 1.0. (See accompanying file
  //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  
  //  See http://www.boost.org for most recent version.
  
  //  config for libc++
  //  Might need more in here later.
  
  #if !defined(_LIBCPP_VERSION)
  #  include <ciso646>
  #  if !defined(_LIBCPP_VERSION)
  #      error "This is not libc++!"
  #  endif
  #endif
  
  #define BOOST_STDLIB "libc++ version " BOOST_STRINGIZE(_LIBCPP_VERSION)
  
  #define BOOST_HAS_THREADS
  
  #ifdef _LIBCPP_HAS_NO_VARIADICS
  #    define BOOST_NO_CXX11_HDR_TUPLE
  #endif
  
  // BOOST_NO_CXX11_ALLOCATOR should imply no support for the C++11
  // allocator model. The C++11 allocator model requires a conforming
  // std::allocator_traits which is only possible with C++11 template
  // aliases since members rebind_alloc and rebind_traits require it.
  #if defined(_LIBCPP_HAS_NO_TEMPLATE_ALIASES)
  #    define BOOST_NO_CXX11_ALLOCATOR
  #endif
  
  #if __cplusplus < 201103
  #  define BOOST_NO_CXX11_HDR_ARRAY
  #  define BOOST_NO_CXX11_HDR_CODECVT
  #  define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
  #  define BOOST_NO_CXX11_HDR_FORWARD_LIST
  #  define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
  #  define BOOST_NO_CXX11_HDR_MUTEX
  #  define BOOST_NO_CXX11_HDR_RANDOM
  #  define BOOST_NO_CXX11_HDR_RATIO
  #  define BOOST_NO_CXX11_HDR_REGEX
  #  define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
  #  define BOOST_NO_CXX11_HDR_THREAD
  #  define BOOST_NO_CXX11_HDR_TUPLE
  #  define BOOST_NO_CXX11_HDR_TYPEINDEX
  #  define BOOST_NO_CXX11_HDR_UNORDERED_MAP
  #  define BOOST_NO_CXX11_HDR_UNORDERED_SET
  #  define BOOST_NO_CXX11_NUMERIC_LIMITS
  #  define BOOST_NO_CXX11_ALLOCATOR
  #  define BOOST_NO_CXX11_SMART_PTR
  #  define BOOST_NO_CXX11_HDR_FUNCTIONAL
  #  define BOOST_NO_CXX11_STD_ALIGN
  #  define BOOST_NO_CXX11_ADDRESSOF
  #  define BOOST_NO_CXX11_HDR_ATOMIC
  #  define BOOST_NO_CXX11_ATOMIC_SMART_PTR
  #  define BOOST_NO_CXX11_HDR_CHRONO
  #  define BOOST_NO_CXX11_HDR_TYPE_TRAITS
  #  define BOOST_NO_CXX11_HDR_FUTURE
  #elif _LIBCPP_VERSION < 3700
  //
  // These appear to be unusable/incomplete so far:
  //
  #  define BOOST_NO_CXX11_HDR_ATOMIC
  #  define BOOST_NO_CXX11_ATOMIC_SMART_PTR
  #  define BOOST_NO_CXX11_HDR_CHRONO
  #  define BOOST_NO_CXX11_HDR_TYPE_TRAITS
  #  define BOOST_NO_CXX11_HDR_FUTURE
  #endif
  
  
  #if _LIBCPP_VERSION < 3700
  // libc++ uses a non-standard messages_base
  #define BOOST_NO_STD_MESSAGES
  #endif
  
  #if defined(__has_include)
  #if !__has_include(<shared_mutex>)
  #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
  #elif __cplusplus <= 201103
  #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
  #endif
  #elif __cplusplus < 201402
  #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
  #endif
  
  //  --- end ---
  