Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
// Test the feature test macros defined by <stack>

/* Constant Value
__cpp_lib_adaptor_iterator_pair_constructor 202106L [C++2b]
__cpp_lib_ranges_to_container 202202L [C++2b]
__cpp_lib_adaptor_iterator_pair_constructor 202106L [C++23]
__cpp_lib_ranges_to_container 202202L [C++23]
*/

#include <stack>
Expand All @@ -26,58 +26,58 @@
#if TEST_STD_VER < 14

# ifdef __cpp_lib_adaptor_iterator_pair_constructor
# error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++2b"
# error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++23"
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

#elif TEST_STD_VER == 14

# ifdef __cpp_lib_adaptor_iterator_pair_constructor
# error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++2b"
# error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++23"
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

#elif TEST_STD_VER == 17

# ifdef __cpp_lib_adaptor_iterator_pair_constructor
# error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++2b"
# error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++23"
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

#elif TEST_STD_VER == 20

# ifdef __cpp_lib_adaptor_iterator_pair_constructor
# error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++2b"
# error "__cpp_lib_adaptor_iterator_pair_constructor should not be defined before c++23"
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

#elif TEST_STD_VER > 20

# ifndef __cpp_lib_adaptor_iterator_pair_constructor
# error "__cpp_lib_adaptor_iterator_pair_constructor should be defined in c++2b"
# error "__cpp_lib_adaptor_iterator_pair_constructor should be defined in c++23"
# endif
# if __cpp_lib_adaptor_iterator_pair_constructor != 202106L
# error "__cpp_lib_adaptor_iterator_pair_constructor should have the value 202106L in c++2b"
# error "__cpp_lib_adaptor_iterator_pair_constructor should have the value 202106L in c++23"
# endif

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should be defined in c++2b"
# error "__cpp_lib_ranges_to_container should be defined in c++23"
# endif
# if __cpp_lib_ranges_to_container != 202202L
# error "__cpp_lib_ranges_to_container should have the value 202202L in c++2b"
# error "__cpp_lib_ranges_to_container should have the value 202202L in c++23"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_ranges_to_container
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
// Test the feature test macros defined by <stdatomic.h>

/* Constant Value
__cpp_lib_stdatomic_h 202011L [C++2b]
__cpp_lib_stdatomic_h 202011L [C++23]
*/

#include <stdatomic.h>
Expand All @@ -27,34 +27,34 @@
#if TEST_STD_VER < 14

# ifdef __cpp_lib_stdatomic_h
# error "__cpp_lib_stdatomic_h should not be defined before c++2b"
# error "__cpp_lib_stdatomic_h should not be defined before c++23"
# endif

#elif TEST_STD_VER == 14

# ifdef __cpp_lib_stdatomic_h
# error "__cpp_lib_stdatomic_h should not be defined before c++2b"
# error "__cpp_lib_stdatomic_h should not be defined before c++23"
# endif

#elif TEST_STD_VER == 17

# ifdef __cpp_lib_stdatomic_h
# error "__cpp_lib_stdatomic_h should not be defined before c++2b"
# error "__cpp_lib_stdatomic_h should not be defined before c++23"
# endif

#elif TEST_STD_VER == 20

# ifdef __cpp_lib_stdatomic_h
# error "__cpp_lib_stdatomic_h should not be defined before c++2b"
# error "__cpp_lib_stdatomic_h should not be defined before c++23"
# endif

#elif TEST_STD_VER > 20

# ifndef __cpp_lib_stdatomic_h
# error "__cpp_lib_stdatomic_h should be defined in c++2b"
# error "__cpp_lib_stdatomic_h should be defined in c++23"
# endif
# if __cpp_lib_stdatomic_h != 202011L
# error "__cpp_lib_stdatomic_h should have the value 202011L in c++2b"
# error "__cpp_lib_stdatomic_h should have the value 202011L in c++23"
# endif

#endif // TEST_STD_VER > 20
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@
__cpp_lib_constexpr_string 201907L [C++20]
__cpp_lib_erase_if 202002L [C++20]
__cpp_lib_nonmember_container_access 201411L [C++17]
__cpp_lib_ranges_to_container 202202L [C++2b]
__cpp_lib_ranges_to_container 202202L [C++23]
__cpp_lib_starts_ends_with 201711L [C++20]
__cpp_lib_string_contains 202011L [C++2b]
__cpp_lib_string_resize_and_overwrite 202110L [C++2b]
__cpp_lib_string_contains 202011L [C++23]
__cpp_lib_string_resize_and_overwrite 202110L [C++23]
__cpp_lib_string_udls 201304L [C++14]
__cpp_lib_string_view 201606L [C++17]
201803L [C++20]
Expand Down Expand Up @@ -56,19 +56,19 @@
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

# ifdef __cpp_lib_starts_ends_with
# error "__cpp_lib_starts_ends_with should not be defined before c++20"
# endif

# ifdef __cpp_lib_string_contains
# error "__cpp_lib_string_contains should not be defined before c++2b"
# error "__cpp_lib_string_contains should not be defined before c++23"
# endif

# ifdef __cpp_lib_string_resize_and_overwrite
# error "__cpp_lib_string_resize_and_overwrite should not be defined before c++2b"
# error "__cpp_lib_string_resize_and_overwrite should not be defined before c++23"
# endif

# ifdef __cpp_lib_string_udls
Expand Down Expand Up @@ -102,19 +102,19 @@
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

# ifdef __cpp_lib_starts_ends_with
# error "__cpp_lib_starts_ends_with should not be defined before c++20"
# endif

# ifdef __cpp_lib_string_contains
# error "__cpp_lib_string_contains should not be defined before c++2b"
# error "__cpp_lib_string_contains should not be defined before c++23"
# endif

# ifdef __cpp_lib_string_resize_and_overwrite
# error "__cpp_lib_string_resize_and_overwrite should not be defined before c++2b"
# error "__cpp_lib_string_resize_and_overwrite should not be defined before c++23"
# endif

# ifndef __cpp_lib_string_udls
Expand Down Expand Up @@ -157,19 +157,19 @@
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

# ifdef __cpp_lib_starts_ends_with
# error "__cpp_lib_starts_ends_with should not be defined before c++20"
# endif

# ifdef __cpp_lib_string_contains
# error "__cpp_lib_string_contains should not be defined before c++2b"
# error "__cpp_lib_string_contains should not be defined before c++23"
# endif

# ifdef __cpp_lib_string_resize_and_overwrite
# error "__cpp_lib_string_resize_and_overwrite should not be defined before c++2b"
# error "__cpp_lib_string_resize_and_overwrite should not be defined before c++23"
# endif

# ifndef __cpp_lib_string_udls
Expand Down Expand Up @@ -230,7 +230,7 @@
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

# ifndef __cpp_lib_starts_ends_with
Expand All @@ -241,11 +241,11 @@
# endif

# ifdef __cpp_lib_string_contains
# error "__cpp_lib_string_contains should not be defined before c++2b"
# error "__cpp_lib_string_contains should not be defined before c++23"
# endif

# ifdef __cpp_lib_string_resize_and_overwrite
# error "__cpp_lib_string_resize_and_overwrite should not be defined before c++2b"
# error "__cpp_lib_string_resize_and_overwrite should not be defined before c++23"
# endif

# ifndef __cpp_lib_string_udls
Expand All @@ -265,18 +265,18 @@
#elif TEST_STD_VER > 20

# ifndef __cpp_lib_allocator_traits_is_always_equal
# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++2b"
# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23"
# endif
# if __cpp_lib_allocator_traits_is_always_equal != 201411L
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++2b"
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++23"
# endif

# if defined(__cpp_char8_t)
# ifndef __cpp_lib_char8_t
# error "__cpp_lib_char8_t should be defined in c++2b"
# error "__cpp_lib_char8_t should be defined in c++23"
# endif
# if __cpp_lib_char8_t != 201907L
# error "__cpp_lib_char8_t should have the value 201907L in c++2b"
# error "__cpp_lib_char8_t should have the value 201907L in c++23"
# endif
# else
# ifdef __cpp_lib_char8_t
Expand All @@ -285,32 +285,32 @@
# endif

# ifndef __cpp_lib_constexpr_string
# error "__cpp_lib_constexpr_string should be defined in c++2b"
# error "__cpp_lib_constexpr_string should be defined in c++23"
# endif
# if __cpp_lib_constexpr_string != 201907L
# error "__cpp_lib_constexpr_string should have the value 201907L in c++2b"
# error "__cpp_lib_constexpr_string should have the value 201907L in c++23"
# endif

# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++2b"
# error "__cpp_lib_erase_if should be defined in c++23"
# endif
# if __cpp_lib_erase_if != 202002L
# error "__cpp_lib_erase_if should have the value 202002L in c++2b"
# error "__cpp_lib_erase_if should have the value 202002L in c++23"
# endif

# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++2b"
# error "__cpp_lib_nonmember_container_access should be defined in c++23"
# endif
# if __cpp_lib_nonmember_container_access != 201411L
# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++2b"
# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++23"
# endif

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should be defined in c++2b"
# error "__cpp_lib_ranges_to_container should be defined in c++23"
# endif
# if __cpp_lib_ranges_to_container != 202202L
# error "__cpp_lib_ranges_to_container should have the value 202202L in c++2b"
# error "__cpp_lib_ranges_to_container should have the value 202202L in c++23"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_ranges_to_container
Expand All @@ -319,38 +319,38 @@
# endif

# ifndef __cpp_lib_starts_ends_with
# error "__cpp_lib_starts_ends_with should be defined in c++2b"
# error "__cpp_lib_starts_ends_with should be defined in c++23"
# endif
# if __cpp_lib_starts_ends_with != 201711L
# error "__cpp_lib_starts_ends_with should have the value 201711L in c++2b"
# error "__cpp_lib_starts_ends_with should have the value 201711L in c++23"
# endif

