github.com/searKing/golang/go@v1.2.74/os/signal/cgo/include/boost/config/stdlib/libcpp.hpp (about)

     1  //  (C) Copyright Christopher Jefferson 2011.
     2  //  Use, modification and distribution are subject to the
     3  //  Boost Software License, Version 1.0. (See accompanying file
     4  //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
     5  
     6  //  See http://www.boost.org for most recent version.
     7  
     8  //  config for libc++
     9  //  Might need more in here later.
    10  
    11  #if !defined(_LIBCPP_VERSION)
    12  #  include <ciso646>
    13  #  if !defined(_LIBCPP_VERSION)
    14  #      error "This is not libc++!"
    15  #  endif
    16  #endif
    17  
    18  #define BOOST_STDLIB "libc++ version " BOOST_STRINGIZE(_LIBCPP_VERSION)
    19  
    20  #define BOOST_HAS_THREADS
    21  
    22  #ifdef _LIBCPP_HAS_NO_VARIADICS
    23  #    define BOOST_NO_CXX11_HDR_TUPLE
    24  #endif
    25  
    26  // BOOST_NO_CXX11_ALLOCATOR should imply no support for the C++11
    27  // allocator model. The C++11 allocator model requires a conforming
    28  // std::allocator_traits which is only possible with C++11 template
    29  // aliases since members rebind_alloc and rebind_traits require it.
    30  #if defined(_LIBCPP_HAS_NO_TEMPLATE_ALIASES)
    31  #    define BOOST_NO_CXX11_ALLOCATOR
    32  #    define BOOST_NO_CXX11_POINTER_TRAITS
    33  #endif
    34  
    35  #if __cplusplus < 201103
    36  //
    37  // These two appear to be somewhat useable in C++03 mode, there may be others...
    38  //
    39  //#  define BOOST_NO_CXX11_HDR_ARRAY
    40  //#  define BOOST_NO_CXX11_HDR_FORWARD_LIST
    41  
    42  #  define BOOST_NO_CXX11_HDR_CODECVT
    43  #  define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
    44  #  define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
    45  #  define BOOST_NO_CXX11_HDR_MUTEX
    46  #  define BOOST_NO_CXX11_HDR_RANDOM
    47  #  define BOOST_NO_CXX11_HDR_RATIO
    48  #  define BOOST_NO_CXX11_HDR_REGEX
    49  #  define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
    50  #  define BOOST_NO_CXX11_HDR_THREAD
    51  #  define BOOST_NO_CXX11_HDR_TUPLE
    52  #  define BOOST_NO_CXX11_HDR_TYPEINDEX
    53  #  define BOOST_NO_CXX11_HDR_UNORDERED_MAP
    54  #  define BOOST_NO_CXX11_HDR_UNORDERED_SET
    55  #  define BOOST_NO_CXX11_NUMERIC_LIMITS
    56  #  define BOOST_NO_CXX11_ALLOCATOR
    57  #  define BOOST_NO_CXX11_POINTER_TRAITS
    58  #  define BOOST_NO_CXX11_SMART_PTR
    59  #  define BOOST_NO_CXX11_HDR_FUNCTIONAL
    60  #  define BOOST_NO_CXX11_STD_ALIGN
    61  #  define BOOST_NO_CXX11_ADDRESSOF
    62  #  define BOOST_NO_CXX11_HDR_ATOMIC
    63  #  define BOOST_NO_CXX11_ATOMIC_SMART_PTR
    64  #  define BOOST_NO_CXX11_HDR_CHRONO
    65  #  define BOOST_NO_CXX11_HDR_TYPE_TRAITS
    66  #  define BOOST_NO_CXX11_HDR_FUTURE
    67  #elif _LIBCPP_VERSION < 3700
    68  //
    69  // These appear to be unusable/incomplete so far:
    70  //
    71  #  define BOOST_NO_CXX11_HDR_ATOMIC
    72  #  define BOOST_NO_CXX11_ATOMIC_SMART_PTR
    73  #  define BOOST_NO_CXX11_HDR_CHRONO
    74  #  define BOOST_NO_CXX11_HDR_TYPE_TRAITS
    75  #  define BOOST_NO_CXX11_HDR_FUTURE
    76  #endif
    77  
    78  
    79  #if _LIBCPP_VERSION < 3700
    80  // libc++ uses a non-standard messages_base
    81  #define BOOST_NO_STD_MESSAGES
    82  #endif
    83  
    84  // C++14 features
    85  #if (_LIBCPP_VERSION < 3700) || (__cplusplus <= 201402L)
    86  #  define BOOST_NO_CXX14_STD_EXCHANGE
    87  #endif
    88  
    89  // C++17 features
    90  #if (_LIBCPP_VERSION < 4000) || (__cplusplus <= 201402L)
    91  #  define BOOST_NO_CXX17_STD_APPLY
    92  #  define BOOST_NO_CXX17_HDR_OPTIONAL
    93  #  define BOOST_NO_CXX17_HDR_STRING_VIEW
    94  #  define BOOST_NO_CXX17_HDR_VARIANT
    95  #endif
    96  #if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR)
    97  #  define BOOST_NO_AUTO_PTR
    98  #endif
    99  #if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE)
   100  #  define BOOST_NO_CXX98_RANDOM_SHUFFLE
   101  #endif
   102  #if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS)
   103  #  define BOOST_NO_CXX98_BINDERS
   104  #endif
   105  
   106  #define BOOST_NO_CXX17_ITERATOR_TRAITS
   107  #define BOOST_NO_CXX17_STD_INVOKE      // Invoke support is incomplete (no invoke_result)
   108  
   109  #if (_LIBCPP_VERSION <= 1101) && !defined(BOOST_NO_CXX11_THREAD_LOCAL)
   110  // This is a bit of a sledgehammer, because really it's just libc++abi that has no
   111  // support for thread_local, leading to linker errors such as
   112  // "undefined reference to `__cxa_thread_atexit'".  It is fixed in the
   113  // most recent releases of libc++abi though...
   114  #  define BOOST_NO_CXX11_THREAD_LOCAL
   115  #endif
   116  
   117  #if defined(__linux__) && (_LIBCPP_VERSION < 6000) && !defined(BOOST_NO_CXX11_THREAD_LOCAL)
   118  // After libc++-dev is installed on Trusty, clang++-libc++ almost works,
   119  // except uses of `thread_local` fail with undefined reference to
   120  // `__cxa_thread_atexit`.
   121  //
   122  // clang's libc++abi provides an implementation by deferring to the glibc
   123  // implementation, which may or may not be available (it is not on Trusty).
   124  // clang 4's libc++abi will provide an implementation if one is not in glibc
   125  // though, so thread local support should work with clang 4 and above as long
   126  // as libc++abi is linked in.
   127  #  define BOOST_NO_CXX11_THREAD_LOCAL
   128  #endif
   129  
   130  #if defined(__has_include)
   131  #if !__has_include(<shared_mutex>)
   132  #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
   133  #elif __cplusplus <= 201103
   134  #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
   135  #endif
   136  #elif __cplusplus < 201402
   137  #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
   138  #endif
   139  
   140  #if !defined(BOOST_NO_CXX14_HDR_SHARED_MUTEX) && (_LIBCPP_VERSION < 5000)
   141  #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
   142  #endif
   143  
   144  //  --- end ---