ITK  4.13.0
Insight Segmentation and Registration Toolkit
ITK_COMPILER_INFO_GNU_CXX.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright Insight Software Consortium
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef ITK_COMPILER_INFO_GNU_CXX_h
19 #define ITK_COMPILER_INFO_GNU_CXX_h
20 #ifndef itk_compiler_detection_h
21 # error This file may only be included from itk_compiler_detection.h
22 #endif
23 
24 # if !((__GNUC__ * 100 + __GNUC_MINOR__) >= 404)
25 # error Unsupported compiler version
26 # endif
27 
28 # define ITK_COMPILER_VERSION_MAJOR ITK_DEC(__GNUC__)
29 # if defined(__GNUC_MINOR__)
30 # define ITK_COMPILER_VERSION_MINOR ITK_DEC(__GNUC_MINOR__)
31 # endif
32 # if defined(__GNUC_PATCHLEVEL__)
33 # define ITK_COMPILER_VERSION_PATCH ITK_DEC(__GNUC_PATCHLEVEL__)
34 # endif
35 
36 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L
37 # define ITK_COMPILER_CXX_AGGREGATE_DEFAULT_INITIALIZERS 1
38 # else
39 # define ITK_COMPILER_CXX_AGGREGATE_DEFAULT_INITIALIZERS 0
40 # endif
41 
42 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
43 # define ITK_COMPILER_CXX_ALIAS_TEMPLATES 1
44 # else
45 # define ITK_COMPILER_CXX_ALIAS_TEMPLATES 0
46 # endif
47 
48 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
49 # define ITK_COMPILER_CXX_ALIGNAS 1
50 # else
51 # define ITK_COMPILER_CXX_ALIGNAS 0
52 # endif
53 
54 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
55 # define ITK_COMPILER_CXX_ALIGNOF 1
56 # else
57 # define ITK_COMPILER_CXX_ALIGNOF 0
58 # endif
59 
60 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
61 # define ITK_COMPILER_CXX_ATTRIBUTES 1
62 # else
63 # define ITK_COMPILER_CXX_ATTRIBUTES 0
64 # endif
65 
66 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
67 # define ITK_COMPILER_CXX_ATTRIBUTE_DEPRECATED 1
68 # else
69 # define ITK_COMPILER_CXX_ATTRIBUTE_DEPRECATED 0
70 # endif
71 
72 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
73 # define ITK_COMPILER_CXX_AUTO_TYPE 1
74 # else
75 # define ITK_COMPILER_CXX_AUTO_TYPE 0
76 # endif
77 
78 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
79 # define ITK_COMPILER_CXX_BINARY_LITERALS 1
80 # else
81 # define ITK_COMPILER_CXX_BINARY_LITERALS 0
82 # endif
83 
84 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
85 # define ITK_COMPILER_CXX_CONSTEXPR 1
86 # else
87 # define ITK_COMPILER_CXX_CONSTEXPR 0
88 # endif
89 
90 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
91 # define ITK_COMPILER_CXX_CONTEXTUAL_CONVERSIONS 1
92 # else
93 # define ITK_COMPILER_CXX_CONTEXTUAL_CONVERSIONS 0
94 # endif
95 
96 # if ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40801) && __cplusplus >= 201103L
97 # define ITK_COMPILER_CXX_DECLTYPE_INCOMPLETE_RETURN_TYPES 1
98 # else
99 # define ITK_COMPILER_CXX_DECLTYPE_INCOMPLETE_RETURN_TYPES 0
100 # endif
101 
102 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
103 # define ITK_COMPILER_CXX_DECLTYPE 1
104 # else
105 # define ITK_COMPILER_CXX_DECLTYPE 0
106 # endif
107 
108 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
109 # define ITK_COMPILER_CXX_DECLTYPE_AUTO 1
110 # else
111 # define ITK_COMPILER_CXX_DECLTYPE_AUTO 0
112 # endif
113 
114 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
115 # define ITK_COMPILER_CXX_DEFAULT_FUNCTION_TEMPLATE_ARGS 1
116 # else
117 # define ITK_COMPILER_CXX_DEFAULT_FUNCTION_TEMPLATE_ARGS 0
118 # endif
119 
120 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
121 # define ITK_COMPILER_CXX_DEFAULTED_FUNCTIONS 1
122 # else
123 # define ITK_COMPILER_CXX_DEFAULTED_FUNCTIONS 0
124 # endif
125 
126 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
127 # define ITK_COMPILER_CXX_DEFAULTED_MOVE_INITIALIZERS 1
128 # else
129 # define ITK_COMPILER_CXX_DEFAULTED_MOVE_INITIALIZERS 0
130 # endif
131 
132 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
133 # define ITK_COMPILER_CXX_DELEGATING_CONSTRUCTORS 1
134 # else
135 # define ITK_COMPILER_CXX_DELEGATING_CONSTRUCTORS 0
136 # endif
137 
138 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
139 # define ITK_COMPILER_CXX_DELETED_FUNCTIONS 1
140 # else
141 # define ITK_COMPILER_CXX_DELETED_FUNCTIONS 0
142 # endif
143 
144 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
145 # define ITK_COMPILER_CXX_DIGIT_SEPARATORS 1
146 # else
147 # define ITK_COMPILER_CXX_DIGIT_SEPARATORS 0
148 # endif
149 
150 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
151 # define ITK_COMPILER_CXX_ENUM_FORWARD_DECLARATIONS 1
152 # else
153 # define ITK_COMPILER_CXX_ENUM_FORWARD_DECLARATIONS 0
154 # endif
155 
156 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
157 # define ITK_COMPILER_CXX_EXPLICIT_CONVERSIONS 1
158 # else
159 # define ITK_COMPILER_CXX_EXPLICIT_CONVERSIONS 0
160 # endif
161 
162 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
163 # define ITK_COMPILER_CXX_EXTENDED_FRIEND_DECLARATIONS 1
164 # else
165 # define ITK_COMPILER_CXX_EXTENDED_FRIEND_DECLARATIONS 0
166 # endif
167 
168 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
169 # define ITK_COMPILER_CXX_EXTERN_TEMPLATES 1
170 # else
171 # define ITK_COMPILER_CXX_EXTERN_TEMPLATES 0
172 # endif
173 
174 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
175 # define ITK_COMPILER_CXX_FINAL 1
176 # else
177 # define ITK_COMPILER_CXX_FINAL 0
178 # endif
179 
180 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
181 # define ITK_COMPILER_CXX_FUNC_IDENTIFIER 1
182 # else
183 # define ITK_COMPILER_CXX_FUNC_IDENTIFIER 0
184 # endif
185 
186 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
187 # define ITK_COMPILER_CXX_GENERALIZED_INITIALIZERS 1
188 # else
189 # define ITK_COMPILER_CXX_GENERALIZED_INITIALIZERS 0
190 # endif
191 
192 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
193 # define ITK_COMPILER_CXX_GENERIC_LAMBDAS 1
194 # else
195 # define ITK_COMPILER_CXX_GENERIC_LAMBDAS 0
196 # endif
197 
198 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
199 # define ITK_COMPILER_CXX_INHERITING_CONSTRUCTORS 1
200 # else
201 # define ITK_COMPILER_CXX_INHERITING_CONSTRUCTORS 0
202 # endif
203 
204 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
205 # define ITK_COMPILER_CXX_INLINE_NAMESPACES 1
206 # else
207 # define ITK_COMPILER_CXX_INLINE_NAMESPACES 0
208 # endif
209 
210 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
211 # define ITK_COMPILER_CXX_LAMBDAS 1
212 # else
213 # define ITK_COMPILER_CXX_LAMBDAS 0
214 # endif
215 
216 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
217 # define ITK_COMPILER_CXX_LAMBDA_INIT_CAPTURES 1
218 # else
219 # define ITK_COMPILER_CXX_LAMBDA_INIT_CAPTURES 0
220 # endif
221 
222 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
223 # define ITK_COMPILER_CXX_LOCAL_TYPE_TEMPLATE_ARGS 1
224 # else
225 # define ITK_COMPILER_CXX_LOCAL_TYPE_TEMPLATE_ARGS 0
226 # endif
227 
228 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
229 # define ITK_COMPILER_CXX_LONG_LONG_TYPE 1
230 # else
231 # define ITK_COMPILER_CXX_LONG_LONG_TYPE 0
232 # endif
233 
234 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
235 # define ITK_COMPILER_CXX_NOEXCEPT 1
236 # else
237 # define ITK_COMPILER_CXX_NOEXCEPT 0
238 # endif
239 
240 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
241 # define ITK_COMPILER_CXX_NONSTATIC_MEMBER_INIT 1
242 # else
243 # define ITK_COMPILER_CXX_NONSTATIC_MEMBER_INIT 0
244 # endif
245 
246 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
247 # define ITK_COMPILER_CXX_NULLPTR 1
248 # else
249 # define ITK_COMPILER_CXX_NULLPTR 0
250 # endif
251 
252 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
253 # define ITK_COMPILER_CXX_OVERRIDE 1
254 # else
255 # define ITK_COMPILER_CXX_OVERRIDE 0
256 # endif
257 
258 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
259 # define ITK_COMPILER_CXX_RANGE_FOR 1
260 # else
261 # define ITK_COMPILER_CXX_RANGE_FOR 0
262 # endif
263 
264 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
265 # define ITK_COMPILER_CXX_RAW_STRING_LITERALS 1
266 # else
267 # define ITK_COMPILER_CXX_RAW_STRING_LITERALS 0
268 # endif
269 
270 # if ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40801) && __cplusplus >= 201103L
271 # define ITK_COMPILER_CXX_REFERENCE_QUALIFIED_FUNCTIONS 1
272 # else
273 # define ITK_COMPILER_CXX_REFERENCE_QUALIFIED_FUNCTIONS 0
274 # endif
275 
276 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L
277 # define ITK_COMPILER_CXX_RELAXED_CONSTEXPR 1
278 # else
279 # define ITK_COMPILER_CXX_RELAXED_CONSTEXPR 0
280 # endif
281 
282 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
283 # define ITK_COMPILER_CXX_RETURN_TYPE_DEDUCTION 1
284 # else
285 # define ITK_COMPILER_CXX_RETURN_TYPE_DEDUCTION 0
286 # endif
287 
288 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
289 # define ITK_COMPILER_CXX_RIGHT_ANGLE_BRACKETS 1
290 # else
291 # define ITK_COMPILER_CXX_RIGHT_ANGLE_BRACKETS 0
292 # endif
293 
294 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
295 # define ITK_COMPILER_CXX_RVALUE_REFERENCES 1
296 # else
297 # define ITK_COMPILER_CXX_RVALUE_REFERENCES 0
298 # endif
299 
300 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
301 # define ITK_COMPILER_CXX_SIZEOF_MEMBER 1
302 # else
303 # define ITK_COMPILER_CXX_SIZEOF_MEMBER 0
304 # endif
305 
306 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
307 # define ITK_COMPILER_CXX_STATIC_ASSERT 1
308 # else
309 # define ITK_COMPILER_CXX_STATIC_ASSERT 0
310 # endif
311 
312 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
313 # define ITK_COMPILER_CXX_STRONG_ENUMS 1
314 # else
315 # define ITK_COMPILER_CXX_STRONG_ENUMS 0
316 # endif
317 
318 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
319 # define ITK_COMPILER_CXX_THREAD_LOCAL 1
320 # else
321 # define ITK_COMPILER_CXX_THREAD_LOCAL 0
322 # endif
323 
324 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
325 # define ITK_COMPILER_CXX_TRAILING_RETURN_TYPES 1
326 # else
327 # define ITK_COMPILER_CXX_TRAILING_RETURN_TYPES 0
328 # endif
329 
330 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
331 # define ITK_COMPILER_CXX_UNICODE_LITERALS 1
332 # else
333 # define ITK_COMPILER_CXX_UNICODE_LITERALS 0
334 # endif
335 
336 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
337 # define ITK_COMPILER_CXX_UNIFORM_INITIALIZATION 1
338 # else
339 # define ITK_COMPILER_CXX_UNIFORM_INITIALIZATION 0
340 # endif
341 
342 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
343 # define ITK_COMPILER_CXX_UNRESTRICTED_UNIONS 1
344 # else
345 # define ITK_COMPILER_CXX_UNRESTRICTED_UNIONS 0
346 # endif
347 
348 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
349 # define ITK_COMPILER_CXX_USER_LITERALS 1
350 # else
351 # define ITK_COMPILER_CXX_USER_LITERALS 0
352 # endif
353 
354 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L
355 # define ITK_COMPILER_CXX_VARIABLE_TEMPLATES 1
356 # else
357 # define ITK_COMPILER_CXX_VARIABLE_TEMPLATES 0
358 # endif
359 
360 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
361 # define ITK_COMPILER_CXX_VARIADIC_MACROS 1
362 # else
363 # define ITK_COMPILER_CXX_VARIADIC_MACROS 0
364 # endif
365 
366 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
367 # define ITK_COMPILER_CXX_VARIADIC_TEMPLATES 1
368 # else
369 # define ITK_COMPILER_CXX_VARIADIC_TEMPLATES 0
370 # endif
371 
372 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && __cplusplus
373 # define ITK_COMPILER_CXX_TEMPLATE_TEMPLATE_PARAMETERS 1
374 # else
375 # define ITK_COMPILER_CXX_TEMPLATE_TEMPLATE_PARAMETERS 0
376 # endif
377 
378 # if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 404 && __cplusplus > 201103L
379 # define ITK_COMPILER_CXX_ATOMIC 1
380 # else
381 # define ITK_COMPILER_CXX_ATOMIC 0
382 # endif
383 #endif // ITK_COMPILER_INFO_GNU_CXX_h