12c6217f2SLouis Dionne //===----------------------------------------------------------------------===// 22c6217f2SLouis Dionne // 32c6217f2SLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42c6217f2SLouis Dionne // See https://llvm.org/LICENSE.txt for license information. 52c6217f2SLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 62c6217f2SLouis Dionne // 72c6217f2SLouis Dionne //===----------------------------------------------------------------------===// 82c6217f2SLouis Dionne // 92c6217f2SLouis Dionne // WARNING: This test was generated by generate_feature_test_macro_components.py 102c6217f2SLouis Dionne // and should not be edited manually. 112c6217f2SLouis Dionne // 122c6217f2SLouis Dionne // clang-format off 132c6217f2SLouis Dionne 142c6217f2SLouis Dionne // <utility> 152c6217f2SLouis Dionne 162c6217f2SLouis Dionne // Test the feature test macros defined by <utility> 172c6217f2SLouis Dionne 182c6217f2SLouis Dionne /* Constant Value 192c6217f2SLouis Dionne __cpp_lib_as_const 201510L [C++17] 202b6ce25aSMark de Wever __cpp_lib_constexpr_algorithms 201806L [C++20] 212c6217f2SLouis Dionne __cpp_lib_constexpr_utility 201811L [C++20] 22*b699a9baSLouis Dionne __cpp_lib_constrained_equality 202403L [C++26] 232c6217f2SLouis Dionne __cpp_lib_exchange_function 201304L [C++14] 2471400505SMark de Wever __cpp_lib_forward_like 202207L [C++23] 252c6217f2SLouis Dionne __cpp_lib_integer_comparison_functions 202002L [C++20] 262c6217f2SLouis Dionne __cpp_lib_integer_sequence 201304L [C++14] 2771400505SMark de Wever __cpp_lib_ranges_zip 202110L [C++23] 2871400505SMark de Wever __cpp_lib_to_underlying 202102L [C++23] 29f49ccca8SMark de Wever __cpp_lib_tuple_like 202207L [C++23] 30f49ccca8SMark de Wever 202311L [C++26] 312c6217f2SLouis Dionne __cpp_lib_tuples_by_type 201304L [C++14] 3271400505SMark de Wever __cpp_lib_unreachable 202202L [C++23] 332c6217f2SLouis Dionne */ 342c6217f2SLouis Dionne 352c6217f2SLouis Dionne #include <utility> 362c6217f2SLouis Dionne #include "test_macros.h" 372c6217f2SLouis Dionne 382c6217f2SLouis Dionne #if TEST_STD_VER < 14 392c6217f2SLouis Dionne 402c6217f2SLouis Dionne # ifdef __cpp_lib_as_const 412c6217f2SLouis Dionne # error "__cpp_lib_as_const should not be defined before c++17" 422c6217f2SLouis Dionne # endif 432c6217f2SLouis Dionne 442b6ce25aSMark de Wever # ifdef __cpp_lib_constexpr_algorithms 452b6ce25aSMark de Wever # error "__cpp_lib_constexpr_algorithms should not be defined before c++20" 462b6ce25aSMark de Wever # endif 472b6ce25aSMark de Wever 482c6217f2SLouis Dionne # ifdef __cpp_lib_constexpr_utility 492c6217f2SLouis Dionne # error "__cpp_lib_constexpr_utility should not be defined before c++20" 502c6217f2SLouis Dionne # endif 512c6217f2SLouis Dionne 52*b699a9baSLouis Dionne # ifdef __cpp_lib_constrained_equality 53*b699a9baSLouis Dionne # error "__cpp_lib_constrained_equality should not be defined before c++26" 54*b699a9baSLouis Dionne # endif 55*b699a9baSLouis Dionne 562c6217f2SLouis Dionne # ifdef __cpp_lib_exchange_function 572c6217f2SLouis Dionne # error "__cpp_lib_exchange_function should not be defined before c++14" 582c6217f2SLouis Dionne # endif 592c6217f2SLouis Dionne 603a49cffeSIgor Zhukov # ifdef __cpp_lib_forward_like 6171400505SMark de Wever # error "__cpp_lib_forward_like should not be defined before c++23" 623a49cffeSIgor Zhukov # endif 633a49cffeSIgor Zhukov 642c6217f2SLouis Dionne # ifdef __cpp_lib_integer_comparison_functions 652c6217f2SLouis Dionne # error "__cpp_lib_integer_comparison_functions should not be defined before c++20" 662c6217f2SLouis Dionne # endif 672c6217f2SLouis Dionne 682c6217f2SLouis Dionne # ifdef __cpp_lib_integer_sequence 692c6217f2SLouis Dionne # error "__cpp_lib_integer_sequence should not be defined before c++14" 702c6217f2SLouis Dionne # endif 712c6217f2SLouis Dionne 722c6217f2SLouis Dionne # ifdef __cpp_lib_ranges_zip 7371400505SMark de Wever # error "__cpp_lib_ranges_zip should not be defined before c++23" 742c6217f2SLouis Dionne # endif 752c6217f2SLouis Dionne 762c6217f2SLouis Dionne # ifdef __cpp_lib_to_underlying 7771400505SMark de Wever # error "__cpp_lib_to_underlying should not be defined before c++23" 782c6217f2SLouis Dionne # endif 792c6217f2SLouis Dionne 80f49ccca8SMark de Wever # ifdef __cpp_lib_tuple_like 81f49ccca8SMark de Wever # error "__cpp_lib_tuple_like should not be defined before c++23" 82f49ccca8SMark de Wever # endif 83f49ccca8SMark de Wever 842c6217f2SLouis Dionne # ifdef __cpp_lib_tuples_by_type 852c6217f2SLouis Dionne # error "__cpp_lib_tuples_by_type should not be defined before c++14" 862c6217f2SLouis Dionne # endif 872c6217f2SLouis Dionne 882c6217f2SLouis Dionne # ifdef __cpp_lib_unreachable 8971400505SMark de Wever # error "__cpp_lib_unreachable should not be defined before c++23" 902c6217f2SLouis Dionne # endif 912c6217f2SLouis Dionne 922c6217f2SLouis Dionne #elif TEST_STD_VER == 14 932c6217f2SLouis Dionne 942c6217f2SLouis Dionne # ifdef __cpp_lib_as_const 952c6217f2SLouis Dionne # error "__cpp_lib_as_const should not be defined before c++17" 962c6217f2SLouis Dionne # endif 972c6217f2SLouis Dionne 982b6ce25aSMark de Wever # ifdef __cpp_lib_constexpr_algorithms 992b6ce25aSMark de Wever # error "__cpp_lib_constexpr_algorithms should not be defined before c++20" 1002b6ce25aSMark de Wever # endif 1012b6ce25aSMark de Wever 1022c6217f2SLouis Dionne # ifdef __cpp_lib_constexpr_utility 1032c6217f2SLouis Dionne # error "__cpp_lib_constexpr_utility should not be defined before c++20" 1042c6217f2SLouis Dionne # endif 1052c6217f2SLouis Dionne 106*b699a9baSLouis Dionne # ifdef __cpp_lib_constrained_equality 107*b699a9baSLouis Dionne # error "__cpp_lib_constrained_equality should not be defined before c++26" 108*b699a9baSLouis Dionne # endif 109*b699a9baSLouis Dionne 1102c6217f2SLouis Dionne # ifndef __cpp_lib_exchange_function 1112c6217f2SLouis Dionne # error "__cpp_lib_exchange_function should be defined in c++14" 1122c6217f2SLouis Dionne # endif 1132c6217f2SLouis Dionne # if __cpp_lib_exchange_function != 201304L 1142c6217f2SLouis Dionne # error "__cpp_lib_exchange_function should have the value 201304L in c++14" 1152c6217f2SLouis Dionne # endif 1162c6217f2SLouis Dionne 1173a49cffeSIgor Zhukov # ifdef __cpp_lib_forward_like 11871400505SMark de Wever # error "__cpp_lib_forward_like should not be defined before c++23" 1193a49cffeSIgor Zhukov # endif 1203a49cffeSIgor Zhukov 1212c6217f2SLouis Dionne # ifdef __cpp_lib_integer_comparison_functions 1222c6217f2SLouis Dionne # error "__cpp_lib_integer_comparison_functions should not be defined before c++20" 1232c6217f2SLouis Dionne # endif 1242c6217f2SLouis Dionne 1252c6217f2SLouis Dionne # ifndef __cpp_lib_integer_sequence 1262c6217f2SLouis Dionne # error "__cpp_lib_integer_sequence should be defined in c++14" 1272c6217f2SLouis Dionne # endif 1282c6217f2SLouis Dionne # if __cpp_lib_integer_sequence != 201304L 1292c6217f2SLouis Dionne # error "__cpp_lib_integer_sequence should have the value 201304L in c++14" 1302c6217f2SLouis Dionne # endif 1312c6217f2SLouis Dionne 1322c6217f2SLouis Dionne # ifdef __cpp_lib_ranges_zip 13371400505SMark de Wever # error "__cpp_lib_ranges_zip should not be defined before c++23" 1342c6217f2SLouis Dionne # endif 1352c6217f2SLouis Dionne 1362c6217f2SLouis Dionne # ifdef __cpp_lib_to_underlying 13771400505SMark de Wever # error "__cpp_lib_to_underlying should not be defined before c++23" 1382c6217f2SLouis Dionne # endif 1392c6217f2SLouis Dionne 140f49ccca8SMark de Wever # ifdef __cpp_lib_tuple_like 141f49ccca8SMark de Wever # error "__cpp_lib_tuple_like should not be defined before c++23" 142f49ccca8SMark de Wever # endif 143f49ccca8SMark de Wever 1442c6217f2SLouis Dionne # ifndef __cpp_lib_tuples_by_type 1452c6217f2SLouis Dionne # error "__cpp_lib_tuples_by_type should be defined in c++14" 1462c6217f2SLouis Dionne # endif 1472c6217f2SLouis Dionne # if __cpp_lib_tuples_by_type != 201304L 1482c6217f2SLouis Dionne # error "__cpp_lib_tuples_by_type should have the value 201304L in c++14" 1492c6217f2SLouis Dionne # endif 1502c6217f2SLouis Dionne 1512c6217f2SLouis Dionne # ifdef __cpp_lib_unreachable 15271400505SMark de Wever # error "__cpp_lib_unreachable should not be defined before c++23" 1532c6217f2SLouis Dionne # endif 1542c6217f2SLouis Dionne 1552c6217f2SLouis Dionne #elif TEST_STD_VER == 17 1562c6217f2SLouis Dionne 1572c6217f2SLouis Dionne # ifndef __cpp_lib_as_const 1582c6217f2SLouis Dionne # error "__cpp_lib_as_const should be defined in c++17" 1592c6217f2SLouis Dionne # endif 1602c6217f2SLouis Dionne # if __cpp_lib_as_const != 201510L 1612c6217f2SLouis Dionne # error "__cpp_lib_as_const should have the value 201510L in c++17" 1622c6217f2SLouis Dionne # endif 1632c6217f2SLouis Dionne 1642b6ce25aSMark de Wever # ifdef __cpp_lib_constexpr_algorithms 1652b6ce25aSMark de Wever # error "__cpp_lib_constexpr_algorithms should not be defined before c++20" 1662b6ce25aSMark de Wever # endif 1672b6ce25aSMark de Wever 1682c6217f2SLouis Dionne # ifdef __cpp_lib_constexpr_utility 1692c6217f2SLouis Dionne # error "__cpp_lib_constexpr_utility should not be defined before c++20" 1702c6217f2SLouis Dionne # endif 1712c6217f2SLouis Dionne 172*b699a9baSLouis Dionne # ifdef __cpp_lib_constrained_equality 173*b699a9baSLouis Dionne # error "__cpp_lib_constrained_equality should not be defined before c++26" 174*b699a9baSLouis Dionne # endif 175*b699a9baSLouis Dionne 1762c6217f2SLouis Dionne # ifndef __cpp_lib_exchange_function 1772c6217f2SLouis Dionne # error "__cpp_lib_exchange_function should be defined in c++17" 1782c6217f2SLouis Dionne # endif 1792c6217f2SLouis Dionne # if __cpp_lib_exchange_function != 201304L 1802c6217f2SLouis Dionne # error "__cpp_lib_exchange_function should have the value 201304L in c++17" 1812c6217f2SLouis Dionne # endif 1822c6217f2SLouis Dionne 1833a49cffeSIgor Zhukov # ifdef __cpp_lib_forward_like 18471400505SMark de Wever # error "__cpp_lib_forward_like should not be defined before c++23" 1853a49cffeSIgor Zhukov # endif 1863a49cffeSIgor Zhukov 1872c6217f2SLouis Dionne # ifdef __cpp_lib_integer_comparison_functions 1882c6217f2SLouis Dionne # error "__cpp_lib_integer_comparison_functions should not be defined before c++20" 1892c6217f2SLouis Dionne # endif 1902c6217f2SLouis Dionne 1912c6217f2SLouis Dionne # ifndef __cpp_lib_integer_sequence 1922c6217f2SLouis Dionne # error "__cpp_lib_integer_sequence should be defined in c++17" 1932c6217f2SLouis Dionne # endif 1942c6217f2SLouis Dionne # if __cpp_lib_integer_sequence != 201304L 1952c6217f2SLouis Dionne # error "__cpp_lib_integer_sequence should have the value 201304L in c++17" 1962c6217f2SLouis Dionne # endif 1972c6217f2SLouis Dionne 1982c6217f2SLouis Dionne # ifdef __cpp_lib_ranges_zip 19971400505SMark de Wever # error "__cpp_lib_ranges_zip should not be defined before c++23" 2002c6217f2SLouis Dionne # endif 2012c6217f2SLouis Dionne 2022c6217f2SLouis Dionne # ifdef __cpp_lib_to_underlying 20371400505SMark de Wever # error "__cpp_lib_to_underlying should not be defined before c++23" 2042c6217f2SLouis Dionne # endif 2052c6217f2SLouis Dionne 206f49ccca8SMark de Wever # ifdef __cpp_lib_tuple_like 207f49ccca8SMark de Wever # error "__cpp_lib_tuple_like should not be defined before c++23" 208f49ccca8SMark de Wever # endif 209f49ccca8SMark de Wever 2102c6217f2SLouis Dionne # ifndef __cpp_lib_tuples_by_type 2112c6217f2SLouis Dionne # error "__cpp_lib_tuples_by_type should be defined in c++17" 2122c6217f2SLouis Dionne # endif 2132c6217f2SLouis Dionne # if __cpp_lib_tuples_by_type != 201304L 2142c6217f2SLouis Dionne # error "__cpp_lib_tuples_by_type should have the value 201304L in c++17" 2152c6217f2SLouis Dionne # endif 2162c6217f2SLouis Dionne 2172c6217f2SLouis Dionne # ifdef __cpp_lib_unreachable 21871400505SMark de Wever # error "__cpp_lib_unreachable should not be defined before c++23" 2192c6217f2SLouis Dionne # endif 2202c6217f2SLouis Dionne 2212c6217f2SLouis Dionne #elif TEST_STD_VER == 20 2222c6217f2SLouis Dionne 2232c6217f2SLouis Dionne # ifndef __cpp_lib_as_const 2242c6217f2SLouis Dionne # error "__cpp_lib_as_const should be defined in c++20" 2252c6217f2SLouis Dionne # endif 2262c6217f2SLouis Dionne # if __cpp_lib_as_const != 201510L 2272c6217f2SLouis Dionne # error "__cpp_lib_as_const should have the value 201510L in c++20" 2282c6217f2SLouis Dionne # endif 2292c6217f2SLouis Dionne 2302b6ce25aSMark de Wever # ifndef __cpp_lib_constexpr_algorithms 2312b6ce25aSMark de Wever # error "__cpp_lib_constexpr_algorithms should be defined in c++20" 2322b6ce25aSMark de Wever # endif 2332b6ce25aSMark de Wever # if __cpp_lib_constexpr_algorithms != 201806L 2342b6ce25aSMark de Wever # error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++20" 2352b6ce25aSMark de Wever # endif 2362b6ce25aSMark de Wever 2372c6217f2SLouis Dionne # ifndef __cpp_lib_constexpr_utility 2382c6217f2SLouis Dionne # error "__cpp_lib_constexpr_utility should be defined in c++20" 2392c6217f2SLouis Dionne # endif 2402c6217f2SLouis Dionne # if __cpp_lib_constexpr_utility != 201811L 2412c6217f2SLouis Dionne # error "__cpp_lib_constexpr_utility should have the value 201811L in c++20" 2422c6217f2SLouis Dionne # endif 2432c6217f2SLouis Dionne 244*b699a9baSLouis Dionne # ifdef __cpp_lib_constrained_equality 245*b699a9baSLouis Dionne # error "__cpp_lib_constrained_equality should not be defined before c++26" 246*b699a9baSLouis Dionne # endif 247*b699a9baSLouis Dionne 2482c6217f2SLouis Dionne # ifndef __cpp_lib_exchange_function 2492c6217f2SLouis Dionne # error "__cpp_lib_exchange_function should be defined in c++20" 2502c6217f2SLouis Dionne # endif 2512c6217f2SLouis Dionne # if __cpp_lib_exchange_function != 201304L 2522c6217f2SLouis Dionne # error "__cpp_lib_exchange_function should have the value 201304L in c++20" 2532c6217f2SLouis Dionne # endif 2542c6217f2SLouis Dionne 2553a49cffeSIgor Zhukov # ifdef __cpp_lib_forward_like 25671400505SMark de Wever # error "__cpp_lib_forward_like should not be defined before c++23" 2573a49cffeSIgor Zhukov # endif 2583a49cffeSIgor Zhukov 2592c6217f2SLouis Dionne # ifndef __cpp_lib_integer_comparison_functions 2602c6217f2SLouis Dionne # error "__cpp_lib_integer_comparison_functions should be defined in c++20" 2612c6217f2SLouis Dionne # endif 2622c6217f2SLouis Dionne # if __cpp_lib_integer_comparison_functions != 202002L 2632c6217f2SLouis Dionne # error "__cpp_lib_integer_comparison_functions should have the value 202002L in c++20" 2642c6217f2SLouis Dionne # endif 2652c6217f2SLouis Dionne 2662c6217f2SLouis Dionne # ifndef __cpp_lib_integer_sequence 2672c6217f2SLouis Dionne # error "__cpp_lib_integer_sequence should be defined in c++20" 2682c6217f2SLouis Dionne # endif 2692c6217f2SLouis Dionne # if __cpp_lib_integer_sequence != 201304L 2702c6217f2SLouis Dionne # error "__cpp_lib_integer_sequence should have the value 201304L in c++20" 2712c6217f2SLouis Dionne # endif 2722c6217f2SLouis Dionne 2732c6217f2SLouis Dionne # ifdef __cpp_lib_ranges_zip 27471400505SMark de Wever # error "__cpp_lib_ranges_zip should not be defined before c++23" 2752c6217f2SLouis Dionne # endif 2762c6217f2SLouis Dionne 2772c6217f2SLouis Dionne # ifdef __cpp_lib_to_underlying 27871400505SMark de Wever # error "__cpp_lib_to_underlying should not be defined before c++23" 2792c6217f2SLouis Dionne # endif 2802c6217f2SLouis Dionne 281f49ccca8SMark de Wever # ifdef __cpp_lib_tuple_like 282f49ccca8SMark de Wever # error "__cpp_lib_tuple_like should not be defined before c++23" 283f49ccca8SMark de Wever # endif 284f49ccca8SMark de Wever 2852c6217f2SLouis Dionne # ifndef __cpp_lib_tuples_by_type 2862c6217f2SLouis Dionne # error "__cpp_lib_tuples_by_type should be defined in c++20" 2872c6217f2SLouis Dionne # endif 2882c6217f2SLouis Dionne # if __cpp_lib_tuples_by_type != 201304L 2892c6217f2SLouis Dionne # error "__cpp_lib_tuples_by_type should have the value 201304L in c++20" 2902c6217f2SLouis Dionne # endif 2912c6217f2SLouis Dionne 2922c6217f2SLouis Dionne # ifdef __cpp_lib_unreachable 29371400505SMark de Wever # error "__cpp_lib_unreachable should not be defined before c++23" 2942c6217f2SLouis Dionne # endif 2952c6217f2SLouis Dionne 29600c97cbcSMark de Wever #elif TEST_STD_VER == 23 2972c6217f2SLouis Dionne 2982c6217f2SLouis Dionne # ifndef __cpp_lib_as_const 29971400505SMark de Wever # error "__cpp_lib_as_const should be defined in c++23" 3002c6217f2SLouis Dionne # endif 3012c6217f2SLouis Dionne # if __cpp_lib_as_const != 201510L 30271400505SMark de Wever # error "__cpp_lib_as_const should have the value 201510L in c++23" 3032c6217f2SLouis Dionne # endif 3042c6217f2SLouis Dionne 3052b6ce25aSMark de Wever # ifndef __cpp_lib_constexpr_algorithms 30671400505SMark de Wever # error "__cpp_lib_constexpr_algorithms should be defined in c++23" 3072b6ce25aSMark de Wever # endif 3082b6ce25aSMark de Wever # if __cpp_lib_constexpr_algorithms != 201806L 30971400505SMark de Wever # error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++23" 3102b6ce25aSMark de Wever # endif 3112b6ce25aSMark de Wever 3122c6217f2SLouis Dionne # ifndef __cpp_lib_constexpr_utility 31371400505SMark de Wever # error "__cpp_lib_constexpr_utility should be defined in c++23" 3142c6217f2SLouis Dionne # endif 3152c6217f2SLouis Dionne # if __cpp_lib_constexpr_utility != 201811L 31671400505SMark de Wever # error "__cpp_lib_constexpr_utility should have the value 201811L in c++23" 3172c6217f2SLouis Dionne # endif 3182c6217f2SLouis Dionne 319*b699a9baSLouis Dionne # ifdef __cpp_lib_constrained_equality 320*b699a9baSLouis Dionne # error "__cpp_lib_constrained_equality should not be defined before c++26" 321*b699a9baSLouis Dionne # endif 322*b699a9baSLouis Dionne 3232c6217f2SLouis Dionne # ifndef __cpp_lib_exchange_function 32471400505SMark de Wever # error "__cpp_lib_exchange_function should be defined in c++23" 3252c6217f2SLouis Dionne # endif 3262c6217f2SLouis Dionne # if __cpp_lib_exchange_function != 201304L 32771400505SMark de Wever # error "__cpp_lib_exchange_function should have the value 201304L in c++23" 3282c6217f2SLouis Dionne # endif 3292c6217f2SLouis Dionne 3303a49cffeSIgor Zhukov # ifndef __cpp_lib_forward_like 33171400505SMark de Wever # error "__cpp_lib_forward_like should be defined in c++23" 3323a49cffeSIgor Zhukov # endif 3333a49cffeSIgor Zhukov # if __cpp_lib_forward_like != 202207L 33471400505SMark de Wever # error "__cpp_lib_forward_like should have the value 202207L in c++23" 3353a49cffeSIgor Zhukov # endif 3363a49cffeSIgor Zhukov 3372c6217f2SLouis Dionne # ifndef __cpp_lib_integer_comparison_functions 33871400505SMark de Wever # error "__cpp_lib_integer_comparison_functions should be defined in c++23" 3392c6217f2SLouis Dionne # endif 3402c6217f2SLouis Dionne # if __cpp_lib_integer_comparison_functions != 202002L 34171400505SMark de Wever # error "__cpp_lib_integer_comparison_functions should have the value 202002L in c++23" 3422c6217f2SLouis Dionne # endif 3432c6217f2SLouis Dionne 3442c6217f2SLouis Dionne # ifndef __cpp_lib_integer_sequence 34571400505SMark de Wever # error "__cpp_lib_integer_sequence should be defined in c++23" 3462c6217f2SLouis Dionne # endif 3472c6217f2SLouis Dionne # if __cpp_lib_integer_sequence != 201304L 34871400505SMark de Wever # error "__cpp_lib_integer_sequence should have the value 201304L in c++23" 3492c6217f2SLouis Dionne # endif 3502c6217f2SLouis Dionne 3512c6217f2SLouis Dionne # if !defined(_LIBCPP_VERSION) 3522c6217f2SLouis Dionne # ifndef __cpp_lib_ranges_zip 35371400505SMark de Wever # error "__cpp_lib_ranges_zip should be defined in c++23" 3542c6217f2SLouis Dionne # endif 3552c6217f2SLouis Dionne # if __cpp_lib_ranges_zip != 202110L 35671400505SMark de Wever # error "__cpp_lib_ranges_zip should have the value 202110L in c++23" 3572c6217f2SLouis Dionne # endif 3582c6217f2SLouis Dionne # else // _LIBCPP_VERSION 3592c6217f2SLouis Dionne # ifdef __cpp_lib_ranges_zip 3602c6217f2SLouis Dionne # error "__cpp_lib_ranges_zip should not be defined because it is unimplemented in libc++!" 3612c6217f2SLouis Dionne # endif 3622c6217f2SLouis Dionne # endif 3632c6217f2SLouis Dionne 3642c6217f2SLouis Dionne # ifndef __cpp_lib_to_underlying 36571400505SMark de Wever # error "__cpp_lib_to_underlying should be defined in c++23" 3662c6217f2SLouis Dionne # endif 3672c6217f2SLouis Dionne # if __cpp_lib_to_underlying != 202102L 36871400505SMark de Wever # error "__cpp_lib_to_underlying should have the value 202102L in c++23" 3692c6217f2SLouis Dionne # endif 3702c6217f2SLouis Dionne 371f49ccca8SMark de Wever # if !defined(_LIBCPP_VERSION) 372f49ccca8SMark de Wever # ifndef __cpp_lib_tuple_like 373f49ccca8SMark de Wever # error "__cpp_lib_tuple_like should be defined in c++23" 374f49ccca8SMark de Wever # endif 375f49ccca8SMark de Wever # if __cpp_lib_tuple_like != 202207L 376f49ccca8SMark de Wever # error "__cpp_lib_tuple_like should have the value 202207L in c++23" 377f49ccca8SMark de Wever # endif 378f49ccca8SMark de Wever # else // _LIBCPP_VERSION 379f49ccca8SMark de Wever # ifdef __cpp_lib_tuple_like 380f49ccca8SMark de Wever # error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!" 381f49ccca8SMark de Wever # endif 382f49ccca8SMark de Wever # endif 383f49ccca8SMark de Wever 3842c6217f2SLouis Dionne # ifndef __cpp_lib_tuples_by_type 38571400505SMark de Wever # error "__cpp_lib_tuples_by_type should be defined in c++23" 3862c6217f2SLouis Dionne # endif 3872c6217f2SLouis Dionne # if __cpp_lib_tuples_by_type != 201304L 38871400505SMark de Wever # error "__cpp_lib_tuples_by_type should have the value 201304L in c++23" 3892c6217f2SLouis Dionne # endif 3902c6217f2SLouis Dionne 3912c6217f2SLouis Dionne # ifndef __cpp_lib_unreachable 39271400505SMark de Wever # error "__cpp_lib_unreachable should be defined in c++23" 3932c6217f2SLouis Dionne # endif 3942c6217f2SLouis Dionne # if __cpp_lib_unreachable != 202202L 39571400505SMark de Wever # error "__cpp_lib_unreachable should have the value 202202L in c++23" 3962c6217f2SLouis Dionne # endif 3972c6217f2SLouis Dionne 39800c97cbcSMark de Wever #elif TEST_STD_VER > 23 39900c97cbcSMark de Wever 40000c97cbcSMark de Wever # ifndef __cpp_lib_as_const 40100c97cbcSMark de Wever # error "__cpp_lib_as_const should be defined in c++26" 40200c97cbcSMark de Wever # endif 40300c97cbcSMark de Wever # if __cpp_lib_as_const != 201510L 40400c97cbcSMark de Wever # error "__cpp_lib_as_const should have the value 201510L in c++26" 40500c97cbcSMark de Wever # endif 40600c97cbcSMark de Wever 40700c97cbcSMark de Wever # ifndef __cpp_lib_constexpr_algorithms 40800c97cbcSMark de Wever # error "__cpp_lib_constexpr_algorithms should be defined in c++26" 40900c97cbcSMark de Wever # endif 41000c97cbcSMark de Wever # if __cpp_lib_constexpr_algorithms != 201806L 41100c97cbcSMark de Wever # error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++26" 41200c97cbcSMark de Wever # endif 41300c97cbcSMark de Wever 41400c97cbcSMark de Wever # ifndef __cpp_lib_constexpr_utility 41500c97cbcSMark de Wever # error "__cpp_lib_constexpr_utility should be defined in c++26" 41600c97cbcSMark de Wever # endif 41700c97cbcSMark de Wever # if __cpp_lib_constexpr_utility != 201811L 41800c97cbcSMark de Wever # error "__cpp_lib_constexpr_utility should have the value 201811L in c++26" 41900c97cbcSMark de Wever # endif 42000c97cbcSMark de Wever 421*b699a9baSLouis Dionne # if !defined(_LIBCPP_VERSION) 422*b699a9baSLouis Dionne # ifndef __cpp_lib_constrained_equality 423*b699a9baSLouis Dionne # error "__cpp_lib_constrained_equality should be defined in c++26" 424*b699a9baSLouis Dionne # endif 425*b699a9baSLouis Dionne # if __cpp_lib_constrained_equality != 202403L 426*b699a9baSLouis Dionne # error "__cpp_lib_constrained_equality should have the value 202403L in c++26" 427*b699a9baSLouis Dionne # endif 428*b699a9baSLouis Dionne # else // _LIBCPP_VERSION 429*b699a9baSLouis Dionne # ifdef __cpp_lib_constrained_equality 430*b699a9baSLouis Dionne # error "__cpp_lib_constrained_equality should not be defined because it is unimplemented in libc++!" 431*b699a9baSLouis Dionne # endif 432*b699a9baSLouis Dionne # endif 433*b699a9baSLouis Dionne 43400c97cbcSMark de Wever # ifndef __cpp_lib_exchange_function 43500c97cbcSMark de Wever # error "__cpp_lib_exchange_function should be defined in c++26" 43600c97cbcSMark de Wever # endif 43700c97cbcSMark de Wever # if __cpp_lib_exchange_function != 201304L 43800c97cbcSMark de Wever # error "__cpp_lib_exchange_function should have the value 201304L in c++26" 43900c97cbcSMark de Wever # endif 44000c97cbcSMark de Wever 44100c97cbcSMark de Wever # ifndef __cpp_lib_forward_like 44200c97cbcSMark de Wever # error "__cpp_lib_forward_like should be defined in c++26" 44300c97cbcSMark de Wever # endif 44400c97cbcSMark de Wever # if __cpp_lib_forward_like != 202207L 44500c97cbcSMark de Wever # error "__cpp_lib_forward_like should have the value 202207L in c++26" 44600c97cbcSMark de Wever # endif 44700c97cbcSMark de Wever 44800c97cbcSMark de Wever # ifndef __cpp_lib_integer_comparison_functions 44900c97cbcSMark de Wever # error "__cpp_lib_integer_comparison_functions should be defined in c++26" 45000c97cbcSMark de Wever # endif 45100c97cbcSMark de Wever # if __cpp_lib_integer_comparison_functions != 202002L 45200c97cbcSMark de Wever # error "__cpp_lib_integer_comparison_functions should have the value 202002L in c++26" 45300c97cbcSMark de Wever # endif 45400c97cbcSMark de Wever 45500c97cbcSMark de Wever # ifndef __cpp_lib_integer_sequence 45600c97cbcSMark de Wever # error "__cpp_lib_integer_sequence should be defined in c++26" 45700c97cbcSMark de Wever # endif 45800c97cbcSMark de Wever # if __cpp_lib_integer_sequence != 201304L 45900c97cbcSMark de Wever # error "__cpp_lib_integer_sequence should have the value 201304L in c++26" 46000c97cbcSMark de Wever # endif 46100c97cbcSMark de Wever 46200c97cbcSMark de Wever # if !defined(_LIBCPP_VERSION) 46300c97cbcSMark de Wever # ifndef __cpp_lib_ranges_zip 46400c97cbcSMark de Wever # error "__cpp_lib_ranges_zip should be defined in c++26" 46500c97cbcSMark de Wever # endif 46600c97cbcSMark de Wever # if __cpp_lib_ranges_zip != 202110L 46700c97cbcSMark de Wever # error "__cpp_lib_ranges_zip should have the value 202110L in c++26" 46800c97cbcSMark de Wever # endif 46900c97cbcSMark de Wever # else // _LIBCPP_VERSION 47000c97cbcSMark de Wever # ifdef __cpp_lib_ranges_zip 47100c97cbcSMark de Wever # error "__cpp_lib_ranges_zip should not be defined because it is unimplemented in libc++!" 47200c97cbcSMark de Wever # endif 47300c97cbcSMark de Wever # endif 47400c97cbcSMark de Wever 47500c97cbcSMark de Wever # ifndef __cpp_lib_to_underlying 47600c97cbcSMark de Wever # error "__cpp_lib_to_underlying should be defined in c++26" 47700c97cbcSMark de Wever # endif 47800c97cbcSMark de Wever # if __cpp_lib_to_underlying != 202102L 47900c97cbcSMark de Wever # error "__cpp_lib_to_underlying should have the value 202102L in c++26" 48000c97cbcSMark de Wever # endif 48100c97cbcSMark de Wever 482f49ccca8SMark de Wever # if !defined(_LIBCPP_VERSION) 483f49ccca8SMark de Wever # ifndef __cpp_lib_tuple_like 484f49ccca8SMark de Wever # error "__cpp_lib_tuple_like should be defined in c++26" 485f49ccca8SMark de Wever # endif 486f49ccca8SMark de Wever # if __cpp_lib_tuple_like != 202311L 487f49ccca8SMark de Wever # error "__cpp_lib_tuple_like should have the value 202311L in c++26" 488f49ccca8SMark de Wever # endif 489f49ccca8SMark de Wever # else // _LIBCPP_VERSION 490f49ccca8SMark de Wever # ifdef __cpp_lib_tuple_like 491f49ccca8SMark de Wever # error "__cpp_lib_tuple_like should not be defined because it is unimplemented in libc++!" 492f49ccca8SMark de Wever # endif 493f49ccca8SMark de Wever # endif 494f49ccca8SMark de Wever 49500c97cbcSMark de Wever # ifndef __cpp_lib_tuples_by_type 49600c97cbcSMark de Wever # error "__cpp_lib_tuples_by_type should be defined in c++26" 49700c97cbcSMark de Wever # endif 49800c97cbcSMark de Wever # if __cpp_lib_tuples_by_type != 201304L 49900c97cbcSMark de Wever # error "__cpp_lib_tuples_by_type should have the value 201304L in c++26" 50000c97cbcSMark de Wever # endif 50100c97cbcSMark de Wever 50200c97cbcSMark de Wever # ifndef __cpp_lib_unreachable 50300c97cbcSMark de Wever # error "__cpp_lib_unreachable should be defined in c++26" 50400c97cbcSMark de Wever # endif 50500c97cbcSMark de Wever # if __cpp_lib_unreachable != 202202L 50600c97cbcSMark de Wever # error "__cpp_lib_unreachable should have the value 202202L in c++26" 50700c97cbcSMark de Wever # endif 50800c97cbcSMark de Wever 50900c97cbcSMark de Wever #endif // TEST_STD_VER > 23 5102c6217f2SLouis Dionne 511