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