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 - 2003.
0002 //  (C) Copyright Jens Maurer 2001.
0003 //  (C) Copyright Peter Dimov 2001.
0004 //  (C) Copyright David Abrahams 2002.
0005 //  (C) Copyright Guillaume Melquiond 2003.
0006 //  Use, modification and distribution are subject to the
0007 //  Boost Software License, Version 1.0. (See accompanying file
0008 //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0009 
0010 //  See http://www.boost.org for most recent version.
0011 
0012 //  Dinkumware standard library config:
0013 
0014 #if !defined(_YVALS) && !defined(_CPPLIB_VER)
0015 #include <boost/config/no_tr1/utility.hpp>
0016 #if !defined(_YVALS) && !defined(_CPPLIB_VER)
0017 #error This is not the Dinkumware lib!
0018 #endif
0019 #endif
0020 
0021 
0022 #if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306)
0023    // full dinkumware 3.06 and above
0024    // fully conforming provided the compiler supports it:
0025 #  if !(defined(_GLOBAL_USING) && (_GLOBAL_USING+0 > 0)) && !defined(BOOST_BORLANDC) && !defined(_STD) && !(defined(__ICC) && (__ICC >= 700))   // can be defined in yvals.h
0026 #     define BOOST_NO_STDC_NAMESPACE
0027 #  endif
0028 #  if !(defined(_HAS_MEMBER_TEMPLATES_REBIND) && (_HAS_MEMBER_TEMPLATES_REBIND+0 > 0)) && !(defined(_MSC_VER) && (_MSC_VER > 1300)) && defined(BOOST_MSVC)
0029 #     define BOOST_NO_STD_ALLOCATOR
0030 #  endif
0031 #  define BOOST_HAS_PARTIAL_STD_ALLOCATOR
0032 #  if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
0033       // if this lib version is set up for vc6 then there is no std::use_facet:
0034 #     define BOOST_NO_STD_USE_FACET
0035 #     define BOOST_HAS_TWO_ARG_USE_FACET
0036       // C lib functions aren't in namespace std either:
0037 #     define BOOST_NO_STDC_NAMESPACE
0038       // and nor is <exception>
0039 #     define BOOST_NO_EXCEPTION_STD_NAMESPACE
0040 #  endif
0041 // There's no numeric_limits<long long> support unless _LONGLONG is defined:
0042 #  if !defined(_LONGLONG) && (_CPPLIB_VER <= 310)
0043 #     define BOOST_NO_MS_INT64_NUMERIC_LIMITS
0044 #  endif
0045 // 3.06 appears to have (non-sgi versions of) <hash_set> & <hash_map>,
0046 // and no <slist> at all
0047 #else
0048 #  define BOOST_MSVC_STD_ITERATOR 1
0049 #  define BOOST_NO_STD_ITERATOR
0050 #  define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
0051 #  define BOOST_NO_STD_ALLOCATOR
0052 #  define BOOST_NO_STDC_NAMESPACE
0053 #  define BOOST_NO_STD_USE_FACET
0054 #  define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
0055 #  define BOOST_HAS_MACRO_USE_FACET
0056 #  ifndef _CPPLIB_VER
0057       // Updated Dinkum library defines this, and provides
0058       // its own min and max definitions, as does MTA version.
0059 #     ifndef __MTA__ 
0060 #        define BOOST_NO_STD_MIN_MAX
0061 #     endif
0062 #     define BOOST_NO_MS_INT64_NUMERIC_LIMITS
0063 #  endif
0064 #endif
0065 
0066 //
0067 // std extension namespace is stdext for vc7.1 and later, 
0068 // the same applies to other compilers that sit on top
0069 // of vc7.1 (Intel and Comeau):
0070 //
0071 #if defined(_MSC_VER) && (_MSC_VER >= 1310) && !defined(BOOST_BORLANDC)
0072 #  define BOOST_STD_EXTENSION_NAMESPACE stdext
0073 #endif
0074 
0075 
0076 #if (defined(_MSC_VER) && (_MSC_VER <= 1300) && !defined(BOOST_BORLANDC)) || !defined(_CPPLIB_VER) || (_CPPLIB_VER < 306)
0077    // if we're using a dinkum lib that's
0078    // been configured for VC6/7 then there is
0079    // no iterator traits (true even for icl)
0080 #  define BOOST_NO_STD_ITERATOR_TRAITS
0081 #endif
0082 
0083 #if defined(__ICL) && (__ICL < 800) && defined(_CPPLIB_VER) && (_CPPLIB_VER <= 310)
0084 // Intel C++ chokes over any non-trivial use of <locale>
0085 // this may be an overly restrictive define, but regex fails without it:
0086 #  define BOOST_NO_STD_LOCALE
0087 #endif
0088 
0089 #if ((defined(BOOST_MSVC) && BOOST_MSVC >= 1400) || (defined(__clang__) && defined(_MSC_VER))) && (_MSC_VER < 1800)
0090 // Fix for VC++ 8.0 on up ( I do not have a previous version to test )
0091 // or clang-cl. If exceptions are off you must manually include the 
0092 // <exception> header before including the <typeinfo> header. Admittedly 
0093 // trying to use Boost libraries or the standard C++ libraries without 
0094 // exception support is not suggested but currently clang-cl ( v 3.4 ) 
0095 // does not support exceptions and must be compiled with exceptions off.
0096 #if !_HAS_EXCEPTIONS
0097 #include <exception>
0098 #endif
0099 #include <typeinfo>
0100 #if !_HAS_EXCEPTIONS
0101 #  define BOOST_NO_STD_TYPEINFO
0102 #endif  
0103 #endif
0104 #if defined(__ghs__) && !_HAS_NAMESPACE
0105 #  define BOOST_NO_STD_TYPEINFO
0106 #endif
0107 
0108 //  C++0x headers implemented in 520 (as shipped by Microsoft)
0109 //
0110 #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 520
0111 #  define BOOST_NO_CXX11_HDR_ARRAY
0112 #  define BOOST_NO_CXX11_HDR_CODECVT
0113 #  define BOOST_NO_CXX11_HDR_FORWARD_LIST
0114 #  define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
0115 #  define BOOST_NO_CXX11_HDR_RANDOM
0116 #  define BOOST_NO_CXX11_HDR_REGEX
0117 #  define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
0118 #  define BOOST_NO_CXX11_HDR_UNORDERED_MAP
0119 #  define BOOST_NO_CXX11_HDR_UNORDERED_SET
0120 #  define BOOST_NO_CXX11_HDR_TUPLE
0121 #  define BOOST_NO_CXX11_HDR_TYPEINDEX
0122 #  define BOOST_NO_CXX11_HDR_FUNCTIONAL
0123 #  define BOOST_NO_CXX11_NUMERIC_LIMITS
0124 #  define BOOST_NO_CXX11_SMART_PTR
0125 #endif
0126 
0127 #if ((!defined(_HAS_TR1_IMPORTS) || (_HAS_TR1_IMPORTS+0 == 0)) && !defined(BOOST_NO_CXX11_HDR_TUPLE)) \
0128   && (!defined(_CPPLIB_VER) || _CPPLIB_VER < 610)
0129 #  define BOOST_NO_CXX11_HDR_TUPLE
0130 #endif
0131 
0132 //  C++0x headers implemented in 540 (as shipped by Microsoft)
0133 //
0134 #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 540
0135 #  define BOOST_NO_CXX11_HDR_TYPE_TRAITS
0136 #  define BOOST_NO_CXX11_HDR_CHRONO
0137 #  define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
0138 #  define BOOST_NO_CXX11_HDR_FUTURE
0139 #  define BOOST_NO_CXX11_HDR_MUTEX
0140 #  define BOOST_NO_CXX11_HDR_RATIO
0141 #  define BOOST_NO_CXX11_HDR_THREAD
0142 #  define BOOST_NO_CXX11_ATOMIC_SMART_PTR
0143 #  define BOOST_NO_CXX11_HDR_EXCEPTION
0144 #endif
0145 
0146 //  C++0x headers implemented in 610 (as shipped by Microsoft)
0147 //
0148 #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 610
0149 #  define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
0150 #  define BOOST_NO_CXX11_HDR_ATOMIC
0151 #  define BOOST_NO_CXX11_ALLOCATOR
0152 // 540 has std::align but it is not a conforming implementation
0153 #  define BOOST_NO_CXX11_STD_ALIGN
0154 #endif
0155 
0156 // Before 650 std::pointer_traits has a broken rebind template
0157 #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 650
0158 #  define BOOST_NO_CXX11_POINTER_TRAITS
0159 #elif defined(BOOST_MSVC) && BOOST_MSVC < 1910
0160 #  define BOOST_NO_CXX11_POINTER_TRAITS
0161 #endif
0162 
0163 #if defined(__has_include)
0164 #if !__has_include(<shared_mutex>)
0165 #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
0166 #elif (__cplusplus < 201402) && !defined(_MSC_VER)
0167 #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
0168 #endif
0169 #elif !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650)
0170 #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
0171 #endif
0172 
0173 // C++14 features
0174 #if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650)
0175 #  define BOOST_NO_CXX14_STD_EXCHANGE
0176 #endif
0177 
0178 // C++17 features
0179 #if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) \
0180  || ((!defined(BOOST_MSVC) || (BOOST_MSVC < 1910))) && (!defined(__clang__) || !defined(_MSC_VER) || (_MSC_VER < 1929))\
0181  || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0)
0182 #  define BOOST_NO_CXX17_STD_APPLY
0183 #  define BOOST_NO_CXX17_ITERATOR_TRAITS
0184 #  define BOOST_NO_CXX17_HDR_STRING_VIEW
0185 #  define BOOST_NO_CXX17_HDR_OPTIONAL
0186 #  define BOOST_NO_CXX17_HDR_VARIANT
0187 #  define BOOST_NO_CXX17_HDR_ANY
0188 #  define BOOST_NO_CXX17_HDR_MEMORY_RESOURCE
0189 #  define BOOST_NO_CXX17_HDR_CHARCONV
0190 #  define BOOST_NO_CXX17_HDR_EXECUTION
0191 #  define BOOST_NO_CXX17_HDR_FILESYSTEM
0192 #endif
0193 #if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0) || !defined(_MSVC_STL_UPDATE) || (_MSVC_STL_UPDATE < 201709)
0194 #  define BOOST_NO_CXX17_STD_INVOKE
0195 #endif
0196 
0197 // C++20 features which aren't configured in suffix.hpp correctly:
0198 #if !defined(_MSVC_STL_UPDATE) || (_MSVC_STL_UPDATE < 202008L) || !defined(_HAS_CXX20) || (_HAS_CXX20 == 0)
0199 #  define BOOST_NO_CXX20_HDR_CONCEPTS
0200 #endif
0201 
0202 #if !(!defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(BOOST_MSVC) || (BOOST_MSVC < 1912) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0))
0203 // Deprecated std::iterator:
0204 #  define BOOST_NO_STD_ITERATOR
0205 #endif
0206 
0207 #if defined(BOOST_INTEL) && (BOOST_INTEL <= 1400)
0208 // Intel's compiler can't handle this header yet:
0209 #  define BOOST_NO_CXX11_HDR_ATOMIC
0210 #endif
0211 
0212 
0213 //  520..610 have std::addressof, but it doesn't support functions
0214 //
0215 #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 650
0216 #  define BOOST_NO_CXX11_ADDRESSOF
0217 #endif
0218 
0219 // Bug specific to VC14, 
0220 // See https://connect.microsoft.com/VisualStudio/feedback/details/1348277/link-error-when-using-std-codecvt-utf8-utf16-char16-t
0221 // and discussion here: http://blogs.msdn.com/b/vcblog/archive/2014/11/12/visual-studio-2015-preview-now-available.aspx?PageIndex=2
0222 #if defined(_CPPLIB_VER) && (_CPPLIB_VER == 650) && (!defined(_MSVC_STL_VERSION) || (_MSVC_STL_VERSION < 142))
0223 #  define BOOST_NO_CXX11_HDR_CODECVT
0224 #endif
0225 
0226 #if (_MSVC_LANG > 201700) && !defined(BOOST_NO_CXX11_HDR_CODECVT)
0227 //
0228 // <codecvt> is deprected as of C++17, and by default MSVC emits hard errors
0229 // if you try to use it, so mark it as unavailable:
0230 //
0231 #  define BOOST_NO_CXX11_HDR_CODECVT
0232 #endif
0233 
0234 #if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 650)
0235 // If _HAS_AUTO_PTR_ETC is defined to 0, std::auto_ptr and std::random_shuffle are not available.
0236 // See https://www.visualstudio.com/en-us/news/vs2015-vs.aspx#C++
0237 // and http://blogs.msdn.com/b/vcblog/archive/2015/06/19/c-11-14-17-features-in-vs-2015-rtm.aspx
0238 #  if defined(_HAS_AUTO_PTR_ETC) && (_HAS_AUTO_PTR_ETC == 0)
0239 #    define BOOST_NO_AUTO_PTR
0240 #    define BOOST_NO_CXX98_RANDOM_SHUFFLE
0241 #    define BOOST_NO_CXX98_FUNCTION_BASE
0242 #    define BOOST_NO_CXX98_BINDERS
0243 #  elif defined(_HAS_DEPRECATED_ADAPTOR_TYPEDEFS) && (_HAS_DEPRECATED_ADAPTOR_TYPEDEFS == 0)
0244 #    define BOOST_NO_CXX98_BINDERS
0245 #  endif
0246 #endif
0247 //
0248 // Things deprecated in C++20:
0249 //
0250 #if defined(_HAS_CXX20)
0251 #  define BOOST_NO_CXX11_ATOMIC_SMART_PTR
0252 #endif
0253 
0254 
0255 //
0256 // Things not supported by the CLR:
0257 #ifdef _M_CEE
0258 #ifndef BOOST_NO_CXX11_HDR_MUTEX
0259 #  define BOOST_NO_CXX11_HDR_MUTEX
0260 #endif
0261 #ifndef BOOST_NO_CXX11_HDR_ATOMIC
0262 #  define BOOST_NO_CXX11_HDR_ATOMIC
0263 #endif
0264 #ifndef BOOST_NO_CXX11_HDR_FUTURE
0265 #  define BOOST_NO_CXX11_HDR_FUTURE
0266 #endif
0267 #ifndef BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
0268 #  define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
0269 #endif
0270 #ifndef BOOST_NO_CXX11_HDR_THREAD
0271 #  define BOOST_NO_CXX11_HDR_THREAD
0272 #endif
0273 #ifndef BOOST_NO_CXX14_HDR_SHARED_MUTEX
0274 #  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
0275 #endif
0276 #ifndef BOOST_NO_CXX14_STD_EXCHANGE
0277 #  define BOOST_NO_CXX14_STD_EXCHANGE
0278 #endif
0279 #ifndef BOOST_NO_FENV_H
0280 #  define BOOST_NO_FENV_H
0281 #endif
0282 #endif
0283 
0284 #ifdef _CPPLIB_VER
0285 #  define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER
0286 #else
0287 #  define BOOST_DINKUMWARE_STDLIB 1
0288 #endif
0289 
0290 // BOOST_MSSTL_VERSION: as _MSVC_STL_VERSION, but for earlier releases as well
0291 
0292 #if defined(_MSVC_STL_VERSION) // VS2017 (14.1) and above
0293 #  define BOOST_MSSTL_VERSION _MSVC_STL_VERSION
0294 
0295 #elif defined(_CPPLIB_VER) && _CPPLIB_VER >= 650 // VS2015 (14.0)
0296 #  define BOOST_MSSTL_VERSION 140
0297 
0298 #elif defined(_CPPLIB_VER) && _CPPLIB_VER >= 610 // VS2013 (12.0)
0299 #  define BOOST_MSSTL_VERSION 120
0300 
0301 #elif defined(_CPPLIB_VER) && _CPPLIB_VER >= 540 // VS2012 (11.0)
0302 #  define BOOST_MSSTL_VERSION 110
0303 
0304 #elif defined(_CPPLIB_VER) && _CPPLIB_VER >= 520 // VS2010 (10.0)
0305 #  define BOOST_MSSTL_VERSION 100
0306 
0307 #elif defined(_CPPLIB_VER) && _CPPLIB_VER >= 505 // VS2008SP1 (9.0)
0308 #  define BOOST_MSSTL_VERSION 91
0309 
0310 #elif defined(_CPPLIB_VER) && _CPPLIB_VER >= 503 // VS2008 (also 9.0)
0311 #  define BOOST_MSSTL_VERSION 90
0312 
0313 #elif defined(_CPPLIB_VER) && _CPPLIB_VER >= 405 // VS2005 (8.0)
0314 #  define BOOST_MSSTL_VERSION 80
0315 
0316 #endif
0317 
0318 //
0319 
0320 #ifdef _CPPLIB_VER
0321 #  define BOOST_STDLIB "Dinkumware standard library version " BOOST_STRINGIZE(_CPPLIB_VER)
0322 #else
0323 #  define BOOST_STDLIB "Dinkumware standard library version 1.x"
0324 #endif