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 // <string>
152c6217f2SLouis Dionne 
162c6217f2SLouis Dionne // Test the feature test macros defined by <string>
172c6217f2SLouis Dionne 
182c6217f2SLouis Dionne /*  Constant                                      Value
192c6217f2SLouis Dionne     __cpp_lib_allocator_traits_is_always_equal    201411L [C++17]
20*309aed30SNikolas Klauser     __cpp_lib_char8_t                             201907L [C++20]
21425620ccSNikolas Klauser     __cpp_lib_constexpr_string                    201907L [C++20]
222c6217f2SLouis Dionne     __cpp_lib_erase_if                            202002L [C++20]
232c6217f2SLouis Dionne     __cpp_lib_nonmember_container_access          201411L [C++17]
242c6217f2SLouis Dionne     __cpp_lib_ranges_to_container                 202202L [C++2b]
252c6217f2SLouis Dionne     __cpp_lib_starts_ends_with                    201711L [C++20]
262c6217f2SLouis Dionne     __cpp_lib_string_contains                     202011L [C++2b]
272c6217f2SLouis Dionne     __cpp_lib_string_resize_and_overwrite         202110L [C++2b]
282c6217f2SLouis Dionne     __cpp_lib_string_udls                         201304L [C++14]
292c6217f2SLouis Dionne     __cpp_lib_string_view                         201606L [C++17]
302c6217f2SLouis Dionne                                                   201803L [C++20]
312c6217f2SLouis Dionne */
322c6217f2SLouis Dionne 
332c6217f2SLouis Dionne #include <string>
342c6217f2SLouis Dionne #include "test_macros.h"
352c6217f2SLouis Dionne 
362c6217f2SLouis Dionne #if TEST_STD_VER < 14
372c6217f2SLouis Dionne 
382c6217f2SLouis Dionne # ifdef __cpp_lib_allocator_traits_is_always_equal
392c6217f2SLouis Dionne #   error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
402c6217f2SLouis Dionne # endif
412c6217f2SLouis Dionne 
422c6217f2SLouis Dionne # ifdef __cpp_lib_char8_t
432c6217f2SLouis Dionne #   error "__cpp_lib_char8_t should not be defined before c++20"
442c6217f2SLouis Dionne # endif
452c6217f2SLouis Dionne 
462c6217f2SLouis Dionne # ifdef __cpp_lib_constexpr_string
472c6217f2SLouis Dionne #   error "__cpp_lib_constexpr_string should not be defined before c++20"
482c6217f2SLouis Dionne # endif
492c6217f2SLouis Dionne 
502c6217f2SLouis Dionne # ifdef __cpp_lib_erase_if
512c6217f2SLouis Dionne #   error "__cpp_lib_erase_if should not be defined before c++20"
522c6217f2SLouis Dionne # endif
532c6217f2SLouis Dionne 
542c6217f2SLouis Dionne # ifdef __cpp_lib_nonmember_container_access
552c6217f2SLouis Dionne #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
562c6217f2SLouis Dionne # endif
572c6217f2SLouis Dionne 
582c6217f2SLouis Dionne # ifdef __cpp_lib_ranges_to_container
592c6217f2SLouis Dionne #   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
602c6217f2SLouis Dionne # endif
612c6217f2SLouis Dionne 
622c6217f2SLouis Dionne # ifdef __cpp_lib_starts_ends_with
632c6217f2SLouis Dionne #   error "__cpp_lib_starts_ends_with should not be defined before c++20"
642c6217f2SLouis Dionne # endif
652c6217f2SLouis Dionne 
662c6217f2SLouis Dionne # ifdef __cpp_lib_string_contains
672c6217f2SLouis Dionne #   error "__cpp_lib_string_contains should not be defined before c++2b"
682c6217f2SLouis Dionne # endif
692c6217f2SLouis Dionne 
702c6217f2SLouis Dionne # ifdef __cpp_lib_string_resize_and_overwrite
712c6217f2SLouis Dionne #   error "__cpp_lib_string_resize_and_overwrite should not be defined before c++2b"
722c6217f2SLouis Dionne # endif
732c6217f2SLouis Dionne 
742c6217f2SLouis Dionne # ifdef __cpp_lib_string_udls
752c6217f2SLouis Dionne #   error "__cpp_lib_string_udls should not be defined before c++14"
762c6217f2SLouis Dionne # endif
772c6217f2SLouis Dionne 
782c6217f2SLouis Dionne # ifdef __cpp_lib_string_view
792c6217f2SLouis Dionne #   error "__cpp_lib_string_view should not be defined before c++17"
802c6217f2SLouis Dionne # endif
812c6217f2SLouis Dionne 
822c6217f2SLouis Dionne #elif TEST_STD_VER == 14
832c6217f2SLouis Dionne 
842c6217f2SLouis Dionne # ifdef __cpp_lib_allocator_traits_is_always_equal
852c6217f2SLouis Dionne #   error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
862c6217f2SLouis Dionne # endif
872c6217f2SLouis Dionne 
882c6217f2SLouis Dionne # ifdef __cpp_lib_char8_t
892c6217f2SLouis Dionne #   error "__cpp_lib_char8_t should not be defined before c++20"
902c6217f2SLouis Dionne # endif
912c6217f2SLouis Dionne 
922c6217f2SLouis Dionne # ifdef __cpp_lib_constexpr_string
932c6217f2SLouis Dionne #   error "__cpp_lib_constexpr_string should not be defined before c++20"
942c6217f2SLouis Dionne # endif
952c6217f2SLouis Dionne 
962c6217f2SLouis Dionne # ifdef __cpp_lib_erase_if
972c6217f2SLouis Dionne #   error "__cpp_lib_erase_if should not be defined before c++20"
982c6217f2SLouis Dionne # endif
992c6217f2SLouis Dionne 
1002c6217f2SLouis Dionne # ifdef __cpp_lib_nonmember_container_access
1012c6217f2SLouis Dionne #   error "__cpp_lib_nonmember_container_access should not be defined before c++17"
1022c6217f2SLouis Dionne # endif
1032c6217f2SLouis Dionne 
1042c6217f2SLouis Dionne # ifdef __cpp_lib_ranges_to_container
1052c6217f2SLouis Dionne #   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
1062c6217f2SLouis Dionne # endif
1072c6217f2SLouis Dionne 
1082c6217f2SLouis Dionne # ifdef __cpp_lib_starts_ends_with
1092c6217f2SLouis Dionne #   error "__cpp_lib_starts_ends_with should not be defined before c++20"
1102c6217f2SLouis Dionne # endif
1112c6217f2SLouis Dionne 
1122c6217f2SLouis Dionne # ifdef __cpp_lib_string_contains
1132c6217f2SLouis Dionne #   error "__cpp_lib_string_contains should not be defined before c++2b"
1142c6217f2SLouis Dionne # endif
1152c6217f2SLouis Dionne 
1162c6217f2SLouis Dionne # ifdef __cpp_lib_string_resize_and_overwrite
1172c6217f2SLouis Dionne #   error "__cpp_lib_string_resize_and_overwrite should not be defined before c++2b"
1182c6217f2SLouis Dionne # endif
1192c6217f2SLouis Dionne 
1202c6217f2SLouis Dionne # ifndef __cpp_lib_string_udls
1212c6217f2SLouis Dionne #   error "__cpp_lib_string_udls should be defined in c++14"
1222c6217f2SLouis Dionne # endif
1232c6217f2SLouis Dionne # if __cpp_lib_string_udls != 201304L
1242c6217f2SLouis Dionne #   error "__cpp_lib_string_udls should have the value 201304L in c++14"
1252c6217f2SLouis Dionne # endif
1262c6217f2SLouis Dionne 
1272c6217f2SLouis Dionne # ifdef __cpp_lib_string_view
1282c6217f2SLouis Dionne #   error "__cpp_lib_string_view should not be defined before c++17"
1292c6217f2SLouis Dionne # endif
1302c6217f2SLouis Dionne 
1312c6217f2SLouis Dionne #elif TEST_STD_VER == 17
1322c6217f2SLouis Dionne 
1332c6217f2SLouis Dionne # ifndef __cpp_lib_allocator_traits_is_always_equal
1342c6217f2SLouis Dionne #   error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++17"
1352c6217f2SLouis Dionne # endif
1362c6217f2SLouis Dionne # if __cpp_lib_allocator_traits_is_always_equal != 201411L
1372c6217f2SLouis Dionne #   error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++17"
1382c6217f2SLouis Dionne # endif
1392c6217f2SLouis Dionne 
1402c6217f2SLouis Dionne # ifdef __cpp_lib_char8_t
1412c6217f2SLouis Dionne #   error "__cpp_lib_char8_t should not be defined before c++20"
1422c6217f2SLouis Dionne # endif
1432c6217f2SLouis Dionne 
1442c6217f2SLouis Dionne # ifdef __cpp_lib_constexpr_string
1452c6217f2SLouis Dionne #   error "__cpp_lib_constexpr_string should not be defined before c++20"
1462c6217f2SLouis Dionne # endif
1472c6217f2SLouis Dionne 
1482c6217f2SLouis Dionne # ifdef __cpp_lib_erase_if
1492c6217f2SLouis Dionne #   error "__cpp_lib_erase_if should not be defined before c++20"
1502c6217f2SLouis Dionne # endif
1512c6217f2SLouis Dionne 
1522c6217f2SLouis Dionne # ifndef __cpp_lib_nonmember_container_access
1532c6217f2SLouis Dionne #   error "__cpp_lib_nonmember_container_access should be defined in c++17"
1542c6217f2SLouis Dionne # endif
1552c6217f2SLouis Dionne # if __cpp_lib_nonmember_container_access != 201411L
1562c6217f2SLouis Dionne #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++17"
1572c6217f2SLouis Dionne # endif
1582c6217f2SLouis Dionne 
1592c6217f2SLouis Dionne # ifdef __cpp_lib_ranges_to_container
1602c6217f2SLouis Dionne #   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
1612c6217f2SLouis Dionne # endif
1622c6217f2SLouis Dionne 
1632c6217f2SLouis Dionne # ifdef __cpp_lib_starts_ends_with
1642c6217f2SLouis Dionne #   error "__cpp_lib_starts_ends_with should not be defined before c++20"
1652c6217f2SLouis Dionne # endif
1662c6217f2SLouis Dionne 
1672c6217f2SLouis Dionne # ifdef __cpp_lib_string_contains
1682c6217f2SLouis Dionne #   error "__cpp_lib_string_contains should not be defined before c++2b"
1692c6217f2SLouis Dionne # endif
1702c6217f2SLouis Dionne 
1712c6217f2SLouis Dionne # ifdef __cpp_lib_string_resize_and_overwrite
1722c6217f2SLouis Dionne #   error "__cpp_lib_string_resize_and_overwrite should not be defined before c++2b"
1732c6217f2SLouis Dionne # endif
1742c6217f2SLouis Dionne 
1752c6217f2SLouis Dionne # ifndef __cpp_lib_string_udls
1762c6217f2SLouis Dionne #   error "__cpp_lib_string_udls should be defined in c++17"
1772c6217f2SLouis Dionne # endif
1782c6217f2SLouis Dionne # if __cpp_lib_string_udls != 201304L
1792c6217f2SLouis Dionne #   error "__cpp_lib_string_udls should have the value 201304L in c++17"
1802c6217f2SLouis Dionne # endif
1812c6217f2SLouis Dionne 
1822c6217f2SLouis Dionne # ifndef __cpp_lib_string_view
1832c6217f2SLouis Dionne #   error "__cpp_lib_string_view should be defined in c++17"
1842c6217f2SLouis Dionne # endif
1852c6217f2SLouis Dionne # if __cpp_lib_string_view != 201606L
1862c6217f2SLouis Dionne #   error "__cpp_lib_string_view should have the value 201606L in c++17"
1872c6217f2SLouis Dionne # endif
1882c6217f2SLouis Dionne 
1892c6217f2SLouis Dionne #elif TEST_STD_VER == 20
1902c6217f2SLouis Dionne 
1912c6217f2SLouis Dionne # ifndef __cpp_lib_allocator_traits_is_always_equal
1922c6217f2SLouis Dionne #   error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++20"
1932c6217f2SLouis Dionne # endif
1942c6217f2SLouis Dionne # if __cpp_lib_allocator_traits_is_always_equal != 201411L
1952c6217f2SLouis Dionne #   error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++20"
1962c6217f2SLouis Dionne # endif
1972c6217f2SLouis Dionne 
1982c6217f2SLouis Dionne # if defined(__cpp_char8_t)
1992c6217f2SLouis Dionne #   ifndef __cpp_lib_char8_t
2002c6217f2SLouis Dionne #     error "__cpp_lib_char8_t should be defined in c++20"
2012c6217f2SLouis Dionne #   endif
202*309aed30SNikolas Klauser #   if __cpp_lib_char8_t != 201907L
203*309aed30SNikolas Klauser #     error "__cpp_lib_char8_t should have the value 201907L in c++20"
2042c6217f2SLouis Dionne #   endif
2052c6217f2SLouis Dionne # else
2062c6217f2SLouis Dionne #   ifdef __cpp_lib_char8_t
2072c6217f2SLouis Dionne #     error "__cpp_lib_char8_t should not be defined when defined(__cpp_char8_t) is not defined!"
2082c6217f2SLouis Dionne #   endif
2092c6217f2SLouis Dionne # endif
2102c6217f2SLouis Dionne 
2112c6217f2SLouis Dionne # ifndef __cpp_lib_constexpr_string
2122c6217f2SLouis Dionne #   error "__cpp_lib_constexpr_string should be defined in c++20"
2132c6217f2SLouis Dionne # endif
214425620ccSNikolas Klauser # if __cpp_lib_constexpr_string != 201907L
215425620ccSNikolas Klauser #   error "__cpp_lib_constexpr_string should have the value 201907L in c++20"
2162c6217f2SLouis Dionne # endif
2172c6217f2SLouis Dionne 
2182c6217f2SLouis Dionne # ifndef __cpp_lib_erase_if
2192c6217f2SLouis Dionne #   error "__cpp_lib_erase_if should be defined in c++20"
2202c6217f2SLouis Dionne # endif
2212c6217f2SLouis Dionne # if __cpp_lib_erase_if != 202002L
2222c6217f2SLouis Dionne #   error "__cpp_lib_erase_if should have the value 202002L in c++20"
2232c6217f2SLouis Dionne # endif
2242c6217f2SLouis Dionne 
2252c6217f2SLouis Dionne # ifndef __cpp_lib_nonmember_container_access
2262c6217f2SLouis Dionne #   error "__cpp_lib_nonmember_container_access should be defined in c++20"
2272c6217f2SLouis Dionne # endif
2282c6217f2SLouis Dionne # if __cpp_lib_nonmember_container_access != 201411L
2292c6217f2SLouis Dionne #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++20"
2302c6217f2SLouis Dionne # endif
2312c6217f2SLouis Dionne 
2322c6217f2SLouis Dionne # ifdef __cpp_lib_ranges_to_container
2332c6217f2SLouis Dionne #   error "__cpp_lib_ranges_to_container should not be defined before c++2b"
2342c6217f2SLouis Dionne # endif
2352c6217f2SLouis Dionne 
2362c6217f2SLouis Dionne # ifndef __cpp_lib_starts_ends_with
2372c6217f2SLouis Dionne #   error "__cpp_lib_starts_ends_with should be defined in c++20"
2382c6217f2SLouis Dionne # endif
2392c6217f2SLouis Dionne # if __cpp_lib_starts_ends_with != 201711L
2402c6217f2SLouis Dionne #   error "__cpp_lib_starts_ends_with should have the value 201711L in c++20"
2412c6217f2SLouis Dionne # endif
2422c6217f2SLouis Dionne 
2432c6217f2SLouis Dionne # ifdef __cpp_lib_string_contains
2442c6217f2SLouis Dionne #   error "__cpp_lib_string_contains should not be defined before c++2b"
2452c6217f2SLouis Dionne # endif
2462c6217f2SLouis Dionne 
2472c6217f2SLouis Dionne # ifdef __cpp_lib_string_resize_and_overwrite
2482c6217f2SLouis Dionne #   error "__cpp_lib_string_resize_and_overwrite should not be defined before c++2b"
2492c6217f2SLouis Dionne # endif
2502c6217f2SLouis Dionne 
2512c6217f2SLouis Dionne # ifndef __cpp_lib_string_udls
2522c6217f2SLouis Dionne #   error "__cpp_lib_string_udls should be defined in c++20"
2532c6217f2SLouis Dionne # endif
2542c6217f2SLouis Dionne # if __cpp_lib_string_udls != 201304L
2552c6217f2SLouis Dionne #   error "__cpp_lib_string_udls should have the value 201304L in c++20"
2562c6217f2SLouis Dionne # endif
2572c6217f2SLouis Dionne 
2582c6217f2SLouis Dionne # ifndef __cpp_lib_string_view
2592c6217f2SLouis Dionne #   error "__cpp_lib_string_view should be defined in c++20"
2602c6217f2SLouis Dionne # endif
2612c6217f2SLouis Dionne # if __cpp_lib_string_view != 201803L
2622c6217f2SLouis Dionne #   error "__cpp_lib_string_view should have the value 201803L in c++20"
2632c6217f2SLouis Dionne # endif
2642c6217f2SLouis Dionne 
2652c6217f2SLouis Dionne #elif TEST_STD_VER > 20
2662c6217f2SLouis Dionne 
2672c6217f2SLouis Dionne # ifndef __cpp_lib_allocator_traits_is_always_equal
2682c6217f2SLouis Dionne #   error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++2b"
2692c6217f2SLouis Dionne # endif
2702c6217f2SLouis Dionne # if __cpp_lib_allocator_traits_is_always_equal != 201411L
2712c6217f2SLouis Dionne #   error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++2b"
2722c6217f2SLouis Dionne # endif
2732c6217f2SLouis Dionne 
2742c6217f2SLouis Dionne # if defined(__cpp_char8_t)
2752c6217f2SLouis Dionne #   ifndef __cpp_lib_char8_t
2762c6217f2SLouis Dionne #     error "__cpp_lib_char8_t should be defined in c++2b"
2772c6217f2SLouis Dionne #   endif
278*309aed30SNikolas Klauser #   if __cpp_lib_char8_t != 201907L
279*309aed30SNikolas Klauser #     error "__cpp_lib_char8_t should have the value 201907L in c++2b"
2802c6217f2SLouis Dionne #   endif
2812c6217f2SLouis Dionne # else
2822c6217f2SLouis Dionne #   ifdef __cpp_lib_char8_t
2832c6217f2SLouis Dionne #     error "__cpp_lib_char8_t should not be defined when defined(__cpp_char8_t) is not defined!"
2842c6217f2SLouis Dionne #   endif
2852c6217f2SLouis Dionne # endif
2862c6217f2SLouis Dionne 
2872c6217f2SLouis Dionne # ifndef __cpp_lib_constexpr_string
2882c6217f2SLouis Dionne #   error "__cpp_lib_constexpr_string should be defined in c++2b"
2892c6217f2SLouis Dionne # endif
290425620ccSNikolas Klauser # if __cpp_lib_constexpr_string != 201907L
291425620ccSNikolas Klauser #   error "__cpp_lib_constexpr_string should have the value 201907L in c++2b"
2922c6217f2SLouis Dionne # endif
2932c6217f2SLouis Dionne 
2942c6217f2SLouis Dionne # ifndef __cpp_lib_erase_if
2952c6217f2SLouis Dionne #   error "__cpp_lib_erase_if should be defined in c++2b"
2962c6217f2SLouis Dionne # endif
2972c6217f2SLouis Dionne # if __cpp_lib_erase_if != 202002L
2982c6217f2SLouis Dionne #   error "__cpp_lib_erase_if should have the value 202002L in c++2b"
2992c6217f2SLouis Dionne # endif
3002c6217f2SLouis Dionne 
3012c6217f2SLouis Dionne # ifndef __cpp_lib_nonmember_container_access
3022c6217f2SLouis Dionne #   error "__cpp_lib_nonmember_container_access should be defined in c++2b"
3032c6217f2SLouis Dionne # endif
3042c6217f2SLouis Dionne # if __cpp_lib_nonmember_container_access != 201411L
3052c6217f2SLouis Dionne #   error "__cpp_lib_nonmember_container_access should have the value 201411L in c++2b"
3062c6217f2SLouis Dionne # endif
3072c6217f2SLouis Dionne 
3082c6217f2SLouis Dionne # if !defined(_LIBCPP_VERSION)
3092c6217f2SLouis Dionne #   ifndef __cpp_lib_ranges_to_container
3102c6217f2SLouis Dionne #     error "__cpp_lib_ranges_to_container should be defined in c++2b"
3112c6217f2SLouis Dionne #   endif
3122c6217f2SLouis Dionne #   if __cpp_lib_ranges_to_container != 202202L
3132c6217f2SLouis Dionne #     error "__cpp_lib_ranges_to_container should have the value 202202L in c++2b"
3142c6217f2SLouis Dionne #   endif
3152c6217f2SLouis Dionne # else // _LIBCPP_VERSION
3162c6217f2SLouis Dionne #   ifdef __cpp_lib_ranges_to_container
3172c6217f2SLouis Dionne #     error "__cpp_lib_ranges_to_container should not be defined because it is unimplemented in libc++!"
3182c6217f2SLouis Dionne #   endif
3192c6217f2SLouis Dionne # endif
3202c6217f2SLouis Dionne 
3212c6217f2SLouis Dionne # ifndef __cpp_lib_starts_ends_with
3222c6217f2SLouis Dionne #   error "__cpp_lib_starts_ends_with should be defined in c++2b"
3232c6217f2SLouis Dionne # endif
3242c6217f2SLouis Dionne # if __cpp_lib_starts_ends_with != 201711L
3252c6217f2SLouis Dionne #   error "__cpp_lib_starts_ends_with should have the value 201711L in c++2b"
3262c6217f2SLouis Dionne # endif
3272c6217f2SLouis Dionne 
3282c6217f2SLouis Dionne # ifndef __cpp_lib_string_contains
3292c6217f2SLouis Dionne #   error "__cpp_lib_string_contains should be defined in c++2b"
3302c6217f2SLouis Dionne # endif
3312c6217f2SLouis Dionne # if __cpp_lib_string_contains != 202011L
3322c6217f2SLouis Dionne #   error "__cpp_lib_string_contains should have the value 202011L in c++2b"
3332c6217f2SLouis Dionne # endif
3342c6217f2SLouis Dionne 
3352c6217f2SLouis Dionne # ifndef __cpp_lib_string_resize_and_overwrite
3362c6217f2SLouis Dionne #   error "__cpp_lib_string_resize_and_overwrite should be defined in c++2b"
3372c6217f2SLouis Dionne # endif
3382c6217f2SLouis Dionne # if __cpp_lib_string_resize_and_overwrite != 202110L
3392c6217f2SLouis Dionne #   error "__cpp_lib_string_resize_and_overwrite should have the value 202110L in c++2b"
3402c6217f2SLouis Dionne # endif
3412c6217f2SLouis Dionne 
3422c6217f2SLouis Dionne # ifndef __cpp_lib_string_udls
3432c6217f2SLouis Dionne #   error "__cpp_lib_string_udls should be defined in c++2b"
3442c6217f2SLouis Dionne # endif
3452c6217f2SLouis Dionne # if __cpp_lib_string_udls != 201304L
3462c6217f2SLouis Dionne #   error "__cpp_lib_string_udls should have the value 201304L in c++2b"
3472c6217f2SLouis Dionne # endif
3482c6217f2SLouis Dionne 
3492c6217f2SLouis Dionne # ifndef __cpp_lib_string_view
3502c6217f2SLouis Dionne #   error "__cpp_lib_string_view should be defined in c++2b"
3512c6217f2SLouis Dionne # endif
3522c6217f2SLouis Dionne # if __cpp_lib_string_view != 201803L
3532c6217f2SLouis Dionne #   error "__cpp_lib_string_view should have the value 201803L in c++2b"
3542c6217f2SLouis Dionne # endif
3552c6217f2SLouis Dionne 
3562c6217f2SLouis Dionne #endif // TEST_STD_VER > 20
3572c6217f2SLouis Dionne 
358