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
|