# ifndef __cpp_lib_string_contains
# error "__cpp_lib_string_contains should be defined in c++2b"
# error "__cpp_lib_string_contains should be defined in c++23"
# endif
# if __cpp_lib_string_contains != 202011L
# error "__cpp_lib_string_contains should have the value 202011L in c++2b"
# error "__cpp_lib_string_contains should have the value 202011L in c++23"
# endif

# ifndef __cpp_lib_string_resize_and_overwrite
# error "__cpp_lib_string_resize_and_overwrite should be defined in c++2b"
# error "__cpp_lib_string_resize_and_overwrite should be defined in c++23"
# endif
# if __cpp_lib_string_resize_and_overwrite != 202110L
# error "__cpp_lib_string_resize_and_overwrite should have the value 202110L in c++2b"
# error "__cpp_lib_string_resize_and_overwrite should have the value 202110L in c++23"
# endif

# ifndef __cpp_lib_string_udls
# error "__cpp_lib_string_udls should be defined in c++2b"
# error "__cpp_lib_string_udls should be defined in c++23"
# endif
# if __cpp_lib_string_udls != 201304L
# error "__cpp_lib_string_udls should have the value 201304L in c++2b"
# error "__cpp_lib_string_udls should have the value 201304L in c++23"
# endif

# ifndef __cpp_lib_string_view
# error "__cpp_lib_string_view should be defined in c++2b"
# error "__cpp_lib_string_view should be defined in c++23"
# endif
# if __cpp_lib_string_view != 201803L
# error "__cpp_lib_string_view should have the value 201803L in c++2b"
# error "__cpp_lib_string_view should have the value 201803L in c++23"
# endif

#endif // TEST_STD_VER > 20
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
__cpp_lib_char8_t 201907L [C++20]
__cpp_lib_constexpr_string_view 201811L [C++20]
__cpp_lib_starts_ends_with 201711L [C++20]
__cpp_lib_string_contains 202011L [C++2b]
__cpp_lib_string_contains 202011L [C++23]
__cpp_lib_string_view 201606L [C++17]
201803L [C++20]
*/
Expand All @@ -42,7 +42,7 @@
# endif

# ifdef __cpp_lib_string_contains
# error "__cpp_lib_string_contains should not be defined before c++2b"
# error "__cpp_lib_string_contains should not be defined before c++23"
# endif

# ifdef __cpp_lib_string_view
Expand All @@ -64,7 +64,7 @@
# endif

# ifdef __cpp_lib_string_contains
# error "__cpp_lib_string_contains should not be defined before c++2b"
# error "__cpp_lib_string_contains should not be defined before c++23"
# endif

# ifdef __cpp_lib_string_view
Expand All @@ -86,7 +86,7 @@
# endif

# ifdef __cpp_lib_string_contains
# error "__cpp_lib_string_contains should not be defined before c++2b"
# error "__cpp_lib_string_contains should not be defined before c++23"
# endif

# ifndef __cpp_lib_string_view
Expand Down Expand Up @@ -126,7 +126,7 @@
# endif

# ifdef __cpp_lib_string_contains
# error "__cpp_lib_string_contains should not be defined before c++2b"
# error "__cpp_lib_string_contains should not be defined before c++23"
# endif

# ifndef __cpp_lib_string_view
Expand All @@ -140,10 +140,10 @@

# if defined(__cpp_char8_t)
# ifndef __cpp_lib_char8_t
# error "__cpp_lib_char8_t should be defined in c++2b"
# error "__cpp_lib_char8_t should be defined in c++23"
# endif
# if __cpp_lib_char8_t != 201907L
# error "__cpp_lib_char8_t should have the value 201907L in c++2b"
# error "__cpp_lib_char8_t should have the value 201907L in c++23"
# endif
# else
# ifdef __cpp_lib_char8_t
Expand All @@ -152,31 +152,31 @@
# endif

# ifndef __cpp_lib_constexpr_string_view
# error "__cpp_lib_constexpr_string_view should be defined in c++2b"
# error "__cpp_lib_constexpr_string_view should be defined in c++23"
# endif
# if __cpp_lib_constexpr_string_view != 201811L
# error "__cpp_lib_constexpr_string_view should have the value 201811L in c++2b"
# error "__cpp_lib_constexpr_string_view should have the value 201811L in c++23"
# endif

# ifndef __cpp_lib_starts_ends_with
# error "__cpp_lib_starts_ends_with should be defined in c++2b"
# error "__cpp_lib_starts_ends_with should be defined in c++23"
# endif
# if __cpp_lib_starts_ends_with != 201711L
# error "__cpp_lib_starts_ends_with should have the value 201711L in c++2b"
# error "__cpp_lib_starts_ends_with should have the value 201711L in c++23"
# endif

# ifndef __cpp_lib_string_contains
# error "__cpp_lib_string_contains should be defined in c++2b"
# error "__cpp_lib_string_contains should be defined in c++23"
# endif
# if __cpp_lib_string_contains != 202011L
# error "__cpp_lib_string_contains should have the value 202011L in c++2b"
# error "__cpp_lib_string_contains should have the value 202011L in c++23"
# endif

# ifndef __cpp_lib_string_view
# error "__cpp_lib_string_view should be defined in c++2b"
# error "__cpp_lib_string_view should be defined in c++23"
# endif
# if __cpp_lib_string_view != 201803L
# error "__cpp_lib_string_view should have the value 201803L in c++2b"
# error "__cpp_lib_string_view should have the value 201803L in c++23"
# endif

#endif // TEST_STD_VER > 20
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
// Test the feature test macros defined by <thread>

/* Constant Value
__cpp_lib_formatters 202302L [C++2b]
__cpp_lib_formatters 202302L [C++23]
__cpp_lib_jthread 201911L [C++20]
*/

Expand All @@ -28,7 +28,7 @@
#if TEST_STD_VER < 14

# ifdef __cpp_lib_formatters
# error "__cpp_lib_formatters should not be defined before c++2b"
# error "__cpp_lib_formatters should not be defined before c++23"
# endif

# ifdef __cpp_lib_jthread
Expand All @@ -38,7 +38,7 @@
#elif TEST_STD_VER == 14

# ifdef __cpp_lib_formatters
# error "__cpp_lib_formatters should not be defined before c++2b"
# error "__cpp_lib_formatters should not be defined before c++23"
# endif

# ifdef __cpp_lib_jthread
Expand All @@ -48,7 +48,7 @@
#elif TEST_STD_VER == 17

# ifdef __cpp_lib_formatters
# error "__cpp_lib_formatters should not be defined before c++2b"
# error "__cpp_lib_formatters should not be defined before c++23"
# endif

# ifdef __cpp_lib_jthread
Expand All @@ -58,7 +58,7 @@
#elif TEST_STD_VER == 20

# ifdef __cpp_lib_formatters
# error "__cpp_lib_formatters should not be defined before c++2b"
# error "__cpp_lib_formatters should not be defined before c++23"
# endif

# if !defined(_LIBCPP_VERSION)
Expand All @@ -78,10 +78,10 @@

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_formatters
# error "__cpp_lib_formatters should be defined in c++2b"
# error "__cpp_lib_formatters should be defined in c++23"
# endif
# if __cpp_lib_formatters != 202302L
# error "__cpp_lib_formatters should have the value 202302L in c++2b"
# error "__cpp_lib_formatters should have the value 202302L in c++23"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_formatters
Expand All @@ -91,10 +91,10 @@

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_jthread
# error "__cpp_lib_jthread should be defined in c++2b"
# error "__cpp_lib_jthread should be defined in c++23"
# endif
# if __cpp_lib_jthread != 201911L
# error "__cpp_lib_jthread should have the value 201911L in c++2b"
# error "__cpp_lib_jthread should have the value 201911L in c++23"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_jthread
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
__cpp_lib_apply 201603L [C++17]
__cpp_lib_constexpr_tuple 201811L [C++20]
__cpp_lib_make_from_tuple 201606L [C++17]
__cpp_lib_ranges_zip 202110L [C++2b]
__cpp_lib_ranges_zip 202110L [C++23]
__cpp_lib_tuple_element_t 201402L [C++14]
__cpp_lib_tuples_by_type 201304L [C++14]
*/
Expand All @@ -42,7 +42,7 @@
# endif

# ifdef __cpp_lib_ranges_zip
# error "__cpp_lib_ranges_zip should not be defined before c++2b"
# error "__cpp_lib_ranges_zip should not be defined before c++23"
# endif

# ifdef __cpp_lib_tuple_element_t
Expand All @@ -68,7 +68,7 @@
# endif

# ifdef __cpp_lib_ranges_zip
# error "__cpp_lib_ranges_zip should not be defined before c++2b"
# error "__cpp_lib_ranges_zip should not be defined before c++23"
# endif

# ifndef __cpp_lib_tuple_element_t
Expand Down Expand Up @@ -106,7 +106,7 @@
# endif

# ifdef __cpp_lib_ranges_zip
# error "__cpp_lib_ranges_zip should not be defined before c++2b"
# error "__cpp_lib_ranges_zip should not be defined before c++23"
# endif

# ifndef __cpp_lib_tuple_element_t
Expand Down Expand Up @@ -147,7 +147,7 @@
# endif

# ifdef __cpp_lib_ranges_zip
# error "__cpp_lib_ranges_zip should not be defined before c++2b"
# error "__cpp_lib_ranges_zip should not be defined before c++23"
# endif

