[libcxx-commits] [libcxx] b699a9b - [libc++] Update status page after the Tokyo meeting (#87395)
via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Apr 3 05:21:16 PDT 2024
Author: Louis Dionne
Date: 2024-04-03T08:21:11-04:00
New Revision: b699a9ba112cd9fc861eccfcdd2a7c9886423bde
URL: https://github.com/llvm/llvm-project/commit/b699a9ba112cd9fc861eccfcdd2a7c9886423bde
DIFF: https://github.com/llvm/llvm-project/commit/b699a9ba112cd9fc861eccfcdd2a7c9886423bde.diff
LOG: [libc++] Update status page after the Tokyo meeting (#87395)
Added:
libcxx/test/std/language.support/support.limits/support.limits.general/random.version.compile.pass.cpp
Modified:
libcxx/docs/FeatureTestMacroTable.rst
libcxx/docs/Status/Cxx2cIssues.csv
libcxx/docs/Status/Cxx2cPapers.csv
libcxx/include/version
libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/atomic.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/deque.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/filesystem.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/list.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/optional.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/ranges.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/tuple.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/variant.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.compile.pass.cpp
libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
libcxx/utils/generate_feature_test_macro_components.py
Removed:
################################################################################
diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst
index b213f430aa5922..014ac1c31e6308 100644
--- a/libcxx/docs/FeatureTestMacroTable.rst
+++ b/libcxx/docs/FeatureTestMacroTable.rst
@@ -21,437 +21,451 @@ Status
:name: feature-status-table
:widths: auto
- =================================================== =================
- Macro Name Value
- =================================================== =================
+ ========================================================== =================
+ Macro Name Value
+ ========================================================== =================
**C++14**
- ---------------------------------------------------------------------
- ``__cpp_lib_chrono_udls`` ``201304L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_complex_udls`` ``201309L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_exchange_function`` ``201304L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_generic_associative_lookup`` ``201304L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_integer_sequence`` ``201304L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_integral_constant_callable`` ``201304L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_is_final`` ``201402L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_is_null_pointer`` ``201309L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_make_reverse_iterator`` ``201402L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_make_unique`` ``201304L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_null_iterators`` ``201304L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_quoted_string_io`` ``201304L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_result_of_sfinae`` ``201210L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_robust_nonmodifying_seq_ops`` ``201304L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_shared_timed_mutex`` ``201402L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_string_udls`` ``201304L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_transformation_trait_aliases`` ``201304L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_transparent_operators`` ``201210L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_tuple_element_t`` ``201402L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_tuples_by_type`` ``201304L``
- --------------------------------------------------- -----------------
+ ----------------------------------------------------------------------------
+ ``__cpp_lib_chrono_udls`` ``201304L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_complex_udls`` ``201309L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_exchange_function`` ``201304L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_generic_associative_lookup`` ``201304L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_integer_sequence`` ``201304L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_integral_constant_callable`` ``201304L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_is_final`` ``201402L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_is_null_pointer`` ``201309L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_make_reverse_iterator`` ``201402L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_make_unique`` ``201304L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_null_iterators`` ``201304L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_quoted_string_io`` ``201304L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_result_of_sfinae`` ``201210L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_robust_nonmodifying_seq_ops`` ``201304L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_shared_timed_mutex`` ``201402L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_string_udls`` ``201304L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_transformation_trait_aliases`` ``201304L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_transparent_operators`` ``201210L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_tuple_element_t`` ``201402L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_tuples_by_type`` ``201304L``
+ ---------------------------------------------------------- -----------------
**C++17**
- ---------------------------------------------------------------------
- ``__cpp_lib_addressof_constexpr`` ``201603L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_allocator_traits_is_always_equal`` ``201411L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_any`` ``201606L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_apply`` ``201603L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_array_constexpr`` ``201603L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_as_const`` ``201510L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_atomic_is_always_lock_free`` ``201603L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_bool_constant`` ``201505L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_boyer_moore_searcher`` ``201603L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_byte`` ``201603L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_chrono`` ``201611L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_clamp`` ``201603L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_enable_shared_from_this`` ``201603L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_execution`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_filesystem`` ``201703L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_gcd_lcm`` ``201606L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_hardware_interference_size`` ``201703L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_has_unique_object_representations`` ``201606L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_hypot`` ``201603L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_incomplete_container_elements`` ``201505L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_invoke`` ``201411L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_is_aggregate`` ``201703L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_is_invocable`` ``201703L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_is_swappable`` ``201603L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_launder`` ``201606L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_logical_traits`` ``201510L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_make_from_tuple`` ``201606L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_map_try_emplace`` ``201411L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_math_special_functions`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_memory_resource`` ``201603L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_node_extract`` ``201606L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_nonmember_container_access`` ``201411L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_not_fn`` ``201603L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_optional`` ``201606L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_parallel_algorithm`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_raw_memory_algorithms`` ``201606L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_sample`` ``201603L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_scoped_lock`` ``201703L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_shared_mutex`` ``201505L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_shared_ptr_arrays`` ``201611L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_shared_ptr_weak_type`` ``201606L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_string_view`` ``201606L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_to_chars`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_transparent_operators`` ``201510L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_type_trait_variable_templates`` ``201510L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_uncaught_exceptions`` ``201411L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_unordered_map_try_emplace`` ``201411L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_variant`` ``202102L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_void_t`` ``201411L``
- --------------------------------------------------- -----------------
+ ----------------------------------------------------------------------------
+ ``__cpp_lib_addressof_constexpr`` ``201603L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_allocator_traits_is_always_equal`` ``201411L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_any`` ``201606L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_apply`` ``201603L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_array_constexpr`` ``201603L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_as_const`` ``201510L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_atomic_is_always_lock_free`` ``201603L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_bool_constant`` ``201505L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_boyer_moore_searcher`` ``201603L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_byte`` ``201603L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_chrono`` ``201611L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_clamp`` ``201603L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_enable_shared_from_this`` ``201603L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_execution`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_filesystem`` ``201703L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_gcd_lcm`` ``201606L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hardware_interference_size`` ``201703L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_has_unique_object_representations`` ``201606L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hypot`` ``201603L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_incomplete_container_elements`` ``201505L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_invoke`` ``201411L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_is_aggregate`` ``201703L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_is_invocable`` ``201703L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_is_swappable`` ``201603L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_launder`` ``201606L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_logical_traits`` ``201510L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_make_from_tuple`` ``201606L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_map_try_emplace`` ``201411L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_math_special_functions`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_memory_resource`` ``201603L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_node_extract`` ``201606L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_nonmember_container_access`` ``201411L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_not_fn`` ``201603L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_optional`` ``201606L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_parallel_algorithm`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_raw_memory_algorithms`` ``201606L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_sample`` ``201603L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_scoped_lock`` ``201703L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_shared_mutex`` ``201505L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_shared_ptr_arrays`` ``201611L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_shared_ptr_weak_type`` ``201606L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_string_view`` ``201606L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_to_chars`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_transparent_operators`` ``201510L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_type_trait_variable_templates`` ``201510L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_uncaught_exceptions`` ``201411L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_unordered_map_try_emplace`` ``201411L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_variant`` ``202102L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_void_t`` ``201411L``
+ ---------------------------------------------------------- -----------------
**C++20**
- ---------------------------------------------------------------------
- ``__cpp_lib_array_constexpr`` ``201811L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_assume_aligned`` ``201811L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_atomic_flag_test`` ``201907L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_atomic_float`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_atomic_lock_free_type_aliases`` ``201907L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_atomic_ref`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_atomic_shared_ptr`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_atomic_value_initialization`` ``201911L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_atomic_wait`` ``201907L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_barrier`` ``201907L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_bind_front`` ``201907L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_bit_cast`` ``201806L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_bitops`` ``201907L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_bounded_array_traits`` ``201902L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_char8_t`` ``201907L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_concepts`` ``202002L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_constexpr_algorithms`` ``201806L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_constexpr_complex`` ``201711L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_constexpr_dynamic_alloc`` ``201907L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_constexpr_functional`` ``201907L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_constexpr_iterator`` ``201811L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_constexpr_memory`` ``201811L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_constexpr_numeric`` ``201911L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_constexpr_string`` ``201907L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_constexpr_string_view`` ``201811L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_constexpr_tuple`` ``201811L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_constexpr_utility`` ``201811L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_constexpr_vector`` ``201907L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_coroutine`` ``201902L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_destroying_delete`` ``201806L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_endian`` ``201907L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_erase_if`` ``202002L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_execution`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_format`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_format_uchar`` ``202311L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_generic_unordered_lookup`` ``201811L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_int_pow2`` ``202002L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_integer_comparison_functions`` ``202002L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_interpolate`` ``201902L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_is_constant_evaluated`` ``201811L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_is_layout_compatible`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_is_nothrow_convertible`` ``201806L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_is_pointer_interconvertible`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_jthread`` ``201911L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_latch`` ``201907L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_list_remove_return_type`` ``201806L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_math_constants`` ``201907L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_move_iterator_concept`` ``202207L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_polymorphic_allocator`` ``201902L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_ranges`` ``202207L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_remove_cvref`` ``201711L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_semaphore`` ``201907L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_shared_ptr_arrays`` ``201707L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_shift`` ``201806L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_smart_ptr_for_overwrite`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_source_location`` ``201907L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_span`` ``202002L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_ssize`` ``201902L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_starts_ends_with`` ``201711L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_string_view`` ``201803L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_syncbuf`` ``201803L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_three_way_comparison`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_to_address`` ``201711L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_to_array`` ``201907L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_type_identity`` ``201806L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_unwrap_ref`` ``201811L``
- --------------------------------------------------- -----------------
+ ----------------------------------------------------------------------------
+ ``__cpp_lib_array_constexpr`` ``201811L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_assume_aligned`` ``201811L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_atomic_flag_test`` ``201907L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_atomic_float`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_atomic_lock_free_type_aliases`` ``201907L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_atomic_ref`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_atomic_shared_ptr`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_atomic_value_initialization`` ``201911L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_atomic_wait`` ``201907L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_barrier`` ``201907L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_bind_front`` ``201907L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_bit_cast`` ``201806L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_bitops`` ``201907L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_bounded_array_traits`` ``201902L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_char8_t`` ``201907L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_concepts`` ``202002L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_algorithms`` ``201806L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_complex`` ``201711L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_dynamic_alloc`` ``201907L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_functional`` ``201907L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_iterator`` ``201811L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_memory`` ``201811L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_numeric`` ``201911L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_string`` ``201907L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_string_view`` ``201811L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_tuple`` ``201811L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_utility`` ``201811L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_vector`` ``201907L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_coroutine`` ``201902L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_destroying_delete`` ``201806L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_endian`` ``201907L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_erase_if`` ``202002L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_execution`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_format`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_format_uchar`` ``202311L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_generic_unordered_lookup`` ``201811L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_int_pow2`` ``202002L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_integer_comparison_functions`` ``202002L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_interpolate`` ``201902L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_is_constant_evaluated`` ``201811L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_is_layout_compatible`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_is_nothrow_convertible`` ``201806L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_is_pointer_interconvertible`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_jthread`` ``201911L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_latch`` ``201907L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_list_remove_return_type`` ``201806L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_math_constants`` ``201907L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_move_iterator_concept`` ``202207L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_polymorphic_allocator`` ``201902L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_ranges`` ``202207L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_remove_cvref`` ``201711L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_semaphore`` ``201907L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_shared_ptr_arrays`` ``201707L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_shift`` ``201806L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_smart_ptr_for_overwrite`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_source_location`` ``201907L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_span`` ``202002L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_ssize`` ``201902L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_starts_ends_with`` ``201711L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_string_view`` ``201803L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_syncbuf`` ``201803L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_three_way_comparison`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_to_address`` ``201711L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_to_array`` ``201907L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_type_identity`` ``201806L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_unwrap_ref`` ``201811L``
+ ---------------------------------------------------------- -----------------
**C++23**
- ---------------------------------------------------------------------
- ``__cpp_lib_adaptor_iterator_pair_constructor`` ``202106L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_allocate_at_least`` ``202302L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_associative_heterogeneous_erasure`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_bind_back`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_byteswap`` ``202110L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_constexpr_bitset`` ``202207L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_constexpr_charconv`` ``202207L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_constexpr_cmath`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_constexpr_memory`` ``202202L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_constexpr_typeinfo`` ``202106L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_expected`` ``202211L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_format_ranges`` ``202207L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_formatters`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_forward_like`` ``202207L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_invoke_r`` ``202106L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_ios_noreplace`` ``202207L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_is_scoped_enum`` ``202011L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_mdspan`` ``202207L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_move_only_function`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_optional`` ``202110L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_out_ptr`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_print`` ``202207L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_ranges_as_const`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_ranges_as_rvalue`` ``202207L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_ranges_chunk`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_ranges_chunk_by`` ``202202L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_ranges_contains`` ``202207L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_ranges_iota`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_ranges_join_with`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_ranges_repeat`` ``202207L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_ranges_slide`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_ranges_starts_ends_with`` ``202106L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_ranges_to_container`` ``202202L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_ranges_zip`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_reference_from_temporary`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_spanstream`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_stacktrace`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_stdatomic_h`` ``202011L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_string_contains`` ``202011L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_string_resize_and_overwrite`` ``202110L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_to_string`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_to_underlying`` ``202102L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_tuple_like`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_unreachable`` ``202202L``
- --------------------------------------------------- -----------------
+ ----------------------------------------------------------------------------
+ ``__cpp_lib_adaptor_iterator_pair_constructor`` ``202106L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_allocate_at_least`` ``202302L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_associative_heterogeneous_erasure`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_bind_back`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_byteswap`` ``202110L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_bitset`` ``202207L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_charconv`` ``202207L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_cmath`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_memory`` ``202202L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constexpr_typeinfo`` ``202106L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_expected`` ``202211L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_format_path`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_format_ranges`` ``202207L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_formatters`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_forward_like`` ``202207L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_invoke_r`` ``202106L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_ios_noreplace`` ``202207L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_is_scoped_enum`` ``202011L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_mdspan`` ``202207L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_move_only_function`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_optional`` ``202110L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_out_ptr`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_print`` ``202207L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_as_const`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_as_rvalue`` ``202207L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_chunk`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_chunk_by`` ``202202L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_contains`` ``202207L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_iota`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_join_with`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_repeat`` ``202207L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_slide`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_starts_ends_with`` ``202106L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_to_container`` ``202202L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_zip`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_reference_from_temporary`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_spanstream`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_stacktrace`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_stdatomic_h`` ``202011L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_string_contains`` ``202011L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_string_resize_and_overwrite`` ``202110L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_to_string`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_to_underlying`` ``202102L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_tuple_like`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_unreachable`` ``202202L``
+ ---------------------------------------------------------- -----------------
**C++26**
- ---------------------------------------------------------------------
- ``__cpp_lib_associative_heterogeneous_insertion`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_bind_back`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_bind_front`` ``202306L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_bitset`` ``202306L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_copyable_function`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_debugging`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_freestanding_algorithm`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_freestanding_array`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_freestanding_cstring`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_freestanding_expected`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_freestanding_mdspan`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_freestanding_optional`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_freestanding_string_view`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_freestanding_variant`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_fstream_native_handle`` ``202306L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_function_ref`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_hazard_pointer`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_linalg`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_out_ptr`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_ratio`` ``202306L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_rcu`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_saturation_arithmetic`` ``202311L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_smart_ptr_owner_equality`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_span_at`` ``202311L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_span_initializer_list`` ``202311L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_sstream_from_string_view`` ``202306L``
- --------------------------------------------------- -----------------
- ``__cpp_lib_submdspan`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_text_encoding`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_to_chars`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_tuple_like`` *unimplemented*
- --------------------------------------------------- -----------------
- ``__cpp_lib_within_lifetime`` *unimplemented*
- =================================================== =================
+ ----------------------------------------------------------------------------
+ ``__cpp_lib_associative_heterogeneous_insertion`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_atomic_min_max`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_bind_back`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_bind_front`` ``202306L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_bitset`` ``202306L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_constrained_equality`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_copyable_function`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_debugging`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_default_template_type_for_algorithm_values`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_freestanding_algorithm`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_freestanding_array`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_freestanding_cstring`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_freestanding_expected`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_freestanding_mdspan`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_freestanding_optional`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_freestanding_string_view`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_freestanding_variant`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_fstream_native_handle`` ``202306L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_function_ref`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_generate_random`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_hazard_pointer`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_linalg`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_out_ptr`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_ranges_concat`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_ratio`` ``202306L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_rcu`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_reference_wrapper`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_saturation_arithmetic`` ``202311L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_smart_ptr_owner_equality`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_span_at`` ``202311L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_span_initializer_list`` ``202311L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_sstream_from_string_view`` ``202306L``
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_submdspan`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_text_encoding`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_to_chars`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_tuple_like`` *unimplemented*
+ ---------------------------------------------------------- -----------------
+ ``__cpp_lib_within_lifetime`` *unimplemented*
+ ========================================================== =================
diff --git a/libcxx/docs/Status/Cxx2cIssues.csv b/libcxx/docs/Status/Cxx2cIssues.csv
index 58e995809777c1..f471c430b19c18 100644
--- a/libcxx/docs/Status/Cxx2cIssues.csv
+++ b/libcxx/docs/Status/Cxx2cIssues.csv
@@ -40,5 +40,27 @@
"`3990 <https://wg21.link/LWG3990>`__","Program-defined specializations of ``std::tuple`` and ``std::variant`` can't be properly supported","Kona November 2023","","",""
"`4001 <https://wg21.link/LWG4001>`__","``iota_view`` should provide ``empty``","Kona November 2023","","","|ranges|"
"","","","","",""
+"`3767 <https://wg21.link/LWG3767>`__","``codecvt<charN_t, char8_t, mbstate_t>`` incorrectly added to locale","Tokyo March 2024","","",""
+"`3919 <https://wg21.link/LWG3919>`__","``enumerate_view`` may invoke UB for sized common non-forward underlying ranges","Tokyo March 2024","","","|ranges|"
+"`3950 <https://wg21.link/LWG3950>`__","``std::basic_string_view`` comparison operators are overspecified","Tokyo March 2024","","",""
+"`3975 <https://wg21.link/LWG3975>`__","Specializations of ``basic_format_context`` should not be permitted","Tokyo March 2024","","","|format|"
+"`3984 <https://wg21.link/LWG3984>`__","``ranges::to``'s recursion branch may be ill-formed","Tokyo March 2024","","","|ranges|"
+"`4011 <https://wg21.link/LWG4011>`__","``""Effects: Equivalent to return""`` in ``[span.elem]``","Tokyo March 2024","","",""
+"`4012 <https://wg21.link/LWG4012>`__","``common_view::begin/end`` are missing the ``simple-view`` check","Tokyo March 2024","","","|ranges|"
+"`4013 <https://wg21.link/LWG4013>`__","``lazy_split_view::outer-iterator::value_type`` should not provide default constructor","Tokyo March 2024","","","|ranges|"
+"`4016 <https://wg21.link/LWG4016>`__","container-insertable checks do not match what container-inserter does","Tokyo March 2024","","",""
+"`4023 <https://wg21.link/LWG4023>`__","Preconditions of ``std::basic_streambuf::setg/setp``","Tokyo March 2024","","",""
+"`4025 <https://wg21.link/LWG4025>`__","Move assignment operator of ``std::expected<cv void, E>`` should not be conditionally deleted","Tokyo March 2024","","",""
+"`4030 <https://wg21.link/LWG4030>`__","Clarify whether arithmetic expressions in ``[numeric.sat.func]`` are mathematical or C++","Tokyo March 2024","","",""
+"`4031 <https://wg21.link/LWG4031>`__","``bad_expected_access<void>`` member functions should be ``noexcept``","Tokyo March 2024","","",""
+"`4035 <https://wg21.link/LWG4035>`__","``single_view`` should provide ``empty``","Tokyo March 2024","","","|ranges|"
+"`4036 <https://wg21.link/LWG4036>`__","``__alignof_is_defined`` is only implicitly specified in C++ and not yet deprecated","Tokyo March 2024","","",""
+"`4037 <https://wg21.link/LWG4037>`__","Static data members of ``ctype_base`` are not yet required to be usable in constant expressions","Tokyo March 2024","","",""
+"`4038 <https://wg21.link/LWG4038>`__","``std::text_encoding::aliases_view`` should have constexpr iterators","Tokyo March 2024","","",""
+"`4043 <https://wg21.link/LWG4043>`__","""ASCII"" is not a registered character encoding","Tokyo March 2024","","",""
+"`4045 <https://wg21.link/LWG4045>`__","``tuple`` can create dangling references from ``tuple-like``","Tokyo March 2024","","",""
+"`4053 <https://wg21.link/LWG4053>`__","Unary call to ``std::views::repeat`` does not decay the argument","Tokyo March 2024","","","|ranges|"
+"`4054 <https://wg21.link/LWG4054>`__","Repeating a ``repeat_view`` should repeat the view","Tokyo March 2024","","","|ranges|"
+"","","","","",""
"`3343 <https://wg21.link/LWG3343>`__","Ordering of calls to ``unlock()`` and ``notify_all()`` in Effects element of ``notify_all_at_thread_exit()`` should be reversed","Not Yet Adopted","|Complete|","16.0",""
"","","","","",""
diff --git a/libcxx/docs/Status/Cxx2cPapers.csv b/libcxx/docs/Status/Cxx2cPapers.csv
index 4a5443dea115c8..efccd169433379 100644
--- a/libcxx/docs/Status/Cxx2cPapers.csv
+++ b/libcxx/docs/Status/Cxx2cPapers.csv
@@ -46,3 +46,20 @@
"`P2264R7 <https://wg21.link/P2264R7>`__","LWG","Make ``assert()`` macro user friendly for C and C++","Kona November 2023","","",""
"`P1673R13 <https://wg21.link/P1673R13>`__","LWG","A free function linear algebra interface based on the BLAS","Kona November 2023","","",""
"","","","","","",""
+"`P2875R4 <https://wg21.link/P2875R4>`__","LWG","Undeprecate ``polymorphic_allocator::destroy`` for C++26","Tokyo March 2024","","",""
+"`P2867R2 <https://wg21.link/P2867R2>`__","LWG","Remove Deprecated ``strstreams`` From C++26","Tokyo March 2024","","",""
+"`P2869R4 <https://wg21.link/P2869R4>`__","LWG","Remove Deprecated ``shared_ptr`` Atomic Access APIs from C++26","Tokyo March 2024","","",""
+"`P2872R3 <https://wg21.link/P2872R3>`__","LWG","Remove ``wstring_convert`` From C++26","Tokyo March 2024","","",""
+"`P3107R5 <https://wg21.link/P3107R5>`__","LWG","Permit an efficient implementation of ``std::print``","Tokyo March 2024","","","|format| |DR|"
+"`P3142R0 <https://wg21.link/P3142R0>`__","LWG","Printing Blank Lines with ``println``","Tokyo March 2024","","","|format|"
+"`P2845R8 <https://wg21.link/P2845R8>`__","LWG","Formatting of ``std::filesystem::path``","Tokyo March 2024","","","|format|"
+"`P0493R5 <https://wg21.link/P0493R5>`__","LWG","Atomic minimum/maximum","Tokyo March 2024","","",""
+"`P2542R8 <https://wg21.link/P2542R8>`__","LWG","``views::concat``","Tokyo March 2024","","","|ranges|"
+"`P2591R5 <https://wg21.link/P2591R5>`__","LWG","Concatenation of strings and string views","Tokyo March 2024","","",""
+"`P2248R8 <https://wg21.link/P2248R8>`__","LWG","Enabling list-initialization for algorithms","Tokyo March 2024","","",""
+"`P2810R4 <https://wg21.link/P2810R4>`__","LWG","``is_debugger_present`` ``is_replaceable``","Tokyo March 2024","","",""
+"`P1068R11 <https://wg21.link/P1068R11>`__","LWG","Vector API for random number generation","Tokyo March 2024","","",""
+"`P2944R3 <https://wg21.link/P2944R3>`__","LWG","Comparisons for ``reference_wrapper``","Tokyo March 2024","","",""
+"`P2642R6 <https://wg21.link/P2642R6>`__","LWG","Padded ``mdspan`` layouts","Tokyo March 2024","","",""
+"`P3029R1 <https://wg21.link/P3029R1>`__","LWG","Better ``mdspan``'s CTAD","Tokyo March 2024","","",""
+"","","","","","",""
diff --git a/libcxx/include/version b/libcxx/include/version
index 3bd296e34aa4e3..90dc1b279c6c25 100644
--- a/libcxx/include/version
+++ b/libcxx/include/version
@@ -35,6 +35,7 @@ __cpp_lib_atomic_flag_test 201907L <atomic>
__cpp_lib_atomic_float 201711L <atomic>
__cpp_lib_atomic_is_always_lock_free 201603L <atomic>
__cpp_lib_atomic_lock_free_type_aliases 201907L <atomic>
+__cpp_lib_atomic_min_max 202403L <atomic>
__cpp_lib_atomic_ref 201806L <atomic>
__cpp_lib_atomic_shared_ptr 201711L <atomic>
__cpp_lib_atomic_value_initialization 201911L <atomic> <memory>
@@ -77,9 +78,14 @@ __cpp_lib_constexpr_tuple 201811L <tuple>
__cpp_lib_constexpr_typeinfo 202106L <typeinfo>
__cpp_lib_constexpr_utility 201811L <utility>
__cpp_lib_constexpr_vector 201907L <vector>
+__cpp_lib_constrained_equality 202403L <optional> <tuple> <utility>
+ <variant>
__cpp_lib_copyable_function 202306L <functional>
__cpp_lib_coroutine 201902L <coroutine>
__cpp_lib_debugging 202311L <debugging>
+__cpp_lib_default_template_type_for_algorithm_values 202403L <algorithm> <deque> <forward_list>
+ <list> <ranges> <string>
+ <vector>
__cpp_lib_destroying_delete 201806L <new>
__cpp_lib_enable_shared_from_this 201603L <memory>
__cpp_lib_endian 201907L <bit>
@@ -92,6 +98,7 @@ __cpp_lib_execution 201902L <execution>
__cpp_lib_expected 202211L <expected>
__cpp_lib_filesystem 201703L <filesystem>
__cpp_lib_format 202106L <format>
+__cpp_lib_format_path 202403L <filesystem>
__cpp_lib_format_ranges 202207L <format>
__cpp_lib_format_uchar 202311L <format>
__cpp_lib_formatters 202302L <stacktrace> <thread>
@@ -107,6 +114,7 @@ __cpp_lib_freestanding_variant 202311L <variant>
__cpp_lib_fstream_native_handle 202306L <fstream>
__cpp_lib_function_ref 202306L <functional>
__cpp_lib_gcd_lcm 201606L <numeric>
+__cpp_lib_generate_random 202403L <random>
__cpp_lib_generic_associative_lookup 201304L <map> <set>
__cpp_lib_generic_unordered_lookup 201811L <unordered_map> <unordered_set>
__cpp_lib_hardware_interference_size 201703L <new>
@@ -170,6 +178,7 @@ __cpp_lib_ranges_as_const 202207L <ranges>
__cpp_lib_ranges_as_rvalue 202207L <ranges>
__cpp_lib_ranges_chunk 202202L <ranges>
__cpp_lib_ranges_chunk_by 202202L <ranges>
+__cpp_lib_ranges_concat 202403L <ranges>
__cpp_lib_ranges_contains 202207L <algorithm>
__cpp_lib_ranges_iota 202202L <numeric>
__cpp_lib_ranges_join_with 202202L <ranges>
@@ -185,6 +194,7 @@ __cpp_lib_ratio 202306L <ratio>
__cpp_lib_raw_memory_algorithms 201606L <memory>
__cpp_lib_rcu 202306L <rcu>
__cpp_lib_reference_from_temporary 202202L <type_traits>
+__cpp_lib_reference_wrapper 202403L <functional>
__cpp_lib_remove_cvref 201711L <type_traits>
__cpp_lib_result_of_sfinae 201210L <functional> <type_traits>
__cpp_lib_robust_nonmodifying_seq_ops 201304L <algorithm>
@@ -448,6 +458,7 @@ __cpp_lib_within_lifetime 202306L <type_traits>
# define __cpp_lib_constexpr_memory 202202L
# define __cpp_lib_constexpr_typeinfo 202106L
# define __cpp_lib_expected 202211L
+// # define __cpp_lib_format_path 202403L
# define __cpp_lib_format_ranges 202207L
// # define __cpp_lib_formatters 202302L
# define __cpp_lib_forward_like 202207L
@@ -486,13 +497,16 @@ __cpp_lib_within_lifetime 202306L <type_traits>
#if _LIBCPP_STD_VER >= 26
// # define __cpp_lib_associative_heterogeneous_insertion 202306L
+// # define __cpp_lib_atomic_min_max 202403L
# undef __cpp_lib_bind_back
// # define __cpp_lib_bind_back 202306L
# undef __cpp_lib_bind_front
# define __cpp_lib_bind_front 202306L
# define __cpp_lib_bitset 202306L
+// # define __cpp_lib_constrained_equality 202403L
// # define __cpp_lib_copyable_function 202306L
// # define __cpp_lib_debugging 202311L
+// # define __cpp_lib_default_template_type_for_algorithm_values 202403L
// # define __cpp_lib_freestanding_algorithm 202311L
// # define __cpp_lib_freestanding_array 202311L
// # define __cpp_lib_freestanding_cstring 202306L
@@ -505,12 +519,15 @@ __cpp_lib_within_lifetime 202306L <type_traits>
# define __cpp_lib_fstream_native_handle 202306L
# endif
// # define __cpp_lib_function_ref 202306L
+// # define __cpp_lib_generate_random 202403L
// # define __cpp_lib_hazard_pointer 202306L
// # define __cpp_lib_linalg 202311L
# undef __cpp_lib_out_ptr
// # define __cpp_lib_out_ptr 202311L
+// # define __cpp_lib_ranges_concat 202403L
# define __cpp_lib_ratio 202306L
// # define __cpp_lib_rcu 202306L
+// # define __cpp_lib_reference_wrapper 202403L
# define __cpp_lib_saturation_arithmetic 202311L
// # define __cpp_lib_smart_ptr_owner_equality 202306L
# define __cpp_lib_span_at 202311L
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.compile.pass.cpp
index ece13b0a232cee..8ccd252115ac82 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.compile.pass.cpp
@@ -15,17 +15,18 @@
// Test the feature test macros defined by <algorithm>
-/* Constant Value
- __cpp_lib_clamp 201603L [C++17]
- __cpp_lib_constexpr_algorithms 201806L [C++20]
- __cpp_lib_freestanding_algorithm 202311L [C++26]
- __cpp_lib_parallel_algorithm 201603L [C++17]
- __cpp_lib_ranges 202207L [C++20]
- __cpp_lib_ranges_contains 202207L [C++23]
- __cpp_lib_ranges_starts_ends_with 202106L [C++23]
- __cpp_lib_robust_nonmodifying_seq_ops 201304L [C++14]
- __cpp_lib_sample 201603L [C++17]
- __cpp_lib_shift 201806L [C++20]
+/* Constant Value
+ __cpp_lib_clamp 201603L [C++17]
+ __cpp_lib_constexpr_algorithms 201806L [C++20]
+ __cpp_lib_default_template_type_for_algorithm_values 202403L [C++26]
+ __cpp_lib_freestanding_algorithm 202311L [C++26]
+ __cpp_lib_parallel_algorithm 201603L [C++17]
+ __cpp_lib_ranges 202207L [C++20]
+ __cpp_lib_ranges_contains 202207L [C++23]
+ __cpp_lib_ranges_starts_ends_with 202106L [C++23]
+ __cpp_lib_robust_nonmodifying_seq_ops 201304L [C++14]
+ __cpp_lib_sample 201603L [C++17]
+ __cpp_lib_shift 201806L [C++20]
*/
#include <algorithm>
@@ -41,6 +42,10 @@
# error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_freestanding_algorithm
# error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
# endif
@@ -83,6 +88,10 @@
# error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_freestanding_algorithm
# error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
# endif
@@ -131,6 +140,10 @@
# error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_freestanding_algorithm
# error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
# endif
@@ -194,6 +207,10 @@
# error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++20"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_freestanding_algorithm
# error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
# endif
@@ -263,6 +280,10 @@
# error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++23"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_freestanding_algorithm
# error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
# endif
@@ -338,6 +359,19 @@
# error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should be defined in c++26"
+# endif
+# if __cpp_lib_default_template_type_for_algorithm_values != 202403L
+# error "__cpp_lib_default_template_type_for_algorithm_values should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_freestanding_algorithm
# error "__cpp_lib_freestanding_algorithm should be defined in c++26"
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/atomic.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/atomic.version.compile.pass.cpp
index 86315c23a496bf..c907b7d840e30d 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/atomic.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/atomic.version.compile.pass.cpp
@@ -20,6 +20,7 @@
__cpp_lib_atomic_float 201711L [C++20]
__cpp_lib_atomic_is_always_lock_free 201603L [C++17]
__cpp_lib_atomic_lock_free_type_aliases 201907L [C++20]
+ __cpp_lib_atomic_min_max 202403L [C++26]
__cpp_lib_atomic_ref 201806L [C++20]
__cpp_lib_atomic_shared_ptr 201711L [C++20]
__cpp_lib_atomic_value_initialization 201911L [C++20]
@@ -48,6 +49,10 @@
# error "__cpp_lib_atomic_lock_free_type_aliases should not be defined before c++20"
# endif
+# ifdef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_atomic_ref
# error "__cpp_lib_atomic_ref should not be defined before c++20"
# endif
@@ -86,6 +91,10 @@
# error "__cpp_lib_atomic_lock_free_type_aliases should not be defined before c++20"
# endif
+# ifdef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_atomic_ref
# error "__cpp_lib_atomic_ref should not be defined before c++20"
# endif
@@ -127,6 +136,10 @@
# error "__cpp_lib_atomic_lock_free_type_aliases should not be defined before c++20"
# endif
+# ifdef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_atomic_ref
# error "__cpp_lib_atomic_ref should not be defined before c++20"
# endif
@@ -183,6 +196,10 @@
# error "__cpp_lib_atomic_lock_free_type_aliases should have the value 201907L in c++20"
# endif
+# ifdef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should not be defined before c++26"
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_atomic_ref
# error "__cpp_lib_atomic_ref should be defined in c++20"
@@ -278,6 +295,10 @@
# error "__cpp_lib_atomic_lock_free_type_aliases should have the value 201907L in c++23"
# endif
+# ifdef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should not be defined before c++26"
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_atomic_ref
# error "__cpp_lib_atomic_ref should be defined in c++23"
@@ -373,6 +394,19 @@
# error "__cpp_lib_atomic_lock_free_type_aliases should have the value 201907L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_min_max != 202403L
+# error "__cpp_lib_atomic_min_max should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_atomic_ref
# error "__cpp_lib_atomic_ref should be defined in c++26"
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/deque.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/deque.version.compile.pass.cpp
index 4a398e23063422..720557f33e2a14 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/deque.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/deque.version.compile.pass.cpp
@@ -15,11 +15,12 @@
// Test the feature test macros defined by <deque>
-/* Constant Value
- __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
- __cpp_lib_erase_if 202002L [C++20]
- __cpp_lib_nonmember_container_access 201411L [C++17]
- __cpp_lib_ranges_to_container 202202L [C++23]
+/* Constant Value
+ __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
+ __cpp_lib_default_template_type_for_algorithm_values 202403L [C++26]
+ __cpp_lib_erase_if 202002L [C++20]
+ __cpp_lib_nonmember_container_access 201411L [C++17]
+ __cpp_lib_ranges_to_container 202202L [C++23]
*/
#include <deque>
@@ -31,6 +32,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
@@ -49,6 +54,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
@@ -70,6 +79,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++17"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
@@ -94,6 +107,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++20"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++20"
# endif
@@ -121,6 +138,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++23"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++23"
# endif
@@ -151,6 +172,19 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should be defined in c++26"
+# endif
+# if __cpp_lib_default_template_type_for_algorithm_values != 202403L
+# error "__cpp_lib_default_template_type_for_algorithm_values should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++26"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/filesystem.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/filesystem.version.compile.pass.cpp
index 3f03e8be9aeab3..308cc2d43b0586 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/filesystem.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/filesystem.version.compile.pass.cpp
@@ -17,9 +17,10 @@
// Test the feature test macros defined by <filesystem>
-/* Constant Value
- __cpp_lib_char8_t 201907L [C++20]
- __cpp_lib_filesystem 201703L [C++17]
+/* Constant Value
+ __cpp_lib_char8_t 201907L [C++20]
+ __cpp_lib_filesystem 201703L [C++17]
+ __cpp_lib_format_path 202403L [C++23]
*/
#include <filesystem>
@@ -35,6 +36,10 @@
# error "__cpp_lib_filesystem should not be defined before c++17"
# endif
+# ifdef __cpp_lib_format_path
+# error "__cpp_lib_format_path should not be defined before c++23"
+# endif
+
#elif TEST_STD_VER == 14
# ifdef __cpp_lib_char8_t
@@ -45,6 +50,10 @@
# error "__cpp_lib_filesystem should not be defined before c++17"
# endif
+# ifdef __cpp_lib_format_path
+# error "__cpp_lib_format_path should not be defined before c++23"
+# endif
+
#elif TEST_STD_VER == 17
# ifdef __cpp_lib_char8_t
@@ -64,6 +73,10 @@
# endif
# endif
+# ifdef __cpp_lib_format_path
+# error "__cpp_lib_format_path should not be defined before c++23"
+# endif
+
#elif TEST_STD_VER == 20
# if defined(__cpp_char8_t)
@@ -92,6 +105,10 @@
# endif
# endif
+# ifdef __cpp_lib_format_path
+# error "__cpp_lib_format_path should not be defined before c++23"
+# endif
+
#elif TEST_STD_VER == 23
# if defined(__cpp_char8_t)
@@ -120,6 +137,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_format_path
+# error "__cpp_lib_format_path should be defined in c++23"
+# endif
+# if __cpp_lib_format_path != 202403L
+# error "__cpp_lib_format_path should have the value 202403L in c++23"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_format_path
+# error "__cpp_lib_format_path should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
#elif TEST_STD_VER > 23
# if defined(__cpp_char8_t)
@@ -148,5 +178,18 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_format_path
+# error "__cpp_lib_format_path should be defined in c++26"
+# endif
+# if __cpp_lib_format_path != 202403L
+# error "__cpp_lib_format_path should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_format_path
+# error "__cpp_lib_format_path should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
#endif // TEST_STD_VER > 23
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.compile.pass.cpp
index b163943114f776..9305cf0c54b959 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/forward_list.version.compile.pass.cpp
@@ -15,13 +15,14 @@
// Test the feature test macros defined by <forward_list>
-/* Constant Value
- __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
- __cpp_lib_erase_if 202002L [C++20]
- __cpp_lib_incomplete_container_elements 201505L [C++17]
- __cpp_lib_list_remove_return_type 201806L [C++20]
- __cpp_lib_nonmember_container_access 201411L [C++17]
- __cpp_lib_ranges_to_container 202202L [C++23]
+/* Constant Value
+ __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
+ __cpp_lib_default_template_type_for_algorithm_values 202403L [C++26]
+ __cpp_lib_erase_if 202002L [C++20]
+ __cpp_lib_incomplete_container_elements 201505L [C++17]
+ __cpp_lib_list_remove_return_type 201806L [C++20]
+ __cpp_lib_nonmember_container_access 201411L [C++17]
+ __cpp_lib_ranges_to_container 202202L [C++23]
*/
#include <forward_list>
@@ -33,6 +34,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
@@ -59,6 +64,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
@@ -88,6 +97,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++17"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
@@ -123,6 +136,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++20"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++20"
# endif
@@ -164,6 +181,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++23"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++23"
# endif
@@ -208,6 +229,19 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should be defined in c++26"
+# endif
+# if __cpp_lib_default_template_type_for_algorithm_values != 202403L
+# error "__cpp_lib_default_template_type_for_algorithm_values should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++26"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.compile.pass.cpp
index 72c96c62b64c45..fa4d9baa283727 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/functional.version.compile.pass.cpp
@@ -29,6 +29,7 @@
__cpp_lib_move_only_function 202110L [C++23]
__cpp_lib_not_fn 201603L [C++17]
__cpp_lib_ranges 202207L [C++20]
+ __cpp_lib_reference_wrapper 202403L [C++26]
__cpp_lib_result_of_sfinae 201210L [C++14]
__cpp_lib_transparent_operators 201210L [C++14]
201510L [C++17]
@@ -84,6 +85,10 @@
# error "__cpp_lib_ranges should not be defined before c++20"
# endif
+# ifdef __cpp_lib_reference_wrapper
+# error "__cpp_lib_reference_wrapper should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_result_of_sfinae
# error "__cpp_lib_result_of_sfinae should not be defined before c++14"
# endif
@@ -142,6 +147,10 @@
# error "__cpp_lib_ranges should not be defined before c++20"
# endif
+# ifdef __cpp_lib_reference_wrapper
+# error "__cpp_lib_reference_wrapper should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_result_of_sfinae
# error "__cpp_lib_result_of_sfinae should be defined in c++14"
# endif
@@ -215,6 +224,10 @@
# error "__cpp_lib_ranges should not be defined before c++20"
# endif
+# ifdef __cpp_lib_reference_wrapper
+# error "__cpp_lib_reference_wrapper should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_result_of_sfinae
# error "__cpp_lib_result_of_sfinae should be defined in c++17"
# endif
@@ -297,6 +310,10 @@
# error "__cpp_lib_ranges should have the value 202207L in c++20"
# endif
+# ifdef __cpp_lib_reference_wrapper
+# error "__cpp_lib_reference_wrapper should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_result_of_sfinae
# error "__cpp_lib_result_of_sfinae should be defined in c++20"
# endif
@@ -403,6 +420,10 @@
# error "__cpp_lib_ranges should have the value 202207L in c++23"
# endif
+# ifdef __cpp_lib_reference_wrapper
+# error "__cpp_lib_reference_wrapper should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_result_of_sfinae
# error "__cpp_lib_result_of_sfinae should be defined in c++23"
# endif
@@ -527,6 +548,19 @@
# error "__cpp_lib_ranges should have the value 202207L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_reference_wrapper
+# error "__cpp_lib_reference_wrapper should be defined in c++26"
+# endif
+# if __cpp_lib_reference_wrapper != 202403L
+# error "__cpp_lib_reference_wrapper should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_reference_wrapper
+# error "__cpp_lib_reference_wrapper should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_result_of_sfinae
# error "__cpp_lib_result_of_sfinae should be defined in c++26"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/list.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/list.version.compile.pass.cpp
index 48bff77f91d96f..12225612b80d80 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/list.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/list.version.compile.pass.cpp
@@ -15,13 +15,14 @@
// Test the feature test macros defined by <list>
-/* Constant Value
- __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
- __cpp_lib_erase_if 202002L [C++20]
- __cpp_lib_incomplete_container_elements 201505L [C++17]
- __cpp_lib_list_remove_return_type 201806L [C++20]
- __cpp_lib_nonmember_container_access 201411L [C++17]
- __cpp_lib_ranges_to_container 202202L [C++23]
+/* Constant Value
+ __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
+ __cpp_lib_default_template_type_for_algorithm_values 202403L [C++26]
+ __cpp_lib_erase_if 202002L [C++20]
+ __cpp_lib_incomplete_container_elements 201505L [C++17]
+ __cpp_lib_list_remove_return_type 201806L [C++20]
+ __cpp_lib_nonmember_container_access 201411L [C++17]
+ __cpp_lib_ranges_to_container 202202L [C++23]
*/
#include <list>
@@ -33,6 +34,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
@@ -59,6 +64,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should not be defined before c++17"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
@@ -88,6 +97,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++17"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
@@ -123,6 +136,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++20"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++20"
# endif
@@ -164,6 +181,10 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++23"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++23"
# endif
@@ -208,6 +229,19 @@
# error "__cpp_lib_allocator_traits_is_always_equal should have the value 201411L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should be defined in c++26"
+# endif
+# if __cpp_lib_default_template_type_for_algorithm_values != 202403L
+# error "__cpp_lib_default_template_type_for_algorithm_values should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++26"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/optional.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/optional.version.compile.pass.cpp
index 99716d8f16ad78..15350a949e1685 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/optional.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/optional.version.compile.pass.cpp
@@ -16,6 +16,7 @@
// Test the feature test macros defined by <optional>
/* Constant Value
+ __cpp_lib_constrained_equality 202403L [C++26]
__cpp_lib_freestanding_optional 202311L [C++26]
__cpp_lib_optional 201606L [C++17]
202110L [C++23]
@@ -26,6 +27,10 @@
#if TEST_STD_VER < 14
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_freestanding_optional
# error "__cpp_lib_freestanding_optional should not be defined before c++26"
# endif
@@ -36,6 +41,10 @@
#elif TEST_STD_VER == 14
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_freestanding_optional
# error "__cpp_lib_freestanding_optional should not be defined before c++26"
# endif
@@ -46,6 +55,10 @@
#elif TEST_STD_VER == 17
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_freestanding_optional
# error "__cpp_lib_freestanding_optional should not be defined before c++26"
# endif
@@ -59,6 +72,10 @@
#elif TEST_STD_VER == 20
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_freestanding_optional
# error "__cpp_lib_freestanding_optional should not be defined before c++26"
# endif
@@ -72,6 +89,10 @@
#elif TEST_STD_VER == 23
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_freestanding_optional
# error "__cpp_lib_freestanding_optional should not be defined before c++26"
# endif
@@ -85,6 +106,19 @@
#elif TEST_STD_VER > 23
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should be defined in c++26"
+# endif
+# if __cpp_lib_constrained_equality != 202403L
+# error "__cpp_lib_constrained_equality should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_freestanding_optional
# error "__cpp_lib_freestanding_optional should be defined in c++26"
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/random.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/random.version.compile.pass.cpp
new file mode 100644
index 00000000000000..1f138d948cfce0
--- /dev/null
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/random.version.compile.pass.cpp
@@ -0,0 +1,71 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// WARNING: This test was generated by generate_feature_test_macro_components.py
+// and should not be edited manually.
+//
+// clang-format off
+
+// <random>
+
+// Test the feature test macros defined by <random>
+
+/* Constant Value
+ __cpp_lib_generate_random 202403L [C++26]
+*/
+
+#include <random>
+#include "test_macros.h"
+
+#if TEST_STD_VER < 14
+
+# ifdef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 14
+
+# ifdef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 17
+
+# ifdef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 20
+
+# ifdef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER == 23
+
+# ifdef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should not be defined before c++26"
+# endif
+
+#elif TEST_STD_VER > 23
+
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should be defined in c++26"
+# endif
+# if __cpp_lib_generate_random != 202403L
+# error "__cpp_lib_generate_random should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
+#endif // TEST_STD_VER > 23
+
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/ranges.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/ranges.version.compile.pass.cpp
index aa3a4964ad492e..30feacd796d8e1 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/ranges.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/ranges.version.compile.pass.cpp
@@ -15,17 +15,19 @@
// Test the feature test macros defined by <ranges>
-/* Constant Value
- __cpp_lib_ranges 202207L [C++20]
- __cpp_lib_ranges_as_const 202207L [C++23]
- __cpp_lib_ranges_as_rvalue 202207L [C++23]
- __cpp_lib_ranges_chunk 202202L [C++23]
- __cpp_lib_ranges_chunk_by 202202L [C++23]
- __cpp_lib_ranges_join_with 202202L [C++23]
- __cpp_lib_ranges_repeat 202207L [C++23]
- __cpp_lib_ranges_slide 202202L [C++23]
- __cpp_lib_ranges_to_container 202202L [C++23]
- __cpp_lib_ranges_zip 202110L [C++23]
+/* Constant Value
+ __cpp_lib_default_template_type_for_algorithm_values 202403L [C++26]
+ __cpp_lib_ranges 202207L [C++20]
+ __cpp_lib_ranges_as_const 202207L [C++23]
+ __cpp_lib_ranges_as_rvalue 202207L [C++23]
+ __cpp_lib_ranges_chunk 202202L [C++23]
+ __cpp_lib_ranges_chunk_by 202202L [C++23]
+ __cpp_lib_ranges_concat 202403L [C++26]
+ __cpp_lib_ranges_join_with 202202L [C++23]
+ __cpp_lib_ranges_repeat 202207L [C++23]
+ __cpp_lib_ranges_slide 202202L [C++23]
+ __cpp_lib_ranges_to_container 202202L [C++23]
+ __cpp_lib_ranges_zip 202110L [C++23]
*/
#include <ranges>
@@ -33,6 +35,10 @@
#if TEST_STD_VER < 14
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges
# error "__cpp_lib_ranges should not be defined before c++20"
# endif
@@ -53,6 +59,10 @@
# error "__cpp_lib_ranges_chunk_by should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges_join_with
# error "__cpp_lib_ranges_join_with should not be defined before c++23"
# endif
@@ -75,6 +85,10 @@
#elif TEST_STD_VER == 14
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges
# error "__cpp_lib_ranges should not be defined before c++20"
# endif
@@ -95,6 +109,10 @@
# error "__cpp_lib_ranges_chunk_by should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges_join_with
# error "__cpp_lib_ranges_join_with should not be defined before c++23"
# endif
@@ -117,6 +135,10 @@
#elif TEST_STD_VER == 17
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges
# error "__cpp_lib_ranges should not be defined before c++20"
# endif
@@ -137,6 +159,10 @@
# error "__cpp_lib_ranges_chunk_by should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges_join_with
# error "__cpp_lib_ranges_join_with should not be defined before c++23"
# endif
@@ -159,6 +185,10 @@
#elif TEST_STD_VER == 20
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++20"
# endif
@@ -182,6 +212,10 @@
# error "__cpp_lib_ranges_chunk_by should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges_join_with
# error "__cpp_lib_ranges_join_with should not be defined before c++23"
# endif
@@ -204,6 +238,10 @@
#elif TEST_STD_VER == 23
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++23"
# endif
@@ -251,6 +289,10 @@
# error "__cpp_lib_ranges_chunk_by should have the value 202202L in c++23"
# endif
+# ifdef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should not be defined before c++26"
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_ranges_join_with
# error "__cpp_lib_ranges_join_with should be defined in c++23"
@@ -306,6 +348,19 @@
#elif TEST_STD_VER > 23
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should be defined in c++26"
+# endif
+# if __cpp_lib_default_template_type_for_algorithm_values != 202403L
+# error "__cpp_lib_default_template_type_for_algorithm_values should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++26"
# endif
@@ -353,6 +408,19 @@
# error "__cpp_lib_ranges_chunk_by should have the value 202202L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_concat != 202403L
+# error "__cpp_lib_ranges_concat should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_ranges_join_with
# error "__cpp_lib_ranges_join_with should be defined in c++26"
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp
index b5770f8fbe65d3..8d944a194faf42 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/string.version.compile.pass.cpp
@@ -15,20 +15,21 @@
// Test the feature test macros defined by <string>
-/* Constant Value
- __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
- __cpp_lib_char8_t 201907L [C++20]
- __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++23]
- __cpp_lib_starts_ends_with 201711L [C++20]
- __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]
- __cpp_lib_to_string 202306L [C++23]
+/* Constant Value
+ __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
+ __cpp_lib_char8_t 201907L [C++20]
+ __cpp_lib_constexpr_string 201907L [C++20]
+ __cpp_lib_default_template_type_for_algorithm_values 202403L [C++26]
+ __cpp_lib_erase_if 202002L [C++20]
+ __cpp_lib_nonmember_container_access 201411L [C++17]
+ __cpp_lib_ranges_to_container 202202L [C++23]
+ __cpp_lib_starts_ends_with 201711L [C++20]
+ __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]
+ __cpp_lib_to_string 202306L [C++23]
*/
#include <string>
@@ -48,6 +49,10 @@
# error "__cpp_lib_constexpr_string should not be defined before c++20"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
@@ -98,6 +103,10 @@
# error "__cpp_lib_constexpr_string should not be defined before c++20"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
@@ -154,6 +163,10 @@
# error "__cpp_lib_constexpr_string should not be defined before c++20"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
@@ -228,6 +241,10 @@
# error "__cpp_lib_constexpr_string should have the value 201907L in c++20"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++20"
# endif
@@ -308,6 +325,10 @@
# error "__cpp_lib_constexpr_string should have the value 201907L in c++23"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++23"
# endif
@@ -406,6 +427,19 @@
# error "__cpp_lib_constexpr_string should have the value 201907L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should be defined in c++26"
+# endif
+# if __cpp_lib_default_template_type_for_algorithm_values != 202403L
+# error "__cpp_lib_default_template_type_for_algorithm_values should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++26"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/tuple.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/tuple.version.compile.pass.cpp
index ce17aef3ecdf6f..6dd2e968fb8dab 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/tuple.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/tuple.version.compile.pass.cpp
@@ -15,15 +15,16 @@
// Test the feature test macros defined by <tuple>
-/* Constant Value
- __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++23]
- __cpp_lib_tuple_element_t 201402L [C++14]
- __cpp_lib_tuple_like 202207L [C++23]
- 202311L [C++26]
- __cpp_lib_tuples_by_type 201304L [C++14]
+/* Constant Value
+ __cpp_lib_apply 201603L [C++17]
+ __cpp_lib_constexpr_tuple 201811L [C++20]
+ __cpp_lib_constrained_equality 202403L [C++26]
+ __cpp_lib_make_from_tuple 201606L [C++17]
+ __cpp_lib_ranges_zip 202110L [C++23]
+ __cpp_lib_tuple_element_t 201402L [C++14]
+ __cpp_lib_tuple_like 202207L [C++23]
+ 202311L [C++26]
+ __cpp_lib_tuples_by_type 201304L [C++14]
*/
#include <tuple>
@@ -39,6 +40,10 @@
# error "__cpp_lib_constexpr_tuple should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_make_from_tuple
# error "__cpp_lib_make_from_tuple should not be defined before c++17"
# endif
@@ -69,6 +74,10 @@
# error "__cpp_lib_constexpr_tuple should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_make_from_tuple
# error "__cpp_lib_make_from_tuple should not be defined before c++17"
# endif
@@ -108,6 +117,10 @@
# error "__cpp_lib_constexpr_tuple should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_make_from_tuple
# error "__cpp_lib_make_from_tuple should be defined in c++17"
# endif
@@ -153,6 +166,10 @@
# error "__cpp_lib_constexpr_tuple should have the value 201811L in c++20"
# endif
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_make_from_tuple
# error "__cpp_lib_make_from_tuple should be defined in c++20"
# endif
@@ -198,6 +215,10 @@
# error "__cpp_lib_constexpr_tuple should have the value 201811L in c++23"
# endif
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_make_from_tuple
# error "__cpp_lib_make_from_tuple should be defined in c++23"
# endif
@@ -261,6 +282,19 @@
# error "__cpp_lib_constexpr_tuple should have the value 201811L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should be defined in c++26"
+# endif
+# if __cpp_lib_constrained_equality != 202403L
+# error "__cpp_lib_constrained_equality should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_make_from_tuple
# error "__cpp_lib_make_from_tuple should be defined in c++26"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.compile.pass.cpp
index dd56f8d5359ddb..ab0988f1d4a546 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/utility.version.compile.pass.cpp
@@ -19,6 +19,7 @@
__cpp_lib_as_const 201510L [C++17]
__cpp_lib_constexpr_algorithms 201806L [C++20]
__cpp_lib_constexpr_utility 201811L [C++20]
+ __cpp_lib_constrained_equality 202403L [C++26]
__cpp_lib_exchange_function 201304L [C++14]
__cpp_lib_forward_like 202207L [C++23]
__cpp_lib_integer_comparison_functions 202002L [C++20]
@@ -48,6 +49,10 @@
# error "__cpp_lib_constexpr_utility should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_exchange_function
# error "__cpp_lib_exchange_function should not be defined before c++14"
# endif
@@ -98,6 +103,10 @@
# error "__cpp_lib_constexpr_utility should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_exchange_function
# error "__cpp_lib_exchange_function should be defined in c++14"
# endif
@@ -160,6 +169,10 @@
# error "__cpp_lib_constexpr_utility should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_exchange_function
# error "__cpp_lib_exchange_function should be defined in c++17"
# endif
@@ -228,6 +241,10 @@
# error "__cpp_lib_constexpr_utility should have the value 201811L in c++20"
# endif
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_exchange_function
# error "__cpp_lib_exchange_function should be defined in c++20"
# endif
@@ -299,6 +316,10 @@
# error "__cpp_lib_constexpr_utility should have the value 201811L in c++23"
# endif
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_exchange_function
# error "__cpp_lib_exchange_function should be defined in c++23"
# endif
@@ -397,6 +418,19 @@
# error "__cpp_lib_constexpr_utility should have the value 201811L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should be defined in c++26"
+# endif
+# if __cpp_lib_constrained_equality != 202403L
+# error "__cpp_lib_constrained_equality should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_exchange_function
# error "__cpp_lib_exchange_function should be defined in c++26"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/variant.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/variant.version.compile.pass.cpp
index 3e65b1445d0ccd..4dcc477696bfdd 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/variant.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/variant.version.compile.pass.cpp
@@ -16,6 +16,7 @@
// Test the feature test macros defined by <variant>
/* Constant Value
+ __cpp_lib_constrained_equality 202403L [C++26]
__cpp_lib_freestanding_variant 202311L [C++26]
__cpp_lib_variant 202102L [C++17]
*/
@@ -25,6 +26,10 @@
#if TEST_STD_VER < 14
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_freestanding_variant
# error "__cpp_lib_freestanding_variant should not be defined before c++26"
# endif
@@ -35,6 +40,10 @@
#elif TEST_STD_VER == 14
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_freestanding_variant
# error "__cpp_lib_freestanding_variant should not be defined before c++26"
# endif
@@ -45,6 +54,10 @@
#elif TEST_STD_VER == 17
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_freestanding_variant
# error "__cpp_lib_freestanding_variant should not be defined before c++26"
# endif
@@ -58,6 +71,10 @@
#elif TEST_STD_VER == 20
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_freestanding_variant
# error "__cpp_lib_freestanding_variant should not be defined before c++26"
# endif
@@ -71,6 +88,10 @@
#elif TEST_STD_VER == 23
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_freestanding_variant
# error "__cpp_lib_freestanding_variant should not be defined before c++26"
# endif
@@ -84,6 +105,19 @@
#elif TEST_STD_VER > 23
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should be defined in c++26"
+# endif
+# if __cpp_lib_constrained_equality != 202403L
+# error "__cpp_lib_constrained_equality should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_freestanding_variant
# error "__cpp_lib_freestanding_variant should be defined in c++26"
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.compile.pass.cpp
index 6eee936b4ed88f..3d0a956e6c8e78 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/vector.version.compile.pass.cpp
@@ -15,13 +15,14 @@
// Test the feature test macros defined by <vector>
-/* Constant Value
- __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
- __cpp_lib_constexpr_vector 201907L [C++20]
- __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++23]
+/* Constant Value
+ __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
+ __cpp_lib_constexpr_vector 201907L [C++20]
+ __cpp_lib_default_template_type_for_algorithm_values 202403L [C++26]
+ __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++23]
*/
#include <vector>
@@ -37,6 +38,10 @@
# error "__cpp_lib_constexpr_vector should not be defined before c++20"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
@@ -63,6 +68,10 @@
# error "__cpp_lib_constexpr_vector should not be defined before c++20"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
@@ -92,6 +101,10 @@
# error "__cpp_lib_constexpr_vector should not be defined before c++20"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should not be defined before c++20"
# endif
@@ -130,6 +143,10 @@
# error "__cpp_lib_constexpr_vector should have the value 201907L in c++20"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++20"
# endif
@@ -171,6 +188,10 @@
# error "__cpp_lib_constexpr_vector should have the value 201907L in c++23"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++23"
# endif
@@ -215,6 +236,19 @@
# error "__cpp_lib_constexpr_vector should have the value 201907L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should be defined in c++26"
+# endif
+# if __cpp_lib_default_template_type_for_algorithm_values != 202403L
+# error "__cpp_lib_default_template_type_for_algorithm_values should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_erase_if
# error "__cpp_lib_erase_if should be defined in c++26"
# endif
diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
index 5501587915ffa0..5055786c2d4589 100644
--- a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
+++ b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp
@@ -15,217 +15,224 @@
// Test the feature test macros defined by <version>
-/* Constant Value
- __cpp_lib_adaptor_iterator_pair_constructor 202106L [C++23]
- __cpp_lib_addressof_constexpr 201603L [C++17]
- __cpp_lib_allocate_at_least 202302L [C++23]
- __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
- __cpp_lib_any 201606L [C++17]
- __cpp_lib_apply 201603L [C++17]
- __cpp_lib_array_constexpr 201603L [C++17]
- 201811L [C++20]
- __cpp_lib_as_const 201510L [C++17]
- __cpp_lib_associative_heterogeneous_erasure 202110L [C++23]
- __cpp_lib_associative_heterogeneous_insertion 202306L [C++26]
- __cpp_lib_assume_aligned 201811L [C++20]
- __cpp_lib_atomic_flag_test 201907L [C++20]
- __cpp_lib_atomic_float 201711L [C++20]
- __cpp_lib_atomic_is_always_lock_free 201603L [C++17]
- __cpp_lib_atomic_lock_free_type_aliases 201907L [C++20]
- __cpp_lib_atomic_ref 201806L [C++20]
- __cpp_lib_atomic_shared_ptr 201711L [C++20]
- __cpp_lib_atomic_value_initialization 201911L [C++20]
- __cpp_lib_atomic_wait 201907L [C++20]
- __cpp_lib_barrier 201907L [C++20]
- __cpp_lib_bind_back 202202L [C++23]
- 202306L [C++26]
- __cpp_lib_bind_front 201907L [C++20]
- 202306L [C++26]
- __cpp_lib_bit_cast 201806L [C++20]
- __cpp_lib_bitops 201907L [C++20]
- __cpp_lib_bitset 202306L [C++26]
- __cpp_lib_bool_constant 201505L [C++17]
- __cpp_lib_bounded_array_traits 201902L [C++20]
- __cpp_lib_boyer_moore_searcher 201603L [C++17]
- __cpp_lib_byte 201603L [C++17]
- __cpp_lib_byteswap 202110L [C++23]
- __cpp_lib_char8_t 201907L [C++20]
- __cpp_lib_chrono 201611L [C++17]
- __cpp_lib_chrono_udls 201304L [C++14]
- __cpp_lib_clamp 201603L [C++17]
- __cpp_lib_complex_udls 201309L [C++14]
- __cpp_lib_concepts 202002L [C++20]
- __cpp_lib_constexpr_algorithms 201806L [C++20]
- __cpp_lib_constexpr_bitset 202207L [C++23]
- __cpp_lib_constexpr_charconv 202207L [C++23]
- __cpp_lib_constexpr_cmath 202202L [C++23]
- __cpp_lib_constexpr_complex 201711L [C++20]
- __cpp_lib_constexpr_dynamic_alloc 201907L [C++20]
- __cpp_lib_constexpr_functional 201907L [C++20]
- __cpp_lib_constexpr_iterator 201811L [C++20]
- __cpp_lib_constexpr_memory 201811L [C++20]
- 202202L [C++23]
- __cpp_lib_constexpr_numeric 201911L [C++20]
- __cpp_lib_constexpr_string 201907L [C++20]
- __cpp_lib_constexpr_string_view 201811L [C++20]
- __cpp_lib_constexpr_tuple 201811L [C++20]
- __cpp_lib_constexpr_typeinfo 202106L [C++23]
- __cpp_lib_constexpr_utility 201811L [C++20]
- __cpp_lib_constexpr_vector 201907L [C++20]
- __cpp_lib_copyable_function 202306L [C++26]
- __cpp_lib_coroutine 201902L [C++20]
- __cpp_lib_debugging 202311L [C++26]
- __cpp_lib_destroying_delete 201806L [C++20]
- __cpp_lib_enable_shared_from_this 201603L [C++17]
- __cpp_lib_endian 201907L [C++20]
- __cpp_lib_erase_if 202002L [C++20]
- __cpp_lib_exchange_function 201304L [C++14]
- __cpp_lib_execution 201603L [C++17]
- 201902L [C++20]
- __cpp_lib_expected 202211L [C++23]
- __cpp_lib_filesystem 201703L [C++17]
- __cpp_lib_format 202106L [C++20]
- __cpp_lib_format_ranges 202207L [C++23]
- __cpp_lib_format_uchar 202311L [C++20]
- __cpp_lib_formatters 202302L [C++23]
- __cpp_lib_forward_like 202207L [C++23]
- __cpp_lib_freestanding_algorithm 202311L [C++26]
- __cpp_lib_freestanding_array 202311L [C++26]
- __cpp_lib_freestanding_cstring 202306L [C++26]
- __cpp_lib_freestanding_expected 202311L [C++26]
- __cpp_lib_freestanding_mdspan 202311L [C++26]
- __cpp_lib_freestanding_optional 202311L [C++26]
- __cpp_lib_freestanding_string_view 202311L [C++26]
- __cpp_lib_freestanding_variant 202311L [C++26]
- __cpp_lib_fstream_native_handle 202306L [C++26]
- __cpp_lib_function_ref 202306L [C++26]
- __cpp_lib_gcd_lcm 201606L [C++17]
- __cpp_lib_generic_associative_lookup 201304L [C++14]
- __cpp_lib_generic_unordered_lookup 201811L [C++20]
- __cpp_lib_hardware_interference_size 201703L [C++17]
- __cpp_lib_has_unique_object_representations 201606L [C++17]
- __cpp_lib_hazard_pointer 202306L [C++26]
- __cpp_lib_hypot 201603L [C++17]
- __cpp_lib_incomplete_container_elements 201505L [C++17]
- __cpp_lib_int_pow2 202002L [C++20]
- __cpp_lib_integer_comparison_functions 202002L [C++20]
- __cpp_lib_integer_sequence 201304L [C++14]
- __cpp_lib_integral_constant_callable 201304L [C++14]
- __cpp_lib_interpolate 201902L [C++20]
- __cpp_lib_invoke 201411L [C++17]
- __cpp_lib_invoke_r 202106L [C++23]
- __cpp_lib_ios_noreplace 202207L [C++23]
- __cpp_lib_is_aggregate 201703L [C++17]
- __cpp_lib_is_constant_evaluated 201811L [C++20]
- __cpp_lib_is_final 201402L [C++14]
- __cpp_lib_is_invocable 201703L [C++17]
- __cpp_lib_is_layout_compatible 201907L [C++20]
- __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++23]
- __cpp_lib_is_swappable 201603L [C++17]
- __cpp_lib_jthread 201911L [C++20]
- __cpp_lib_latch 201907L [C++20]
- __cpp_lib_launder 201606L [C++17]
- __cpp_lib_linalg 202311L [C++26]
- __cpp_lib_list_remove_return_type 201806L [C++20]
- __cpp_lib_logical_traits 201510L [C++17]
- __cpp_lib_make_from_tuple 201606L [C++17]
- __cpp_lib_make_reverse_iterator 201402L [C++14]
- __cpp_lib_make_unique 201304L [C++14]
- __cpp_lib_map_try_emplace 201411L [C++17]
- __cpp_lib_math_constants 201907L [C++20]
- __cpp_lib_math_special_functions 201603L [C++17]
- __cpp_lib_mdspan 202207L [C++23]
- __cpp_lib_memory_resource 201603L [C++17]
- __cpp_lib_move_iterator_concept 202207L [C++20]
- __cpp_lib_move_only_function 202110L [C++23]
- __cpp_lib_node_extract 201606L [C++17]
- __cpp_lib_nonmember_container_access 201411L [C++17]
- __cpp_lib_not_fn 201603L [C++17]
- __cpp_lib_null_iterators 201304L [C++14]
- __cpp_lib_optional 201606L [C++17]
- 202110L [C++23]
- __cpp_lib_out_ptr 202106L [C++23]
- 202311L [C++26]
- __cpp_lib_parallel_algorithm 201603L [C++17]
- __cpp_lib_polymorphic_allocator 201902L [C++20]
- __cpp_lib_print 202207L [C++23]
- __cpp_lib_quoted_string_io 201304L [C++14]
- __cpp_lib_ranges 202207L [C++20]
- __cpp_lib_ranges_as_const 202207L [C++23]
- __cpp_lib_ranges_as_rvalue 202207L [C++23]
- __cpp_lib_ranges_chunk 202202L [C++23]
- __cpp_lib_ranges_chunk_by 202202L [C++23]
- __cpp_lib_ranges_contains 202207L [C++23]
- __cpp_lib_ranges_iota 202202L [C++23]
- __cpp_lib_ranges_join_with 202202L [C++23]
- __cpp_lib_ranges_repeat 202207L [C++23]
- __cpp_lib_ranges_slide 202202L [C++23]
- __cpp_lib_ranges_starts_ends_with 202106L [C++23]
- __cpp_lib_ranges_to_container 202202L [C++23]
- __cpp_lib_ranges_zip 202110L [C++23]
- __cpp_lib_ratio 202306L [C++26]
- __cpp_lib_raw_memory_algorithms 201606L [C++17]
- __cpp_lib_rcu 202306L [C++26]
- __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_robust_nonmodifying_seq_ops 201304L [C++14]
- __cpp_lib_sample 201603L [C++17]
- __cpp_lib_saturation_arithmetic 202311L [C++26]
- __cpp_lib_scoped_lock 201703L [C++17]
- __cpp_lib_semaphore 201907L [C++20]
- __cpp_lib_shared_mutex 201505L [C++17]
- __cpp_lib_shared_ptr_arrays 201611L [C++17]
- 201707L [C++20]
- __cpp_lib_shared_ptr_weak_type 201606L [C++17]
- __cpp_lib_shared_timed_mutex 201402L [C++14]
- __cpp_lib_shift 201806L [C++20]
- __cpp_lib_smart_ptr_for_overwrite 202002L [C++20]
- __cpp_lib_smart_ptr_owner_equality 202306L [C++26]
- __cpp_lib_source_location 201907L [C++20]
- __cpp_lib_span 202002L [C++20]
- __cpp_lib_span_at 202311L [C++26]
- __cpp_lib_span_initializer_list 202311L [C++26]
- __cpp_lib_spanstream 202106L [C++23]
- __cpp_lib_ssize 201902L [C++20]
- __cpp_lib_sstream_from_string_view 202306L [C++26]
- __cpp_lib_stacktrace 202011L [C++23]
- __cpp_lib_starts_ends_with 201711L [C++20]
- __cpp_lib_stdatomic_h 202011L [C++23]
- __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]
- __cpp_lib_submdspan 202306L [C++26]
- __cpp_lib_syncbuf 201803L [C++20]
- __cpp_lib_text_encoding 202306L [C++26]
- __cpp_lib_three_way_comparison 201907L [C++20]
- __cpp_lib_to_address 201711L [C++20]
- __cpp_lib_to_array 201907L [C++20]
- __cpp_lib_to_chars 201611L [C++17]
- 202306L [C++26]
- __cpp_lib_to_string 202306L [C++23]
- __cpp_lib_to_underlying 202102L [C++23]
- __cpp_lib_transformation_trait_aliases 201304L [C++14]
- __cpp_lib_transparent_operators 201210L [C++14]
- 201510L [C++17]
- __cpp_lib_tuple_element_t 201402L [C++14]
- __cpp_lib_tuple_like 202207L [C++23]
- 202311L [C++26]
- __cpp_lib_tuples_by_type 201304L [C++14]
- __cpp_lib_type_identity 201806L [C++20]
- __cpp_lib_type_trait_variable_templates 201510L [C++17]
- __cpp_lib_uncaught_exceptions 201411L [C++17]
- __cpp_lib_unordered_map_try_emplace 201411L [C++17]
- __cpp_lib_unreachable 202202L [C++23]
- __cpp_lib_unwrap_ref 201811L [C++20]
- __cpp_lib_variant 202102L [C++17]
- __cpp_lib_void_t 201411L [C++17]
- __cpp_lib_within_lifetime 202306L [C++26]
+/* Constant Value
+ __cpp_lib_adaptor_iterator_pair_constructor 202106L [C++23]
+ __cpp_lib_addressof_constexpr 201603L [C++17]
+ __cpp_lib_allocate_at_least 202302L [C++23]
+ __cpp_lib_allocator_traits_is_always_equal 201411L [C++17]
+ __cpp_lib_any 201606L [C++17]
+ __cpp_lib_apply 201603L [C++17]
+ __cpp_lib_array_constexpr 201603L [C++17]
+ 201811L [C++20]
+ __cpp_lib_as_const 201510L [C++17]
+ __cpp_lib_associative_heterogeneous_erasure 202110L [C++23]
+ __cpp_lib_associative_heterogeneous_insertion 202306L [C++26]
+ __cpp_lib_assume_aligned 201811L [C++20]
+ __cpp_lib_atomic_flag_test 201907L [C++20]
+ __cpp_lib_atomic_float 201711L [C++20]
+ __cpp_lib_atomic_is_always_lock_free 201603L [C++17]
+ __cpp_lib_atomic_lock_free_type_aliases 201907L [C++20]
+ __cpp_lib_atomic_min_max 202403L [C++26]
+ __cpp_lib_atomic_ref 201806L [C++20]
+ __cpp_lib_atomic_shared_ptr 201711L [C++20]
+ __cpp_lib_atomic_value_initialization 201911L [C++20]
+ __cpp_lib_atomic_wait 201907L [C++20]
+ __cpp_lib_barrier 201907L [C++20]
+ __cpp_lib_bind_back 202202L [C++23]
+ 202306L [C++26]
+ __cpp_lib_bind_front 201907L [C++20]
+ 202306L [C++26]
+ __cpp_lib_bit_cast 201806L [C++20]
+ __cpp_lib_bitops 201907L [C++20]
+ __cpp_lib_bitset 202306L [C++26]
+ __cpp_lib_bool_constant 201505L [C++17]
+ __cpp_lib_bounded_array_traits 201902L [C++20]
+ __cpp_lib_boyer_moore_searcher 201603L [C++17]
+ __cpp_lib_byte 201603L [C++17]
+ __cpp_lib_byteswap 202110L [C++23]
+ __cpp_lib_char8_t 201907L [C++20]
+ __cpp_lib_chrono 201611L [C++17]
+ __cpp_lib_chrono_udls 201304L [C++14]
+ __cpp_lib_clamp 201603L [C++17]
+ __cpp_lib_complex_udls 201309L [C++14]
+ __cpp_lib_concepts 202002L [C++20]
+ __cpp_lib_constexpr_algorithms 201806L [C++20]
+ __cpp_lib_constexpr_bitset 202207L [C++23]
+ __cpp_lib_constexpr_charconv 202207L [C++23]
+ __cpp_lib_constexpr_cmath 202202L [C++23]
+ __cpp_lib_constexpr_complex 201711L [C++20]
+ __cpp_lib_constexpr_dynamic_alloc 201907L [C++20]
+ __cpp_lib_constexpr_functional 201907L [C++20]
+ __cpp_lib_constexpr_iterator 201811L [C++20]
+ __cpp_lib_constexpr_memory 201811L [C++20]
+ 202202L [C++23]
+ __cpp_lib_constexpr_numeric 201911L [C++20]
+ __cpp_lib_constexpr_string 201907L [C++20]
+ __cpp_lib_constexpr_string_view 201811L [C++20]
+ __cpp_lib_constexpr_tuple 201811L [C++20]
+ __cpp_lib_constexpr_typeinfo 202106L [C++23]
+ __cpp_lib_constexpr_utility 201811L [C++20]
+ __cpp_lib_constexpr_vector 201907L [C++20]
+ __cpp_lib_constrained_equality 202403L [C++26]
+ __cpp_lib_copyable_function 202306L [C++26]
+ __cpp_lib_coroutine 201902L [C++20]
+ __cpp_lib_debugging 202311L [C++26]
+ __cpp_lib_default_template_type_for_algorithm_values 202403L [C++26]
+ __cpp_lib_destroying_delete 201806L [C++20]
+ __cpp_lib_enable_shared_from_this 201603L [C++17]
+ __cpp_lib_endian 201907L [C++20]
+ __cpp_lib_erase_if 202002L [C++20]
+ __cpp_lib_exchange_function 201304L [C++14]
+ __cpp_lib_execution 201603L [C++17]
+ 201902L [C++20]
+ __cpp_lib_expected 202211L [C++23]
+ __cpp_lib_filesystem 201703L [C++17]
+ __cpp_lib_format 202106L [C++20]
+ __cpp_lib_format_path 202403L [C++23]
+ __cpp_lib_format_ranges 202207L [C++23]
+ __cpp_lib_format_uchar 202311L [C++20]
+ __cpp_lib_formatters 202302L [C++23]
+ __cpp_lib_forward_like 202207L [C++23]
+ __cpp_lib_freestanding_algorithm 202311L [C++26]
+ __cpp_lib_freestanding_array 202311L [C++26]
+ __cpp_lib_freestanding_cstring 202306L [C++26]
+ __cpp_lib_freestanding_expected 202311L [C++26]
+ __cpp_lib_freestanding_mdspan 202311L [C++26]
+ __cpp_lib_freestanding_optional 202311L [C++26]
+ __cpp_lib_freestanding_string_view 202311L [C++26]
+ __cpp_lib_freestanding_variant 202311L [C++26]
+ __cpp_lib_fstream_native_handle 202306L [C++26]
+ __cpp_lib_function_ref 202306L [C++26]
+ __cpp_lib_gcd_lcm 201606L [C++17]
+ __cpp_lib_generate_random 202403L [C++26]
+ __cpp_lib_generic_associative_lookup 201304L [C++14]
+ __cpp_lib_generic_unordered_lookup 201811L [C++20]
+ __cpp_lib_hardware_interference_size 201703L [C++17]
+ __cpp_lib_has_unique_object_representations 201606L [C++17]
+ __cpp_lib_hazard_pointer 202306L [C++26]
+ __cpp_lib_hypot 201603L [C++17]
+ __cpp_lib_incomplete_container_elements 201505L [C++17]
+ __cpp_lib_int_pow2 202002L [C++20]
+ __cpp_lib_integer_comparison_functions 202002L [C++20]
+ __cpp_lib_integer_sequence 201304L [C++14]
+ __cpp_lib_integral_constant_callable 201304L [C++14]
+ __cpp_lib_interpolate 201902L [C++20]
+ __cpp_lib_invoke 201411L [C++17]
+ __cpp_lib_invoke_r 202106L [C++23]
+ __cpp_lib_ios_noreplace 202207L [C++23]
+ __cpp_lib_is_aggregate 201703L [C++17]
+ __cpp_lib_is_constant_evaluated 201811L [C++20]
+ __cpp_lib_is_final 201402L [C++14]
+ __cpp_lib_is_invocable 201703L [C++17]
+ __cpp_lib_is_layout_compatible 201907L [C++20]
+ __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++23]
+ __cpp_lib_is_swappable 201603L [C++17]
+ __cpp_lib_jthread 201911L [C++20]
+ __cpp_lib_latch 201907L [C++20]
+ __cpp_lib_launder 201606L [C++17]
+ __cpp_lib_linalg 202311L [C++26]
+ __cpp_lib_list_remove_return_type 201806L [C++20]
+ __cpp_lib_logical_traits 201510L [C++17]
+ __cpp_lib_make_from_tuple 201606L [C++17]
+ __cpp_lib_make_reverse_iterator 201402L [C++14]
+ __cpp_lib_make_unique 201304L [C++14]
+ __cpp_lib_map_try_emplace 201411L [C++17]
+ __cpp_lib_math_constants 201907L [C++20]
+ __cpp_lib_math_special_functions 201603L [C++17]
+ __cpp_lib_mdspan 202207L [C++23]
+ __cpp_lib_memory_resource 201603L [C++17]
+ __cpp_lib_move_iterator_concept 202207L [C++20]
+ __cpp_lib_move_only_function 202110L [C++23]
+ __cpp_lib_node_extract 201606L [C++17]
+ __cpp_lib_nonmember_container_access 201411L [C++17]
+ __cpp_lib_not_fn 201603L [C++17]
+ __cpp_lib_null_iterators 201304L [C++14]
+ __cpp_lib_optional 201606L [C++17]
+ 202110L [C++23]
+ __cpp_lib_out_ptr 202106L [C++23]
+ 202311L [C++26]
+ __cpp_lib_parallel_algorithm 201603L [C++17]
+ __cpp_lib_polymorphic_allocator 201902L [C++20]
+ __cpp_lib_print 202207L [C++23]
+ __cpp_lib_quoted_string_io 201304L [C++14]
+ __cpp_lib_ranges 202207L [C++20]
+ __cpp_lib_ranges_as_const 202207L [C++23]
+ __cpp_lib_ranges_as_rvalue 202207L [C++23]
+ __cpp_lib_ranges_chunk 202202L [C++23]
+ __cpp_lib_ranges_chunk_by 202202L [C++23]
+ __cpp_lib_ranges_concat 202403L [C++26]
+ __cpp_lib_ranges_contains 202207L [C++23]
+ __cpp_lib_ranges_iota 202202L [C++23]
+ __cpp_lib_ranges_join_with 202202L [C++23]
+ __cpp_lib_ranges_repeat 202207L [C++23]
+ __cpp_lib_ranges_slide 202202L [C++23]
+ __cpp_lib_ranges_starts_ends_with 202106L [C++23]
+ __cpp_lib_ranges_to_container 202202L [C++23]
+ __cpp_lib_ranges_zip 202110L [C++23]
+ __cpp_lib_ratio 202306L [C++26]
+ __cpp_lib_raw_memory_algorithms 201606L [C++17]
+ __cpp_lib_rcu 202306L [C++26]
+ __cpp_lib_reference_from_temporary 202202L [C++23]
+ __cpp_lib_reference_wrapper 202403L [C++26]
+ __cpp_lib_remove_cvref 201711L [C++20]
+ __cpp_lib_result_of_sfinae 201210L [C++14]
+ __cpp_lib_robust_nonmodifying_seq_ops 201304L [C++14]
+ __cpp_lib_sample 201603L [C++17]
+ __cpp_lib_saturation_arithmetic 202311L [C++26]
+ __cpp_lib_scoped_lock 201703L [C++17]
+ __cpp_lib_semaphore 201907L [C++20]
+ __cpp_lib_shared_mutex 201505L [C++17]
+ __cpp_lib_shared_ptr_arrays 201611L [C++17]
+ 201707L [C++20]
+ __cpp_lib_shared_ptr_weak_type 201606L [C++17]
+ __cpp_lib_shared_timed_mutex 201402L [C++14]
+ __cpp_lib_shift 201806L [C++20]
+ __cpp_lib_smart_ptr_for_overwrite 202002L [C++20]
+ __cpp_lib_smart_ptr_owner_equality 202306L [C++26]
+ __cpp_lib_source_location 201907L [C++20]
+ __cpp_lib_span 202002L [C++20]
+ __cpp_lib_span_at 202311L [C++26]
+ __cpp_lib_span_initializer_list 202311L [C++26]
+ __cpp_lib_spanstream 202106L [C++23]
+ __cpp_lib_ssize 201902L [C++20]
+ __cpp_lib_sstream_from_string_view 202306L [C++26]
+ __cpp_lib_stacktrace 202011L [C++23]
+ __cpp_lib_starts_ends_with 201711L [C++20]
+ __cpp_lib_stdatomic_h 202011L [C++23]
+ __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]
+ __cpp_lib_submdspan 202306L [C++26]
+ __cpp_lib_syncbuf 201803L [C++20]
+ __cpp_lib_text_encoding 202306L [C++26]
+ __cpp_lib_three_way_comparison 201907L [C++20]
+ __cpp_lib_to_address 201711L [C++20]
+ __cpp_lib_to_array 201907L [C++20]
+ __cpp_lib_to_chars 201611L [C++17]
+ 202306L [C++26]
+ __cpp_lib_to_string 202306L [C++23]
+ __cpp_lib_to_underlying 202102L [C++23]
+ __cpp_lib_transformation_trait_aliases 201304L [C++14]
+ __cpp_lib_transparent_operators 201210L [C++14]
+ 201510L [C++17]
+ __cpp_lib_tuple_element_t 201402L [C++14]
+ __cpp_lib_tuple_like 202207L [C++23]
+ 202311L [C++26]
+ __cpp_lib_tuples_by_type 201304L [C++14]
+ __cpp_lib_type_identity 201806L [C++20]
+ __cpp_lib_type_trait_variable_templates 201510L [C++17]
+ __cpp_lib_uncaught_exceptions 201411L [C++17]
+ __cpp_lib_unordered_map_try_emplace 201411L [C++17]
+ __cpp_lib_unreachable 202202L [C++23]
+ __cpp_lib_unwrap_ref 201811L [C++20]
+ __cpp_lib_variant 202102L [C++17]
+ __cpp_lib_void_t 201411L [C++17]
+ __cpp_lib_within_lifetime 202306L [C++26]
*/
#include <version>
@@ -293,6 +300,10 @@
# error "__cpp_lib_atomic_lock_free_type_aliases should not be defined before c++20"
# endif
+# ifdef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_atomic_ref
# error "__cpp_lib_atomic_ref should not be defined before c++20"
# endif
@@ -441,6 +452,10 @@
# error "__cpp_lib_constexpr_vector should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_copyable_function
# error "__cpp_lib_copyable_function should not be defined before c++26"
# endif
@@ -453,6 +468,10 @@
# error "__cpp_lib_debugging should not be defined before c++26"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_destroying_delete
# error "__cpp_lib_destroying_delete should not be defined before c++20"
# endif
@@ -489,6 +508,10 @@
# error "__cpp_lib_format should not be defined before c++20"
# endif
+# ifdef __cpp_lib_format_path
+# error "__cpp_lib_format_path should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_format_ranges
# error "__cpp_lib_format_ranges should not be defined before c++23"
# endif
@@ -549,6 +572,10 @@
# error "__cpp_lib_gcd_lcm should not be defined before c++17"
# endif
+# ifdef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_generic_associative_lookup
# error "__cpp_lib_generic_associative_lookup should not be defined before c++14"
# endif
@@ -773,6 +800,10 @@
# error "__cpp_lib_ranges_chunk_by should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges_contains
# error "__cpp_lib_ranges_contains should not be defined before c++23"
# endif
@@ -821,6 +852,10 @@
# error "__cpp_lib_reference_from_temporary should not be defined before c++23"
# endif
+# ifdef __cpp_lib_reference_wrapper
+# error "__cpp_lib_reference_wrapper should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_remove_cvref
# error "__cpp_lib_remove_cvref should not be defined before c++20"
# endif
@@ -1087,6 +1122,10 @@
# error "__cpp_lib_atomic_lock_free_type_aliases should not be defined before c++20"
# endif
+# ifdef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_atomic_ref
# error "__cpp_lib_atomic_ref should not be defined before c++20"
# endif
@@ -1241,6 +1280,10 @@
# error "__cpp_lib_constexpr_vector should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_copyable_function
# error "__cpp_lib_copyable_function should not be defined before c++26"
# endif
@@ -1253,6 +1296,10 @@
# error "__cpp_lib_debugging should not be defined before c++26"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_destroying_delete
# error "__cpp_lib_destroying_delete should not be defined before c++20"
# endif
@@ -1292,6 +1339,10 @@
# error "__cpp_lib_format should not be defined before c++20"
# endif
+# ifdef __cpp_lib_format_path
+# error "__cpp_lib_format_path should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_format_ranges
# error "__cpp_lib_format_ranges should not be defined before c++23"
# endif
@@ -1352,6 +1403,10 @@
# error "__cpp_lib_gcd_lcm should not be defined before c++17"
# endif
+# ifdef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_generic_associative_lookup
# error "__cpp_lib_generic_associative_lookup should be defined in c++14"
# endif
@@ -1609,6 +1664,10 @@
# error "__cpp_lib_ranges_chunk_by should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges_contains
# error "__cpp_lib_ranges_contains should not be defined before c++23"
# endif
@@ -1657,6 +1716,10 @@
# error "__cpp_lib_reference_from_temporary should not be defined before c++23"
# endif
+# ifdef __cpp_lib_reference_wrapper
+# error "__cpp_lib_reference_wrapper should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_remove_cvref
# error "__cpp_lib_remove_cvref should not be defined before c++20"
# endif
@@ -1974,6 +2037,10 @@
# error "__cpp_lib_atomic_lock_free_type_aliases should not be defined before c++20"
# endif
+# ifdef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_atomic_ref
# error "__cpp_lib_atomic_ref should not be defined before c++20"
# endif
@@ -2143,6 +2210,10 @@
# error "__cpp_lib_constexpr_vector should not be defined before c++20"
# endif
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_copyable_function
# error "__cpp_lib_copyable_function should not be defined before c++26"
# endif
@@ -2155,6 +2226,10 @@
# error "__cpp_lib_debugging should not be defined before c++26"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_destroying_delete
# error "__cpp_lib_destroying_delete should not be defined before c++20"
# endif
@@ -2215,6 +2290,10 @@
# error "__cpp_lib_format should not be defined before c++20"
# endif
+# ifdef __cpp_lib_format_path
+# error "__cpp_lib_format_path should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_format_ranges
# error "__cpp_lib_format_ranges should not be defined before c++23"
# endif
@@ -2278,6 +2357,10 @@
# error "__cpp_lib_gcd_lcm should have the value 201606L in c++17"
# endif
+# ifdef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_generic_associative_lookup
# error "__cpp_lib_generic_associative_lookup should be defined in c++17"
# endif
@@ -2616,6 +2699,10 @@
# error "__cpp_lib_ranges_chunk_by should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges_contains
# error "__cpp_lib_ranges_contains should not be defined before c++23"
# endif
@@ -2667,6 +2754,10 @@
# error "__cpp_lib_reference_from_temporary should not be defined before c++23"
# endif
+# ifdef __cpp_lib_reference_wrapper
+# error "__cpp_lib_reference_wrapper should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_remove_cvref
# error "__cpp_lib_remove_cvref should not be defined before c++20"
# endif
@@ -3056,6 +3147,10 @@
# error "__cpp_lib_atomic_lock_free_type_aliases should have the value 201907L in c++20"
# endif
+# ifdef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should not be defined before c++26"
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_atomic_ref
# error "__cpp_lib_atomic_ref should be defined in c++20"
@@ -3324,6 +3419,10 @@
# error "__cpp_lib_constexpr_vector should have the value 201907L in c++20"
# endif
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_copyable_function
# error "__cpp_lib_copyable_function should not be defined before c++26"
# endif
@@ -3339,6 +3438,10 @@
# error "__cpp_lib_debugging should not be defined before c++26"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# if TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L
# ifndef __cpp_lib_destroying_delete
# error "__cpp_lib_destroying_delete should be defined in c++20"
@@ -3423,6 +3526,10 @@
# endif
# endif
+# ifdef __cpp_lib_format_path
+# error "__cpp_lib_format_path should not be defined before c++23"
+# endif
+
# ifdef __cpp_lib_format_ranges
# error "__cpp_lib_format_ranges should not be defined before c++23"
# endif
@@ -3489,6 +3596,10 @@
# error "__cpp_lib_gcd_lcm should have the value 201606L in c++20"
# endif
+# ifdef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_generic_associative_lookup
# error "__cpp_lib_generic_associative_lookup should be defined in c++20"
# endif
@@ -3902,6 +4013,10 @@
# error "__cpp_lib_ranges_chunk_by should not be defined before c++23"
# endif
+# ifdef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_ranges_contains
# error "__cpp_lib_ranges_contains should not be defined before c++23"
# endif
@@ -3953,6 +4068,10 @@
# error "__cpp_lib_reference_from_temporary should not be defined before c++23"
# endif
+# ifdef __cpp_lib_reference_wrapper
+# error "__cpp_lib_reference_wrapper should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_remove_cvref
# error "__cpp_lib_remove_cvref should be defined in c++20"
# endif
@@ -4423,6 +4542,10 @@
# error "__cpp_lib_atomic_lock_free_type_aliases should have the value 201907L in c++23"
# endif
+# ifdef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should not be defined before c++26"
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_atomic_ref
# error "__cpp_lib_atomic_ref should be defined in c++23"
@@ -4721,6 +4844,10 @@
# error "__cpp_lib_constexpr_vector should have the value 201907L in c++23"
# endif
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined before c++26"
+# endif
+
# ifdef __cpp_lib_copyable_function
# error "__cpp_lib_copyable_function should not be defined before c++26"
# endif
@@ -4736,6 +4863,10 @@
# error "__cpp_lib_debugging should not be defined before c++26"
# endif
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
+# endif
+
# if TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L
# ifndef __cpp_lib_destroying_delete
# error "__cpp_lib_destroying_delete should be defined in c++23"
@@ -4823,6 +4954,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_format_path
+# error "__cpp_lib_format_path should be defined in c++23"
+# endif
+# if __cpp_lib_format_path != 202403L
+# error "__cpp_lib_format_path should have the value 202403L in c++23"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_format_path
+# error "__cpp_lib_format_path should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_format_ranges
# error "__cpp_lib_format_ranges should be defined in c++23"
# endif
@@ -4904,6 +5048,10 @@
# error "__cpp_lib_gcd_lcm should have the value 201606L in c++23"
# endif
+# ifdef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_generic_associative_lookup
# error "__cpp_lib_generic_associative_lookup should be defined in c++23"
# endif
@@ -5374,6 +5522,10 @@
# error "__cpp_lib_ranges_chunk_by should have the value 202202L in c++23"
# endif
+# ifdef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_ranges_contains
# error "__cpp_lib_ranges_contains should be defined in c++23"
# endif
@@ -5482,6 +5634,10 @@
# endif
# endif
+# ifdef __cpp_lib_reference_wrapper
+# error "__cpp_lib_reference_wrapper should not be defined before c++26"
+# endif
+
# ifndef __cpp_lib_remove_cvref
# error "__cpp_lib_remove_cvref should be defined in c++23"
# endif
@@ -6012,6 +6168,19 @@
# error "__cpp_lib_atomic_lock_free_type_aliases should have the value 201907L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should be defined in c++26"
+# endif
+# if __cpp_lib_atomic_min_max != 202403L
+# error "__cpp_lib_atomic_min_max should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_atomic_min_max
+# error "__cpp_lib_atomic_min_max should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_atomic_ref
# error "__cpp_lib_atomic_ref should be defined in c++26"
@@ -6313,6 +6482,19 @@
# error "__cpp_lib_constexpr_vector should have the value 201907L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should be defined in c++26"
+# endif
+# if __cpp_lib_constrained_equality != 202403L
+# error "__cpp_lib_constrained_equality should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_constrained_equality
+# error "__cpp_lib_constrained_equality should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_copyable_function
# error "__cpp_lib_copyable_function should be defined in c++26"
@@ -6346,6 +6528,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should be defined in c++26"
+# endif
+# if __cpp_lib_default_template_type_for_algorithm_values != 202403L
+# error "__cpp_lib_default_template_type_for_algorithm_values should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_default_template_type_for_algorithm_values
+# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# if TEST_STD_VER > 17 && defined(__cpp_impl_destroying_delete) && __cpp_impl_destroying_delete >= 201806L
# ifndef __cpp_lib_destroying_delete
# error "__cpp_lib_destroying_delete should be defined in c++26"
@@ -6433,6 +6628,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_format_path
+# error "__cpp_lib_format_path should be defined in c++26"
+# endif
+# if __cpp_lib_format_path != 202403L
+# error "__cpp_lib_format_path should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_format_path
+# error "__cpp_lib_format_path should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_format_ranges
# error "__cpp_lib_format_ranges should be defined in c++26"
# endif
@@ -6604,6 +6812,19 @@
# error "__cpp_lib_gcd_lcm should have the value 201606L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should be defined in c++26"
+# endif
+# if __cpp_lib_generate_random != 202403L
+# error "__cpp_lib_generate_random should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_generate_random
+# error "__cpp_lib_generate_random should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_generic_associative_lookup
# error "__cpp_lib_generic_associative_lookup should be defined in c++26"
# endif
@@ -7092,6 +7313,19 @@
# error "__cpp_lib_ranges_chunk_by should have the value 202202L in c++26"
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should be defined in c++26"
+# endif
+# if __cpp_lib_ranges_concat != 202403L
+# error "__cpp_lib_ranges_concat should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_ranges_concat
+# error "__cpp_lib_ranges_concat should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_ranges_contains
# error "__cpp_lib_ranges_contains should be defined in c++26"
# endif
@@ -7212,6 +7446,19 @@
# endif
# endif
+# if !defined(_LIBCPP_VERSION)
+# ifndef __cpp_lib_reference_wrapper
+# error "__cpp_lib_reference_wrapper should be defined in c++26"
+# endif
+# if __cpp_lib_reference_wrapper != 202403L
+# error "__cpp_lib_reference_wrapper should have the value 202403L in c++26"
+# endif
+# else // _LIBCPP_VERSION
+# ifdef __cpp_lib_reference_wrapper
+# error "__cpp_lib_reference_wrapper should not be defined because it is unimplemented in libc++!"
+# endif
+# endif
+
# ifndef __cpp_lib_remove_cvref
# error "__cpp_lib_remove_cvref should be defined in c++26"
# endif
diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py
index c55f5c7d19004a..759e49055be5c4 100755
--- a/libcxx/utils/generate_feature_test_macro_components.py
+++ b/libcxx/utils/generate_feature_test_macro_components.py
@@ -170,6 +170,12 @@ def add_version_header(tc):
"values": {"c++20": 201907},
"headers": ["atomic"],
},
+ {
+ "name": "__cpp_lib_atomic_min_max",
+ "values": {"c++26": 202403}, # P0493R5: Atomic minimum/maximum
+ "headers": ["atomic"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_atomic_ref",
"values": {"c++20": 201806},
@@ -386,6 +392,12 @@ def add_version_header(tc):
"values": {"c++20": 201907},
"headers": ["vector"],
},
+ {
+ "name": "__cpp_lib_constrained_equality",
+ "values": {"c++26": 202403}, # P2944R3: Comparisons for reference_wrapper
+ "headers": ["optional", "tuple", "utility", "variant"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_copyable_function",
"values": {"c++26": 202306}, # P2548R6 copyable_function
@@ -399,10 +411,19 @@ def add_version_header(tc):
},
{
"name": "__cpp_lib_debugging",
- "values": {"c++26": 202311}, # P2546R5 Debugging Support
+ "values": {
+ "c++26": 202311, # P2546R5 Debugging Support
+ # "c++26": 202403, # P2810R4: is_debugger_present is_replaceable
+ },
"headers": ["debugging"],
"unimplemented": True,
},
+ {
+ "name": "__cpp_lib_default_template_type_for_algorithm_values",
+ "values": {"c++26": 202403}, # P2248R8: Enabling list-initialization for algorithms
+ "headers": ["algorithm", "deque", "forward_list", "list", "ranges", "string", "vector"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_destroying_delete",
"values": {"c++20": 201806},
@@ -476,6 +497,12 @@ def add_version_header(tc):
"headers": ["format"],
"unimplemented": True,
},
+ {
+ "name": "__cpp_lib_format_path",
+ "values": {"c++23": 202403}, # P2845R8: Formatting of std::filesystem::path
+ "headers": ["filesystem"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_format_ranges",
"values": {"c++23": 202207},
@@ -586,6 +613,12 @@ def add_version_header(tc):
"values": {"c++17": 201606},
"headers": ["numeric"],
},
+ {
+ "name": "__cpp_lib_generate_random",
+ "values": {"c++26": 202403}, # P1068R11: Vector API for random number generation
+ "headers": ["random"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_generic_associative_lookup",
"values": {"c++14": 201304},
@@ -874,7 +907,10 @@ def add_version_header(tc):
},
{
"name": "__cpp_lib_print",
- "values": {"c++23": 202207},
+ "values": {
+ "c++23": 202207,
+ # "c++26": 202403, # P3107R5: Permit an efficient implementation of std::print
+ },
"headers": ["ostream", "print"],
},
{
@@ -914,6 +950,12 @@ def add_version_header(tc):
"values": {"c++23": 202202},
"headers": ["ranges"],
},
+ {
+ "name": "__cpp_lib_ranges_concat",
+ "values": {"c++26": 202403}, # P2542R8: views::concat
+ "headers": ["ranges"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_ranges_contains",
"values": {"c++23": 202207},
@@ -995,6 +1037,12 @@ def add_version_header(tc):
"headers": ["type_traits"],
"unimplemented": True,
},
+ {
+ "name": "__cpp_lib_reference_wrapper",
+ "values": {"c++26": 202403}, # P2944R3: Comparisons for reference_wrapper
+ "headers": ["functional"],
+ "unimplemented": True,
+ },
{
"name": "__cpp_lib_remove_cvref",
"values": {"c++20": 201711},
@@ -1152,12 +1200,19 @@ def add_version_header(tc):
},
{
"name": "__cpp_lib_string_view",
- "values": {"c++17": 201606, "c++20": 201803},
+ "values": {
+ "c++17": 201606,
+ "c++20": 201803,
+ # "c++26": 202403, # P2591R5: Concatenation of strings and string views
+ },
"headers": ["string", "string_view"],
},
{
"name": "__cpp_lib_submdspan",
- "values": {"c++26": 202306}, # P2630R4 submdspan
+ "values": {
+ "c++26": 202306, # P2630R4: submdspan
+ # "c++26": 202403, # P2642R6: Padded mdspan layouts
+ },
"headers": ["mdspan"],
"unimplemented": True,
},
@@ -1297,25 +1352,11 @@ def add_version_header(tc):
]
assert feature_test_macros == sorted(feature_test_macros, key=lambda tc: tc["name"])
-assert all(tc["headers"] == sorted(tc["headers"]) for tc in feature_test_macros)
-assert all(
- ("libcxx_guard" in tc) == ("test_suite_guard" in tc) for tc in feature_test_macros
-)
-assert all(
- all(
- key
- in [
- "name",
- "values",
- "headers",
- "libcxx_guard",
- "test_suite_guard",
- "unimplemented",
- ]
- for key in tc.keys()
- )
- for tc in feature_test_macros
-)
+for tc in feature_test_macros:
+ assert tc["headers"] == sorted(tc["headers"]), tc
+ assert ("libcxx_guard" in tc) == ("test_suite_guard" in tc), tc
+ valid_keys = ["name", "values", "headers", "libcxx_guard", "test_suite_guard", "unimplemented"]
+ assert all(key in valid_keys for key in tc.keys()), tc
# Map from each header to the Lit annotations that should be used for
# tests that include that header.
More information about the libcxx-commits
mailing list