annotate DEPENDENCIES/generic/include/boost/config/compiler/intel.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents c530137014c0
children
rev   line source
Chris@16 1 // (C) Copyright John Maddock 2001-8.
Chris@16 2 // (C) Copyright Peter Dimov 2001.
Chris@16 3 // (C) Copyright Jens Maurer 2001.
Chris@16 4 // (C) Copyright David Abrahams 2002 - 2003.
Chris@16 5 // (C) Copyright Aleksey Gurtovoy 2002 - 2003.
Chris@16 6 // (C) Copyright Guillaume Melquiond 2002 - 2003.
Chris@16 7 // (C) Copyright Beman Dawes 2003.
Chris@16 8 // (C) Copyright Martin Wille 2003.
Chris@16 9 // Use, modification and distribution are subject to the
Chris@16 10 // Boost Software License, Version 1.0. (See accompanying file
Chris@16 11 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@16 12
Chris@16 13 // See http://www.boost.org for most recent version.
Chris@16 14
Chris@16 15 // Intel compiler setup:
Chris@16 16
Chris@16 17 #include "boost/config/compiler/common_edg.hpp"
Chris@16 18
Chris@16 19 #if defined(__INTEL_COMPILER)
Chris@101 20 #if __INTEL_COMPILER == 9999
Chris@101 21 # define BOOST_INTEL_CXX_VERSION 1200 // Intel bug in 12.1.
Chris@101 22 #else
Chris@16 23 # define BOOST_INTEL_CXX_VERSION __INTEL_COMPILER
Chris@101 24 #endif
Chris@16 25 #elif defined(__ICL)
Chris@16 26 # define BOOST_INTEL_CXX_VERSION __ICL
Chris@16 27 #elif defined(__ICC)
Chris@16 28 # define BOOST_INTEL_CXX_VERSION __ICC
Chris@16 29 #elif defined(__ECC)
Chris@16 30 # define BOOST_INTEL_CXX_VERSION __ECC
Chris@16 31 #endif
Chris@16 32
Chris@16 33 // Flags determined by comparing output of 'icpc -dM -E' with and without '-std=c++0x'
Chris@16 34 #if (!(defined(_WIN32) || defined(_WIN64)) && defined(__STDC_HOSTED__) && (__STDC_HOSTED__ && (BOOST_INTEL_CXX_VERSION <= 1200))) || defined(__GXX_EXPERIMENTAL_CPP0X__) || defined(__GXX_EXPERIMENTAL_CXX0X__)
Chris@16 35 # define BOOST_INTEL_STDCXX0X
Chris@16 36 #endif
Chris@16 37 #if defined(_MSC_VER) && (_MSC_VER >= 1600)
Chris@16 38 # define BOOST_INTEL_STDCXX0X
Chris@16 39 #endif
Chris@16 40
Chris@101 41 #ifdef __GNUC__
Chris@101 42 # define BOOST_INTEL_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
Chris@16 43 #endif
Chris@101 44
Chris@101 45 #if !defined(BOOST_COMPILER)
Chris@101 46 # if defined(BOOST_INTEL_STDCXX0X)
Chris@101 47 # define BOOST_COMPILER "Intel C++ C++0x mode version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION)
Chris@101 48 # else
Chris@101 49 # define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION)
Chris@101 50 # endif
Chris@101 51 #endif
Chris@101 52
Chris@16 53 #define BOOST_INTEL BOOST_INTEL_CXX_VERSION
Chris@16 54
Chris@16 55 #if defined(_WIN32) || defined(_WIN64)
Chris@16 56 # define BOOST_INTEL_WIN BOOST_INTEL
Chris@16 57 #else
Chris@16 58 # define BOOST_INTEL_LINUX BOOST_INTEL
Chris@16 59 #endif
Chris@16 60
Chris@16 61 #if (BOOST_INTEL_CXX_VERSION <= 600)
Chris@16 62
Chris@16 63 # if defined(_MSC_VER) && (_MSC_VER <= 1300) // added check for <= VC 7 (Peter Dimov)
Chris@16 64
Chris@16 65 // Boost libraries assume strong standard conformance unless otherwise
Chris@16 66 // indicated by a config macro. As configured by Intel, the EDG front-end
Chris@16 67 // requires certain compiler options be set to achieve that strong conformance.
Chris@16 68 // Particularly /Qoption,c,--arg_dep_lookup (reported by Kirk Klobe & Thomas Witt)
Chris@16 69 // and /Zc:wchar_t,forScope. See boost-root/tools/build/intel-win32-tools.jam for
Chris@16 70 // details as they apply to particular versions of the compiler. When the
Chris@16 71 // compiler does not predefine a macro indicating if an option has been set,
Chris@16 72 // this config file simply assumes the option has been set.
Chris@16 73 // Thus BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP will not be defined, even if
Chris@16 74 // the compiler option is not enabled.
Chris@16 75
Chris@16 76 # define BOOST_NO_SWPRINTF
Chris@16 77 # endif
Chris@16 78
Chris@16 79 // Void returns, 64 bit integrals don't work when emulating VC 6 (Peter Dimov)
Chris@16 80
Chris@16 81 # if defined(_MSC_VER) && (_MSC_VER <= 1200)
Chris@16 82 # define BOOST_NO_VOID_RETURNS
Chris@16 83 # define BOOST_NO_INTEGRAL_INT64_T
Chris@16 84 # endif
Chris@16 85
Chris@16 86 #endif
Chris@16 87
Chris@16 88 #if (BOOST_INTEL_CXX_VERSION <= 710) && defined(_WIN32)
Chris@16 89 # define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
Chris@16 90 #endif
Chris@16 91
Chris@16 92 // See http://aspn.activestate.com/ASPN/Mail/Message/boost/1614864
Chris@16 93 #if BOOST_INTEL_CXX_VERSION < 600
Chris@16 94 # define BOOST_NO_INTRINSIC_WCHAR_T
Chris@16 95 #else
Chris@16 96 // We should test the macro _WCHAR_T_DEFINED to check if the compiler
Chris@16 97 // supports wchar_t natively. *BUT* there is a problem here: the standard
Chris@16 98 // headers define this macro if they typedef wchar_t. Anyway, we're lucky
Chris@16 99 // because they define it without a value, while Intel C++ defines it
Chris@16 100 // to 1. So we can check its value to see if the macro was defined natively
Chris@16 101 // or not.
Chris@16 102 // Under UNIX, the situation is exactly the same, but the macro _WCHAR_T
Chris@16 103 // is used instead.
Chris@16 104 # if ((_WCHAR_T_DEFINED + 0) == 0) && ((_WCHAR_T + 0) == 0)
Chris@16 105 # define BOOST_NO_INTRINSIC_WCHAR_T
Chris@16 106 # endif
Chris@16 107 #endif
Chris@16 108
Chris@16 109 #if defined(__GNUC__) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
Chris@16 110 //
Chris@16 111 // Figure out when Intel is emulating this gcc bug
Chris@16 112 // (All Intel versions prior to 9.0.26, and versions
Chris@16 113 // later than that if they are set up to emulate gcc 3.2
Chris@16 114 // or earlier):
Chris@16 115 //
Chris@16 116 # if ((__GNUC__ == 3) && (__GNUC_MINOR__ <= 2)) || (BOOST_INTEL < 900) || (__INTEL_COMPILER_BUILD_DATE < 20050912)
Chris@16 117 # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
Chris@16 118 # endif
Chris@16 119 #endif
Chris@16 120 #if (defined(__GNUC__) && (__GNUC__ < 4)) || (defined(_WIN32) && (BOOST_INTEL_CXX_VERSION <= 1200)) || (BOOST_INTEL_CXX_VERSION <= 1200)
Chris@16 121 // GCC or VC emulation:
Chris@16 122 #define BOOST_NO_TWO_PHASE_NAME_LOOKUP
Chris@16 123 #endif
Chris@16 124 //
Chris@16 125 // Verify that we have actually got BOOST_NO_INTRINSIC_WCHAR_T
Chris@16 126 // set correctly, if we don't do this now, we will get errors later
Chris@16 127 // in type_traits code among other things, getting this correct
Chris@16 128 // for the Intel compiler is actually remarkably fragile and tricky:
Chris@16 129 //
Chris@16 130 #ifdef __cplusplus
Chris@16 131 #if defined(BOOST_NO_INTRINSIC_WCHAR_T)
Chris@16 132 #include <cwchar>
Chris@16 133 template< typename T > struct assert_no_intrinsic_wchar_t;
Chris@16 134 template<> struct assert_no_intrinsic_wchar_t<wchar_t> { typedef void type; };
Chris@16 135 // if you see an error here then you need to unset BOOST_NO_INTRINSIC_WCHAR_T
Chris@16 136 // where it is defined above:
Chris@16 137 typedef assert_no_intrinsic_wchar_t<unsigned short>::type assert_no_intrinsic_wchar_t_;
Chris@16 138 #else
Chris@16 139 template< typename T > struct assert_intrinsic_wchar_t;
Chris@16 140 template<> struct assert_intrinsic_wchar_t<wchar_t> {};
Chris@16 141 // if you see an error here then define BOOST_NO_INTRINSIC_WCHAR_T on the command line:
Chris@16 142 template<> struct assert_intrinsic_wchar_t<unsigned short> {};
Chris@16 143 #endif
Chris@16 144 #endif
Chris@16 145
Chris@16 146 #if defined(_MSC_VER) && (_MSC_VER+0 >= 1000)
Chris@16 147 # if _MSC_VER >= 1200
Chris@16 148 # define BOOST_HAS_MS_INT64
Chris@16 149 # endif
Chris@16 150 # define BOOST_NO_SWPRINTF
Chris@16 151 # define BOOST_NO_TWO_PHASE_NAME_LOOKUP
Chris@16 152 #elif defined(_WIN32)
Chris@16 153 # define BOOST_DISABLE_WIN32
Chris@16 154 #endif
Chris@16 155
Chris@16 156 // I checked version 6.0 build 020312Z, it implements the NRVO.
Chris@16 157 // Correct this as you find out which version of the compiler
Chris@16 158 // implemented the NRVO first. (Daniel Frey)
Chris@16 159 #if (BOOST_INTEL_CXX_VERSION >= 600)
Chris@16 160 # define BOOST_HAS_NRVO
Chris@16 161 #endif
Chris@16 162
Chris@16 163 // Branch prediction hints
Chris@16 164 // I'm not sure 8.0 was the first version to support these builtins,
Chris@16 165 // update the condition if the version is not accurate. (Andrey Semashev)
Chris@16 166 #if defined(__GNUC__) && BOOST_INTEL_CXX_VERSION >= 800
Chris@16 167 #define BOOST_LIKELY(x) __builtin_expect(x, 1)
Chris@16 168 #define BOOST_UNLIKELY(x) __builtin_expect(x, 0)
Chris@16 169 #endif
Chris@16 170
Chris@101 171 // RTTI
Chris@101 172 // __RTTI is the EDG macro
Chris@101 173 // __INTEL_RTTI__ is the Intel macro
Chris@101 174 // __GXX_RTTI is the g++ macro
Chris@101 175 // _CPPRTTI is the MSVC++ macro
Chris@101 176 #if !defined(__RTTI) && !defined(__INTEL_RTTI__) && !defined(__GXX_RTTI) && !defined(_CPPRTTI)
Chris@101 177
Chris@101 178 #if !defined(BOOST_NO_RTTI)
Chris@101 179 # define BOOST_NO_RTTI
Chris@101 180 #endif
Chris@101 181
Chris@101 182 // in MS mode, static typeid works even when RTTI is off
Chris@101 183 #if !defined(_MSC_VER) && !defined(BOOST_NO_TYPEID)
Chris@101 184 # define BOOST_NO_TYPEID
Chris@101 185 #endif
Chris@101 186
Chris@101 187 #endif
Chris@101 188
Chris@16 189 //
Chris@16 190 // versions check:
Chris@16 191 // we don't support Intel prior to version 6.0:
Chris@16 192 #if BOOST_INTEL_CXX_VERSION < 600
Chris@16 193 # error "Compiler not supported or configured - please reconfigure"
Chris@16 194 #endif
Chris@16 195
Chris@16 196 // Intel on MacOS requires
Chris@16 197 #if defined(__APPLE__) && defined(__INTEL_COMPILER)
Chris@16 198 # define BOOST_NO_TWO_PHASE_NAME_LOOKUP
Chris@16 199 #endif
Chris@16 200
Chris@16 201 // Intel on Altix Itanium
Chris@16 202 #if defined(__itanium__) && defined(__INTEL_COMPILER)
Chris@16 203 # define BOOST_NO_TWO_PHASE_NAME_LOOKUP
Chris@16 204 #endif
Chris@16 205
Chris@16 206 //
Chris@16 207 // An attempt to value-initialize a pointer-to-member may trigger an
Chris@16 208 // internal error on Intel <= 11.1 (last checked version), as was
Chris@16 209 // reported by John Maddock, Intel support issue 589832, May 2010.
Chris@16 210 // Moreover, according to test results from Huang-Vista-x86_32_intel,
Chris@16 211 // intel-vc9-win-11.1 may leave a non-POD array uninitialized, in some
Chris@16 212 // cases when it should be value-initialized.
Chris@16 213 // (Niels Dekker, LKEB, May 2010)
Chris@16 214 // Apparently Intel 12.1 (compiler version number 9999 !!) has the same issue (compiler regression).
Chris@16 215 #if defined(__INTEL_COMPILER)
Chris@101 216 # if (__INTEL_COMPILER <= 1110) || (__INTEL_COMPILER == 9999) || (defined(_WIN32) && (__INTEL_COMPILER < 1600))
Chris@16 217 # define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
Chris@16 218 # endif
Chris@16 219 #endif
Chris@16 220
Chris@16 221 //
Chris@16 222 // Dynamic shared object (DSO) and dynamic-link library (DLL) support
Chris@16 223 //
Chris@16 224 #if defined(__GNUC__) && (__GNUC__ >= 4)
Chris@16 225 # define BOOST_SYMBOL_EXPORT __attribute__((visibility("default")))
Chris@16 226 # define BOOST_SYMBOL_IMPORT
Chris@16 227 # define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default")))
Chris@16 228 #endif
Chris@16 229 //
Chris@16 230 // C++0x features
Chris@101 231 // For each feature we need to check both the Intel compiler version,
Chris@101 232 // and the version of MSVC or GCC that we are emulating.
Chris@101 233 // See http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler/
Chris@101 234 // for a list of which features were implemented in which Intel releases.
Chris@16 235 //
Chris@16 236 #if defined(BOOST_INTEL_STDCXX0X)
Chris@101 237 // BOOST_NO_CXX11_CONSTEXPR:
Chris@101 238 #if (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40600)) && !defined(_MSC_VER)
Chris@101 239 // Available in earlier Intel versions, but fail our tests:
Chris@101 240 # undef BOOST_NO_CXX11_CONSTEXPR
Chris@101 241 #endif
Chris@101 242 // BOOST_NO_CXX11_NULLPTR:
Chris@101 243 #if (BOOST_INTEL_CXX_VERSION >= 1210) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40600)) && (!defined(_MSC_VER) || (_MSC_VER >= 1600))
Chris@101 244 # undef BOOST_NO_CXX11_NULLPTR
Chris@101 245 #endif
Chris@101 246 // BOOST_NO_CXX11_TEMPLATE_ALIASES
Chris@101 247 #if (BOOST_INTEL_CXX_VERSION >= 1210) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40700)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
Chris@101 248 # undef BOOST_NO_CXX11_TEMPLATE_ALIASES
Chris@16 249 #endif
Chris@16 250
Chris@101 251 // BOOST_NO_CXX11_DECLTYPE
Chris@101 252 #if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40300)) && (!defined(_MSC_VER) || (_MSC_VER >= 1600))
Chris@101 253 # undef BOOST_NO_CXX11_DECLTYPE
Chris@16 254 #endif
Chris@16 255
Chris@101 256 // BOOST_NO_CXX11_DECLTYPE_N3276
Chris@101 257 #if (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40800)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
Chris@101 258 # undef BOOST_NO_CXX11_DECLTYPE_N3276
Chris@101 259 #endif
Chris@16 260
Chris@101 261 // BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
Chris@101 262 #if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40300)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
Chris@101 263 # undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
Chris@16 264 #endif
Chris@101 265
Chris@101 266 // BOOST_NO_CXX11_RVALUE_REFERENCES
Chris@101 267 #if (BOOST_INTEL_CXX_VERSION >= 1300) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40300)) && (!defined(_MSC_VER) || (_MSC_VER >= 1600))
Chris@101 268 // This is available from earlier Intel versions, but breaks Filesystem and other libraries:
Chris@101 269 # undef BOOST_NO_CXX11_RVALUE_REFERENCES
Chris@101 270 #endif
Chris@101 271
Chris@101 272 // BOOST_NO_CXX11_STATIC_ASSERT
Chris@101 273 #if (BOOST_INTEL_CXX_VERSION >= 1110) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40300)) && (!defined(_MSC_VER) || (_MSC_VER >= 1600))
Chris@101 274 # undef BOOST_NO_CXX11_STATIC_ASSERT
Chris@101 275 #endif
Chris@101 276
Chris@101 277 // BOOST_NO_CXX11_VARIADIC_TEMPLATES
Chris@101 278 #if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
Chris@101 279 # undef BOOST_NO_CXX11_VARIADIC_TEMPLATES
Chris@101 280 #endif
Chris@101 281
Chris@101 282 // BOOST_NO_CXX11_VARIADIC_MACROS
Chris@101 283 #if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40200)) && (!defined(_MSC_VER) || (_MSC_VER >= 1400))
Chris@101 284 # undef BOOST_NO_CXX11_VARIADIC_MACROS
Chris@101 285 #endif
Chris@101 286
Chris@101 287 // BOOST_NO_CXX11_AUTO_DECLARATIONS
Chris@101 288 #if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_VER >= 1600))
Chris@101 289 # undef BOOST_NO_CXX11_AUTO_DECLARATIONS
Chris@101 290 #endif
Chris@101 291
Chris@101 292 // BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
Chris@101 293 #if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_VER >= 1600))
Chris@101 294 # undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
Chris@101 295 #endif
Chris@101 296
Chris@101 297 // BOOST_NO_CXX11_CHAR16_T
Chris@101 298 #if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_VER >= 9999))
Chris@101 299 # undef BOOST_NO_CXX11_CHAR16_T
Chris@101 300 #endif
Chris@101 301
Chris@101 302 // BOOST_NO_CXX11_CHAR32_T
Chris@101 303 #if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_VER >= 9999))
Chris@101 304 # undef BOOST_NO_CXX11_CHAR32_T
Chris@101 305 #endif
Chris@101 306
Chris@101 307 // BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
Chris@101 308 #if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
Chris@101 309 # undef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
Chris@101 310 #endif
Chris@101 311
Chris@101 312 // BOOST_NO_CXX11_DELETED_FUNCTIONS
Chris@101 313 #if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
Chris@101 314 # undef BOOST_NO_CXX11_DELETED_FUNCTIONS
Chris@101 315 #endif
Chris@101 316
Chris@101 317 // BOOST_NO_CXX11_HDR_INITIALIZER_LIST
Chris@101 318 #if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_VER >= 1700))
Chris@101 319 # undef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
Chris@101 320 #endif
Chris@101 321
Chris@101 322 // BOOST_NO_CXX11_SCOPED_ENUMS
Chris@101 323 #if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40501)) && (!defined(_MSC_VER) || (_MSC_VER >= 1700))
Chris@101 324 // This is available but broken in earlier Intel releases.
Chris@101 325 # undef BOOST_NO_CXX11_SCOPED_ENUMS
Chris@101 326 #endif
Chris@101 327
Chris@101 328 // BOOST_NO_SFINAE_EXPR
Chris@101 329 #if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40500)) && (!defined(_MSC_VER) || (_MSC_VER >= 9999))
Chris@101 330 # undef BOOST_NO_SFINAE_EXPR
Chris@101 331 #endif
Chris@101 332
Chris@101 333 // BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
Chris@101 334 #if (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40500)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
Chris@101 335 // This is available in earlier Intel releases, but breaks Multiprecision:
Chris@101 336 # undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
Chris@101 337 #endif
Chris@101 338
Chris@101 339 // BOOST_NO_CXX11_LAMBDAS
Chris@101 340 #if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40500)) && (!defined(_MSC_VER) || (_MSC_VER >= 1600))
Chris@101 341 # undef BOOST_NO_CXX11_LAMBDAS
Chris@101 342 #endif
Chris@101 343
Chris@101 344 // BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
Chris@101 345 #if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40500))
Chris@101 346 # undef BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
Chris@101 347 #endif
Chris@101 348
Chris@101 349 // BOOST_NO_CXX11_RANGE_BASED_FOR
Chris@101 350 #if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40600)) && (!defined(_MSC_VER) || (_MSC_VER >= 1700))
Chris@16 351 # undef BOOST_NO_CXX11_RANGE_BASED_FOR
Chris@101 352 #endif
Chris@101 353
Chris@101 354 // BOOST_NO_CXX11_RAW_LITERALS
Chris@101 355 #if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40500)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
Chris@101 356 # undef BOOST_NO_CXX11_RAW_LITERALS
Chris@101 357 #endif
Chris@101 358
Chris@101 359 // BOOST_NO_CXX11_UNICODE_LITERALS
Chris@101 360 #if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40500)) && (!defined(_MSC_VER) || (_MSC_VER >= 9999))
Chris@101 361 # undef BOOST_NO_CXX11_UNICODE_LITERALS
Chris@101 362 #endif
Chris@101 363
Chris@101 364 // BOOST_NO_CXX11_NOEXCEPT
Chris@101 365 #if (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40600)) && (!defined(_MSC_VER) || (_MSC_VER >= 9999))
Chris@101 366 // Available in earlier Intel release, but generates errors when used with
Chris@101 367 // conditional exception specifications, for example in multiprecision:
Chris@101 368 # undef BOOST_NO_CXX11_NOEXCEPT
Chris@101 369 #endif
Chris@101 370
Chris@101 371 // BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
Chris@101 372 #if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40600)) && (!defined(_MSC_VER) || (_MSC_VER >= 9999))
Chris@16 373 # undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
Chris@16 374 #endif
Chris@101 375
Chris@101 376 // BOOST_NO_CXX11_USER_DEFINED_LITERALS
Chris@101 377 #if (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40700)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 190021730))
Chris@101 378 # undef BOOST_NO_CXX11_USER_DEFINED_LITERALS
Chris@16 379 #endif
Chris@101 380
Chris@101 381 // BOOST_NO_CXX11_ALIGNAS
Chris@101 382 #if (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40800)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 190021730))
Chris@101 383 # undef BOOST_NO_CXX11_ALIGNAS
Chris@16 384 #endif
Chris@16 385
Chris@101 386 // BOOST_NO_CXX11_TRAILING_RESULT_TYPES
Chris@101 387 #if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
Chris@101 388 # undef BOOST_NO_CXX11_TRAILING_RESULT_TYPES
Chris@101 389 #endif
Chris@101 390
Chris@101 391 // BOOST_NO_CXX11_INLINE_NAMESPACES
Chris@101 392 #if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 190021730))
Chris@101 393 # undef BOOST_NO_CXX11_INLINE_NAMESPACES
Chris@101 394 #endif
Chris@101 395
Chris@101 396 // BOOST_NO_CXX11_REF_QUALIFIERS
Chris@101 397 #if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40800)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 190021730))
Chris@101 398 # undef BOOST_NO_CXX11_REF_QUALIFIERS
Chris@101 399 #endif
Chris@101 400
Chris@101 401 // BOOST_NO_CXX11_FINAL
Chris@101 402 #if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40700)) && (!defined(_MSC_VER) || (_MSC_VER >= 1700))
Chris@101 403 # undef BOOST_NO_CXX11_FINAL
Chris@101 404 #endif
Chris@101 405
Chris@101 406 #endif
Chris@101 407
Chris@101 408 //
Chris@101 409 // Broken in all versions up to 15:
Chris@101 410 #define BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
Chris@101 411
Chris@16 412 #if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION <= 1310)
Chris@16 413 # define BOOST_NO_CXX11_HDR_FUTURE
Chris@16 414 # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
Chris@16 415 #endif
Chris@16 416
Chris@16 417 #if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION == 1400)
Chris@16 418 // A regression in Intel's compiler means that <tuple> seems to be broken in this release as well as <future> :
Chris@16 419 # define BOOST_NO_CXX11_HDR_FUTURE
Chris@16 420 # define BOOST_NO_CXX11_HDR_TUPLE
Chris@16 421 #endif
Chris@16 422
Chris@16 423 #if (BOOST_INTEL_CXX_VERSION < 1200)
Chris@16 424 //
Chris@16 425 // fenv.h appears not to work with Intel prior to 12.0:
Chris@16 426 //
Chris@16 427 # define BOOST_NO_FENV_H
Chris@16 428 #endif
Chris@16 429
Chris@101 430 // Intel 13.10 fails to access defaulted functions of a base class declared in private or protected sections,
Chris@101 431 // producing the following errors:
Chris@101 432 // error #453: protected function "..." (declared at ...") is not accessible through a "..." pointer or object
Chris@101 433 #if (BOOST_INTEL_CXX_VERSION <= 1310)
Chris@101 434 # define BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS
Chris@101 435 #endif
Chris@101 436
Chris@16 437 #if defined(_MSC_VER) && (_MSC_VER >= 1600)
Chris@16 438 # define BOOST_HAS_STDINT_H
Chris@16 439 #endif
Chris@16 440
Chris@101 441 #if defined(__LP64__) && defined(__GNUC__) && (BOOST_INTEL_CXX_VERSION >= 1310) && !defined(__CUDACC__)
Chris@16 442 # define BOOST_HAS_INT128
Chris@16 443 #endif
Chris@16 444
Chris@16 445 //
Chris@16 446 // last known and checked version:
Chris@16 447 #if (BOOST_INTEL_CXX_VERSION > 1310)
Chris@16 448 # if defined(BOOST_ASSERT_CONFIG)
Chris@16 449 # error "Unknown compiler version - please run the configure tests and report the results"
Chris@16 450 # elif defined(_MSC_VER)
Chris@16 451 //
Chris@16 452 // We don't emit this warning any more, since we have so few
Chris@16 453 // defect macros set anyway (just the one).
Chris@16 454 //
Chris@16 455 //# pragma message("Unknown compiler version - please run the configure tests and report the results")
Chris@16 456 # endif
Chris@16 457 #endif
Chris@16 458