# ifndef __cpp_lib_tuple_element_t
Expand All @@ -167,32 +167,32 @@
#elif TEST_STD_VER > 20

# ifndef __cpp_lib_apply
# error "__cpp_lib_apply should be defined in c++2b"
# error "__cpp_lib_apply should be defined in c++23"
# endif
# if __cpp_lib_apply != 201603L
# error "__cpp_lib_apply should have the value 201603L in c++2b"
# error "__cpp_lib_apply should have the value 201603L in c++23"
# endif

# ifndef __cpp_lib_constexpr_tuple
# error "__cpp_lib_constexpr_tuple should be defined in c++2b"
# error "__cpp_lib_constexpr_tuple should be defined in c++23"
# endif
# if __cpp_lib_constexpr_tuple != 201811L
# error "__cpp_lib_constexpr_tuple should have the value 201811L in c++2b"
# error "__cpp_lib_constexpr_tuple should have the value 201811L in c++23"
# endif

# ifndef __cpp_lib_make_from_tuple
# error "__cpp_lib_make_from_tuple should be defined in c++2b"
# error "__cpp_lib_make_from_tuple should be defined in c++23"
# endif
# if __cpp_lib_make_from_tuple != 201606L
# error "__cpp_lib_make_from_tuple should have the value 201606L in c++2b"
# error "__cpp_lib_make_from_tuple should have the value 201606L in c++23"
# endif

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_ranges_zip
# error "__cpp_lib_ranges_zip should be defined in c++2b"
# error "__cpp_lib_ranges_zip should be defined in c++23"
# endif
# if __cpp_lib_ranges_zip != 202110L
# error "__cpp_lib_ranges_zip should have the value 202110L in c++2b"
# error "__cpp_lib_ranges_zip should have the value 202110L in c++23"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_ranges_zip
Expand All @@ -201,17 +201,17 @@
# endif

# ifndef __cpp_lib_tuple_element_t
# error "__cpp_lib_tuple_element_t should be defined in c++2b"
# error "__cpp_lib_tuple_element_t should be defined in c++23"
# endif
# if __cpp_lib_tuple_element_t != 201402L
# error "__cpp_lib_tuple_element_t should have the value 201402L in c++2b"
# error "__cpp_lib_tuple_element_t should have the value 201402L in c++23"
# endif

# ifndef __cpp_lib_tuples_by_type
# error "__cpp_lib_tuples_by_type should be defined in c++2b"
# error "__cpp_lib_tuples_by_type should be defined in c++23"
# endif
# if __cpp_lib_tuples_by_type != 201304L
# error "__cpp_lib_tuples_by_type should have the value 201304L in c++2b"
# error "__cpp_lib_tuples_by_type should have the value 201304L in c++23"
# endif

#endif // TEST_STD_VER > 20
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@
__cpp_lib_is_nothrow_convertible 201806L [C++20]
__cpp_lib_is_null_pointer 201309L [C++14]
__cpp_lib_is_pointer_interconvertible 201907L [C++20]
__cpp_lib_is_scoped_enum 202011L [C++2b]
__cpp_lib_is_scoped_enum 202011L [C++23]
__cpp_lib_is_swappable 201603L [C++17]
__cpp_lib_logical_traits 201510L [C++17]
__cpp_lib_reference_from_temporary 202202L [C++2b]
__cpp_lib_reference_from_temporary 202202L [C++23]
__cpp_lib_remove_cvref 201711L [C++20]
__cpp_lib_result_of_sfinae 201210L [C++14]
__cpp_lib_transformation_trait_aliases 201304L [C++14]
Expand Down Expand Up @@ -94,7 +94,7 @@
# endif

# ifdef __cpp_lib_is_scoped_enum
# error "__cpp_lib_is_scoped_enum should not be defined before c++2b"
# error "__cpp_lib_is_scoped_enum should not be defined before c++23"
# endif

# ifdef __cpp_lib_is_swappable
Expand All @@ -106,7 +106,7 @@
# endif

# ifdef __cpp_lib_reference_from_temporary
# error "__cpp_lib_reference_from_temporary should not be defined before c++2b"
# error "__cpp_lib_reference_from_temporary should not be defined before c++23"
# endif

# ifdef __cpp_lib_remove_cvref
Expand Down Expand Up @@ -193,7 +193,7 @@
# endif

# ifdef __cpp_lib_is_scoped_enum
# error "__cpp_lib_is_scoped_enum should not be defined before c++2b"
# error "__cpp_lib_is_scoped_enum should not be defined before c++23"
# endif

# ifdef __cpp_lib_is_swappable
Expand All @@ -205,7 +205,7 @@
# endif

# ifdef __cpp_lib_reference_from_temporary
# error "__cpp_lib_reference_from_temporary should not be defined before c++2b"
# error "__cpp_lib_reference_from_temporary should not be defined before c++23"
# endif

# ifdef __cpp_lib_remove_cvref
Expand Down Expand Up @@ -310,7 +310,7 @@
# endif

# ifdef __cpp_lib_is_scoped_enum
# error "__cpp_lib_is_scoped_enum should not be defined before c++2b"
# error "__cpp_lib_is_scoped_enum should not be defined before c++23"
# endif

# ifndef __cpp_lib_is_swappable
Expand All @@ -328,7 +328,7 @@
# endif

# ifdef __cpp_lib_reference_from_temporary
# error "__cpp_lib_reference_from_temporary should not be defined before c++2b"
# error "__cpp_lib_reference_from_temporary should not be defined before c++23"
# endif

# ifdef __cpp_lib_remove_cvref
Expand Down Expand Up @@ -466,7 +466,7 @@
# endif

# ifdef __cpp_lib_is_scoped_enum
# error "__cpp_lib_is_scoped_enum should not be defined before c++2b"
# error "__cpp_lib_is_scoped_enum should not be defined before c++23"
# endif

# ifndef __cpp_lib_is_swappable
Expand All @@ -484,7 +484,7 @@
# endif

# ifdef __cpp_lib_reference_from_temporary
# error "__cpp_lib_reference_from_temporary should not be defined before c++2b"
# error "__cpp_lib_reference_from_temporary should not be defined before c++23"
# endif

# ifndef __cpp_lib_remove_cvref
Expand Down Expand Up @@ -532,67 +532,67 @@
#elif TEST_STD_VER > 20

# ifndef __cpp_lib_bool_constant
# error "__cpp_lib_bool_constant should be defined in c++2b"
# error "__cpp_lib_bool_constant should be defined in c++23"
# endif
# if __cpp_lib_bool_constant != 201505L
# error "__cpp_lib_bool_constant should have the value 201505L in c++2b"
# error "__cpp_lib_bool_constant should have the value 201505L in c++23"
# endif

# ifndef __cpp_lib_bounded_array_traits
# error "__cpp_lib_bounded_array_traits should be defined in c++2b"
# error "__cpp_lib_bounded_array_traits should be defined in c++23"
# endif
# if __cpp_lib_bounded_array_traits != 201902L
# error "__cpp_lib_bounded_array_traits should have the value 201902L in c++2b"
# error "__cpp_lib_bounded_array_traits should have the value 201902L in c++23"
# endif

# ifndef __cpp_lib_has_unique_object_representations
# error "__cpp_lib_has_unique_object_representations should be defined in c++2b"
# error "__cpp_lib_has_unique_object_representations should be defined in c++23"
# endif
# if __cpp_lib_has_unique_object_representations != 201606L
# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++2b"
# error "__cpp_lib_has_unique_object_representations should have the value 201606L in c++23"
# endif

# ifndef __cpp_lib_integral_constant_callable
# error "__cpp_lib_integral_constant_callable should be defined in c++2b"
# error "__cpp_lib_integral_constant_callable should be defined in c++23"
# endif
# if __cpp_lib_integral_constant_callable != 201304L
# error "__cpp_lib_integral_constant_callable should have the value 201304L in c++2b"
# error "__cpp_lib_integral_constant_callable should have the value 201304L in c++23"
# endif

# ifndef __cpp_lib_is_aggregate
# error "__cpp_lib_is_aggregate should be defined in c++2b"
# error "__cpp_lib_is_aggregate should be defined in c++23"
# endif
# if __cpp_lib_is_aggregate != 201703L
# error "__cpp_lib_is_aggregate should have the value 201703L in c++2b"
# error "__cpp_lib_is_aggregate should have the value 201703L in c++23"
# endif

# ifndef __cpp_lib_is_constant_evaluated
# error "__cpp_lib_is_constant_evaluated should be defined in c++2b"
# error "__cpp_lib_is_constant_evaluated should be defined in c++23"
# endif
# if __cpp_lib_is_constant_evaluated != 201811L
# error "__cpp_lib_is_constant_evaluated should have the value 201811L in c++2b"
# error "__cpp_lib_is_constant_evaluated should have the value 201811L in c++23"
# endif

# ifndef __cpp_lib_is_final
# error "__cpp_lib_is_final should be defined in c++2b"
# error "__cpp_lib_is_final should be defined in c++23"
# endif
# if __cpp_lib_is_final != 201402L
# error "__cpp_lib_is_final should have the value 201402L in c++2b"
# error "__cpp_lib_is_final should have the value 201402L in c++23"
# endif

# ifndef __cpp_lib_is_invocable
# error "__cpp_lib_is_invocable should be defined in c++2b"
# error "__cpp_lib_is_invocable should be defined in c++23"
# endif
# if __cpp_lib_is_invocable != 201703L
# error "__cpp_lib_is_invocable should have the value 201703L in c++2b"
# error "__cpp_lib_is_invocable should have the value 201703L in c++23"
# endif

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_is_layout_compatible
# error "__cpp_lib_is_layout_compatible should be defined in c++2b"
# error "__cpp_lib_is_layout_compatible should be defined in c++23"
# endif
# if __cpp_lib_is_layout_compatible != 201907L
# error "__cpp_lib_is_layout_compatible should have the value 201907L in c++2b"
# error "__cpp_lib_is_layout_compatible should have the value 201907L in c++23"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_is_layout_compatible
Expand All @@ -601,25 +601,25 @@
# endif

