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