1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // WARNING: This test was generated by generate_feature_test_macro_components.py
10 // and should not be edited manually.
11 //
12 // clang-format off
13 
14 // <type_traits>
15 
16 // Test the feature test macros defined by <type_traits>
17 
18 /*  Constant                                       Value
19     __cpp_lib_bool_constant                        201505L [C++17]
20     __cpp_lib_bounded_array_traits                 201902L [C++20]
21     __cpp_lib_has_unique_object_representations    201606L [C++17]
22     __cpp_lib_integral_constant_callable           201304L [C++14]
23     __cpp_lib_is_aggregate                         201703L [C++17]
24     __cpp_lib_is_constant_evaluated                201811L [C++20]
25     __cpp_lib_is_final                             201402L [C++14]
26     __cpp_lib_is_invocable                         201703L [C++17]
27     __cpp_lib_is_layout_compatible                 201907L [C++20]
28     __cpp_lib_is_nothrow_convertible               201806L [C++20]
29     __cpp_lib_is_null_pointer                      201309L [C++14]
30     __cpp_lib_is_pointer_interconvertible          201907L [C++20]
31     __cpp_lib_is_scoped_enum                       202011L [C++2b]
32     __cpp_lib_is_swappable                         201603L [C++17]
33     __cpp_lib_logical_traits                       201510L [C++17]
34     __cpp_lib_remove_cvref                         201711L [C++20]
35     __cpp_lib_result_of_sfinae                     201210L [C++14]
36     __cpp_lib_transformation_trait_aliases         201304L [C++14]
37     __cpp_lib_type_trait_variable_templates        201510L [C++17]
38     __cpp_lib_void_t                               201411L [C++17]
39 */
40 
41 #include <type_traits>
42 #include "test_macros.h"
43 
44 #if TEST_STD_VER < 14
45 
46 # ifdef __cpp_lib_bool_constant
47 #   error "__cpp_lib_bool_constant should not be defined before c++17"
48 # endif
49 
50 # ifdef __cpp_lib_bounded_array_traits
51 #   error "__cpp_lib_bounded_array_traits should not be defined before c++20"
52 # endif
53 
54 # ifdef __cpp_lib_has_unique_object_representations
55 #   error "__cpp_lib_has_unique_object_representations should not be defined before c++17"
56 # endif
57 
58 # ifdef __cpp_lib_integral_constant_callable
59 #   error "__cpp_lib_integral_constant_callable should not be defined before c++14"
60 # endif
61 
62 # ifdef __cpp_lib_is_aggregate
63 #   error "__cpp_lib_is_aggregate should not be defined before c++17"
64 # endif
65 
66 # ifdef __cpp_lib_is_constant_evaluated
67 #   error "__cpp_lib_is_constant_evaluated should not be defined before c++20"
68 # endif
69 
70 # ifdef __cpp_lib_is_final
71 #   error "__cpp_lib_is_final should not be defined before c++14"
72 # endif
73 
74 # ifdef __cpp_lib_is_invocable
75 #   error "__cpp_lib_is_invocable should not be defined before c++17"
76 # endif
77 
78 # ifdef __cpp_lib_is_layout_compatible
79 #   error "__cpp_lib_is_layout_compatible should not be defined before c++20"
80 # endif
81 
82 # ifdef __cpp_lib_is_nothrow_convertible
83 #   error "__cpp_lib_is_nothrow_convertible should not be defined before c++20"
84 # endif
85 
86 # ifdef __cpp_lib_is_null_pointer
87 #   error "__cpp_lib_is_null_pointer should not be defined before c++14"
88 # endif
89 
90 # ifdef __cpp_lib_is_pointer_interconvertible
91 #   error "__cpp_lib_is_pointer_interconvertible should not be defined before c++20"
92 # endif
93 
94 # ifdef __cpp_lib_is_scoped_enum
95 #   error "__cpp_lib_is_scoped_enum should not be defined before c++2b"
96 # endif
97 
98 # ifdef __cpp_lib_is_swappable
99 #   error "__cpp_lib_is_swappable should not be defined before c++17"
100 # endif
101 
102 # ifdef __cpp_lib_logical_traits
103 #   error "__cpp_lib_logical_traits should not be defined before c++17"
104 # endif
105 
106 # ifdef __cpp_lib_remove_cvref
107 #   error "__cpp_lib_remove_cvref should not be defined before c++20"
108 # endif
109 
110 # ifdef __cpp_lib_result_of_sfinae
111 #   error "__cpp_lib_result_of_sfinae should not be defined before c++14"
112 # endif
113 
114 # ifdef __cpp_lib_transformation_trait_aliases
115 #   error "__cpp_lib_transformation_trait_aliases should not be defined before c++14"
116 # endif
117 
118 # ifdef __cpp_lib_type_trait_variable_templates
119 #   error "__cpp_lib_type_trait_variable_templates should not be defined before c++17"
120 # endif
121 
122 # ifdef __cpp_lib_void_t
123 #   error "__cpp_lib_void_t should not be defined before c++17"
124 # endif
125 
126 #elif TEST_STD_VER == 14
127 
128 # ifdef __cpp_lib_bool_constant
129 #   error "__cpp_lib_bool_constant should not be defined before c++17"
130 # endif
131 
132 # ifdef __cpp_lib_bounded_array_traits
133 #   error "__cpp_lib_bounded_array_traits should not be defined before c++20"
134 # endif
135 
136 # ifdef __cpp_lib_has_unique_object_representations
137 #   error "__cpp_lib_has_unique_object_representations should not be defined before c++17"
138 # endif
139 
140 # ifndef __cpp_lib_integral_constant_callable
141 #   error "__cpp_lib_integral_constant_callable should be defined in c++14"
142 # endif
143 # if __cpp_lib_integral_constant_callable != 201304L
144 #   error "__cpp_lib_integral_constant_callable should have the value 201304L in c++14"
145 # endif
146 
147 # ifdef __cpp_lib_is_aggregate
148 #   error "__cpp_lib_is_aggregate should not be defined before c++17"
149 # endif
150 
151 # ifdef __cpp_lib_is_constant_evaluated
152 #   error "__cpp_lib_is_constant_evaluated should not be defined before c++20"
153 # endif
154 
155 # ifndef __cpp_lib_is_final
156 #   error "__cpp_lib_is_final should be defined in c++14"
157 # endif
158 # if __cpp_lib_is_final != 201402L
159 #   error "__cpp_lib_is_final should have the value 201402L in c++14"
160 # endif
161 
162 # ifdef __cpp_lib_is_invocable
163 #   error "__cpp_lib_is_invocable should not be defined before c++17"
164 # endif
165 
166 # ifdef __cpp_lib_is_layout_compatible
167 #   error "__cpp_lib_is_layout_compatible should not be defined before c++20"
168 # endif
169 
170 # ifdef __cpp_lib_is_nothrow_convertible
171 #   error "__cpp_lib_is_nothrow_convertible should not be defined before c++20"
172 # endif
173 
174 # ifndef __cpp_lib_is_null_pointer
175 #   error "__cpp_lib_is_null_pointer should be defined in c++14"
176 # endif
177 # if __cpp_lib_is_null_pointer != 201309L
178 #   error "__cpp_lib_is_null_pointer should have the value 201309L in c++14"
179 # endif
180 
181 # ifdef __cpp_lib_is_pointer_interconvertible
182 #   error "__cpp_lib_is_pointer_interconvertible should not be defined before c++20"
183 # endif
184 
185 # ifdef __cpp_lib_is_scoped_enum
186 #   error "__cpp_lib_is_scoped_enum should not be defined before c++2b"
187 # endif
188 
189 # ifdef __cpp_lib_is_swappable
190 #   error "__cpp_lib_is_swappable should not be defined before c++17"
191 # endif
192 
193 # ifdef __cpp_lib_logical_traits
194 #   error "__cpp_lib_logical_traits should not be defined before c++17"
195 # endif
196 
197 # ifdef __cpp_lib_remove_cvref
198 #   error "__cpp_lib_remove_cvref should not be defined before c++20"
199 # endif
200 
201 # ifndef __cpp_lib_result_of_sfinae
202 #   error "__cpp_lib_result_of_sfinae should be defined in c++14"
203 # endif
204 # if __cpp_lib_result_of_sfinae != 201210L
205 #   error "__cpp_lib_result_of_sfinae should have the value 201210L in c++14"
206 # endif
207 
208 # ifndef __cpp_lib_transformation_trait_aliases
209 #   error "__cpp_lib_transformation_trait_aliases should be defined in c++14"
210 # endif
211 # if __cpp_lib_transformation_trait_aliases != 201304L
212 #   error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++14"
213 # endif
214 
215 # ifdef __cpp_lib_type_trait_variable_templates
216 #   error "__cpp_lib_type_trait_variable_templates should not be defined before c++17"
217 # endif
218 
219 # ifdef __cpp_lib_void_t
220 #   error "__cpp_lib_void_t should not be defined before c++17"
221 # endif
222 
223 #elif TEST_STD_VER == 17
224 
225 # ifndef __cpp_lib_bool_constant
226 #   error "__cpp_lib_bool_constant should be defined in c++17"
227 # endif
228 # if __cpp_lib_bool_constant != 201505L
229 #   error "__cpp_lib_bool_constant should have the value 201505L in c++17"
230 # endif
231 
232 # ifdef __cpp_lib_bounded_array_traits
233 #   error "__cpp_lib_bounded_array_traits should not be defined before c++20"
234 # endif
235 
236 # if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700
237 #   ifndef __cpp_lib_has_unique_object_representations
238 #     error "__cpp_lib_has_unique_object_representations should be defined in c++17"
239 #   endif
240 #   if __cpp_lib_has_unique_object_representations != 201606L
241 #     error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++17"
242 #   endif
243 # else
244 #   ifdef __cpp_lib_has_unique_object_representations
245 #     error "__cpp_lib_has_unique_object_representations should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 is not defined!"
246 #   endif
247 # endif
248 
249 # ifndef __cpp_lib_integral_constant_callable
250 #   error "__cpp_lib_integral_constant_callable should be defined in c++17"
251 # endif
252 # if __cpp_lib_integral_constant_callable != 201304L
253 #   error "__cpp_lib_integral_constant_callable should have the value 201304L in c++17"
254 # endif
255 
256 # if TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001
257 #   ifndef __cpp_lib_is_aggregate
258 #     error "__cpp_lib_is_aggregate should be defined in c++17"
259 #   endif
260 #   if __cpp_lib_is_aggregate != 201703L
261 #     error "__cpp_lib_is_aggregate should have the value 201703L in c++17"
262 #   endif
263 # else
264 #   ifdef __cpp_lib_is_aggregate
265 #     error "__cpp_lib_is_aggregate should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 is not defined!"
266 #   endif
267 # endif
268 
269 # ifdef __cpp_lib_is_constant_evaluated
270 #   error "__cpp_lib_is_constant_evaluated should not be defined before c++20"
271 # endif
272 
273 # ifndef __cpp_lib_is_final
274 #   error "__cpp_lib_is_final should be defined in c++17"
275 # endif
276 # if __cpp_lib_is_final != 201402L
277 #   error "__cpp_lib_is_final should have the value 201402L in c++17"
278 # endif
279 
280 # ifndef __cpp_lib_is_invocable
281 #   error "__cpp_lib_is_invocable should be defined in c++17"
282 # endif
283 # if __cpp_lib_is_invocable != 201703L
284 #   error "__cpp_lib_is_invocable should have the value 201703L in c++17"
285 # endif
286 
287 # ifdef __cpp_lib_is_layout_compatible
288 #   error "__cpp_lib_is_layout_compatible should not be defined before c++20"
289 # endif
290 
291 # ifdef __cpp_lib_is_nothrow_convertible
292 #   error "__cpp_lib_is_nothrow_convertible should not be defined before c++20"
293 # endif
294 
295 # ifndef __cpp_lib_is_null_pointer
296 #   error "__cpp_lib_is_null_pointer should be defined in c++17"
297 # endif
298 # if __cpp_lib_is_null_pointer != 201309L
299 #   error "__cpp_lib_is_null_pointer should have the value 201309L in c++17"
300 # endif
301 
302 # ifdef __cpp_lib_is_pointer_interconvertible
303 #   error "__cpp_lib_is_pointer_interconvertible should not be defined before c++20"
304 # endif
305 
306 # ifdef __cpp_lib_is_scoped_enum
307 #   error "__cpp_lib_is_scoped_enum should not be defined before c++2b"
308 # endif
309 
310 # ifndef __cpp_lib_is_swappable
311 #   error "__cpp_lib_is_swappable should be defined in c++17"
312 # endif
313 # if __cpp_lib_is_swappable != 201603L
314 #   error "__cpp_lib_is_swappable should have the value 201603L in c++17"
315 # endif
316 
317 # ifndef __cpp_lib_logical_traits
318 #   error "__cpp_lib_logical_traits should be defined in c++17"
319 # endif
320 # if __cpp_lib_logical_traits != 201510L
321 #   error "__cpp_lib_logical_traits should have the value 201510L in c++17"
322 # endif
323 
324 # ifdef __cpp_lib_remove_cvref
325 #   error "__cpp_lib_remove_cvref should not be defined before c++20"
326 # endif
327 
328 # ifndef __cpp_lib_result_of_sfinae
329 #   error "__cpp_lib_result_of_sfinae should be defined in c++17"
330 # endif
331 # if __cpp_lib_result_of_sfinae != 201210L
332 #   error "__cpp_lib_result_of_sfinae should have the value 201210L in c++17"
333 # endif
334 
335 # ifndef __cpp_lib_transformation_trait_aliases
336 #   error "__cpp_lib_transformation_trait_aliases should be defined in c++17"
337 # endif
338 # if __cpp_lib_transformation_trait_aliases != 201304L
339 #   error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++17"
340 # endif
341 
342 # ifndef __cpp_lib_type_trait_variable_templates
343 #   error "__cpp_lib_type_trait_variable_templates should be defined in c++17"
344 # endif
345 # if __cpp_lib_type_trait_variable_templates != 201510L
346 #   error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++17"
347 # endif
348 
349 # ifndef __cpp_lib_void_t
350 #   error "__cpp_lib_void_t should be defined in c++17"
351 # endif
352 # if __cpp_lib_void_t != 201411L
353 #   error "__cpp_lib_void_t should have the value 201411L in c++17"
354 # endif
355 
356 #elif TEST_STD_VER == 20
357 
358 # ifndef __cpp_lib_bool_constant
359 #   error "__cpp_lib_bool_constant should be defined in c++20"
360 # endif
361 # if __cpp_lib_bool_constant != 201505L
362 #   error "__cpp_lib_bool_constant should have the value 201505L in c++20"
363 # endif
364 
365 # ifndef __cpp_lib_bounded_array_traits
366 #   error "__cpp_lib_bounded_array_traits should be defined in c++20"
367 # endif
368 # if __cpp_lib_bounded_array_traits != 201902L
369 #   error "__cpp_lib_bounded_array_traits should have the value 201902L in c++20"
370 # endif
371 
372 # if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700
373 #   ifndef __cpp_lib_has_unique_object_representations
374 #     error "__cpp_lib_has_unique_object_representations should be defined in c++20"
375 #   endif
376 #   if __cpp_lib_has_unique_object_representations != 201606L
377 #     error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++20"
378 #   endif
379 # else
380 #   ifdef __cpp_lib_has_unique_object_representations
381 #     error "__cpp_lib_has_unique_object_representations should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 is not defined!"
382 #   endif
383 # endif
384 
385 # ifndef __cpp_lib_integral_constant_callable
386 #   error "__cpp_lib_integral_constant_callable should be defined in c++20"
387 # endif
388 # if __cpp_lib_integral_constant_callable != 201304L
389 #   error "__cpp_lib_integral_constant_callable should have the value 201304L in c++20"
390 # endif
391 
392 # if TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001
393 #   ifndef __cpp_lib_is_aggregate
394 #     error "__cpp_lib_is_aggregate should be defined in c++20"
395 #   endif
396 #   if __cpp_lib_is_aggregate != 201703L
397 #     error "__cpp_lib_is_aggregate should have the value 201703L in c++20"
398 #   endif
399 # else
400 #   ifdef __cpp_lib_is_aggregate
401 #     error "__cpp_lib_is_aggregate should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 is not defined!"
402 #   endif
403 # endif
404 
405 # if TEST_HAS_BUILTIN(__builtin_is_constant_evaluated) || TEST_GCC_VER >= 900
406 #   ifndef __cpp_lib_is_constant_evaluated
407 #     error "__cpp_lib_is_constant_evaluated should be defined in c++20"
408 #   endif
409 #   if __cpp_lib_is_constant_evaluated != 201811L
410 #     error "__cpp_lib_is_constant_evaluated should have the value 201811L in c++20"
411 #   endif
412 # else
413 #   ifdef __cpp_lib_is_constant_evaluated
414 #     error "__cpp_lib_is_constant_evaluated should not be defined when TEST_HAS_BUILTIN(__builtin_is_constant_evaluated) || TEST_GCC_VER >= 900 is not defined!"
415 #   endif
416 # endif
417 
418 # ifndef __cpp_lib_is_final
419 #   error "__cpp_lib_is_final should be defined in c++20"
420 # endif
421 # if __cpp_lib_is_final != 201402L
422 #   error "__cpp_lib_is_final should have the value 201402L in c++20"
423 # endif
424 
425 # ifndef __cpp_lib_is_invocable
426 #   error "__cpp_lib_is_invocable should be defined in c++20"
427 # endif
428 # if __cpp_lib_is_invocable != 201703L
429 #   error "__cpp_lib_is_invocable should have the value 201703L in c++20"
430 # endif
431 
432 # if !defined(_LIBCPP_VERSION)
433 #   ifndef __cpp_lib_is_layout_compatible
434 #     error "__cpp_lib_is_layout_compatible should be defined in c++20"
435 #   endif
436 #   if __cpp_lib_is_layout_compatible != 201907L
437 #     error "__cpp_lib_is_layout_compatible should have the value 201907L in c++20"
438 #   endif
439 # else // _LIBCPP_VERSION
440 #   ifdef __cpp_lib_is_layout_compatible
441 #     error "__cpp_lib_is_layout_compatible should not be defined because it is unimplemented in libc++!"
442 #   endif
443 # endif
444 
445 # ifndef __cpp_lib_is_nothrow_convertible
446 #   error "__cpp_lib_is_nothrow_convertible should be defined in c++20"
447 # endif
448 # if __cpp_lib_is_nothrow_convertible != 201806L
449 #   error "__cpp_lib_is_nothrow_convertible should have the value 201806L in c++20"
450 # endif
451 
452 # ifndef __cpp_lib_is_null_pointer
453 #   error "__cpp_lib_is_null_pointer should be defined in c++20"
454 # endif
455 # if __cpp_lib_is_null_pointer != 201309L
456 #   error "__cpp_lib_is_null_pointer should have the value 201309L in c++20"
457 # endif
458 
459 # if !defined(_LIBCPP_VERSION)
460 #   ifndef __cpp_lib_is_pointer_interconvertible
461 #     error "__cpp_lib_is_pointer_interconvertible should be defined in c++20"
462 #   endif
463 #   if __cpp_lib_is_pointer_interconvertible != 201907L
464 #     error "__cpp_lib_is_pointer_interconvertible should have the value 201907L in c++20"
465 #   endif
466 # else // _LIBCPP_VERSION
467 #   ifdef __cpp_lib_is_pointer_interconvertible
468 #     error "__cpp_lib_is_pointer_interconvertible should not be defined because it is unimplemented in libc++!"
469 #   endif
470 # endif
471 
472 # ifdef __cpp_lib_is_scoped_enum
473 #   error "__cpp_lib_is_scoped_enum should not be defined before c++2b"
474 # endif
475 
476 # ifndef __cpp_lib_is_swappable
477 #   error "__cpp_lib_is_swappable should be defined in c++20"
478 # endif
479 # if __cpp_lib_is_swappable != 201603L
480 #   error "__cpp_lib_is_swappable should have the value 201603L in c++20"
481 # endif
482 
483 # ifndef __cpp_lib_logical_traits
484 #   error "__cpp_lib_logical_traits should be defined in c++20"
485 # endif
486 # if __cpp_lib_logical_traits != 201510L
487 #   error "__cpp_lib_logical_traits should have the value 201510L in c++20"
488 # endif
489 
490 # ifndef __cpp_lib_remove_cvref
491 #   error "__cpp_lib_remove_cvref should be defined in c++20"
492 # endif
493 # if __cpp_lib_remove_cvref != 201711L
494 #   error "__cpp_lib_remove_cvref should have the value 201711L in c++20"
495 # endif
496 
497 # ifndef __cpp_lib_result_of_sfinae
498 #   error "__cpp_lib_result_of_sfinae should be defined in c++20"
499 # endif
500 # if __cpp_lib_result_of_sfinae != 201210L
501 #   error "__cpp_lib_result_of_sfinae should have the value 201210L in c++20"
502 # endif
503 
504 # ifndef __cpp_lib_transformation_trait_aliases
505 #   error "__cpp_lib_transformation_trait_aliases should be defined in c++20"
506 # endif
507 # if __cpp_lib_transformation_trait_aliases != 201304L
508 #   error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++20"
509 # endif
510 
511 # ifndef __cpp_lib_type_trait_variable_templates
512 #   error "__cpp_lib_type_trait_variable_templates should be defined in c++20"
513 # endif
514 # if __cpp_lib_type_trait_variable_templates != 201510L
515 #   error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++20"
516 # endif
517 
518 # ifndef __cpp_lib_void_t
519 #   error "__cpp_lib_void_t should be defined in c++20"
520 # endif
521 # if __cpp_lib_void_t != 201411L
522 #   error "__cpp_lib_void_t should have the value 201411L in c++20"
523 # endif
524 
525 #elif TEST_STD_VER > 20
526 
527 # ifndef __cpp_lib_bool_constant
528 #   error "__cpp_lib_bool_constant should be defined in c++2b"
529 # endif
530 # if __cpp_lib_bool_constant != 201505L
531 #   error "__cpp_lib_bool_constant should have the value 201505L in c++2b"
532 # endif
533 
534 # ifndef __cpp_lib_bounded_array_traits
535 #   error "__cpp_lib_bounded_array_traits should be defined in c++2b"
536 # endif
537 # if __cpp_lib_bounded_array_traits != 201902L
538 #   error "__cpp_lib_bounded_array_traits should have the value 201902L in c++2b"
539 # endif
540 
541 # if TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700
542 #   ifndef __cpp_lib_has_unique_object_representations
543 #     error "__cpp_lib_has_unique_object_representations should be defined in c++2b"
544 #   endif
545 #   if __cpp_lib_has_unique_object_representations != 201606L
546 #     error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++2b"
547 #   endif
548 # else
549 #   ifdef __cpp_lib_has_unique_object_representations
550 #     error "__cpp_lib_has_unique_object_representations should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700 is not defined!"
551 #   endif
552 # endif
553 
554 # ifndef __cpp_lib_integral_constant_callable
555 #   error "__cpp_lib_integral_constant_callable should be defined in c++2b"
556 # endif
557 # if __cpp_lib_integral_constant_callable != 201304L
558 #   error "__cpp_lib_integral_constant_callable should have the value 201304L in c++2b"
559 # endif
560 
561 # if TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001
562 #   ifndef __cpp_lib_is_aggregate
563 #     error "__cpp_lib_is_aggregate should be defined in c++2b"
564 #   endif
565 #   if __cpp_lib_is_aggregate != 201703L
566 #     error "__cpp_lib_is_aggregate should have the value 201703L in c++2b"
567 #   endif
568 # else
569 #   ifdef __cpp_lib_is_aggregate
570 #     error "__cpp_lib_is_aggregate should not be defined when TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001 is not defined!"
571 #   endif
572 # endif
573 
574 # if TEST_HAS_BUILTIN(__builtin_is_constant_evaluated) || TEST_GCC_VER >= 900
575 #   ifndef __cpp_lib_is_constant_evaluated
576 #     error "__cpp_lib_is_constant_evaluated should be defined in c++2b"
577 #   endif
578 #   if __cpp_lib_is_constant_evaluated != 201811L
579 #     error "__cpp_lib_is_constant_evaluated should have the value 201811L in c++2b"
580 #   endif
581 # else
582 #   ifdef __cpp_lib_is_constant_evaluated
583 #     error "__cpp_lib_is_constant_evaluated should not be defined when TEST_HAS_BUILTIN(__builtin_is_constant_evaluated) || TEST_GCC_VER >= 900 is not defined!"
584 #   endif
585 # endif
586 
587 # ifndef __cpp_lib_is_final
588 #   error "__cpp_lib_is_final should be defined in c++2b"
589 # endif
590 # if __cpp_lib_is_final != 201402L
591 #   error "__cpp_lib_is_final should have the value 201402L in c++2b"
592 # endif
593 
594 # ifndef __cpp_lib_is_invocable
595 #   error "__cpp_lib_is_invocable should be defined in c++2b"
596 # endif
597 # if __cpp_lib_is_invocable != 201703L
598 #   error "__cpp_lib_is_invocable should have the value 201703L in c++2b"
599 # endif
600 
601 # if !defined(_LIBCPP_VERSION)
602 #   ifndef __cpp_lib_is_layout_compatible
603 #     error "__cpp_lib_is_layout_compatible should be defined in c++2b"
604 #   endif
605 #   if __cpp_lib_is_layout_compatible != 201907L
606 #     error "__cpp_lib_is_layout_compatible should have the value 201907L in c++2b"
607 #   endif
608 # else // _LIBCPP_VERSION
609 #   ifdef __cpp_lib_is_layout_compatible
610 #     error "__cpp_lib_is_layout_compatible should not be defined because it is unimplemented in libc++!"
611 #   endif
612 # endif
613 
614 # ifndef __cpp_lib_is_nothrow_convertible
615 #   error "__cpp_lib_is_nothrow_convertible should be defined in c++2b"
616 # endif
617 # if __cpp_lib_is_nothrow_convertible != 201806L
618 #   error "__cpp_lib_is_nothrow_convertible should have the value 201806L in c++2b"
619 # endif
620 
621 # ifndef __cpp_lib_is_null_pointer
622 #   error "__cpp_lib_is_null_pointer should be defined in c++2b"
623 # endif
624 # if __cpp_lib_is_null_pointer != 201309L
625 #   error "__cpp_lib_is_null_pointer should have the value 201309L in c++2b"
626 # endif
627 
628 # if !defined(_LIBCPP_VERSION)
629 #   ifndef __cpp_lib_is_pointer_interconvertible
630 #     error "__cpp_lib_is_pointer_interconvertible should be defined in c++2b"
631 #   endif
632 #   if __cpp_lib_is_pointer_interconvertible != 201907L
633 #     error "__cpp_lib_is_pointer_interconvertible should have the value 201907L in c++2b"
634 #   endif
635 # else // _LIBCPP_VERSION
636 #   ifdef __cpp_lib_is_pointer_interconvertible
637 #     error "__cpp_lib_is_pointer_interconvertible should not be defined because it is unimplemented in libc++!"
638 #   endif
639 # endif
640 
641 # ifndef __cpp_lib_is_scoped_enum
642 #   error "__cpp_lib_is_scoped_enum should be defined in c++2b"
643 # endif
644 # if __cpp_lib_is_scoped_enum != 202011L
645 #   error "__cpp_lib_is_scoped_enum should have the value 202011L in c++2b"
646 # endif
647 
648 # ifndef __cpp_lib_is_swappable
649 #   error "__cpp_lib_is_swappable should be defined in c++2b"
650 # endif
651 # if __cpp_lib_is_swappable != 201603L
652 #   error "__cpp_lib_is_swappable should have the value 201603L in c++2b"
653 # endif
654 
655 # ifndef __cpp_lib_logical_traits
656 #   error "__cpp_lib_logical_traits should be defined in c++2b"
657 # endif
658 # if __cpp_lib_logical_traits != 201510L
659 #   error "__cpp_lib_logical_traits should have the value 201510L in c++2b"
660 # endif
661 
662 # ifndef __cpp_lib_remove_cvref
663 #   error "__cpp_lib_remove_cvref should be defined in c++2b"
664 # endif
665 # if __cpp_lib_remove_cvref != 201711L
666 #   error "__cpp_lib_remove_cvref should have the value 201711L in c++2b"
667 # endif
668 
669 # ifndef __cpp_lib_result_of_sfinae
670 #   error "__cpp_lib_result_of_sfinae should be defined in c++2b"
671 # endif
672 # if __cpp_lib_result_of_sfinae != 201210L
673 #   error "__cpp_lib_result_of_sfinae should have the value 201210L in c++2b"
674 # endif
675 
676 # ifndef __cpp_lib_transformation_trait_aliases
677 #   error "__cpp_lib_transformation_trait_aliases should be defined in c++2b"
678 # endif
679 # if __cpp_lib_transformation_trait_aliases != 201304L
680 #   error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++2b"
681 # endif
682 
683 # ifndef __cpp_lib_type_trait_variable_templates
684 #   error "__cpp_lib_type_trait_variable_templates should be defined in c++2b"
685 # endif
686 # if __cpp_lib_type_trait_variable_templates != 201510L
687 #   error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++2b"
688 # endif
689 
690 # ifndef __cpp_lib_void_t
691 #   error "__cpp_lib_void_t should be defined in c++2b"
692 # endif
693 # if __cpp_lib_void_t != 201411L
694 #   error "__cpp_lib_void_t should have the value 201411L in c++2b"
695 # endif
696 
697 #endif // TEST_STD_VER > 20
698 
main(int,char **)699 int main(int, char**) { return 0; }
700