# ifndef __cpp_lib_is_nothrow_convertible
# error "__cpp_lib_is_nothrow_convertible should be defined in c++2b"
# error "__cpp_lib_is_nothrow_convertible should be defined in c++23"
# endif
# if __cpp_lib_is_nothrow_convertible != 201806L
# error "__cpp_lib_is_nothrow_convertible should have the value 201806L in c++2b"
# error "__cpp_lib_is_nothrow_convertible should have the value 201806L in c++23"
# endif

# ifndef __cpp_lib_is_null_pointer
# error "__cpp_lib_is_null_pointer should be defined in c++2b"
# error "__cpp_lib_is_null_pointer should be defined in c++23"
# endif
# if __cpp_lib_is_null_pointer != 201309L
# error "__cpp_lib_is_null_pointer should have the value 201309L in c++2b"
# error "__cpp_lib_is_null_pointer should have the value 201309L in c++23"
# endif

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_is_pointer_interconvertible
# error "__cpp_lib_is_pointer_interconvertible should be defined in c++2b"
# error "__cpp_lib_is_pointer_interconvertible should be defined in c++23"
# endif
# if __cpp_lib_is_pointer_interconvertible != 201907L
# error "__cpp_lib_is_pointer_interconvertible should have the value 201907L in c++2b"
# error "__cpp_lib_is_pointer_interconvertible should have the value 201907L in c++23"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_is_pointer_interconvertible
Expand All @@ -628,32 +628,32 @@
# endif

# ifndef __cpp_lib_is_scoped_enum
# error "__cpp_lib_is_scoped_enum should be defined in c++2b"
# error "__cpp_lib_is_scoped_enum should be defined in c++23"
# endif
# if __cpp_lib_is_scoped_enum != 202011L
# error "__cpp_lib_is_scoped_enum should have the value 202011L in c++2b"
# error "__cpp_lib_is_scoped_enum should have the value 202011L in c++23"
# endif

# ifndef __cpp_lib_is_swappable
# error "__cpp_lib_is_swappable should be defined in c++2b"
# error "__cpp_lib_is_swappable should be defined in c++23"
# endif
# if __cpp_lib_is_swappable != 201603L
# error "__cpp_lib_is_swappable should have the value 201603L in c++2b"
# error "__cpp_lib_is_swappable should have the value 201603L in c++23"
# endif

# ifndef __cpp_lib_logical_traits
# error "__cpp_lib_logical_traits should be defined in c++2b"
# error "__cpp_lib_logical_traits should be defined in c++23"
# endif
# if __cpp_lib_logical_traits != 201510L
# error "__cpp_lib_logical_traits should have the value 201510L in c++2b"
# error "__cpp_lib_logical_traits should have the value 201510L in c++23"
# endif

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_reference_from_temporary
# error "__cpp_lib_reference_from_temporary should be defined in c++2b"
# error "__cpp_lib_reference_from_temporary should be defined in c++23"
# endif
# if __cpp_lib_reference_from_temporary != 202202L
# error "__cpp_lib_reference_from_temporary should have the value 202202L in c++2b"
# error "__cpp_lib_reference_from_temporary should have the value 202202L in c++23"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_reference_from_temporary
Expand All @@ -662,45 +662,45 @@
# endif

# ifndef __cpp_lib_remove_cvref
# error "__cpp_lib_remove_cvref should be defined in c++2b"
# error "__cpp_lib_remove_cvref should be defined in c++23"
# endif
# if __cpp_lib_remove_cvref != 201711L
# error "__cpp_lib_remove_cvref should have the value 201711L in c++2b"
# error "__cpp_lib_remove_cvref should have the value 201711L in c++23"
# endif

# ifndef __cpp_lib_result_of_sfinae
# error "__cpp_lib_result_of_sfinae should be defined in c++2b"
# error "__cpp_lib_result_of_sfinae should be defined in c++23"
# endif
# if __cpp_lib_result_of_sfinae != 201210L
# error "__cpp_lib_result_of_sfinae should have the value 201210L in c++2b"
# error "__cpp_lib_result_of_sfinae should have the value 201210L in c++23"
# endif

# ifndef __cpp_lib_transformation_trait_aliases
# error "__cpp_lib_transformation_trait_aliases should be defined in c++2b"
# error "__cpp_lib_transformation_trait_aliases should be defined in c++23"
# endif
# if __cpp_lib_transformation_trait_aliases != 201304L
# error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++2b"
# error "__cpp_lib_transformation_trait_aliases should have the value 201304L in c++23"
# endif

# ifndef __cpp_lib_type_identity
# error "__cpp_lib_type_identity should be defined in c++2b"
# error "__cpp_lib_type_identity should be defined in c++23"
# endif
# if __cpp_lib_type_identity != 201806L
# error "__cpp_lib_type_identity should have the value 201806L in c++2b"
# error "__cpp_lib_type_identity should have the value 201806L in c++23"
# endif

# ifndef __cpp_lib_type_trait_variable_templates
# error "__cpp_lib_type_trait_variable_templates should be defined in c++2b"
# error "__cpp_lib_type_trait_variable_templates should be defined in c++23"
# endif
# if __cpp_lib_type_trait_variable_templates != 201510L
# error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++2b"
# error "__cpp_lib_type_trait_variable_templates should have the value 201510L in c++23"
# endif

# ifndef __cpp_lib_void_t
# error "__cpp_lib_void_t should be defined in c++2b"
# error "__cpp_lib_void_t should be defined in c++23"
# endif
# if __cpp_lib_void_t != 201411L
# error "__cpp_lib_void_t should have the value 201411L in c++2b"
# error "__cpp_lib_void_t should have the value 201411L in c++23"
# endif

#endif // TEST_STD_VER > 20
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
// Test the feature test macros defined by <typeinfo>

/* Constant Value
__cpp_lib_constexpr_typeinfo 202106L [C++2b]
__cpp_lib_constexpr_typeinfo 202106L [C++23]
*/

#include <typeinfo>
Expand All @@ -25,34 +25,34 @@
#if TEST_STD_VER < 14

# ifdef __cpp_lib_constexpr_typeinfo
# error "__cpp_lib_constexpr_typeinfo should not be defined before c++2b"
# error "__cpp_lib_constexpr_typeinfo should not be defined before c++23"
# endif

#elif TEST_STD_VER == 14

# ifdef __cpp_lib_constexpr_typeinfo
# error "__cpp_lib_constexpr_typeinfo should not be defined before c++2b"
# error "__cpp_lib_constexpr_typeinfo should not be defined before c++23"
# endif

#elif TEST_STD_VER == 17

# ifdef __cpp_lib_constexpr_typeinfo
# error "__cpp_lib_constexpr_typeinfo should not be defined before c++2b"
# error "__cpp_lib_constexpr_typeinfo should not be defined before c++23"
# endif

#elif TEST_STD_VER == 20

# ifdef __cpp_lib_constexpr_typeinfo
# error "__cpp_lib_constexpr_typeinfo should not be defined before c++2b"
# error "__cpp_lib_constexpr_typeinfo should not be defined before c++23"
# endif

#elif TEST_STD_VER > 20

# ifndef __cpp_lib_constexpr_typeinfo
# error "__cpp_lib_constexpr_typeinfo should be defined in c++2b"
# error "__cpp_lib_constexpr_typeinfo should be defined in c++23"
# endif
# if __cpp_lib_constexpr_typeinfo != 202106L
# error "__cpp_lib_constexpr_typeinfo should have the value 202106L in c++2b"
# error "__cpp_lib_constexpr_typeinfo should have the value 202106L in c++23"
# endif

#endif // TEST_STD_VER > 20
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@

/* Constant Value
__cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
__cpp_lib_associative_heterogeneous_erasure 202110L [C++2b]
__cpp_lib_associative_heterogeneous_erasure 202110L [C++23]
__cpp_lib_erase_if 202002L [C++20]
__cpp_lib_generic_unordered_lookup 201811L [C++20]
__cpp_lib_node_extract 201606L [C++17]
__cpp_lib_nonmember_container_access 201411L [C++17]
__cpp_lib_ranges_to_container 202202L [C++2b]
__cpp_lib_ranges_to_container 202202L [C++23]
__cpp_lib_unordered_map_try_emplace 201411L [C++17]
*/

Expand All @@ -36,7 +36,7 @@
# endif

# ifdef __cpp_lib_associative_heterogeneous_erasure
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++2b"
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif

# ifdef __cpp_lib_erase_if
Expand All @@ -56,7 +56,7 @@
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

# ifdef __cpp_lib_unordered_map_try_emplace
Expand All @@ -70,7 +70,7 @@
# endif

# ifdef __cpp_lib_associative_heterogeneous_erasure
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++2b"
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif

# ifdef __cpp_lib_erase_if
Expand All @@ -90,7 +90,7 @@
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

# ifdef __cpp_lib_unordered_map_try_emplace
Expand All @@ -107,7 +107,7 @@
# endif

# ifdef __cpp_lib_associative_heterogeneous_erasure
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++2b"
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif

# ifdef __cpp_lib_erase_if
Expand All @@ -133,7 +133,7 @@
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

# ifndef __cpp_lib_unordered_map_try_emplace
Expand All @@ -153,7 +153,7 @@
# endif

