|
23 | 23 | __cpp_lib_is_aggregate 201703L [C++17] |
24 | 24 | __cpp_lib_is_constant_evaluated 201811L [C++20] |
25 | 25 | __cpp_lib_is_final 201402L [C++14] |
| 26 | + __cpp_lib_is_implicit_lifetime 202302L [C++23] |
26 | 27 | __cpp_lib_is_invocable 201703L [C++17] |
27 | 28 | __cpp_lib_is_layout_compatible 201907L [C++20] |
28 | 29 | __cpp_lib_is_nothrow_convertible 201806L [C++20] |
|
75 | 76 | # error "__cpp_lib_is_final should not be defined before c++14" |
76 | 77 | # endif |
77 | 78 |
|
| 79 | +# ifdef __cpp_lib_is_implicit_lifetime |
| 80 | +# error "__cpp_lib_is_implicit_lifetime should not be defined before c++23" |
| 81 | +# endif |
| 82 | + |
78 | 83 | # ifdef __cpp_lib_is_invocable |
79 | 84 | # error "__cpp_lib_is_invocable should not be defined before c++17" |
80 | 85 | # endif |
|
179 | 184 | # error "__cpp_lib_is_final should have the value 201402L in c++14" |
180 | 185 | # endif |
181 | 186 |
|
| 187 | +# ifdef __cpp_lib_is_implicit_lifetime |
| 188 | +# error "__cpp_lib_is_implicit_lifetime should not be defined before c++23" |
| 189 | +# endif |
| 190 | + |
182 | 191 | # ifdef __cpp_lib_is_invocable |
183 | 192 | # error "__cpp_lib_is_invocable should not be defined before c++17" |
184 | 193 | # endif |
|
301 | 310 | # error "__cpp_lib_is_final should have the value 201402L in c++17" |
302 | 311 | # endif |
303 | 312 |
|
| 313 | +# ifdef __cpp_lib_is_implicit_lifetime |
| 314 | +# error "__cpp_lib_is_implicit_lifetime should not be defined before c++23" |
| 315 | +# endif |
| 316 | + |
304 | 317 | # ifndef __cpp_lib_is_invocable |
305 | 318 | # error "__cpp_lib_is_invocable should be defined in c++17" |
306 | 319 | # endif |
|
444 | 457 | # error "__cpp_lib_is_final should have the value 201402L in c++20" |
445 | 458 | # endif |
446 | 459 |
|
| 460 | +# ifdef __cpp_lib_is_implicit_lifetime |
| 461 | +# error "__cpp_lib_is_implicit_lifetime should not be defined before c++23" |
| 462 | +# endif |
| 463 | + |
447 | 464 | # ifndef __cpp_lib_is_invocable |
448 | 465 | # error "__cpp_lib_is_invocable should be defined in c++20" |
449 | 466 | # endif |
|
614 | 631 | # error "__cpp_lib_is_final should have the value 201402L in c++23" |
615 | 632 | # endif |
616 | 633 |
|
| 634 | +# if __has_builtin(__builtin_is_implicit_lifetime) |
| 635 | +# ifndef __cpp_lib_is_implicit_lifetime |
| 636 | +# error "__cpp_lib_is_implicit_lifetime should be defined in c++23" |
| 637 | +# endif |
| 638 | +# if __cpp_lib_is_implicit_lifetime != 202302L |
| 639 | +# error "__cpp_lib_is_implicit_lifetime should have the value 202302L in c++23" |
| 640 | +# endif |
| 641 | +# else |
| 642 | +# ifdef __cpp_lib_is_implicit_lifetime |
| 643 | +# error "__cpp_lib_is_implicit_lifetime should not be defined when the requirement '__has_builtin(__builtin_is_implicit_lifetime)' is not met!" |
| 644 | +# endif |
| 645 | +# endif |
| 646 | + |
617 | 647 | # ifndef __cpp_lib_is_invocable |
618 | 648 | # error "__cpp_lib_is_invocable should be defined in c++23" |
619 | 649 | # endif |
|
796 | 826 | # error "__cpp_lib_is_final should have the value 201402L in c++26" |
797 | 827 | # endif |
798 | 828 |
|
| 829 | +# if __has_builtin(__builtin_is_implicit_lifetime) |
| 830 | +# ifndef __cpp_lib_is_implicit_lifetime |
| 831 | +# error "__cpp_lib_is_implicit_lifetime should be defined in c++26" |
| 832 | +# endif |
| 833 | +# if __cpp_lib_is_implicit_lifetime != 202302L |
| 834 | +# error "__cpp_lib_is_implicit_lifetime should have the value 202302L in c++26" |
| 835 | +# endif |
| 836 | +# else |
| 837 | +# ifdef __cpp_lib_is_implicit_lifetime |
| 838 | +# error "__cpp_lib_is_implicit_lifetime should not be defined when the requirement '__has_builtin(__builtin_is_implicit_lifetime)' is not met!" |
| 839 | +# endif |
| 840 | +# endif |
| 841 | + |
799 | 842 | # ifndef __cpp_lib_is_invocable |
800 | 843 | # error "__cpp_lib_is_invocable should be defined in c++26" |
801 | 844 | # endif |
|
0 commit comments