Chris@16: // (C) Copyright John Maddock 2001 - 2003. Chris@16: // (C) Copyright Jens Maurer 2001. Chris@16: // (C) Copyright Peter Dimov 2001. Chris@16: // (C) Copyright David Abrahams 2002. Chris@16: // (C) Copyright Guillaume Melquiond 2003. Chris@16: // Use, modification and distribution are subject to the Chris@16: // Boost Software License, Version 1.0. (See accompanying file Chris@16: // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: // See http://www.boost.org for most recent version. Chris@16: Chris@16: // Dinkumware standard library config: Chris@16: Chris@16: #if !defined(_YVALS) && !defined(_CPPLIB_VER) Chris@16: #include Chris@16: #if !defined(_YVALS) && !defined(_CPPLIB_VER) Chris@16: #error This is not the Dinkumware lib! Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: Chris@16: #if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306) Chris@16: // full dinkumware 3.06 and above Chris@16: // fully conforming provided the compiler supports it: Chris@16: # if !(defined(_GLOBAL_USING) && (_GLOBAL_USING+0 > 0)) && !defined(__BORLANDC__) && !defined(_STD) && !(defined(__ICC) && (__ICC >= 700)) // can be defined in yvals.h Chris@16: # define BOOST_NO_STDC_NAMESPACE Chris@16: # endif Chris@16: # if !(defined(_HAS_MEMBER_TEMPLATES_REBIND) && (_HAS_MEMBER_TEMPLATES_REBIND+0 > 0)) && !(defined(_MSC_VER) && (_MSC_VER > 1300)) && defined(BOOST_MSVC) Chris@16: # define BOOST_NO_STD_ALLOCATOR Chris@16: # endif Chris@16: # define BOOST_HAS_PARTIAL_STD_ALLOCATOR Chris@16: # if defined(BOOST_MSVC) && (BOOST_MSVC < 1300) Chris@16: // if this lib version is set up for vc6 then there is no std::use_facet: Chris@16: # define BOOST_NO_STD_USE_FACET Chris@16: # define BOOST_HAS_TWO_ARG_USE_FACET Chris@16: // C lib functions aren't in namespace std either: Chris@16: # define BOOST_NO_STDC_NAMESPACE Chris@16: // and nor is Chris@16: # define BOOST_NO_EXCEPTION_STD_NAMESPACE Chris@16: # endif Chris@16: // There's no numeric_limits support unless _LONGLONG is defined: Chris@16: # if !defined(_LONGLONG) && (_CPPLIB_VER <= 310) Chris@16: # define BOOST_NO_MS_INT64_NUMERIC_LIMITS Chris@16: # endif Chris@16: // 3.06 appears to have (non-sgi versions of) & , Chris@16: // and no at all Chris@16: #else Chris@16: # define BOOST_MSVC_STD_ITERATOR 1 Chris@16: # define BOOST_NO_STD_ITERATOR Chris@16: # define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS Chris@16: # define BOOST_NO_STD_ALLOCATOR Chris@16: # define BOOST_NO_STDC_NAMESPACE Chris@16: # define BOOST_NO_STD_USE_FACET Chris@16: # define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN Chris@16: # define BOOST_HAS_MACRO_USE_FACET Chris@16: # ifndef _CPPLIB_VER Chris@16: // Updated Dinkum library defines this, and provides Chris@16: // its own min and max definitions, as does MTA version. Chris@16: # ifndef __MTA__ Chris@16: # define BOOST_NO_STD_MIN_MAX Chris@16: # endif Chris@16: # define BOOST_NO_MS_INT64_NUMERIC_LIMITS Chris@16: # endif Chris@16: #endif Chris@16: Chris@16: // Chris@16: // std extension namespace is stdext for vc7.1 and later, Chris@16: // the same applies to other compilers that sit on top Chris@16: // of vc7.1 (Intel and Comeau): Chris@16: // Chris@16: #if defined(_MSC_VER) && (_MSC_VER >= 1310) && !defined(__BORLANDC__) Chris@16: # define BOOST_STD_EXTENSION_NAMESPACE stdext Chris@16: #endif Chris@16: Chris@16: Chris@16: #if (defined(_MSC_VER) && (_MSC_VER <= 1300) && !defined(__BORLANDC__)) || !defined(_CPPLIB_VER) || (_CPPLIB_VER < 306) Chris@16: // if we're using a dinkum lib that's Chris@16: // been configured for VC6/7 then there is Chris@16: // no iterator traits (true even for icl) Chris@16: # define BOOST_NO_STD_ITERATOR_TRAITS Chris@16: #endif Chris@16: Chris@16: #if defined(__ICL) && (__ICL < 800) && defined(_CPPLIB_VER) && (_CPPLIB_VER <= 310) Chris@16: // Intel C++ chokes over any non-trivial use of Chris@16: // this may be an overly restrictive define, but regex fails without it: Chris@16: # define BOOST_NO_STD_LOCALE Chris@16: #endif Chris@16: Chris@101: // Fix for VC++ 8.0 on up ( I do not have a previous version to test ) Chris@101: // or clang-cl. If exceptions are off you must manually include the Chris@101: // header before including the header. Admittedly Chris@101: // trying to use Boost libraries or the standard C++ libraries without Chris@101: // exception support is not suggested but currently clang-cl ( v 3.4 ) Chris@101: // does not support exceptions and must be compiled with exceptions off. Chris@101: #if !_HAS_EXCEPTIONS && ((defined(BOOST_MSVC) && BOOST_MSVC >= 1400) || (defined(__clang__) && defined(_MSC_VER))) Chris@101: #include Chris@101: #endif Chris@16: #include Chris@101: #if ( (!_HAS_EXCEPTIONS && !defined(__ghs__)) || (!_HAS_NAMESPACE && defined(__ghs__)) ) && !defined(__TI_COMPILER_VERSION__) && !defined(__VISUALDSPVERSION__) Chris@101: # define BOOST_NO_STD_TYPEINFO Chris@16: #endif Chris@16: Chris@16: // C++0x headers implemented in 520 (as shipped by Microsoft) Chris@16: // Chris@16: #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 520 Chris@16: # define BOOST_NO_CXX11_HDR_ARRAY Chris@16: # define BOOST_NO_CXX11_HDR_CODECVT Chris@16: # define BOOST_NO_CXX11_HDR_FORWARD_LIST Chris@16: # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST Chris@16: # define BOOST_NO_CXX11_HDR_RANDOM Chris@16: # define BOOST_NO_CXX11_HDR_REGEX Chris@16: # define BOOST_NO_CXX11_HDR_SYSTEM_ERROR Chris@16: # define BOOST_NO_CXX11_HDR_UNORDERED_MAP Chris@16: # define BOOST_NO_CXX11_HDR_UNORDERED_SET Chris@16: # define BOOST_NO_CXX11_HDR_TUPLE Chris@16: # define BOOST_NO_CXX11_HDR_TYPEINDEX Chris@16: # define BOOST_NO_CXX11_HDR_FUNCTIONAL Chris@16: # define BOOST_NO_CXX11_NUMERIC_LIMITS Chris@16: # define BOOST_NO_CXX11_SMART_PTR Chris@16: #endif Chris@16: Chris@16: #if ((!defined(_HAS_TR1_IMPORTS) || (_HAS_TR1_IMPORTS+0 == 0)) && !defined(BOOST_NO_CXX11_HDR_TUPLE)) \ Chris@16: && (!defined(_CPPLIB_VER) || _CPPLIB_VER < 610) Chris@16: # define BOOST_NO_CXX11_HDR_TUPLE Chris@16: #endif Chris@16: Chris@16: // C++0x headers implemented in 540 (as shipped by Microsoft) Chris@16: // Chris@16: #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 540 Chris@16: # define BOOST_NO_CXX11_HDR_TYPE_TRAITS Chris@16: # define BOOST_NO_CXX11_HDR_CHRONO Chris@16: # define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE Chris@16: # define BOOST_NO_CXX11_HDR_FUTURE Chris@16: # define BOOST_NO_CXX11_HDR_MUTEX Chris@16: # define BOOST_NO_CXX11_HDR_RATIO Chris@16: # define BOOST_NO_CXX11_HDR_THREAD Chris@16: # define BOOST_NO_CXX11_ATOMIC_SMART_PTR Chris@16: #endif Chris@16: Chris@16: // C++0x headers implemented in 610 (as shipped by Microsoft) Chris@16: // Chris@16: #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 610 Chris@16: # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST Chris@101: # define BOOST_NO_CXX11_HDR_ATOMIC Chris@101: # define BOOST_NO_CXX11_ALLOCATOR Chris@101: // 540 has std::align but it is not a conforming implementation Chris@101: # define BOOST_NO_CXX11_STD_ALIGN Chris@16: #endif Chris@16: Chris@101: #if defined(BOOST_INTEL) && (BOOST_INTEL <= 1400) Chris@101: // Intel's compiler can't handle this header yet: Chris@101: # define BOOST_NO_CXX11_HDR_ATOMIC Chris@101: #endif Chris@101: Chris@101: Chris@101: // 520..610 have std::addressof, but it doesn't support functions Chris@101: // Chris@101: # define BOOST_NO_CXX11_ADDRESSOF Chris@101: Chris@16: #ifdef _CPPLIB_VER Chris@16: # define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER Chris@16: #else Chris@16: # define BOOST_DINKUMWARE_STDLIB 1 Chris@16: #endif Chris@16: Chris@16: #ifdef _CPPLIB_VER Chris@16: # define BOOST_STDLIB "Dinkumware standard library version " BOOST_STRINGIZE(_CPPLIB_VER) Chris@16: #else Chris@16: # define BOOST_STDLIB "Dinkumware standard library version 1.x" Chris@16: #endif