# ifdef __cpp_lib_associative_heterogeneous_erasure
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++2b"
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif

# ifndef __cpp_lib_erase_if
Expand Down Expand Up @@ -185,7 +185,7 @@
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

# ifndef __cpp_lib_unordered_map_try_emplace
Expand All @@ -198,18 +198,18 @@
#elif TEST_STD_VER > 20

# ifndef __cpp_lib_allocator_traits_is_always_equal
# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++2b"
# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23"
# endif
# if __cpp_lib_allocator_traits_is_always_equal != 201411L
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++2b"
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++23"
# endif

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_associative_heterogeneous_erasure
# error "__cpp_lib_associative_heterogeneous_erasure should be defined in c++2b"
# error "__cpp_lib_associative_heterogeneous_erasure should be defined in c++23"
# endif
# if __cpp_lib_associative_heterogeneous_erasure != 202110L
# error "__cpp_lib_associative_heterogeneous_erasure should have the value 202110L in c++2b"
# error "__cpp_lib_associative_heterogeneous_erasure should have the value 202110L in c++23"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_associative_heterogeneous_erasure
Expand All @@ -218,39 +218,39 @@
# endif

# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++2b"
# error "__cpp_lib_erase_if should be defined in c++23"
# endif
# if __cpp_lib_erase_if != 202002L
# error "__cpp_lib_erase_if should have the value 202002L in c++2b"
# error "__cpp_lib_erase_if should have the value 202002L in c++23"
# endif

# ifndef __cpp_lib_generic_unordered_lookup
# error "__cpp_lib_generic_unordered_lookup should be defined in c++2b"
# error "__cpp_lib_generic_unordered_lookup should be defined in c++23"
# endif
# if __cpp_lib_generic_unordered_lookup != 201811L
# error "__cpp_lib_generic_unordered_lookup should have the value 201811L in c++2b"
# error "__cpp_lib_generic_unordered_lookup should have the value 201811L in c++23"
# endif

# ifndef __cpp_lib_node_extract
# error "__cpp_lib_node_extract should be defined in c++2b"
# error "__cpp_lib_node_extract should be defined in c++23"
# endif
# if __cpp_lib_node_extract != 201606L
# error "__cpp_lib_node_extract should have the value 201606L in c++2b"
# error "__cpp_lib_node_extract should have the value 201606L in c++23"
# endif

# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++2b"
# error "__cpp_lib_nonmember_container_access should be defined in c++23"
# endif
# if __cpp_lib_nonmember_container_access != 201411L
# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++2b"
# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++23"
# endif

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should be defined in c++2b"
# error "__cpp_lib_ranges_to_container should be defined in c++23"
# endif
# if __cpp_lib_ranges_to_container != 202202L
# error "__cpp_lib_ranges_to_container should have the value 202202L in c++2b"
# error "__cpp_lib_ranges_to_container should have the value 202202L in c++23"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_ranges_to_container
Expand All @@ -259,10 +259,10 @@
# endif

# ifndef __cpp_lib_unordered_map_try_emplace
# error "__cpp_lib_unordered_map_try_emplace should be defined in c++2b"
# error "__cpp_lib_unordered_map_try_emplace should be defined in c++23"
# endif
# if __cpp_lib_unordered_map_try_emplace != 201411L
# error "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++2b"
# error "__cpp_lib_unordered_map_try_emplace should have the value 201411L in c++23"
# endif

#endif // TEST_STD_VER > 20
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@

/* Constant Value
__cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
__cpp_lib_associative_heterogeneous_erasure 202110L [C++2b]
__cpp_lib_associative_heterogeneous_erasure 202110L [C++23]
__cpp_lib_erase_if 202002L [C++20]
__cpp_lib_generic_unordered_lookup 201811L [C++20]
__cpp_lib_node_extract 201606L [C++17]
__cpp_lib_nonmember_container_access 201411L [C++17]
__cpp_lib_ranges_to_container 202202L [C++2b]
__cpp_lib_ranges_to_container 202202L [C++23]
*/

#include <unordered_set>
Expand All @@ -35,7 +35,7 @@
# endif

# ifdef __cpp_lib_associative_heterogeneous_erasure
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++2b"
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif

# ifdef __cpp_lib_erase_if
Expand All @@ -55,7 +55,7 @@
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

#elif TEST_STD_VER == 14
Expand All @@ -65,7 +65,7 @@
# endif

# ifdef __cpp_lib_associative_heterogeneous_erasure
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++2b"
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif

# ifdef __cpp_lib_erase_if
Expand All @@ -85,7 +85,7 @@
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

#elif TEST_STD_VER == 17
Expand All @@ -98,7 +98,7 @@
# endif

# ifdef __cpp_lib_associative_heterogeneous_erasure
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++2b"
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif

# ifdef __cpp_lib_erase_if
Expand All @@ -124,7 +124,7 @@
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

#elif TEST_STD_VER == 20
Expand All @@ -137,7 +137,7 @@
# endif

# ifdef __cpp_lib_associative_heterogeneous_erasure
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++2b"
# error "__cpp_lib_associative_heterogeneous_erasure should not be defined before c++23"
# endif

# ifndef __cpp_lib_erase_if
Expand Down Expand Up @@ -169,24 +169,24 @@
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

#elif TEST_STD_VER > 20

# ifndef __cpp_lib_allocator_traits_is_always_equal
# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++2b"
# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23"
# endif
# if __cpp_lib_allocator_traits_is_always_equal != 201411L
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++2b"
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++23"
# endif

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_associative_heterogeneous_erasure
# error "__cpp_lib_associative_heterogeneous_erasure should be defined in c++2b"
# error "__cpp_lib_associative_heterogeneous_erasure should be defined in c++23"
# endif
# if __cpp_lib_associative_heterogeneous_erasure != 202110L
# error "__cpp_lib_associative_heterogeneous_erasure should have the value 202110L in c++2b"
# error "__cpp_lib_associative_heterogeneous_erasure should have the value 202110L in c++23"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_associative_heterogeneous_erasure
Expand All @@ -195,39 +195,39 @@
# endif

# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++2b"
# error "__cpp_lib_erase_if should be defined in c++23"
# endif
# if __cpp_lib_erase_if != 202002L
# error "__cpp_lib_erase_if should have the value 202002L in c++2b"
# error "__cpp_lib_erase_if should have the value 202002L in c++23"
# endif

# ifndef __cpp_lib_generic_unordered_lookup
# error "__cpp_lib_generic_unordered_lookup should be defined in c++2b"
# error "__cpp_lib_generic_unordered_lookup should be defined in c++23"
# endif
# if __cpp_lib_generic_unordered_lookup != 201811L
# error "__cpp_lib_generic_unordered_lookup should have the value 201811L in c++2b"
# error "__cpp_lib_generic_unordered_lookup should have the value 201811L in c++23"
# endif

# ifndef __cpp_lib_node_extract
# error "__cpp_lib_node_extract should be defined in c++2b"
# error "__cpp_lib_node_extract should be defined in c++23"
# endif
# if __cpp_lib_node_extract != 201606L
# error "__cpp_lib_node_extract should have the value 201606L in c++2b"
# error "__cpp_lib_node_extract should have the value 201606L in c++23"
# endif

# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++2b"
# error "__cpp_lib_nonmember_container_access should be defined in c++23"
# endif
# if __cpp_lib_nonmember_container_access != 201411L
# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++2b"
# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++23"
# endif

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should be defined in c++2b"
# error "__cpp_lib_ranges_to_container should be defined in c++23"
# endif
# if __cpp_lib_ranges_to_container != 202202L
# error "__cpp_lib_ranges_to_container should have the value 202202L in c++2b"
# error "__cpp_lib_ranges_to_container should have the value 202202L in c++23"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_ranges_to_container
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@
__cpp_lib_constexpr_algorithms 201806L [C++20]
__cpp_lib_constexpr_utility 201811L [C++20]
__cpp_lib_exchange_function 201304L [C++14]
__cpp_lib_forward_like 202207L [C++2b]
__cpp_lib_forward_like 202207L [C++23]
__cpp_lib_integer_comparison_functions 202002L [C++20]
__cpp_lib_integer_sequence 201304L [C++14]
__cpp_lib_ranges_zip 202110L [C++2b]
__cpp_lib_to_underlying 202102L [C++2b]
__cpp_lib_ranges_zip 202110L [C++23]
__cpp_lib_to_underlying 202102L [C++23]
__cpp_lib_tuples_by_type 201304L [C++14]
__cpp_lib_unreachable 202202L [C++2b]
__cpp_lib_unreachable 202202L [C++23]
*/

#include <utility>
Expand All @@ -51,7 +51,7 @@
# endif

# ifdef __cpp_lib_forward_like
# error "__cpp_lib_forward_like should not be defined before c++2b"
# error "__cpp_lib_forward_like should not be defined before c++23"
# endif

# ifdef __cpp_lib_integer_comparison_functions
Expand All @@ -63,19 +63,19 @@
# endif

# ifdef __cpp_lib_ranges_zip
# error "__cpp_lib_ranges_zip should not be defined before c++2b"
# error "__cpp_lib_ranges_zip should not be defined before c++23"
# endif

# ifdef __cpp_lib_to_underlying
# error "__cpp_lib_to_underlying should not be defined before c++2b"
# error "__cpp_lib_to_underlying should not be defined before c++23"
# endif

# ifdef __cpp_lib_tuples_by_type
# error "__cpp_lib_tuples_by_type should not be defined before c++14"
# endif

# ifdef __cpp_lib_unreachable
# error "__cpp_lib_unreachable should not be defined before c++2b"
# error "__cpp_lib_unreachable should not be defined before c++23"
# endif

