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