Developer Documentation
feature_tests.cxx
1 
2  const char features[] = {"\n"
3 "CXX_FEATURE:"
4 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L
5 "1"
6 #else
7 "0"
8 #endif
9 "cxx_aggregate_default_initializers\n"
10 "CXX_FEATURE:"
11 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
12 "1"
13 #else
14 "0"
15 #endif
16 "cxx_alias_templates\n"
17 "CXX_FEATURE:"
18 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
19 "1"
20 #else
21 "0"
22 #endif
23 "cxx_alignas\n"
24 "CXX_FEATURE:"
25 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
26 "1"
27 #else
28 "0"
29 #endif
30 "cxx_alignof\n"
31 "CXX_FEATURE:"
32 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
33 "1"
34 #else
35 "0"
36 #endif
37 "cxx_attributes\n"
38 "CXX_FEATURE:"
39 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
40 "1"
41 #else
42 "0"
43 #endif
44 "cxx_attribute_deprecated\n"
45 "CXX_FEATURE:"
46 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
47 "1"
48 #else
49 "0"
50 #endif
51 "cxx_auto_type\n"
52 "CXX_FEATURE:"
53 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
54 "1"
55 #else
56 "0"
57 #endif
58 "cxx_binary_literals\n"
59 "CXX_FEATURE:"
60 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
61 "1"
62 #else
63 "0"
64 #endif
65 "cxx_constexpr\n"
66 "CXX_FEATURE:"
67 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
68 "1"
69 #else
70 "0"
71 #endif
72 "cxx_contextual_conversions\n"
73 "CXX_FEATURE:"
74 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
75 "1"
76 #else
77 "0"
78 #endif
79 "cxx_decltype\n"
80 "CXX_FEATURE:"
81 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
82 "1"
83 #else
84 "0"
85 #endif
86 "cxx_decltype_auto\n"
87 "CXX_FEATURE:"
88 #if ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40801) && __cplusplus >= 201103L
89 "1"
90 #else
91 "0"
92 #endif
93 "cxx_decltype_incomplete_return_types\n"
94 "CXX_FEATURE:"
95 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
96 "1"
97 #else
98 "0"
99 #endif
100 "cxx_default_function_template_args\n"
101 "CXX_FEATURE:"
102 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
103 "1"
104 #else
105 "0"
106 #endif
107 "cxx_defaulted_functions\n"
108 "CXX_FEATURE:"
109 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
110 "1"
111 #else
112 "0"
113 #endif
114 "cxx_defaulted_move_initializers\n"
115 "CXX_FEATURE:"
116 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
117 "1"
118 #else
119 "0"
120 #endif
121 "cxx_delegating_constructors\n"
122 "CXX_FEATURE:"
123 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
124 "1"
125 #else
126 "0"
127 #endif
128 "cxx_deleted_functions\n"
129 "CXX_FEATURE:"
130 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
131 "1"
132 #else
133 "0"
134 #endif
135 "cxx_digit_separators\n"
136 "CXX_FEATURE:"
137 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
138 "1"
139 #else
140 "0"
141 #endif
142 "cxx_enum_forward_declarations\n"
143 "CXX_FEATURE:"
144 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
145 "1"
146 #else
147 "0"
148 #endif
149 "cxx_explicit_conversions\n"
150 "CXX_FEATURE:"
151 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
152 "1"
153 #else
154 "0"
155 #endif
156 "cxx_extended_friend_declarations\n"
157 "CXX_FEATURE:"
158 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
159 "1"
160 #else
161 "0"
162 #endif
163 "cxx_extern_templates\n"
164 "CXX_FEATURE:"
165 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
166 "1"
167 #else
168 "0"
169 #endif
170 "cxx_final\n"
171 "CXX_FEATURE:"
172 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
173 "1"
174 #else
175 "0"
176 #endif
177 "cxx_func_identifier\n"
178 "CXX_FEATURE:"
179 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
180 "1"
181 #else
182 "0"
183 #endif
184 "cxx_generalized_initializers\n"
185 "CXX_FEATURE:"
186 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
187 "1"
188 #else
189 "0"
190 #endif
191 "cxx_generic_lambdas\n"
192 "CXX_FEATURE:"
193 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
194 "1"
195 #else
196 "0"
197 #endif
198 "cxx_inheriting_constructors\n"
199 "CXX_FEATURE:"
200 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
201 "1"
202 #else
203 "0"
204 #endif
205 "cxx_inline_namespaces\n"
206 "CXX_FEATURE:"
207 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
208 "1"
209 #else
210 "0"
211 #endif
212 "cxx_lambdas\n"
213 "CXX_FEATURE:"
214 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
215 "1"
216 #else
217 "0"
218 #endif
219 "cxx_lambda_init_captures\n"
220 "CXX_FEATURE:"
221 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
222 "1"
223 #else
224 "0"
225 #endif
226 "cxx_local_type_template_args\n"
227 "CXX_FEATURE:"
228 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
229 "1"
230 #else
231 "0"
232 #endif
233 "cxx_long_long_type\n"
234 "CXX_FEATURE:"
235 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
236 "1"
237 #else
238 "0"
239 #endif
240 "cxx_noexcept\n"
241 "CXX_FEATURE:"
242 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
243 "1"
244 #else
245 "0"
246 #endif
247 "cxx_nonstatic_member_init\n"
248 "CXX_FEATURE:"
249 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
250 "1"
251 #else
252 "0"
253 #endif
254 "cxx_nullptr\n"
255 "CXX_FEATURE:"
256 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
257 "1"
258 #else
259 "0"
260 #endif
261 "cxx_override\n"
262 "CXX_FEATURE:"
263 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
264 "1"
265 #else
266 "0"
267 #endif
268 "cxx_range_for\n"
269 "CXX_FEATURE:"
270 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
271 "1"
272 #else
273 "0"
274 #endif
275 "cxx_raw_string_literals\n"
276 "CXX_FEATURE:"
277 #if ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40801) && __cplusplus >= 201103L
278 "1"
279 #else
280 "0"
281 #endif
282 "cxx_reference_qualified_functions\n"
283 "CXX_FEATURE:"
284 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L
285 "1"
286 #else
287 "0"
288 #endif
289 "cxx_relaxed_constexpr\n"
290 "CXX_FEATURE:"
291 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
292 "1"
293 #else
294 "0"
295 #endif
296 "cxx_return_type_deduction\n"
297 "CXX_FEATURE:"
298 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
299 "1"
300 #else
301 "0"
302 #endif
303 "cxx_right_angle_brackets\n"
304 "CXX_FEATURE:"
305 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
306 "1"
307 #else
308 "0"
309 #endif
310 "cxx_rvalue_references\n"
311 "CXX_FEATURE:"
312 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
313 "1"
314 #else
315 "0"
316 #endif
317 "cxx_sizeof_member\n"
318 "CXX_FEATURE:"
319 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
320 "1"
321 #else
322 "0"
323 #endif
324 "cxx_static_assert\n"
325 "CXX_FEATURE:"
326 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
327 "1"
328 #else
329 "0"
330 #endif
331 "cxx_strong_enums\n"
332 "CXX_FEATURE:"
333 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && __cplusplus
334 "1"
335 #else
336 "0"
337 #endif
338 "cxx_template_template_parameters\n"
339 "CXX_FEATURE:"
340 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
341 "1"
342 #else
343 "0"
344 #endif
345 "cxx_thread_local\n"
346 "CXX_FEATURE:"
347 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
348 "1"
349 #else
350 "0"
351 #endif
352 "cxx_trailing_return_types\n"
353 "CXX_FEATURE:"
354 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
355 "1"
356 #else
357 "0"
358 #endif
359 "cxx_unicode_literals\n"
360 "CXX_FEATURE:"
361 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
362 "1"
363 #else
364 "0"
365 #endif
366 "cxx_uniform_initialization\n"
367 "CXX_FEATURE:"
368 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
369 "1"
370 #else
371 "0"
372 #endif
373 "cxx_unrestricted_unions\n"
374 "CXX_FEATURE:"
375 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
376 "1"
377 #else
378 "0"
379 #endif
380 "cxx_user_literals\n"
381 "CXX_FEATURE:"
382 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L
383 "1"
384 #else
385 "0"
386 #endif
387 "cxx_variable_templates\n"
388 "CXX_FEATURE:"
389 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
390 "1"
391 #else
392 "0"
393 #endif
394 "cxx_variadic_macros\n"
395 "CXX_FEATURE:"
396 #if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
397 "1"
398 #else
399 "0"
400 #endif
401 "cxx_variadic_templates\n"
402 
403 };
404 
405 int main(int argc, char** argv) { (void)argv; return features[argc]; }