#elif TEST_STD_VER == 14
Expand All @@ -100,7 +100,7 @@
# endif

# ifdef __cpp_lib_forward_like
# error "__cpp_lib_forward_like should not be defined before c++2b"
# error "__cpp_lib_forward_like should not be defined before c++23"
# endif

# ifdef __cpp_lib_integer_comparison_functions
Expand All @@ -115,11 +115,11 @@
# endif

# ifdef __cpp_lib_ranges_zip
# error "__cpp_lib_ranges_zip should not be defined before c++2b"
# error "__cpp_lib_ranges_zip should not be defined before c++23"
# endif

# ifdef __cpp_lib_to_underlying
# error "__cpp_lib_to_underlying should not be defined before c++2b"
# error "__cpp_lib_to_underlying should not be defined before c++23"
# endif

# ifndef __cpp_lib_tuples_by_type
Expand All @@ -130,7 +130,7 @@
# endif

# ifdef __cpp_lib_unreachable
# error "__cpp_lib_unreachable should not be defined before c++2b"
# error "__cpp_lib_unreachable should not be defined before c++23"
# endif

#elif TEST_STD_VER == 17
Expand Down Expand Up @@ -158,7 +158,7 @@
# endif

# ifdef __cpp_lib_forward_like
# error "__cpp_lib_forward_like should not be defined before c++2b"
# error "__cpp_lib_forward_like should not be defined before c++23"
# endif

# ifdef __cpp_lib_integer_comparison_functions
Expand All @@ -173,11 +173,11 @@
# endif

# ifdef __cpp_lib_ranges_zip
# error "__cpp_lib_ranges_zip should not be defined before c++2b"
# error "__cpp_lib_ranges_zip should not be defined before c++23"
# endif

# ifdef __cpp_lib_to_underlying
# error "__cpp_lib_to_underlying should not be defined before c++2b"
# error "__cpp_lib_to_underlying should not be defined before c++23"
# endif

# ifndef __cpp_lib_tuples_by_type
Expand All @@ -188,7 +188,7 @@
# endif

# ifdef __cpp_lib_unreachable
# error "__cpp_lib_unreachable should not be defined before c++2b"
# error "__cpp_lib_unreachable should not be defined before c++23"
# endif

#elif TEST_STD_VER == 20
Expand Down Expand Up @@ -222,7 +222,7 @@
# endif

# ifdef __cpp_lib_forward_like
# error "__cpp_lib_forward_like should not be defined before c++2b"
# error "__cpp_lib_forward_like should not be defined before c++23"
# endif

# ifndef __cpp_lib_integer_comparison_functions
Expand All @@ -240,11 +240,11 @@
# endif

# ifdef __cpp_lib_ranges_zip
# error "__cpp_lib_ranges_zip should not be defined before c++2b"
# error "__cpp_lib_ranges_zip should not be defined before c++23"
# endif

# ifdef __cpp_lib_to_underlying
# error "__cpp_lib_to_underlying should not be defined before c++2b"
# error "__cpp_lib_to_underlying should not be defined before c++23"
# endif

# ifndef __cpp_lib_tuples_by_type
Expand All @@ -255,66 +255,66 @@
# endif

# ifdef __cpp_lib_unreachable
# error "__cpp_lib_unreachable should not be defined before c++2b"
# error "__cpp_lib_unreachable should not be defined before c++23"
# endif

#elif TEST_STD_VER > 20

# ifndef __cpp_lib_as_const
# error "__cpp_lib_as_const should be defined in c++2b"
# error "__cpp_lib_as_const should be defined in c++23"
# endif
# if __cpp_lib_as_const != 201510L
# error "__cpp_lib_as_const should have the value 201510L in c++2b"
# error "__cpp_lib_as_const should have the value 201510L in c++23"
# endif

# ifndef __cpp_lib_constexpr_algorithms
# error "__cpp_lib_constexpr_algorithms should be defined in c++2b"
# error "__cpp_lib_constexpr_algorithms should be defined in c++23"
# endif
# if __cpp_lib_constexpr_algorithms != 201806L
# error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++2b"
# error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++23"
# endif

# ifndef __cpp_lib_constexpr_utility
# error "__cpp_lib_constexpr_utility should be defined in c++2b"
# error "__cpp_lib_constexpr_utility should be defined in c++23"
# endif
# if __cpp_lib_constexpr_utility != 201811L
# error "__cpp_lib_constexpr_utility should have the value 201811L in c++2b"
# error "__cpp_lib_constexpr_utility should have the value 201811L in c++23"
# endif

# ifndef __cpp_lib_exchange_function
# error "__cpp_lib_exchange_function should be defined in c++2b"
# error "__cpp_lib_exchange_function should be defined in c++23"
# endif
# if __cpp_lib_exchange_function != 201304L
# error "__cpp_lib_exchange_function should have the value 201304L in c++2b"
# error "__cpp_lib_exchange_function should have the value 201304L in c++23"
# endif

# ifndef __cpp_lib_forward_like
# error "__cpp_lib_forward_like should be defined in c++2b"
# error "__cpp_lib_forward_like should be defined in c++23"
# endif
# if __cpp_lib_forward_like != 202207L
# error "__cpp_lib_forward_like should have the value 202207L in c++2b"
# error "__cpp_lib_forward_like should have the value 202207L in c++23"
# endif

# ifndef __cpp_lib_integer_comparison_functions
# error "__cpp_lib_integer_comparison_functions should be defined in c++2b"
# error "__cpp_lib_integer_comparison_functions should be defined in c++23"
# endif
# if __cpp_lib_integer_comparison_functions != 202002L
# error "__cpp_lib_integer_comparison_functions should have the value 202002L in c++2b"
# error "__cpp_lib_integer_comparison_functions should have the value 202002L in c++23"
# endif

# ifndef __cpp_lib_integer_sequence
# error "__cpp_lib_integer_sequence should be defined in c++2b"
# error "__cpp_lib_integer_sequence should be defined in c++23"
# endif
# if __cpp_lib_integer_sequence != 201304L
# error "__cpp_lib_integer_sequence should have the value 201304L in c++2b"
# error "__cpp_lib_integer_sequence should have the value 201304L in c++23"
# endif

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_ranges_zip
# error "__cpp_lib_ranges_zip should be defined in c++2b"
# error "__cpp_lib_ranges_zip should be defined in c++23"
# endif
# if __cpp_lib_ranges_zip != 202110L
# error "__cpp_lib_ranges_zip should have the value 202110L in c++2b"
# error "__cpp_lib_ranges_zip should have the value 202110L in c++23"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_ranges_zip
Expand All @@ -323,24 +323,24 @@
# endif

# ifndef __cpp_lib_to_underlying
# error "__cpp_lib_to_underlying should be defined in c++2b"
# error "__cpp_lib_to_underlying should be defined in c++23"
# endif
# if __cpp_lib_to_underlying != 202102L
# error "__cpp_lib_to_underlying should have the value 202102L in c++2b"
# error "__cpp_lib_to_underlying should have the value 202102L in c++23"
# endif

# ifndef __cpp_lib_tuples_by_type
# error "__cpp_lib_tuples_by_type should be defined in c++2b"
# error "__cpp_lib_tuples_by_type should be defined in c++23"
# endif
# if __cpp_lib_tuples_by_type != 201304L
# error "__cpp_lib_tuples_by_type should have the value 201304L in c++2b"
# error "__cpp_lib_tuples_by_type should have the value 201304L in c++23"
# endif

# ifndef __cpp_lib_unreachable
# error "__cpp_lib_unreachable should be defined in c++2b"
# error "__cpp_lib_unreachable should be defined in c++23"
# endif
# if __cpp_lib_unreachable != 202202L
# error "__cpp_lib_unreachable should have the value 202202L in c++2b"
# error "__cpp_lib_unreachable should have the value 202202L in c++23"
# endif

#endif // TEST_STD_VER > 20
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,10 @@
#elif TEST_STD_VER > 20

# ifndef __cpp_lib_variant
# error "__cpp_lib_variant should be defined in c++2b"
# error "__cpp_lib_variant should be defined in c++23"
# endif
# if __cpp_lib_variant != 202102L
# error "__cpp_lib_variant should have the value 202102L in c++2b"
# error "__cpp_lib_variant should have the value 202102L in c++23"
# endif

#endif // TEST_STD_VER > 20
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
__cpp_lib_erase_if 202002L [C++20]
__cpp_lib_incomplete_container_elements 201505L [C++17]
__cpp_lib_nonmember_container_access 201411L [C++17]
__cpp_lib_ranges_to_container 202202L [C++2b]
__cpp_lib_ranges_to_container 202202L [C++23]
*/

#include <vector>
Expand Down Expand Up @@ -50,7 +50,7 @@
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

#elif TEST_STD_VER == 14
Expand All @@ -76,7 +76,7 @@
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

#elif TEST_STD_VER == 17
Expand Down Expand Up @@ -111,7 +111,7 @@
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

#elif TEST_STD_VER == 20
Expand Down Expand Up @@ -152,52 +152,52 @@
# endif

# ifdef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should not be defined before c++2b"
# error "__cpp_lib_ranges_to_container should not be defined before c++23"
# endif

#elif TEST_STD_VER > 20

# ifndef __cpp_lib_allocator_traits_is_always_equal
# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++2b"
# error "__cpp_lib_allocator_traits_is_always_equal should be defined in c++23"
# endif
# if __cpp_lib_allocator_traits_is_always_equal != 201411L
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++2b"
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++23"
# endif

# ifndef __cpp_lib_constexpr_vector
# error "__cpp_lib_constexpr_vector should be defined in c++2b"
# error "__cpp_lib_constexpr_vector should be defined in c++23"
# endif
# if __cpp_lib_constexpr_vector != 201907L
# error "__cpp_lib_constexpr_vector should have the value 201907L in c++2b"
# error "__cpp_lib_constexpr_vector should have the value 201907L in c++23"
# endif

# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++2b"
# error "__cpp_lib_erase_if should be defined in c++23"
# endif
# if __cpp_lib_erase_if != 202002L
# error "__cpp_lib_erase_if should have the value 202002L in c++2b"
# error "__cpp_lib_erase_if should have the value 202002L in c++23"
# endif

# ifndef __cpp_lib_incomplete_container_elements
# error "__cpp_lib_incomplete_container_elements should be defined in c++2b"
# error "__cpp_lib_incomplete_container_elements should be defined in c++23"
# endif
# if __cpp_lib_incomplete_container_elements != 201505L
# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++2b"
# error "__cpp_lib_incomplete_container_elements should have the value 201505L in c++23"
# endif

# ifndef __cpp_lib_nonmember_container_access
# error "__cpp_lib_nonmember_container_access should be defined in c++2b"
# error "__cpp_lib_nonmember_container_access should be defined in c++23"
# endif
# if __cpp_lib_nonmember_container_access != 201411L
# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++2b"
# error "__cpp_lib_nonmember_container_access should have the value 201411L in c++23"
# endif

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_ranges_to_container
# error "__cpp_lib_ranges_to_container should be defined in c++2b"
# error "__cpp_lib_ranges_to_container should be defined in c++23"
# endif
# if __cpp_lib_ranges_to_container != 202202L
# error "__cpp_lib_ranges_to_container should have the value 202202L in c++2b"
# error "__cpp_lib_ranges_to_container should have the value 202202L in c++23"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_ranges_to_container
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@

// <string>

// basic_string(nullptr_t) = delete; // C++2b
// basic_string& operator=(nullptr_t) = delete; // C++2b
// basic_string(nullptr_t) = delete; // C++23
// basic_string& operator=(nullptr_t) = delete; // C++23

#include <string>
#include <type_traits>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

// <string_view>

// basic_string_view(nullptr_t) = delete; // C++2b
// basic_string_view(nullptr_t) = delete; // C++23

#include <string_view>
#include <type_traits>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

// type_traits

// is_scoped_enum // C++2b
// is_scoped_enum // C++23

#include <type_traits>
#include <cstddef> // for std::nullptr_t
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

// [utility.underlying], to_underlying
// template <class T>
// constexpr underlying_type_t<T> to_underlying( T value ) noexcept; // C++2b
// constexpr underlying_type_t<T> to_underlying( T value ) noexcept; // C++23

#include <utility>
#include <cassert>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

// [utility.underlying], to_underlying
// template <class T>
// constexpr underlying_type_t<T> to_underlying( T value ) noexcept; // C++2b
// constexpr underlying_type_t<T> to_underlying( T value ) noexcept; // C++23

#include <utility>

Expand Down
2 changes: 2 additions & 0 deletions libcxx/test/support/test_macros.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,8 @@
# define TEST_STD_VER 17
#elif __cplusplus <= 202002L
# define TEST_STD_VER 20
#elif __cplusplus <= 202302L
# define TEST_STD_VER 23
#else
# define TEST_STD_VER 99 // greater than current standard
// This is deliberately different than _LIBCPP_STD_VER to discourage matching them up.
Expand Down
4 changes: 2 additions & 2 deletions libcxx/utils/ci/buildkite-pipeline-clang.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,14 @@ steps:
limit: 2
timeout_in_minutes: 120

- label: "C++2b"
- label: "C++23"
commands:
- "buildkite-agent artifact download install.tar.xz ."
- "tar -xvf install.tar.xz"
- "export CC=$(pwd)/install/bin/clang"
- "export CXX=$(pwd)/install/bin/clang++"
- "chmod +x install/bin/clang install/bin/clang++"
- "libcxx/utils/ci/run-buildbot generic-cxx2b"
- "libcxx/utils/ci/run-buildbot generic-cxx23"
artifact_paths:
- "**/test-results.xml"
- "**/crash_diagnostics/*"
Expand Down
10 changes: 5 additions & 5 deletions libcxx/utils/ci/buildkite-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,8 @@ steps:
limit: 2
timeout_in_minutes: 120

- label: "C++2b"
command: "libcxx/utils/ci/run-buildbot generic-cxx2b"
- label: "C++23"
command: "libcxx/utils/ci/run-buildbot generic-cxx23"
artifact_paths:
- "**/test-results.xml"
- "**/*.abilist"
Expand Down Expand Up @@ -258,7 +258,7 @@ steps:
timeout_in_minutes: 120

- label: "Clang 15"
command: "libcxx/utils/ci/run-buildbot generic-cxx2b"
command: "libcxx/utils/ci/run-buildbot generic-cxx23"
artifact_paths:
- "**/test-results.xml"
- "**/*.abilist"
Expand All @@ -277,7 +277,7 @@ steps:
timeout_in_minutes: 120

- label: "Clang 16"
command: "libcxx/utils/ci/run-buildbot generic-cxx2b"
command: "libcxx/utils/ci/run-buildbot generic-cxx23"
artifact_paths:
- "**/test-results.xml"
- "**/*.abilist"
Expand Down Expand Up @@ -1029,7 +1029,7 @@ steps:
- group: "FreeBSD"
steps:
- label: "FreeBSD 13 amd64"
command: "libcxx/utils/ci/run-buildbot generic-cxx2b"
command: "libcxx/utils/ci/run-buildbot generic-cxx23"
artifact_paths:
- "**/test-results.xml"
- "**/*.abilist"
Expand Down
4 changes: 2 additions & 2 deletions libcxx/utils/ci/run-buildbot
Original file line number Diff line number Diff line change
Expand Up @@ -276,9 +276,9 @@ generic-cxx20)
check-runtimes
check-abi-list
;;
generic-cxx2b)
generic-cxx23)
clean
generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx2b.cmake"
generate-cmake -C "${MONOREPO_ROOT}/libcxx/cmake/caches/Generic-cxx23.cmake"
check-runtimes
check-abi-list
;;
Expand Down
79 changes: 39 additions & 40 deletions libcxx/utils/generate_feature_test_macro_components.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,15 +62,15 @@ def add_version_header(tc):
feature_test_macros = [ add_version_header(x) for x in [
{
"name": "__cpp_lib_adaptor_iterator_pair_constructor",
"values": { "c++2b": 202106 },
"values": { "c++23": 202106 },
"headers": ["queue", "stack"],
}, {
"name": "__cpp_lib_addressof_constexpr",
"values": { "c++17": 201603 },
"headers": ["memory"],
}, {
"name": "__cpp_lib_allocate_at_least",
"values": { "c++2b": 202106 },
"values": { "c++23": 202106 },
"headers": ["memory"],
}, {
"name": "__cpp_lib_allocator_traits_is_always_equal",
Expand All @@ -94,7 +94,7 @@ def add_version_header(tc):
"headers": ["utility"],
}, {
"name": "__cpp_lib_associative_heterogeneous_erasure",
"values": { "c++2b": 202110 },
"values": { "c++23": 202110 },
"headers": ["map", "set", "unordered_map", "unordered_set"],
"unimplemented": True,
}, {
Expand Down Expand Up @@ -146,7 +146,7 @@ def add_version_header(tc):
"libcxx_guard": "!defined(_LIBCPP_HAS_NO_THREADS) && !defined(_LIBCPP_AVAILABILITY_HAS_NO_SYNC)",
}, {
"name": "__cpp_lib_bind_back",
"values": { "c++2b": 202202 },
"values": { "c++23": 202202 },
"headers": ["functional"],
"unimplemented": True,
}, {
Expand Down Expand Up @@ -180,7 +180,7 @@ def add_version_header(tc):
"headers": ["cstddef"],
}, {
"name": "__cpp_lib_byteswap",
"values": { "c++2b": 202110 },
"values": { "c++23": 202110 },
"headers": ["bit"],
}, {
"name": "__cpp_lib_char8_t",
Expand Down Expand Up @@ -214,15 +214,15 @@ def add_version_header(tc):
"headers": ["algorithm", "utility"],
}, {
"name": "__cpp_lib_constexpr_bitset",
"values": { "c++2b": 202207 },
"values": { "c++23": 202207 },
"headers": ["bitset"],
}, {
"name": "__cpp_lib_constexpr_charconv",
"values": { "c++2b": 202207 },
"values": { "c++23": 202207 },
"headers": ["charconv"],
}, {
"name": "__cpp_lib_constexpr_cmath",
"values": { "c++2b": 202202 },
"values": { "c++23": 202202 },
"headers": ["cmath", "cstdlib"],
"unimplemented": True,
}, {
Expand All @@ -243,7 +243,7 @@ def add_version_header(tc):
"headers": ["iterator"],
}, {
"name": "__cpp_lib_constexpr_memory",
"values": { "c++20": 201811, "c++2b": 202202 },
"values": { "c++20": 201811, "c++23": 202202 },
"headers": ["memory"],
}, {
"name": "__cpp_lib_constexpr_numeric",
Expand All @@ -263,7 +263,7 @@ def add_version_header(tc):
"headers": ["tuple"],
}, {
"name": "__cpp_lib_constexpr_typeinfo",
"values": { "c++2b": 202106 },
"values": { "c++23": 202106 },
"headers": ["typeinfo"],
}, {
"name": "__cpp_lib_constexpr_utility",
Expand Down Expand Up @@ -306,7 +306,7 @@ def add_version_header(tc):
"unimplemented": True,
}, {
"name": "__cpp_lib_expected",
"values": { "c++2b": 202211 },
"values": { "c++23": 202211 },
"headers": ["expected"],
}, {
"name": "__cpp_lib_filesystem",
Expand All @@ -329,20 +329,20 @@ def add_version_header(tc):
"unimplemented": True,
}, {
"name": "__cpp_lib_format_ranges",
"values": { "c++2b": 202207 },
"values": { "c++23": 202207 },
"headers": ["format"],
"test_suite_guard": "!defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT)",
"libcxx_guard": "!defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT)",
}, {
"name": "__cpp_lib_formatters",
"values": { "c++2b": 202302 },
"values": { "c++23": 202302 },
"headers": ["stacktrace", "thread"],
"test_suite_guard": "!defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT)",
"libcxx_guard": "!defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT)",
"unimplemented": True,
}, {
"name": "__cpp_lib_forward_like",
"values": { "c++2b": 202207 },
"values": { "c++23": 202207 },
"headers": ["utility"],
}, {
"name": "__cpp_lib_gcd_lcm",
Expand Down Expand Up @@ -400,7 +400,7 @@ def add_version_header(tc):
"headers": ["functional"],
}, {
"name": "__cpp_lib_invoke_r",
"values": { "c++2b": 202106 },
"values": { "c++23": 202106 },
"headers": ["functional"],
}, {
"name": "__cpp_lib_is_aggregate",
Expand Down Expand Up @@ -438,7 +438,7 @@ def add_version_header(tc):
"unimplemented": True,
}, {
"name": "__cpp_lib_is_scoped_enum",
"values": { "c++2b": 202011 },
"values": { "c++23": 202011 },
"headers": ["type_traits"],
}, {
"name": "__cpp_lib_is_swappable",
Expand Down Expand Up @@ -496,7 +496,7 @@ def add_version_header(tc):
"unimplemented": True,
}, {
"name": "__cpp_lib_mdspan",
"values": { "c++2b": 202207 },
"values": { "c++23": 202207 },
"headers": ["mdspan"],
"unimplemented": True,
}, {
Expand All @@ -509,7 +509,7 @@ def add_version_header(tc):
"headers": ["iterator"],
}, {
"name": "__cpp_lib_move_only_function",
"values": { "c++2b": 202110 },
"values": { "c++23": 202110 },
"headers": ["functional"],
"unimplemented": True,
}, {
Expand All @@ -530,11 +530,11 @@ def add_version_header(tc):
"headers": ["iterator"],
}, {
"name": "__cpp_lib_optional",
"values": { "c++17": 201606, "c++2b": 202110 },
"values": { "c++17": 201606, "c++23": 202110 },
"headers": ["optional"],
}, {
"name": "__cpp_lib_out_ptr",
"values": { "c++2b": 202106 },
"values": { "c++23": 202106 },
"headers": ["memory"],
"unimplemented": True,
}, {
Expand All @@ -556,46 +556,46 @@ def add_version_header(tc):
"headers": ["algorithm", "functional", "iterator", "memory", "ranges"],
}, {
"name": "__cpp_lib_ranges_as_rvalue",
"values": { "c++2b": 202207 },
"values": { "c++23": 202207 },
"headers": ["ranges"],
}, {
"name": "__cpp_lib_ranges_chunk",
"values": { "c++2b": 202202 },
"values": { "c++23": 202202 },
"headers": ["ranges"],
"unimplemented": True,
}, {
"name": "__cpp_lib_ranges_chunk_by",
"values": { "c++2b": 202202 },
"values": { "c++23": 202202 },
"headers": ["ranges"],
"unimplemented": True,
}, {
"name": "__cpp_lib_ranges_iota",
"values": { "c++2b": 202202 },
"values": { "c++23": 202202 },
"headers": ["numeric"],
"unimplemented": True,
}, {
"name": "__cpp_lib_ranges_join_with",
"values": { "c++2b": 202202 },
"values": { "c++23": 202202 },
"headers": ["ranges"],
"unimplemented": True,
}, {
"name": "__cpp_lib_ranges_slide",
"values": { "c++2b": 202202 },
"values": { "c++23": 202202 },
"headers": ["ranges"],
"unimplemented": True,
}, {
"name": "__cpp_lib_ranges_starts_ends_with",
"values": { "c++2b": 202106 },
"values": { "c++23": 202106 },
"headers": ["algorithm"],
"unimplemented": True,
}, {
"name": "__cpp_lib_ranges_to_container",
"values": { "c++2b": 202202 },
"values": { "c++23": 202202 },
"headers": ["deque", "forward_list", "list", "map", "priority_queue", "queue", "set", "stack", "string", "unordered_map", "unordered_set", "vector"],
"unimplemented": True,
}, {
"name": "__cpp_lib_ranges_zip",
"values": { "c++2b": 202110 },
"values": { "c++23": 202110 },
"headers": ["ranges", "tuple", "utility"],
"unimplemented": True,
}, {
Expand All @@ -604,7 +604,7 @@ def add_version_header(tc):
"headers": ["memory"],
}, {
"name": "__cpp_lib_reference_from_temporary",
"values": { "c++2b": 202202 },
"values": { "c++23": 202202 },
"headers": ["type_traits"],
"unimplemented": True,
}, {
Expand Down Expand Up @@ -674,7 +674,7 @@ def add_version_header(tc):
"headers": ["span"],
}, {
"name": "__cpp_lib_spanstream",
"values": { "c++2b": 202106 },
"values": { "c++23": 202106 },
"headers": ["spanstream"],
"unimplemented": True,
}, {
Expand All @@ -683,7 +683,7 @@ def add_version_header(tc):
"headers": ["iterator"],
}, {
"name": "__cpp_lib_stacktrace",
"values": { "c++2b": 202011 },
"values": { "c++23": 202011 },
"headers": ["stacktrace"],
"unimplemented": True,
}, {
Expand All @@ -692,15 +692,15 @@ def add_version_header(tc):
"headers": ["string", "string_view"],
}, {
"name": "__cpp_lib_stdatomic_h",
"values": { "c++2b": 202011 },
"values": { "c++23": 202011 },
"headers": ["stdatomic.h"],
}, {
"name": "__cpp_lib_string_contains",
"values": { "c++2b": 202011 },
"values": { "c++23": 202011 },
"headers": ["string", "string_view"],
}, {
"name": "__cpp_lib_string_resize_and_overwrite",
"values": { "c++2b": 202110 },
"values": { "c++23": 202110 },
"headers": ["string"],
}, {
"name": "__cpp_lib_string_udls",
Expand Down Expand Up @@ -735,7 +735,7 @@ def add_version_header(tc):
"unimplemented": True,
}, {
"name": "__cpp_lib_to_underlying",
"values": { "c++2b": 202102 },
"values": { "c++23": 202102 },
"headers": ["utility"],
}, {
"name": "__cpp_lib_transformation_trait_aliases",
Expand Down Expand Up @@ -771,7 +771,7 @@ def add_version_header(tc):
"headers": ["unordered_map"],
}, {
"name": "__cpp_lib_unreachable",
"values": { "c++2b": 202202 },
"values": { "c++23": 202202 },
"headers": ["utility"],
}, {
"name": "__cpp_lib_unwrap_ref",
Expand Down Expand Up @@ -819,7 +819,7 @@ def add_version_header(tc):
}

def get_std_dialects():
std_dialects = ['c++14', 'c++17', 'c++20', 'c++2b']
std_dialects = ['c++14', 'c++17', 'c++20', 'c++23']
return list(std_dialects)

def get_first_std(d):
Expand Down Expand Up @@ -904,7 +904,7 @@ def produce_macros_definitions():
macros_definitions = []
for std in get_std_dialects():
macros_definitions.append(
macro_definition_template.format(std_number=get_std_number(std).replace('2b', '23'),
macro_definition_template.format(std_number=get_std_number(std),
macro_definition=produce_macros_definition_for_std(std)))

return '\n\n'.join(macros_definitions)
Expand Down Expand Up @@ -1073,7 +1073,6 @@ def generate_std_tests(test_list):
#endif // TEST_STD_VER > {penultimate_std_number}"""

std_dialects = get_std_dialects()
assert not get_std_number(std_dialects[-1]).isnumeric()

other_std_tests = []
for std in std_dialects[:-1]:
Expand Down
2 changes: 1 addition & 1 deletion libcxx/utils/generate_header_inclusion_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ def get_unsupported_line(includee):
"14": ['UNSUPPORTED: c++03, c++11'],
"17": ['UNSUPPORTED: c++03, c++11, c++14'],
"20": ['UNSUPPORTED: c++03, c++11, c++14, c++17'],
"2b": ['UNSUPPORTED: c++03, c++11, c++14, c++17, c++20'],
"23": ['UNSUPPORTED: c++03, c++11, c++14, c++17, c++20'],
}[v]


Expand Down
6 changes: 5 additions & 1 deletion libcxx/utils/libcxx/test/params.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,18 @@
'-Wno-unused-local-typedef',
]

_allStandards = ['c++03', 'c++11', 'c++14', 'c++17', 'c++20', 'c++2b']
_allStandards = ['c++03', 'c++11', 'c++14', 'c++17', 'c++20', 'c++23']
def getStdFlag(cfg, std):
fallbacks = {
'c++11': 'c++0x',
'c++14': 'c++1y',
'c++17': 'c++1z',
'c++20': 'c++2a',
'c++23': 'c++2b',
}
# TODO LLVM 17 Remove this clang-tidy-16 work-around
if std == 'c++23':
std = 'c++2b'
if hasCompileFlag(cfg, '-std='+std):
return '-std='+std
if std in fallbacks and hasCompileFlag(cfg, '-std='+fallbacks[std]):
Expand Down